Last active
August 8, 2018 22:20
-
-
Save dwadhwani/cc446cbd29d5f748329fa36a8a3134be to your computer and use it in GitHub Desktop.
Reservoir that resets on Snapshot
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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