docs: @Override
      public void runFromTaskLog(SiteProcedureConnection siteConnection)
      {
          LatencyWatchdog.pet();
  
          if (HOST_DEBUG_ENABLED) {
              hostLog.trace("START replaying txn: " + this);
          }
          if (!m_txnState.isReadOnly()) {
              m_txnState.setBeginUndoToken(siteConnection.getLatestUndoToken());
          }
  
          // cast up here .. ugly.
          SpTransactionState txnState = (SpTransactionState)m_txnState;
          final InitiateResponseMessage response = processInitiateTask(txnState.m_initiationMsg, siteConnection);
          if (!response.shouldCommit()) {
              m_txnState.setNeedsRollback(true);
          }
          if (!m_txnState.isReadOnly()) {
              assert(siteConnection.getLatestUndoToken() != Site.kInvalidUndoToken) :
                  "[SP][RW] transaction found invalid latest undo token state in Iv2ExecutionSite.";
              assert(siteConnection.getLatestUndoToken() >= m_txnState.getBeginUndoToken()) :
                  "[SP][RW] transaction's undo log token farther advanced than latest known value.";
              assert (m_txnState.getBeginUndoToken() != Site.kInvalidUndoToken) :
                  "[SP][RW] with invalid undo token in completeInitiateTask.";
  
              // the truncation point token SHOULD be part of m_txn. However, the
              // legacy interaces don't work this way and IV2 hasn't changed this
              // ownership yet. But truncateUndoLog is written assuming the right
              // eventual encapsulation.
              siteConnection.truncateUndoLog(m_txnState.needsRollback(), false,
                      m_txnState.getBeginUndoToken(),
                      m_txnState.m_spHandle,
                      m_txnState.getUndoLog());
          }
          m_txnState.setDone();
          if (EXEC_TRACE_ENABLED) {
              execLog.l7dlog( Level.TRACE, LogKeys.org_voltdb_ExecutionSite_SendingCompletedWUToDtxn.name(), null);
          }
          if (HOST_DEBUG_ENABLED) {
              hostLog.trace("COMPLETE replaying txn: " + this);
          }
  
          logToDR(siteConnection.getDRGateway(), txnState);
      }