From e74eaa02c447523b4f4d85dc91cd980ae746178d Mon Sep 17 00:00:00 2001 From: Derek Collison Date: Sat, 13 Mar 2021 16:22:00 -0500 Subject: [PATCH] Suppress multiple out of space warnings Signed-off-by: Derek Collison --- server/jetstream.go | 24 ++++++++++++++++++++---- 1 file changed, 20 insertions(+), 4 deletions(-) diff --git a/server/jetstream.go b/server/jetstream.go index 8e2ca6d8..6704d272 100644 --- a/server/jetstream.go +++ b/server/jetstream.go @@ -83,6 +83,7 @@ type jetStream struct { apiCalls int64 apiSubs *Sublist disabled bool + oos bool } // This represents a jetstream enabled account. @@ -253,17 +254,32 @@ func (s *Server) setupJetStreamExports() { } } +func (s *Server) jetStreamOOSPending() (wasPending bool) { + s.mu.Lock() + js := s.js + s.mu.Unlock() + if js != nil { + js.mu.Lock() + wasPending = js.oos + js.oos = true + js.mu.Unlock() + } + return wasPending +} + func (s *Server) setJetStreamDisabled() { s.mu.Lock() js := s.js s.mu.Unlock() - js.mu.Lock() - js.disabled = true - js.mu.Unlock() + if js != nil { + js.mu.Lock() + js.disabled = true + js.mu.Unlock() + } } func (s *Server) handleOutOfSpace(stream string) { - if s.JetStreamEnabled() { + if s.JetStreamEnabled() && !s.jetStreamOOSPending() { s.Errorf("JetStream out of space, will be DISABLED") go s.DisableJetStream()