From ab4453158a41e29bb75e219079584997be756cbe Mon Sep 17 00:00:00 2001 From: Reid Chan Date: Fri, 14 Jun 2019 11:35:34 +0800 Subject: [PATCH] HBASE-22559 [RPC] set guard against CALL_QUEUE_HANDLER_FACTOR_CONF_KEY Signed-off-by: Andrew Purtell --- .../org/apache/hadoop/hbase/ipc/RpcExecutor.java | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/hbase-server/src/main/java/org/apache/hadoop/hbase/ipc/RpcExecutor.java b/hbase-server/src/main/java/org/apache/hadoop/hbase/ipc/RpcExecutor.java index f63b243f1887..3de5fa1cbf9c 100644 --- a/hbase-server/src/main/java/org/apache/hadoop/hbase/ipc/RpcExecutor.java +++ b/hbase-server/src/main/java/org/apache/hadoop/hbase/ipc/RpcExecutor.java @@ -116,6 +116,20 @@ public RpcExecutor(final String name, final int handlerCount, final String callQ this.abortable = abortable; float callQueuesHandlersFactor = this.conf.getFloat(CALL_QUEUE_HANDLER_FACTOR_CONF_KEY, 0.1f); + if (Float.compare(callQueuesHandlersFactor, 1.0f) > 0 || + Float.compare(0.0f, callQueuesHandlersFactor) > 0) { + LOG.warn(CALL_QUEUE_HANDLER_FACTOR_CONF_KEY + + " is *ILLEGAL*, it should be in range [0.0, 1.0]"); + // For callQueuesHandlersFactor > 1.0, we just set it 1.0f. + if (Float.compare(callQueuesHandlersFactor, 1.0f) > 0) { + LOG.warn("Set " + CALL_QUEUE_HANDLER_FACTOR_CONF_KEY + " 1.0f"); + callQueuesHandlersFactor = 1.0f; + } else { + // But for callQueuesHandlersFactor < 0.0, following method #computeNumCallQueues + // will compute max(1, -x) => 1 which has same effect of default value. + LOG.warn("Set " + CALL_QUEUE_HANDLER_FACTOR_CONF_KEY + " default value 0.0f"); + } + } this.numCallQueues = computeNumCallQueues(handlerCount, callQueuesHandlersFactor); this.queues = new ArrayList<>(this.numCallQueues);