This version tweaks Throughput samplers to permit calculating non-integer sample rates, which makes them choose better sample rates in many scenarios. It also fixes a race condition that was recently detected by an improved Go runtime.
- fix: allow throughput samplers to have non-integer rates (#74) | Yi Zhao
- fix: race condition in WindowedThroughput sampler (#73) | Kent Quirk
- maint: update codeowners to pipeline-team (#72) | Jamie Danielson
- maint: update project workflow for pipeline (#71) | Jamie Danielson
- maint: update codeowners to pipeline (#70) | Jamie Danielson
This version corrects a math error in the EMAThroughput sampler.
- fix: Correct EMAThroughput math error (#67) | Kent Quirk
This version extends the Sampler interface to include a new GetMetrics function,
which returns a collection of metrics relevant to that specific sampler. This
improves visibility into the sampler and will be used in an upcoming release of
Honeycomb's Refinery. This is a breaking change for code implemented so as to
conform to the dynsampler.Sampler
interface, such as hand-coded mocks used for
testing. Code using the interface is unaffected.
- feat: Add metrics counter retrieval (#65) | Kent Quirk
- maint(deps): bump github.com/stretchr/testify from 1.8.2 to 1.8.4 (#64) | dependabot[bot]
- maint: update dependabot.yml (#63) | Vera Reynolds
This version contains two new samplers and some (backwards-compatible) changes to the API:
- Many thanks to Yi Zhao for the contribution of the
WindowedThroughput
sampler. This sampler is like the Throughput sampler, but uses a moving average to accumulate sample rates across multiple sampling periods. - The new
EMAThroughput
sampler adjusts overall throughput to achieve a goal while also ensuring that all values in the key space are represented. - The
GetSampleRateMulti()
function allows a single request to represent multiple events. This is particularly useful when tail-sampling at the trace level (because each trace represents a number of spans). - All samplers now support specifying a
time.Duration
instead of a time in seconds. Fields likeClearFrequencySec
are now deprecated and will be dropped in a future release.
- feat: EMAThroughput sampler (#58) | Kent Quirk
- feat: Deprecate integer seconds and replace with time.Duration (#59) | Kent Quirk
- feat: add GetSampleRateMulti (#53) | Kent Quirk
- feat: Windowed Throughput Sampling (#45) | Yi Zhao
- fix: Fix flaky blocklist test (#52) | Yi Zhao
- maint: Pull out common calculation into a function (#57) | Kent Quirk
- maint: bump the go versions we support (#55) | Kent Quirk
- maint(deps): bump github.com/stretchr/testify from 1.6.1 to 1.8.2 (#49) | dependabot[bot]
- maint: remove buildevents from circle (#48) | Jamie Danielson
- chore: Update workflow (#47) | Tyler Helmuth
- chore: Update CODEOWNERS (#46) | Tyler Helmuth
- chore: update dependabot.yml (#44) | Kent Quirk
- maint: drop versions of go below 1.16 (#39) | @vreynolds
- maint: add go 1.18, 1.19 to CI (#30, #31) | @vreynolds
- maint: add go 1.16, 1.17 to CI (#28) | @MikeGoldsmith
- ... and a lot of project management stuff. Details in the commits.
Fixes
- Corrects some sample rate calculations in the Exponential Moving Averge for very small counts.
Features
- Adds Exponential Moving Average (
EMASampleRate
) implementation with Burst Detection, based on theAvgSampleRate
implementation. See docs for description. - Adds
SaveState
andLoadState
to interface to enable serialization of internal state for persistence between process restarts.
Versioning introduced.