From 9781025b40650d17d794584374ad16770106c54b Mon Sep 17 00:00:00 2001 From: Derek Collison Date: Fri, 15 Sep 2023 16:21:12 -0700 Subject: [PATCH] Fix for data race accessing consumer assignment Signed-off-by: Derek Collison --- server/jetstream_api.go | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/server/jetstream_api.go b/server/jetstream_api.go index 52ebb733..53736a1b 100644 --- a/server/jetstream_api.go +++ b/server/jetstream_api.go @@ -4231,6 +4231,8 @@ func (s *Server) jsConsumerInfoRequest(sub *subscription, c *client, _ *Account, // We have been assigned but have not created a node yet. If we are a member return // our config and defaults for state and no cluster info. if isMember { + // Since we access consumerAssignment, need js lock. + js.mu.RLock() resp.ConsumerInfo = &ConsumerInfo{ Stream: ca.Stream, Name: ca.Name, @@ -4238,7 +4240,9 @@ func (s *Server) jsConsumerInfoRequest(sub *subscription, c *client, _ *Account, Config: ca.Config, TimeStamp: time.Now().UTC(), } - s.sendAPIResponse(ci, acc, subject, reply, string(msg), s.jsonResponse(resp)) + b := s.jsonResponse(resp) + js.mu.RUnlock() + s.sendAPIResponse(ci, acc, subject, reply, string(msg), b) } return }