Class PeriodicStatisticsSink

java.lang.Object
com.arpnetworking.tsdcore.sinks.BaseSink
com.arpnetworking.tsdcore.sinks.PeriodicStatisticsSink
All Implemented Interfaces:
Sink

public final class PeriodicStatisticsSink extends BaseSink
Aggregates and periodically logs metrics about the aggregated data being record; effectively, this is metrics about metrics. It's primary purpose is to provide a quick sanity check on installations by generating metrics that the aggregator can then consume (and use to generate more metrics). This class is thread safe. TODO(vkoskela): Remove synchronized blocks [MAI-110] Details: The synchronization can be removed if the metrics client can be configured to throw ISE when attempting to write to a closed instance. This would allow a retry on the new instance; starvation would theoretically be possible but practically should never happen. (+) The implementation of _age as an AtomicLong currently relies on the locking provided by the synchronized block to perform it's check and set. This can be replaced with a separate lock or a thread-safe accumulator implementation.
Author:
Ville Koskela (ville dot koskela at inscopemetrics dot com)
  • Method Details

    • recordAggregateData

      public void recordAggregateData(PeriodicData periodicData)
      Description copied from interface: Sink
      Called when additional PeriodicData instances are available for publication.
      Parameters:
      periodicData - The {PeriodicData to be published.
    • close

      public void close()
      Description copied from interface: Sink
      Called to allow the publisher to clean-up. No further calls to recordAggregation will be made after a call to close.
    • toLogValue

      public Object toLogValue()
      Description copied from class: BaseSink
      Generate a Steno log compatible representation.
      Overrides:
      toLogValue in class BaseSink
      Returns:
      Steno log compatible representation.