Enabled mc quota
to set bucket throttle config
#4780
Closed
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Community Contribution License
All community contributions in this pull request are licensed to the project maintainers
under the terms of the [Apache 2 license] (https://www.apache.org/licenses/LICENSE-2.0).
By creating this pull request I represent that I have the right to license the
contributions to the project maintainers under the Apache 2 license.
Description
Motivation and Context
How to test this PR?
mc quota set m1/test-bucket --concurrent-requests-count 200 --apis "PutObject,DeleteObject,Get*" --size 2GB
mc quota set m1/test-bucket --throttle-rules-file ./trules.json
Sample trules.json
mc quota info m1/test-bucket
mc quota info m1/test-bucket --json
Set really small values for
--concurrent-requests-count
for few APIs (sayPutObject
andHeadObject
) as belowmc quota set m1/test-bucket --concurrent-requests-count 10 --apis "PutObject,Get*,Head*,List*"
Run
mc admin trace m1 -v
from another terminal session for detailed view of S3 calls and request/response.Now use below sample go code to simulate parallel requests to bucket and you should be seeing few
Throttle quota exceeded. Applied RuleID: clsp1btb4dtl7p6ad190, Allowed Requests Count: 10, Current Requets Count: 59, API: PutObject
errors.For this there are sample 1MB files (count 500) under
./data
dirAlso in case if throttle quota breach MinIO would show errors as below
And MinIO trace should show details as below
Needs minio/minio#18595, minio/madmin-go#252 and minio/console#3160
Types of changes
Checklist:
commit-id
orPR #
here)