| FazBrowse GitHub Viewer | Trending | | Home |
| Tools: [Download Repo ZIP] [Original HTTPS Page] |
Sorry, something went wrong.
Replace individual catches for ConnectError, RemoteProtocolError, and TimeoutException with a single catch for their parent class httpx.TransportError. This covers ReadError (TCP reset mid-response), WriteError, and all other transport-level failures that were previously falling through to PermanentError and not being retried. Discovered when api pods crashed mid-request and httpx raised ReadError with an empty message, which bypassed the existing retry logic. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
| Back | FazBrowse Home | New Git URL |
Summary
Context
Follow-up to #332. After deploying the RemoteProtocolError fix, we observed httpx.ReadError (empty message) failures when api pods crashed mid-response. The TCP connection was reset during the response read phase, which httpx classifies as ReadError rather than RemoteProtocolError.
The httpx exception hierarchy:
Catching TransportError is the correct level — all transport errors are transient and should be retried when retry_connection_errors=True.
Test plan
🤖 Generated with Claude Code
Note
Medium Risk
Expands which network failures are treated as retryable, which can change error/latency behavior for callers and potentially mask persistent transport issues until backoff is exhausted.
Overview
Broadened retry handling for transport failures. The retry wrapper now catches httpx.TransportError in both sync and async paths, so additional transport-level errors (e.g. ReadError, WriteError, and timeout subclasses) are retried when retry_connection_errors=True instead of being treated as permanent.
Tests were updated to parameterize across multiple TransportError subclasses for both sync and async retry behavior, and the package version/release notes were bumped to 0.42.12.
Written by Cursor Bugbot for commit bdd403c. This will update automatically on new commits. Configure here.