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
- 确认该 zone 的 StartSceneConfig 为 ServiceDiscovery 场景配置了数据库连接
- 确认 DBManagerComponent 已在 FiberInit 中创建
- 检查 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.