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