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

Reply via email to