@Override
  protected Procedure[] doExecute(final TEnvironment env)
    throws ProcedureYieldException, ProcedureSuspendedException, InterruptedException {
    updateTimestamp();
    try {
      Procedure[] children = !executed ? execute(env) : null;
      executed = !executed;
      return children;
    } finally {
      updateTimestamp();
    }
  }
A SequentialProcedure describes one step in a procedure chain:

<pre>
  -&gt; Step 1 -&gt; Step 2 -&gt; Step 3
</pre>

The main difference from a base Procedure is that the execute() of a SequentialProcedure will be
called only once; there will be no second execute() call once the children are finished. which
means once the child of a SequentialProcedure are completed the SequentialProcedure is completed
too.
hbase-procedure/src/main/java/org/apache/hadoop/hbase/procedure2/SequentialProcedure.java