From d744e74f520ebc63ae52b20c70539bc295786368 Mon Sep 17 00:00:00 2001 From: Maurice van Veen Date: Fri, 6 Jun 2025 13:45:03 +0200 Subject: [PATCH] De-flake TestNoRaceJetStreamKVReplaceWithServerRestart Signed-off-by: Maurice van Veen --- server/norace_2_test.go | 17 ++++++++++++++++- 1 file changed, 16 insertions(+), 1 deletion(-) diff --git a/server/norace_2_test.go b/server/norace_2_test.go index c0d0f46e733..9dd90934ba0 100644 --- a/server/norace_2_test.go +++ b/server/norace_2_test.go @@ -1235,6 +1235,15 @@ func TestNoRaceJetStreamKVReplaceWithServerRestart(t *testing.T) { }) require_NoError(t, err) + // Manually disable direct get on underlying stream, since this test + // relies on immediate consistency which we can't guarantee with direct gets + // until we provide a solution for this. + si, err := js.StreamInfo("KV_TEST") + require_NoError(t, err) + si.Config.AllowDirect = false + _, err = js.UpdateStream(&si.Config) + require_NoError(t, err) + createData := func(n int) []byte { const letterBytes = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789" b := make([]byte, n) @@ -1247,6 +1256,11 @@ func TestNoRaceJetStreamKVReplaceWithServerRestart(t *testing.T) { _, err = kv.Create("foo", createData(160)) require_NoError(t, err) + // Ensure all replicas have applied the key. + checkFor(t, 2*time.Second, 200*time.Millisecond, func() error { + return checkState(t, c, globalAccountName, "KV_TEST") + }) + ch := make(chan struct{}) wg := sync.WaitGroup{} @@ -1263,6 +1277,7 @@ func TestNoRaceJetStreamKVReplaceWithServerRestart(t *testing.T) { for { select { case <-ch: + close(errCh) return default: k, err := kv.Get("foo") @@ -1285,7 +1300,7 @@ func TestNoRaceJetStreamKVReplaceWithServerRestart(t *testing.T) { time.Sleep(2 * time.Second) for _, s := range c.servers { s.Shutdown() - // Need to leave servers down for awhile to trigger bug properly. + // Need to leave servers down for a while to trigger bug properly. time.Sleep(5 * time.Second) s = c.restartServer(s) c.waitOnServerHealthz(s)