Skip processing consumer assignments after JS has shutdown (#4625)

Signed-off-by: Waldemar Quevedo <wally@nats.io>
This commit is contained in:
Waldemar Quevedo
2023-10-04 13:17:22 -07:00
committed by GitHub
parent 4c791d6288
commit 4e414f1f05
2 changed files with 11 additions and 1 deletions

View File

@@ -1593,6 +1593,10 @@ func (o *consumer) deleteNotActive() {
defer ticker.Stop()
for range ticker.C {
js.mu.RLock()
if js.shuttingDown {
js.mu.RUnlock()
return
}
nca := js.consumerAssignment(acc, stream, name)
js.mu.RUnlock()
// Make sure this is not a new consumer with the same name.

View File

@@ -2705,6 +2705,11 @@ func (mset *stream) resetClusteredState(err error) bool {
if sa != nil {
js.mu.Lock()
if js.shuttingDown {
js.mu.Unlock()
return
}
s.Warnf("Resetting stream cluster state for '%s > %s'", sa.Client.serviceAccount(), sa.Config.Name)
// Now wipe groups from assignments.
sa.Group.node = nil
@@ -3893,6 +3898,7 @@ func (js *jetStream) processConsumerAssignment(ca *consumerAssignment) {
s, cc := js.srv, js.cluster
accName, stream, consumerName := ca.Client.serviceAccount(), ca.Stream, ca.Name
noMeta := cc == nil || cc.meta == nil
shuttingDown := js.shuttingDown
var ourID string
if !noMeta {
ourID = cc.meta.ID()
@@ -3903,7 +3909,7 @@ func (js *jetStream) processConsumerAssignment(ca *consumerAssignment) {
}
js.mu.RUnlock()
if s == nil || noMeta {
if s == nil || noMeta || shuttingDown {
return
}