fix(telemetry): release a removed driver's resilience tracker state so the publisher stops re-emitting it (#609)
Review R1 M1: StopChild evicted the hub cache, but DriverResilienceStatusPublisherService re-emits the tracker every tick. IDriverCapabilityInvokerFactory.Release (default no-op) now invalidates the pipeline builder + status tracker; the host calls it before Evict. Test runs a publisher tick after removal, with a neighbour instance as positive control. Claude-Session: https://claude.ai/code/session_01Ef2ozxS7QPanGT8uoATbTe
This commit is contained in:
@@ -255,6 +255,11 @@ driver node**:
|
||||
reconnect loses whatever transitions happened while disconnected, same as a DPS resubscribe would.
|
||||
The cache is evicted per instance (`ITelemetryLocalHub.Evict`) when `DriverHostActor.StopChild` removes a
|
||||
driver from the plan (#609), so a decommissioned instance's last state is not replayed to new subscribers.
|
||||
`StopChild` first releases the instance's resilience state (`IDriverCapabilityInvokerFactory.Release` →
|
||||
pipeline-builder + `DriverResilienceStatusTracker.Invalidate`): `DriverResilienceStatusPublisherService`
|
||||
re-emits the whole tracker every 5 s, so evicting only the hub was undone within one tick (review R1 M1).
|
||||
Residual: a Health emit already in flight from the stopping child can land after the eviction and
|
||||
re-cache that one snapshot — a narrow race, not a recurring replay.
|
||||
- **Connection indicator** — the `/alerts` and `/script-log` live/disconnected pill is driven by
|
||||
**aggregate** stream health across all dialers: connected when **at least one** node stream is
|
||||
up, disconnected when all are down. This matches today's DPS `SubscribeAck`/`PostStop` pill
|
||||
|
||||
Reference in New Issue
Block a user