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
Test throttle quota in effect
Set really small values for --concurrent-requests-count for few APIs (say PutObject and HeadObject) as below
mc 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 dir
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.jsonmc quota info m1/test-bucket
mc quota info m1/test-bucket --json
--concurrent-requests-count
for few APIs (sayPutObject
andHeadObject
) as belowmc quota set m1/test-bucket --concurrent-requests-count 10 --apis "PutObject,Get*,Head*,List*"
Runmc 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 fewThrottle 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 https://github.com/minio/minio/pull/18595, https://github.com/minio/madmin-go/pull/252 and https://github.com/minio/console/pull/3160
Types of changes
Checklist:
commit-id
orPR #
here)