Skip to content

Commit

Permalink
run IAM purge routines deterministically every hr (minio#20587)
Browse files Browse the repository at this point in the history
Existing implementation runs IAM purge routines for expired LDAP and
OIDC accounts with a probability of 0.25 after every IAM refresh. This
change ensures that they are run once in each hour.
  • Loading branch information
donatello authored Oct 29, 2024
1 parent f85c28e commit c4239ce
Showing 1 changed file with 4 additions and 3 deletions.
7 changes: 4 additions & 3 deletions cmd/iam.go
Original file line number Diff line number Diff line change
Expand Up @@ -406,6 +406,7 @@ func (sys *IAMSys) periodicRoutines(ctx context.Context, baseInterval time.Durat
timer := time.NewTimer(waitInterval())
defer timer.Stop()

lastPurgeHour := -1
for {
select {
case <-timer.C:
Expand All @@ -421,9 +422,9 @@ func (sys *IAMSys) periodicRoutines(ctx context.Context, baseInterval time.Durat
}
}

// The following actions are performed about once in 4 times that
// IAM is refreshed:
if r.Intn(4) == 0 {
// Run purge routines once in each hour.
if refreshStart.Hour() != lastPurgeHour {
lastPurgeHour = refreshStart.Hour()
// Poll and remove accounts for those users who were removed
// from LDAP/OpenID.
if sys.LDAPConfig.Enabled() {
Expand Down

0 comments on commit c4239ce

Please sign in to comment.