Skip to content

Instantly share code, notes, and snippets.

@dwadhwani
Last active August 8, 2018 22:20
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save dwadhwani/cc446cbd29d5f748329fa36a8a3134be to your computer and use it in GitHub Desktop.
Save dwadhwani/cc446cbd29d5f748329fa36a8a3134be to your computer and use it in GitHub Desktop.
Reservoir that resets on Snapshot
import com.codahale.metrics.{UniformReservoir, Reservoir => CodaHaleReservoir}
/**
* A Reservoir [backed by a UniformReservoir] that resets its internal state on each snapshot.
* (which is how reporters get information from reservoirs).
*/
class ResetOnSnapshotReservoir extends CodaHaleReservoir {
@volatile private var reservoir: CodaHaleReservoir = getNewReservoir
override def update(value: Long) = reservoir.update(value)
override def getSnapshot = {
val reservoirCopy = reservoir
reservoir = getNewReservoir
reservoirCopy.getSnapshot
}
override def size() = reservoir.size()
private def getNewReservoir: CodaHaleReservoir = new UniformReservoir()
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment