You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@lucene.apache.org by ro...@apache.org on 2014/06/30 22:41:41 UTC

svn commit: r1606924 - in /lucene/dev/branches/branch_4x: ./ solr/ solr/CHANGES.txt solr/core/ solr/core/src/java/org/apache/solr/core/CoreContainer.java solr/core/src/java/org/apache/solr/core/SolrCores.java

Author: romseygeek
Date: Mon Jun 30 20:41:41 2014
New Revision: 1606924

URL: http://svn.apache.org/r1606924
Log:
SOLR-6171: Remove SolrCores coreNameToOrig map

Modified:
    lucene/dev/branches/branch_4x/   (props changed)
    lucene/dev/branches/branch_4x/solr/   (props changed)
    lucene/dev/branches/branch_4x/solr/CHANGES.txt   (contents, props changed)
    lucene/dev/branches/branch_4x/solr/core/   (props changed)
    lucene/dev/branches/branch_4x/solr/core/src/java/org/apache/solr/core/CoreContainer.java
    lucene/dev/branches/branch_4x/solr/core/src/java/org/apache/solr/core/SolrCores.java

Modified: lucene/dev/branches/branch_4x/solr/CHANGES.txt
URL: http://svn.apache.org/viewvc/lucene/dev/branches/branch_4x/solr/CHANGES.txt?rev=1606924&r1=1606923&r2=1606924&view=diff
==============================================================================
--- lucene/dev/branches/branch_4x/solr/CHANGES.txt (original)
+++ lucene/dev/branches/branch_4x/solr/CHANGES.txt Mon Jun 30 20:41:41 2014
@@ -94,6 +94,8 @@ Other Changes
 * SOLR-6170: CoreContainer.preRegisterInZk() and CoreContainer.register() commands
   are merged into CoreContainer.create(). (Alan Woodward)
 
+* SOLR-6171: Remove unused SolrCores coreNameToOrig map (Alan Woodward)
+
 ==================  4.9.0 ==================
 
 Versions of Major Components

Modified: lucene/dev/branches/branch_4x/solr/core/src/java/org/apache/solr/core/CoreContainer.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/branch_4x/solr/core/src/java/org/apache/solr/core/CoreContainer.java?rev=1606924&r1=1606923&r2=1606924&view=diff
==============================================================================
--- lucene/dev/branches/branch_4x/solr/core/src/java/org/apache/solr/core/CoreContainer.java (original)
+++ lucene/dev/branches/branch_4x/solr/core/src/java/org/apache/solr/core/CoreContainer.java Mon Jun 30 20:41:41 2014
@@ -18,7 +18,6 @@
 package org.apache.solr.core;
 
 import com.google.common.collect.Maps;
-
 import org.apache.solr.cloud.ZkController;
 import org.apache.solr.common.SolrException;
 import org.apache.solr.common.SolrException.ErrorCode;
@@ -35,22 +34,17 @@ import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
 import java.io.File;
+import java.util.ArrayList;
 import java.util.Collection;
 import java.util.Collections;
-import java.util.HashSet;
 import java.util.LinkedHashMap;
 import java.util.List;
 import java.util.Locale;
 import java.util.Map;
 import java.util.Properties;
-import java.util.Set;
 import java.util.concurrent.Callable;
-import java.util.concurrent.CompletionService;
-import java.util.concurrent.ExecutionException;
-import java.util.concurrent.ExecutorCompletionService;
 import java.util.concurrent.ExecutorService;
 import java.util.concurrent.Executors;
-import java.util.concurrent.Future;
 
 import static com.google.common.base.Preconditions.checkNotNull;
 
@@ -230,76 +224,38 @@ public class CoreContainer {
         new DefaultSolrThreadFactory("coreLoadExecutor") );
 
     try {
-      CompletionService<SolrCore> completionService = new ExecutorCompletionService<>(
-          coreLoadExecutor);
-
-      Set<Future<SolrCore>> pending = new HashSet<>();
 
       List<CoreDescriptor> cds = coresLocator.discover(this);
       checkForDuplicateCoreNames(cds);
 
+      List<Callable<SolrCore>> creators = new ArrayList<>();
       for (final CoreDescriptor cd : cds) {
-
-        final String name = cd.getName();
-        try {
-
-          if (cd.isTransient() || ! cd.isLoadOnStartup()) {
-            // Store it away for later use. includes non-transient but not
-            // loaded at startup cores.
-            solrCores.putDynamicDescriptor(name, cd);
-          }
-          if (cd.isLoadOnStartup()) { // The normal case
-
-            Callable<SolrCore> task = new Callable<SolrCore>() {
-              @Override
-              public SolrCore call() {
-                try {
-                  return create(cd, false);
-                } catch (Exception e) {
-                  SolrException.log(log, null, e);
-                  return null;
-                }
-              }
-            };
-            pending.add(completionService.submit(task));
-
-          }
-        } catch (Exception e) {
-          SolrException.log(log, null, e);
+        if (cd.isTransient() || !cd.isLoadOnStartup()) {
+          solrCores.putDynamicDescriptor(cd.getName(), cd);
         }
-      }
-
-      while (pending != null && pending.size() > 0) {
-        try {
-
-          Future<SolrCore> future = completionService.take();
-          if (future == null) return;
-          pending.remove(future);
-
-          try {
-            SolrCore c = future.get();
-            // track original names
-            if (c != null) {
-              solrCores.putCoreToOrigName(c, c.getName());
+        if (cd.isLoadOnStartup()) {
+          creators.add(new Callable<SolrCore>() {
+            @Override
+            public SolrCore call() throws Exception {
+              return create(cd, false);   
             }
-          } catch (ExecutionException e) {
-            SolrException.log(SolrCore.log, "Error loading core", e);
-          }
-
-        } catch (InterruptedException e) {
-          throw new SolrException(SolrException.ErrorCode.SERVICE_UNAVAILABLE,
-              "interrupted while loading core", e);
+          });
         }
       }
 
+      try {
+        coreLoadExecutor.invokeAll(creators);
+      }
+      catch (InterruptedException e) {
+        throw new SolrException(SolrException.ErrorCode.SERVICE_UNAVAILABLE, "Interrupted while loading cores");
+      }
+
       // Start the background thread
       backgroundCloser = new CloserThread(this, solrCores, cfg);
       backgroundCloser.start();
 
     } finally {
-      if (coreLoadExecutor != null) {
-        ExecutorUtil.shutdownNowAndAwaitTermination(coreLoadExecutor);
-      }
+      ExecutorUtil.shutdownNowAndAwaitTermination(coreLoadExecutor);
     }
     
     if (isZooKeeperAware()) {
@@ -616,8 +572,6 @@ public class CoreContainer {
         ConfigSet coreConfig = coreConfigService.getConfig(cd);
         log.info("Reloading SolrCore '{}' using configuration from {}", cd.getName(), coreConfig.getName());
         SolrCore newCore = core.reload(coreConfig, core);
-        // keep core to orig name link
-        solrCores.removeCoreToOrigName(newCore, core);
         registerCore(name, newCore, false);
       } finally {
         solrCores.removeFromPendingOps(name);
@@ -654,7 +608,7 @@ public class CoreContainer {
   public SolrCore remove( String name ) {
     name = checkDefault(name);
     CoreDescriptor cd = solrCores.getCoreDescriptor(name);
-    SolrCore removed = solrCores.remove(name, true);
+    SolrCore removed = solrCores.remove(name);
     coresLocator.delete(this, cd);
     return removed;
   }
@@ -664,7 +618,7 @@ public class CoreContainer {
       if (core != null) {
         registerCore(toName, core, true);
         name = checkDefault(name);
-        SolrCore old = solrCores.remove(name, false);
+        SolrCore old = solrCores.remove(name);
         coresLocator.rename(this, old.getCoreDescriptor(), core.getCoreDescriptor());
       }
     }
@@ -857,10 +811,6 @@ public class CoreContainer {
     log.error(msg, ex);
     return new SolrException(ErrorCode.SERVER_ERROR, msg, ex);
   }
-  
-  String getCoreToOrigName(SolrCore core) {
-    return solrCores.getCoreToOrigName(core);
-  }
 
   public SolrResourceLoader getResourceLoader() {
     return loader;

Modified: lucene/dev/branches/branch_4x/solr/core/src/java/org/apache/solr/core/SolrCores.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/branch_4x/solr/core/src/java/org/apache/solr/core/SolrCores.java?rev=1606924&r1=1606923&r2=1606924&view=diff
==============================================================================
--- lucene/dev/branches/branch_4x/solr/core/src/java/org/apache/solr/core/SolrCores.java (original)
+++ lucene/dev/branches/branch_4x/solr/core/src/java/org/apache/solr/core/SolrCores.java Mon Jun 30 20:41:41 2014
@@ -30,7 +30,6 @@ import java.util.List;
 import java.util.Map;
 import java.util.Set;
 import java.util.TreeSet;
-import java.util.concurrent.ConcurrentHashMap;
 
 
 class SolrCores {
@@ -45,8 +44,6 @@ class SolrCores {
 
   private final Map<String, SolrCore> createdCores = new LinkedHashMap<>();
 
-  private Map<SolrCore, String> coreToOrigName = new ConcurrentHashMap<>();
-
   private final CoreContainer container;
 
   private static final Logger logger = LoggerFactory.getLogger(SolrCores.class);
@@ -230,14 +227,11 @@ class SolrCores {
 
   }
 
-  protected SolrCore remove(String name, boolean removeOrig) {
+  protected SolrCore remove(String name) {
 
     synchronized (modifyLock) {
       SolrCore tmp = cores.remove(name);
       SolrCore ret = null;
-      if (removeOrig && tmp != null) {
-        coreToOrigName.remove(tmp);
-      }
       ret = (ret == null) ? tmp : ret;
       // It could have been a newly-created core. It could have been a transient core. The newly-created cores
       // in particular should be checked. It could have been a dynamic core.
@@ -250,24 +244,6 @@ class SolrCores {
     }
   }
 
-  protected void putCoreToOrigName(SolrCore c, String name) {
-
-    synchronized (modifyLock) {
-      coreToOrigName.put(c, name);
-    }
-
-  }
-
-  protected void removeCoreToOrigName(SolrCore newCore, SolrCore core) {
-
-    synchronized (modifyLock) {
-      String origName = coreToOrigName.remove(core);
-      if (origName != null) {
-        coreToOrigName.put(newCore, origName);
-      }
-    }
-  }
-
   /* If you don't increment the reference count, someone could close the core before you use it. */
   protected SolrCore  getCoreFromAnyList(String name, boolean incRefCount) {
     synchronized (modifyLock) {
@@ -338,12 +314,6 @@ class SolrCores {
 
   }
 
-  protected String getCoreToOrigName(SolrCore solrCore) {
-    synchronized (modifyLock) {
-      return coreToOrigName.get(solrCore);
-    }
-  }
-
   // Wait here until any pending operations (load, unload or reload) are completed on this core.
   protected SolrCore waitAddPendingCoreOps(String name) {