Gmail OAuth auto-reauth cron not running — westside email broken 2+ days #322
Labels
No labels
domain:backend
domain:devops
domain:frontend
status:approved
status:in-progress
status:needs-fix
status:qa
type:bug
type:devops
type:feature
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference
ldraney/pal-e-platform#322
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Type
Bug
Lineage
Standalone — discovered 2026-05-01 during alert-state audit. Related to
forgejo_admin/pal-e-platform #222(the PR that was supposed to ship this automation).Repo
forgejo_admin/pal-e-platformWhat Broke
Westside email delivery is broken because the Gmail OAuth token for
westsidebasketball@gmail.comis 52 days old (Google policy: tokens for unverified apps expire after 7 days). Two alerts firing:GmailOAuthTokenExpired(critical, namespace=basketball-api) since 2026-04-29 01:57 UTCGmailOAuthTokenExpiringSoon(warning, same namespace) since 2026-04-29 01:57 UTCThe auto-reauth automation that PR #222 was supposed to introduce does not exist in the cluster. Verified via:
Only
scripts/gmail-reauth.shexists — that's a manual operator script, not a CronJob.Repro Steps
kubectl get secret -n basketball-api gmail-oauth-token -o jsonpath='{.metadata.creationTimestamp}'→2026-03-10T04:48:21Zkubectl get cronjob -A | grep gmail→ no results/test-emailendpoint) → fails with 401/invalid_grant from GoogleExpected Behavior
GmailOAuthReauthCronFailed) so silent failure is detected the next time it recurs.GmailOAuthTokenExpiredclears within 24h of the cron's first successful run.Environment
basketball-api6fd588f9f8-jcknxgmail-oauth-token, created 2026-03-10GmailOAuthTokenExpired,GmailOAuthTokenExpiringSoonfeedback_gmail_oauth_testing_mode, root-cause permanent fix is to publish the Google app from Testing → Production modeAcceptance Criteria
GmailOAuthReauthCronFailedGmailOAuthTokenExpiredclearswestsidebasketball@gmail.comsucceedssop-gmail-oauthupdated with the cron's identity, schedule, and verification commandscripts/gmail-reauth.sh(still works as fallback)Related
pal-e-platform— projectforgejo_admin/pal-e-platform #222— PR that should have shipped thisalert-report-2026-05-01— alert snapshot identifying this as P1sop-gmail-oauth— runbook