private Matcher<Procedure<MasterProcedureEnv>> subProcOf(Procedure<MasterProcedureEnv> proc) {
    return new BaseMatcher<Procedure<MasterProcedureEnv>>() {

      @Override
      public boolean matches(Object item) {
        if (!(item instanceof Procedure)) {
          return false;
        }
        Procedure<?> p = (Procedure<?>) item;
        return p.hasParent() && p.getRootProcId() == proc.getProcId();
      }

      @Override
      public void describeTo(Description description) {
        description.appendText("sub procedure of(").appendValue(proc).appendText(")");
      }
    };
  }
SCP does not support rollback actually, here we just want to simulate that when there is a code
bug, SCP and its sub procedures will not hang there forever, and it will not mess up the
procedure store.
hbase-server/src/test/java/org/apache/hadoop/hbase/master/assignment/TestRollbackSCP.java