egametang/ET · critical · Exception
RouterManager fiber not found under fiber: {self.Fiber().Nam
Error message
RouterManager fiber not found under fiber: {self.Fiber().Name} What it means
RobotManagerComponentSystem.GetRouterManagerAddress looks up the 'RouterManager' fiber via self.Fiber().GetFiber('RouterManager') and throws if it returns null. Robots need the RouterManager's address to construct login requests URLs, so its absence is fatal for robot spawn.
Source
Thrown at Packages/cn.etetet.robot/Scripts/Hotfix/Server/RobotManagerComponentSystem.cs:63
long robot = await self.Fiber().CreateFiber(schedulerType, IdGenerater.Instance.GenerateId(), SceneType.Client, account);
self = selfRef;
ProcessInnerSender processInnerSender = self.Root().GetComponent<ProcessInnerSender>();
Robot_LoginRequest robotLoginRequest = Robot_LoginRequest.Create();
robotLoginRequest.Account = account;
robotLoginRequest.Password = "";
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
- Confirm the start configuration includes a 'RouterManager' fiber in the same process as the robot manager.
- Verify the fiber name string matches start config exactly (case, spelling).
- If RouterManager lives in another process, fetch its address via service discovery instead of GetFiber.
- Gate NewRobot on RouterManager presence and log a clear error rather than throwing mid-spawn.
Defensive patterns
Strategy: validation
Validate before calling
// Before spawning robots, confirm RouterManager is co-located
Fiber routerFiber = self.Fiber().GetFiber("RouterManager");
if (routerFiber == null) {
Log.Error("RouterManager fiber not present in this process; cannot spawn robots");
return;
} Prevention
- Ensure start config co-locates RouterManager with the robot manager process.
- Validate fiber topology at startup, not at first robot spawn.
- If RouterManager is remote, resolve via service discovery rather than GetFiber.
When it happens
Trigger: GetRouterManagerAddress is called (during NewRobot/login flow) when no fiber named 'RouterManager' exists under the current fiber's process. GetFiber returns null and the exception is thrown.
Common situations: Running the robot process without a co-located RouterManager scene (start config doesn't include a RouterManager fiber); wrong process topology for the test; RouterManager named differently in start config; calling robot spawn from a process that legitimately shouldn't host RouterManager.
Related errors
- RouterManagerAddressComponent is missing on RouterManager sc
- ERR_LocationPrimaryUnavailable
- location proxy message sender is null: {self.Root().Name}
- fiber local slot exhausted, zone: {zone}, nextLocalSlot: {lo
- process fiber address not found, sceneType: {sceneType}
AI-assisted analysis of egametang/ET@5cab01f7a8 (2026-08-13).
Data as JSON: /api/errors/3ec578ab199b3dd9.
Report an issue: GitHub.