Skip to content

Fix flaky preferCallConnectionOverDeferredConnection test#9539

Open
kamilkrzywanski wants to merge 1 commit into
lysine-dev:masterfrom
kamilkrzywanski:fix/fast-fallback-test-flake
Open

Fix flaky preferCallConnectionOverDeferredConnection test#9539
kamilkrzywanski wants to merge 1 commit into
lysine-dev:masterfrom
kamilkrzywanski:fix/fast-fallback-test-flake

Conversation

@kamilkrzywanski

Copy link
Copy Markdown

Fixes #9369.

preferCallConnectionOverDeferredConnection tries to force IPv4 to win the Happy Eyeballs race by stalling the competing connect, so IPv6 becomes a deferred plan and a REFUSED_STREAM retry reuses the call connection. It did that by stalling the first createSocket() call.

That was racy. Fast fallback launches connect work on separate threads, so under load the IPv4 thread could claim the stall while IPv6 proceeded. The request then hit IPv6 and failed with:

expected: "this was the 2nd request on IPv4"
but was: "unexpected call to IPv6"

This stalls IPv6 specifically in Socket.connect() when the destination is localhostIpv6, so the right address is delayed no matter which thread runs first.

Stall IPv6 by destination address in Socket.connect() instead of
the first createSocket() call, which raced under concurrent connects.

Fixes lysine-dev#9369
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Development

Successfully merging this pull request may close these issues.

FastFallbackTest.preferCallConnectionOverDeferredConnection flaky

1 participant