egametang/ET · error

service discovery db manager not found scene: {root.Name}

Error message

service discovery db manager not found scene: {root.Name}

What it means

Error "service discovery db manager not found scene: {root.Name}" thrown in egametang/ET.

Source

Thrown at Packages/cn.etetet.servicediscovery/Scripts/Hotfix/Server/ServiceDiscoverySystem.cs:1021

                self = selfRef;
                if (self == null)
                {
                    return;
                }
                await self.UpsertServiceAsync(sceneName, actorId, metadata, true, now);
            }

            self = selfRef;
            self.SetTrackedOwnedScenes(agentActorId.Address, incomingServices.Keys);
        }

        private static DBComponent GetPersistenceDB(this ServiceDiscovery self)
        {
            Scene root = self.Root();
            DBManagerComponent dbManagerComponent = root.GetComponent<DBManagerComponent>();
            if (dbManagerComponent == null)
            {
                throw new Exception($"service discovery db manager not found scene: {root.Name}");
            }

            return dbManagerComponent.GetZoneDB(root.Fiber.Zone);
        }

        private static bool IsMongoDisabled(this ServiceDiscovery self)
        {
            return self.GetServiceDiscoveryBootstrap() != null;
        }

        private static ServiceDiscoveryBootstrapSingleton GetServiceDiscoveryBootstrap(this ServiceDiscovery self)
        {
            return self.Fiber().GetSingleton<ServiceDiscoveryBootstrapSingleton>();
        }

        private static async ETTask<ServiceInfo> UpsertServiceAsync(this ServiceDiscovery self, string sceneName, ActorId actorId,
            StringKV metadata, bool notify, long now = 0)
        {

View on GitHub (pinned to 5cab01f7a8)

Solutions

  1. 确认该 zone 的 StartSceneConfig 为 ServiceDiscovery 场景配置了数据库连接
  2. 确认 DBManagerComponent 已在 FiberInit 中创建
  3. 检查 zone 配置中 mongo connect string 与 db name 是否完整

Example fix

在 FiberInit 中先 root.AddComponent<DBManagerComponent>(zone) 再执行数据库访问逻辑。

When it happens

Trigger: ServiceDiscovery 场景上未找到 DBManagerComponent,通常是该场景未配置数据库或 DBManager 未初始化

Common situations: See trigger scenarios.


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