diff --git a/CHANGELOG.md b/CHANGELOG.md index 7668491597a..169333a56e5 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -15,7 +15,8 @@ This project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.htm ### Fixed -- - AWS SDK span name to be of the format `Service.Operation` in `go.opentelemetry.io/contrib/instrumentation/github.com/aws/aws-sdk-go-v2/otelaws`. (#3582, #3521) +- AWS SDK span name to be of the format `Service.Operation` in `go.opentelemetry.io/contrib/instrumentation/github.com/aws/aws-sdk-go-v2/otelaws`. (#3582, #3521) +- Prevent sampler configuration reset from erroneously sampling first span in `go.opentelemetry.io/contrib/samplers/jaegerremote`. (#3603, #3604) ## [1.16.0-rc.1/0.41.0-rc.1/0.9.0-rc.1] - 2023-03-02 diff --git a/samplers/jaegerremote/internal/utils/rate_limiter.go b/samplers/jaegerremote/internal/utils/rate_limiter.go index 9e6688bdb74..5b77b6d579c 100644 --- a/samplers/jaegerremote/internal/utils/rate_limiter.go +++ b/samplers/jaegerremote/internal/utils/rate_limiter.go @@ -49,9 +49,14 @@ type RateLimiter struct { // NewRateLimiter creates a new RateLimiter. func NewRateLimiter(creditsPerSecond, maxBalance float64) *RateLimiter { + balance := maxBalance + if creditsPerSecond == 0 { + balance = 0 + } + return &RateLimiter{ creditsPerSecond: creditsPerSecond, - balance: maxBalance, + balance: balance, maxBalance: maxBalance, lastTick: time.Now(), timeNow: time.Now, diff --git a/samplers/jaegerremote/sampler_test.go b/samplers/jaegerremote/sampler_test.go index 71096118477..e3293331e1b 100644 --- a/samplers/jaegerremote/sampler_test.go +++ b/samplers/jaegerremote/sampler_test.go @@ -71,6 +71,10 @@ func TestRateLimitingSampler(t *testing.T) { assert.Equal(t, trace.RecordAndSample, result.Decision) result = sampler.ShouldSample(trace.SamplingParameters{Name: testOperationName}) assert.Equal(t, trace.Drop, result.Decision) + + sampler = newRateLimitingSampler(0) + result = sampler.ShouldSample(trace.SamplingParameters{Name: testOperationName}) + assert.Equal(t, trace.Drop, result.Decision) } func TestGuaranteedThroughputProbabilisticSamplerUpdate(t *testing.T) {