From 1be38b9af7788f6234c51dca060a95604445bb6d Mon Sep 17 00:00:00 2001 From: Maurice van Veen Date: Tue, 29 Oct 2024 09:46:18 +0100 Subject: [PATCH] [FIXED] Don't spin during snapshot processing with no leader Signed-off-by: Maurice van Veen --- server/jetstream_cluster.go | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/server/jetstream_cluster.go b/server/jetstream_cluster.go index b7b908360a0..1da5a95c524 100644 --- a/server/jetstream_cluster.go +++ b/server/jetstream_cluster.go @@ -8380,7 +8380,16 @@ RETRY: releaseSyncOutSem() if n.GroupLeader() == _EMPTY_ { - return fmt.Errorf("%w for stream '%s > %s'", errCatchupAbortedNoLeader, mset.account(), mset.name()) + // Prevent us from spinning if we've installed a snapshot from a leader but there's no leader online. + // We wait a bit to check if a leader has come online in the meantime, if so we can continue. + var canContinue bool + if numRetries == 0 { + time.Sleep(startInterval) + canContinue = n.GroupLeader() != _EMPTY_ + } + if !canContinue { + return fmt.Errorf("%w for stream '%s > %s'", errCatchupAbortedNoLeader, mset.account(), mset.name()) + } } // If we have a sub clear that here.