From ed0dfaefed5fda6222cc43a70b79d50adef5a1f4 Mon Sep 17 00:00:00 2001 From: Derek Collison Date: Thu, 20 Jun 2024 17:11:55 +0800 Subject: [PATCH] Do not unlock here, will panic server. Signed-off-by: Derek Collison --- server/jetstream_test.go | 29 +++++++++++++++++++++++++++++ server/stream.go | 1 - 2 files changed, 29 insertions(+), 1 deletion(-) diff --git a/server/jetstream_test.go b/server/jetstream_test.go index 348299accb0..49adf5c489e 100644 --- a/server/jetstream_test.go +++ b/server/jetstream_test.go @@ -23733,3 +23733,32 @@ func TestJetStreamAuditStreams(t *testing.T) { }) require_NoError(t, err) } + +// https://github.com/nats-io/nats-server/issues/5570 +func TestJetStreamBadSubjectMappingStream(t *testing.T) { + s := RunBasicJetStreamServer(t) + defer s.Shutdown() + + // Client for API requests. + nc, js := jsClientConnect(t, s) + defer nc.Close() + + _, err := js.AddStream(&nats.StreamConfig{Name: "test"}) + require_NoError(t, err) + + _, err = js.UpdateStream(&nats.StreamConfig{ + Name: "test", + Sources: []*nats.StreamSource{ + { + Name: "mapping", + SubjectTransforms: []nats.SubjectTransformConfig{ + { + Source: "events.*", + Destination: "events.{{wildcard(1)}}{{split(3,1)}}", + }, + }, + }, + }, + }) + require_NoError(t, err) +} diff --git a/server/stream.go b/server/stream.go index 690c87495cc..65e0a574605 100644 --- a/server/stream.go +++ b/server/stream.go @@ -1846,7 +1846,6 @@ func (mset *stream) updateWithAdvisory(config *StreamConfig, sendAdvisory bool) var err error si.trs[i], err = NewSubjectTransform(s.SubjectTransforms[i].Source, s.SubjectTransforms[i].Destination) if err != nil { - mset.mu.Unlock() mset.srv.Errorf("Unable to get subject transform for source: %v", err) } }