You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Flake: ActivityLiveProgressTest.EveryProgressLine_LandsWhileTheCommandIsStillRunning — the activity node's owner ends its streams ~5 s in, the next progress write gets no verdict (OwnerUnreachable after 31 s) #2776
Mechanics, from the test's own output (activity GhLive22d6da4e6/_Activity/b55c9a35, cache hub cache/6D99IQwI1U23HtKNOUtrNw)
t
what
13:28:27.815
TEST START
13:28:32.936
[DataExtensions] Dropping StreamEndedEvent for stream uZzjE4MWi0KBrSXTSLNN9g … no synchronization hub found on this hub or any parent — the target stream is gone (sender: the activity node)
13:28:32.940
[MeshNodeStreamCache] [UpdateQueue] ADVANCE_WITHOUT_HANDOFF path=…/_Activity/b55c9a35 seq=3 bound=5000ms — the owner never acknowledged this write inside the bound
13:28:32.946
a second Dropping StreamEndedEvent (stream dPb18nIfvUCsJEhA8RgoLQ), same sender
13:28:58.951
[MeshNodeStreamHandle] [UpdateRemote] VERDICT_TIMEOUT … bound=31s — the owner produced no terminal for this patch → MeshNodeStreamException: MeshNode OwnerUnreachable
13:28:58.952
[ActivityRunner] Activity … failed → status Failed → the assertion
So: the activity's per-node hub ENDED its two sync streams ~5 s after the run started — while the activity was still running and its second progress line (seq=3, "step two") was queued — and every later write to it timed out. The request trail is REGISTERED_AFTER_POST (Observe(delivery) overload), i.e. the caller registered after posting, so the trail cannot say where the patch went; the cache's own comment names that overload as the one to switch away from (Observe(request, options)) to get a full trail.
Open questions (the RCA this issue exists to hold)
What ended the activity node's streams at +5 s? The activity was mid-run (the test's callback was still waiting on ObserveMessage("step one")). Candidates: a recycle of the activity's per-node hub (cf. fix: Recycle must land its recompile trigger BEFORE it disposes the hub #2763 — a Recycle disposing the hub before its trigger landed; fix: a recycle now reaches the subscribers it orphans (#2551) #2582 — a recycle reaching the subscribers it orphans), or the bounded-message-list flush (d1a239a6d) re-homing the activity's messages while a write is in flight. Neither is proven here.
Why does the caller not learn it earlier?ADVANCE_WITHOUT_HANDOFF fires at 5 s, the verdict timeout at 31 s — 26 s of a write that the cache already knew had no acknowledged owner.
Not done
No re-run was requested on #2774 for this; the branch is being merged with main (it is behind twice over), which re-runs CI as triage, not as an answer. This test has no prior issue — gh issue list --search ActivityLiveProgressTest returns nothing — so this is its first recorded occurrence.
Observed
2026-08-30 13:28Z on #2774 (a one-line change to
deploy/homebrew/scripts/make-tarball.sh— its diff cannot reach a GitSync activity test), shard 5, run https://github.com/Systemorph/MeshWeaver/actions/runs/33313654005/job/99263942522, commit2abb6a60. main's three preceding Build-and-Test runs (41dd85a2,ead524e9,2ead7832) are green.Mechanics, from the test's own output (activity
GhLive22d6da4e6/_Activity/b55c9a35, cache hubcache/6D99IQwI1U23HtKNOUtrNw)[DataExtensions] Dropping StreamEndedEvent for stream uZzjE4MWi0KBrSXTSLNN9g … no synchronization hub found on this hub or any parent — the target stream is gone(sender: the activity node)[MeshNodeStreamCache] [UpdateQueue] ADVANCE_WITHOUT_HANDOFF path=…/_Activity/b55c9a35 seq=3 bound=5000ms — the owner never acknowledged this write inside the boundDropping StreamEndedEvent(stream dPb18nIfvUCsJEhA8RgoLQ), same sender[MeshNodeStreamHandle] [UpdateRemote] VERDICT_TIMEOUT … bound=31s — the owner produced no terminal for this patch→MeshNodeStreamException: MeshNode OwnerUnreachable[ActivityRunner] Activity … failed→ statusFailed→ the assertionSo: the activity's per-node hub ENDED its two sync streams ~5 s after the run started — while the activity was still running and its second progress line (
seq=3, "step two") was queued — and every later write to it timed out. The request trail isREGISTERED_AFTER_POST (Observe(delivery) overload), i.e. the caller registered after posting, so the trail cannot say where the patch went; the cache's own comment names that overload as the one to switch away from (Observe(request, options)) to get a full trail.Open questions (the RCA this issue exists to hold)
ObserveMessage("step one")). Candidates: a recycle of the activity's per-node hub (cf. fix: Recycle must land its recompile trigger BEFORE it disposes the hub #2763 — aRecycledisposing the hub before its trigger landed; fix: a recycle now reaches the subscribers it orphans (#2551) #2582 — a recycle reaching the subscribers it orphans), or the bounded-message-list flush (d1a239a6d) re-homing the activity's messages while a write is in flight. Neither is proven here.ADVANCE_WITHOUT_HANDOFFfires at 5 s, the verdict timeout at 31 s — 26 s of a write that the cache already knew had no acknowledged owner.Not done
No re-run was requested on #2774 for this; the branch is being merged with main (it is behind twice over), which re-runs CI as triage, not as an answer. This test has no prior issue —
gh issue list --search ActivityLiveProgressTestreturns nothing — so this is its first recorded occurrence.