docs: @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));
          }
      }