{"record":{"id":"1e38d0bc86a010f3","repo":"egametang/ET","slug":"routermanageraddresscomponent-is-missing-on-router","errorCode":null,"errorMessage":"RouterManagerAddressComponent is missing on RouterManager scene.","messagePattern":"RouterManagerAddressComponent is missing on RouterManager scene\\.","errorType":"exception","errorClass":"Exception","httpStatus":null,"severity":"critical","filePath":"Packages/cn.etetet.robot/Scripts/Hotfix/Server/RobotManagerComponentSystem.cs","lineNumber":69,"sourceCode":"            robotLoginRequest.Address = routerManagerAddress;\n            await processInnerSender.Call(new FiberInstanceId(robot, 1), robotLoginRequest);\n            self = selfRef;\n            self.robots.Add(account, robot);\n            return robot;\n        }\n\n        private static string GetRouterManagerAddress(this RobotManagerComponent self)\n        {\n            Fiber routerManagerFiber = self.Fiber().GetFiber(\"RouterManager\");\n            if (routerManagerFiber == null)\n            {\n                throw new Exception($\"RouterManager fiber not found under fiber: {self.Fiber().Name}\");\n            }\n\n            string address = routerManagerFiber.Root.GetComponent<RouterManagerAddressComponent>()?.Address;\n            if (string.IsNullOrWhiteSpace(address))\n            {\n                throw new Exception(\"RouterManagerAddressComponent is missing on RouterManager scene.\");\n            }\n\n            return address;\n        }\n    }\n}\n","sourceCodeStart":51,"sourceCodeEnd":76,"githubUrl":"https://github.com/egametang/ET/blob/5cab01f7a8bee5f49f4781eebe9e2b1c6d7ebe0f/Packages/cn.etetet.robot/Scripts/Hotfix/Server/RobotManagerComponentSystem.cs#L51-L76","documentation":"After finding the RouterManager fiber, GetRouterManagerAddress reads RouterManagerAddressComponent.Address and throws if it is null or whitespace. The component exists but never had its address populated, so robots can't resolve the router endpoint.","triggerScenarios":"GetRouterManagerAddress finds the RouterManager fiber but routerManagerFiber.Root.GetComponent<RouterManagerAddressComponent>()?.Address is null/empty. This means FiberInit_RouterManager either didn't run or failed before setting Address.","commonSituations":"RouterManager fiber initialized but FiberInit_RouterManager.AddHttpComponent threw (see error 319) before Address was assigned; RouterManagerAddressComponent was removed/never added; AddressSingleton.OuterIP not yet resolved when the fiber initialized; race where robots query before the RouterManager finished binding its HTTP port.","solutions":["Check the RouterManager fiber's logs for an AddHttpComponent failure (error 319) — that prevents Address assignment.","Ensure AddressSingleton.OuterIP is populated before RouterManager initializes.","Delay robot spawning until RouterManagerAddressComponent.Address is non-empty (add a readiness check).","Verify FiberInit_RouterManager is registered for the RouterManager scene type."],"exampleFix":null,"handlingStrategy":"validation","validationCode":"// Readiness check before spawning robots\nvar rm = self.Fiber().GetFiber(\"RouterManager\");\nvar addr = rm?.Root.GetComponent<RouterManagerAddressComponent>()?.Address;\nif (string.IsNullOrWhiteSpace(addr)) {\n    Log.Error(\"RouterManagerAddressComponent.Address not ready; delaying robot spawn\");\n    return;\n}","typeGuard":null,"tryCatchPattern":null,"preventionTips":["Gate robot spawning on RouterManagerAddressComponent.Address being non-empty.","Investigate FiberInit_RouterManager logs if Address never populates (likely error 319).","Add a readiness timer/check rather than throwing on first attempt."],"tags":["robot","router","configuration","initialization","missing-address"],"backgroundTag":null,"analyzedSha":"5cab01f7a8bee5f49f4781eebe9e2b1c6d7ebe0f","analyzedAt":"2026-08-13T21:10:40.377Z","schemaVersion":2},"datasetVersion":"2026-08-14T00:17:13.853Z"}