Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions quest/m1/test-flakes-2/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -46,5 +46,6 @@ Public API: none. Wire: none.
- [macOS receive credit](/quest/m1/test-flakes-2/macos-receive-credit.md) - `partial_control_requests_give_way` passes on the macOS lane, after checking for a shared platform cause
- [moq-mux missing sequence](/quest/m1/test-flakes-2/mux-missing-sequence.md) - `missing_sequence_skips_on_live_track` runs on a paused clock
- [moq-rtsp stall timers](/quest/m1/test-flakes-2/rtsp-stall-timers.md) - the 200 ms stall and keyframe tests run on a mocked clock
- [moq-gst sibling resume](/quest/m1/test-flakes-2/gst-sibling-resume.md) - an idle pad reads its named epoch again after a sibling restart, a likely liveness bug fixed before the test
- [moq-gst pinned replay](/quest/m1/test-flakes-2/gst-pinned-replay.md) - the pinned-instance finish test waits on events instead of sleep loops
- [Dart leak RSS](/quest/m1/test-flakes-2/dart-leak-rss.md) - the leak tests measure what moq owns, not process RSS
38 changes: 38 additions & 0 deletions quest/m1/test-flakes-2/gst-sibling-resume.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,38 @@
# [M] moq-gst resumes a named epoch after a sibling restart

## Goal

`a_sibling_restart_idles_a_reference_naming_the_old_epoch`
(`rs/moq-gst/src/source/imp.rs:4175`) never fails under load. Once the
instance a reference names serves its path again, the source always goes
back to reading it on the same pad.

## Plan

Decided 2026-10-25 (maintainer): treat it as a liveness bug first, then the
test. It failed once under host load during a `just check` for
[moq-dev/moq#6464](https://github.com/moq-dev/moq/pull/6464), and passed 5 of
5 times in isolation and in the full suite. The failure was
`3 never reached a pad: [Pad("video_0"), Segment("video_0", 46000), Buffer("video_0", 1)]`
at `Recorder::written`: after the replacing epoch dropped and the second
Restart arrived, the old instance wrote tag 3 every 50 ms for 10 s and none
of it reached the pad. A delay that long points to a missed resume, not a
slow test.

- Reproduce first: under load, or deterministically by forcing the order of
the Restart and the old instance's re-subscription with a
`moq_clock::Manual` clock.
- Find why the idle pad never reads the named instance again, and fix it in
moq-gst or moq-net, wherever the resume is lost.
- Then make the test wait on the announce and pad events instead of the
sleep-polled `written()`.

Separate from [gst-pinned-replay](/quest/m1/test-flakes-2/gst-pinned-replay.md)
by decision: it uses the same `Recorder` fixture, but the cause is likely
different.

Public API: none expected. Wire: none.

## Related

- [moq-gst pinned replay](/quest/m1/test-flakes-2/gst-pinned-replay.md) - the same fixture's sleep-poll race
Loading