[
https://issues.apache.org/jira/browse/HBASE-16023?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15331123#comment-15331123
]
Hiroshi Ikeda commented on HBASE-16023:
---------------------------------------
{code}
protected CallRunner getCallRunner() throws InterruptedException {
// Get a callrunner if one in the Q.
CallRunner cr = this.q.poll();
if (cr == null) {
// Else, if a fastPathHandlerStack present and no callrunner in Q,
register ourselves for
// the fastpath handoff done via fastPathHandlerStack.
if (this.fastPathHandlerStack != null) {
this.fastPathHandlerStack.push(this);
this.semaphore.acquire();
{code}
Checking no task and waiting on the semaphore is not atomic, and it is possible
that a reader queues a task while a worker are going to waiting on the
semaphore.
There might be no simple way to implement without a flaw.
> Fastpath for the FIFO rpcscheduler
> ----------------------------------
>
> Key: HBASE-16023
> URL: https://issues.apache.org/jira/browse/HBASE-16023
> Project: HBase
> Issue Type: Sub-task
> Components: Performance, rpc
> Affects Versions: 2.0.0, 1.3.0
> Reporter: stack
> Assignee: stack
> Fix For: 2.0.0, 1.3.0
>
> Attachments: HBASE-16023.branch-1.001.patch,
> hits.nofifo.fifoplusfp.fifownofp.hacks.png
>
>
> This is an idea copied from kudu where we skip queuing a request if there is
> a handler ready to go; we just do a direct handoff from reader to handler.
> Makes for close to a %20 improvement in random read workloadc testing moving
> the bottleneck to HBASE-15716 and to returning the results.
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)