From 404a55a5c07a5c0d25a3372e38e662d53b1b1d01 Mon Sep 17 00:00:00 2001 From: Manan Gupta <35839558+GuptaManan100@users.noreply.github.com> Date: Tue, 11 Feb 2025 15:53:25 +0530 Subject: [PATCH] Fix data race in `TestIsServingLocked` (#17728) Signed-off-by: Manan Gupta --- .../tabletserver/state_manager_test.go | 19 ++++++++++++++----- 1 file changed, 14 insertions(+), 5 deletions(-) diff --git a/go/vt/vttablet/tabletserver/state_manager_test.go b/go/vt/vttablet/tabletserver/state_manager_test.go index 99a3e7e681d..9af2e061502 100644 --- a/go/vt/vttablet/tabletserver/state_manager_test.go +++ b/go/vt/vttablet/tabletserver/state_manager_test.go @@ -150,15 +150,24 @@ func TestStateManagerUnservePrimary(t *testing.T) { } type testDiskMonitor struct { + mu sync.Mutex isDiskStalled bool } func (t *testDiskMonitor) IsDiskStalled() bool { + t.mu.Lock() + defer t.mu.Unlock() return t.isDiskStalled } -// TestIsServingLocked tests isServingLocked() functionality. -func TestIsServingLocked(t *testing.T) { +func (t *testDiskMonitor) setDiskStalled(ds bool) { + t.mu.Lock() + defer t.mu.Unlock() + t.isDiskStalled = ds +} + +// TestIsServing tests IsServing() functionality. +func TestIsServing(t *testing.T) { sm := newTestStateManager() defer sm.StopService() tdm := &testDiskMonitor{isDiskStalled: false} @@ -166,10 +175,10 @@ func TestIsServingLocked(t *testing.T) { err := sm.SetServingType(topodatapb.TabletType_REPLICA, testNow, StateServing, "") require.NoError(t, err) - require.True(t, sm.isServingLocked()) + require.True(t, sm.IsServing()) - tdm.isDiskStalled = true - require.False(t, sm.isServingLocked()) + tdm.setDiskStalled(true) + require.False(t, sm.IsServing()) } func TestStateManagerUnserveNonPrimary(t *testing.T) {