You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@hbase.apache.org by "Sergey Shelukhin (JIRA)" <ji...@apache.org> on 2013/05/02 04:37:14 UTC
[jira] [Updated] (HBASE-3787) Increment is non-idempotent but
client retries RPC
[ https://issues.apache.org/jira/browse/HBASE-3787?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Sergey Shelukhin updated HBASE-3787:
------------------------------------
Attachment: HBASE-3787-v0.patch
Ok, finally I got around to this :)
Preliminary patch, it's more or less ready but w/o any tests, I will add some once general approach is agreed upon.
I kept the nonce group-nonce distinction for future improvement if it were to come, however with hashes, group is never used and never serialized.
The server-side code is forward-compatible with groups, though.
Added it to WAL replay, and it's replayed without regard to max store seqnums, only writeTime is taken into account.
Some changes will have to be made for improved remote-WAL-replay that is coming... some decoration on Increments and Appends to have them treated specially, so that some 2-hours-apart collision doesn't fail log replay.
I will add tests tomorrow or later this week, feedback is appreciated.
> 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
>
>
> 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