hbase-issues mailing list archives

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

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

Ted Yu commented on HBASE-3787:
-------------------------------

In all the failed tests, I saw:
{code}
2013-11-02 02:30:15,355 ERROR [RpcServer.handler=4,port=35527] ipc.RpcServer(2020): Unexpected
throwable object 
java.lang.AssertionError
	at org.apache.hadoop.hbase.regionserver.HRegion$ReplayBatch.getMutationsForCoprocs(HRegion.java:1970)
	at org.apache.hadoop.hbase.regionserver.HRegion.doMiniBatchMutation(HRegion.java:2244)
	at org.apache.hadoop.hbase.regionserver.HRegion.batchMutate(HRegion.java:2040)
	at org.apache.hadoop.hbase.regionserver.HRegion.batchReplay(HRegion.java:2004)
	at org.apache.hadoop.hbase.regionserver.HRegionServer.doReplayBatchOp(HRegionServer.java:4234)
	at org.apache.hadoop.hbase.regionserver.HRegionServer.replay(HRegionServer.java:3915)
	at org.apache.hadoop.hbase.protobuf.generated.AdminProtos$AdminService$2.callBlockingMethod(AdminProtos.java:19809)
	at org.apache.hadoop.hbase.ipc.RpcServer.call(RpcServer.java:1983)
	at org.apache.hadoop.hbase.ipc.CallRunner.run(CallRunner.java:92)
	at org.apache.hadoop.hbase.ipc.SimpleRpcScheduler.consumerLoop(SimpleRpcScheduler.java:160)
	at org.apache.hadoop.hbase.ipc.SimpleRpcScheduler.access$000(SimpleRpcScheduler.java:38)
{code}
which was due to this in ReplayBatch:
{code}
+    public Mutation[] getMutationsForCoprocs() {
+      assert false;
+      throw new RuntimeException("Should not be called for replay batch");
+    }
{code}

> 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