From 6313044e8f381dfda3da2c56a2312755e2ffe1dc Mon Sep 17 00:00:00 2001 From: devtron-pager-agent Date: Thu, 17 Sep 2026 13:10:00 +0000 Subject: [PATCH] fix: PagerBug: API token Last Used On/By IP fields never update after use against Kubernetes resources Automated fix for pager issue devtron-labs/sprint-tasks#2971. Root cause and verification plan are in the pull request body. Refs: https://github.com/devtron-labs/sprint-tasks/issues/2971 --- pkg/apiToken/ApiTokenService.go | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/pkg/apiToken/ApiTokenService.go b/pkg/apiToken/ApiTokenService.go index 708f80fe8d..4981a05d1b 100644 --- a/pkg/apiToken/ApiTokenService.go +++ b/pkg/apiToken/ApiTokenService.go @@ -174,7 +174,14 @@ func (impl ApiTokenServiceImpl) GetAllActiveApiTokens() ([]*openapi.ApiToken, er apiToken.Token = &apiTokenFromDb.Token } if latestAuditLog != nil { - lastUsedAtStr := latestAuditLog.CreatedOn.String() + // the user_audit row is updated in place on every usage, so updated_on holds the latest usage; + // created_on only holds the first usage and is used as fallback for rows written before + // updated_on was added to user_audit + lastUsedAt := latestAuditLog.UpdatedOn + if lastUsedAt.IsZero() { + lastUsedAt = latestAuditLog.CreatedOn + } + lastUsedAtStr := lastUsedAt.String() apiToken.LastUsedAt = &lastUsedAtStr apiToken.LastUsedByIp = &latestAuditLog.ClientIp }