From 7ac25d7745bbc09b1288c0aa089040fb26ca6b65 Mon Sep 17 00:00:00 2001 From: Luke Curley Date: Mon, 9 Nov 2026 16:01:24 -0800 Subject: [PATCH 1/3] chore(quest): claim quest/m0/test-flakes-2/datagram-queues.md Quest-Claim: 9e88c78d2863f5b3 From 2774bf5221780119e69b601db1afe53ad1b7a9c3 Mon Sep 17 00:00:00 2001 From: Luke Curley Date: Mon, 9 Nov 2026 16:02:18 -0800 Subject: [PATCH 2/3] test(net): the lite-07 datagram queue test reads through its first queue The only recorded failure ran before #8195, when a write yielded after handing DATAGRAMS_INFO over and the reader could count queues before the publisher opened the first track's. Reading a datagram through that queue proves it is open, so the test no longer leans on the publisher's ordering. Co-Authored-By: Claude Opus 5.5 --- js/net/src/lite/datagram-tracks.test.ts | 9 +++++--- quest/m0/test-flakes-2/README.md | 8 +++++++- quest/m0/test-flakes-2/datagram-queues.md | 25 ----------------------- 3 files changed, 13 insertions(+), 29 deletions(-) delete mode 100644 quest/m0/test-flakes-2/datagram-queues.md diff --git a/js/net/src/lite/datagram-tracks.test.ts b/js/net/src/lite/datagram-tracks.test.ts index 88097f2352..1b08628355 100644 --- a/js/net/src/lite/datagram-tracks.test.ts +++ b/js/net/src/lite/datagram-tracks.test.ts @@ -111,8 +111,7 @@ test("lite-04 refuses datagram tracks at setup", async () => { } }); -// Quarantined: flaky under load, see /quest/m0/test-flakes-2/datagram-queues.md -test.skip("lite-07 bounds and prioritizes independent createWritable datagram queues", async () => { +test("lite-07 bounds and prioritizes independent createWritable datagram queues", async () => { const source = new Origin(); const publication = source.route(path, { hidden: true }); const datagrams = publication.broadcast.createDatagrams("audio"); @@ -133,6 +132,10 @@ test.skip("lite-07 bounds and prioritizes independent createWritable datagram qu try { await reader.info(); while (datagrams.priority.peek() !== 19) await datagrams.priority.changed(); + // The publisher opens a track's queue after writing its DATAGRAMS_INFO, so the reader can + // see the info first: a datagram through each queue is what proves both are open. + datagrams.append(undefined, new Uint8Array([0])); + expect((await reader.recv())?.sequence).toBe(0n); await second.info(); other.append(undefined, new Uint8Array([1])); await second.recv(); @@ -150,7 +153,7 @@ test.skip("lite-07 bounds and prioritizes independent createWritable datagram qu // Type, Subscribe ID, and Sequence each occupy one byte on this untimed track. datagrams.append(undefined, new Uint8Array(898)); datagrams.append(undefined, new Uint8Array(897)); - expect((await reader.recv())?.sequence).toBe(1n); + expect((await reader.recv())?.sequence).toBe(2n); } finally { second.close(); reader.close(); diff --git a/quest/m0/test-flakes-2/README.md b/quest/m0/test-flakes-2/README.md index 455f9c7c04..4d498be39f 100644 --- a/quest/m0/test-flakes-2/README.md +++ b/quest/m0/test-flakes-2/README.md @@ -241,6 +241,13 @@ reader got `Unroutable` after the endpoint closed during [moq-dev/moq#8293](https://github.com/moq-dev/moq/pull/8293)'s loaded `just check`. It is quarantined with `pytest.mark.skip` until its child fixes it. +`js/net`'s lite-07 createWritable datagram queue test failed only on code +predating [moq-dev/moq#8195](https://github.com/moq-dev/moq/pull/8195): a write +that yielded after handing DATAGRAMS_INFO over left the first track's queue +unopened while the reader went on. The test now reads a datagram through that +queue before counting queues, fixed by +[moq-dev/moq#8396](https://github.com/moq-dev/moq/pull/8396). + Public API: none. Wire: none. ## Required @@ -248,4 +255,3 @@ Public API: none. Wire: none. - [Fallback playback](/quest/m0/test-flakes-2/ietf22-fallback.md) - a browser viewer follows a fallback within the media lane's bound without dropping its session - [js/net's bandwidth sampling test holds up under load](/quest/m0/test-flakes-2/bandwidth-sampling.md) - the sampling test counts ticks without racing the mocked clock, and its `test.skip` 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 -- [js/net's lite-07 datagram queue test holds up under load](/quest/m0/test-flakes-2/datagram-queues.md) - the test waits for the first track's queue instead of asserting at once, and its `test.skip` is removed diff --git a/quest/m0/test-flakes-2/datagram-queues.md b/quest/m0/test-flakes-2/datagram-queues.md deleted file mode 100644 index baf43b71eb..0000000000 --- a/quest/m0/test-flakes-2/datagram-queues.md +++ /dev/null @@ -1,25 +0,0 @@ -# [XS] js/net's lite-07 datagram queue test holds up under load - -## Goal - -`js/net/src/lite/datagram-tracks.test.ts`'s "lite-07 bounds and prioritizes -independent createWritable datagram queues" passes on a loaded host, and its -`test.skip` is removed. - -## Plan - -Planned 2026-11-09 (maintainer, /quest-complete follow-up of -[moq-dev/moq#8276](https://github.com/moq-dev/moq/pull/8276)), under the -repository's flaky-test rule. It failed once during a full `just check` on -#8276's branch and passed 8 of 8 times alone and in later runs. - -Suspected, not confirmed: the test asserts -`pair.server.sendStreams.datagrams` has two queues right after -`second.recv()`, but nothing orders the first track's queue before that -point, so under load it may not exist yet. Reproduce it first, under load as -the epic describes. Then wait on the event that creates the queue rather than -asserting at once. If the publisher can deliver on the second track before -creating the first track's queue when both were subscribed first, decide -whether that is a bug before changing only the test. - -Public API: none. Wire: none. From 4884353bb27644d926cfaa774c921b94734b397b Mon Sep 17 00:00:00 2001 From: Luke Curley <432854+kixelated@users.noreply.github.com> Date: Mon, 9 Nov 2026 19:33:27 -0800 Subject: [PATCH 3/3] quest: date the datagram-queues resolution Co-Authored-By: Claude Opus 5.5 --- quest/m0/test-flakes-2/README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/quest/m0/test-flakes-2/README.md b/quest/m0/test-flakes-2/README.md index d449e5e247..00379061cf 100644 --- a/quest/m0/test-flakes-2/README.md +++ b/quest/m0/test-flakes-2/README.md @@ -259,8 +259,8 @@ Added 2026-11-09 (maintainer, /quest-complete): interop's `finish` cases with a cpp or rust publisher, which failed under a loaded host and passed on rerun. They are quarantined until their child fixes them. -Resolved 2026-11-09 (maintainer, `/quest-complete`): `js/net`'s lite-07 createWritable datagram queue test failed only on code -predating [moq-dev/moq#8195](https://github.com/moq-dev/moq/pull/8195): a write +Resolved 2026-11-09 (maintainer, `/quest-complete`): `js/net`'s lite-07 +createWritable datagram queue test failed only on code predating [moq-dev/moq#8195](https://github.com/moq-dev/moq/pull/8195): a write that yielded after handing DATAGRAMS_INFO over left the first track's queue unopened while the reader went on. The test now reads a datagram through that queue before counting queues, fixed by