mirror of https://github.com/apache/lucene.git
SOLR-5240: unlimited core loading threads to fix waiting-for-other-replicas deadlock
git-svn-id: https://svn.apache.org/repos/asf/lucene/dev/trunk@1523871 13f79535-47bb-0310-9956-ffa450edef68
This commit is contained in:
parent
804083be27
commit
4b0c01af41
|
@ -267,6 +267,11 @@ Bug Fixes
|
||||||
|
|
||||||
* SOLR-5150: HdfsIndexInput may not fully read requested bytes. (Mark Miller, Patrick Hunt)
|
* SOLR-5150: HdfsIndexInput may not fully read requested bytes. (Mark Miller, Patrick Hunt)
|
||||||
|
|
||||||
|
* SOLR-5240: All solr cores will now be loaded in parallel (as opposed to a fixed number)
|
||||||
|
in zookeeper mode to avoid deadlocks due to replicas waiting for other replicas
|
||||||
|
to come up. (yonik)
|
||||||
|
|
||||||
|
|
||||||
Optimizations
|
Optimizations
|
||||||
----------------------
|
----------------------
|
||||||
|
|
||||||
|
|
|
@ -57,6 +57,9 @@ import java.util.concurrent.ExecutorCompletionService;
|
||||||
import java.util.concurrent.ExecutorService;
|
import java.util.concurrent.ExecutorService;
|
||||||
import java.util.concurrent.Executors;
|
import java.util.concurrent.Executors;
|
||||||
import java.util.concurrent.Future;
|
import java.util.concurrent.Future;
|
||||||
|
import java.util.concurrent.LinkedBlockingQueue;
|
||||||
|
import java.util.concurrent.ThreadPoolExecutor;
|
||||||
|
import java.util.concurrent.TimeUnit;
|
||||||
|
|
||||||
import static com.google.common.base.Preconditions.checkNotNull;
|
import static com.google.common.base.Preconditions.checkNotNull;
|
||||||
|
|
||||||
|
@ -209,8 +212,10 @@ public class CoreContainer {
|
||||||
containerProperties = cfg.getSolrProperties("solr");
|
containerProperties = cfg.getSolrProperties("solr");
|
||||||
|
|
||||||
// setup executor to load cores in parallel
|
// setup executor to load cores in parallel
|
||||||
ExecutorService coreLoadExecutor = Executors.newFixedThreadPool(cfg.getCoreLoadThreadCount(),
|
// do not limit the size of the executor in zk mode since cores may try and wait for each other.
|
||||||
new DefaultSolrThreadFactory("coreLoadExecutor"));
|
ExecutorService coreLoadExecutor = Executors.newFixedThreadPool(
|
||||||
|
( zkSys.getZkController() == null ? cfg.getCoreLoadThreadCount() : Integer.MAX_VALUE ),
|
||||||
|
new DefaultSolrThreadFactory("coreLoadExecutor") );
|
||||||
|
|
||||||
try {
|
try {
|
||||||
CompletionService<SolrCore> completionService = new ExecutorCompletionService<SolrCore>(
|
CompletionService<SolrCore> completionService = new ExecutorCompletionService<SolrCore>(
|
||||||
|
|
Loading…
Reference in New Issue