From bef3a5a9e19feb6a060197cce8f018ce70425472 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jean-No=C3=ABl=20Moyne?= Date: Fri, 21 Jun 2024 16:24:59 +0200 Subject: [PATCH] Return error when trying to update a stream with a source with a bad subject transform (#5574) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit In some cases a bad subject transform could still pass the validation test that is part of the config check when updating a stream config, and no error would be returned. Now return an error when trying to update a stream config with a source that has a bad subject transform that is not caught by the subject transform destination check in the stream config check. Improves #5571 --------- Signed-off-by: Jean-Noël Moyne --- server/jetstream_test.go | 3 ++- server/stream.go | 3 ++- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/server/jetstream_test.go b/server/jetstream_test.go index e379d9b9084..858d11f0120 100644 --- a/server/jetstream_test.go +++ b/server/jetstream_test.go @@ -22755,5 +22755,6 @@ func TestJetStreamBadSubjectMappingStream(t *testing.T) { }, }, }) - require_NoError(t, err) + + require_Error(t, err, NewJSStreamUpdateError(errors.New("unable to get subject transform for source: invalid mapping destination: too many arguments passed to the function in {{wildcard(1)}}{{split(3,1)}}"))) } diff --git a/server/stream.go b/server/stream.go index c501ecbde43..a09afdbf323 100644 --- a/server/stream.go +++ b/server/stream.go @@ -1840,7 +1840,8 @@ 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.srv.Errorf("Unable to get subject transform for source: %v", err) + mset.mu.Unlock() + return fmt.Errorf("unable to get subject transform for source: %v", err) } } }