hbase-issues mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Sergey Shelukhin (JIRA)" <j...@apache.org>
Subject [jira] [Updated] (HBASE-3787) Increment is non-idempotent but client retries RPC
Date Sat, 02 Nov 2013 00:30:18 GMT

     [ 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)

Mime
View raw message