From 0678e649d3590c89ce9e677849f87efb21043a1f Mon Sep 17 00:00:00 2001 From: Derek Collison Date: Wed, 21 Apr 2021 15:52:54 -0700 Subject: [PATCH] Make sure to not have the raft layer block on apply channel on exit. Signed-off-by: Derek Collison --- server/jetstream_cluster.go | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/server/jetstream_cluster.go b/server/jetstream_cluster.go index 7fa3a5c1..2e9ab3c1 100644 --- a/server/jetstream_cluster.go +++ b/server/jetstream_cluster.go @@ -1310,6 +1310,23 @@ func (js *jetStream) monitorStream(mset *stream, sa *streamAssignment) { s.Debugf("Starting stream monitor for '%s > %s'", sa.Client.serviceAccount(), sa.Config.Name) defer s.Debugf("Exiting stream monitor for '%s > %s'", sa.Client.serviceAccount(), sa.Config.Name) + // Make sure we do not leave the apply channel to fill up and block the raft layer. + defer func() { + if n.State() != Closed { + if n.Leader() { + n.StepDown() + } + // Drain the commit channel.. + for len(ach) > 0 { + select { + case <-ach: + default: + return + } + } + } + }() + const ( compactInterval = 2 * time.Minute compactSizeMin = 32 * 1024 * 1024