egametang/ET · warning · RpcException
service discovery incremental register failed scene: {sceneN
Error message
service discovery incremental register failed scene: {sceneName}, error: {error}, message: {message} What it means
RpcException thrown at line 901 in TrySyncRegisterSceneAsync: the master returned a ServiceRegisterResponse with Error != ERR_Success for an incremental scene registration. The error code/message are wrapped in RpcException, caught by the surrounding try, logged as a warning, and routed through HandleIncrementalSyncFailure (which may invalidate the endpoint and trigger a full re-register).
Source
Thrown at Packages/cn.etetet.servicediscovery/Scripts/Hotfix/Server/ServiceDiscoveryAgentSystem.cs:901
if (self == null)
{
(rawResponse as MessageObject)?.Dispose();
return false;
}
if (rawResponse is not ServiceRegisterResponse response)
{
(rawResponse as MessageObject)?.Dispose();
throw new Exception(
$"service discovery incremental register response mismatch scene: {sceneName}, actual: {rawResponse?.GetType().Name}");
}
if (response.Error != ErrorCode.ERR_Success)
{
int error = response.Error;
string message = response.Message;
response.Dispose();
throw new RpcException(error,
$"service discovery incremental register failed scene: {sceneName}, error: {error}, message: {message}");
}
response.Dispose();
self.MarkPublishedSceneSynced(sceneName, version);
return true;
}
catch (Exception e)
{
self = selfRef;
if (self != null)
{
Log.Warning(
$"ServiceDiscoveryAgent incremental register failed agent: {self.Root().Name} scene: {sceneName} target: {targetActorId} error: {e.Message}");
self.HandleIncrementalSyncFailure(e, $"incremental-register:{sceneName}");
}
return false;View on GitHub (pinned to 5cab01f7a8)
Solutions
- Inspect the RpcException error code: follower rejection -> wait for re-resolve; persistence -> check DB; invalid argument -> fix the scene metadata.
- The incremental sync will retry/escalate to full register automatically; ensure the underlying cause (master/DB) is healthy so the next attempt succeeds.
- Verify the scene's ActorId and metadata are valid before queueing incremental register.
Defensive patterns
Strategy: try-catch
Validate before calling
// Validate scene metadata/actorId before queueing incremental register.
if (actorId == default || string.IsNullOrEmpty(sceneName))
{
return; // skip invalid incremental register
} Try / catch
// Handled internally; the catch logs a warning and calls HandleIncrementalSyncFailure, // which invalidates the endpoint or marks full-register-needed. // Monitor warning logs for persistent incremental-register failures.
Prevention
- Keep the master and DB healthy so incremental register succeeds on retry.
- Validate scene metadata before queueing.
- Watch for follower-rejection storms indicating master churn.
When it happens
Trigger: Incremental register of a scene reached the master but was rejected: invalid arguments, persistence (DB) failure, follower rejection, or internal failure. The scene stays dirty and will be retried/re-registered.
Common situations: Master is a follower at that moment (ERR_ServiceDiscoveryFollowerRejected); DB write failed (ERR_ServiceDiscoveryPersistenceFailed); the scene metadata/actorId failed validation; transient master internal error.
Related errors
- service discovery incremental unregister failed scene: {scen
- service discovery response error, request: {requestName}, er
- service discovery request retry exhausted, request: {request
- service discovery agent response error, request: {requestNam
- ERR_ServiceDiscoveryMasterUnavailable
AI-assisted analysis of egametang/ET@5cab01f7a8 (2026-08-13).
Data as JSON: /api/errors/a3769d26a937f484.
Report an issue: GitHub.