Class ConcurrentStatsCounter

  • All Implemented Interfaces:
    StatsCounter

    public final class ConcurrentStatsCounter
    extends java.lang.Object
    implements StatsCounter
    A thread-safe StatsCounter implementation for use by Cache implementors.
    • Field Detail

      • hitCount

        private final java.util.concurrent.atomic.LongAdder hitCount
      • missCount

        private final java.util.concurrent.atomic.LongAdder missCount
      • loadSuccessCount

        private final java.util.concurrent.atomic.LongAdder loadSuccessCount
      • loadFailureCount

        private final java.util.concurrent.atomic.LongAdder loadFailureCount
      • totalLoadTime

        private final java.util.concurrent.atomic.LongAdder totalLoadTime
      • evictionCount

        private final java.util.concurrent.atomic.LongAdder evictionCount
      • evictionWeight

        private final java.util.concurrent.atomic.LongAdder evictionWeight
    • Constructor Detail

      • ConcurrentStatsCounter

        public ConcurrentStatsCounter()
        Constructs an instance with all counts initialized to zero.
    • Method Detail

      • recordHits

        public void recordHits​(int count)
        Description copied from interface: StatsCounter
        Records cache hits. This should be called when a cache request returns a cached value.
        Specified by:
        recordHits in interface StatsCounter
        Parameters:
        count - the number of hits to record
      • recordMisses

        public void recordMisses​(int count)
        Description copied from interface: StatsCounter
        Records cache misses. This should be called when a cache request returns a value that was not found in the cache. This method should be called by the loading thread, as well as by threads blocking on the load. Multiple concurrent calls to Cache lookup methods with the same key on an absent value should result in a single call to either recordLoadSuccess or recordLoadFailure and multiple calls to this method, despite all being served by the results of a single load operation.
        Specified by:
        recordMisses in interface StatsCounter
        Parameters:
        count - the number of misses to record
      • recordEviction

        @Deprecated
        public void recordEviction()
        Deprecated.
        Description copied from interface: StatsCounter
        Records the eviction of an entry from the cache. This should only been called when an entry is evicted due to the cache's eviction strategy, and not as a result of manual invalidations.
        Specified by:
        recordEviction in interface StatsCounter
      • recordEviction

        @Deprecated
        public void recordEviction​(int weight)
        Deprecated.
        Description copied from interface: StatsCounter
        Records the eviction of an entry from the cache. This should only been called when an entry is evicted due to the cache's eviction strategy, and not as a result of manual invalidations.
        Specified by:
        recordEviction in interface StatsCounter
        Parameters:
        weight - the weight of the evicted entry
      • recordEviction

        public void recordEviction​(int weight,
                                   RemovalCause cause)
        Description copied from interface: StatsCounter
        Records the eviction of an entry from the cache. This should only been called when an entry is evicted due to the cache's eviction strategy, and not as a result of manual invalidations.
        Specified by:
        recordEviction in interface StatsCounter
        Parameters:
        weight - the weight of the evicted entry
        cause - the reason for which the entry was removed
      • snapshot

        public CacheStats snapshot()
        Description copied from interface: StatsCounter
        Returns a snapshot of this counter's values. Note that this may be an inconsistent view, as it may be interleaved with update operations.

        Note: the values of the metrics are undefined in case of overflow (though it is guaranteed not to throw an exception). If you require specific handling, we recommend implementing your own stats collector.

        Specified by:
        snapshot in interface StatsCounter
        Returns:
        a snapshot of this counter's values
      • negativeToMaxValue

        private static long negativeToMaxValue​(long value)
        Returns value, if non-negative. Otherwise, returns Long.MAX_VALUE.
      • incrementBy

        public void incrementBy​(@NonNull StatsCounter other)
        Increments all counters by the values in other.
        Parameters:
        other - the counter to increment from
      • toString

        public java.lang.String toString()
        Overrides:
        toString in class java.lang.Object