From 378fed164de43c6dfebc1b025e84dba06cbc2b01 Mon Sep 17 00:00:00 2001 From: Ivan Kozlovic Date: Fri, 16 Sep 2022 15:06:58 -0600 Subject: [PATCH] [FIXED] JetStream: possible panic on peer remove on server shutdown This was discovered by new test TestJetStreamClusterRemovePeerByID. I saw this on Travis and repeating the test locally with -count=10 I was able to reproduce. The issue is cc.meta being nil but accessing cc.meta.ID() directly. Signed-off-by: Ivan Kozlovic --- server/jetstream_cluster.go | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/server/jetstream_cluster.go b/server/jetstream_cluster.go index 0ef749d6..94b928a9 100644 --- a/server/jetstream_cluster.go +++ b/server/jetstream_cluster.go @@ -1299,6 +1299,10 @@ func (js *jetStream) processAddPeer(peer string) { func (js *jetStream) processRemovePeer(peer string) { js.mu.Lock() s, cc := js.srv, js.cluster + if cc.meta == nil { + js.mu.Unlock() + return + } isLeader := cc.isLeader() // All nodes will check if this is them. isUs := cc.meta.ID() == peer