diff --git a/cmd/iam.go b/cmd/iam.go index 569c5b424..c809eb929 100644 --- a/cmd/iam.go +++ b/cmd/iam.go @@ -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: @@ -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() {