docs: @Override
      public void run(SiteProcedureConnection siteConnection)
      {
          LatencyWatchdog.pet();
  
          waitOnDurabilityBackpressureFuture();
          if (HOST_DEBUG_ENABLED) {
              hostLog.debug("STARTING: " + this);
          }
          final VoltTrace.TraceEventBatch traceLog = VoltTrace.log(VoltTrace.Category.SPI);
          if (traceLog != null) {
              traceLog.add(() -> VoltTrace.beginDuration("runsptask",
                                                         "txnId", TxnEgo.txnIdToString(getTxnId()),
                                                         "partition", Integer.toString(siteConnection.getCorrespondingPartitionId())));
          }
  
          if (!m_txnState.isReadOnly()) {
              m_txnState.setBeginUndoToken(siteConnection.getLatestUndoToken());
          }
  
          // cast up here .. ugly.
          SpTransactionState txnState = (SpTransactionState)m_txnState;
  
          InitiateResponseMessage response;
          int originalTimeout = siteConnection.getBatchTimeout();
          int individualTimeout = m_txnState.getInvocation().getBatchTimeout();
          try {
              // run the procedure with a specific individual timeout
              if (BatchTimeoutOverrideType.isUserSetTimeout(individualTimeout) ) {
                  siteConnection.setBatchTimeout(individualTimeout);
              }
              response = processInitiateTask(txnState.m_initiationMsg, siteConnection);
          } finally {
              // reset the deployment timeout value back to its original value
              if (BatchTimeoutOverrideType.isUserSetTimeout(individualTimeout) ) {
                  siteConnection.setBatchTimeout(originalTimeout);
              }
          }
  
          if (!response.shouldCommit()) {
              m_txnState.setNeedsRollback(true);
          }
          completeInitiateTask(siteConnection);
          response.m_sourceHSId = m_initiator.getHSId();
          if (txnState.m_initiationMsg != null && !(txnState.m_initiationMsg.isForReplica())) {
              response.setExecutedOnPreviousLeader(true);
          }
          m_initiator.deliver(response);
          if (EXEC_TRACE_ENABLED) {
              execLog.l7dlog( Level.TRACE, LogKeys.org_voltdb_ExecutionSite_SendingCompletedWUToDtxn.name(), null);
          }
          if (HOST_DEBUG_ENABLED) {
              hostLog.debug("COMPLETE: " + this);
          }
          if (traceLog != null) {
              traceLog.add(VoltTrace::endDuration);
          }
  
          logToDR(siteConnection.getDRGateway(), txnState);
      }