test: catch every transport error in the docker health check - #3698
Merged
Conversation
The framework-compat fixture caught only ConnectError and TimeoutException. A container behind a bound-but-not-ready Docker port proxy resets the connection, which httpx raises as ReadError, so it escaped the handler and killed the fixture outright: 438 errors in 15 seconds, without the readiness timeout ever running. httpx.RequestError is the base of every transport failure. The other two docker conftests already catch OSError and were unaffected.
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.
Follow-up to the docker harness work in #3693, which fixed the wrong half of
this.
Running the framework-compat suite cold gave 438 errors in 15 seconds. The
readiness timeout I raised there never came into play: the fixture caught only
ConnectErrorandTimeoutException, and a container sitting behind abound-but-not-ready Docker port proxy resets the connection, which httpx raises
as
ReadError. That escaped the handler and took the fixture down before anywaiting happened.
httpx.RequestErroris the base of every transport failure, so it covers thereset as well as the cases already handled. The other two docker conftests catch
OSError, which already includes connection resets, which is whyasgi_compliancepassed cold while this one did not.Cold run with containers torn down first: 438 passed, 6 skipped.