private boolean isSubProcedure(Procedure<?> proc) {
    while (proc.hasParent()) {
      if (proc.getParentProcId() == enqueuedProc.getProcId()) {
        return true;
      }
      proc = Preconditions.checkNotNull(procedureRetriever.apply(proc.getParentProcId()),
        "can not find parent procedure pid=%s", proc.getParentProcId());
    }
    return false;
  }
To prevent multiple Create/Modify/Disable/Enable table procedures run at the same time, we will
keep table procedure in this queue first before actually enqueuing it to
MasterProcedureScheduler's tableQueue. See HBASE-28683 for more details
hbase-server/src/main/java/org/apache/hadoop/hbase/master/procedure/TableProcedureWaitingQueue.java