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

  1. Confirm the start configuration includes a 'RouterManager' fiber in the same process as the robot manager.
  2. Verify the fiber name string matches start config exactly (case, spelling).
  3. If RouterManager lives in another process, fetch its address via service discovery instead of GetFiber.
  4. 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

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


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