Auth: Fine-grained permission request cache #14513
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.
I was playing with some ideas to get some quick wins for performance in the fine-grained authorization driver.
The OpenFGADatastore receives very specific queries such as:
instance:/1.0/instances/c1?project=default
ascan_view
?instance
are members of groupfoo
related to ascan_view
?Each of these queries are executed case-by-case. This always hits the database, even if there are no permissions at all for entities of type
instance
.This PR implements pre-loading of the
auth_groups_permissions
table to reduce the total number of database calls. Qualitatively, I've seen this reduce the total number of database calls when listing projects with recursion from 85 to 10.@gabrielmougard it might be worth comparing this with your work in #14476. We can test performance and try to make further optimisations so that loading the additional entitlements is low-cost.