@ Override public void cleanupTransactionBacklogOnRepair ( ) { if ( m_isLeader && m_sendToHSIds . length > 0 ) { m_mailbox . send ( m_sendToHSIds , new MPBacklogFlushMessage ( ) ) ; } Iterator < Entry < Long , TransactionState > > iter = m_outstandingTxns . entrySet ( ) . iterator ( ) ; while ( iter . hasNext ( ) ) { Entry < Long , TransactionState > entry = iter . next ( ) ; TransactionState txnState = entry . getValue ( ) ; if ( TxnEgo . getPartitionId ( entry . getKey ( ) ) == MpInitiator . MP_INIT_PID ) { if ( txnState . isReadOnly ( ) ) { txnState . setDone ( ) ; m_duplicateCounters . entrySet ( ) . removeIf ( ( e ) - > e . getKey ( ) . m_txnId == entry . getKey ( ) ) ; iter . remove ( ) ; } } } // flush all RO transactions out of backlog m_pendingTasks . removeMPReadTransactions ( ) ; }
site leaders also forward the message to its replicas .