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]

Reply via email to