{"record":{"id":"b1b99d9d5214f542","repo":"XX-net/XX-Net","slug":"appid-manager-set-appid-not-exist-s","errorCode":null,"errorMessage":"APPID_manager, set_appid_not_exist %s","messagePattern":"APPID_manager, set_appid_not_exist (.+?)","errorType":"console","errorClass":null,"httpStatus":null,"severity":"warning","filePath":"code/default/gae_proxy/local/appid_manager.py","lineNumber":91,"sourceCode":"            except:\n                pass\n\n    def report_not_exist(self, appid, ip):\n        self.logger.debug(\"report_not_exist:%s %s\", appid, ip)\n        th = threading.Thread(target=self.process_appid_not_exist, args=(appid, ip), name=\"process_appid_not_exist\")\n        th.start()\n\n    def process_appid_not_exist(self, appid, ip):\n        ret = self.check_api(ip, \"xxnet-1\")\n        if ret and ret.ok:\n            self.set_appid_not_exist(appid)\n        else:\n            self.logger.warn(\"process_appid_not_exist, remove ip:%s\", ip)\n\n            self.ip_manager.report_connect_fail(ip, force_remove=True)\n\n    def set_appid_not_exist(self, appid):\n        self.logger.warn(\"APPID_manager, set_appid_not_exist %s\", appid)\n        with self.lock:\n            if appid not in self.not_exist_appids:\n                self.not_exist_appids.append(appid)\n            try:\n                self.config.GAE_APPIDS.remove(appid)\n            except:\n                pass\n\n            try:\n                self.working_appid_list.remove(appid)\n            except:\n                pass\n\n    def appid_exist(self, appids):\n        for appid in appids.split('|'):\n            if appid == \"\":\n                continue\n            if appid in self.config.GAE_APPIDS:","sourceCodeStart":73,"sourceCodeEnd":109,"githubUrl":"https://github.com/XX-net/XX-Net/blob/cfa5bc17b67676e467f37ec50766127e0ab5f0aa/code/default/gae_proxy/local/appid_manager.py#L73-L109","documentation":"An appid was confirmed not to exist server-side (check_api succeeded and returned ok). It is logged, added to not_exist_appids, and removed from config GAE_APPIDS so it is never used again.","triggerScenarios":"process_appid_not_exist verified via a live IP that the appid is invalid — deleted GAE app, typo in appid, or appid not deployed with the GoAgent backend.","commonSituations":"Appid typo in config, GAE app deleted or suspended, appid never had the XX-Net backend deployed.","solutions":["Fix typos in the GAE_APPIDS config list","Redeploy the GoAgent/XX-Net backend to the appid via the deployment page","Remove deleted/suspended appids from config","Verify each appid serves the backend (curl the appspot URL)"],"exampleFix":null,"handlingStrategy":"validation","validationCode":"import urllib.request\nok = urllib.request.urlopen('https://<appid>.appspot.com').status == 200","typeGuard":null,"tryCatchPattern":null,"preventionTips":["Validate appid names and deployment before adding to config","Remove deleted GAE apps from GAE_APPIDS promptly","Keep the backend deployment script available to redeploy"],"tags":["gae-proxy","appid","config"],"backgroundTag":"app-not-found","analyzedSha":"cfa5bc17b67676e467f37ec50766127e0ab5f0aa","analyzedAt":"2026-08-27T19:28:28.225Z","schemaVersion":2},"datasetVersion":"2026-08-28T00:17:15.603Z"}