@@ -115,19 +115,23 @@ See the API documentation for more details.
115115` WebServiceClient ` is thread-safe and reuses a pooled ` HttpClient ` across
116116requests. Idle connections in the pool can be silently closed by load
117117balancers or other intermediaries. When the next request reuses one of these
118- half-closed connections, the JDK reports the failure as a ` Connection reset `
119- (or ` Broken pipe ` ) ` IOException ` .
120-
121- To smooth over these intermittent transport failures, the SDK retries once by
122- default. The retry covers:
123-
124- * ` SocketException ` with message ` Connection reset ` or ` Broken pipe ` ,
125- * ` ConnectException ` ,
126- * ` HttpConnectTimeoutException ` .
127-
128- Retries are ** not** applied to request-phase timeouts (` HttpTimeoutException ` )
129- or to HTTP 4xx / 5xx responses. POST bodies are replayable, so retried
130- requests are byte-identical to the original.
118+ half-closed connections, the JDK reports the failure as a ` Connection reset ` ,
119+ ` Broken pipe ` , or related transport ` IOException ` .
120+
121+ To smooth over these intermittent transport failures, the SDK retries once
122+ by default. Any transport-level ` IOException ` raised by the underlying HTTP
123+ send is retried, with two exceptions:
124+
125+ * ` HttpTimeoutException ` — a request-phase timeout. Connect-phase timeouts
126+ (` HttpConnectTimeoutException ` ) are also excluded because they extend
127+ ` HttpTimeoutException ` . The SDK honors the timeouts you configure.
128+ * ` InterruptedIOException ` — the calling thread was interrupted; the SDK
129+ honors the cancellation rather than override it.
130+
131+ HTTP 4xx and 5xx responses are not retried — they are returned as
132+ ` HttpResponse ` objects (not ` IOException ` s) and surfaced through the existing
133+ exception hierarchy. POST bodies are replayable, so retried requests are
134+ byte-identical to the original.
131135
132136You can change the retry budget via the builder:
133137
0 commit comments