Fix races in IAM cache lazy loading #19346
Merged
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.
Description
Fixes #19344
On the top level we only grab a read lock, but we write to the cache if we manage to fetch it.
minio/cmd/iam-store.go
Line 446 in a03dac4
Change the internal cache structure to a concurrency safe implementation.
Bonus: Also switch grid map implementation. This appears ~10% faster for roundtrips.
I have NOT changed any of the existing locking. While it is very likely that they can be relaxed in some cases I cannot tell where it will be safe, so I will leave that to someone with deeper knowledge of this.
How to test this PR?
Set up IAM and hammer it.
Types of changes
Checklist: