Björn Häuser created SOLR-11208:
-----------------------------------

             Summary: Usage SynchronousQueue in Executors prevent large scale 
operations
                 Key: SOLR-11208
                 URL: https://issues.apache.org/jira/browse/SOLR-11208
             Project: Solr
          Issue Type: Bug
      Security Level: Public (Default Security Level. Issues are Public)
    Affects Versions: 6.6
            Reporter: Björn Häuser


I am not sure where to start with this one.

I tried to post this already on the mailing list: 
https://mail-archives.apache.org/mod_mbox/lucene-solr-user/201708.mbox/%3c48c49426-33a2-4d79-ae26-a4515b8f8...@gmail.com%3e

In short: the usage of a SynchronousQueue as the workQeue prevents more tasks 
than max threads.

For example, taken from OverseerCollectionMessageHandler:


{code:java}
  ExecutorService tpe = new ExecutorUtil.MDCAwareThreadPoolExecutor(5, 10, 0L, 
TimeUnit.MILLISECONDS,
      new SynchronousQueue<>(),
      new 
DefaultSolrThreadFactory("OverseerCollectionMessageHandlerThreadFactory"));
{code}

This Executor is used when doing a REPLACENODE (= ADDREPLICA) command. When the 
node has more than 10 collections this will fail with the mentioned 
java.util.concurrent.RejectedExecutionException.

I am also not sure how to fix this. Just replacing the queue with a different 
implementation feels wrong to me or could cause unwanted side behaviour.

Thanks




--
This message was sent by Atlassian JIRA
(v6.4.14#64029)

---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscr...@lucene.apache.org
For additional commands, e-mail: dev-h...@lucene.apache.org

Reply via email to