I enhanced https://github.com/apache/solr/pull/3357 to incorporate that
test and make other changes.  Keeping the IllegalStateException but at
least the idle timeout can be set at the request level.  The downside is
that a number of places in Solr that were customizing the connection
timeout can no longer do so.  I think it's fine; it strikes me as rather
obscure to really _need_ to mess with the connection timeout on a use-case
basis.
I filed https://issues.apache.org/jira/browse/SOLR-17776 to capture this
work.

I'd like to get that into 9.x.

On Sat, May 24, 2025 at 8:55 PM Luke Kot-Zaniewski (BLOOMBERG/ 919 3RD A) <
lkotzanie...@bloomberg.net> wrote:

> That's a good point. I didn't immediately realize it would effectively be
> the minimum of the two idle timeout values but now that I think about it,
> it makes sense.
>
> Looking at it from a higher level though, since Jetty appears to honor
> idleTimeout at the request level (either through the aforementioned
> listener or through client Request itself
> https://javadoc.jetty.org/jetty-11/org/eclipse/jetty/client/api/Request.html#idleTimeout(long,java.util.concurrent.TimeUnit)
> and considering that we already have a client wrapper that saves these
> timeouts, it would make sense to have some convention/validation where we
> only set timeouts at the solr client level and actually never proagate it
> to the underlying HttpClient (and rather keep those at the max value). This
> would make more flexible and allow sharing underlying HttpClients in some
> circumstances. Admittedly this might only work for settings that appear to
> have jetty request-level overrides, i.e. idle timeouts and request timeouts
> (not sure about connectionTimeouts for instance), but maybe that's
> something worth exploring? In a project the size of Solr sharing
> clients/connections wherever possible might be worthwhile if it can be done
> reasonably...
>
> Sent from Bloomberg Professional for Android
>
> ----- Original Message -----
> From: David Smiley <dev@solr.apache.org>
> To: dev@solr.apache.org
> CC: LUKE KOT-ZANIEWSKI, stilla...@apache.org, gus.h...@gmail.com
> At: 05/24/25 15:12:28 UTC-04:00
>
>
> Luke, thanks for writing this test!!
>
> I looked at your test
> (esp.
> org.apache.solr.client.solrj.impl.Http2SolrClientTest#testIdleTimeoutWithHttpClient
> ) in more detail.  You tested going from having a sufficient amount of idle
> timeout for the request to succeed, then down to a lower amount, asserting
> it failed.  But we want the other way around -- low to high.  I pushed this
> change to your PR and the test failed.  Can you look please?  Unless I'm
> missing something, this failure demonstrates the problem I am ringing the
> alarm bells about.
>
> https://issues.apache.org/jira/browse/SOLR-13605
> Ah, thanks for reminding me.  That issue is about Apache based HTTP
> SolrClient, and yes, it seems like the "reverse" problem.
>
> On Thu, May 22, 2025 at 7:47 PM Chris Hostetter <hossman_luc...@fucit.org>
> wrote:
>
> >
> >
> > : Then I noticed something insidious:  If an Http2SolrClient (Jetty) is
> > : created using the builder's withHttpClient(...) method, then the idle
> > (aka
> > : socket) timeout & connection timeout (and basically any other setting
> > : that's inside the Jetty HttpClient) cannot *actually* be customized
> > : henceforth.  This should be pretty obvious, when you think about it
> > (duh).
> >
> > Deja Vu...
> >
> > https://issues.apache.org/jira/browse/SOLR-13605
> >
> > ...except now we have the reverse problem?
> >
> >
> >
> > -Hoss
> > http://www.lucidworks.com/
> >
> > ---------------------------------------------------------------------
> > To unsubscribe, e-mail: dev-unsubscr...@solr.apache.org
> > For additional commands, e-mail: dev-h...@solr.apache.org
> >
> >
>

Reply via email to