hbase-issues mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Duo Zhang (JIRA)" <j...@apache.org>
Subject [jira] [Commented] (HBASE-17904) Get runs into NoSuchElementException when using Read Replica, with hbase. ipc.client.specificThreadForWriting to be true and hbase.rpc.client.impl to be org.apache.hadoop.hbase.ipc.RpcClientImpl
Date Fri, 14 Apr 2017 00:28:41 GMT

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

Duo Zhang commented on HBASE-17904:
-----------------------------------

Looks like a typo... Give me a second, let me try to recall if there is some reason I use
queue.remove() instead queue.remove(call).

And the call IS under the lock protection, see the comment of the last notifyOnCancel method
in HBaseRpcController, the callbacks will be executed directly, which means they will be called
directly inside sendRequest, which is synchronized. It looks weird but I haven't found way
to better implement it, other solutions are also ugly... So I think you just need to change
callsToWrite.remove() to callsToWrite.remove(call). This is enough.

The test is great.

Thanks for digging in here.

> Get runs into NoSuchElementException when using Read Replica, with hbase. ipc.client.specificThreadForWriting
to be true and hbase.rpc.client.impl to be org.apache.hadoop.hbase.ipc.RpcClientImpl
> --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
>
>                 Key: HBASE-17904
>                 URL: https://issues.apache.org/jira/browse/HBASE-17904
>             Project: HBase
>          Issue Type: Bug
>          Components: Client
>    Affects Versions: 2.0.0
>            Reporter: huaxiang sun
>            Assignee: huaxiang sun
>         Attachments: HBASE-17904-master-v001.patch
>
>
> When testing read replica with 2.0.0 code, with the following config
> {code}
>   <property>
>     <name>hbase.ipc.client.specificThreadForWriting</name>
>     <value>true</value>
>   </property>
>   <property>
>     <name>hbase.rpc.client.impl</name>
>     <value>org.apache.hadoop.hbase.ipc.RpcClientImpl</value>
>   </property>
> {code}
> The hbase client runs into the following exception
> {code}
> Exception in thread "main" java.util.NoSuchElementException
>         at java.util.ArrayDeque.removeFirst(ArrayDeque.java:280)
>         at java.util.ArrayDeque.remove(ArrayDeque.java:447)
>         at org.apache.hadoop.hbase.ipc.BlockingRpcConnection$CallSender.remove(BlockingRpcConnection.java:159)
>         at org.apache.hadoop.hbase.ipc.BlockingRpcConnection$3.run(BlockingRpcConnection.java:760)
>         at org.apache.hadoop.hbase.ipc.HBaseRpcControllerImpl.startCancel(HBaseRpcControllerImpl.java:229)
>         at org.apache.hadoop.hbase.client.CancellableRegionServerCallable.cancel(CancellableRegionServerCallable.java:86)
>         at org.apache.hadoop.hbase.client.ResultBoundedCompletionService$QueueingFuture.cancel(ResultBoundedCompletionService.java:106)
>         at org.apache.hadoop.hbase.client.ResultBoundedCompletionService.cancelAll(ResultBoundedCompletionService.java:274)
>         at org.apache.hadoop.hbase.client.RpcRetryingCallerWithReadReplicas.call(RpcRetryingCallerWithReadReplicas.java:224)
>         at org.apache.hadoop.hbase.client.HTable.get(HTable.java:445)
>         at org.apache.hadoop.hbase.client.HTable.get(HTable.java:409)
>         at HBaseThreadedGet.doWork(HBaseThreadedGet.java:45)
>         at HBaseThreadedGet.main(HBaseThreadedGet.java:19)
> {code}



--
This message was sent by Atlassian JIRA
(v6.3.15#6346)

Mime
View raw message