void addToRepairLog ( Iv2RepairLogResponseMessage msg ) { // don't add the null payload from the first message ack to the repair log if ( msg . getPayload ( ) == null ) { return ; } // MP repair log has at most two messages, complete message for prior transaction // and fragment message for current transaction, don't add message before prior completion if ( msg . getTxnId ( ) <= m_maxSeenCompleteTxnId ) { return ; } Iv2RepairLogResponseMessage prev = m_repairLogUnion . floor ( msg ) ; if ( prev != null && ( prev . getTxnId ( ) != msg . getTxnId ( ) ) ) { prev = null ; } if ( msg . getPayload ( ) instanceof CompleteTransactionMessage ) { // prefer complete messages to fragment tasks. Completion message also erases prior staled messages m_repairLogUnion . removeIf ( ( p ) - > p . getTxnId ( ) <= msg . getTxnId ( ) ) ; m_repairLogUnion . add ( msg ) ; m_maxSeenCompleteTxnId = msg . getTxnId ( ) ; } else if ( prev == null ) { m_repairLogUnion . add ( msg ) ; } }
replace old messages with complete transaction messages .