fix(siteruntime): M2.11 — unknown-instance debug snapshot returns InstanceNotFound=true (#24)
RouteDebugSnapshot and RouteDebugViewSubscribe on DeploymentManagerActor
previously returned an empty DebugViewSnapshot for unknown instances,
indistinguishable from a deployed-but-empty instance. Callers had no way
to differentiate "not deployed here" from "deployed, no data yet."
Approach — additive field on existing message contract:
Added `bool InstanceNotFound = false` as an optional trailing parameter
to DebugViewSnapshot (Commons). All existing positional constructor calls
and serialized wire frames are unaffected (default = false). A dedicated
new message type was considered but rejected: the ClusterClient channel
and DebugStreamService TCS are already typed on DebugViewSnapshot, and a
second reply union would require wider changes for zero additive-safety
gain.
Changes:
- Commons/DebugViewSnapshot: add InstanceNotFound = false (additive)
- DeploymentManagerActor: set InstanceNotFound=true in both unknown-
instance branches (RouteDebugViewSubscribe, RouteDebugSnapshot)
- DebugStreamBridgeActor: when snapshot.InstanceNotFound, forward it to
_onEvent (resolves the TCS) then stop cleanly; no gRPC stream opened
- DebugView.razor: check session.InitialSnapshot.InstanceNotFound after
connect and show a clear "not deployed on this site" error toast
- 3 new tests in DeploymentManagerActorTests covering: unknown→snapshot,
unknown→subscribe, known-empty→InstanceNotFound stays false
This commit is contained in:
@@ -445,6 +445,18 @@
|
||||
});
|
||||
});
|
||||
|
||||
// M2.11: the site returns InstanceNotFound=true when the instance is
|
||||
// not deployed there (e.g. deployment not yet pushed, or wrong site).
|
||||
if (session.InitialSnapshot.InstanceNotFound)
|
||||
{
|
||||
DebugStreamService.StopStream(session.SessionId);
|
||||
_toast.ShowError(
|
||||
$"Instance is not deployed on that site. " +
|
||||
$"Deploy it first or choose the correct site.");
|
||||
_connecting = false;
|
||||
return;
|
||||
}
|
||||
|
||||
_session = session;
|
||||
|
||||
// Populate initial state from snapshot
|
||||
|
||||
Reference in New Issue
Block a user