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

The rebased patch.
Given the new retry paths, the new batch RPC endpoints, and the new log replay 
large parts of the patch were rewritten.
The manager/generator obviously didn't change.

There were some suggestions that may be added here or in separate jira:
1) Also use nonce in checkAndPut.
2) Look at HDFS stuff. That applies mostly to manager implementation, and is 
unlikely to affect RPC/HTable/etc. plumbing. It appeared later than the 
original patch here, so there was nothing to look at when this was first 
submitted. I talked a little bit to HDFS ppl here about it, will take a look 
next week. But the model is very similar so plumbing can be reviewed regardless.
3) Store MVCC and instead of throwing OpConflictEx, do a read with that mvcc. 
Will need to work w/low watermark to not discard MVCC below earliest stored 
nonce. Definitely separate JIRA.
4) Probably the HTable test needs to be extended to at least one batch op.

Let me also run some larger scale tests on it...

> 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: Blocker
>         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, 
> HBASE-3787-v6.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 was sent by Atlassian JIRA
(v6.1#6144)

Reply via email to