Hi,

when I perform a query using the CloudSolrClient the code first retrieves the DocCollection to determine to which instance the query should be send [1]. getDocCollection [2] does a lookup in a cache, which has a 60s expiration time [3]. When a DocCollection has to be reloaded this is guarded by a lock [4]. Per default there are 3 locks, which can cause some congestion. The main question though is why does the client need that timeout? According to this [5] comment the code does not use a watch. Wouldn't it make sense to use a watch? I thought the big advantage of the CloudSolrClient is that is knows were to send requests to, so that no extra hop needs to be done on the server side. Having to query ZooKeeper though for the current state does however take some of that advantage.

regards,
Hendrik

[1] https://github.com/apache/lucene-solr/blob/master/solr/solrj/src/java/org/apache/solr/client/solrj/impl/CloudSolrClient.java#L849 [2] https://github.com/apache/lucene-solr/blob/master/solr/solrj/src/java/org/apache/solr/client/solrj/impl/CloudSolrClient.java#L1180 [3] https://github.com/apache/lucene-solr/blob/master/solr/solrj/src/java/org/apache/solr/client/solrj/impl/CloudSolrClient.java#L162 [4] https://github.com/apache/lucene-solr/blob/master/solr/solrj/src/java/org/apache/solr/client/solrj/impl/CloudSolrClient.java#L1200 [5] https://github.com/apache/lucene-solr/blob/master/solr/solrj/src/java/org/apache/solr/client/solrj/impl/CloudSolrClient.java#L821

Reply via email to