-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA256

All,

On 9/18/18 11:10, Christopher Schultz wrote:
> All,
> 
> Our single-instance Solr server is just getting its first taste of 
> production load, and I'm seeing this periodically:
> 
> java.lang.IllegalStateException: Connection is still allocated
> 
> The stack trace shows it's coming from HTTP Client as called from 
> within Solr.
> 
> We are using SolrJ 7.2.1 and Solr (server) 7.4.0.
> 
> Our code looks something like this:
> 
> private HashMap<String,HttpSolrClient> CLIENT_REGISTRY = new 
> HashMap<String,HttpSolrClient>();
> 
> synchronized HttpSolrClient getSolrClient(String url) throws
> ServiceException, SolrServerException, IOException, 
> GeneralSecurityException { HttpSolrClient solrClient =
> CLIENT_REGISTRY.get(url);
> 
> if(null == solrClient) { log.info("Creating new HttpSolrClient
> connected to " + url);
> 
> solrClient = new HttpSolrClient.Builder(url) 
> .withHttpClient(getHttpClient()) .build();
> 
> solrClient.ping();
> 
> CLIENT_REGISTRY.put(url, solrClient); }
> 
> return solrClient; }
> 
> 
> [here's the code that uses the above]
> 
> SolrClient solr = getSolrRegistry().getSolrClient(url);
> 
> SolrInputDocument doc = new SolrInputDocument();
> 
> // Add stuff to the document
> 
> solr.add(doc); solr.commit();
> 
> That's it.
> 
> Other than not really needing the "commit" at the end, is there 
> anything wrong with how we are using SolrJ client? Are instances
> of SolrJClient not thread-safe? My assumption was that they were 
> threadsafe and that HTTP Client would manage the connection pool
> under the covers.
> 
> Here is the full stack trace:
> 
> com.chadis.api.business.RegistrationProcessor- Error processing 
> registration request java.lang.IllegalStateException: Connection is
> still allocated at
> org.apache.http.util.Asserts.check(Asserts.java:34) at 
> org.apache.http.impl.conn.BasicHttpClientConnectionManager.getConnecti
on
>
> 
(BasicHttpClientConnectionManager.java:251)
> at 
> org.apache.http.impl.conn.BasicHttpClientConnectionManager$1.get(Basic
Ht
>
> 
tpClientConnectionManager.java:202)
> at 
> org.apache.http.impl.execchain.MainClientExec.execute(MainClientExec.j
av
>
> 
a:191)
> at 
> org.apache.http.impl.execchain.ProtocolExec.execute(ProtocolExec.java:
18
>
> 
5)
> at 
> org.apache.http.impl.execchain.RetryExec.execute(RetryExec.java:89)
>
> 
at
> org.apache.http.impl.execchain.RedirectExec.execute(RedirectExec.java:
11
>
> 
1)
> at 
> org.apache.http.impl.client.InternalHttpClient.doExecute(InternalHttpC
li
>
> 
ent.java:185)
> at 
> org.apache.http.impl.client.CloseableHttpClient.execute(CloseableHttpC
li
>
> 
ent.java:83)
> at 
> org.apache.http.impl.client.CloseableHttpClient.execute(CloseableHttpC
li
>
> 
ent.java:56)
> at 
> org.apache.solr.client.solrj.impl.HttpSolrClient.executeMethod(HttpSol
rC
>
> 
lient.java:542)
> at 
> org.apache.solr.client.solrj.impl.HttpSolrClient.request(HttpSolrClien
t.
>
> 
java:255)
> at 
> org.apache.solr.client.solrj.impl.HttpSolrClient.request(HttpSolrClien
t.
>
> 
java:244)
> at 
> org.apache.solr.client.solrj.SolrRequest.process(SolrRequest.java:194)
>
> 
at
> org.apache.solr.client.solrj.SolrClient.add(SolrClient.java:173) 
> at 
> org.apache.solr.client.solrj.SolrClient.add(SolrClient.java:138) 
> at 
> org.apache.solr.client.solrj.SolrClient.add(SolrClient.java:152) at
> [my code, calling SolrClient.add()]
> 
> Any ideas?
> 
> Thanks, -chris
> 

For those interested, it looks like I was naïvely using
BasicHttpClientConnectionManager, which is totally inappropriate in a
multi-user threaded environment.

I switched to PooledHttpClientConnectionManager and that seems to be
working much better, now. :)

- -chris
-----BEGIN PGP SIGNATURE-----
Comment: Using GnuPG with Thunderbird - https://www.enigmail.net/

iQIzBAEBCAAdFiEEMmKgYcQvxMe7tcJcHPApP6U8pFgFAlulHN0ACgkQHPApP6U8
pFiWnRAAxIprILEjjF6rhwVZfmIFjLo8G5QNqMLZZ/4lIPEIDE8ojnCT8oiFpOru
LakIn60DkQvgIioihvNtILjO7YJUPr0Pmoq+1feCQSSRtIFwBRoyvYahzUfx0v55
rWMRcJwWo/Vr1YsyQpH33O80F07himXxqmpiQeaQd+t+d9WYOpmBn8ENuG8QEd9g
fc6yELLpJSpC6DFslCjRtAhMVNt3thdpbmYBwuKtoxHV8tuenXoxm/QQRLzJia/J
AWsNB9boYNPF1T8rGt+eft4wej71t8ac00jzj+ylkQjPpPdexp+NSEGDRCfYoz6I
bEVIVEy39f1SoyAlBnrS1QJqas9FwzMPd2tNv3y5fFCbYnKnHh50YaLgv1JAUali
UQVDtlKGwPOrbbB2SBJiX3dK263RCQSSP9eJIDvyrGzRyRAgE9fzsVmvpokicMzx
ZFiCZuIPPvmmGDvXBQ+lmtBvbav6ajsU3XyGEu+aawo6Lo7MgbdcLCPj839GR5Yd
tDxMM2O8Wpkr4FRo7hbMlKJb5KoWJNtHjs5QQNFYUFmYwSXnU9OwH7B3fCpPVC2t
OfBT5EKb8L1TWPog3zxFzrY5MQgJ2wSfBBphh2zeiFUSSLzb6T6F+ryv3rAzRO1U
6u6pfdf8AZ22gonPXs/mM4HbsL8dpP1Oyb6poHlaprxggKP7XqQ=
=sHv2
-----END PGP SIGNATURE-----

Reply via email to