[ 
https://issues.apache.org/jira/browse/HBASE-4720?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Mubarak Seyed updated HBASE-4720:
---------------------------------

    Attachment: HBASE-4720.trunk.v3.patch

The attached file (HBASE-4720.trunk.v3.patch) contains changes for Andrew 
Purtell's code review comments.

This patch does not cover the following from Andrew's comments:

>The REST gateway does support a batch put operation, where the supplied model 
>contains multiple rows. The request URI will contain the table name and a row 
>key, but the row key would be ignored and should be set to something known not 
>to exist, like "submit". (Row name in the model takes preference to whatever 
>was supplied in the URI.) See RowResource, starting around line 160. This 
>gives the client the option of submitting work in batch, to reduce overheads.

So optionally here you could retrieve a list of rows and process them, building 
a response that includes the disposition of each.

HTable.checkAndPut and HTable.checkAndDelete
API supports only one row at a time 
(http://hbase.apache.org/apidocs/org/apache/hadoop/hbase/client/HTable.html#checkAndPut(byte[],
 byte[], byte[], byte[], org.apache.hadoop.hbase.client.Put)). I don't think we 
need to support batch of checkAndPut and checkAndDelete.

>The URI format for requests is '/<table>/<row>/ ...' This violates that by 
>adding, just for check-and cases, a prefix. Having a special case like that 
>should be avoided. What about handling this in TableResource, with a query 
>parameter? '/<table>/<row>/?check' E.g.Then you won't need 
>CheckAndXTableResource classes. Additionally use the appropriate HTTP 
>operations. PUT/POST for check-and-put. DELETE for check-and-delete. The spec 
>does not forbid bodies in DELETE requests. (I am unsure if Jetty/Jersey will 
>support it however.)

We have discussed the design choices earlier (refer comments in the same JIRA), 
Stack and Ted have voted for option # 2 (/checkandput, /checkanddelete) option. 
If i have to go back to option #1 then i will have to re-work most of the stuff 
here.
                
> Implement atomic update operations (checkAndPut, checkAndDelete) for REST 
> client/server 
> ----------------------------------------------------------------------------------------
>
>                 Key: HBASE-4720
>                 URL: https://issues.apache.org/jira/browse/HBASE-4720
>             Project: HBase
>          Issue Type: Improvement
>            Reporter: Daniel Lord
>            Assignee: Mubarak Seyed
>             Fix For: 0.94.0
>
>         Attachments: HBASE-4720.trunk.v1.patch, HBASE-4720.trunk.v2.patch, 
> HBASE-4720.trunk.v3.patch, HBASE-4720.v1.patch, HBASE-4720.v3.patch
>
>
> I have several large application/HBase clusters where an application node 
> will occasionally need to talk to HBase from a different cluster.  In order 
> to help ensure some of my consistency guarantees I have a sentinel table that 
> is updated atomically as users interact with the system.  This works quite 
> well for the "regular" hbase client but the REST client does not implement 
> the checkAndPut and checkAndDelete operations.  This exposes the application 
> to some race conditions that have to be worked around.  It would be ideal if 
> the same checkAndPut/checkAndDelete operations could be supported by the REST 
> client.

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators: 
https://issues.apache.org/jira/secure/ContactAdministrators!default.jspa
For more information on JIRA, see: http://www.atlassian.com/software/jira

        

Reply via email to