{"record":{"id":"bb04324f4e513202","repo":"XX-net/XX-Net","slug":"no-appid","errorCode":null,"errorMessage":"no appid","messagePattern":"no appid","errorType":"exception","errorClass":"NoRescourceException","httpStatus":null,"severity":"error","filePath":"code/default/gae_proxy/local/host_manager.py","lineNumber":24,"sourceCode":"\n\nclass HostManager(HostManagerBase):\n    def __init__(self, config, logger):\n        self.config = config\n        self.logger = logger\n        self.appid_manager = None\n\n        self.sni_manager = SniManager(logger)\n\n    def get_host(self):\n        if not self.appid_manager:\n            return \"\"\n\n        appid = self.appid_manager.get()\n        if not appid:\n            self.logger.warn(\"no appid\")\n            time.sleep(10)\n            raise NoRescourceException(\"no appid\")\n\n        return appid + \".appspot.com\"\n\n    def get_sni_host(self, ip):\n        sni = self.sni_manager.get()\n        host = self.get_host()\n\n        return sni, host\n\n","sourceCodeStart":6,"sourceCodeEnd":34,"githubUrl":"https://github.com/XX-net/XX-Net/blob/cfa5bc17b67676e467f37ec50766127e0ab5f0aa/code/default/gae_proxy/local/host_manager.py#L6-L34","documentation":"NoRescourceException raised by get_host when the appid manager returns no appid. The host manager needs an appid to build '<appid>.appspot.com'; with none available it logs 'no appid', sleeps 10s to avoid hot-looping, then throws. get_sni_host and any GAE request needing a hostname will propagate it.","triggerScenarios":"Calling get_host/get_sni_host when the appid list is empty or all appids have been benched (reported not-exist or out-of-quota via report_not_exist/report_out_of_quota).","commonSituations":"Fresh install with no appids configured, all configured appids removed by Google or exhausted quota, shared public appids all dead.","solutions":["Configure at least one valid appid (deploy your own GAE app) in the settings","Restore benched appids by restarting XX-Net after fixing quota/existence issues","Deploy multiple appids for redundancy","Verify appids in the Google console and redeploy deleted ones"],"exampleFix":null,"handlingStrategy":"validation","validationCode":"from gae_proxy.local import appid_manager\nif not appid_manager.appids:\n    raise RuntimeError('No appid configured; set one before requesting GAE hosts')","typeGuard":null,"tryCatchPattern":"try:\n    host = host_manager.get_host()\nexcept NoRescourceException:\n    time.sleep(10)  # mirror internal backoff, then re-check config\n    if not appid_manager.appids:\n        raise\n    host = host_manager.get_host()","preventionTips":["Validate appid configuration at startup, not on first request","Deploy 2+ own appids so single-appid quota/404 doesn't empty the pool","Restart the service after fixing appids to reset benched entries"],"tags":["gae-proxy","appid","configuration","no-resource"],"backgroundTag":"missing-required-resource","analyzedSha":"cfa5bc17b67676e467f37ec50766127e0ab5f0aa","analyzedAt":"2026-08-27T19:28:28.225Z","schemaVersion":2},"datasetVersion":"2026-08-28T00:17:15.603Z"}