@ Override public synchronized void receiveAck ( int blockIndex ) { SendWork work = m_outstandingWork . get ( blockIndex ) ; // releases the BBContainers and cleans up if ( work == null || work . m_ackCounter == null ) { rejoinLog . warn ( "Received invalid blockIndex ack for targetId " + m_targetId + " for index " + String . valueOf ( blockIndex ) + ( ( work == null ) ? " already removed the block." : " ack counter haven't been initialized." ) ) ; return ; } if ( work . receiveAck ( ) ) { rejoinLog . trace ( "Received ack for targetId " + m_targetId + " removes block for index " + String . valueOf ( blockIndex ) ) ; m_outstandingWorkCount . decrementAndGet ( ) ; m_outstandingWork . remove ( blockIndex ) ; work . discard ( ) ; } else { rejoinLog . trace ( "Received ack for targetId " + m_targetId + " decrements counter for block index " + String . valueOf ( blockIndex ) ) ; } }
Synchronized method to handle the arrival of an Ack .