XX-net/XX-Net · error · NoRescourceException
no appid
Error message
no appid
What it means
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.
Source
Thrown at code/default/gae_proxy/local/host_manager.py:24
class HostManager(HostManagerBase):
def __init__(self, config, logger):
self.config = config
self.logger = logger
self.appid_manager = None
self.sni_manager = SniManager(logger)
def get_host(self):
if not self.appid_manager:
return ""
appid = self.appid_manager.get()
if not appid:
self.logger.warn("no appid")
time.sleep(10)
raise NoRescourceException("no appid")
return appid + ".appspot.com"
def get_sni_host(self, ip):
sni = self.sni_manager.get()
host = self.get_host()
return sni, host
View on GitHub (pinned to cfa5bc17b6)
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
Defensive patterns
Strategy: validation
Validate before calling
from gae_proxy.local import appid_manager
if not appid_manager.appids:
raise RuntimeError('No appid configured; set one before requesting GAE hosts') Try / catch
try:
host = host_manager.get_host()
except NoRescourceException:
time.sleep(10) # mirror internal backoff, then re-check config
if not appid_manager.appids:
raise
host = host_manager.get_host() Prevention
- 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
When it happens
Trigger: 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).
Common situations: Fresh install with no appids configured, all configured appids removed by Google or exhausted quota, shared public appids all dead.
Related errors
- all appid out of quota, wait %d seconds to reset
- report_out_of_quota:%s
- process_appid_not_exist, remove ip:%s
- APPID_manager, set_appid_not_exist %s
- time out
AI-assisted analysis of XX-net/XX-Net@cfa5bc17b6 (2026-08-27).
Data as JSON: /api/errors/bb04324f4e513202.
Report an issue: GitHub.