From fcb3ae18fbbc179b09f2377691472513317a6d0e Mon Sep 17 00:00:00 2001 From: Neil Twigg Date: Tue, 7 Jan 2025 15:20:21 +0000 Subject: [PATCH] Remove JWT & alternates from `$JS.EVENT.ADVISORY.API` and stream snapshot/restore advisories Otherwise these advisories can end up very large and take more CPU time to encode. Signed-off-by: Neil Twigg --- server/events.go | 11 +++++++++++ server/jetstream_api.go | 10 +++++----- 2 files changed, 16 insertions(+), 5 deletions(-) diff --git a/server/events.go b/server/events.go index eeff78c18e6..871c381fce4 100644 --- a/server/events.go +++ b/server/events.go @@ -347,6 +347,17 @@ func (ci *ClientInfo) forProposal() *ClientInfo { return &cci } +// forAdvisory returns the minimum amount of ClientInfo we need for JS advisory events. +func (ci *ClientInfo) forAdvisory() *ClientInfo { + if ci == nil { + return nil + } + cci := *ci + cci.Jwt = _EMPTY_ + cci.Alternates = nil + return &cci +} + // ServerStats hold various statistics that we will periodically send out. type ServerStats struct { Start time.Time `json:"start"` diff --git a/server/jetstream_api.go b/server/jetstream_api.go index e81c78a41c1..072e3e21b0b 100644 --- a/server/jetstream_api.go +++ b/server/jetstream_api.go @@ -3833,7 +3833,7 @@ func (s *Server) processStreamRestore(ci *ClientInfo, acc *Account, cfg *StreamC Time: start, }, Stream: streamName, - Client: ci, + Client: ci.forAdvisory(), Domain: domain, }) @@ -3965,7 +3965,7 @@ func (s *Server) processStreamRestore(ci *ClientInfo, acc *Account, cfg *StreamC Start: start, End: end, Bytes: int64(total), - Client: ci, + Client: ci.forAdvisory(), Domain: domain, }) @@ -4099,7 +4099,7 @@ func (s *Server) jsStreamSnapshotRequest(sub *subscription, c *client, _ *Accoun }, Stream: mset.name(), State: sr.State, - Client: ci, + Client: ci.forAdvisory(), Domain: s.getOpts().JetStreamDomain, }) @@ -4117,7 +4117,7 @@ func (s *Server) jsStreamSnapshotRequest(sub *subscription, c *client, _ *Accoun Stream: mset.name(), Start: start, End: end, - Client: ci, + Client: ci.forAdvisory(), Domain: s.getOpts().JetStreamDomain, }) @@ -5065,7 +5065,7 @@ func (s *Server) sendJetStreamAPIAuditAdvisory(ci *ClientInfo, acc *Account, sub Time: time.Now().UTC(), }, Server: s.Name(), - Client: ci, + Client: ci.forAdvisory(), Subject: subject, Request: request, Response: response,