{"record":{"id":"d14b15b5dd9bb7c0","repo":"XX-net/XX-Net","slug":"update-quota-loop-timeout-fail","errorCode":null,"errorMessage":"update_quota_loop timeout fail.","messagePattern":"update_quota_loop timeout fail\\.","errorType":"console","errorClass":null,"httpStatus":null,"severity":"warning","filePath":"code/default/x_tunnel/local/proxy_session.py","lineNumber":1400,"sourceCode":"\n    start_time = time.time()\n    last_quota = g.quota\n    while g.running and time.time() - start_time < 10 * 60:\n        if not g.config.login_account:\n            xlog.info(\"update_quota_loop but logout.\")\n            return\n\n        request_balance(\n            g.config.login_account, g.config.login_password,\n            is_register=False, update_server=False)\n\n        if g.quota - last_quota > 1024 * 1024 * 1024:\n            xlog.info(\"update_quota_loop quota updated\")\n            return\n\n        time.sleep(60)\n\n    xlog.warn(\"update_quota_loop timeout fail.\")\n","sourceCodeStart":1382,"sourceCodeEnd":1401,"githubUrl":"https://github.com/XX-net/XX-Net/blob/cfa5bc17b67676e467f37ec50766127e0ab5f0aa/code/default/x_tunnel/local/proxy_session.py#L1382-L1401","documentation":"Emitted when the background update_quota_loop in x_tunnel finishes its polling attempts without seeing quota increase by more than 1GB (the loop exits after its retry budget, sleeping 60s between checks, and logs this warning). It means the quota refresh after (re)login never converged.","triggerScenarios":"update_quota_loop runs after login and repeatedly calls the balance API; if every iteration fails or the quota delta stays under 1024*1024*1024 bytes until the loop's attempt limit is reached, this warning is logged. Typical when the balance API keeps failing or the account quota is genuinely static/exhausted.","commonSituations":"Server outages or blocked API endpoints right after login, accounts whose quota never changes (already exhausted or wrong account), or clock/rate-limit issues causing repeated API failures.","solutions":["Check earlier log lines for the underlying request_balance failure reason and address it (credentials, network).","Manually trigger a balance refresh or restart the client to relaunch update_quota_loop.","Verify the account actually has quota being granted (dashboard); if quota is exhausted, renew (see the 'no quota' warning).","If API endpoints changed, upgrade XX-Net to the latest version."],"exampleFix":null,"handlingStrategy":"retry","validationCode":null,"typeGuard":null,"tryCatchPattern":null,"preventionTips":["Treat this warning as a symptom: inspect preceding request_balance errors in the log.","Restart the client to relaunch update_quota_loop after fixing root cause.","Keep credentials and endpoints current; upgrade XX-Net when API changes ship."],"tags":["x-tunnel","quota","polling","timeout","background-task"],"backgroundTag":"quota-refresh-failed","analyzedSha":"cfa5bc17b67676e467f37ec50766127e0ab5f0aa","analyzedAt":"2026-08-27T19:28:28.225Z","schemaVersion":2},"datasetVersion":"2026-08-28T00:17:15.603Z"}