mirror of
https://github.com/diegosouzapw/OmniRoute.git
synced 2026-07-26 09:52:11 +03:00
Background token health check sweep was probing connections with terminal statuses (credits_exhausted / banned / expired) on every cycle, wasting CPU and network. These connections can never self-heal via token refresh — they need manual re-auth or credit top-up. Add a terminal status guard in checkConnection() that mirrors the existing isTerminalConnectionStatus() in auth.ts and TERMINAL_CONNECTION_STATUSES in connectionRecovery.ts. Verified by reporter: after manually disabling 11 credits_exhausted connections, CPU dropped from ~53% to ~2.7%. This fix automates that skip so the sweep never touches terminal connections in the first place. Co-authored-by: Austin Liu <austinliu@Austins-MacBook-Air-3.local>
This commit is contained in:
@@ -399,6 +399,17 @@ export async function checkConnection(conn) {
|
||||
const intervalMin = conn.healthCheckInterval ?? DEFAULT_HEALTH_CHECK_INTERVAL_MIN;
|
||||
if (intervalMin <= 0) return;
|
||||
if (!conn.isActive) return;
|
||||
|
||||
// #8182: skip terminal connections (credits_exhausted / banned / expired).
|
||||
// These can never self-heal via a token refresh — probing them wastes
|
||||
// CPU and network on every sweep cycle. Mirrors isTerminalConnectionStatus
|
||||
// in src/sse/services/auth.ts and TERMINAL_CONNECTION_STATUSES in
|
||||
// src/lib/quota/connectionRecovery.ts.
|
||||
const terminalStatuses = new Set(["credits_exhausted", "banned", "expired"]);
|
||||
if (typeof conn.testStatus === "string" && terminalStatuses.has(conn.testStatus.toLowerCase())) {
|
||||
return;
|
||||
}
|
||||
|
||||
if (!conn.refreshToken || typeof conn.refreshToken !== "string") {
|
||||
if (isGitHubAccessTokenOnlyConnection(conn)) {
|
||||
const now = new Date().toISOString();
|
||||
|
||||
Reference in New Issue
Block a user