From e134383b2939bd4d55ac66b970564af1804e9c00 Mon Sep 17 00:00:00 2001 From: Paul Lorenz Date: Wed, 9 Sep 2026 18:16:47 -0400 Subject: [PATCH] Mark the api session enforcer delete meter on every delete attempt. Fixes #4378 - moves the delete meter mark out of the batch-delete error branch so successful batches are counted - counts only the fallback deletes that succeed when the batch delete fails - asserts the meter count in the session enforcer test --- controller/internal/policy/api_session_enforcer.go | 6 +++++- controller/internal/policy/session_enforcer_test.go | 1 + 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/controller/internal/policy/api_session_enforcer.go b/controller/internal/policy/api_session_enforcer.go index 918572753..150ec155a 100644 --- a/controller/internal/policy/api_session_enforcer.go +++ b/controller/internal/policy/api_session_enforcer.go @@ -108,16 +108,20 @@ func (s *ApiSessionEnforcer) Run() error { logrus.Debugf("found %v expired api-sessions to remove", len(ids)) ctx := change.New().SetSourceType("api-session.enforcer").SetChangeAuthorType(change.AuthorTypeController) + deleted := int64(len(ids)) if err = s.appEnv.GetManagers().ApiSession.DeleteBatch(ids, ctx); err != nil { logrus.WithError(err).Error("failure while batch deleting expired api sessions") + deleted = 0 for _, id := range ids { if err = s.appEnv.GetManagers().ApiSession.Delete(id, ctx); err != nil { logrus.WithError(err).Errorf("failure while deleting expired api session: %v", id) + } else { + deleted++ } } - s.deleteMeter.Mark(int64(len(ids))) } + s.deleteMeter.Mark(deleted) } return nil diff --git a/controller/internal/policy/session_enforcer_test.go b/controller/internal/policy/session_enforcer_test.go index 507e7ce2c..4bb0865fe 100644 --- a/controller/internal/policy/session_enforcer_test.go +++ b/controller/internal/policy/session_enforcer_test.go @@ -82,6 +82,7 @@ func (ctx *enforcerTestContext) testSessionsCleanup() { } ctx.NoError(enforcer.Run()) + ctx.Equal(int64(1), enforcer.deleteMeter.Count()) done, err := ctx.GetStores().EventualEventer.Trigger() ctx.NoError(err)