[ 
https://issues.apache.org/jira/browse/HBASE-20000?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16364693#comment-16364693
 ] 

Appy commented on HBASE-20000:
------------------------------

Just an idea to discuss (other comments in Review board)
We have different impl of isAvailable() for each queue which are more or large 
the same.
But as we get more types, it'll become increasingly hard to reason about system 
if the queue types grow different from each other.
Luckily in this case, it doesn't have to be this way.

ServerQueue uses Queue class' impl since there are no server procedures which 
spawn child procedure which try to take lock on same server.  So the simple 
check is sufficient. But it can also do with same impl has peerqueue.

Can we make our lifes easier by making a simple invariant in procedure 
framework - 
"Any exclusive lock held by a parent proc P will not block it's child procedure 
trying to get the same lock"

That makes it easy to reason about the framework. Implementation wise, it's 
just one common implementation of isAvailable().

TableQueue can do
pubilc boolean isAvailable() {
  if (namespaceLockStat.hasExclusiveLock()) {
    return false;
  } else {
    return super.isAvailable();
  }
 }

> Remove the quantum logic in FairQueue, always put high priority queue in front
> ------------------------------------------------------------------------------
>
>                 Key: HBASE-20000
>                 URL: https://issues.apache.org/jira/browse/HBASE-20000
>             Project: HBase
>          Issue Type: Sub-task
>          Components: proc-v2
>            Reporter: Duo Zhang
>            Assignee: Duo Zhang
>            Priority: Major
>             Fix For: 2.0.0-beta-2
>
>         Attachments: HBASE-20000.patch
>
>




--
This message was sent by Atlassian JIRA
(v7.6.3#76005)

Reply via email to