I'm using Http2SolrClient to send search requests to Solr from my Java/Spring application. The searches originate from a search box on the website, and everything works fine when the app first starts or when searches are made continuously. However, if I stop making searches and leave the website idle for a while, exceptions occur on the next search sent to Solr, even though there are no connectivity issues between Solr and my app. I suspect this might be due to a stale connection issue, where the client attempts to use a connection that has already been closed on the Solr side(?). Here is the code snippet where my client is built, with timeouts set to 30 seconds:

----
  @Bean
public Http2SolrClient solrClient(SolrConfiguration solrConfiguration) {
    int timeout = solrConfiguration.getTimeout();
    Http2SolrClient solrClient =
        new Http2SolrClient.Builder(solrConfiguration.getBaseUrl())
            .withConnectionTimeout(timeout, TimeUnit.SECONDS)
            .withIdleTimeout(timeout, TimeUnit.SECONDS)
            .withRequestTimeout(timeout, TimeUnit.SECONDS)
            .build();
    return solrClient;
  }
----

I looked for something similar to "validateafterinactivity" method of Apache HTPP Client's connection pool, but I couldn't find something similar to that.

Any ideas?


-Ufuk

Reply via email to