protected synchronized boolean addRollbackStep(Procedure<TEnvironment> proc) {
    if (proc.isFailed()) {
      state = State.FAILED;
    }
    if (!rollbackSupported) {
      // just record executed, skip adding rollback step
      proc.setExecuted();
      return false;
    }
    if (subprocStack == null) {
      subprocStack = new ArrayList<>();
    }
    proc.addStackIndex(subprocStack.size());
    LOG.trace("Add procedure {} as the {}th rollback step", proc, subprocStack.size());
    subprocStack.add(proc);
    return true;
  }
Called by the ProcedureExecutor after the procedure step is completed, to add the step to the
rollback list (or procedure stack).
<p>
Return whether we successfully added the rollback step. If the root procedure has already
crossed the PONR, we do not need to maintain the rollback step,
hbase-procedure/src/main/java/org/apache/hadoop/hbase/procedure2/RootProcedureState.java