[ 
https://issues.apache.org/jira/browse/HBASE-20611?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Allan Yang updated HBASE-20611:
-------------------------------
    Description: 
HBASE-16290 added a new feature to dump queue info,  the method 
getCallQueueInfo() need to iterate the queue to get the elements in the queue.  
But, except the Java's LinkedBlockingQueue, the other queue implementations 
like BoundedPriorityBlockingQueue and AdaptiveLifoCoDelCallQueue don't 
implement the method iterator(). If those queues are used, a 
UnsupportedOperationException  will be thrown.
This can be easily be reproduced by the UT testCallQueueInfo while adding a 
conf: conf.set("hbase.ipc.server.callqueue.type", "deadline")
{code}
java.lang.UnsupportedOperationException
        at 
org.apache.hadoop.hbase.util.BoundedPriorityBlockingQueue.iterator(BoundedPriorityBlockingQueue.java:285)
        at 
org.apache.hadoop.hbase.ipc.RpcExecutor.getCallQueueCountsSummary(RpcExecutor.java:166)
        at 
org.apache.hadoop.hbase.ipc.SimpleRpcScheduler.getCallQueueInfo(SimpleRpcScheduler.java:241)
        at 
org.apache.hadoop.hbase.ipc.TestSimpleRpcScheduler.testCallQueueInfo(TestSimpleRpcScheduler.java:164)
{code}

  was:
HBASE-16290 added a new feature to dump queue info,  the method 
getCallQueueInfo() need to iterate the queue to get the elements in the queue.  
But, except the Java's LinkedBlockingQueue, the other queue implementations 
like BoundedPriorityBlockingQueue and AdaptiveLifoCoDelCallQueue don't 
implement the method iterator(). If those queues are used, a 
UnsupportedOperationException  will be thrown.
This can be easily be reproduced by the UT testCallQueueInfo while adding a 
conf ( conf.set("hbase.ipc.server.callqueue.type", "deadline");)
{code}
java.lang.UnsupportedOperationException
        at 
org.apache.hadoop.hbase.util.BoundedPriorityBlockingQueue.iterator(BoundedPriorityBlockingQueue.java:285)
        at 
org.apache.hadoop.hbase.ipc.RpcExecutor.getCallQueueCountsSummary(RpcExecutor.java:166)
        at 
org.apache.hadoop.hbase.ipc.SimpleRpcScheduler.getCallQueueInfo(SimpleRpcScheduler.java:241)
        at 
org.apache.hadoop.hbase.ipc.TestSimpleRpcScheduler.testCallQueueInfo(TestSimpleRpcScheduler.java:164)
{code}


> UnsupportedOperationException may thrown when calling getCallQueueInfo()
> ------------------------------------------------------------------------
>
>                 Key: HBASE-20611
>                 URL: https://issues.apache.org/jira/browse/HBASE-20611
>             Project: HBase
>          Issue Type: Bug
>    Affects Versions: 2.0.0
>            Reporter: Allan Yang
>            Priority: Major
>
> HBASE-16290 added a new feature to dump queue info,  the method 
> getCallQueueInfo() need to iterate the queue to get the elements in the 
> queue.  But, except the Java's LinkedBlockingQueue, the other queue 
> implementations like BoundedPriorityBlockingQueue and 
> AdaptiveLifoCoDelCallQueue don't implement the method iterator(). If those 
> queues are used, a UnsupportedOperationException  will be thrown.
> This can be easily be reproduced by the UT testCallQueueInfo while adding a 
> conf: conf.set("hbase.ipc.server.callqueue.type", "deadline")
> {code}
> java.lang.UnsupportedOperationException
>       at 
> org.apache.hadoop.hbase.util.BoundedPriorityBlockingQueue.iterator(BoundedPriorityBlockingQueue.java:285)
>       at 
> org.apache.hadoop.hbase.ipc.RpcExecutor.getCallQueueCountsSummary(RpcExecutor.java:166)
>       at 
> org.apache.hadoop.hbase.ipc.SimpleRpcScheduler.getCallQueueInfo(SimpleRpcScheduler.java:241)
>       at 
> org.apache.hadoop.hbase.ipc.TestSimpleRpcScheduler.testCallQueueInfo(TestSimpleRpcScheduler.java:164)
> {code}



--
This message was sent by Atlassian JIRA
(v7.6.3#76005)

Reply via email to