Skip to content

fix(ci): register h3 routes before spawning; retry container first contact - #116

Merged
Industrial merged 1 commit into
mainfrom
fix/h3-eager-callers
Oct 21, 2026
Merged

Industrial merged 1 commit into
mainfrom
fix/h3-eager-callers

Conversation

@Industrial

Copy link
Copy Markdown
Owner

Fixes the failures in main run 39548930285 (after #115):

  • QUIC "timed out" (h3_client_ip_from_quic_peer, call_streams_are_bounded_by_the_call_cap): fix(ci): eager h3 route registration; distinct Pebble ports #115 made serve_h3 register its route eagerly, but callers still invoked it inside tokio::spawn(async move { … }). Now HostHttp3 registers the route at bind (so ServerHandle::start returns with HTTP/3 ready), and the WebTransport fixtures, the http3 tests and the Relay node call serve_h3 before spawning. The test(axum): serve_h3 test waits for the h3 route (last red job on main) #114 reconnect loop is removed.
  • Mailpit "incomplete response" / Keycloak empty discovery reply: Docker's port proxy accepts before the service listens; the first contact is retried for a bounded time.

Local: fmt, clippy -D warnings (axum, rpc, relay, mail, test); http3 13/13, axum webtransport 9/9, rpc transport_webtransport + spans 14/14, mailpit 1/1 and keycloak 1/1 (Docker).

🤖 Generated with Claude Code

…ntact

serve_h3 registers its route when called (#115), but callers still called it
inside a spawned task, so a client could connect before the route existed:
- HostHttp3 (ServerHandle) registers the h3 route at bind, before start returns
- WebTransport fixtures (rpc transport_webtransport, browser, spans; axum
  webtransport unit tests) and the Relay node call serve_h3 before spawning
- http3 tests spawn the serve_h3 future directly; the #114 retry loop goes, and
  serve_h3_on_an_endpoint_of_your_own no longer races its double registration

Main run 39548930285 failed h3_client_ip_from_quic_peer and
call_streams_are_bounded_by_the_call_cap with "timed out".

Mailpit and Keycloak: Docker's port proxy accepts before the service listens
(Mailpit logs ready before SMTP binds), seen as "incomplete response" and an
empty discovery reply; retry the first contact for a bounded time.

Signed-off-by: Tom Wieland <tom.wieland@gmail.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@codecov

codecov Bot commented Oct 21, 2026

Copy link
Copy Markdown

Codecov Report

✅ All modified and coverable lines are covered by tests.
✅ Project coverage is 97.86%. Comparing base (75c3e80) to head (7d93253).

Additional details and impacted files
@@            Coverage Diff             @@
##             main     #116      +/-   ##
==========================================
- Coverage   97.87%   97.86%   -0.01%     
==========================================
  Files         552      552              
  Lines      117982   117984       +2     
==========================================
- Hits       115470   115469       -1     
- Misses       2512     2515       +3     

☔ View full report in Codecov by Harness.
📢 Have feedback on the report? Share it here.

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.

@Industrial
Industrial merged commit 27e7efc into main Oct 21, 2026
34 checks passed
Industrial added a commit that referenced this pull request Oct 25, 2026
…ostHttp3 does (#116)

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Signed-off-by: Tom Wieland <tom.wieland@gmail.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant