diff --git a/server/log.go b/server/log.go index 4b9193c0..143a56ab 100644 --- a/server/log.go +++ b/server/log.go @@ -214,6 +214,14 @@ func (s *Server) RateLimitWarnf(format string, v ...interface{}) { s.Warnf("%s", statement) } +func (s *Server) RateLimitDebugf(format string, v ...interface{}) { + statement := fmt.Sprintf(format, v...) + if _, loaded := s.rateLimitLogging.LoadOrStore(statement, time.Now()); loaded { + return + } + s.Debugf("%s", statement) +} + // Fatalf logs a fatal error func (s *Server) Fatalf(format string, v ...interface{}) { s.executeLogCall(func(logger Logger, format string, v ...interface{}) { diff --git a/server/stream.go b/server/stream.go index 13621781..bc5cc7ab 100644 --- a/server/stream.go +++ b/server/stream.go @@ -3966,7 +3966,7 @@ func (mset *stream) processJetStreamMsg(subject, reply string, hdr, msg []byte, switch err { case ErrMaxMsgs, ErrMaxBytes, ErrMaxMsgsPerSubject, ErrMsgTooLarge: - s.Debugf("JetStream failed to store a msg on stream '%s > %s': %v", accName, name, err) + s.RateLimitDebugf("JetStream failed to store a msg on stream '%s > %s': %v", accName, name, err) case ErrStoreClosed: default: s.Errorf("JetStream failed to store a msg on stream '%s > %s': %v", accName, name, err)