Skip to content

Commit d10e9f7

Browse files
derekcollisonMauriceVanVeen
authored andcommitted
Fix data race when updating leader (#6150)
Should solve this data race, where `rn.updateLeader(noLeader)` was called without holding the lock. ``` ================== WARNING: DATA RACE Write at 0x00c0011d6da8 by goroutine 238071: github.com/nats-io/nats-server/v2/server.(*raft).updateLeader() /home/travis/build/nats-io/nats-server/server/raft.go:3212 +0x1fa github.com/nats-io/nats-server/v2/server.TestJetStreamClusterDesyncAfterErrorDuringCatchup.func2() /home/travis/build/nats-io/nats-server/server/jetstream_cluster_4_test.go:3970 +0x1f2 github.com/nats-io/nats-server/v2/server.TestJetStreamClusterDesyncAfterErrorDuringCatchup.func3() /home/travis/build/nats-io/nats-server/server/jetstream_cluster_4_test.go:4046 +0xc56 testing.tRunner() /home/travis/sdk/go1.23.3/src/testing/testing.go:1690 +0x226 testing.(*T).Run.gowrap1() /home/travis/sdk/go1.23.3/src/testing/testing.go:1743 +0x44 Previous read at 0x00c0011d6da8 by goroutine 238374: github.com/nats-io/nats-server/v2/server.(*raft).processAppendEntry() /home/travis/build/nats-io/nats-server/server/raft.go:3351 +0x124c github.com/nats-io/nats-server/v2/server.(*raft).processAppendEntries() /home/travis/build/nats-io/nats-server/server/raft.go:2029 +0x1f2 github.com/nats-io/nats-server/v2/server.(*raft).runAsFollower() /home/travis/build/nats-io/nats-server/server/raft.go:2044 +0x446 github.com/nats-io/nats-server/v2/server.(*raft).run() /home/travis/build/nats-io/nats-server/server/raft.go:1906 +0x557 github.com/nats-io/nats-server/v2/server.(*raft).run-fm() <autogenerated>:1 +0x33 github.com/nats-io/nats-server/v2/server.(*Server).startGoRoutine.func1() /home/travis/build/nats-io/nats-server/server/server.go:3885 +0x59 ``` Signed-off-by: Maurice van Veen <[email protected]>
1 parent 3c2286f commit d10e9f7

File tree

1 file changed

+2
-0
lines changed

1 file changed

+2
-0
lines changed

server/jetstream_cluster_4_test.go

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3603,7 +3603,9 @@ func TestJetStreamClusterDesyncAfterErrorDuringCatchup(t *testing.T) {
36033603
for _, n := range server.raftNodes {
36043604
rn := n.(*raft)
36053605
if rn.accName == "$G" {
3606+
rn.Lock()
36063607
rn.updateLeader(noLeader)
3608+
rn.Unlock()
36073609
}
36083610
}
36093611

0 commit comments

Comments
 (0)