[ 
https://issues.apache.org/jira/browse/HBASE-3787?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13567930#comment-13567930
 ] 

Andrew Purtell edited comment on HBASE-3787 at 1/31/13 6:48 PM:
----------------------------------------------------------------

[~ted_yu] From the client's point of view, it is still retrying the op even 
though the server handling the region has changed. So

- HBaseClient should generate a new nonce for each op. Reuse the nonce for any 
retry.

Therefore if nonces are persisted to the WAL and recovered from it, the server 
will still do the right thing. Your concern is implementation complexity on the 
server. I think it is valid, but do you think this outweighs the application 
level uncertainty that would happen if a request fails because of a region 
relocation? Would the app know if the op applied or not?
                
      was (Author: apurtell):
    [~ted_yu] From the client's point of view, it is still retrying the op even 
though the server handling the region has changed. So

- HBaseClient should generate a new nonce for each a new op. Reuse the nonce 
for any retry.

Therefore if nonces are persisted to the WAL and recovered from it, the server 
will still do the right thing. Your concern is implementation complexity on the 
server. I think it is valid, but do you think this outweighs the application 
level uncertainty that would happen if a request fails because of a region 
relocation? Would the app know if the op applied or not?
                  
> Increment is non-idempotent but client retries RPC
> --------------------------------------------------
>
>                 Key: HBASE-3787
>                 URL: https://issues.apache.org/jira/browse/HBASE-3787
>             Project: HBase
>          Issue Type: Bug
>          Components: Client
>    Affects Versions: 0.96.0, 0.94.4
>            Reporter: dhruba borthakur
>            Priority: Critical
>             Fix For: 0.96.0
>
>
> The HTable.increment() operation is non-idempotent. The client retries the 
> increment RPC a few times (as specified by configuration) before throwing an 
> error to the application. This makes it possible that the same increment call 
> be applied twice at the server.
> For increment operations, is it better to use 
> HConnectionManager.getRegionServerWithoutRetries()? Another  option would be 
> to enhance the IPC module to make the RPC server correctly identify if the 
> RPC is a retry attempt and handle accordingly.

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira

Reply via email to