Skip to content

Commit 1e017cd

Browse files
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]>
2 parents d9454d3 + e62990d commit 1e017cd

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
@@ -3967,7 +3967,9 @@ func TestJetStreamClusterDesyncAfterErrorDuringCatchup(t *testing.T) {
39673967
for _, n := range server.raftNodes {
39683968
rn := n.(*raft)
39693969
if rn.accName == "$G" {
3970+
rn.Lock()
39703971
rn.updateLeader(noLeader)
3972+
rn.Unlock()
39713973
}
39723974
}
39733975

0 commit comments

Comments
 (0)