fix(control-plane): refresh runner tokens immediately on startup#1207
Merged
markturansky merged 2 commits intoalphafrom Apr 4, 2026
Merged
fix(control-plane): refresh runner tokens immediately on startup#1207markturansky merged 2 commits intoalphafrom
markturansky merged 2 commits intoalphafrom
Conversation
refreshAllRunningTokens called ForProject(ctx, "") which the SDK rejects with "project is required". Sessions are project-scoped so the cross-project list requires iterating all projects first, then listing running sessions per project. 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <noreply@anthropic.com>
The token refresh ticker fires every 10 minutes. If the control-plane restarts during an active session, existing runner BOT_TOKENs can expire before the first ticker tick fires. Trigger an immediate refresh on startup so any in-flight sessions get fresh tokens right away. 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <noreply@anthropic.com>
Contributor
|
Caution Review failedPull request was closed or merged during review 📝 WalkthroughWalkthroughThe token refresh mechanism in the Kubernetes reconciler is enhanced to execute an immediate refresh upon startup and expanded to refresh tokens across all projects instead of a single project, with refined error handling for per-project failures. Changes
Sequence Diagram(s)sequenceDiagram
participant Reconciler
participant Ticker as Ticker/Scheduler
participant ProjectsAPI as Projects API
participant SessionsAPI as Sessions API
Reconciler->>Reconciler: StartTokenRefreshLoop()
activate Reconciler
Reconciler->>Reconciler: refreshAllRunningTokens(ctx) - Immediate
activate Reconciler
Reconciler->>ProjectsAPI: List all projects (paginated)
activate ProjectsAPI
ProjectsAPI-->>Reconciler: Projects batch
deactivate ProjectsAPI
loop For each project
Reconciler->>Reconciler: Create SDK client
Reconciler->>SessionsAPI: List running sessions (paginated)
activate SessionsAPI
SessionsAPI-->>Reconciler: Sessions batch
deactivate SessionsAPI
Reconciler->>Reconciler: Process/refresh tokens
end
deactivate Reconciler
Reconciler->>Ticker: Start periodic ticker
activate Ticker
loop On each tick
Ticker->>Reconciler: Trigger refresh
Reconciler->>Reconciler: refreshAllRunningTokens(ctx)
note over Reconciler: Same project iteration logic
end
deactivate Ticker
deactivate Reconciler
🚥 Pre-merge checks | ✅ 6✅ Passed checks (6 passed)
✏️ Tip: You can configure your own custom pre-merge checks in the settings. ✨ Finishing Touches📝 Generate docstrings
🧪 Generate unit tests (beta)
✨ Simplify code
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
refreshAllRunningTokensonce immediately on goroutine start before entering the ticker loopTest plan
🤖 Generated with Claude Code
Summary by CodeRabbit