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
4 changes: 3 additions & 1 deletion js/net/src/lite/datagram-tracks.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -469,7 +469,9 @@ for (const alpn of [ALPN_05, ALPN_06, ALPN_07_WIP]) {
// A track's end waits a host task for the datagrams received with it. A session close in
// between finishes the track rather than cutting it off: the publisher already ended it.
for (const alpn of [ALPN_05, ALPN_06, ALPN_07_WIP]) {
test(`${alpn}: a session close right after a datagram track's end keeps the end`, async () => {
// Quarantined: fails in the merge queue with "Session: remote error: 0" (lite-06 on #8280, lite-05 on
// #8276 after #8321 re-enabled it). /quest/m0/test-flakes-2/datagram-close-end.md
test.skip(`${alpn}: a session close right after a datagram track's end keeps the end`, async () => {
const source = new Origin();
const publication = source.route(path, { hidden: true });
const datagrams = publication.broadcast.createDatagrams("audio");
Expand Down
7 changes: 7 additions & 0 deletions quest/m0/test-flakes-2/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -229,6 +229,12 @@ two random-mesh withdrawal tests, which hit nextest's 60 s kill in
`just check` and are quarantined with `#[ignore]` by
[moq-dev/moq#8336](https://github.com/moq-dev/moq/pull/8336).

Added 2026-11-09 (maintainer's standing rule that flakes join this epic):
`js/net`'s datagram session-close-after-end test again, whose lite-05 case
failed the merge queue for [moq-dev/moq#8276](https://github.com/moq-dev/moq/pull/8276)
after [moq-dev/moq#8321](https://github.com/moq-dev/moq/pull/8321) re-enabled it.
It is quarantined with `test.skip` for every version until its child fixes it.

Public API: none. Wire: none.

## Required
Expand All @@ -240,3 +246,4 @@ Public API: none. Wire: none.
- [js/net's compressed-frame cap test holds up under load](/quest/m0/test-flakes-2/compressed-frame-cap.md) - the cap is proven without a 32 MiB payload, and its `test.skip` is removed
- [js/net's lite-07 re-dropped re-offer test holds up under load](/quest/m0/test-flakes-2/redropped-reoffer.md) - update 3 is ordered before the re-offer opens by an event, not a yield count, and its `test.skip` is removed
- [moq-net's random-mesh withdrawal tests fit the gate](/quest/m0/test-flakes-2/mesh-withdraw-runtime.md) - the 200-seed mesh tests cost seconds of CPU, and their `#[ignore]` is removed
- [js/net's datagram session-close-after-end test holds up under load](/quest/m0/test-flakes-2/datagram-close-end.md) - the abort is ordered after the end by an event the client observes, and its `test.skip` is removed
30 changes: 30 additions & 0 deletions quest/m0/test-flakes-2/datagram-close-end.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
# [S] js/net's datagram session-close-after-end test holds up under load

## Goal

`js/net/src/lite/datagram-tracks.test.ts`'s "a session close right after a
datagram track's end keeps the end" passes in the merge queue for every
version it covers, and its `test.skip` is removed.

## Plan

Planned 2026-11-09 (maintainer's standing rule that flakes join this epic).
The lite-06 case dropped
[moq-dev/moq#8280](https://github.com/moq-dev/moq/pull/8280) from the merge
queue and was quarantined; [moq-dev/moq#8321](https://github.com/moq-dev/moq/pull/8321)
re-enabled it with no fix after finding no repro; its investigation, which rules
out microtask reordering and names `Budget` before `connect` and `now()` in
`group.ts`/`cache.ts` as the real-time suspects, stays in its PR body. The
lite-05 case then failed the merge queue for
[moq-dev/moq#8276](https://github.com/moq-dev/moq/pull/8276) with `Session:
remote error: 0`: the reader saw the abort before the end. The land fixer's
note on #8276 records 20 clean repeats of the file on a scratch merge, so it
fails only under the queue's load.

The test assumes 10000 microtask turns deliver the publisher's end before
`client.abort()`. Find the step that still crosses a host task under load, and
order the abort after the end by an event the client observes (such as the
reader's track reaching its end state), never by more turns or a sleep. Then
remove the `test.skip` and delete this quest.

Public API: none. Wire: none.