janhoy opened a new pull request, #4714:
URL: https://github.com/apache/solr/pull/4714

   # Description
   
   When a node goes down while a request is in flight, the Jetty HTTP/2 client 
surfaces the failure as a plain `IOException` whose message has the form 
`<h2_error_code>/<reason>` (e.g. `cancel_stream_error/input_shutdown`), with no 
HTTP response received. `CloudSolrClient.wasCommError()` only recognized 
`SocketException`/`UnknownHostException`, so such requests were never retried 
and failed permanently.
   
   Surfaced by the nightly `ChaosMonkeySafeLeaderWithPullReplicasTest`: the 
chaos monkey kills a node mid-update, the client logs `commError=false` and 
gives up (`LBSolrClient` intentionally doesn't retry updates on generic 
IOExceptions, so `wasCommError` is the safety net).
   
   # Solution
   
   Treat an `IOException` whose message matches the HTTP/2 failure form as a 
communication error in `wasCommError()`, so the request is retried — same 
semantics as the already-retried `SocketException`.
   
   # Tests
   
   - Two new tests in `CloudSolrClientCacheTest`: classification of the 
h2-failure IOException, and end-to-end retry of a failed update.
   - `ChaosMonkeySafeLeaderWithPullReplicasTest` passes with its 
previously-failing seed `E464797072CE8325`; full nightly suite 
(`-Ptests.nightly=true`) green locally.
   
   # Checklist
   
   - [x] I have reviewed the guidelines for [How to 
Contribute](https://github.com/apache/solr/blob/main/CONTRIBUTING.md)
   - [x] I have given Solr maintainers access to contribute to my PR branch
   - [x] I have developed this patch against the `main` branch
   - [x] I have run `./gradlew check` (with `-x test`)
   - [x] I have added tests for my changes
   - [x] I have added a changelog entry


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: [email protected]

For queries about this service, please contact Infrastructure at:
[email protected]


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to