Timothy Potter created SOLR-6264:
------------------------------------

             Summary: optimize with waitSearcher=true leads to serial execution 
across all replicas
                 Key: SOLR-6264
                 URL: https://issues.apache.org/jira/browse/SOLR-6264
             Project: Solr
          Issue Type: Improvement
          Components: SolrCloud
            Reporter: Timothy Potter


Regardless of whether one agrees with optimizing, when you execute an optimize 
request using waitSearcher=true, the requests from the controller node are sent 
to each replica in the collection serially. 

You can send the optimize command to the update handler for a collection to any 
node in the cluster. For instance, if I had a collection named "foo":

curl -i -v http://localhost:8984/solr/foo/update --data-binary '<optimize 
maxSegments="1" waitSearcher="true"/>' -H 'Content-type:application/xml'

The node that receives this request will collect the URL for all "live" 
replicas in the collection (not just leaders) (see 
DistributedUpdateProcessor#getCollectionUrls) and then forward the commit 
request to each of them. On the surface, the code looks like it forwards the 
request asynchronously to all replicas. However, this is not actually what 
happens; the commit requests to each replica in the collection will be 
processed serially when using waitSearcher=true (because 
ConcurrentUpdateSolrServer's background queue processing is by-passed for 
commits).

Bottom-line, if you request the collection to be optimized, the request gets 
forwarded around as you'd expect but is done synchronously so can take a long 
time. 



--
This message was sent by Atlassian JIRA
(v6.2#6252)

---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to