hbase-issues mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Devaraj Das (JIRA)" <j...@apache.org>
Subject [jira] [Commented] (HBASE-3787) Increment is non-idempotent but client retries RPC
Date Fri, 19 Apr 2013 05:31:21 GMT

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

Devaraj Das commented on HBASE-3787:

Hmm.... I wonder how much mileage will we get by just doing a simple implementation of handling
the following exceptions:
{quote} ConnectException, NoRouteToHostException, UnknownHostException {quote} (similar to
how Hadoop handles idempotent operations; look at RetryPolicies.FailoverOnNetworkExceptionRetry.shouldRetry
in http://bit.ly/10mc4PG)

In HDFS, methods are annotated with "@Idempotent" annotations, and client retries the operation
when the above exceptions are encountered, and for other exceptions like RemoteException,
the retry is conditional on the method being idempotent. In HBase, if we know that only a
few methods are non-idempotent, we can further simplify the implementation by doing custom
checks for only those methods (as opposed to introducing annotations).

Maybe, this has been discussed before, but I have a feeling that this will solve the vast
majority of the problem cases, without introducing a lot of complexity in the codebase.
> 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

View raw message