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: 0 additions & 1 deletion quest/m1/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -58,7 +58,6 @@ blocks. The quests that gated m0 lines moved under them.
- [Subscribe ranges](/quest/m1/subscribe-ranges/README.md) - a lite-07 SUBSCRIBE asks for past and live ranges in either order and replaces FETCH; relays fill misses by range, including over moq-transport
- [Live media time](/quest/m1/subscribe-live-time.md) - re-scoped against `set_live`: a lite-07 SUBSCRIBE_OK carries the publisher's current media time only if a reader still needs it
- [Cross-relay bursts re-run](/quest/m1/cross-relay-bursts.md) - condition: the #4349 reporter re-runs their A/B/C comparison against current cdn.moq.pro
- [Two-relay drill on impaired links](/quest/m1/cross-relay-drill.md) - a bursty small-group track crosses two clustered relays over lossy, delayed, flow-limited QUIC without unanswered FETCHes or `Old` stalls
- [Untimed lite-07](/quest/m1/lite-untimed.md) - lite-07 carries an untimed track in both languages; lite-05/06 write send time
- [Finalize moq-lite-07](/quest/m1/lite07-finalize.md) - when the maintainer cuts it, lite-07 negotiates as `moq-lite-07` and the next release ships it
- [Late lower groups](/quest/m1/lite-late-lower-group.md) - a moq-lite subscriber with a floor receives a group created below the first served one, as moq-transport does
Expand Down
14 changes: 9 additions & 5 deletions quest/m1/cross-relay-bursts.md
Original file line number Diff line number Diff line change
Expand Up @@ -26,10 +26,15 @@ used and against `main`:
route-flap drops (about 70 of 560 groups) reproduce only on 0.15.6 and are
gone on moq-net 0.3.8 and later, most likely by #4387.
- **Not reproduced.** Unanswered FETCHes and the 30 s `Stream(Old)` stalls
showed up on no build. The mock models neither loss nor flow control, so
[Two-relay drill on impaired links](/quest/m1/cross-relay-drill.md) covers
that gap. Several 30 s timers of that era have since been removed or
shortened (#4606, #4741).
showed up on no build, nor in the real-QUIC drill
`rs/moq-relay/tests/drills.rs::bursts_cross_a_cluster` (bursts of 30
across two clustered relays, every hop with 5% loss, delay, a 100 kbit/s
bottleneck that each burst overflows, and 16-stream QUIC credit): every
group arrives within about 3.5 s, and the occasional live `Old` reset is recovered by FETCH. Several
30 s timers of that era have since been removed or shortened (#4606, #4741).
- **Queueing.** FETCHes beyond a session's stream credit wait for it, one
cross-relay round trip per slot, so with tight credit a gap's FETCH can
outlast a 2 s deadline without being lost.
- **Expected.** Across relays a burst arrives newest-first, as the lite draft
specifies; fetching on every gap at once multiplies FETCHes.

Expand All @@ -39,5 +44,4 @@ used and against `main`:

## Related

- [Two-relay drill on impaired links](/quest/m1/cross-relay-drill.md) - looks for the unreproduced FETCH and `Old` stalls without waiting on the reporter
- [Routes and announces](/quest/m1/cluster-routing/routes.md) - owns the stale and flapping announcements from the same report
37 changes: 0 additions & 37 deletions quest/m1/cross-relay-drill.md

This file was deleted.

6 changes: 4 additions & 2 deletions rs/moq-net/src/lite/subscriber.rs
Original file line number Diff line number Diff line change
Expand Up @@ -4445,8 +4445,6 @@ impl<S: crate::transport::poll::Session> kio::Task for FetchServeRun<S> {

match &mut self.state {
FetchRunState::Open { request } => {
tracing::info!(broadcast = %self.serve.subscriber.log_path(&self.serve.path), track = %self.serve.name, group = self.group, "fetch started");

// A peer that sent GOAWAY told us to stop opening streams on this session.
if self.serve.subscriber.going_away.is_set() {
request.take().expect("request pending").reject(Error::GoingAway);
Expand All @@ -4468,6 +4466,10 @@ impl<S: crate::transport::poll::Session> kio::Task for FetchServeRun<S> {
}
};

// Only once the stream opens: the open parks on stream credit and
// re-polls this state, so logging before it repeats per poll.
tracing::info!(broadcast = %self.serve.subscriber.log_path(&self.serve.path), track = %self.serve.name, group = self.group, "fetch started");

let request = request.take().expect("request pending");

// A peer that predates lite-06 addresses whole groups only, so ask for
Expand Down
Loading
Loading