[
https://issues.apache.org/jira/browse/HBASE-20713?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
stack updated HBASE-20713:
--------------------------
Fix Version/s: 2.0.2
> Revisit why to removeFromRunQueue in MasterProcedureExecutor's doPoll method
> -----------------------------------------------------------------------------
>
> Key: HBASE-20713
> URL: https://issues.apache.org/jira/browse/HBASE-20713
> Project: HBase
> Issue Type: Bug
> Reporter: Guanghao Zhang
> Priority: Major
> Fix For: 2.0.2
>
>
> https://github.com/apache/hbase/blob/master/hbase-server/src/main/java/org/apache/hadoop/hbase/master/procedure/MasterProcedureScheduler.java#L210
> {code:java}
> if (rq.isEmpty() || xlockReq) {
> removeFromRunQueue(fairq, rq);
> } else if (rq.getLockStatus().hasParentLock(pollResult)) {
> // if the rq is in the fairq because of runnable child
> // check if the next procedure is still a child.
> // if not, remove the rq from the fairq and go back to the xlock state
> Procedure<?> nextProc = rq.peek();
> if (nextProc != null && !Procedure.haveSameParent(nextProc,
> pollResult)) {
> removeFromRunQueue(fairq, rq);
> }
> }
> {code}
> Here is the comment of why to remove from run queue. If I am not wrong,
> here's assumption is the parent procedure should require exclusive lock. So
> if the nextProc is a child but has different parent with current procedure,
> we can remove it from run queue.
> But there maybe three type procedure. Procedure A's child is Procedure B.
> Procedure's child is Procedure C. And only Procedure A need exclusive lock
> and Procedure B,C don't require exclusive lock. The
> condition(!Procedure.haveSameParent(nextProc, pollResult)) is not right for
> this case?
> FYI [~stack]
--
This message was sent by Atlassian JIRA
(v7.6.3#76005)