You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@lucene.apache.org by is...@apache.org on 2020/09/19 05:22:28 UTC

[lucene-solr] branch jira/solr-14151-revert-8x created (now 30b2349)

This is an automated email from the ASF dual-hosted git repository.

ishan pushed a change to branch jira/solr-14151-revert-8x
in repository https://gitbox.apache.org/repos/asf/lucene-solr.git.


      at 30b2349  Revert "SOLR-14750: TestBulkSchemaConcurrent fails often(#1760)"

This branch includes the following new commits:

     new a9100f5  Revert "SOLR-14151:missing test jaar"
     new 0d529fb  Revert "SOLR-14151: support loading encoder"
     new 6ab1035  Revert "SOLR-14151: Fixing TestBulkSchemaConcurrent failures"
     new 96720ff  Revert "SOLR-14151: Bug fixes"
     new dd12b5e  Revert "SOLR-14151: reverting an accidental commit bd22f9a"
     new dc75345  Revert "SOLR-14151: move the SolrClassLoader interface to SolrJ"
     new 54d2f10  Revert "SOLR-14151: move the SolrClassLoader interface to SolrJ"
     new 34e72fa  Revert "SOLR-14151: Make schema components load from packages bug fixes"
     new 5e53563  Revert "SOLR-14750: use core id to avoid duplicate core reloads"
     new 30b2349  Revert "SOLR-14750: TestBulkSchemaConcurrent fails often(#1760)"

The 10 revisions listed above as "new" are entirely new to this
repository and will be described in separate emails.  The revisions
listed as "add" were already present in the repository and have only
been added to this reference.



[lucene-solr] 07/10: Revert "SOLR-14151: move the SolrClassLoader interface to SolrJ"

Posted by is...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

ishan pushed a commit to branch jira/solr-14151-revert-8x
in repository https://gitbox.apache.org/repos/asf/lucene-solr.git

commit 54d2f10233bf4e0a8360d27c810beed8683081f1
Author: Ishan Chattopadhyaya <is...@apache.org>
AuthorDate: Sat Sep 19 10:51:21 2020 +0530

    Revert "SOLR-14151: move the SolrClassLoader interface to SolrJ"
    
    This reverts commit c5612861e9657d82fe4b1f40996ce5d8e19b72bd.
---
 .../cloud => core/src/java/org/apache/solr/core}/SolrClassLoader.java   | 2 +-
 solr/core/src/java/org/apache/solr/core/SolrResourceLoader.java         | 1 -
 solr/core/src/java/org/apache/solr/pkg/PackageListeningClassLoader.java | 2 +-
 solr/core/src/java/org/apache/solr/schema/FieldTypePluginLoader.java    | 2 +-
 solr/core/src/java/org/apache/solr/schema/IndexSchema.java              | 2 +-
 .../core/src/java/org/apache/solr/util/plugin/AbstractPluginLoader.java | 2 +-
 6 files changed, 5 insertions(+), 6 deletions(-)

diff --git a/solr/solrj/src/java/org/apache/solr/common/cloud/SolrClassLoader.java b/solr/core/src/java/org/apache/solr/core/SolrClassLoader.java
similarity index 96%
rename from solr/solrj/src/java/org/apache/solr/common/cloud/SolrClassLoader.java
rename to solr/core/src/java/org/apache/solr/core/SolrClassLoader.java
index 98e920d..7973b63 100644
--- a/solr/solrj/src/java/org/apache/solr/common/cloud/SolrClassLoader.java
+++ b/solr/core/src/java/org/apache/solr/core/SolrClassLoader.java
@@ -14,7 +14,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.solr.common.cloud;
+package org.apache.solr.core;
 
 
 /** A generic interface to load plugin classes */
diff --git a/solr/core/src/java/org/apache/solr/core/SolrResourceLoader.java b/solr/core/src/java/org/apache/solr/core/SolrResourceLoader.java
index 4261a10..810c48d 100644
--- a/solr/core/src/java/org/apache/solr/core/SolrResourceLoader.java
+++ b/solr/core/src/java/org/apache/solr/core/SolrResourceLoader.java
@@ -41,7 +41,6 @@ import org.apache.lucene.codecs.DocValuesFormat;
 import org.apache.lucene.codecs.PostingsFormat;
 import org.apache.lucene.util.IOUtils;
 import org.apache.solr.common.SolrException;
-import org.apache.solr.common.cloud.SolrClassLoader;
 import org.apache.solr.handler.component.SearchComponent;
 import org.apache.solr.handler.component.ShardHandlerFactory;
 import org.apache.solr.request.SolrRequestHandler;
diff --git a/solr/core/src/java/org/apache/solr/pkg/PackageListeningClassLoader.java b/solr/core/src/java/org/apache/solr/pkg/PackageListeningClassLoader.java
index c10af0c..ced4bd0 100644
--- a/solr/core/src/java/org/apache/solr/pkg/PackageListeningClassLoader.java
+++ b/solr/core/src/java/org/apache/solr/pkg/PackageListeningClassLoader.java
@@ -22,7 +22,7 @@ import org.apache.solr.common.MapWriter;
 import org.apache.solr.common.SolrException;
 import org.apache.solr.core.CoreContainer;
 import org.apache.solr.core.PluginInfo;
-import org.apache.solr.common.cloud.SolrClassLoader;
+import org.apache.solr.core.SolrClassLoader;
 import org.apache.solr.core.SolrResourceLoader;
 
 import java.io.IOException;
diff --git a/solr/core/src/java/org/apache/solr/schema/FieldTypePluginLoader.java b/solr/core/src/java/org/apache/solr/schema/FieldTypePluginLoader.java
index abe6125..d42cd54 100644
--- a/solr/core/src/java/org/apache/solr/schema/FieldTypePluginLoader.java
+++ b/solr/core/src/java/org/apache/solr/schema/FieldTypePluginLoader.java
@@ -33,7 +33,7 @@ import org.apache.lucene.analysis.util.TokenizerFactory;
 import org.apache.lucene.util.Version;
 import org.apache.solr.analysis.TokenizerChain;
 import org.apache.solr.common.SolrException;
-import org.apache.solr.common.cloud.SolrClassLoader;
+import org.apache.solr.core.SolrClassLoader;
 import org.apache.solr.core.SolrConfig;
 import org.apache.solr.util.DOMUtil;
 import org.apache.solr.util.plugin.AbstractPluginLoader;
diff --git a/solr/core/src/java/org/apache/solr/schema/IndexSchema.java b/solr/core/src/java/org/apache/solr/schema/IndexSchema.java
index eb0c86e..60727d0 100644
--- a/solr/core/src/java/org/apache/solr/schema/IndexSchema.java
+++ b/solr/core/src/java/org/apache/solr/schema/IndexSchema.java
@@ -66,7 +66,7 @@ import org.apache.solr.common.util.NamedList;
 import org.apache.solr.common.util.Pair;
 import org.apache.solr.common.util.SimpleOrderedMap;
 import org.apache.solr.core.CoreContainer;
-import org.apache.solr.common.cloud.SolrClassLoader;
+import org.apache.solr.core.SolrClassLoader;
 import org.apache.solr.core.SolrCore;
 import org.apache.solr.core.SolrResourceLoader;
 import org.apache.solr.core.XmlConfigFile;
diff --git a/solr/core/src/java/org/apache/solr/util/plugin/AbstractPluginLoader.java b/solr/core/src/java/org/apache/solr/util/plugin/AbstractPluginLoader.java
index 3a90013..8324f2d 100644
--- a/solr/core/src/java/org/apache/solr/util/plugin/AbstractPluginLoader.java
+++ b/solr/core/src/java/org/apache/solr/util/plugin/AbstractPluginLoader.java
@@ -22,7 +22,7 @@ import java.util.List;
 
 import org.apache.solr.common.SolrException;
 import org.apache.solr.common.SolrException.ErrorCode;
-import org.apache.solr.common.cloud.SolrClassLoader;
+import org.apache.solr.core.SolrClassLoader;
 import org.apache.solr.util.DOMUtil;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;


[lucene-solr] 09/10: Revert "SOLR-14750: use core id to avoid duplicate core reloads"

Posted by is...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

ishan pushed a commit to branch jira/solr-14151-revert-8x
in repository https://gitbox.apache.org/repos/asf/lucene-solr.git

commit 5e535639faaa6d06ee1710a01a282792bef469c6
Author: Ishan Chattopadhyaya <is...@apache.org>
AuthorDate: Sat Sep 19 10:51:43 2020 +0530

    Revert "SOLR-14750: use core id to avoid duplicate core reloads"
    
    This reverts commit 21f8e00c1e3c8cf05f3dbc32ac13d7719de5fd4d.
---
 solr/core/src/java/org/apache/solr/core/SolrCore.java             | 3 +--
 solr/core/src/java/org/apache/solr/handler/SolrConfigHandler.java | 2 +-
 solr/core/src/java/org/apache/solr/schema/SchemaManager.java      | 4 ++--
 3 files changed, 4 insertions(+), 5 deletions(-)

diff --git a/solr/core/src/java/org/apache/solr/core/SolrCore.java b/solr/core/src/java/org/apache/solr/core/SolrCore.java
index f7533cb..711e67b 100644
--- a/solr/core/src/java/org/apache/solr/core/SolrCore.java
+++ b/solr/core/src/java/org/apache/solr/core/SolrCore.java
@@ -3084,7 +3084,6 @@ public final class SolrCore implements SolrInfoBean, SolrMetricProducer, Closeab
 
   public static Runnable getConfListener(SolrCore core, ZkSolrResourceLoader zkSolrResourceLoader) {
     final String coreName = core.getName();
-    final UUID coreId = core.uniqueId;
     final CoreContainer cc = core.getCoreContainer();
     final String overlayPath = zkSolrResourceLoader.getConfigSetZkPath() + "/" + ConfigOverlay.RESOURCE_NAME;
     final String solrConfigPath = zkSolrResourceLoader.getConfigSetZkPath() + "/" + core.getSolrConfig().getName();
@@ -3120,7 +3119,7 @@ public final class SolrCore implements SolrInfoBean, SolrMetricProducer, Closeab
         if (configHandler.getReloadLock().tryLock()) {
 
           try {
-            cc.reload(coreName, coreId);
+            cc.reload(coreName);
           } catch (SolrCoreState.CoreIsClosedException e) {
             /*no problem this core is already closed*/
           } finally {
diff --git a/solr/core/src/java/org/apache/solr/handler/SolrConfigHandler.java b/solr/core/src/java/org/apache/solr/handler/SolrConfigHandler.java
index 7f48b63..cbfbcae 100644
--- a/solr/core/src/java/org/apache/solr/handler/SolrConfigHandler.java
+++ b/solr/core/src/java/org/apache/solr/handler/SolrConfigHandler.java
@@ -548,7 +548,7 @@ public class SolrConfigHandler extends RequestHandlerBase implements SolrCoreAwa
             latestVersion, 30);
       } else {
         SolrResourceLoader.persistConfLocally(loader, ConfigOverlay.RESOURCE_NAME, overlay.toByteArray());
-        req.getCore().getCoreContainer().reload(req.getCore().getName(), req.getCore().uniqueId);
+        req.getCore().getCoreContainer().reload(req.getCore().getName());
         log.info("Executed config commands successfully and persisted to File System {}", ops);
       }
 
diff --git a/solr/core/src/java/org/apache/solr/schema/SchemaManager.java b/solr/core/src/java/org/apache/solr/schema/SchemaManager.java
index d2f5b67..2402e15 100644
--- a/solr/core/src/java/org/apache/solr/schema/SchemaManager.java
+++ b/solr/core/src/java/org/apache/solr/schema/SchemaManager.java
@@ -132,7 +132,7 @@ public class SchemaManager {
             latestVersion = ZkController.persistConfigResourceToZooKeeper
                 (zkLoader, managedIndexSchema.getSchemaZkVersion(), managedIndexSchema.getResourceName(),
                  sw.toString().getBytes(StandardCharsets.UTF_8), true);
-            req.getCore().getCoreContainer().reload(req.getCore().getName(), req.getCore().uniqueId);
+            req.getCore().getCoreContainer().reload(req.getCore().getName());
             break;
           } catch (ZkController.ResourceModifiedInZkException e) {
             log.info("Schema was modified by another node. Retrying..");
@@ -142,7 +142,7 @@ public class SchemaManager {
             //only for non cloud stuff
             managedIndexSchema.persistManagedSchema(false);
             core.setLatestSchema(managedIndexSchema);
-            core.getCoreContainer().reload(core.getName(), core.uniqueId);
+            core.getCoreContainer().reload(core.getName());
           } catch (SolrException e) {
             log.warn(errorMsg);
             errors = singletonList(errorMsg + e.getMessage());


[lucene-solr] 03/10: Revert "SOLR-14151: Fixing TestBulkSchemaConcurrent failures"

Posted by is...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

ishan pushed a commit to branch jira/solr-14151-revert-8x
in repository https://gitbox.apache.org/repos/asf/lucene-solr.git

commit 6ab1035713a7e39b321b481a1857ebe81d66484b
Author: Ishan Chattopadhyaya <is...@apache.org>
AuthorDate: Sat Sep 19 10:49:21 2020 +0530

    Revert "SOLR-14151: Fixing TestBulkSchemaConcurrent failures"
    
    This reverts commit 641589a9fbe7c01be9b340133d49b33ad64d21ea.
---
 solr/core/src/java/org/apache/solr/core/ConfigSet.java | 13 +++++--------
 1 file changed, 5 insertions(+), 8 deletions(-)

diff --git a/solr/core/src/java/org/apache/solr/core/ConfigSet.java b/solr/core/src/java/org/apache/solr/core/ConfigSet.java
index 7161bc1..8112477 100644
--- a/solr/core/src/java/org/apache/solr/core/ConfigSet.java
+++ b/solr/core/src/java/org/apache/solr/core/ConfigSet.java
@@ -30,7 +30,6 @@ public class ConfigSet {
   private final String name;
 
   private final SolrConfig solrconfig;
-  private IndexSchema schema;
 
   private final SchemaSupplier schemaSupplier;
 
@@ -41,11 +40,10 @@ public class ConfigSet {
 
   @SuppressWarnings({"rawtypes"})
   public ConfigSet(String name, SolrConfig solrConfig, SchemaSupplier indexSchemaSupplier,
-                   NamedList properties, boolean trusted) {
+      NamedList properties, boolean trusted) {
     this.name = name;
     this.solrconfig = solrConfig;
     this.schemaSupplier = indexSchemaSupplier;
-    schema = schemaSupplier.get(true);
     this.properties = properties;
     this.trusted = trusted;
   }
@@ -63,18 +61,17 @@ public class ConfigSet {
    * @param forceFetch get a fresh value and not cached value
    */
   public IndexSchema getIndexSchema(boolean forceFetch) {
-    if(forceFetch)  schema = schemaSupplier.get(true);
-    return schema;
+    return schemaSupplier.get(forceFetch);
   }
   public IndexSchema getIndexSchema() {
-    return schema;
+    return schemaSupplier.get(false);
   }
 
   @SuppressWarnings({"rawtypes"})
   public NamedList getProperties() {
     return properties;
   }
-
+  
   public boolean isTrusted() {
     return trusted;
   }
@@ -85,7 +82,7 @@ public class ConfigSet {
    * So, we may not be able to update the core if we the schema classes are updated
    * */
   interface SchemaSupplier {
-    IndexSchema get(boolean forceFetch);
+     IndexSchema get(boolean forceFetch);
 
   }
 }


[lucene-solr] 08/10: Revert "SOLR-14151: Make schema components load from packages bug fixes"

Posted by is...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

ishan pushed a commit to branch jira/solr-14151-revert-8x
in repository https://gitbox.apache.org/repos/asf/lucene-solr.git

commit 34e72fa54fc40adc00feba1e8259018ada676294
Author: Ishan Chattopadhyaya <is...@apache.org>
AuthorDate: Sat Sep 19 10:51:33 2020 +0530

    Revert "SOLR-14151: Make schema components load from packages bug fixes"
    
    This reverts commit bd22f9a5d07ab3e99047add4684dc44b60707297.
---
 .../apache/solr/cloud/ZkSolrResourceLoader.java    |  6 ----
 .../org/apache/solr/core/ConfigSetService.java     |  4 +--
 .../java/org/apache/solr/core/CoreContainer.java   | 21 +++++------
 .../src/java/org/apache/solr/core/SolrCore.java    | 24 ++++++-------
 .../src/java/org/apache/solr/core/SolrCores.java   |  7 +---
 .../org/apache/solr/core/SolrResourceLoader.java   |  8 -----
 .../org/apache/solr/handler/SchemaHandler.java     |  7 +---
 .../org/apache/solr/handler/SolrConfigHandler.java |  2 +-
 .../java/org/apache/solr/schema/IndexSchema.java   | 42 ++--------------------
 .../solr/schema/ManagedIndexSchemaFactory.java     | 15 ++------
 .../java/org/apache/solr/schema/SchemaManager.java |  4 +--
 .../src/test/org/apache/solr/pkg/TestPackages.java |  1 +
 12 files changed, 33 insertions(+), 108 deletions(-)

diff --git a/solr/core/src/java/org/apache/solr/cloud/ZkSolrResourceLoader.java b/solr/core/src/java/org/apache/solr/cloud/ZkSolrResourceLoader.java
index cde48f1..4eec58f 100644
--- a/solr/core/src/java/org/apache/solr/cloud/ZkSolrResourceLoader.java
+++ b/solr/core/src/java/org/apache/solr/cloud/ZkSolrResourceLoader.java
@@ -27,7 +27,6 @@ import java.util.Properties;
 import org.apache.solr.common.SolrException.ErrorCode;
 import org.apache.solr.common.cloud.ZkConfigManager;
 import org.apache.solr.common.cloud.ZooKeeperException;
-import org.apache.solr.core.CoreContainer;
 import org.apache.solr.core.SolrResourceLoader;
 import org.apache.solr.core.SolrResourceNotFoundException;
 import org.apache.solr.schema.ZkIndexSchemaReader;
@@ -159,9 +158,4 @@ public class ZkSolrResourceLoader extends SolrResourceLoader {
   }
 
   public ZkIndexSchemaReader getZkIndexSchemaReader() { return zkIndexSchemaReader; }
-
-  @Override
-  public CoreContainer getCoreContainer() {
-    return zkController.getCoreContainer();
-  }
 }
diff --git a/solr/core/src/java/org/apache/solr/core/ConfigSetService.java b/solr/core/src/java/org/apache/solr/core/ConfigSetService.java
index 2d09bd6..76bc0c1 100644
--- a/solr/core/src/java/org/apache/solr/core/ConfigSetService.java
+++ b/solr/core/src/java/org/apache/solr/core/ConfigSetService.java
@@ -81,8 +81,8 @@ public abstract class ConfigSetService {
               ) ? false: true;
 
       SolrConfig solrConfig = createSolrConfig(dcore, coreLoader, trusted);
-      coreLoader.solrConfig = solrConfig;
-      return new ConfigSet(configSetName(dcore), solrConfig, force -> ConfigSetService.this.createIndexSchema(dcore, solrConfig, false), properties, trusted);
+      IndexSchema indexSchema = createIndexSchema(dcore, solrConfig, false);
+      return new ConfigSet(configSetName(dcore), solrConfig, force -> indexSchema, properties, trusted);
     } catch (Exception e) {
       throw new SolrException(SolrException.ErrorCode.SERVER_ERROR,
           "Could not load conf for core " + dcore.getName() +
diff --git a/solr/core/src/java/org/apache/solr/core/CoreContainer.java b/solr/core/src/java/org/apache/solr/core/CoreContainer.java
index df9eef9..3e9b424 100644
--- a/solr/core/src/java/org/apache/solr/core/CoreContainer.java
+++ b/solr/core/src/java/org/apache/solr/core/CoreContainer.java
@@ -1611,13 +1611,6 @@ public class CoreContainer {
   public void reload(String name) {
     reload(name, null);
   }
-  public void reload(String name, UUID coreId, boolean async) {
-    if(async) {
-      runAsync(() -> reload(name, coreId));
-    } else {
-      reload(name, coreId);
-    }
-  }
   /**
    * Recreates a SolrCore.
    * While the new core is loading, requests will continue to be dispatched to
@@ -1632,8 +1625,13 @@ public class CoreContainer {
       throw new AlreadyClosedException();
     }
     SolrCore newCore = null;
-    SolrCore core = solrCores.getCoreFromAnyList(name, false, coreId);
+    SolrCore core = solrCores.getCoreFromAnyList(name, false);
     if (core != null) {
+      if(coreId != null && core.uniqueId != coreId) {
+        //trying to reload an already unloaded core
+        return;
+      }
+
       // The underlying core properties files may have changed, we don't really know. So we have a (perhaps) stale
       // CoreDescriptor and we need to reload it from the disk files
       CoreDescriptor cd = reloadCoreDescriptor(core.getCoreDescriptor());
@@ -1863,9 +1861,6 @@ public class CoreContainer {
     return cfg.getCoreRootDirectory();
   }
 
-  public SolrCore getCore(String name) {
-    return getCore(name, null);
-  }
   /**
    * Gets a core by name and increase its refcount.
    *
@@ -1874,10 +1869,10 @@ public class CoreContainer {
    * @throws SolrCoreInitializationException if a SolrCore with this name failed to be initialized
    * @see SolrCore#close()
    */
-  public SolrCore getCore(String name, UUID id) {
+  public SolrCore getCore(String name) {
 
     // Do this in two phases since we don't want to lock access to the cores over a load.
-    SolrCore core = solrCores.getCoreFromAnyList(name, true, id);
+    SolrCore core = solrCores.getCoreFromAnyList(name, true);
 
     // If a core is loaded, we're done just return it.
     if (core != null) {
diff --git a/solr/core/src/java/org/apache/solr/core/SolrCore.java b/solr/core/src/java/org/apache/solr/core/SolrCore.java
index ceff28b..f7533cb 100644
--- a/solr/core/src/java/org/apache/solr/core/SolrCore.java
+++ b/solr/core/src/java/org/apache/solr/core/SolrCore.java
@@ -201,7 +201,6 @@ public final class SolrCore implements SolrInfoBean, SolrMetricProducer, Closeab
 
   private final CoreDescriptor coreDescriptor;
   private final CoreContainer coreContainer;
-  private final ConfigSet configSet;
   private final SolrConfig solrConfig;
   private final SolrResourceLoader resourceLoader;
   private volatile IndexSchema schema;
@@ -227,6 +226,8 @@ public final class SolrCore implements SolrInfoBean, SolrMetricProducer, Closeab
   private IndexReaderFactory indexReaderFactory;
   private final Codec codec;
   private final MemClassLoader memClassLoader;
+  //singleton listener for all packages used in schema
+  private final PackageListeningClassLoader schemaPluginsLoader;
 
   private final List<Runnable> confListeners = new CopyOnWriteArrayList<>();
 
@@ -271,6 +272,9 @@ public final class SolrCore implements SolrInfoBean, SolrMetricProducer, Closeab
   public PackageListeners getPackageListeners() {
     return packageListeners;
   }
+  public PackageListeningClassLoader getSchemaPluginsLoader() {
+    return schemaPluginsLoader;
+  }
 
   static int boolean_query_max_clause_count = Integer.MIN_VALUE;
 
@@ -934,14 +938,16 @@ public final class SolrCore implements SolrInfoBean, SolrMetricProducer, Closeab
     final CountDownLatch latch = new CountDownLatch(1);
     try {
       this.coreContainer = coreContainer;
-      this.configSet = configSet;
       this.coreDescriptor = Objects.requireNonNull(coreDescriptor, "coreDescriptor cannot be null");
       setName(coreDescriptor.getName());
 
       this.solrConfig = configSet.getSolrConfig();
       this.resourceLoader = configSet.getSolrConfig().getResourceLoader();
+      schemaPluginsLoader = new PackageListeningClassLoader(coreContainer, resourceLoader,
+              solrConfig::maxPackageVersion,
+              () -> setLatestSchema(configSet.getIndexSchema()));
+      this.packageListeners.addListener(schemaPluginsLoader);
       IndexSchema schema = configSet.getIndexSchema();
-      schema.inform(this);
 
       this.configSetProperties = configSet.getProperties();
       // Initialize the metrics manager
@@ -2781,12 +2787,6 @@ public final class SolrCore implements SolrInfoBean, SolrMetricProducer, Closeab
     return memClassLoader;
   }
 
-  public void fetchLatestSchema() {
-    IndexSchema schema =  configSet.getIndexSchema(true);
-    schema.inform(this);
-    setLatestSchema(schema);
-  }
-
   public interface RawWriter {
     default String getContentType() {
       return BinaryResponseParser.BINARY_CONTENT_TYPE;
@@ -3099,7 +3099,7 @@ public final class SolrCore implements SolrInfoBean, SolrMetricProducer, Closeab
       SolrZkClient zkClient = cc.getZkController().getZkClient();
       int solrConfigversion, overlayVersion, managedSchemaVersion = 0;
       SolrConfig cfg = null;
-      try (SolrCore solrCore = cc.solrCores.getCoreFromAnyList(coreName, true, coreId)) {
+      try (SolrCore solrCore = cc.solrCores.getCoreFromAnyList(coreName, true)) {
         if (solrCore == null || solrCore.isClosed() || solrCore.getCoreContainer().isShutDown()) return;
         cfg = solrCore.getSolrConfig();
         solrConfigversion = solrCore.getSolrConfig().getOverlay().getZnodeVersion();
@@ -3120,7 +3120,7 @@ public final class SolrCore implements SolrInfoBean, SolrMetricProducer, Closeab
         if (configHandler.getReloadLock().tryLock()) {
 
           try {
-            cc.reload(coreName, coreId,true);
+            cc.reload(coreName, coreId);
           } catch (SolrCoreState.CoreIsClosedException e) {
             /*no problem this core is already closed*/
           } finally {
@@ -3133,7 +3133,7 @@ public final class SolrCore implements SolrInfoBean, SolrMetricProducer, Closeab
         return;
       }
       //some files in conf directory may have  other than managedschema, overlay, params
-      try (SolrCore solrCore = cc.solrCores.getCoreFromAnyList(coreName, true, coreId)) {
+      try (SolrCore solrCore = cc.solrCores.getCoreFromAnyList(coreName, true)) {
         if (solrCore == null || solrCore.isClosed() || cc.isShutDown()) return;
         for (Runnable listener : solrCore.confListeners) {
           try {
diff --git a/solr/core/src/java/org/apache/solr/core/SolrCores.java b/solr/core/src/java/org/apache/solr/core/SolrCores.java
index d9c1539..d18e3a1 100644
--- a/solr/core/src/java/org/apache/solr/core/SolrCores.java
+++ b/solr/core/src/java/org/apache/solr/core/SolrCores.java
@@ -34,7 +34,6 @@ import java.util.List;
 import java.util.Map;
 import java.util.Set;
 import java.util.TreeSet;
-import java.util.UUID;
 import java.util.concurrent.ConcurrentHashMap;
 import java.util.concurrent.ExecutorService;
 import java.util.concurrent.TimeUnit;
@@ -283,19 +282,15 @@ class SolrCores {
       return ret;
     }
   }
-  SolrCore  getCoreFromAnyList(String name, boolean incRefCount) {
-    return getCoreFromAnyList(name, incRefCount, null);
-  }
 
   /* If you don't increment the reference count, someone could close the core before you use it. */
-  SolrCore  getCoreFromAnyList(String name, boolean incRefCount, UUID coreId) {
+  SolrCore  getCoreFromAnyList(String name, boolean incRefCount) {
     synchronized (modifyLock) {
       SolrCore core = cores.get(name);
 
       if (core == null && getTransientCacheHandler() != null) {
         core = getTransientCacheHandler().getCore(name);
       }
-      if(core != null && coreId != null && coreId != core.uniqueId) return null;
 
       if (core != null && incRefCount) {
         core.open();
diff --git a/solr/core/src/java/org/apache/solr/core/SolrResourceLoader.java b/solr/core/src/java/org/apache/solr/core/SolrResourceLoader.java
index 810c48d..a073c9a 100644
--- a/solr/core/src/java/org/apache/solr/core/SolrResourceLoader.java
+++ b/solr/core/src/java/org/apache/solr/core/SolrResourceLoader.java
@@ -75,7 +75,6 @@ public class SolrResourceLoader implements ResourceLoader, Closeable, SolrClassL
   protected URLClassLoader classLoader;
   private final Path instanceDir;
   private String dataDir; // gone in 9.0
-  SolrConfig solrConfig;
 
 
 
@@ -789,13 +788,6 @@ public class SolrResourceLoader implements ResourceLoader, Closeable, SolrClassL
     }
     throw new SolrException( SolrException.ErrorCode.SERVER_ERROR, builder.toString() );
   }
-  public CoreContainer getCoreContainer() {
-    return null;
-  }
-
-  public SolrConfig getSolrConfig() {
-    return solrConfig;
-  }
 
   @Override
   public void close() throws IOException {
diff --git a/solr/core/src/java/org/apache/solr/handler/SchemaHandler.java b/solr/core/src/java/org/apache/solr/handler/SchemaHandler.java
index 70d4fee..fef5773 100644
--- a/solr/core/src/java/org/apache/solr/handler/SchemaHandler.java
+++ b/solr/core/src/java/org/apache/solr/handler/SchemaHandler.java
@@ -33,9 +33,7 @@ import org.apache.solr.common.util.SimpleOrderedMap;
 import org.apache.solr.common.util.StrUtils;
 import org.apache.solr.common.util.Utils;
 import org.apache.solr.core.PluginInfo;
-import org.apache.solr.core.SolrClassLoader;
 import org.apache.solr.core.SolrCore;
-import org.apache.solr.pkg.PackageListeningClassLoader;
 import org.apache.solr.request.SolrQueryRequest;
 import org.apache.solr.request.SolrRequestHandler;
 import org.apache.solr.response.SolrQueryResponse;
@@ -231,10 +229,7 @@ public class SchemaHandler extends RequestHandlerBase implements SolrCoreAware,
         String klas = (String) v;
         PluginInfo.ClassName parsedClassName = new PluginInfo.ClassName(klas);
         if (parsedClassName.pkg != null) {
-          SolrClassLoader cl = req.getCore().getLatestSchema().getSolrClassLoader();
-          MapWriter mw = cl instanceof PackageListeningClassLoader?
-              ((PackageListeningClassLoader) cl).getPackageVersion(parsedClassName):
-              null;
+          MapWriter mw = req.getCore().getSchemaPluginsLoader().getPackageVersion(parsedClassName);
           if (mw != null) nl.add("_packageinfo_", mw);
         }
       }
diff --git a/solr/core/src/java/org/apache/solr/handler/SolrConfigHandler.java b/solr/core/src/java/org/apache/solr/handler/SolrConfigHandler.java
index 20e8702..7f48b63 100644
--- a/solr/core/src/java/org/apache/solr/handler/SolrConfigHandler.java
+++ b/solr/core/src/java/org/apache/solr/handler/SolrConfigHandler.java
@@ -548,7 +548,7 @@ public class SolrConfigHandler extends RequestHandlerBase implements SolrCoreAwa
             latestVersion, 30);
       } else {
         SolrResourceLoader.persistConfLocally(loader, ConfigOverlay.RESOURCE_NAME, overlay.toByteArray());
-        req.getCore().getCoreContainer().reload(req.getCore().getName(), req.getCore().uniqueId, true);
+        req.getCore().getCoreContainer().reload(req.getCore().getName(), req.getCore().uniqueId);
         log.info("Executed config commands successfully and persisted to File System {}", ops);
       }
 
diff --git a/solr/core/src/java/org/apache/solr/schema/IndexSchema.java b/solr/core/src/java/org/apache/solr/schema/IndexSchema.java
index 60727d0..3bd565f 100644
--- a/solr/core/src/java/org/apache/solr/schema/IndexSchema.java
+++ b/solr/core/src/java/org/apache/solr/schema/IndexSchema.java
@@ -39,8 +39,6 @@ import java.util.Set;
 import java.util.SortedMap;
 import java.util.TreeMap;
 import java.util.TreeSet;
-import java.util.UUID;
-import java.util.concurrent.ConcurrentHashMap;
 import java.util.function.Function;
 import java.util.regex.Pattern;
 import java.util.stream.Collectors;
@@ -65,13 +63,10 @@ import org.apache.solr.common.util.Cache;
 import org.apache.solr.common.util.NamedList;
 import org.apache.solr.common.util.Pair;
 import org.apache.solr.common.util.SimpleOrderedMap;
-import org.apache.solr.core.CoreContainer;
 import org.apache.solr.core.SolrClassLoader;
 import org.apache.solr.core.SolrCore;
 import org.apache.solr.core.SolrResourceLoader;
 import org.apache.solr.core.XmlConfigFile;
-import org.apache.solr.pkg.PackageListeners;
-import org.apache.solr.pkg.PackageListeningClassLoader;
 import org.apache.solr.request.LocalSolrQueryRequest;
 import org.apache.solr.response.SchemaXmlWriter;
 import org.apache.solr.response.SolrQueryResponse;
@@ -100,7 +95,7 @@ import static java.util.Collections.singletonMap;
  *
  *
  */
-public class IndexSchema implements SolrCoreAware {
+public class IndexSchema {
   public static final String COPY_FIELD = "copyField";
   public static final String COPY_FIELDS = COPY_FIELD + "s";
   public static final String DEFAULT_SCHEMA_FILE = "schema.xml";
@@ -144,8 +139,6 @@ public class IndexSchema implements SolrCoreAware {
   protected final SolrResourceLoader loader;
   protected final SolrClassLoader solrClassLoader;
   protected final Properties substitutableProperties;
-  private final Map<String, UUID> cores = new ConcurrentHashMap<>();
-  private CoreContainer coreContainer;
 
   protected Map<String,SchemaField> fields = new HashMap<>();
   protected Map<String,FieldType> fieldTypes = new HashMap<>();
@@ -198,41 +191,10 @@ public class IndexSchema implements SolrCoreAware {
   protected IndexSchema(Version luceneVersion, SolrResourceLoader loader, Properties substitutableProperties) {
     this.luceneVersion = Objects.requireNonNull(luceneVersion);
     this.loader = loader;
-    this.solrClassLoader = createClassLoader(loader);
+    this.solrClassLoader = loader;//loader.getCore() == null? loader: loader.getCore().getSchemaPluginsLoader();
     this.substitutableProperties = substitutableProperties;
   }
 
-  private SolrClassLoader createClassLoader(SolrResourceLoader loader) {
-    if(loader.getCoreContainer() != null && loader.getSolrConfig() != null){
-      return new PackageListeningClassLoader(loader.getCoreContainer(), loader,
-          pkg -> loader.getSolrConfig().maxPackageVersion(pkg),
-          () -> reloadCoreSchema());
-    }
-    return loader;
-  }
-
-  private void reloadCoreSchema() {
-    if(coreContainer != null) {
-     cores.forEach((coreName, id) -> {
-       try(SolrCore core = coreContainer.getCore(coreName, id)){
-         if(core != null) {
-           core.fetchLatestSchema();
-         }
-       }
-     });
-    }
-  }
-
-
-  @Override
-  public void inform(SolrCore core) {
-    this.cores.put(core.getName(), core.uniqueId);
-    this.coreContainer = core.getCoreContainer();
-    if (this.loader instanceof PackageListeners.Listener) {
-      core.getPackageListeners().addListener((PackageListeners.Listener) this.loader);
-    }
-  }
-
   /**
    * The resource loader to be used to load components related to the schema when the schema is loading
    * / initialising.
diff --git a/solr/core/src/java/org/apache/solr/schema/ManagedIndexSchemaFactory.java b/solr/core/src/java/org/apache/solr/schema/ManagedIndexSchemaFactory.java
index d433692..ef5df42 100644
--- a/solr/core/src/java/org/apache/solr/schema/ManagedIndexSchemaFactory.java
+++ b/solr/core/src/java/org/apache/solr/schema/ManagedIndexSchemaFactory.java
@@ -20,7 +20,6 @@ import java.io.File;
 import java.io.IOException;
 import java.io.InputStream;
 import java.lang.invoke.MethodHandles;
-import java.util.UUID;
 
 import org.apache.commons.io.IOUtils;
 import org.apache.solr.cloud.ZkController;
@@ -31,7 +30,6 @@ import org.apache.solr.common.cloud.SolrZkClient;
 import org.apache.solr.common.cloud.ZkCmdExecutor;
 import org.apache.solr.common.params.SolrParams;
 import org.apache.solr.common.util.NamedList;
-import org.apache.solr.core.CoreContainer;
 import org.apache.solr.core.SolrConfig;
 import org.apache.solr.core.SolrCore;
 import org.apache.solr.core.SolrResourceLoader;
@@ -61,9 +59,7 @@ public class ManagedIndexSchemaFactory extends IndexSchemaFactory implements Sol
   public SolrResourceLoader getResourceLoader() { return loader; }
   private String resourceName;
   private ManagedIndexSchema schema;
-  private CoreContainer coreContainer;
-  private String coreName;
-  private UUID coreId;
+  private SolrCore core;
   private ZkIndexSchemaReader zkIndexSchemaReader;
 
 
@@ -403,9 +399,7 @@ public class ManagedIndexSchemaFactory extends IndexSchemaFactory implements Sol
 
   @Override
   public void inform(SolrCore core) {
-    this.coreName = core.getName();
-    this.coreId = core.uniqueId;
-    this.coreContainer =  core.getCoreContainer();
+    this.core = core;
     if (loader instanceof ZkSolrResourceLoader) {
       this.zkIndexSchemaReader = new ZkIndexSchemaReader(this, core);
       ZkSolrResourceLoader zkLoader = (ZkSolrResourceLoader)loader;
@@ -433,10 +427,7 @@ public class ManagedIndexSchemaFactory extends IndexSchemaFactory implements Sol
 
   public void setSchema(ManagedIndexSchema schema) {
     this.schema = schema;
-    try ( SolrCore core = coreContainer.getCore(coreName, coreId)) {
-      if(core == null) return;
-      core.setLatestSchema(schema);
-    }
+    core.setLatestSchema(schema);
   }
   
   public boolean isMutable() {
diff --git a/solr/core/src/java/org/apache/solr/schema/SchemaManager.java b/solr/core/src/java/org/apache/solr/schema/SchemaManager.java
index a0def5d..d2f5b67 100644
--- a/solr/core/src/java/org/apache/solr/schema/SchemaManager.java
+++ b/solr/core/src/java/org/apache/solr/schema/SchemaManager.java
@@ -132,7 +132,7 @@ public class SchemaManager {
             latestVersion = ZkController.persistConfigResourceToZooKeeper
                 (zkLoader, managedIndexSchema.getSchemaZkVersion(), managedIndexSchema.getResourceName(),
                  sw.toString().getBytes(StandardCharsets.UTF_8), true);
-            req.getCore().getCoreContainer().reload(req.getCore().getName(), req.getCore().uniqueId, true);
+            req.getCore().getCoreContainer().reload(req.getCore().getName(), req.getCore().uniqueId);
             break;
           } catch (ZkController.ResourceModifiedInZkException e) {
             log.info("Schema was modified by another node. Retrying..");
@@ -142,7 +142,7 @@ public class SchemaManager {
             //only for non cloud stuff
             managedIndexSchema.persistManagedSchema(false);
             core.setLatestSchema(managedIndexSchema);
-            core.getCoreContainer().reload(core.getName(), core.uniqueId, true);
+            core.getCoreContainer().reload(core.getName(), core.uniqueId);
           } catch (SolrException e) {
             log.warn(errorMsg);
             errors = singletonList(errorMsg + e.getMessage());
diff --git a/solr/core/src/test/org/apache/solr/pkg/TestPackages.java b/solr/core/src/test/org/apache/solr/pkg/TestPackages.java
index 9542620..46b4071 100644
--- a/solr/core/src/test/org/apache/solr/pkg/TestPackages.java
+++ b/solr/core/src/test/org/apache/solr/pkg/TestPackages.java
@@ -637,6 +637,7 @@ public class TestPackages extends SolrCloudTestCase {
   }
 
   @SuppressWarnings("rawtypes")
+  @Ignore("SOLR-14750")
   public void testSchemaPlugins() throws Exception {
     String COLLECTION_NAME = "testSchemaLoadingColl";
     System.setProperty("managed.schema.mutable", "true");


[lucene-solr] 10/10: Revert "SOLR-14750: TestBulkSchemaConcurrent fails often(#1760)"

Posted by is...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

ishan pushed a commit to branch jira/solr-14151-revert-8x
in repository https://gitbox.apache.org/repos/asf/lucene-solr.git

commit 30b23492e6ab4bd52d5af63366a0ed227a5e287f
Author: Ishan Chattopadhyaya <is...@apache.org>
AuthorDate: Sat Sep 19 10:51:55 2020 +0530

    Revert "SOLR-14750: TestBulkSchemaConcurrent fails often(#1760)"
    
    This reverts commit 0f88cce8418f8a65b1643951a43fff66722f9547.
---
 solr/core/src/java/org/apache/solr/core/ConfigSetService.java |  5 +++--
 solr/core/src/java/org/apache/solr/core/SolrCore.java         |  3 ++-
 .../src/java/org/apache/solr/core/SolrResourceLoader.java     | 11 ++++++++++-
 solr/core/src/java/org/apache/solr/schema/IndexSchema.java    |  2 +-
 solr/core/src/test/org/apache/solr/pkg/TestPackages.java      |  2 --
 5 files changed, 16 insertions(+), 7 deletions(-)

diff --git a/solr/core/src/java/org/apache/solr/core/ConfigSetService.java b/solr/core/src/java/org/apache/solr/core/ConfigSetService.java
index 76bc0c1..3713434 100644
--- a/solr/core/src/java/org/apache/solr/core/ConfigSetService.java
+++ b/solr/core/src/java/org/apache/solr/core/ConfigSetService.java
@@ -81,8 +81,8 @@ public abstract class ConfigSetService {
               ) ? false: true;
 
       SolrConfig solrConfig = createSolrConfig(dcore, coreLoader, trusted);
-      IndexSchema indexSchema = createIndexSchema(dcore, solrConfig, false);
-      return new ConfigSet(configSetName(dcore), solrConfig, force -> indexSchema, properties, trusted);
+      ConfigSet.SchemaSupplier schema = force -> createIndexSchema(dcore, solrConfig, force);
+      return new ConfigSet(configSetName(dcore), solrConfig, schema, properties, trusted);
     } catch (Exception e) {
       throw new SolrException(SolrException.ErrorCode.SERVER_ERROR,
           "Could not load conf for core " + dcore.getName() +
@@ -135,6 +135,7 @@ public abstract class ConfigSetService {
       if (modVersion != null) {
         // note: luceneMatchVersion influences the schema
         String cacheKey = configSet + "/" + guessSchemaName + "/" + modVersion + "/" + solrConfig.luceneMatchVersion;
+        if(forceFetch) schemaCache.invalidate(cacheKey);
         return schemaCache.get(cacheKey,
             (key) -> indexSchemaFactory.create(cdSchemaName, solrConfig));
       } else {
diff --git a/solr/core/src/java/org/apache/solr/core/SolrCore.java b/solr/core/src/java/org/apache/solr/core/SolrCore.java
index 711e67b..ca7865b 100644
--- a/solr/core/src/java/org/apache/solr/core/SolrCore.java
+++ b/solr/core/src/java/org/apache/solr/core/SolrCore.java
@@ -943,9 +943,10 @@ public final class SolrCore implements SolrInfoBean, SolrMetricProducer, Closeab
 
       this.solrConfig = configSet.getSolrConfig();
       this.resourceLoader = configSet.getSolrConfig().getResourceLoader();
+      this.resourceLoader.core = this;
       schemaPluginsLoader = new PackageListeningClassLoader(coreContainer, resourceLoader,
               solrConfig::maxPackageVersion,
-              () -> setLatestSchema(configSet.getIndexSchema()));
+              () -> setLatestSchema(configSet.getIndexSchema(true)));
       this.packageListeners.addListener(schemaPluginsLoader);
       IndexSchema schema = configSet.getIndexSchema();
 
diff --git a/solr/core/src/java/org/apache/solr/core/SolrResourceLoader.java b/solr/core/src/java/org/apache/solr/core/SolrResourceLoader.java
index a073c9a..595dacf 100644
--- a/solr/core/src/java/org/apache/solr/core/SolrResourceLoader.java
+++ b/solr/core/src/java/org/apache/solr/core/SolrResourceLoader.java
@@ -76,7 +76,11 @@ public class SolrResourceLoader implements ResourceLoader, Closeable, SolrClassL
   private final Path instanceDir;
   private String dataDir; // gone in 9.0
 
-
+  /**
+   * this is set  by the {@link SolrCore}
+   * This could be null if the core is not yet initialized
+   */
+  SolrCore core;
 
   private final List<SolrCoreAware> waitingForCore = Collections.synchronizedList(new ArrayList<SolrCoreAware>());
   private final List<SolrInfoBean> infoMBeans = Collections.synchronizedList(new ArrayList<SolrInfoBean>());
@@ -202,6 +206,11 @@ public class SolrResourceLoader implements ResourceLoader, Closeable, SolrClassL
     TokenizerFactory.reloadTokenizers(this.classLoader);
   }
 
+  public SolrCore getCore(){
+    return core;
+  }
+
+
   private static URLClassLoader addURLsToClassLoader(final URLClassLoader oldLoader, List<URL> urls) {
     if (urls.size() == 0) {
       return oldLoader;
diff --git a/solr/core/src/java/org/apache/solr/schema/IndexSchema.java b/solr/core/src/java/org/apache/solr/schema/IndexSchema.java
index 3bd565f..bfd475d 100644
--- a/solr/core/src/java/org/apache/solr/schema/IndexSchema.java
+++ b/solr/core/src/java/org/apache/solr/schema/IndexSchema.java
@@ -191,7 +191,7 @@ public class IndexSchema {
   protected IndexSchema(Version luceneVersion, SolrResourceLoader loader, Properties substitutableProperties) {
     this.luceneVersion = Objects.requireNonNull(luceneVersion);
     this.loader = loader;
-    this.solrClassLoader = loader;//loader.getCore() == null? loader: loader.getCore().getSchemaPluginsLoader();
+    this.solrClassLoader = loader.getCore() == null? loader: loader.getCore().getSchemaPluginsLoader();
     this.substitutableProperties = substitutableProperties;
   }
 
diff --git a/solr/core/src/test/org/apache/solr/pkg/TestPackages.java b/solr/core/src/test/org/apache/solr/pkg/TestPackages.java
index 46b4071..f967cbd 100644
--- a/solr/core/src/test/org/apache/solr/pkg/TestPackages.java
+++ b/solr/core/src/test/org/apache/solr/pkg/TestPackages.java
@@ -63,7 +63,6 @@ import org.apache.solr.util.plugin.SolrCoreAware;
 import org.apache.zookeeper.data.Stat;
 import org.junit.After;
 import org.junit.Before;
-import org.junit.Ignore;
 import org.junit.Test;
 
 import static org.apache.solr.common.cloud.ZkStateReader.SOLR_PKGS_PATH;
@@ -637,7 +636,6 @@ public class TestPackages extends SolrCloudTestCase {
   }
 
   @SuppressWarnings("rawtypes")
-  @Ignore("SOLR-14750")
   public void testSchemaPlugins() throws Exception {
     String COLLECTION_NAME = "testSchemaLoadingColl";
     System.setProperty("managed.schema.mutable", "true");


[lucene-solr] 05/10: Revert "SOLR-14151: reverting an accidental commit bd22f9a"

Posted by is...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

ishan pushed a commit to branch jira/solr-14151-revert-8x
in repository https://gitbox.apache.org/repos/asf/lucene-solr.git

commit dd12b5ebda6e2a815a2049b096fe05589b3b9f7c
Author: Ishan Chattopadhyaya <is...@apache.org>
AuthorDate: Sat Sep 19 10:50:56 2020 +0530

    Revert "SOLR-14151: reverting an accidental commit bd22f9a"
    
    This reverts commit 0547fee46c5c24f6c9d9e42fe88586116bcb4a6b.
---
 .../apache/solr/cloud/ZkSolrResourceLoader.java    |  6 +++
 .../org/apache/solr/core/ConfigSetService.java     |  4 +-
 .../java/org/apache/solr/core/CoreContainer.java   | 21 +++++++----
 .../src/java/org/apache/solr/core/SolrCore.java    | 24 ++++++------
 .../src/java/org/apache/solr/core/SolrCores.java   |  7 +++-
 .../org/apache/solr/core/SolrResourceLoader.java   |  8 ++++
 .../org/apache/solr/handler/SchemaHandler.java     |  7 +++-
 .../org/apache/solr/handler/SolrConfigHandler.java |  2 +-
 .../java/org/apache/solr/schema/IndexSchema.java   | 43 +++++++++++++++++++++-
 .../solr/schema/ManagedIndexSchemaFactory.java     | 15 ++++++--
 .../java/org/apache/solr/schema/SchemaManager.java |  4 +-
 .../src/test/org/apache/solr/pkg/TestPackages.java |  1 -
 12 files changed, 109 insertions(+), 33 deletions(-)

diff --git a/solr/core/src/java/org/apache/solr/cloud/ZkSolrResourceLoader.java b/solr/core/src/java/org/apache/solr/cloud/ZkSolrResourceLoader.java
index 4eec58f..cde48f1 100644
--- a/solr/core/src/java/org/apache/solr/cloud/ZkSolrResourceLoader.java
+++ b/solr/core/src/java/org/apache/solr/cloud/ZkSolrResourceLoader.java
@@ -27,6 +27,7 @@ import java.util.Properties;
 import org.apache.solr.common.SolrException.ErrorCode;
 import org.apache.solr.common.cloud.ZkConfigManager;
 import org.apache.solr.common.cloud.ZooKeeperException;
+import org.apache.solr.core.CoreContainer;
 import org.apache.solr.core.SolrResourceLoader;
 import org.apache.solr.core.SolrResourceNotFoundException;
 import org.apache.solr.schema.ZkIndexSchemaReader;
@@ -158,4 +159,9 @@ public class ZkSolrResourceLoader extends SolrResourceLoader {
   }
 
   public ZkIndexSchemaReader getZkIndexSchemaReader() { return zkIndexSchemaReader; }
+
+  @Override
+  public CoreContainer getCoreContainer() {
+    return zkController.getCoreContainer();
+  }
 }
diff --git a/solr/core/src/java/org/apache/solr/core/ConfigSetService.java b/solr/core/src/java/org/apache/solr/core/ConfigSetService.java
index 76bc0c1..2d09bd6 100644
--- a/solr/core/src/java/org/apache/solr/core/ConfigSetService.java
+++ b/solr/core/src/java/org/apache/solr/core/ConfigSetService.java
@@ -81,8 +81,8 @@ public abstract class ConfigSetService {
               ) ? false: true;
 
       SolrConfig solrConfig = createSolrConfig(dcore, coreLoader, trusted);
-      IndexSchema indexSchema = createIndexSchema(dcore, solrConfig, false);
-      return new ConfigSet(configSetName(dcore), solrConfig, force -> indexSchema, properties, trusted);
+      coreLoader.solrConfig = solrConfig;
+      return new ConfigSet(configSetName(dcore), solrConfig, force -> ConfigSetService.this.createIndexSchema(dcore, solrConfig, false), properties, trusted);
     } catch (Exception e) {
       throw new SolrException(SolrException.ErrorCode.SERVER_ERROR,
           "Could not load conf for core " + dcore.getName() +
diff --git a/solr/core/src/java/org/apache/solr/core/CoreContainer.java b/solr/core/src/java/org/apache/solr/core/CoreContainer.java
index 3e9b424..df9eef9 100644
--- a/solr/core/src/java/org/apache/solr/core/CoreContainer.java
+++ b/solr/core/src/java/org/apache/solr/core/CoreContainer.java
@@ -1611,6 +1611,13 @@ public class CoreContainer {
   public void reload(String name) {
     reload(name, null);
   }
+  public void reload(String name, UUID coreId, boolean async) {
+    if(async) {
+      runAsync(() -> reload(name, coreId));
+    } else {
+      reload(name, coreId);
+    }
+  }
   /**
    * Recreates a SolrCore.
    * While the new core is loading, requests will continue to be dispatched to
@@ -1625,13 +1632,8 @@ public class CoreContainer {
       throw new AlreadyClosedException();
     }
     SolrCore newCore = null;
-    SolrCore core = solrCores.getCoreFromAnyList(name, false);
+    SolrCore core = solrCores.getCoreFromAnyList(name, false, coreId);
     if (core != null) {
-      if(coreId != null && core.uniqueId != coreId) {
-        //trying to reload an already unloaded core
-        return;
-      }
-
       // The underlying core properties files may have changed, we don't really know. So we have a (perhaps) stale
       // CoreDescriptor and we need to reload it from the disk files
       CoreDescriptor cd = reloadCoreDescriptor(core.getCoreDescriptor());
@@ -1861,6 +1863,9 @@ public class CoreContainer {
     return cfg.getCoreRootDirectory();
   }
 
+  public SolrCore getCore(String name) {
+    return getCore(name, null);
+  }
   /**
    * Gets a core by name and increase its refcount.
    *
@@ -1869,10 +1874,10 @@ public class CoreContainer {
    * @throws SolrCoreInitializationException if a SolrCore with this name failed to be initialized
    * @see SolrCore#close()
    */
-  public SolrCore getCore(String name) {
+  public SolrCore getCore(String name, UUID id) {
 
     // Do this in two phases since we don't want to lock access to the cores over a load.
-    SolrCore core = solrCores.getCoreFromAnyList(name, true);
+    SolrCore core = solrCores.getCoreFromAnyList(name, true, id);
 
     // If a core is loaded, we're done just return it.
     if (core != null) {
diff --git a/solr/core/src/java/org/apache/solr/core/SolrCore.java b/solr/core/src/java/org/apache/solr/core/SolrCore.java
index f7533cb..ceff28b 100644
--- a/solr/core/src/java/org/apache/solr/core/SolrCore.java
+++ b/solr/core/src/java/org/apache/solr/core/SolrCore.java
@@ -201,6 +201,7 @@ public final class SolrCore implements SolrInfoBean, SolrMetricProducer, Closeab
 
   private final CoreDescriptor coreDescriptor;
   private final CoreContainer coreContainer;
+  private final ConfigSet configSet;
   private final SolrConfig solrConfig;
   private final SolrResourceLoader resourceLoader;
   private volatile IndexSchema schema;
@@ -226,8 +227,6 @@ public final class SolrCore implements SolrInfoBean, SolrMetricProducer, Closeab
   private IndexReaderFactory indexReaderFactory;
   private final Codec codec;
   private final MemClassLoader memClassLoader;
-  //singleton listener for all packages used in schema
-  private final PackageListeningClassLoader schemaPluginsLoader;
 
   private final List<Runnable> confListeners = new CopyOnWriteArrayList<>();
 
@@ -272,9 +271,6 @@ public final class SolrCore implements SolrInfoBean, SolrMetricProducer, Closeab
   public PackageListeners getPackageListeners() {
     return packageListeners;
   }
-  public PackageListeningClassLoader getSchemaPluginsLoader() {
-    return schemaPluginsLoader;
-  }
 
   static int boolean_query_max_clause_count = Integer.MIN_VALUE;
 
@@ -938,16 +934,14 @@ public final class SolrCore implements SolrInfoBean, SolrMetricProducer, Closeab
     final CountDownLatch latch = new CountDownLatch(1);
     try {
       this.coreContainer = coreContainer;
+      this.configSet = configSet;
       this.coreDescriptor = Objects.requireNonNull(coreDescriptor, "coreDescriptor cannot be null");
       setName(coreDescriptor.getName());
 
       this.solrConfig = configSet.getSolrConfig();
       this.resourceLoader = configSet.getSolrConfig().getResourceLoader();
-      schemaPluginsLoader = new PackageListeningClassLoader(coreContainer, resourceLoader,
-              solrConfig::maxPackageVersion,
-              () -> setLatestSchema(configSet.getIndexSchema()));
-      this.packageListeners.addListener(schemaPluginsLoader);
       IndexSchema schema = configSet.getIndexSchema();
+      schema.inform(this);
 
       this.configSetProperties = configSet.getProperties();
       // Initialize the metrics manager
@@ -2787,6 +2781,12 @@ public final class SolrCore implements SolrInfoBean, SolrMetricProducer, Closeab
     return memClassLoader;
   }
 
+  public void fetchLatestSchema() {
+    IndexSchema schema =  configSet.getIndexSchema(true);
+    schema.inform(this);
+    setLatestSchema(schema);
+  }
+
   public interface RawWriter {
     default String getContentType() {
       return BinaryResponseParser.BINARY_CONTENT_TYPE;
@@ -3099,7 +3099,7 @@ public final class SolrCore implements SolrInfoBean, SolrMetricProducer, Closeab
       SolrZkClient zkClient = cc.getZkController().getZkClient();
       int solrConfigversion, overlayVersion, managedSchemaVersion = 0;
       SolrConfig cfg = null;
-      try (SolrCore solrCore = cc.solrCores.getCoreFromAnyList(coreName, true)) {
+      try (SolrCore solrCore = cc.solrCores.getCoreFromAnyList(coreName, true, coreId)) {
         if (solrCore == null || solrCore.isClosed() || solrCore.getCoreContainer().isShutDown()) return;
         cfg = solrCore.getSolrConfig();
         solrConfigversion = solrCore.getSolrConfig().getOverlay().getZnodeVersion();
@@ -3120,7 +3120,7 @@ public final class SolrCore implements SolrInfoBean, SolrMetricProducer, Closeab
         if (configHandler.getReloadLock().tryLock()) {
 
           try {
-            cc.reload(coreName, coreId);
+            cc.reload(coreName, coreId,true);
           } catch (SolrCoreState.CoreIsClosedException e) {
             /*no problem this core is already closed*/
           } finally {
@@ -3133,7 +3133,7 @@ public final class SolrCore implements SolrInfoBean, SolrMetricProducer, Closeab
         return;
       }
       //some files in conf directory may have  other than managedschema, overlay, params
-      try (SolrCore solrCore = cc.solrCores.getCoreFromAnyList(coreName, true)) {
+      try (SolrCore solrCore = cc.solrCores.getCoreFromAnyList(coreName, true, coreId)) {
         if (solrCore == null || solrCore.isClosed() || cc.isShutDown()) return;
         for (Runnable listener : solrCore.confListeners) {
           try {
diff --git a/solr/core/src/java/org/apache/solr/core/SolrCores.java b/solr/core/src/java/org/apache/solr/core/SolrCores.java
index d18e3a1..d9c1539 100644
--- a/solr/core/src/java/org/apache/solr/core/SolrCores.java
+++ b/solr/core/src/java/org/apache/solr/core/SolrCores.java
@@ -34,6 +34,7 @@ import java.util.List;
 import java.util.Map;
 import java.util.Set;
 import java.util.TreeSet;
+import java.util.UUID;
 import java.util.concurrent.ConcurrentHashMap;
 import java.util.concurrent.ExecutorService;
 import java.util.concurrent.TimeUnit;
@@ -282,15 +283,19 @@ class SolrCores {
       return ret;
     }
   }
+  SolrCore  getCoreFromAnyList(String name, boolean incRefCount) {
+    return getCoreFromAnyList(name, incRefCount, null);
+  }
 
   /* If you don't increment the reference count, someone could close the core before you use it. */
-  SolrCore  getCoreFromAnyList(String name, boolean incRefCount) {
+  SolrCore  getCoreFromAnyList(String name, boolean incRefCount, UUID coreId) {
     synchronized (modifyLock) {
       SolrCore core = cores.get(name);
 
       if (core == null && getTransientCacheHandler() != null) {
         core = getTransientCacheHandler().getCore(name);
       }
+      if(core != null && coreId != null && coreId != core.uniqueId) return null;
 
       if (core != null && incRefCount) {
         core.open();
diff --git a/solr/core/src/java/org/apache/solr/core/SolrResourceLoader.java b/solr/core/src/java/org/apache/solr/core/SolrResourceLoader.java
index fa963b3..4261a10 100644
--- a/solr/core/src/java/org/apache/solr/core/SolrResourceLoader.java
+++ b/solr/core/src/java/org/apache/solr/core/SolrResourceLoader.java
@@ -76,6 +76,7 @@ public class SolrResourceLoader implements ResourceLoader, Closeable, SolrClassL
   protected URLClassLoader classLoader;
   private final Path instanceDir;
   private String dataDir; // gone in 9.0
+  SolrConfig solrConfig;
 
 
 
@@ -789,6 +790,13 @@ public class SolrResourceLoader implements ResourceLoader, Closeable, SolrClassL
     }
     throw new SolrException( SolrException.ErrorCode.SERVER_ERROR, builder.toString() );
   }
+  public CoreContainer getCoreContainer() {
+    return null;
+  }
+
+  public SolrConfig getSolrConfig() {
+    return solrConfig;
+  }
 
   @Override
   public void close() throws IOException {
diff --git a/solr/core/src/java/org/apache/solr/handler/SchemaHandler.java b/solr/core/src/java/org/apache/solr/handler/SchemaHandler.java
index fef5773..c84d2d4 100644
--- a/solr/core/src/java/org/apache/solr/handler/SchemaHandler.java
+++ b/solr/core/src/java/org/apache/solr/handler/SchemaHandler.java
@@ -33,7 +33,9 @@ import org.apache.solr.common.util.SimpleOrderedMap;
 import org.apache.solr.common.util.StrUtils;
 import org.apache.solr.common.util.Utils;
 import org.apache.solr.core.PluginInfo;
+import org.apache.solr.common.cloud.SolrClassLoader;
 import org.apache.solr.core.SolrCore;
+import org.apache.solr.pkg.PackageListeningClassLoader;
 import org.apache.solr.request.SolrQueryRequest;
 import org.apache.solr.request.SolrRequestHandler;
 import org.apache.solr.response.SolrQueryResponse;
@@ -229,7 +231,10 @@ public class SchemaHandler extends RequestHandlerBase implements SolrCoreAware,
         String klas = (String) v;
         PluginInfo.ClassName parsedClassName = new PluginInfo.ClassName(klas);
         if (parsedClassName.pkg != null) {
-          MapWriter mw = req.getCore().getSchemaPluginsLoader().getPackageVersion(parsedClassName);
+          SolrClassLoader cl = req.getCore().getLatestSchema().getSolrClassLoader();
+          MapWriter mw = cl instanceof PackageListeningClassLoader?
+              ((PackageListeningClassLoader) cl).getPackageVersion(parsedClassName):
+              null;
           if (mw != null) nl.add("_packageinfo_", mw);
         }
       }
diff --git a/solr/core/src/java/org/apache/solr/handler/SolrConfigHandler.java b/solr/core/src/java/org/apache/solr/handler/SolrConfigHandler.java
index 7f48b63..20e8702 100644
--- a/solr/core/src/java/org/apache/solr/handler/SolrConfigHandler.java
+++ b/solr/core/src/java/org/apache/solr/handler/SolrConfigHandler.java
@@ -548,7 +548,7 @@ public class SolrConfigHandler extends RequestHandlerBase implements SolrCoreAwa
             latestVersion, 30);
       } else {
         SolrResourceLoader.persistConfLocally(loader, ConfigOverlay.RESOURCE_NAME, overlay.toByteArray());
-        req.getCore().getCoreContainer().reload(req.getCore().getName(), req.getCore().uniqueId);
+        req.getCore().getCoreContainer().reload(req.getCore().getName(), req.getCore().uniqueId, true);
         log.info("Executed config commands successfully and persisted to File System {}", ops);
       }
 
diff --git a/solr/core/src/java/org/apache/solr/schema/IndexSchema.java b/solr/core/src/java/org/apache/solr/schema/IndexSchema.java
index 3e2237f..eb0c86e 100644
--- a/solr/core/src/java/org/apache/solr/schema/IndexSchema.java
+++ b/solr/core/src/java/org/apache/solr/schema/IndexSchema.java
@@ -39,6 +39,8 @@ import java.util.Set;
 import java.util.SortedMap;
 import java.util.TreeMap;
 import java.util.TreeSet;
+import java.util.UUID;
+import java.util.concurrent.ConcurrentHashMap;
 import java.util.function.Function;
 import java.util.regex.Pattern;
 import java.util.stream.Collectors;
@@ -63,9 +65,13 @@ import org.apache.solr.common.util.Cache;
 import org.apache.solr.common.util.NamedList;
 import org.apache.solr.common.util.Pair;
 import org.apache.solr.common.util.SimpleOrderedMap;
+import org.apache.solr.core.CoreContainer;
+import org.apache.solr.common.cloud.SolrClassLoader;
 import org.apache.solr.core.SolrCore;
 import org.apache.solr.core.SolrResourceLoader;
 import org.apache.solr.core.XmlConfigFile;
+import org.apache.solr.pkg.PackageListeners;
+import org.apache.solr.pkg.PackageListeningClassLoader;
 import org.apache.solr.request.LocalSolrQueryRequest;
 import org.apache.solr.response.SchemaXmlWriter;
 import org.apache.solr.response.SolrQueryResponse;
@@ -94,7 +100,7 @@ import static java.util.Collections.singletonMap;
  *
  *
  */
-public class IndexSchema {
+public class IndexSchema implements SolrCoreAware {
   public static final String COPY_FIELD = "copyField";
   public static final String COPY_FIELDS = COPY_FIELD + "s";
   public static final String DEFAULT_SCHEMA_FILE = "schema.xml";
@@ -138,6 +144,8 @@ public class IndexSchema {
   protected final SolrResourceLoader loader;
   protected final SolrClassLoader solrClassLoader;
   protected final Properties substitutableProperties;
+  private final Map<String, UUID> cores = new ConcurrentHashMap<>();
+  private CoreContainer coreContainer;
 
   protected Map<String,SchemaField> fields = new HashMap<>();
   protected Map<String,FieldType> fieldTypes = new HashMap<>();
@@ -190,10 +198,41 @@ public class IndexSchema {
   protected IndexSchema(Version luceneVersion, SolrResourceLoader loader, Properties substitutableProperties) {
     this.luceneVersion = Objects.requireNonNull(luceneVersion);
     this.loader = loader;
-    this.solrClassLoader = loader;//loader.getCore() == null? loader: loader.getCore().getSchemaPluginsLoader();
+    this.solrClassLoader = createClassLoader(loader);
     this.substitutableProperties = substitutableProperties;
   }
 
+  private SolrClassLoader createClassLoader(SolrResourceLoader loader) {
+    if(loader.getCoreContainer() != null && loader.getSolrConfig() != null){
+      return new PackageListeningClassLoader(loader.getCoreContainer(), loader,
+          pkg -> loader.getSolrConfig().maxPackageVersion(pkg),
+          () -> reloadCoreSchema());
+    }
+    return loader;
+  }
+
+  private void reloadCoreSchema() {
+    if(coreContainer != null) {
+     cores.forEach((coreName, id) -> {
+       try(SolrCore core = coreContainer.getCore(coreName, id)){
+         if(core != null) {
+           core.fetchLatestSchema();
+         }
+       }
+     });
+    }
+  }
+
+
+  @Override
+  public void inform(SolrCore core) {
+    this.cores.put(core.getName(), core.uniqueId);
+    this.coreContainer = core.getCoreContainer();
+    if (this.loader instanceof PackageListeners.Listener) {
+      core.getPackageListeners().addListener((PackageListeners.Listener) this.loader);
+    }
+  }
+
   /**
    * The resource loader to be used to load components related to the schema when the schema is loading
    * / initialising.
diff --git a/solr/core/src/java/org/apache/solr/schema/ManagedIndexSchemaFactory.java b/solr/core/src/java/org/apache/solr/schema/ManagedIndexSchemaFactory.java
index ef5df42..d433692 100644
--- a/solr/core/src/java/org/apache/solr/schema/ManagedIndexSchemaFactory.java
+++ b/solr/core/src/java/org/apache/solr/schema/ManagedIndexSchemaFactory.java
@@ -20,6 +20,7 @@ import java.io.File;
 import java.io.IOException;
 import java.io.InputStream;
 import java.lang.invoke.MethodHandles;
+import java.util.UUID;
 
 import org.apache.commons.io.IOUtils;
 import org.apache.solr.cloud.ZkController;
@@ -30,6 +31,7 @@ import org.apache.solr.common.cloud.SolrZkClient;
 import org.apache.solr.common.cloud.ZkCmdExecutor;
 import org.apache.solr.common.params.SolrParams;
 import org.apache.solr.common.util.NamedList;
+import org.apache.solr.core.CoreContainer;
 import org.apache.solr.core.SolrConfig;
 import org.apache.solr.core.SolrCore;
 import org.apache.solr.core.SolrResourceLoader;
@@ -59,7 +61,9 @@ public class ManagedIndexSchemaFactory extends IndexSchemaFactory implements Sol
   public SolrResourceLoader getResourceLoader() { return loader; }
   private String resourceName;
   private ManagedIndexSchema schema;
-  private SolrCore core;
+  private CoreContainer coreContainer;
+  private String coreName;
+  private UUID coreId;
   private ZkIndexSchemaReader zkIndexSchemaReader;
 
 
@@ -399,7 +403,9 @@ public class ManagedIndexSchemaFactory extends IndexSchemaFactory implements Sol
 
   @Override
   public void inform(SolrCore core) {
-    this.core = core;
+    this.coreName = core.getName();
+    this.coreId = core.uniqueId;
+    this.coreContainer =  core.getCoreContainer();
     if (loader instanceof ZkSolrResourceLoader) {
       this.zkIndexSchemaReader = new ZkIndexSchemaReader(this, core);
       ZkSolrResourceLoader zkLoader = (ZkSolrResourceLoader)loader;
@@ -427,7 +433,10 @@ public class ManagedIndexSchemaFactory extends IndexSchemaFactory implements Sol
 
   public void setSchema(ManagedIndexSchema schema) {
     this.schema = schema;
-    core.setLatestSchema(schema);
+    try ( SolrCore core = coreContainer.getCore(coreName, coreId)) {
+      if(core == null) return;
+      core.setLatestSchema(schema);
+    }
   }
   
   public boolean isMutable() {
diff --git a/solr/core/src/java/org/apache/solr/schema/SchemaManager.java b/solr/core/src/java/org/apache/solr/schema/SchemaManager.java
index d2f5b67..a0def5d 100644
--- a/solr/core/src/java/org/apache/solr/schema/SchemaManager.java
+++ b/solr/core/src/java/org/apache/solr/schema/SchemaManager.java
@@ -132,7 +132,7 @@ public class SchemaManager {
             latestVersion = ZkController.persistConfigResourceToZooKeeper
                 (zkLoader, managedIndexSchema.getSchemaZkVersion(), managedIndexSchema.getResourceName(),
                  sw.toString().getBytes(StandardCharsets.UTF_8), true);
-            req.getCore().getCoreContainer().reload(req.getCore().getName(), req.getCore().uniqueId);
+            req.getCore().getCoreContainer().reload(req.getCore().getName(), req.getCore().uniqueId, true);
             break;
           } catch (ZkController.ResourceModifiedInZkException e) {
             log.info("Schema was modified by another node. Retrying..");
@@ -142,7 +142,7 @@ public class SchemaManager {
             //only for non cloud stuff
             managedIndexSchema.persistManagedSchema(false);
             core.setLatestSchema(managedIndexSchema);
-            core.getCoreContainer().reload(core.getName(), core.uniqueId);
+            core.getCoreContainer().reload(core.getName(), core.uniqueId, true);
           } catch (SolrException e) {
             log.warn(errorMsg);
             errors = singletonList(errorMsg + e.getMessage());
diff --git a/solr/core/src/test/org/apache/solr/pkg/TestPackages.java b/solr/core/src/test/org/apache/solr/pkg/TestPackages.java
index 46b4071..9542620 100644
--- a/solr/core/src/test/org/apache/solr/pkg/TestPackages.java
+++ b/solr/core/src/test/org/apache/solr/pkg/TestPackages.java
@@ -637,7 +637,6 @@ public class TestPackages extends SolrCloudTestCase {
   }
 
   @SuppressWarnings("rawtypes")
-  @Ignore("SOLR-14750")
   public void testSchemaPlugins() throws Exception {
     String COLLECTION_NAME = "testSchemaLoadingColl";
     System.setProperty("managed.schema.mutable", "true");


[lucene-solr] 06/10: Revert "SOLR-14151: move the SolrClassLoader interface to SolrJ"

Posted by is...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

ishan pushed a commit to branch jira/solr-14151-revert-8x
in repository https://gitbox.apache.org/repos/asf/lucene-solr.git

commit dc75345c2b0d1e11f4defd4b7d9919e14fbb7d84
Author: Ishan Chattopadhyaya <is...@apache.org>
AuthorDate: Sat Sep 19 10:51:10 2020 +0530

    Revert "SOLR-14151: move the SolrClassLoader interface to SolrJ"
    
    This reverts commit af037264a80c9d32e1bc9b88bc09bdfb99750133.
---
 solr/core/src/java/org/apache/solr/handler/SchemaHandler.java | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/solr/core/src/java/org/apache/solr/handler/SchemaHandler.java b/solr/core/src/java/org/apache/solr/handler/SchemaHandler.java
index c84d2d4..70d4fee 100644
--- a/solr/core/src/java/org/apache/solr/handler/SchemaHandler.java
+++ b/solr/core/src/java/org/apache/solr/handler/SchemaHandler.java
@@ -33,7 +33,7 @@ import org.apache.solr.common.util.SimpleOrderedMap;
 import org.apache.solr.common.util.StrUtils;
 import org.apache.solr.common.util.Utils;
 import org.apache.solr.core.PluginInfo;
-import org.apache.solr.common.cloud.SolrClassLoader;
+import org.apache.solr.core.SolrClassLoader;
 import org.apache.solr.core.SolrCore;
 import org.apache.solr.pkg.PackageListeningClassLoader;
 import org.apache.solr.request.SolrQueryRequest;


[lucene-solr] 04/10: Revert "SOLR-14151: Bug fixes"

Posted by is...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

ishan pushed a commit to branch jira/solr-14151-revert-8x
in repository https://gitbox.apache.org/repos/asf/lucene-solr.git

commit 96720ff99db9baf2db4b55dfef6e918695a1ff9b
Author: Ishan Chattopadhyaya <is...@apache.org>
AuthorDate: Sat Sep 19 10:49:29 2020 +0530

    Revert "SOLR-14151: Bug fixes"
    
    This reverts commit b46285c686faa672ccf4c24a7812c49b7ad8b939.
---
 .../apache/solr/cloud/ZkSolrResourceLoader.java    |  6 ---
 .../org/apache/solr/core/ConfigSetService.java     |  3 +-
 .../java/org/apache/solr/core/CoreContainer.java   | 21 ++++------
 .../src/java/org/apache/solr/core/SolrCore.java    | 21 +++++-----
 .../src/java/org/apache/solr/core/SolrCores.java   |  7 +---
 .../org/apache/solr/core/SolrResourceLoader.java   | 47 +---------------------
 .../java/org/apache/solr/handler/IndexFetcher.java |  2 +-
 .../org/apache/solr/handler/SchemaHandler.java     |  6 +--
 .../org/apache/solr/handler/SolrConfigHandler.java |  2 +-
 .../java/org/apache/solr/schema/IndexSchema.java   |  2 +-
 .../java/org/apache/solr/schema/SchemaManager.java |  4 +-
 .../src/test/org/apache/solr/pkg/TestPackages.java |  2 +
 12 files changed, 31 insertions(+), 92 deletions(-)

diff --git a/solr/core/src/java/org/apache/solr/cloud/ZkSolrResourceLoader.java b/solr/core/src/java/org/apache/solr/cloud/ZkSolrResourceLoader.java
index cde48f1..4eec58f 100644
--- a/solr/core/src/java/org/apache/solr/cloud/ZkSolrResourceLoader.java
+++ b/solr/core/src/java/org/apache/solr/cloud/ZkSolrResourceLoader.java
@@ -27,7 +27,6 @@ import java.util.Properties;
 import org.apache.solr.common.SolrException.ErrorCode;
 import org.apache.solr.common.cloud.ZkConfigManager;
 import org.apache.solr.common.cloud.ZooKeeperException;
-import org.apache.solr.core.CoreContainer;
 import org.apache.solr.core.SolrResourceLoader;
 import org.apache.solr.core.SolrResourceNotFoundException;
 import org.apache.solr.schema.ZkIndexSchemaReader;
@@ -159,9 +158,4 @@ public class ZkSolrResourceLoader extends SolrResourceLoader {
   }
 
   public ZkIndexSchemaReader getZkIndexSchemaReader() { return zkIndexSchemaReader; }
-
-  @Override
-  public CoreContainer getCoreContainer() {
-    return zkController.getCoreContainer();
-  }
 }
diff --git a/solr/core/src/java/org/apache/solr/core/ConfigSetService.java b/solr/core/src/java/org/apache/solr/core/ConfigSetService.java
index 8a5f9c7..76bc0c1 100644
--- a/solr/core/src/java/org/apache/solr/core/ConfigSetService.java
+++ b/solr/core/src/java/org/apache/solr/core/ConfigSetService.java
@@ -81,7 +81,8 @@ public abstract class ConfigSetService {
               ) ? false: true;
 
       SolrConfig solrConfig = createSolrConfig(dcore, coreLoader, trusted);
-      return new ConfigSet(configSetName(dcore), solrConfig, force -> createIndexSchema(dcore, solrConfig, force), properties, trusted);
+      IndexSchema indexSchema = createIndexSchema(dcore, solrConfig, false);
+      return new ConfigSet(configSetName(dcore), solrConfig, force -> indexSchema, properties, trusted);
     } catch (Exception e) {
       throw new SolrException(SolrException.ErrorCode.SERVER_ERROR,
           "Could not load conf for core " + dcore.getName() +
diff --git a/solr/core/src/java/org/apache/solr/core/CoreContainer.java b/solr/core/src/java/org/apache/solr/core/CoreContainer.java
index df9eef9..3e9b424 100644
--- a/solr/core/src/java/org/apache/solr/core/CoreContainer.java
+++ b/solr/core/src/java/org/apache/solr/core/CoreContainer.java
@@ -1611,13 +1611,6 @@ public class CoreContainer {
   public void reload(String name) {
     reload(name, null);
   }
-  public void reload(String name, UUID coreId, boolean async) {
-    if(async) {
-      runAsync(() -> reload(name, coreId));
-    } else {
-      reload(name, coreId);
-    }
-  }
   /**
    * Recreates a SolrCore.
    * While the new core is loading, requests will continue to be dispatched to
@@ -1632,8 +1625,13 @@ public class CoreContainer {
       throw new AlreadyClosedException();
     }
     SolrCore newCore = null;
-    SolrCore core = solrCores.getCoreFromAnyList(name, false, coreId);
+    SolrCore core = solrCores.getCoreFromAnyList(name, false);
     if (core != null) {
+      if(coreId != null && core.uniqueId != coreId) {
+        //trying to reload an already unloaded core
+        return;
+      }
+
       // The underlying core properties files may have changed, we don't really know. So we have a (perhaps) stale
       // CoreDescriptor and we need to reload it from the disk files
       CoreDescriptor cd = reloadCoreDescriptor(core.getCoreDescriptor());
@@ -1863,9 +1861,6 @@ public class CoreContainer {
     return cfg.getCoreRootDirectory();
   }
 
-  public SolrCore getCore(String name) {
-    return getCore(name, null);
-  }
   /**
    * Gets a core by name and increase its refcount.
    *
@@ -1874,10 +1869,10 @@ public class CoreContainer {
    * @throws SolrCoreInitializationException if a SolrCore with this name failed to be initialized
    * @see SolrCore#close()
    */
-  public SolrCore getCore(String name, UUID id) {
+  public SolrCore getCore(String name) {
 
     // Do this in two phases since we don't want to lock access to the cores over a load.
-    SolrCore core = solrCores.getCoreFromAnyList(name, true, id);
+    SolrCore core = solrCores.getCoreFromAnyList(name, true);
 
     // If a core is loaded, we're done just return it.
     if (core != null) {
diff --git a/solr/core/src/java/org/apache/solr/core/SolrCore.java b/solr/core/src/java/org/apache/solr/core/SolrCore.java
index 0c5bec2..f7533cb 100644
--- a/solr/core/src/java/org/apache/solr/core/SolrCore.java
+++ b/solr/core/src/java/org/apache/solr/core/SolrCore.java
@@ -225,9 +225,9 @@ public final class SolrCore implements SolrInfoBean, SolrMetricProducer, Closeab
   private final RecoveryStrategy.Builder recoveryStrategyBuilder;
   private IndexReaderFactory indexReaderFactory;
   private final Codec codec;
-  private final ConfigSet configSet;
   private final MemClassLoader memClassLoader;
   //singleton listener for all packages used in schema
+  private final PackageListeningClassLoader schemaPluginsLoader;
 
   private final List<Runnable> confListeners = new CopyOnWriteArrayList<>();
 
@@ -272,6 +272,9 @@ public final class SolrCore implements SolrInfoBean, SolrMetricProducer, Closeab
   public PackageListeners getPackageListeners() {
     return packageListeners;
   }
+  public PackageListeningClassLoader getSchemaPluginsLoader() {
+    return schemaPluginsLoader;
+  }
 
   static int boolean_query_max_clause_count = Integer.MIN_VALUE;
 
@@ -935,12 +938,15 @@ public final class SolrCore implements SolrInfoBean, SolrMetricProducer, Closeab
     final CountDownLatch latch = new CountDownLatch(1);
     try {
       this.coreContainer = coreContainer;
-      this.configSet = configSet;
       this.coreDescriptor = Objects.requireNonNull(coreDescriptor, "coreDescriptor cannot be null");
       setName(coreDescriptor.getName());
 
       this.solrConfig = configSet.getSolrConfig();
       this.resourceLoader = configSet.getSolrConfig().getResourceLoader();
+      schemaPluginsLoader = new PackageListeningClassLoader(coreContainer, resourceLoader,
+              solrConfig::maxPackageVersion,
+              () -> setLatestSchema(configSet.getIndexSchema()));
+      this.packageListeners.addListener(schemaPluginsLoader);
       IndexSchema schema = configSet.getIndexSchema();
 
       this.configSetProperties = configSet.getProperties();
@@ -2781,11 +2787,6 @@ public final class SolrCore implements SolrInfoBean, SolrMetricProducer, Closeab
     return memClassLoader;
   }
 
-  public void fetchLatestSchema() {
-    IndexSchema schema =  configSet.getIndexSchema(true);
-    setLatestSchema(schema);
-  }
-
   public interface RawWriter {
     default String getContentType() {
       return BinaryResponseParser.BINARY_CONTENT_TYPE;
@@ -3098,7 +3099,7 @@ public final class SolrCore implements SolrInfoBean, SolrMetricProducer, Closeab
       SolrZkClient zkClient = cc.getZkController().getZkClient();
       int solrConfigversion, overlayVersion, managedSchemaVersion = 0;
       SolrConfig cfg = null;
-      try (SolrCore solrCore = cc.solrCores.getCoreFromAnyList(coreName, true, coreId)) {
+      try (SolrCore solrCore = cc.solrCores.getCoreFromAnyList(coreName, true)) {
         if (solrCore == null || solrCore.isClosed() || solrCore.getCoreContainer().isShutDown()) return;
         cfg = solrCore.getSolrConfig();
         solrConfigversion = solrCore.getSolrConfig().getOverlay().getZnodeVersion();
@@ -3119,7 +3120,7 @@ public final class SolrCore implements SolrInfoBean, SolrMetricProducer, Closeab
         if (configHandler.getReloadLock().tryLock()) {
 
           try {
-            cc.reload(coreName, coreId, false);
+            cc.reload(coreName, coreId);
           } catch (SolrCoreState.CoreIsClosedException e) {
             /*no problem this core is already closed*/
           } finally {
@@ -3132,7 +3133,7 @@ public final class SolrCore implements SolrInfoBean, SolrMetricProducer, Closeab
         return;
       }
       //some files in conf directory may have  other than managedschema, overlay, params
-      try (SolrCore solrCore = cc.solrCores.getCoreFromAnyList(coreName, true, coreId)) {
+      try (SolrCore solrCore = cc.solrCores.getCoreFromAnyList(coreName, true)) {
         if (solrCore == null || solrCore.isClosed() || cc.isShutDown()) return;
         for (Runnable listener : solrCore.confListeners) {
           try {
diff --git a/solr/core/src/java/org/apache/solr/core/SolrCores.java b/solr/core/src/java/org/apache/solr/core/SolrCores.java
index d9c1539..d18e3a1 100644
--- a/solr/core/src/java/org/apache/solr/core/SolrCores.java
+++ b/solr/core/src/java/org/apache/solr/core/SolrCores.java
@@ -34,7 +34,6 @@ import java.util.List;
 import java.util.Map;
 import java.util.Set;
 import java.util.TreeSet;
-import java.util.UUID;
 import java.util.concurrent.ConcurrentHashMap;
 import java.util.concurrent.ExecutorService;
 import java.util.concurrent.TimeUnit;
@@ -283,19 +282,15 @@ class SolrCores {
       return ret;
     }
   }
-  SolrCore  getCoreFromAnyList(String name, boolean incRefCount) {
-    return getCoreFromAnyList(name, incRefCount, null);
-  }
 
   /* If you don't increment the reference count, someone could close the core before you use it. */
-  SolrCore  getCoreFromAnyList(String name, boolean incRefCount, UUID coreId) {
+  SolrCore  getCoreFromAnyList(String name, boolean incRefCount) {
     synchronized (modifyLock) {
       SolrCore core = cores.get(name);
 
       if (core == null && getTransientCacheHandler() != null) {
         core = getTransientCacheHandler().getCore(name);
       }
-      if(core != null && coreId != null && coreId != core.uniqueId) return null;
 
       if (core != null && incRefCount) {
         core.open();
diff --git a/solr/core/src/java/org/apache/solr/core/SolrResourceLoader.java b/solr/core/src/java/org/apache/solr/core/SolrResourceLoader.java
index ed97024..fa963b3 100644
--- a/solr/core/src/java/org/apache/solr/core/SolrResourceLoader.java
+++ b/solr/core/src/java/org/apache/solr/core/SolrResourceLoader.java
@@ -44,7 +44,6 @@ import org.apache.solr.common.SolrException;
 import org.apache.solr.common.cloud.SolrClassLoader;
 import org.apache.solr.handler.component.SearchComponent;
 import org.apache.solr.handler.component.ShardHandlerFactory;
-import org.apache.solr.pkg.PackageListeningClassLoader;
 import org.apache.solr.request.SolrRequestHandler;
 import org.apache.solr.response.QueryResponseWriter;
 import org.apache.solr.rest.RestManager;
@@ -60,7 +59,7 @@ import org.slf4j.LoggerFactory;
 /**
  * @since solr 1.3
  */
-public class SolrResourceLoader implements ResourceLoader, Closeable, SolrClassLoader, SolrCoreAware  {
+public class SolrResourceLoader implements ResourceLoader, Closeable, SolrClassLoader {
   private static final Logger log = LoggerFactory.getLogger(MethodHandles.lookup().lookupClass());
 
   private static final String base = "org.apache.solr";
@@ -77,30 +76,6 @@ public class SolrResourceLoader implements ResourceLoader, Closeable, SolrClassL
   protected URLClassLoader classLoader;
   private final Path instanceDir;
   private String dataDir; // gone in 9.0
-  private String coreName;
-  private UUID coreId;
-  private SolrConfig config;
-  private CoreContainer coreContainer;
-  private PackageListeningClassLoader schemaLoader ;
-
-  private PackageListeningClassLoader createSchemaLoader() {
-    CoreContainer cc = getCoreContainer();
-    if (cc == null) {
-      //corecontainer not available . can't load from packages
-      return null;
-    }
-    return new PackageListeningClassLoader(cc, this, pkg -> {
-      if (getSolrConfig() == null) return null;
-      return getSolrConfig().maxPackageVersion(pkg);
-    }, () -> {
-      if(getCoreContainer() == null || config == null || coreName == null || coreId==null) return;
-      try (SolrCore c = getCoreContainer().getCore(coreName, coreId)) {
-        if (c != null) {
-          c.fetchLatestSchema();
-        }
-      }
-    });
-  }
 
 
 
@@ -126,13 +101,6 @@ public class SolrResourceLoader implements ResourceLoader, Closeable, SolrClassL
     return managedResourceRegistry;
   }
 
-  public SolrClassLoader getSchemaLoader() {
-    if (schemaLoader == null) {
-      schemaLoader = createSchemaLoader();
-    }
-    return schemaLoader;
-  }
-
   public SolrResourceLoader() {
     this(SolrPaths.locateSolrHome(), null);
   }
@@ -676,11 +644,6 @@ public class SolrResourceLoader implements ResourceLoader, Closeable, SolrClassL
   public void inform(SolrCore core)
   {
     this.dataDir = core.getDataDir(); // removed in 9.0
-    this.coreName = core.getName();
-    this.config = core.getSolrConfig();
-    this.coreId = core.uniqueId;
-    this.coreContainer = core.getCoreContainer();
-    if(getSchemaLoader() != null) core.getPackageListeners().addListener(schemaLoader);
 
     // make a copy to avoid potential deadlock of a callback calling newInstance and trying to
     // add something to waitingForCore.
@@ -827,14 +790,6 @@ public class SolrResourceLoader implements ResourceLoader, Closeable, SolrClassL
     throw new SolrException( SolrException.ErrorCode.SERVER_ERROR, builder.toString() );
   }
 
-  public CoreContainer getCoreContainer(){
-    return coreContainer;
-  }
-
-  public SolrConfig getSolrConfig() {
-    return config;
-
-  }
   @Override
   public void close() throws IOException {
     IOUtils.close(classLoader);
diff --git a/solr/core/src/java/org/apache/solr/handler/IndexFetcher.java b/solr/core/src/java/org/apache/solr/handler/IndexFetcher.java
index 0f5bb7b..57f8ba0 100644
--- a/solr/core/src/java/org/apache/solr/handler/IndexFetcher.java
+++ b/solr/core/src/java/org/apache/solr/handler/IndexFetcher.java
@@ -948,7 +948,7 @@ public class IndexFetcher {
     final CountDownLatch latch = new CountDownLatch(1);
     new Thread(() -> {
       try {
-        solrCore.getCoreContainer().reload(solrCore.getName(), solrCore.uniqueId);
+        solrCore.getCoreContainer().reload(solrCore.getName());
       } catch (Exception e) {
         log.error("Could not reload core ", e);
       } finally {
diff --git a/solr/core/src/java/org/apache/solr/handler/SchemaHandler.java b/solr/core/src/java/org/apache/solr/handler/SchemaHandler.java
index 12733ec..fef5773 100644
--- a/solr/core/src/java/org/apache/solr/handler/SchemaHandler.java
+++ b/solr/core/src/java/org/apache/solr/handler/SchemaHandler.java
@@ -26,7 +26,6 @@ import org.apache.solr.api.ApiBag;
 import org.apache.solr.cloud.ZkSolrResourceLoader;
 import org.apache.solr.common.MapWriter;
 import org.apache.solr.common.SolrException;
-import org.apache.solr.common.cloud.SolrClassLoader;
 import org.apache.solr.common.params.MapSolrParams;
 import org.apache.solr.common.params.SolrParams;
 import org.apache.solr.common.util.NamedList;
@@ -35,7 +34,6 @@ import org.apache.solr.common.util.StrUtils;
 import org.apache.solr.common.util.Utils;
 import org.apache.solr.core.PluginInfo;
 import org.apache.solr.core.SolrCore;
-import org.apache.solr.pkg.PackageListeningClassLoader;
 import org.apache.solr.request.SolrQueryRequest;
 import org.apache.solr.request.SolrRequestHandler;
 import org.apache.solr.response.SolrQueryResponse;
@@ -231,9 +229,7 @@ public class SchemaHandler extends RequestHandlerBase implements SolrCoreAware,
         String klas = (String) v;
         PluginInfo.ClassName parsedClassName = new PluginInfo.ClassName(klas);
         if (parsedClassName.pkg != null) {
-          SolrClassLoader solrClassLoader = req.getCore().getLatestSchema().getSolrClassLoader();
-          MapWriter mw = solrClassLoader instanceof PackageListeningClassLoader ?
-              ((PackageListeningClassLoader) solrClassLoader).getPackageVersion(parsedClassName) : null;
+          MapWriter mw = req.getCore().getSchemaPluginsLoader().getPackageVersion(parsedClassName);
           if (mw != null) nl.add("_packageinfo_", mw);
         }
       }
diff --git a/solr/core/src/java/org/apache/solr/handler/SolrConfigHandler.java b/solr/core/src/java/org/apache/solr/handler/SolrConfigHandler.java
index 9ac6207..7f48b63 100644
--- a/solr/core/src/java/org/apache/solr/handler/SolrConfigHandler.java
+++ b/solr/core/src/java/org/apache/solr/handler/SolrConfigHandler.java
@@ -548,7 +548,7 @@ public class SolrConfigHandler extends RequestHandlerBase implements SolrCoreAwa
             latestVersion, 30);
       } else {
         SolrResourceLoader.persistConfLocally(loader, ConfigOverlay.RESOURCE_NAME, overlay.toByteArray());
-        req.getCore().getCoreContainer().reload(req.getCore().getName(), req.getCore().uniqueId, false);
+        req.getCore().getCoreContainer().reload(req.getCore().getName(), req.getCore().uniqueId);
         log.info("Executed config commands successfully and persisted to File System {}", ops);
       }
 
diff --git a/solr/core/src/java/org/apache/solr/schema/IndexSchema.java b/solr/core/src/java/org/apache/solr/schema/IndexSchema.java
index bd4ae7e..3e2237f 100644
--- a/solr/core/src/java/org/apache/solr/schema/IndexSchema.java
+++ b/solr/core/src/java/org/apache/solr/schema/IndexSchema.java
@@ -190,7 +190,7 @@ public class IndexSchema {
   protected IndexSchema(Version luceneVersion, SolrResourceLoader loader, Properties substitutableProperties) {
     this.luceneVersion = Objects.requireNonNull(luceneVersion);
     this.loader = loader;
-    this.solrClassLoader = loader.getSchemaLoader() == null ? loader : loader.getSchemaLoader();
+    this.solrClassLoader = loader;//loader.getCore() == null? loader: loader.getCore().getSchemaPluginsLoader();
     this.substitutableProperties = substitutableProperties;
   }
 
diff --git a/solr/core/src/java/org/apache/solr/schema/SchemaManager.java b/solr/core/src/java/org/apache/solr/schema/SchemaManager.java
index 3731a17..d2f5b67 100644
--- a/solr/core/src/java/org/apache/solr/schema/SchemaManager.java
+++ b/solr/core/src/java/org/apache/solr/schema/SchemaManager.java
@@ -132,7 +132,7 @@ public class SchemaManager {
             latestVersion = ZkController.persistConfigResourceToZooKeeper
                 (zkLoader, managedIndexSchema.getSchemaZkVersion(), managedIndexSchema.getResourceName(),
                  sw.toString().getBytes(StandardCharsets.UTF_8), true);
-            req.getCore().getCoreContainer().reload(req.getCore().getName(), req.getCore().uniqueId, false);
+            req.getCore().getCoreContainer().reload(req.getCore().getName(), req.getCore().uniqueId);
             break;
           } catch (ZkController.ResourceModifiedInZkException e) {
             log.info("Schema was modified by another node. Retrying..");
@@ -142,7 +142,7 @@ public class SchemaManager {
             //only for non cloud stuff
             managedIndexSchema.persistManagedSchema(false);
             core.setLatestSchema(managedIndexSchema);
-            core.getCoreContainer().reload(core.getName(), core.uniqueId, false);
+            core.getCoreContainer().reload(core.getName(), core.uniqueId);
           } catch (SolrException e) {
             log.warn(errorMsg);
             errors = singletonList(errorMsg + e.getMessage());
diff --git a/solr/core/src/test/org/apache/solr/pkg/TestPackages.java b/solr/core/src/test/org/apache/solr/pkg/TestPackages.java
index f967cbd..46b4071 100644
--- a/solr/core/src/test/org/apache/solr/pkg/TestPackages.java
+++ b/solr/core/src/test/org/apache/solr/pkg/TestPackages.java
@@ -63,6 +63,7 @@ import org.apache.solr.util.plugin.SolrCoreAware;
 import org.apache.zookeeper.data.Stat;
 import org.junit.After;
 import org.junit.Before;
+import org.junit.Ignore;
 import org.junit.Test;
 
 import static org.apache.solr.common.cloud.ZkStateReader.SOLR_PKGS_PATH;
@@ -636,6 +637,7 @@ public class TestPackages extends SolrCloudTestCase {
   }
 
   @SuppressWarnings("rawtypes")
+  @Ignore("SOLR-14750")
   public void testSchemaPlugins() throws Exception {
     String COLLECTION_NAME = "testSchemaLoadingColl";
     System.setProperty("managed.schema.mutable", "true");


[lucene-solr] 01/10: Revert "SOLR-14151:missing test jaar"

Posted by is...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

ishan pushed a commit to branch jira/solr-14151-revert-8x
in repository https://gitbox.apache.org/repos/asf/lucene-solr.git

commit a9100f5934ce593eab8ed37a2d851d375bc684b2
Author: Ishan Chattopadhyaya <is...@apache.org>
AuthorDate: Sat Sep 19 10:49:03 2020 +0530

    Revert "SOLR-14151:missing test jaar"
    
    This reverts commit ba95b6402526c23fd82f671ec343b30376eeaf83.
---
 .../test-files/runtimecode/payload-component.jar.bin    | Bin 17815 -> 0 bytes
 1 file changed, 0 insertions(+), 0 deletions(-)

diff --git a/solr/core/src/test-files/runtimecode/payload-component.jar.bin b/solr/core/src/test-files/runtimecode/payload-component.jar.bin
deleted file mode 100644
index 47a4305..0000000
Binary files a/solr/core/src/test-files/runtimecode/payload-component.jar.bin and /dev/null differ


[lucene-solr] 02/10: Revert "SOLR-14151: support loading encoder"

Posted by is...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

ishan pushed a commit to branch jira/solr-14151-revert-8x
in repository https://gitbox.apache.org/repos/asf/lucene-solr.git

commit 0d529fbd1b5bf8fdbcab94c431f60c4bde028b16
Author: Ishan Chattopadhyaya <is...@apache.org>
AuthorDate: Sat Sep 19 10:49:12 2020 +0530

    Revert "SOLR-14151: support loading encoder"
    
    This reverts commit c0fc134e35ecf01a5392e9a51e17c16c2676f536.
---
 .../org/apache/solr/core/SolrResourceLoader.java   | 91 +++++++---------------
 .../org/apache/solr/schema/ManagedIndexSchema.java |  3 -
 .../java/org/apache/solr/schema/SchemaManager.java |  8 --
 .../src/test/org/apache/solr/pkg/TestPackages.java | 19 +----
 4 files changed, 30 insertions(+), 91 deletions(-)

diff --git a/solr/core/src/java/org/apache/solr/core/SolrResourceLoader.java b/solr/core/src/java/org/apache/solr/core/SolrResourceLoader.java
index ccc1bd9..ed97024 100644
--- a/solr/core/src/java/org/apache/solr/core/SolrResourceLoader.java
+++ b/solr/core/src/java/org/apache/solr/core/SolrResourceLoader.java
@@ -34,8 +34,6 @@ import java.util.concurrent.ConcurrentHashMap;
 import java.util.regex.Matcher;
 import java.util.regex.Pattern;
 import java.util.stream.Collectors;
-
-import com.google.common.collect.ImmutableSet;
 import org.apache.lucene.analysis.WordlistLoader;
 import org.apache.lucene.analysis.util.*;
 import org.apache.lucene.codecs.Codec;
@@ -85,6 +83,27 @@ public class SolrResourceLoader implements ResourceLoader, Closeable, SolrClassL
   private CoreContainer coreContainer;
   private PackageListeningClassLoader schemaLoader ;
 
+  private PackageListeningClassLoader createSchemaLoader() {
+    CoreContainer cc = getCoreContainer();
+    if (cc == null) {
+      //corecontainer not available . can't load from packages
+      return null;
+    }
+    return new PackageListeningClassLoader(cc, this, pkg -> {
+      if (getSolrConfig() == null) return null;
+      return getSolrConfig().maxPackageVersion(pkg);
+    }, () -> {
+      if(getCoreContainer() == null || config == null || coreName == null || coreId==null) return;
+      try (SolrCore c = getCoreContainer().getCore(coreName, coreId)) {
+        if (c != null) {
+          c.fetchLatestSchema();
+        }
+      }
+    });
+  }
+
+
+
   private final List<SolrCoreAware> waitingForCore = Collections.synchronizedList(new ArrayList<SolrCoreAware>());
   private final List<SolrInfoBean> infoMBeans = Collections.synchronizedList(new ArrayList<SolrInfoBean>());
   private final List<ResourceLoaderAware> waitingForResources = Collections.synchronizedList(new ArrayList<ResourceLoaderAware>());
@@ -96,7 +115,7 @@ public class SolrResourceLoader implements ResourceLoader, Closeable, SolrClassL
   // Provide a registry so that managed resources can register themselves while the XML configuration
   // documents are being parsed ... after all are registered, they are asked by the RestManager to
   // initialize themselves. This two-step process is required because not all resources are available
-  // (such as the SolrZkClient) when XML docs are being parsed.
+  // (such as the SolrZkClient) when XML docs are being parsed.    
   private RestManager.Registry managedResourceRegistry;
   /** @see #reloadLuceneSPI() */
   private boolean needToReloadLuceneSPI = false; // requires synchronization
@@ -495,8 +514,6 @@ public class SolrResourceLoader implements ResourceLoader, Closeable, SolrClassL
     }
 
     Class<? extends T> clazz = null;
-    clazz = getPackageClass(cname, expectedType);
-    if(clazz != null) return clazz;
     try {
       // first try legacy analysis patterns, now replaced by Lucene's Analysis package:
       final Matcher m = legacyAnalysisPattern.matcher(cname);
@@ -559,24 +576,6 @@ public class SolrResourceLoader implements ResourceLoader, Closeable, SolrClassL
     }
   }
 
-  private  <T> Class<? extends T> getPackageClass(String cname, Class<T> expectedType) {
-    PluginInfo.ClassName cName = PluginInfo.parseClassName(cname);
-    if (cName.pkg == null) return null;
-    ResourceLoaderAware aware = CURRENT_AWARE.get();
-    if (aware != null) {
-      //this is invoked from a component
-      //let's check if it's a schema component
-      @SuppressWarnings("rawtypes")
-      Class type = assertAwareCompatibility(ResourceLoaderAware.class, aware);
-      if (schemaResourceLoaderComponents.contains(type)) {
-        //this is a schema component
-        //lets use schema classloader
-        return getSchemaLoader().findClass(cname, expectedType);
-      }
-    }
-    return null;
-  }
-
   static final String[] empty = new String[0];
 
   @Override
@@ -717,14 +716,8 @@ public class SolrResourceLoader implements ResourceLoader, Closeable, SolrClassL
         waitingForResources.clear();
       }
 
-      for (ResourceLoaderAware aware : arr) {
-        CURRENT_AWARE.set(aware);
-        try{
-          aware.inform(loader);
-        } finally {
-          CURRENT_AWARE.remove();
-        }
-
+      for( ResourceLoaderAware aware : arr) {
+        aware.inform(loader);
       }
     }
   }
@@ -809,21 +802,11 @@ public class SolrResourceLoader implements ResourceLoader, Closeable, SolrClassL
     );
   }
 
-  /**If these components are trying to load classes, use schema classloader
-   *
-   */
-  @SuppressWarnings("rawtypes")
-  private static final ImmutableSet<Class> schemaResourceLoaderComponents = ImmutableSet.of(
-      CharFilterFactory.class,
-      TokenFilterFactory.class,
-      TokenizerFactory.class,
-      FieldType.class);
-
   /**
    * Utility function to throw an exception if the class is invalid
    */
   @SuppressWarnings({"rawtypes"})
-  public static Class assertAwareCompatibility(Class aware, Object obj) {
+  public static void assertAwareCompatibility(Class aware, Object obj) {
     Class[] valid = awareCompatibility.get( aware );
     if( valid == null ) {
       throw new SolrException( SolrException.ErrorCode.SERVER_ERROR,
@@ -831,7 +814,7 @@ public class SolrResourceLoader implements ResourceLoader, Closeable, SolrClassL
     }
     for( Class v : valid ) {
       if( v.isInstance( obj ) ) {
-        return v;
+        return;
       }
     }
     StringBuilder builder = new StringBuilder();
@@ -860,25 +843,6 @@ public class SolrResourceLoader implements ResourceLoader, Closeable, SolrClassL
     return Collections.unmodifiableList(infoMBeans);
   }
 
-  private PackageListeningClassLoader createSchemaLoader() {
-    CoreContainer cc = getCoreContainer();
-    if (cc == null) {
-      //corecontainer not available . can't load from packages
-      return null;
-    }
-    return new PackageListeningClassLoader(cc, this, pkg -> {
-      if (getSolrConfig() == null) return null;
-      return getSolrConfig().maxPackageVersion(pkg);
-    }, () -> {
-      if(getCoreContainer() == null || config == null || coreName == null || coreId==null) return;
-      try (SolrCore c = getCoreContainer().getCore(coreName, coreId)) {
-        if (c != null) {
-          c.fetchLatestSchema();
-        }
-      }
-    });
-  }
-
 
   public static void persistConfLocally(SolrResourceLoader loader, String resourceName, byte[] content) {
     // Persist locally
@@ -910,7 +874,4 @@ public class SolrResourceLoader implements ResourceLoader, Closeable, SolrClassL
     }
   }
 
-  //This is to verify if this requires to use the schema classloader for classes loaded from packages
-  public static final ThreadLocal<ResourceLoaderAware> CURRENT_AWARE = new ThreadLocal<>();
-
 }
diff --git a/solr/core/src/java/org/apache/solr/schema/ManagedIndexSchema.java b/solr/core/src/java/org/apache/solr/schema/ManagedIndexSchema.java
index f4ae860..d44e961 100644
--- a/solr/core/src/java/org/apache/solr/schema/ManagedIndexSchema.java
+++ b/solr/core/src/java/org/apache/solr/schema/ManagedIndexSchema.java
@@ -1338,13 +1338,10 @@ public final class ManagedIndexSchema extends IndexSchema {
     TokenFilterFactory[] filters = chain.getTokenFilterFactories();
     for (TokenFilterFactory next : filters) {
       if (next instanceof ResourceLoaderAware) {
-        SolrResourceLoader.CURRENT_AWARE.set((ResourceLoaderAware) next);
         try {
           ((ResourceLoaderAware) next).inform(loader);
         } catch (IOException e) {
           throw new SolrException(ErrorCode.SERVER_ERROR, e);
-        } finally {
-          SolrResourceLoader.CURRENT_AWARE.remove();
         }
       }
     }
diff --git a/solr/core/src/java/org/apache/solr/schema/SchemaManager.java b/solr/core/src/java/org/apache/solr/schema/SchemaManager.java
index c30f662..3731a17 100644
--- a/solr/core/src/java/org/apache/solr/schema/SchemaManager.java
+++ b/solr/core/src/java/org/apache/solr/schema/SchemaManager.java
@@ -189,7 +189,6 @@ public class SchemaManager {
           mgr.managedIndexSchema = mgr.managedIndexSchema.addFieldTypes(singletonList(fieldType), false);
           return true;
         } catch (Exception e) {
-          log.error("err", e);
           op.addError(getErrorStr(e));
           return false;
         }
@@ -224,7 +223,6 @@ public class SchemaManager {
           mgr.managedIndexSchema = mgr.managedIndexSchema.addCopyFields(src, dests, maxChars);
           return true;
         } catch (Exception e) {
-          log.error("err", e);
           op.addError(getErrorStr(e));
           return false;
         }
@@ -242,7 +240,6 @@ public class SchemaManager {
               = mgr.managedIndexSchema.addFields(singletonList(field), Collections.emptyMap(), false);
           return true;
         } catch (Exception e) {
-          log.error("err", e);
           op.addError(getErrorStr(e));
           return false;
         }
@@ -260,7 +257,6 @@ public class SchemaManager {
               = mgr.managedIndexSchema.addDynamicFields(singletonList(field), Collections.emptyMap(), false);
           return true;
         } catch (Exception e) {
-          log.error("err", e);
           op.addError(getErrorStr(e));
           return false;
         }
@@ -279,7 +275,6 @@ public class SchemaManager {
           mgr.managedIndexSchema = mgr.managedIndexSchema.deleteFieldTypes(singleton(name));
           return true;
         } catch (Exception e) {
-          log.error("err", e);
           op.addError(getErrorStr(e));
           return false;
         }
@@ -336,7 +331,6 @@ public class SchemaManager {
           mgr.managedIndexSchema = mgr.managedIndexSchema.deleteDynamicFields(singleton(name));
           return true;
         } catch (Exception e) {
-          log.error("err", e);
           op.addError(getErrorStr(e));
           return false;
         }
@@ -352,7 +346,6 @@ public class SchemaManager {
           mgr.managedIndexSchema = mgr.managedIndexSchema.replaceFieldType(name, className, op.getDataMap());
           return true;
         } catch (Exception e) {
-          log.error("err", e);
           op.addError(getErrorStr(e));
           return false;
         }
@@ -373,7 +366,6 @@ public class SchemaManager {
           mgr.managedIndexSchema = mgr.managedIndexSchema.replaceField(name, ft, op.getValuesExcluding(NAME, TYPE));
           return true;
         } catch (Exception e) {
-          log.error("err", e);
           op.addError(getErrorStr(e));
           return false;
         }
diff --git a/solr/core/src/test/org/apache/solr/pkg/TestPackages.java b/solr/core/src/test/org/apache/solr/pkg/TestPackages.java
index e7d9ced..f967cbd 100644
--- a/solr/core/src/test/org/apache/solr/pkg/TestPackages.java
+++ b/solr/core/src/test/org/apache/solr/pkg/TestPackages.java
@@ -19,20 +19,13 @@ package org.apache.solr.pkg;
 
 import java.io.IOException;
 import java.nio.ByteBuffer;
-import java.util.Arrays;
-import java.util.Collections;
-import java.util.LinkedHashMap;
-import java.util.Map;
+import java.util.*;
 import java.util.concurrent.Callable;
 
 import org.apache.commons.codec.digest.DigestUtils;
 import org.apache.lucene.analysis.util.ResourceLoader;
 import org.apache.lucene.analysis.util.ResourceLoaderAware;
-import org.apache.solr.client.solrj.SolrClient;
-import org.apache.solr.client.solrj.SolrQuery;
-import org.apache.solr.client.solrj.SolrRequest;
-import org.apache.solr.client.solrj.SolrResponse;
-import org.apache.solr.client.solrj.SolrServerException;
+import org.apache.solr.client.solrj.*;
 import org.apache.solr.client.solrj.embedded.JettySolrRunner;
 import org.apache.solr.client.solrj.impl.BaseHttpSolrClient;
 import org.apache.solr.client.solrj.impl.HttpSolrClient;
@@ -659,14 +652,10 @@ public class TestPackages extends SolrCloudTestCase {
       postFileAndWait(cluster, "runtimecode/schema-plugins.jar.bin", FILE1,
           "iSRhrogDyt9P1htmSf/krh1kx9oty3TYyWm4GKHQGlb8a+X4tKCe9kKk+3tGs+bU9zq5JBZ5txNXsn96aZem5A==");
 
-      String FILE2 = "/schemapkg/payload-component.jar";
-      postFileAndWait(cluster, "runtimecode/payload-component.jar.bin", FILE2,
-          "gI6vYUDmSXSXmpNEeK1cwqrp4qTeVQgizGQkd8A4Prx2K8k7c5QlXbcs4lxFAAbbdXz9F4esBqTCiLMjVDHJ5Q==");
-
       Package.AddVersion add = new Package.AddVersion();
       add.version = "1.0";
       add.pkg = "schemapkg";
-      add.files = Arrays.asList(FILE1,FILE2);
+      add.files = Arrays.asList(new String[]{FILE1});
       V2Request req = new V2Request.Builder("/cluster/package")
           .forceV2(true)
           .withMethod(SolrRequest.METHOD.POST)
@@ -705,7 +694,7 @@ public class TestPackages extends SolrCloudTestCase {
       String tokenizer =
           "        'tokenizer' : { 'class':'schemapkg:my.pkg.MyWhitespaceTokenizerFactory' },\n";
       String filters =
-          "        'filters' : [{ 'class':'solr.DelimitedPayloadTokenFilterFactory', 'encoder' : 'schemapkg:com.o19s.payloads.Base64Encoder'}]\n";
+          "        'filters' : [{ 'class':'solr.ASCIIFoldingFilterFactory' }]\n";
       String suffix = "    }\n" +
           "}}";
       cluster.getSolrClient().request(new SolrRequest(SolrRequest.METHOD.POST, "/schema") {