docs: public long noteTransactionRecievedAndReturnLastSeen(long initiatorHSId, long txnId,
              long lastSafeTxnIdFromInitiator)
      {
          // System.out.printf("Site %d got heartbeat message from initiator %d with txnid/safeid: %d/%d\n",
          //                   m_siteId, initiatorSiteId, txnId, lastSafeTxnIdFromInitiator);
  
          // this doesn't exclude dummy txnid but is also a sanity check
          assert(txnId != 0);
  
          // Drop old data from already-failed initiators.
          if (m_initiatorData.containsKey(initiatorHSId) == false) {
              //hostLog.info("Dropping txn " + txnId + " data from failed initiatorSiteId: " + initiatorSiteId);
              return DtxnConstants.DUMMY_LAST_SEEN_TXN_ID;
          }
  
          // update the latest transaction for the specified initiator
          LastInitiatorData lid = m_initiatorData.get(initiatorHSId);
          if (lid.m_lastSeenTxnId < txnId)
              lid.m_lastSeenTxnId = txnId;
          if (lid.m_lastSafeTxnId < lastSafeTxnIdFromInitiator)
              lid.m_lastSafeTxnId = lastSafeTxnIdFromInitiator;
  
          /*
           * Why aren't we asserting that the txnId is > then the last seen/last safe
           * It seems like this should be guaranteed by TCP ordering and we want to
           * know if it isn't!
           */
  
          // find the minimum value across all latest transactions
          long min = Long.MAX_VALUE;
          for (LastInitiatorData l : m_initiatorData.values())
              if (l.m_lastSeenTxnId < min) min = l.m_lastSeenTxnId;
  
          //  This transaction is the guaranteed minimum
          //  but is not yet necessarily 2PC'd to every site.
          m_newestCandidateTransaction = min;
  
          // this will update the state of the queue if needed
          updateQueueState();
  
          // return the last seen id for the originating initiator
          return lid.m_lastSeenTxnId;
      }