egametang/ET · warning · RpcException
service discovery incremental unregister failed scene: {scen
Error message
service discovery incremental unregister failed scene: {sceneName}, error: {error}, message: {message} What it means
RpcException thrown at line 969 in TrySyncUnregisterSceneAsync: the master returned a ServiceUnregisterResponse with Error != ERR_Success for an incremental scene unregistration. Like 334 it is caught, logged as a warning, and handled via HandleIncrementalSyncFailure. The scene remains dirty and the unregister will be retried or escalated to a full re-register.
Source
Thrown at Packages/cn.etetet.servicediscovery/Scripts/Hotfix/Server/ServiceDiscoveryAgentSystem.cs:969
if (self == null)
{
(rawResponse as MessageObject)?.Dispose();
return false;
}
if (rawResponse is not ServiceUnregisterResponse response)
{
(rawResponse as MessageObject)?.Dispose();
throw new Exception(
$"service discovery incremental unregister 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 unregister 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 unregister failed agent: {self.Root().Name} scene: {sceneName} target: {targetActorId} error: {e.Message}");
self.HandleIncrementalSyncFailure(e, $"incremental-unregister:{sceneName}");
}
return false;View on GitHub (pinned to 5cab01f7a8)
Solutions
- Inspect the RpcException error code to pinpoint the rejection reason.
- Ensure master/DB health so the retry of the unregister succeeds.
- For 'scene not found' type errors, a subsequent full re-register reconciles state — verify it completes.
Defensive patterns
Strategy: try-catch
Validate before calling
if (string.IsNullOrEmpty(sceneName) || version <= 0)
{
return; // skip invalid incremental unregister
} Try / catch
// Handled internally; warning logged, HandleIncrementalSyncFailure retries/escalates. // Monitor warning logs for persistent incremental-unregister failures.
Prevention
- Keep the master and DB healthy.
- Ensure unregister is retried/reconciled via full re-register.
- Watch for races where the scene is already removed on the master.
When it happens
Trigger: Incremental unregister reached the master but was rejected: follower rejection, persistence failure, internal failure, or the scene was not found on the master. Caught and retried.
Common situations: Master flipped to follower during unregister; DB delete failed; the scene was already removed on the master (race) and the master returned an error; transient master error.
Related errors
- service discovery incremental register failed scene: {sceneN
- 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/8c1988e9e3439688.
Report an issue: GitHub.