mirror of
https://github.com/gogrlx/nats-server.git
synced 2026-04-02 03:38:42 -07:00
[Fixed] limits enforcement issues (#3046)
* [Fixed] limits enforcement issues stream create had checks that stream restore did not have. Moved code into commonly used function checkStreamCfg. Also introduced (cluster/non clustered) StreamLimitsCheck functions to perform checks specific to clustered /non clustered data structures. Checking for valid stream config and limits/reservations before receiving all the data. Now fails the request right away. Added a jetstream limit "max_request_batch" to limit fetch batch size Shortened max name length from 256 to 255, more common file name limit Added check for loop in cyclic source stream configurations features related to limits Signed-off-by: Matthias Hanel <mh@synadia.com>
This commit is contained in:
@@ -113,6 +113,9 @@ const (
|
||||
// JSConsumerMaxPendingAckPolicyRequiredErr consumer requires ack policy for max ack pending
|
||||
JSConsumerMaxPendingAckPolicyRequiredErr ErrorIdentifier = 10082
|
||||
|
||||
// JSConsumerMaxRequestBatchExceededF consumer max request batch exceeds server limit of {limit}
|
||||
JSConsumerMaxRequestBatchExceededF ErrorIdentifier = 10125
|
||||
|
||||
// JSConsumerMaxRequestBatchNegativeErr consumer max request batch needs to be > 0
|
||||
JSConsumerMaxRequestBatchNegativeErr ErrorIdentifier = 10114
|
||||
|
||||
@@ -413,6 +416,7 @@ var (
|
||||
JSConsumerMaxDeliverBackoffErr: {Code: 400, ErrCode: 10116, Description: "max deliver is required to be > length of backoff values"},
|
||||
JSConsumerMaxPendingAckExcessErrF: {Code: 400, ErrCode: 10121, Description: "consumer max ack pending exceeds system limit of {limit}"},
|
||||
JSConsumerMaxPendingAckPolicyRequiredErr: {Code: 400, ErrCode: 10082, Description: "consumer requires ack policy for max ack pending"},
|
||||
JSConsumerMaxRequestBatchExceededF: {Code: 400, ErrCode: 10125, Description: "consumer max request batch exceeds server limit of {limit}"},
|
||||
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"},
|
||||
JSConsumerMaxWaitingNegativeErr: {Code: 400, ErrCode: 10087, Description: "consumer max waiting needs to be positive"},
|
||||
@@ -915,6 +919,22 @@ func NewJSConsumerMaxPendingAckPolicyRequiredError(opts ...ErrorOption) *ApiErro
|
||||
return ApiErrors[JSConsumerMaxPendingAckPolicyRequiredErr]
|
||||
}
|
||||
|
||||
// NewJSConsumerMaxRequestBatchExceededError creates a new JSConsumerMaxRequestBatchExceededF error: "consumer max request batch exceeds server limit of {limit}"
|
||||
func NewJSConsumerMaxRequestBatchExceededError(limit interface{}, opts ...ErrorOption) *ApiError {
|
||||
eopts := parseOpts(opts)
|
||||
if ae, ok := eopts.err.(*ApiError); ok {
|
||||
return ae
|
||||
}
|
||||
|
||||
e := ApiErrors[JSConsumerMaxRequestBatchExceededF]
|
||||
args := e.toReplacerArgs([]interface{}{"{limit}", limit})
|
||||
return &ApiError{
|
||||
Code: e.Code,
|
||||
ErrCode: e.ErrCode,
|
||||
Description: strings.NewReplacer(args...).Replace(e.Description),
|
||||
}
|
||||
}
|
||||
|
||||
// NewJSConsumerMaxRequestBatchNegativeError creates a new JSConsumerMaxRequestBatchNegativeErr error: "consumer max request batch needs to be > 0"
|
||||
func NewJSConsumerMaxRequestBatchNegativeError(opts ...ErrorOption) *ApiError {
|
||||
eopts := parseOpts(opts)
|
||||
|
||||
Reference in New Issue
Block a user