[ 
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-partial.patch

Here's a partial patch for an example. The nonce manager on server side is not 
implemented but operations are clear. 
WAL replay is not there, and it's going to be tricky (for any nonce scheme). We 
only replay WAL that is not already in store, and nonces will not be in store, 
so the state of the nonce cannot be reliably restored with regular WAL replay. 
It is especially interesting for new remote request based faster log replay, 
haven't checked yet how it works. Not yet exactly sure what to do about it 
without incurring too much overhead.
I don't think not retrying to different server from client is a solution, too. 
If we don't retry when this problem arises what is the user supposed to do, how 
do they know if increment happened? They will probably retry too and get into 
the same situation.
I wonder if we should have some system CFs for nonces almost...
                
> 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
>
>
> 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