fix: force IPv4 in health checker to prevent WSL2 DNS delays#761
Merged
Lightheartdevs merged 1 commit intoLight-Heart-Labs:mainfrom Apr 3, 2026
Merged
Conversation
The aiohttp session used the default TCPConnector which attempts both IPv6 and IPv4 DNS resolution. On WSL2/Docker Desktop, AAAA (IPv6) DNS queries for Docker service names timeout after ~8 seconds before falling back to IPv4, inflating response_time_ms to ~8016ms. Docker internal networking is exclusively IPv4, so restricting to AF_INET is safe on all platforms. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
What
Force IPv4 connections in the aiohttp health check session by creating the TCP connector with
family=socket.AF_INET.Why
On WSL2/Docker Desktop, the default aiohttp connector attempts both IPv6 (AAAA) and IPv4 (A) DNS resolution. Docker service name AAAA queries timeout after ~8 seconds before falling back to IPv4, inflating
response_time_msto ~8016ms for most services. Docker internal networking is exclusively IPv4 — AAAA queries always fail.How
In
_get_aio_session(), changed the session creation from:to:
Testing
python -m py_compilepassesReview
Critique Guardian verdict:⚠️ APPROVED WITH WARNINGS
httpx.AsyncClient(used for llama-server metrics) does not force IPv4. Single-host with 5s timeout — much smaller impact than the 17-service health poll. Recommended as follow-up.Known Considerations
The httpx client for llama-server metrics is not covered by this fix. On WSL2, llama-server requests may still see a one-time ~5s DNS delay. This is a minor follow-up — the critical fix is the health poll (17 services × 8s = 136s delay eliminated).
Platform Impact