Class ReceivedMessageSequenceTracker

java.lang.Object
io.nosqlbench.adapters.api.metrics.ReceivedMessageSequenceTracker
All Implemented Interfaces:
AutoCloseable

public class ReceivedMessageSequenceTracker extends Object implements AutoCloseable
Detects message loss, message duplication and out-of-order message delivery based on a monotonic sequence number that each received message contains.

Out-of-order messages are detected with a maximum look behind of 1000 sequence number entries. This is currently defined as a constant, DEFAULT_MAX_TRACK_OUT_OF_ORDER_SEQUENCE_NUMBERS.

  • Constructor Details

    • ReceivedMessageSequenceTracker

      public ReceivedMessageSequenceTracker(com.codahale.metrics.Counter msgErrOutOfSeqCounter, com.codahale.metrics.Counter msgErrDuplicateCounter, com.codahale.metrics.Counter msgErrLossCounter)
    • ReceivedMessageSequenceTracker

      public ReceivedMessageSequenceTracker(com.codahale.metrics.Counter msgErrOutOfSeqCounter, com.codahale.metrics.Counter msgErrDuplicateCounter, com.codahale.metrics.Counter msgErrLossCounter, int maxTrackOutOfOrderSequenceNumbers, int maxTrackSkippedSequenceNumbers)
  • Method Details

    • sequenceNumberReceived

      public void sequenceNumberReceived(long sequenceNumber)
      Notifies the tracker about a received sequence number
      Parameters:
      sequenceNumber - the sequence number of the received message
    • close

      public void close()
      Handles the possible pending out of sequence numbers. Mainly needed in unit tests to assert the counter values.
      Specified by:
      close in interface AutoCloseable
    • getMaxTrackOutOfOrderSequenceNumbers

      public int getMaxTrackOutOfOrderSequenceNumbers()
    • getMaxTrackSkippedSequenceNumbers

      public int getMaxTrackSkippedSequenceNumbers()