From e395bf91dbafc7d892966122972e70c5446f3a09 Mon Sep 17 00:00:00 2001 From: Guanghao Zhang Date: Fri, 14 Oct 2016 18:29:25 +0800 Subject: [PATCH] HBASE-16815 Low scan ratio in RPC queue tuning triggers divide by zero exception Signed-off-by: Matteo Bertozzi --- .../hadoop/hbase/ipc/RWQueueRpcExecutor.java | 15 ++++++++------- 1 file changed, 8 insertions(+), 7 deletions(-) diff --git a/hbase-server/src/main/java/org/apache/hadoop/hbase/ipc/RWQueueRpcExecutor.java b/hbase-server/src/main/java/org/apache/hadoop/hbase/ipc/RWQueueRpcExecutor.java index 68e7b6541f6..7ca9196ee7e 100644 --- a/hbase-server/src/main/java/org/apache/hadoop/hbase/ipc/RWQueueRpcExecutor.java +++ b/hbase-server/src/main/java/org/apache/hadoop/hbase/ipc/RWQueueRpcExecutor.java @@ -145,17 +145,16 @@ public class RWQueueRpcExecutor extends RpcExecutor { this.scanBalancer = numScanQueues > 0 ? getBalancer(numScanQueues) : null; queues = new ArrayList>(numWriteQueues + numReadQueues + numScanQueues); - LOG.debug(name + " writeQueues=" + numWriteQueues + " writeHandlers=" + writeHandlersCount + - " readQueues=" + numReadQueues + " readHandlers=" + readHandlersCount + - ((numScanQueues == 0) ? "" : " scanQueues=" + numScanQueues + - " scanHandlers=" + scanHandlersCount)); + LOG.info(name + " writeQueues=" + numWriteQueues + " writeHandlers=" + writeHandlersCount + + " readQueues=" + numReadQueues + " readHandlers=" + readHandlersCount + " scanQueues=" + + numScanQueues + " scanHandlers=" + scanHandlersCount); + if (writeQueueInitArgs.length > 0) { currentQueueLimit = (int) writeQueueInitArgs[0]; writeQueueInitArgs[0] = Math.max((int) writeQueueInitArgs[0], DEFAULT_CALL_QUEUE_SIZE_HARD_LIMIT); } for (int i = 0; i < numWriteQueues; ++i) { - queues.add((BlockingQueue) ReflectionUtils.newInstance(writeQueueClass, writeQueueInitArgs)); } @@ -175,8 +174,10 @@ public class RWQueueRpcExecutor extends RpcExecutor { protected void startHandlers(final int port) { startHandlers(".write", writeHandlersCount, queues, 0, numWriteQueues, port); startHandlers(".read", readHandlersCount, queues, numWriteQueues, numReadQueues, port); - startHandlers(".scan", scanHandlersCount, queues, - numWriteQueues + numReadQueues, numScanQueues, port); + if (numScanQueues > 0) { + startHandlers(".scan", scanHandlersCount, queues, numWriteQueues + numReadQueues, + numScanQueues, port); + } } @Override