From 6be992512719004757c002f3ebe54172c7f6ceea Mon Sep 17 00:00:00 2001 From: Derek Collison Date: Mon, 24 Jan 2022 14:42:57 -0800 Subject: [PATCH] Update config error Signed-off-by: Derek Collison --- server/consumer.go | 2 +- server/errors.json | 10 ++++++++++ server/jetstream_api.go | 3 +-- server/jetstream_errors_generated.go | 14 ++++++++++++++ 4 files changed, 26 insertions(+), 3 deletions(-) diff --git a/server/consumer.go b/server/consumer.go index cbb2653c..e0b1e04c 100644 --- a/server/consumer.go +++ b/server/consumer.go @@ -338,7 +338,7 @@ func (mset *stream) addConsumerWithAssignment(config *ConsumerConfig, oname stri // Check if we have a BackOff defined that MaxDeliver is within range etc. if lbo := len(config.BackOff); lbo > 0 && config.MaxDeliver <= lbo { - return nil, errors.New("max deliver required to be > length backoff values") + return nil, NewJSConsumerMaxDeliverBackoffError() } if len(config.Description) > JSMaxDescriptionLen { diff --git a/server/errors.json b/server/errors.json index 7f114f99..a0b510e7 100644 --- a/server/errors.json +++ b/server/errors.json @@ -1138,5 +1138,15 @@ "help": "", "url": "", "deprecates": "" + }, + { + "constant": "JSConsumerMaxDeliverBackoffErr", + "code": 400, + "error_code": 10116, + "description": "max deliver is required to be \u003e length of backoff values", + "comment": "", + "help": "", + "url": "", + "deprecates": "" } ] \ No newline at end of file diff --git a/server/jetstream_api.go b/server/jetstream_api.go index 7fa06a26..c2abda6c 100644 --- a/server/jetstream_api.go +++ b/server/jetstream_api.go @@ -3131,8 +3131,7 @@ func (s *Server) jsConsumerCreate(sub *subscription, c *client, a *Account, subj // Check if we have a BackOff defined that MaxDeliver is within range etc. if lbo := len(req.Config.BackOff); lbo > 0 && req.Config.MaxDeliver <= lbo { - err := errors.New("max deliver required to be > length backoff values") - resp.Error = NewJSConsumerCreateError(err, Unless(err)) + resp.Error = NewJSConsumerMaxDeliverBackoffError() s.sendAPIErrResponse(ci, acc, subject, reply, string(msg), s.jsonResponse(&resp)) return } diff --git a/server/jetstream_errors_generated.go b/server/jetstream_errors_generated.go index 654b0624..98877870 100644 --- a/server/jetstream_errors_generated.go +++ b/server/jetstream_errors_generated.go @@ -104,6 +104,9 @@ const ( // JSConsumerInvalidSamplingErrF failed to parse consumer sampling configuration: {err} JSConsumerInvalidSamplingErrF ErrorIdentifier = 10095 + // JSConsumerMaxDeliverBackoffErr max deliver is required to be > length of backoff values + JSConsumerMaxDeliverBackoffErr ErrorIdentifier = 10116 + // JSConsumerMaxPendingAckPolicyRequiredErr consumer requires ack policy for max ack pending JSConsumerMaxPendingAckPolicyRequiredErr ErrorIdentifier = 10082 @@ -383,6 +386,7 @@ var ( JSConsumerInvalidDeliverSubject: {Code: 400, ErrCode: 10112, Description: "invalid push consumer deliver subject"}, JSConsumerInvalidPolicyErrF: {Code: 400, ErrCode: 10094, Description: "{err}"}, JSConsumerInvalidSamplingErrF: {Code: 400, ErrCode: 10095, Description: "failed to parse consumer sampling configuration: {err}"}, + JSConsumerMaxDeliverBackoffErr: {Code: 400, ErrCode: 10116, Description: "max deliver is required to be > length of backoff values"}, JSConsumerMaxPendingAckPolicyRequiredErr: {Code: 400, ErrCode: 10082, Description: "consumer requires ack policy for max ack pending"}, JSConsumerMaxRequestBatchNegativeErr: {Code: 400, ErrCode: 10114, Description: "consumer max request batch needs to be > 0"}, JSConsumerMaxRequestExpiresToSmall: {Code: 400, ErrCode: 10115, Description: "consumer max request expires needs to be >= 1ms"}, @@ -843,6 +847,16 @@ func NewJSConsumerInvalidSamplingError(err error, opts ...ErrorOption) *ApiError } } +// NewJSConsumerMaxDeliverBackoffError creates a new JSConsumerMaxDeliverBackoffErr error: "max deliver is required to be > length of backoff values" +func NewJSConsumerMaxDeliverBackoffError(opts ...ErrorOption) *ApiError { + eopts := parseOpts(opts) + if ae, ok := eopts.err.(*ApiError); ok { + return ae + } + + return ApiErrors[JSConsumerMaxDeliverBackoffErr] +} + // NewJSConsumerMaxPendingAckPolicyRequiredError creates a new JSConsumerMaxPendingAckPolicyRequiredErr error: "consumer requires ack policy for max ack pending" func NewJSConsumerMaxPendingAckPolicyRequiredError(opts ...ErrorOption) *ApiError { eopts := parseOpts(opts)