Hiroshi Ikeda created HBASE-14331: ------------------------------------- Summary: a single callQueue related improvements Key: HBASE-14331 URL: https://issues.apache.org/jira/browse/HBASE-14331 Project: HBase Issue Type: Improvement Components: IPC/RPC, Performance Reporter: Hiroshi Ikeda Priority: Minor
{{LinkedBlockingQueue}} well separates locks between the {{take}} method and the {{put}} method, but not between takers, and not between putters. These methods are implemented to take locks at the almost beginning of their logic. HBASE-11355 introduces multiple call-queues to reduce such possible congestion, but I doubt that it is required to stick to {{BlockingQueue}}. There are the other shortcomings of using {{BlockingQueue}}. When using multiple queues, since {{BlockingQueue}} blocks threads it is required to prepare enough threads for each queue. It is possible that there is a queue starving for threads while there is another queue where threads are idle. Even if you can tune parameters to avoid such situations, the tuning is not so trivial. I suggest using a single {{ConcurrentLinkedQueue}} with {{Semaphore}}. -- This message was sent by Atlassian JIRA (v6.3.4#6332)