[ 
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)

Reply via email to