[ https://issues.apache.org/jira/browse/HBASE-20499?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Duo Zhang resolved HBASE-20499. ------------------------------- Fix Version/s: 2.5.0 Resolution: Fixed Cherry-picked to branch-2 and branch-2,5, > Replication/Priority executors can use specific max queue length as default > value instead of general maxQueueLength > ------------------------------------------------------------------------------------------------------------------- > > Key: HBASE-20499 > URL: https://issues.apache.org/jira/browse/HBASE-20499 > Project: HBase > Issue Type: Improvement > Components: rpc > Reporter: Nihal Jain > Assignee: Nihal Jain > Priority: Minor > Fix For: 2.5.0, 3.0.0-alpha-1 > > Attachments: 20499.master.002.patch, HBASE-20499.master.001.patch, > HBASE-20499.master.002.patch > > > {{In *SimpleRpcScheduler*'s constructor, instead of the using > *maxQueueLength* as default value for > *replicationExecutor*/*replicationExecutor*'s max queue length:}} > {code:java} > int maxQueueLength = conf.getInt(RpcScheduler.IPC_SERVER_MAX_CALLQUEUE_LENGTH, > handlerCount * RpcServer.DEFAULT_MAX_CALLQUEUE_LENGTH_PER_HANDLER); > int maxPriorityQueueLength = > conf.getInt(RpcScheduler.IPC_SERVER_PRIORITY_MAX_CALLQUEUE_LENGTH, > maxQueueLength); > . > . > this.replicationExecutor = replicationHandlerCount > 0 ? new > FastPathBalancedQueueRpcExecutor( > "replication.FPBQ", replicationHandlerCount, > RpcExecutor.CALL_QUEUE_TYPE_FIFO_CONF_VALUE, > maxQueueLength, priority, conf, abortable) : null;{code} > [See > SimpleRpcScheduler|https://github.com/apache/hbase/blob/96ed407c691ac0686fb14cdcd8680d1849e24ae8/hbase-server/src/main/java/org/apache/hadoop/hbase/ipc/SimpleRpcScheduler.java#L97] > We can do the following: > {code:java} > int maxQueueLength = conf.getInt(RpcScheduler.IPC_SERVER_MAX_CALLQUEUE_LENGTH, > handlerCount * RpcServer.DEFAULT_MAX_CALLQUEUE_LENGTH_PER_HANDLER); > int maxPriorityQueueLength = > conf.getInt(RpcScheduler.IPC_SERVER_PRIORITY_MAX_CALLQUEUE_LENGTH, > priorityHandlerCount * RpcServer.DEFAULT_MAX_CALLQUEUE_LENGTH_PER_HANDLER); > . > . > int maxQueueLengthForReplication = > conf.getInt(RpcScheduler.IPC_SERVER_MAX_CALLQUEUE_LENGTH, > replicationHandlerCount * RpcServer.DEFAULT_MAX_CALLQUEUE_LENGTH_PER_HANDLER); > . > . > this.replicationExecutor = replicationHandlerCount > 0 ? new > FastPathBalancedQueueRpcExecutor( > "replication.FPBQ", replicationHandlerCount, > RpcExecutor.CALL_QUEUE_TYPE_FIFO_CONF_VALUE, > maxQueueLengthForReplication , priority, conf, abortable) : null; > {code} > > Also, we can make the maximum replication call queue length configurable, > similar to general and priority call queue length. -- This message was sent by Atlassian Jira (v8.20.10#820010)