Hi James, Excellent catch and thanks for sharing! If you haven't already and are still willing: please open a PR (and optionally, a JIRA ticket describing the behavior). Looking forward to seeing this fixed!
Best, Jason On Sun, Nov 23, 2025 at 12:51 PM James Vanneman via dev <[email protected]> wrote: > > Hi, > > I think I found a bug in the LBHttp2SolrClient. The exception that's > triggered when the idle timeout is exceeded is a TimeoutException. It's > wrapped > in a SolrServerException > <https://github.com/apache/solr/blob/6a9e33b5c61edd64aef85508718a0d6319677b32/solr/solrj/src/java/org/apache/solr/client/solrj/impl/Http2SolrClient.java#L544-L549> > and while the wrapped exception itself is an IOException with a cause of > TimeoutException, the handling here > <https://github.com/apache/solr/blob/6a9e33b5c61edd64aef85508718a0d6319677b32/solr/solrj/src/java/org/apache/solr/client/solrj/impl/LBHttp2SolrClient.java#L284-L290> > uses > getRootCause() > <https://github.com/apache/solr/blob/6a9e33b5c61edd64aef85508718a0d6319677b32/solr/solrj/src/java/org/apache/solr/client/solrj/SolrServerException.java#L40C20-L40C32> > which > unwraps the IOException and pulls out the inner TimeoutException which then > fails the check against IOException and doesn't mark the server as a > zombie, so unresponsive servers still receive traffic. I believe the > expected behavior is that an unresponsive server should be marked as a > zombie. > > This is fairly straightforward to setup a test to reproduce as well as fix > the issue. Happy to send a PR to fix this. --------------------------------------------------------------------- To unsubscribe, e-mail: [email protected] For additional commands, e-mail: [email protected]
