Skip to content

sendgroup and sendorder improved implementation & tracking#3470

Open
jesup wants to merge 5 commits intousers/jesup/highwatermarksfrom
users/jesup/sendgroup_sendorder_tracking
Open

sendgroup and sendorder improved implementation & tracking#3470
jesup wants to merge 5 commits intousers/jesup/highwatermarksfrom
users/jesup/sendgroup_sendorder_tracking

Conversation

@jesup
Copy link
Copy Markdown
Member

@jesup jesup commented Mar 16, 2026

No description provided.

Copilot AI review requested due to automatic review settings March 16, 2026 04:48
Copy link
Copy Markdown
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

This PR extends WebTransport/CONNECT-UDP datagram sending to carry send-group and send-order information, and updates the internal per-session datagram queue to schedule datagrams by send group (round-robin) and send order (priority), while also cleaning up datagram tracking and timestamp handling.

Changes:

  • Plumb send_group_id and send_order through WebTransport and CONNECT-UDP datagram send APIs (client/server/tests).
  • Refactor WebTransportDatagramQueue to support per-group round-robin + per-order priority scheduling, and make datagram tracking IDs optional.
  • Make queue aging/max-age logic use a caller-provided now (improves determinism and avoids Instant::now() in queue internals).

Reviewed changes

Copilot reviewed 13 out of 14 changed files in this pull request and generated 7 comments.

Show a summary per file
File Description
neqo-http3/tests/webtransport.rs Update test calls to new datagram send signature.
neqo-http3/tests/connect_udp.rs Update proxy/session tests to new datagram send signature.
neqo-http3/src/server_events.rs Extend request APIs to accept send-group/order and forward to handlers.
neqo-http3/src/features/extended_connect/webtransport_session.rs Update protocol queue APIs to pass now, send-group, and send-order; tracking IDs now Option<u64>.
neqo-http3/src/features/extended_connect/tests/webtransport/mod.rs Update helper to pass send-group/order defaults.
neqo-http3/src/features/extended_connect/tests/webtransport/datagrams.rs Update expected errors and call signatures for datagram send.
neqo-http3/src/features/extended_connect/session.rs Plumb send-group/order into enqueueing; switch tracking ID from sentinel 0 to Option<u64>.
neqo-http3/src/features/extended_connect/datagram_queue.rs New grouped+priority scheduler, eviction logic, max-age handling, and extensive unit tests.
neqo-http3/src/features/extended_connect/connect_udp_session.rs Adapt protocol trait methods to new queue signatures; CONNECT-UDP ignores send-group/order.
neqo-http3/src/connection_server.rs Extend server handler APIs and pass now into queue draining.
neqo-http3/src/connection_client.rs Extend client APIs; only emit DatagramOutcome events when tracking ID is present; pass now into max-age/drain.
neqo-http3/src/connection.rs Extend public connection APIs and queue draining/max-age APIs with send-group/order and now.
neqo-http3/Cargo.toml Add indexmap dependency for stable insertion-order group iteration.
Cargo.lock Record new direct dependency.

Comment thread neqo-http3/src/server_events.rs Outdated
Comment thread neqo-http3/src/features/extended_connect/datagram_queue.rs Outdated
Comment thread neqo-http3/src/features/extended_connect/datagram_queue.rs Outdated
Comment thread neqo-http3/src/features/extended_connect/datagram_queue.rs Outdated
Comment thread neqo-http3/src/connection_client.rs Outdated
Comment thread neqo-http3/src/connection_client.rs Outdated
Comment thread neqo-http3/src/server_events.rs
@jesup jesup changed the title Users/jesup/sendgroup sendorder tracking sendgroup and sendorder improved implementation & tracking Mar 16, 2026
@larseggert larseggert added the needs-rebase PR needs rebasing before it can be merged. label Apr 8, 2026
@jesup jesup force-pushed the users/jesup/highwatermarks branch 3 times, most recently from c153dd1 to 6115654 Compare May 1, 2026 13:11
@jesup
Copy link
Copy Markdown
Member Author

jesup commented May 1, 2026

@jesup jesup force-pushed the users/jesup/sendgroup_sendorder_tracking branch from 48ece96 to 17fea3f Compare May 1, 2026 15:13
@github-actions
Copy link
Copy Markdown
Contributor

github-actions Bot commented May 1, 2026

Failed Interop Tests

None ❓

All results

Succeeded Interop Tests

QUIC Interop Runner, client vs. server

neqo-pr as client

None ❓

neqo-pr as server

None ❓

Unsupported Interop Tests

QUIC Interop Runner, client vs. server

neqo-pr as client

None ❓

neqo-pr as server

None ❓

@martinthomson
Copy link
Copy Markdown
Member

I have a request. For changes like this, which do not depend on the rest of this very deep stack, can you please split them out into an independent change? It's very hard to follow a change where the substrate is shifting constantly.

From what I can see, much of this stack is entirely unrelated to each other. Not all, but most. So stacking is not necessary.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

needs-rebase PR needs rebasing before it can be merged.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants