Merge pull request #13259 from cli/fix-sample-rate-dimension-sync

Fix SetSampleRate not updating sample_rate dimension
This commit is contained in:
Babak K. Shandiz 2026-04-22 13:13:58 +01:00 committed by GitHub
commit 3ad29588b8
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
2 changed files with 20 additions and 0 deletions

View file

@ -14,6 +14,7 @@ import (
"path/filepath"
"runtime"
"slices"
"strconv"
"strings"
"sync"
"time"
@ -283,6 +284,7 @@ func (s *service) SetSampleRate(rate int) {
defer s.mu.Unlock()
s.sampleRate = rate
s.commonDimensions["sample_rate"] = strconv.Itoa(rate)
}
func (s *service) Flush() {

View file

@ -579,6 +579,24 @@ func TestServiceSampling(t *testing.T) {
assert.False(t, called, "flusher should not be called after SetSampleRate reduced the rate")
})
t.Run("SetSampleRate updates sample_rate dimension", func(t *testing.T) {
t.Cleanup(stubDeviceID("test-device"))
var captured SendTelemetryPayload
svc := newService(func(p SendTelemetryPayload) { captured = p }, ghtelemetry.Dimensions{
"sample_rate": "1",
})
svc.sampleRate = 1
svc.sampleBucket = 0
svc.SetSampleRate(100)
svc.Record(ghtelemetry.Event{Type: "test"})
svc.Flush()
require.Len(t, captured.Events, 1)
assert.Equal(t, "100", captured.Events[0].Dimensions["sample_rate"])
})
t.Run("WithSampleRate option sets rate on construction", func(t *testing.T) {
t.Cleanup(stubDeviceID("test-device"))