@Override
    public void load(ProcedureIterator procIter) throws IOException {
      while (procIter.hasNext()) {
        long procId;
        if (procIter.isNextFinished()) {
          Procedure<?> proc = procIter.next();
          procId = proc.getProcId();
          LOG.debug("loading completed procId=" + procId + ": " + proc);
          completed.add(proc);
        } else {
          Procedure proc = procIter.next();
          procId = proc.getProcId();
          LOG.debug("loading runnable procId=" + procId + ": " + proc);
          runnable.add(proc);
        }
        if (procIds != null) {
          assertTrue("procId=" + procId + " unexpected", procIds.contains(procId));
        }
      }
    }
Run through all procedure flow states TWICE while also restarting procedure executor at each
step; i.e force a reread of procedure store.
<p>
It does
<ol>
<li>Execute step N - kill the executor before store update
<li>Restart executor/store
<li>Execute step N - and then save to store
</ol>
<p>
This is a good test for finding state that needs persisting and steps that are not idempotent.
hbase-procedure/src/test/java/org/apache/hadoop/hbase/procedure2/ProcedureTestingUtility.java