egametang/ET · critical · Exception

RouterManagerAddressComponent is missing on RouterManager sc

Error message

RouterManagerAddressComponent is missing on RouterManager scene.

What it means

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.

Source

Thrown at Packages/cn.etetet.robot/Scripts/Hotfix/Server/RobotManagerComponentSystem.cs:69

            robotLoginRequest.Address = routerManagerAddress;
            await processInnerSender.Call(new FiberInstanceId(robot, 1), robotLoginRequest);
            self = selfRef;
            self.robots.Add(account, robot);
            return robot;
        }

        private static string GetRouterManagerAddress(this RobotManagerComponent self)
        {
            Fiber routerManagerFiber = self.Fiber().GetFiber("RouterManager");
            if (routerManagerFiber == null)
            {
                throw new Exception($"RouterManager fiber not found under fiber: {self.Fiber().Name}");
            }

            string address = routerManagerFiber.Root.GetComponent<RouterManagerAddressComponent>()?.Address;
            if (string.IsNullOrWhiteSpace(address))
            {
                throw new Exception("RouterManagerAddressComponent is missing on RouterManager scene.");
            }

            return address;
        }
    }
}

View on GitHub (pinned to 5cab01f7a8)

Solutions

  1. Check the RouterManager fiber's logs for an AddHttpComponent failure (error 319) — that prevents Address assignment.
  2. Ensure AddressSingleton.OuterIP is populated before RouterManager initializes.
  3. Delay robot spawning until RouterManagerAddressComponent.Address is non-empty (add a readiness check).
  4. Verify FiberInit_RouterManager is registered for the RouterManager scene type.
Defensive patterns

Strategy: validation

Validate before calling

// Readiness check before spawning robots
var rm = self.Fiber().GetFiber("RouterManager");
var addr = rm?.Root.GetComponent<RouterManagerAddressComponent>()?.Address;
if (string.IsNullOrWhiteSpace(addr)) {
    Log.Error("RouterManagerAddressComponent.Address not ready; delaying robot spawn");
    return;
}

Prevention

When it happens

Trigger: 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.

Common situations: 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.

Related errors


AI-assisted analysis of egametang/ET@5cab01f7a8 (2026-08-13). Data as JSON: /api/errors/1e38d0bc86a010f3. Report an issue: GitHub.