From b3ee219ccb07eedd71c5b97a48a15f862a879f9b Mon Sep 17 00:00:00 2001 From: Paul Wells Date: Mon, 29 Sep 2025 02:51:58 -0700 Subject: [PATCH] fix stats worker closed condition (#3965) * fix stats worker closed condition * test * tidy --- pkg/telemetry/statsworker.go | 2 +- pkg/telemetry/statsworker_test.go | 19 +++++++++++++++++++ 2 files changed, 20 insertions(+), 1 deletion(-) create mode 100644 pkg/telemetry/statsworker_test.go diff --git a/pkg/telemetry/statsworker.go b/pkg/telemetry/statsworker.go index 075a469af..3a0c63ee0 100644 --- a/pkg/telemetry/statsworker.go +++ b/pkg/telemetry/statsworker.go @@ -162,7 +162,7 @@ func (s *StatsWorker) Close(guard *ReferenceGuard) bool { func (s *StatsWorker) Closed(guard *ReferenceGuard) bool { s.lock.Lock() defer s.lock.Unlock() - if !s.closedAt.IsZero() { + if s.closedAt.IsZero() { s.refCount.Activate(guard) return false } diff --git a/pkg/telemetry/statsworker_test.go b/pkg/telemetry/statsworker_test.go new file mode 100644 index 000000000..f7ae48816 --- /dev/null +++ b/pkg/telemetry/statsworker_test.go @@ -0,0 +1,19 @@ +package telemetry + +import ( + "testing" + + "github.com/stretchr/testify/require" +) + +func TestStatsWorker(t *testing.T) { + t.Run("reference counted close works", func(t *testing.T) { + var g0, g1 ReferenceGuard + w := newStatsWorker(t.Context(), nil, "", "", "", "", &g0) + require.False(t, w.Closed(&g1)) + require.False(t, w.Close(&g0)) + require.False(t, w.Closed(&g1)) + require.True(t, w.Close(&g1)) + require.True(t, w.Closed(&g1)) + }) +}