chore: Minor rbac memory optimization (#7391)

* test: Add benchmark for static rbac roles
* static roles should only be allocated once
* A unit test that modifies the ast value should not mess with the globals
* Cache subject AST values to avoid reallocating slices
This commit is contained in:
Steven Masley
2023-05-03 14:42:24 -05:00
committed by GitHub
parent 2e9310b203
commit 3368b8b65f
8 changed files with 177 additions and 68 deletions

View File

@ -49,6 +49,20 @@ type Subject struct {
Roles ExpandableRoles
Groups []string
Scope ExpandableScope
// cachedASTValue is the cached ast value for this subject.
cachedASTValue ast.Value
}
// WithCachedASTValue can be called if the subject is static. This will compute
// the ast value once and cache it for future calls.
func (s Subject) WithCachedASTValue() Subject {
tmp := s
v, err := tmp.regoValue()
if err == nil {
tmp.cachedASTValue = v
}
return tmp
}
func (s Subject) Equal(b Subject) bool {