hbase-issues mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "stack (JIRA)" <j...@apache.org>
Subject [jira] [Commented] (HBASE-3787) Increment is non-idempotent but client retries RPC
Date Tue, 14 May 2013 21:35:18 GMT

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

stack commented on HBASE-3787:
------------------------------

[~sershe] Duh.  I should have caught that in review if I was any good.  Agree a nonce WAL
is OTT.  Been trying to think through this and chatted some w/ Elliott but it is a thorny
issue.

Nonce should be a primitive in our rpc -- all you should have to do is say if it an idempotent
or not.

Would a nonce having a 'mint' time -- the time of creation help?  If nonce is N ms old --
server could do relative time? -- then we fail the operation.

Does nonce have to have a destination server stamped on it?  It is only good for a particular
server and if it shows up on another server because region moved, again we fail the op.

Elliott was talking about a region not moving till outstanding requests are handled and no
new ones are accepted in the meantime (We then went off into the weeds where the region that
is closing could still take reads... and even more extreme... we could open the region in
the new location and it could take writes... just not reads..... We stopped before going any
further because we thought you'd just slap us).
                
> 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.94.4, 0.95.2
>            Reporter: dhruba borthakur
>            Assignee: Sergey Shelukhin
>            Priority: Critical
>             Fix For: 0.95.1
>
>         Attachments: HBASE-3787-partial.patch, HBASE-3787-v0.patch, HBASE-3787-v1.patch,
HBASE-3787-v2.patch, HBASE-3787-v3.patch, HBASE-3787-v4.patch, HBASE-3787-v5.patch, HBASE-3787-v5.patch
>
>
> 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

Mime
View raw message