You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@lucene.apache.org by dw...@apache.org on 2021/03/10 09:55:56 UTC

[lucene] branch jira/solr14155-1 created (now abd8d34)

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

dweiss pushed a change to branch jira/solr14155-1
in repository https://gitbox.apache.org/repos/asf/lucene.git.


      at abd8d34  CHANGES.txt

This branch includes the following new commits:

     new 5905341  SOLR-14155: Load all other SolrCore plugins from packages
     new ae2dfc6  more review commnets incorporated
     new fc3599b  precommit errs
     new 9051687  use proper generics
     new 9bc2221  use Long instead of UUID
     new f539892  precommit errs
     new 3f764ca  cleanup
     new a874bfc5 cleanup
     new 5d50b47  bug fix
     new 0d6d206  moved some methods to SRL
     new 74f5156  moved some methods to SRL
     new 84169b9  refactoring
     new 65cbb8c  more refactoring and reviw comments implemented
     new 785db2a8 more refactoring and reviw comments implemented
     new 14f9ed6  more refactoring and reviw comments implemented
     new 871acb6  merging w/ master
     new e860911  merging w/ master
     new eef0bf5  merging w/ master
     new 6bc50e9  Merge branch 'master' into jira/solr14155-1
     new 67ebf1a  merge errs
     new a1be6c6  javadocs
     new 4074228  merge errs
     new 30dd62d  more cleanup
     new 44194f9  more cleanup
     new fb06714  more cleanup
     new 3255457  more cleanup
     new c704a9a  more cleanup
     new 9d4946a  cleanup
     new 9888bc8  merging with master
     new 768c4f5  merging with master
     new ecee497  merging with master
     new 6f24116  merging with trunk
     new 31080d8  merging with trunk
     new 8c29255  merging with trunk
     new d53e248  merging with trunk
     new 19ec873  unused imports
     new 6e7ffac  unused imports
     new eeac7dc  fix the API to show package version
     new bde680f  added tests
     new 693cedd  unused imports
     new 98bff64  unused imports
     new abd8d34  CHANGES.txt

The 42 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] 05/42: use Long instead of UUID

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

dweiss pushed a commit to branch jira/solr14155-1
in repository https://gitbox.apache.org/repos/asf/lucene.git

commit 9bc2221d59e328068586486d70ef6604ee994864
Author: noblepaul <no...@gmail.com>
AuthorDate: Sun Jul 12 22:21:54 2020 +1000

    use Long instead of UUID
---
 solr/core/src/java/org/apache/solr/core/CoreContainer.java | 4 ++--
 solr/core/src/java/org/apache/solr/core/SolrCore.java      | 2 +-
 2 files changed, 3 insertions(+), 3 deletions(-)

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 82cb11f..19127ce 100644
--- a/solr/core/src/java/org/apache/solr/core/CoreContainer.java
+++ b/solr/core/src/java/org/apache/solr/core/CoreContainer.java
@@ -1592,14 +1592,14 @@ public class CoreContainer {
    * @param name the name of the SolrCore to reload
    * @param coreId The unique identifier of the core
    */
-  public void reload(String name, UUID coreId) {
+  public void reload(String name, Long coreId) {
     if (isShutDown) {
       throw new AlreadyClosedException();
     }
     SolrCore newCore = null;
     SolrCore core = solrCores.getCoreFromAnyList(name, false);
     if (core != null) {
-      if(coreId != null && core.uniqueId != coreId) {
+      if(coreId != null && core.uniqueId.longValue() != coreId) {
         //trying to reload an already unloaded core
         return;
       }
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 3c6fd2a..085da91 100644
--- a/solr/core/src/java/org/apache/solr/core/SolrCore.java
+++ b/solr/core/src/java/org/apache/solr/core/SolrCore.java
@@ -180,7 +180,7 @@ public final class SolrCore implements SolrInfoBean, Closeable {
    * A unique id to differentiate multiple instances of the same core
    * If we reload a core, the name remains same , but the id will be new
    */
-  public final UUID uniqueId = UUID.randomUUID();
+  public final Long uniqueId = System.nanoTime();
 
   private boolean isReloaded = false;
 


[lucene] 27/42: more cleanup

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

dweiss pushed a commit to branch jira/solr14155-1
in repository https://gitbox.apache.org/repos/asf/lucene.git

commit c704a9a8c20eee5cf30fc69e7c6a0c7d2a8503e2
Author: noblepaul <no...@gmail.com>
AuthorDate: Fri Jul 17 00:04:43 2020 +1000

    more cleanup
---
 solr/core/src/java/org/apache/solr/pkg/PackageListeners.java | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/solr/core/src/java/org/apache/solr/pkg/PackageListeners.java b/solr/core/src/java/org/apache/solr/pkg/PackageListeners.java
index 1895b6d..7403baa 100644
--- a/solr/core/src/java/org/apache/solr/pkg/PackageListeners.java
+++ b/solr/core/src/java/org/apache/solr/pkg/PackageListeners.java
@@ -71,7 +71,7 @@ public class PackageListeners {
         invokeListeners(pkgInfo, ctx);
       }
     } finally {
-      ctx.runLaterTasks(core::runAsync);
+      ctx.runLaterTasks(r -> core.getCoreContainer().runAsync(r));
       MDCLoggingContext.clear();
     }
   }


[lucene] 04/42: use proper generics

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

dweiss pushed a commit to branch jira/solr14155-1
in repository https://gitbox.apache.org/repos/asf/lucene.git

commit 90516874d8e5621c032a779b7d0a853bf13ee2c4
Author: noblepaul <no...@gmail.com>
AuthorDate: Sun Jul 12 22:14:26 2020 +1000

    use proper generics
---
 .../java/org/apache/solr/pkg/CoreRefreshingClassLoader.java    |  9 ++++++---
 solr/core/src/java/org/apache/solr/search/CacheConfig.java     | 10 +++++-----
 2 files changed, 11 insertions(+), 8 deletions(-)

diff --git a/solr/core/src/java/org/apache/solr/pkg/CoreRefreshingClassLoader.java b/solr/core/src/java/org/apache/solr/pkg/CoreRefreshingClassLoader.java
index 7b3882d..e75d595 100644
--- a/solr/core/src/java/org/apache/solr/pkg/CoreRefreshingClassLoader.java
+++ b/solr/core/src/java/org/apache/solr/pkg/CoreRefreshingClassLoader.java
@@ -63,10 +63,13 @@ public class CoreRefreshingClassLoader implements PackageListeners.Listener {
     return version;
   }
 
-  @SuppressWarnings({"rawtypes","unchecked"})
-  public static Class loadClass(SolrResourceLoader srl, PluginInfo info, Class type) {
+  /**
+   * Load a class using an appropriate {@link SolrResourceLoader} depending of the package of that class
+   */
+  public static <T> Class<? extends T> findClass(SolrResourceLoader srl, PluginInfo info, Class<T>  type) {
     if(info.cName.pkg == null) return srl.findClass(info.className, type);
-    return _get(srl, info, version -> version.getLoader().findClass(info.cName.className, type));
+    return _get(srl, info,
+            (Function<PackageLoader.Package.Version, Class<? extends T>>) ver -> ver.getLoader().findClass(info.cName.className, type));
 
   }
 
diff --git a/solr/core/src/java/org/apache/solr/search/CacheConfig.java b/solr/core/src/java/org/apache/solr/search/CacheConfig.java
index e47aed4..807f3c0 100644
--- a/solr/core/src/java/org/apache/solr/search/CacheConfig.java
+++ b/solr/core/src/java/org/apache/solr/search/CacheConfig.java
@@ -122,22 +122,22 @@ public class CacheConfig implements MapSerializable{
     config.args = attrs;
 
     Map<String, String> map = xpath == null ? null : solrConfig.getOverlay().getEditableSubProperties(xpath);
-    if(map != null){
+    if (map != null) {
       HashMap<String, String> mapCopy = new HashMap<>(config.args);
       for (Map.Entry<String, String> e : map.entrySet()) {
-        mapCopy.put(e.getKey(),String.valueOf(e.getValue()));
+        mapCopy.put(e.getKey(), String.valueOf(e.getValue()));
       }
       config.args = mapCopy;
     }
     String nameAttr = config.args.get(NAME);  // OPTIONAL
-    if (nameAttr==null) {
+    if (nameAttr == null) {
       config.args.put(NAME, config.nodeName);
     }
 
     SolrResourceLoader loader = solrConfig.getResourceLoader();
     config.cacheImpl = config.args.get("class");
-    if(config.cacheImpl == null) config.cacheImpl = "solr.CaffeineCache";
-    config.clazz = () -> CoreRefreshingClassLoader.loadClass(loader,
+    if (config.cacheImpl == null) config.cacheImpl = "solr.CaffeineCache";
+    config.clazz = () -> CoreRefreshingClassLoader.findClass(loader,
             new PluginInfo("cache", Collections.singletonMap("class", config.cacheImpl)),
             SolrCache.class);
     config.regenImpl = config.args.get("regenerator");


[lucene] 06/42: precommit errs

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

dweiss pushed a commit to branch jira/solr14155-1
in repository https://gitbox.apache.org/repos/asf/lucene.git

commit f5398927056efb4308c0408d578ed9de47bc9bec
Author: noble <no...@apache.org>
AuthorDate: Mon Jul 13 11:47:54 2020 +1000

    precommit errs
---
 .../java/org/apache/solr/core/CoreContainer.java   | 22 ++++++++++++----
 .../src/java/org/apache/solr/core/SolrCore.java    | 29 ++++++++++++++++------
 .../apache/solr/pkg/CoreRefreshingClassLoader.java |  6 ++---
 3 files changed, 41 insertions(+), 16 deletions(-)

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 19127ce..b0c76c3 100644
--- a/solr/core/src/java/org/apache/solr/core/CoreContainer.java
+++ b/solr/core/src/java/org/apache/solr/core/CoreContainer.java
@@ -24,7 +24,19 @@ import java.nio.file.Path;
 import java.nio.file.Paths;
 import java.security.spec.InvalidKeySpecException;
 import java.text.SimpleDateFormat;
-import java.util.*;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.Collection;
+import java.util.Collections;
+import java.util.Date;
+import java.util.HashMap;
+import java.util.LinkedHashSet;
+import java.util.List;
+import java.util.Locale;
+import java.util.Map;
+import java.util.Optional;
+import java.util.Properties;
+import java.util.Set;
 import java.util.concurrent.ConcurrentHashMap;
 import java.util.concurrent.ExecutionException;
 import java.util.concurrent.ExecutorService;
@@ -1579,7 +1591,7 @@ public class CoreContainer {
 
   /**
    * reloads a core
-   * refer {@link CoreContainer#reload(String, UUID)} for details
+   * refer {@link CoreContainer#reload(String, Long)} for details
    */
   public void reload(String name) {
     reload(name, null);
@@ -1590,16 +1602,16 @@ public class CoreContainer {
    * and processed by the old core
    *
    * @param name the name of the SolrCore to reload
-   * @param coreId The unique identifier of the core
+   * @param coreStartTime The start time of the core
    */
-  public void reload(String name, Long coreId) {
+  public void reload(String name, Long coreStartTime) {
     if (isShutDown) {
       throw new AlreadyClosedException();
     }
     SolrCore newCore = null;
     SolrCore core = solrCores.getCoreFromAnyList(name, false);
     if (core != null) {
-      if(coreId != null && core.uniqueId.longValue() != coreId) {
+      if(coreStartTime != null && core.startNanoTime.longValue() != coreStartTime) {
         //trying to reload an already unloaded core
         return;
       }
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 085da91..cce19dd 100644
--- a/solr/core/src/java/org/apache/solr/core/SolrCore.java
+++ b/solr/core/src/java/org/apache/solr/core/SolrCore.java
@@ -31,7 +31,22 @@ import java.nio.charset.StandardCharsets;
 import java.nio.file.NoSuchFileException;
 import java.nio.file.Path;
 import java.nio.file.Paths;
-import java.util.*;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.Collection;
+import java.util.Collections;
+import java.util.Date;
+import java.util.HashMap;
+import java.util.HashSet;
+import java.util.Iterator;
+import java.util.LinkedHashMap;
+import java.util.LinkedList;
+import java.util.List;
+import java.util.Map;
+import java.util.Objects;
+import java.util.Optional;
+import java.util.Properties;
+import java.util.Set;
 import java.util.concurrent.Callable;
 import java.util.concurrent.ConcurrentHashMap;
 import java.util.concurrent.CopyOnWriteArrayList;
@@ -125,7 +140,10 @@ import org.apache.solr.schema.FieldType;
 import org.apache.solr.schema.IndexSchema;
 import org.apache.solr.schema.ManagedIndexSchema;
 import org.apache.solr.schema.SimilarityFactory;
-import org.apache.solr.search.*;
+import org.apache.solr.search.QParserPlugin;
+import org.apache.solr.search.SolrFieldCacheBean;
+import org.apache.solr.search.SolrIndexSearcher;
+import org.apache.solr.search.ValueSourceParser;
 import org.apache.solr.search.stats.LocalStatsCache;
 import org.apache.solr.search.stats.StatsCache;
 import org.apache.solr.update.DefaultSolrCoreState;
@@ -176,11 +194,6 @@ public final class SolrCore implements SolrInfoBean, Closeable {
 
   private String name;
   private String logid; // used to show what name is set
-  /**
-   * A unique id to differentiate multiple instances of the same core
-   * If we reload a core, the name remains same , but the id will be new
-   */
-  public final Long uniqueId = System.nanoTime();
 
   private boolean isReloaded = false;
 
@@ -195,7 +208,7 @@ public final class SolrCore implements SolrInfoBean, Closeable {
   private final SolrCoreState solrCoreState;
 
   private final Date startTime = new Date();
-  private final long startNanoTime = System.nanoTime();
+  public final Long startNanoTime = System.nanoTime();
   private final RequestHandlers reqHandlers;
   private final PluginBag<SearchComponent> searchComponents = new PluginBag<>(SearchComponent.class, this);
   private final PluginBag<UpdateRequestProcessorFactory> updateProcessors = new PluginBag<>(UpdateRequestProcessorFactory.class, this, true);
diff --git a/solr/core/src/java/org/apache/solr/pkg/CoreRefreshingClassLoader.java b/solr/core/src/java/org/apache/solr/pkg/CoreRefreshingClassLoader.java
index e75d595..5532615 100644
--- a/solr/core/src/java/org/apache/solr/pkg/CoreRefreshingClassLoader.java
+++ b/solr/core/src/java/org/apache/solr/pkg/CoreRefreshingClassLoader.java
@@ -17,12 +17,12 @@
 
 package org.apache.solr.pkg;
 
+import java.util.function.Function;
+
 import org.apache.solr.core.PluginInfo;
 import org.apache.solr.core.SolrCore;
 import org.apache.solr.core.SolrResourceLoader;
 
-import java.util.function.Function;
-
 /**A utility class that loads classes from packages and reloads core if any of those packages are updated
  *
  */
@@ -54,7 +54,7 @@ public class CoreRefreshingClassLoader implements PackageListeners.Listener {
   public void changed(PackageLoader.Package pkg, Ctx ctx) {
     PackageLoader.Package.Version version = pkg.getLatest(solrCore.getSolrConfig().maxPackageVersion(info.cName.pkg));
     if(version != this.version) {
-      ctx.runLater(SolrCore.class.getName(), () -> solrCore.getCoreContainer().reload(CoreRefreshingClassLoader.class.getName() , solrCore.uniqueId));
+      ctx.runLater(SolrCore.class.getName(), () -> solrCore.getCoreContainer().reload(CoreRefreshingClassLoader.class.getName() , solrCore.startNanoTime));
     }
   }
 


[lucene] 08/42: cleanup

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

dweiss pushed a commit to branch jira/solr14155-1
in repository https://gitbox.apache.org/repos/asf/lucene.git

commit a874bfc5e517234b66b6a0630b6e898bbfb9969d
Author: noble <no...@apache.org>
AuthorDate: Mon Jul 13 12:06:19 2020 +1000

    cleanup
---
 solr/core/src/java/org/apache/solr/core/CoreContainer.java       | 9 +++++----
 solr/core/src/java/org/apache/solr/core/SolrCore.java            | 8 +++++++-
 .../src/java/org/apache/solr/pkg/CoreRefreshingClassLoader.java  | 2 +-
 3 files changed, 13 insertions(+), 6 deletions(-)

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 b0c76c3..1d24c8d 100644
--- a/solr/core/src/java/org/apache/solr/core/CoreContainer.java
+++ b/solr/core/src/java/org/apache/solr/core/CoreContainer.java
@@ -37,6 +37,7 @@ import java.util.Map;
 import java.util.Optional;
 import java.util.Properties;
 import java.util.Set;
+import java.util.UUID;
 import java.util.concurrent.ConcurrentHashMap;
 import java.util.concurrent.ExecutionException;
 import java.util.concurrent.ExecutorService;
@@ -1591,7 +1592,7 @@ public class CoreContainer {
 
   /**
    * reloads a core
-   * refer {@link CoreContainer#reload(String, Long)} for details
+   * refer {@link CoreContainer#reload(String, UUID)} for details
    */
   public void reload(String name) {
     reload(name, null);
@@ -1602,16 +1603,16 @@ public class CoreContainer {
    * and processed by the old core
    *
    * @param name the name of the SolrCore to reload
-   * @param coreStartTime The start time of the core
+   * @param coreId The unique Id of the core
    */
-  public void reload(String name, Long coreStartTime) {
+  public void reload(String name, UUID coreId) {
     if (isShutDown) {
       throw new AlreadyClosedException();
     }
     SolrCore newCore = null;
     SolrCore core = solrCores.getCoreFromAnyList(name, false);
     if (core != null) {
-      if(coreStartTime != null && core.startNanoTime.longValue() != coreStartTime) {
+      if(coreId != null && core.uniqueId != coreId) {
         //trying to reload an already unloaded core
         return;
       }
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 2964cb6..e5f8707 100644
--- a/solr/core/src/java/org/apache/solr/core/SolrCore.java
+++ b/solr/core/src/java/org/apache/solr/core/SolrCore.java
@@ -47,6 +47,7 @@ import java.util.Objects;
 import java.util.Optional;
 import java.util.Properties;
 import java.util.Set;
+import java.util.UUID;
 import java.util.concurrent.Callable;
 import java.util.concurrent.ConcurrentHashMap;
 import java.util.concurrent.CopyOnWriteArrayList;
@@ -194,6 +195,11 @@ public final class SolrCore implements SolrInfoBean, Closeable {
 
   private String name;
   private String logid; // used to show what name is set
+  /**
+   * A unique id to differentiate multiple instances of the same core
+   * If we reload a core, the name remains same , but the id will be new
+   */
+  public final UUID uniqueId = UUID.randomUUID();
 
   private boolean isReloaded = false;
 
@@ -208,7 +214,7 @@ public final class SolrCore implements SolrInfoBean, Closeable {
   private final SolrCoreState solrCoreState;
 
   private final Date startTime = new Date();
-  public final Long startNanoTime = System.nanoTime();
+  private final long startNanoTime = System.nanoTime();
   private final RequestHandlers reqHandlers;
   private final PluginBag<SearchComponent> searchComponents = new PluginBag<>(SearchComponent.class, this);
   private final PluginBag<UpdateRequestProcessorFactory> updateProcessors = new PluginBag<>(UpdateRequestProcessorFactory.class, this, true);
diff --git a/solr/core/src/java/org/apache/solr/pkg/CoreRefreshingClassLoader.java b/solr/core/src/java/org/apache/solr/pkg/CoreRefreshingClassLoader.java
index 5532615..f28baf7 100644
--- a/solr/core/src/java/org/apache/solr/pkg/CoreRefreshingClassLoader.java
+++ b/solr/core/src/java/org/apache/solr/pkg/CoreRefreshingClassLoader.java
@@ -54,7 +54,7 @@ public class CoreRefreshingClassLoader implements PackageListeners.Listener {
   public void changed(PackageLoader.Package pkg, Ctx ctx) {
     PackageLoader.Package.Version version = pkg.getLatest(solrCore.getSolrConfig().maxPackageVersion(info.cName.pkg));
     if(version != this.version) {
-      ctx.runLater(SolrCore.class.getName(), () -> solrCore.getCoreContainer().reload(CoreRefreshingClassLoader.class.getName() , solrCore.startNanoTime));
+      ctx.runLater(SolrCore.class.getName(), () -> solrCore.getCoreContainer().reload(CoreRefreshingClassLoader.class.getName() , solrCore.uniqueId));
     }
   }
 


[lucene] 13/42: more refactoring and reviw comments implemented

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

dweiss pushed a commit to branch jira/solr14155-1
in repository https://gitbox.apache.org/repos/asf/lucene.git

commit 65cbb8c017d5d11eba2f28951a77a1f2617b79f2
Author: noblepaul <no...@gmail.com>
AuthorDate: Thu Jul 16 12:04:44 2020 +1000

    more refactoring and reviw comments implemented
---
 .../org/apache/solr/core/ConfigSetService.java     |  1 -
 .../java/org/apache/solr/core/CoreContainer.java   |  1 -
 .../src/java/org/apache/solr/core/SolrCore.java    | 11 +++++------
 .../org/apache/solr/core/SolrResourceLoader.java   |  9 +++------
 ...tener.java => PackageListeningClassLoader.java} | 23 ++++++++++++----------
 5 files changed, 21 insertions(+), 24 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 dd87fcd..2e648ca 100644
--- a/solr/core/src/java/org/apache/solr/core/ConfigSetService.java
+++ b/solr/core/src/java/org/apache/solr/core/ConfigSetService.java
@@ -208,7 +208,6 @@ public abstract class ConfigSetService {
     public SolrResourceLoader createCoreResourceLoader(CoreDescriptor cd) {
       Path instanceDir = locateInstanceDir(cd);
       SolrResourceLoader solrResourceLoader = new SolrResourceLoader(instanceDir, parentLoader.getClassLoader());
-      solrResourceLoader.coreContainer = parentLoader.coreContainer;
       return solrResourceLoader;
     }
 
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 86573d8..c01e021 100644
--- a/solr/core/src/java/org/apache/solr/core/CoreContainer.java
+++ b/solr/core/src/java/org/apache/solr/core/CoreContainer.java
@@ -334,7 +334,6 @@ public class CoreContainer {
 
   public CoreContainer(NodeConfig config, CoresLocator locator, boolean asyncSolrCoreLoad) {
     this.loader = config.getSolrResourceLoader();
-    this.loader.coreContainer = this;
     this.solrHome = config.getSolrHome();
     this.cfg = requireNonNull(config);
     try {
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 ed64d35..77cb091 100644
--- a/solr/core/src/java/org/apache/solr/core/SolrCore.java
+++ b/solr/core/src/java/org/apache/solr/core/SolrCore.java
@@ -57,7 +57,6 @@ import java.util.concurrent.Future;
 import java.util.concurrent.TimeUnit;
 import java.util.concurrent.atomic.AtomicInteger;
 import java.util.concurrent.locks.ReentrantLock;
-import java.util.function.Function;
 
 import com.codahale.metrics.Counter;
 import com.codahale.metrics.Timer;
@@ -113,7 +112,7 @@ import org.apache.solr.logging.MDCLoggingContext;
 import org.apache.solr.metrics.SolrCoreMetricManager;
 import org.apache.solr.metrics.SolrMetricProducer;
 import org.apache.solr.metrics.SolrMetricsContext;
-import org.apache.solr.pkg.MultiPackageListener;
+import org.apache.solr.pkg.PackageListeningClassLoader;
 import org.apache.solr.pkg.PackageListeners;
 import org.apache.solr.pkg.PackageLoader;
 import org.apache.solr.pkg.PackagePluginHolder;
@@ -232,7 +231,7 @@ public final class SolrCore implements SolrInfoBean, Closeable {
 
   private final CircuitBreakerManager circuitBreakerManager;
   //a single package listener for all cores that require core reloading
-  private final MultiPackageListener coreReloadingPackageListener;
+  private final PackageListeningClassLoader coreReloadingPackageListener;
   private final List<Runnable> confListeners = new CopyOnWriteArrayList<>();
 
   private final ReentrantLock ruleExpiryLock;
@@ -279,7 +278,7 @@ public final class SolrCore implements SolrInfoBean, Closeable {
     return restManager;
   }
 
-  public MultiPackageListener getCoreReloadingPackageListener(){
+  public PackageListeningClassLoader getCoreReloadingPackageListener(){
     return coreReloadingPackageListener;
   }
   public PackageListeners getPackageListeners() {
@@ -959,9 +958,9 @@ public final class SolrCore implements SolrInfoBean, Closeable {
       this.solrConfig = configSet.getSolrConfig();
       this.resourceLoader = configSet.getSolrConfig().getResourceLoader();
       this.resourceLoader.core = this;
-      this.coreReloadingPackageListener = new MultiPackageListener(coreContainer,
+      this.coreReloadingPackageListener = new PackageListeningClassLoader(coreContainer,
               resourceLoader,
-              pkg -> solrConfig.maxPackageVersion(pkg),
+              solrConfig::maxPackageVersion,
               () -> coreContainer.reload(name, uniqueId));
       this.configSetProperties = configSet.getProperties();
       // Initialize the metrics manager
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 f9cd5d9..83b905f 100644
--- a/solr/core/src/java/org/apache/solr/core/SolrResourceLoader.java
+++ b/solr/core/src/java/org/apache/solr/core/SolrResourceLoader.java
@@ -62,7 +62,7 @@ import org.slf4j.LoggerFactory;
 /**
  * @since solr 1.3
  */
-public class SolrResourceLoader implements ResourceLoader, Closeable {
+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";
@@ -784,9 +784,9 @@ public class SolrResourceLoader implements ResourceLoader, Closeable {
       if (getCore() == null) {
         throw new SolrException(SolrException.ErrorCode.SERVER_ERROR, "SolrCore not set");
       }
-      return fun.apply(getCore().getCoreReloadingPackageListener().findPkgVersion(cName, true));
+      return fun.apply(getCore().getCoreReloadingPackageListener().findPackageVersion(cName, true));
     } else {
-      return fun.apply(getCore().getCoreReloadingPackageListener().findPkgVersion(cName, false));
+      return fun.apply(getCore().getCoreReloadingPackageListener().findPackageVersion(cName, false));
     }
   }
 
@@ -806,9 +806,6 @@ public class SolrResourceLoader implements ResourceLoader, Closeable {
     return _classLookup( info, version -> version.getLoader().newInstance(info.cName.className, type), registerCoreReloadListener);
   }
 
-  public CoreContainer getCoreContainer(){
-    return coreContainer;
-  }
   public static void persistConfLocally(SolrResourceLoader loader, String resourceName, byte[] content) {
     // Persist locally
     File confFile = new File(loader.getConfigDir(), resourceName);
diff --git a/solr/core/src/java/org/apache/solr/pkg/MultiPackageListener.java b/solr/core/src/java/org/apache/solr/pkg/PackageListeningClassLoader.java
similarity index 86%
rename from solr/core/src/java/org/apache/solr/pkg/MultiPackageListener.java
rename to solr/core/src/java/org/apache/solr/pkg/PackageListeningClassLoader.java
index 13dd49d..66b4c6f 100644
--- a/solr/core/src/java/org/apache/solr/pkg/MultiPackageListener.java
+++ b/solr/core/src/java/org/apache/solr/pkg/PackageListeningClassLoader.java
@@ -35,7 +35,7 @@ import java.util.function.Function;
  * This class would register a listener each package that is loaded through this
  * if any of those packages are updated , the onReload runnable is executed
  * */
-public class MultiPackageListener implements SolrClassLoader , PackageListeners.Listener {
+public class PackageListeningClassLoader implements SolrClassLoader , PackageListeners.Listener {
     private final CoreContainer coreContainer;
     private final SolrResourceLoader fallbackResourceLoader;
     private final Function<String, String> pkgVersionSupplier;
@@ -49,10 +49,10 @@ public class MultiPackageListener implements SolrClassLoader , PackageListeners.
      * @param pkgVersionSupplier Get the version configured for a given package
      * @param onReload The callback function that should be run if a package is updated
      */
-    public MultiPackageListener(CoreContainer coreContainer,
-                                SolrResourceLoader fallbackResourceLoader,
-                                Function<String, String> pkgVersionSupplier,
-                                Runnable onReload) {
+    public PackageListeningClassLoader(CoreContainer coreContainer,
+                                       SolrResourceLoader fallbackResourceLoader,
+                                       Function<String, String> pkgVersionSupplier,
+                                       Runnable onReload) {
         this.coreContainer = coreContainer;
         this.fallbackResourceLoader = fallbackResourceLoader;
         this.pkgVersionSupplier = pkgVersionSupplier;
@@ -70,13 +70,16 @@ public class MultiPackageListener implements SolrClassLoader , PackageListeners.
         if(cName.pkg == null){
             return fallbackResourceLoader.newInstance(cname, expectedType, subpackages);
         } else {
-            PackageLoader.Package.Version version = findPkgVersion(cName, true);
+            PackageLoader.Package.Version version = findPackageVersion(cName, true);
             return applyResourceLoaderAware(version, version.getLoader().newInstance(cName.className, expectedType, subpackages));
-
         }
     }
 
-    public PackageLoader.Package.Version findPkgVersion(PluginInfo.ClassName cName, boolean registerListener) {
+    /**
+     * This looks up for package and also listens for that package if required
+     * @param cName The class name
+     */
+    public PackageLoader.Package.Version findPackageVersion(PluginInfo.ClassName cName, boolean registerListener) {
         PackageLoader.Package.Version theVersion = coreContainer.getPackageLoader().getPackage(cName.pkg).getLatest(pkgVersionSupplier.apply(cName.pkg));
         if(registerListener) {
             packageVersions.put(cName.pkg, theVersion.getPkgVersion());
@@ -111,7 +114,7 @@ public class MultiPackageListener implements SolrClassLoader , PackageListeners.
         if (cName.pkg == null) {
             return fallbackResourceLoader.newInstance(cname, expectedType, subPackages, params, args);
         } else {
-            PackageLoader.Package.Version version = findPkgVersion(cName, true);
+            PackageLoader.Package.Version version = findPackageVersion(cName, true);
             return applyResourceLoaderAware(version, version.getLoader().newInstance(cName.className, expectedType, subPackages, params, args));
         }
     }
@@ -122,7 +125,7 @@ public class MultiPackageListener implements SolrClassLoader , PackageListeners.
         if (cName.pkg == null) {
             return fallbackResourceLoader.findClass(cname, expectedType);
         } else {
-            PackageLoader.Package.Version version = findPkgVersion(cName, true);
+            PackageLoader.Package.Version version = findPackageVersion(cName, true);
             return version.getLoader().findClass(cName.className, expectedType);
         }
     }


[lucene] 30/42: merging with master

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

dweiss pushed a commit to branch jira/solr14155-1
in repository https://gitbox.apache.org/repos/asf/lucene.git

commit 768c4f5d83ac4e48a2a25fbdbce5e317a00c582f
Author: noblepaul <no...@gmail.com>
AuthorDate: Tue Sep 8 14:06:31 2020 +1000

    merging with master
---
 .../java/org/apache/solr/core/CoreContainer.java   |  1 -
 .../org/apache/solr/core/SolrResourceLoader.java   | 84 +++++++++++++++++-----
 .../org/apache/solr/handler/StreamHandler.java     |  2 +-
 .../java/org/apache/solr/pkg/PackageListeners.java |  8 +++
 .../solr/pkg/PackageListeningClassLoader.java      |  5 ++
 .../org/apache/solr/pkg/PackagePluginHolder.java   | 68 ++++++++++--------
 6 files changed, 120 insertions(+), 48 deletions(-)

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 ed49cce..0453c61 100644
--- a/solr/core/src/java/org/apache/solr/core/CoreContainer.java
+++ b/solr/core/src/java/org/apache/solr/core/CoreContainer.java
@@ -1402,7 +1402,6 @@ public class CoreContainer {
         return core.getDirectoryFactory().isSharedStorage();
       } else {
         ConfigSet configSet = coreConfigService.loadConfigSet(cd);
-        configSet.getSolrConfig().getResourceLoader().core = core;
         return DirectoryFactory.loadDirectoryFactory(configSet.getSolrConfig(), this, null).isSharedStorage();
       }
     }
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 082fe2a..96b8974 100644
--- a/solr/core/src/java/org/apache/solr/core/SolrResourceLoader.java
+++ b/solr/core/src/java/org/apache/solr/core/SolrResourceLoader.java
@@ -44,8 +44,10 @@ 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.pkg.PackageListeningClassLoader;
 import org.apache.solr.pkg.PackageLoader;
 import org.apache.solr.request.SolrRequestHandler;
 import org.apache.solr.response.QueryResponseWriter;
@@ -62,15 +64,14 @@ import org.slf4j.LoggerFactory;
 /**
  * @since solr 1.3
  */
-public class SolrResourceLoader implements ResourceLoader, Closeable, SolrClassLoader {
+public class SolrResourceLoader implements ResourceLoader, Closeable, SolrClassLoader, SolrCoreAware  {
   private static final Logger log = LoggerFactory.getLogger(MethodHandles.lookup().lookupClass());
 
   private static final String base = "org.apache.solr";
   private static final String[] packages = {
       "", "analysis.", "schema.", "handler.", "handler.tagger.", "search.", "update.", "core.", "response.", "request.",
-      "update.processor.", "util.", "spelling.", "handler.component.", "handler.dataimport.",
-      "spelling.suggest.", "spelling.suggest.fst.", "rest.schema.analysis.", "security.", "handler.admin.",
-      "cloud.autoscaling."
+      "update.processor.", "util.", "spelling.", "handler.component.",
+      "spelling.suggest.", "spelling.suggest.fst.", "rest.schema.analysis.", "security.", "handler.admin."
   };
   private static final Charset UTF_8 = StandardCharsets.UTF_8;
 
@@ -78,12 +79,14 @@ public class SolrResourceLoader implements ResourceLoader, Closeable, SolrClassL
   private String name = "";
   protected URLClassLoader classLoader;
   private final Path instanceDir;
+  private String coreName;
+  private UUID coreId;
+  private SolrConfig config;
+  private CoreContainer coreContainer;
+  private PackageListeningClassLoader schemaLoader ;
+
+  private PackageListeningClassLoader coreReloadingClassLoader ;
 
-  /**
-   * 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>());
@@ -107,6 +110,33 @@ public class SolrResourceLoader implements ResourceLoader, Closeable, SolrClassL
     return managedResourceRegistry;
   }
 
+  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 SolrClassLoader getSchemaLoader() {
+    if (schemaLoader == null) {
+      schemaLoader = createSchemaLoader();
+    }
+    return schemaLoader;
+  }
+
   public SolrResourceLoader() {
     this(SolrPaths.locateSolrHome(), null);
   }
@@ -207,11 +237,6 @@ 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;
@@ -617,7 +642,22 @@ public class SolrResourceLoader implements ResourceLoader, Closeable, SolrClassL
   /**
    * Tell all {@link SolrCoreAware} instances about the SolrCore
    */
+  @Override
   public void inform(SolrCore core) {
+    this.coreName = core.getName();
+    this.config = core.getSolrConfig();
+    this.coreId = core.uniqueId;
+    this.coreContainer = core.getCoreContainer();
+    this.coreReloadingClassLoader = new PackageListeningClassLoader(core.getCoreContainer(),
+        this, s -> config.maxPackageVersion(s), null){
+      @Override
+      protected void doReloadAction(Ctx ctx) {
+         coreContainer.reload(coreName, coreId, true);
+      }
+    };
+    core.getPackageListeners().addListener(coreReloadingClassLoader, true);
+    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.
     SolrCoreAware[] arr;
@@ -756,6 +796,14 @@ 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);
@@ -780,12 +828,12 @@ public class SolrResourceLoader implements ResourceLoader, Closeable, SolrClassL
   private  <T> T _classLookup(PluginInfo info, Function<PackageLoader.Package.Version, T> fun, boolean registerCoreReloadListener ) {
     PluginInfo.ClassName cName = info.cName;
     if (registerCoreReloadListener) {
-      if (getCore() == null) {
-        throw new SolrException(SolrException.ErrorCode.SERVER_ERROR, "SolrCore not set");
+      if (coreReloadingClassLoader == null) {
+        throw new SolrException(SolrException.ErrorCode.SERVER_ERROR, "Core not set");
       }
-      return fun.apply(getCore().getCoreReloadingClassLoader().findPackageVersion(cName, true));
+      return fun.apply(coreReloadingClassLoader.findPackageVersion(cName, true));
     } else {
-      return fun.apply(getCore().getCoreReloadingClassLoader().findPackageVersion(cName, false));
+      return fun.apply(coreReloadingClassLoader.findPackageVersion(cName, false));
     }
   }
 
diff --git a/solr/core/src/java/org/apache/solr/handler/StreamHandler.java b/solr/core/src/java/org/apache/solr/handler/StreamHandler.java
index 0877c54..5b9cb27 100644
--- a/solr/core/src/java/org/apache/solr/handler/StreamHandler.java
+++ b/solr/core/src/java/org/apache/solr/handler/StreamHandler.java
@@ -158,7 +158,7 @@ public class StreamHandler extends RequestHandlerBase implements SolrCoreAware,
     }
 
     @Override
-    protected Object initNewInstance(PackageLoader.Package.Version newest) {
+    protected Object initNewInstance(PackageLoader.Package.Version newest, SolrCore core) {
       return clazz = newest.getLoader().findClass(pluginInfo.className, Expressible.class);
     }
 
diff --git a/solr/core/src/java/org/apache/solr/pkg/PackageListeners.java b/solr/core/src/java/org/apache/solr/pkg/PackageListeners.java
index 7403baa..25c6e4f 100644
--- a/solr/core/src/java/org/apache/solr/pkg/PackageListeners.java
+++ b/solr/core/src/java/org/apache/solr/pkg/PackageListeners.java
@@ -47,6 +47,14 @@ public class PackageListeners {
 
   public synchronized void addListener(Listener listener) {
     listeners.add(new SoftReference<>(listener));
+  }
+
+  public synchronized void addListener(Listener listener, boolean addFirst) {
+    if(addFirst) {
+      listeners.add(0, new SoftReference<>(listener));
+    } else {
+      addListener(listener);
+    }
 
   }
 
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 09f8871..af46d5b 100644
--- a/solr/core/src/java/org/apache/solr/pkg/PackageListeningClassLoader.java
+++ b/solr/core/src/java/org/apache/solr/pkg/PackageListeningClassLoader.java
@@ -158,6 +158,11 @@ public class PackageListeningClassLoader implements SolrClassLoader , PackageLis
             //no need to update
             return;
         }
+        doReloadAction(ctx);
+    }
+
+    protected void doReloadAction(Ctx ctx) {
+        if(onReload == null) return;
         ctx.runLater(null, onReload);
     }
 }
diff --git a/solr/core/src/java/org/apache/solr/pkg/PackagePluginHolder.java b/solr/core/src/java/org/apache/solr/pkg/PackagePluginHolder.java
index c1cd645..0714543 100644
--- a/solr/core/src/java/org/apache/solr/pkg/PackagePluginHolder.java
+++ b/solr/core/src/java/org/apache/solr/pkg/PackagePluginHolder.java
@@ -20,10 +20,12 @@ package org.apache.solr.pkg;
 import java.io.IOException;
 import java.lang.invoke.MethodHandles;
 import java.util.Collections;
+import java.util.UUID;
 
 import org.apache.lucene.analysis.util.ResourceLoaderAware;
 import org.apache.solr.common.MapWriter;
 import org.apache.solr.common.SolrException;
+import org.apache.solr.core.CoreContainer;
 import org.apache.solr.core.PluginBag;
 import org.apache.solr.core.PluginInfo;
 import org.apache.solr.core.SolrConfig;
@@ -38,7 +40,9 @@ public class PackagePluginHolder<T> extends PluginBag.PluginHolder<T> {
   private static final Logger log = LoggerFactory.getLogger(MethodHandles.lookup().lookupClass());
   public static final String LATEST = "$LATEST";
 
-  private final SolrCore core;
+  private final String coreName;
+  private final UUID coreId;
+  private final CoreContainer coreContainer;
   private final SolrConfig.SolrPluginInfo pluginMeta;
   private PackageLoader.Package.Version pkgVersion;
   private PluginInfo info;
@@ -46,7 +50,9 @@ public class PackagePluginHolder<T> extends PluginBag.PluginHolder<T> {
 
   public PackagePluginHolder(PluginInfo info, SolrCore core, SolrConfig.SolrPluginInfo pluginMeta) {
     super(info);
-    this.core = core;
+    this.coreContainer = core.getCoreContainer();
+    this.coreName = core.getName();
+    this.coreId = core.uniqueId;
     this.pluginMeta = pluginMeta;
     this.info = info;
 
@@ -91,44 +97,50 @@ public class PackagePluginHolder<T> extends PluginBag.PluginHolder<T> {
   }
 
   private synchronized void reload(PackageLoader.Package pkg) {
-    String lessThan = core.getSolrConfig().maxPackageVersion(info.pkgName);
-    PackageLoader.Package.Version newest = pkg.getLatest(lessThan);
-    if (newest == null) {
-      log.error("No latest version available for package : {}", pkg.name());
-      return;
-    }
-    if (lessThan != null) {
-      PackageLoader.Package.Version pkgLatest = pkg.getLatest();
-      if (pkgLatest != newest) {
-        if (log.isInfoEnabled()) {
-          log.info("Using version :{}. latest is {},  params.json has config {} : {}", newest.getVersion(), pkgLatest.getVersion(), pkg.name(), lessThan);
-        }
+    try (SolrCore core = coreContainer.getCore(coreName, coreId)) {
+      if (core == null) {
+        //this core got reloaded. do not do anything
+        return;
       }
-    }
+      String lessThan = core.getSolrConfig().maxPackageVersion(info.pkgName);
 
-    if (pkgVersion != null) {
-      if (newest == pkgVersion) {
-        //I'm already using the latest classloader in the package. nothing to do
+      PackageLoader.Package.Version newest = pkg.getLatest(lessThan);
+      if (newest == null) {
+        log.error("No latest version available for package : {}", pkg.name());
         return;
       }
-    }
+      if (lessThan != null) {
+        PackageLoader.Package.Version pkgLatest = pkg.getLatest();
+        if (pkgLatest != newest) {
+          if (log.isInfoEnabled()) {
+            log.info("Using version :{}. latest is {},  params.json has config {} : {}", newest.getVersion(), pkgLatest.getVersion(), pkg.name(), lessThan);
+          }
+        }
+      }
 
-    if (log.isInfoEnabled()) {
-      log.info("loading plugin: {} -> {} using  package {}:{}",
-          pluginInfo.type, pluginInfo.name, pkg.name(), newest.getVersion());
-    }
+      if (pkgVersion != null) {
+        if (newest == pkgVersion) {
+          //I'm already using the latest classloader in the package. nothing to do
+          return;
+        }
+      }
 
-    initNewInstance(newest);
-    pkgVersion = newest;
+      if (log.isInfoEnabled()) {
+        log.info("loading plugin: {} -> {} using  package {}:{}",
+            pluginInfo.type, pluginInfo.name, pkg.name(), newest.getVersion());
+      }
+      initNewInstance(newest, core);
+      pkgVersion = newest;
+    }
 
   }
 
   @SuppressWarnings({"unchecked"})
-  protected Object initNewInstance(PackageLoader.Package.Version newest) {
+  protected Object initNewInstance(PackageLoader.Package.Version newest, SolrCore core) {
     Object instance = SolrCore.createInstance(pluginInfo.className,
         pluginMeta.clazz, pluginMeta.getCleanTag(), core, newest.getLoader());
     PluginBag.initInstance(instance, pluginInfo);
-    handleAwareCallbacks(newest.getLoader(), instance);
+    handleAwareCallbacks(newest.getLoader(), instance, core);
     T old = inst;
     inst = (T) instance;
     if (old instanceof AutoCloseable) {
@@ -142,7 +154,7 @@ public class PackagePluginHolder<T> extends PluginBag.PluginHolder<T> {
     return inst;
   }
 
-  private void handleAwareCallbacks(SolrResourceLoader loader, Object instance) {
+  private void handleAwareCallbacks(SolrResourceLoader loader, Object instance, SolrCore core) {
     if (instance instanceof SolrCoreAware) {
       SolrCoreAware coreAware = (SolrCoreAware) instance;
       if (!core.getResourceLoader().addToCoreAware(coreAware)) {


[lucene] 26/42: more cleanup

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

dweiss pushed a commit to branch jira/solr14155-1
in repository https://gitbox.apache.org/repos/asf/lucene.git

commit 32554578e9abc7d7758338e08ba92313ae6364d2
Author: noblepaul <no...@gmail.com>
AuthorDate: Thu Jul 16 19:34:44 2020 +1000

    more cleanup
---
 solr/core/src/java/org/apache/solr/update/UpdateHandler.java | 1 -
 1 file changed, 1 deletion(-)

diff --git a/solr/core/src/java/org/apache/solr/update/UpdateHandler.java b/solr/core/src/java/org/apache/solr/update/UpdateHandler.java
index 174dc0d..7b098f5 100644
--- a/solr/core/src/java/org/apache/solr/update/UpdateHandler.java
+++ b/solr/core/src/java/org/apache/solr/update/UpdateHandler.java
@@ -30,7 +30,6 @@ import org.apache.solr.util.plugin.SolrCoreAware;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
-import static org.apache.solr.core.PluginBag.PluginHolder.createHolder;
 import static org.apache.solr.pkg.PackagePluginHolder.createHolder;
 
 /**


[lucene] 31/42: merging with master

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

dweiss pushed a commit to branch jira/solr14155-1
in repository https://gitbox.apache.org/repos/asf/lucene.git

commit ecee4975ac3711b9379e6a51c76e591a824a62ba
Author: noblepaul <no...@gmail.com>
AuthorDate: Tue Sep 8 14:14:08 2020 +1000

    merging with master
---
 solr/core/src/java/org/apache/solr/core/SolrCore.java | 10 ----------
 1 file changed, 10 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 368b9e8..b11e315 100644
--- a/solr/core/src/java/org/apache/solr/core/SolrCore.java
+++ b/solr/core/src/java/org/apache/solr/core/SolrCore.java
@@ -230,8 +230,6 @@ public final class SolrCore implements SolrInfoBean, Closeable {
   private final ConfigSet configSet;
   //singleton listener for all packages used in schema
 
-  //a single package listener for all cores that require core reloading
-  private final PackageListeningClassLoader coreReloadingClassLoader;
   private final CircuitBreakerManager circuitBreakerManager;
 
   private final List<Runnable> confListeners = new CopyOnWriteArrayList<>();
@@ -948,11 +946,6 @@ public final class SolrCore implements SolrInfoBean, Closeable {
       this.resourceLoader = configSet.getSolrConfig().getResourceLoader();
       IndexSchema schema = configSet.getIndexSchema();
 
-      this.coreReloadingClassLoader = new PackageListeningClassLoader(coreContainer,
-              resourceLoader,
-              solrConfig::maxPackageVersion,
-              () -> coreContainer.reload(name, uniqueId));
-      this.packageListeners.addListener(coreReloadingClassLoader);
       this.configSetProperties = configSet.getProperties();
       // Initialize the metrics manager
       this.coreMetricManager = initCoreMetricManager(solrConfig);
@@ -3233,9 +3226,6 @@ public final class SolrCore implements SolrInfoBean, Closeable {
     return blobRef;
   }
 
-  public PackageListeningClassLoader getCoreReloadingClassLoader(){
-    return coreReloadingClassLoader;
-  }
   /**
    * Run an arbitrary task in it's own thread. This is an expert option and is
    * a method you should use with great care. It would be bad to run something that never stopped


[lucene] 24/42: more cleanup

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

dweiss pushed a commit to branch jira/solr14155-1
in repository https://gitbox.apache.org/repos/asf/lucene.git

commit 44194f94d42787ac405bf3799c18276a95001083
Author: noblepaul <no...@gmail.com>
AuthorDate: Thu Jul 16 19:28:12 2020 +1000

    more cleanup
---
 solr/core/src/java/org/apache/solr/core/PluginBag.java          | 5 +++++
 solr/core/src/java/org/apache/solr/core/SolrCore.java           | 4 ++--
 solr/core/src/java/org/apache/solr/pkg/PackagePluginHolder.java | 6 ------
 solr/core/src/java/org/apache/solr/update/UpdateHandler.java    | 7 ++++---
 4 files changed, 11 insertions(+), 11 deletions(-)

diff --git a/solr/core/src/java/org/apache/solr/core/PluginBag.java b/solr/core/src/java/org/apache/solr/core/PluginBag.java
index d2442a1..0e3069e 100644
--- a/solr/core/src/java/org/apache/solr/core/PluginBag.java
+++ b/solr/core/src/java/org/apache/solr/core/PluginBag.java
@@ -413,6 +413,11 @@ public class PluginBag<T> implements AutoCloseable {
       if (pluginInfo != null) return pluginInfo.className;
       return null;
     }
+    public static <T> PluginBag.PluginHolder<T> createHolder(T inst,  Class<T> type) {
+      SolrConfig.SolrPluginInfo plugin = SolrConfig.classVsSolrPluginInfo.get(type.getName());
+      PluginInfo info = new PluginInfo(plugin.tag, Collections.singletonMap("class", inst.getClass().getName()));
+      return new PluginHolder<T> (info,inst);
+    }
 
     public PluginInfo getPluginInfo() {
       return pluginInfo;
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 19516eb..59cdbd1 100644
--- a/solr/core/src/java/org/apache/solr/core/SolrCore.java
+++ b/solr/core/src/java/org/apache/solr/core/SolrCore.java
@@ -668,7 +668,7 @@ public final class SolrCore implements SolrInfoBean, Closeable {
    * @see SolrCoreAware
    */
   public void registerFirstSearcherListener(SolrEventListener listener) {
-    firstSearcherListeners.add(createHolder(listener, this, SolrEventListener.class, null));
+    firstSearcherListeners.add(createHolder(listener,  SolrEventListener.class));
   }
 
   /**
@@ -679,7 +679,7 @@ public final class SolrCore implements SolrInfoBean, Closeable {
    * @see SolrCoreAware
    */
   public void registerNewSearcherListener(SolrEventListener listener) {
-    newSearcherListeners.add(createHolder(listener, this, SolrEventListener.class, null));
+    newSearcherListeners.add(createHolder(listener,  SolrEventListener.class));
   }
 
   /**
diff --git a/solr/core/src/java/org/apache/solr/pkg/PackagePluginHolder.java b/solr/core/src/java/org/apache/solr/pkg/PackagePluginHolder.java
index 50afc71..a49c92b 100644
--- a/solr/core/src/java/org/apache/solr/pkg/PackagePluginHolder.java
+++ b/solr/core/src/java/org/apache/solr/pkg/PackagePluginHolder.java
@@ -75,12 +75,6 @@ public class PackagePluginHolder<T> extends PluginBag.PluginHolder<T> {
 
     });
   }
-  public static <T> PluginBag.PluginHolder<T> createHolder(T inst, SolrCore core, Class<T> type, String msg) {
-    SolrConfig.SolrPluginInfo plugin = SolrConfig.classVsSolrPluginInfo.get(type.getName());
-    PluginInfo info = new PluginInfo(plugin.tag, Collections.singletonMap("class", inst.getClass().getName()));
-    return createHolder(info, core, type, msg);
-
-  }
 
   public static <T> PluginBag.PluginHolder<T> createHolder(PluginInfo info, SolrCore core, Class<T> type, String msg) {
     if(info.cName.pkg == null) {
diff --git a/solr/core/src/java/org/apache/solr/update/UpdateHandler.java b/solr/core/src/java/org/apache/solr/update/UpdateHandler.java
index 16d64b2..174dc0d 100644
--- a/solr/core/src/java/org/apache/solr/update/UpdateHandler.java
+++ b/solr/core/src/java/org/apache/solr/update/UpdateHandler.java
@@ -30,6 +30,7 @@ import org.apache.solr.util.plugin.SolrCoreAware;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
+import static org.apache.solr.core.PluginBag.PluginHolder.createHolder;
 import static org.apache.solr.pkg.PackagePluginHolder.createHolder;
 
 /**
@@ -173,7 +174,7 @@ public abstract class UpdateHandler implements SolrInfoBean {
    * @see SolrCoreAware
    */
   public void registerCommitCallback( SolrEventListener listener) {
-    commitCallbacks.add(createHolder(listener, core,  SolrEventListener.class,null));
+    commitCallbacks.add(createHolder(listener,  SolrEventListener.class));
   }
 
   /**
@@ -184,7 +185,7 @@ public abstract class UpdateHandler implements SolrInfoBean {
    * @see SolrCoreAware
    */
   public void registerSoftCommitCallback( SolrEventListener listener ) {
-    softCommitCallbacks.add(createHolder(listener, core,  SolrEventListener.class,null));
+    softCommitCallbacks.add(createHolder(listener,  SolrEventListener.class));
   }
 
   /**
@@ -195,7 +196,7 @@ public abstract class UpdateHandler implements SolrInfoBean {
    * @see SolrCoreAware
    */
   public void registerOptimizeCallback( SolrEventListener listener ) {
-    optimizeCallbacks.add(createHolder(listener, core, SolrEventListener.class, null));
+    optimizeCallbacks.add(createHolder(listener,  SolrEventListener.class));
   }
 
   public abstract void split(SplitIndexCommand cmd) throws IOException;


[lucene] 09/42: bug fix

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

dweiss pushed a commit to branch jira/solr14155-1
in repository https://gitbox.apache.org/repos/asf/lucene.git

commit 5d50b47010de970b932c83a524bcb19537903279
Author: noblepaul <no...@gmail.com>
AuthorDate: Tue Jul 14 01:38:57 2020 +1000

    bug fix
---
 solr/core/src/java/org/apache/solr/pkg/PackageListeners.java | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/solr/core/src/java/org/apache/solr/pkg/PackageListeners.java b/solr/core/src/java/org/apache/solr/pkg/PackageListeners.java
index a2b859e..3086642 100644
--- a/solr/core/src/java/org/apache/solr/pkg/PackageListeners.java
+++ b/solr/core/src/java/org/apache/solr/pkg/PackageListeners.java
@@ -120,7 +120,7 @@ public class PackageListeners {
           } catch (Exception e) {
             log.error("Unknown error", e);
           }
-        }));
+        })).start();
       }
     }
 


[lucene] 14/42: more refactoring and reviw comments implemented

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

dweiss pushed a commit to branch jira/solr14155-1
in repository https://gitbox.apache.org/repos/asf/lucene.git

commit 785db2a88ee1560adb4a6155aacc21add85edbba
Author: noblepaul <no...@gmail.com>
AuthorDate: Thu Jul 16 12:05:27 2020 +1000

    more refactoring and reviw comments implemented
---
 solr/core/src/java/org/apache/solr/cloud/ZkSolrResourceLoader.java | 5 -----
 1 file changed, 5 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 dead107..05f9499 100644
--- a/solr/core/src/java/org/apache/solr/cloud/ZkSolrResourceLoader.java
+++ b/solr/core/src/java/org/apache/solr/cloud/ZkSolrResourceLoader.java
@@ -157,10 +157,5 @@ public class ZkSolrResourceLoader extends SolrResourceLoader {
     this.zkIndexSchemaReader = zkIndexSchemaReader;
   }
 
-  @Override
-  public CoreContainer getCoreContainer() {
-    return zkController.getCoreContainer();
-  }
-
   public ZkIndexSchemaReader getZkIndexSchemaReader() { return zkIndexSchemaReader; }
 }


[lucene] 18/42: merging w/ master

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

dweiss pushed a commit to branch jira/solr14155-1
in repository https://gitbox.apache.org/repos/asf/lucene.git

commit eef0bf5cc255ab945c444e4ec2e1d6c7792a611b
Author: noblepaul <no...@gmail.com>
AuthorDate: Thu Jul 16 16:33:59 2020 +1000

    merging w/ master
---
 solr/core/src/test/org/apache/solr/core/TestCodecSupport.java | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/solr/core/src/test/org/apache/solr/core/TestCodecSupport.java b/solr/core/src/test/org/apache/solr/core/TestCodecSupport.java
index 18a5f34..3ec43c9 100644
--- a/solr/core/src/test/org/apache/solr/core/TestCodecSupport.java
+++ b/solr/core/src/test/org/apache/solr/core/TestCodecSupport.java
@@ -210,7 +210,7 @@ public class TestCodecSupport extends SolrTestCaseJ4 {
     try {
       CoreDescriptor cd = new CoreDescriptor(newCoreName, testSolrHome.resolve(newCoreName), coreContainer);
       c = new SolrCore(coreContainer, cd,
-          new ConfigSet("fakeConfigset", config, schema, null, true));
+          new ConfigSet("fakeConfigset", config, forceFetch -> schema, null, true));
       assertNull(coreContainer.registerCore(cd, c, false, false));
       h.coreName = newCoreName;
       assertEquals("We are not using the correct core", "solrconfig_codec2.xml", h.getCore().getConfigResource());


[lucene] 22/42: merge errs

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

dweiss pushed a commit to branch jira/solr14155-1
in repository https://gitbox.apache.org/repos/asf/lucene.git

commit 407422803ee49aec91b8c8df1989ebc80ffabe09
Author: noblepaul <no...@gmail.com>
AuthorDate: Thu Jul 16 19:06:39 2020 +1000

    merge errs
---
 solr/core/src/java/org/apache/solr/core/SolrCore.java | 3 +--
 1 file changed, 1 insertion(+), 2 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 fb8a84f..5a06345 100644
--- a/solr/core/src/java/org/apache/solr/core/SolrCore.java
+++ b/solr/core/src/java/org/apache/solr/core/SolrCore.java
@@ -230,9 +230,8 @@ public final class SolrCore implements SolrInfoBean, Closeable {
 
   //a single package listener for all cores that require core reloading
   private final PackageListeningClassLoader coreReloadingClassLoader;
-  //singleton listener for all packages used in schema
-  private final PackageListeningClassLoader schemaPluginsLoader;
   private final CircuitBreakerManager circuitBreakerManager;
+
   private final List<Runnable> confListeners = new CopyOnWriteArrayList<>();
 
   private final ReentrantLock ruleExpiryLock;


[lucene] 36/42: unused imports

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

dweiss pushed a commit to branch jira/solr14155-1
in repository https://gitbox.apache.org/repos/asf/lucene.git

commit 19ec87312a89dc92efd6b160332596794c07b74c
Author: noblepaul <no...@gmail.com>
AuthorDate: Tue Jan 12 17:53:24 2021 +1100

    unused imports
---
 solr/core/src/java/org/apache/solr/pkg/PackagePluginHolder.java | 2 --
 solr/core/src/java/org/apache/solr/update/UpdateHandler.java    | 2 --
 2 files changed, 4 deletions(-)

diff --git a/solr/core/src/java/org/apache/solr/pkg/PackagePluginHolder.java b/solr/core/src/java/org/apache/solr/pkg/PackagePluginHolder.java
index 9e4c0cb..1ee5cf9 100644
--- a/solr/core/src/java/org/apache/solr/pkg/PackagePluginHolder.java
+++ b/solr/core/src/java/org/apache/solr/pkg/PackagePluginHolder.java
@@ -20,12 +20,10 @@ package org.apache.solr.pkg;
 import java.io.IOException;
 import java.lang.invoke.MethodHandles;
 import java.util.Collections;
-import java.util.UUID;
 
 import org.apache.lucene.util.ResourceLoaderAware;
 import org.apache.solr.common.MapWriter;
 import org.apache.solr.common.SolrException;
-import org.apache.solr.core.CoreContainer;
 import org.apache.solr.core.PluginBag;
 import org.apache.solr.core.PluginInfo;
 import org.apache.solr.core.SolrConfig;
diff --git a/solr/core/src/java/org/apache/solr/update/UpdateHandler.java b/solr/core/src/java/org/apache/solr/update/UpdateHandler.java
index 319ee51..270251d 100644
--- a/solr/core/src/java/org/apache/solr/update/UpdateHandler.java
+++ b/solr/core/src/java/org/apache/solr/update/UpdateHandler.java
@@ -21,9 +21,7 @@ import java.lang.invoke.MethodHandles;
 import java.util.Vector;
 
 import org.apache.solr.core.*;
-import org.apache.solr.core.PluginBag.PluginHolder;
 import org.apache.solr.metrics.SolrMetricsContext;
-import org.apache.solr.pkg.PackagePluginHolder;
 import org.apache.solr.schema.FieldType;
 import org.apache.solr.schema.SchemaField;
 import org.apache.solr.util.plugin.SolrCoreAware;


[lucene] 01/42: SOLR-14155: Load all other SolrCore plugins from packages

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

dweiss pushed a commit to branch jira/solr14155-1
in repository https://gitbox.apache.org/repos/asf/lucene.git

commit 59053416fcf2115305c768e12f7db45fce042565
Author: noblepaul <no...@gmail.com>
AuthorDate: Sat Jul 11 17:51:03 2020 +1000

    SOLR-14155: Load all other SolrCore plugins from packages
---
 .../apache/solr/api/CustomContainerPlugins.java    | 12 +--
 .../java/org/apache/solr/core/CoreContainer.java   | 24 +++---
 .../src/java/org/apache/solr/core/PluginBag.java   |  4 +
 .../src/java/org/apache/solr/core/PluginInfo.java  | 44 +++++++----
 .../src/java/org/apache/solr/core/SolrConfig.java  | 18 +++++
 .../src/java/org/apache/solr/core/SolrCore.java    | 58 +++++++-------
 .../org/apache/solr/core/SolrResourceLoader.java   | 11 +++
 .../org/apache/solr/handler/StreamHandler.java     |  4 +-
 .../solr/handler/component/SearchHandler.java      |  2 +-
 .../apache/solr/packagemanager/PackageManager.java | 10 +--
 .../solr/packagemanager/RepositoryManager.java     |  6 +-
 .../apache/solr/pkg/CoreRefreshingClassLoader.java | 88 ++++++++++++++++++++++
 .../java/org/apache/solr/pkg/PackageListeners.java | 34 +++++++--
 .../org/apache/solr/pkg/PackagePluginHolder.java   | 21 +++---
 .../java/org/apache/solr/search/CacheConfig.java   | 17 ++++-
 .../java/org/apache/solr/update/UpdateHandler.java | 57 +++++++-------
 .../apache/solr/core/TestQuerySenderListener.java  |  3 +-
 .../apache/solr/core/TestQuerySenderNoQuery.java   |  2 +-
 18 files changed, 283 insertions(+), 132 deletions(-)

diff --git a/solr/core/src/java/org/apache/solr/api/CustomContainerPlugins.java b/solr/core/src/java/org/apache/solr/api/CustomContainerPlugins.java
index 6536276..80b570d 100644
--- a/solr/core/src/java/org/apache/solr/api/CustomContainerPlugins.java
+++ b/solr/core/src/java/org/apache/solr/api/CustomContainerPlugins.java
@@ -36,12 +36,12 @@ import org.apache.solr.common.MapWriter;
 import org.apache.solr.common.SolrException;
 import org.apache.solr.common.annotation.JsonProperty;
 import org.apache.solr.common.cloud.ClusterPropertiesListener;
-import org.apache.solr.common.util.Pair;
 import org.apache.solr.common.util.PathTrie;
 import org.apache.solr.common.util.ReflectMapWriter;
 import org.apache.solr.common.util.StrUtils;
 import org.apache.solr.common.util.Utils;
 import org.apache.solr.core.CoreContainer;
+import org.apache.solr.core.PluginInfo;
 import org.apache.solr.handler.admin.ContainerPluginsApi;
 import org.apache.solr.pkg.PackageLoader;
 import org.apache.solr.request.SolrQueryRequest;
@@ -225,12 +225,12 @@ public class CustomContainerPlugins implements ClusterPropertiesListener, MapWri
     @SuppressWarnings({"unchecked","rawtypes"})
     public ApiInfo(PluginMeta info, List<String> errs) {
       this.info = info;
-      Pair<String, String> klassInfo = org.apache.solr.core.PluginInfo.parseClassName(info.klass);
-      pkg = klassInfo.first();
+      PluginInfo.CName klassInfo = new PluginInfo.CName(info.klass);
+      pkg = klassInfo.pkg;
       if (pkg != null) {
         PackageLoader.Package p = coreContainer.getPackageLoader().getPackage(pkg);
         if (p == null) {
-          errs.add("Invalid package " + klassInfo.first());
+          errs.add("Invalid package " + klassInfo.pkg);
           return;
         }
         this.pkgVersion = p.getVersion(info.version);
@@ -239,7 +239,7 @@ public class CustomContainerPlugins implements ClusterPropertiesListener, MapWri
           return;
         }
         try {
-          klas = pkgVersion.getLoader().findClass(klassInfo.second(), Object.class);
+          klas = pkgVersion.getLoader().findClass(klassInfo.className, Object.class);
         } catch (Exception e) {
           log.error("Error loading class", e);
           errs.add("Error loading class " + e.toString());
@@ -247,7 +247,7 @@ public class CustomContainerPlugins implements ClusterPropertiesListener, MapWri
         }
       } else {
         try {
-          klas = Class.forName(klassInfo.second());
+          klas = Class.forName(klassInfo.className);
         } catch (ClassNotFoundException e) {
           errs.add("Error loading class " + e.toString());
           return;
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 53373b6..ca74829 100644
--- a/solr/core/src/java/org/apache/solr/core/CoreContainer.java
+++ b/solr/core/src/java/org/apache/solr/core/CoreContainer.java
@@ -24,19 +24,7 @@ import java.nio.file.Path;
 import java.nio.file.Paths;
 import java.security.spec.InvalidKeySpecException;
 import java.text.SimpleDateFormat;
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.Collection;
-import java.util.Collections;
-import java.util.Date;
-import java.util.HashMap;
-import java.util.LinkedHashSet;
-import java.util.List;
-import java.util.Locale;
-import java.util.Map;
-import java.util.Optional;
-import java.util.Properties;
-import java.util.Set;
+import java.util.*;
 import java.util.concurrent.ConcurrentHashMap;
 import java.util.concurrent.ExecutionException;
 import java.util.concurrent.ExecutorService;
@@ -1588,20 +1576,28 @@ public class CoreContainer {
     return ret;
   }
 
+  public void reload(String name) {
+    reload(name, null);
+  }
   /**
    * Recreates a SolrCore.
    * While the new core is loading, requests will continue to be dispatched to
    * and processed by the old core
    *
    * @param name the name of the SolrCore to reload
+   * @param coreId The unique identifier of the core
    */
-  public void reload(String name) {
+  public void reload(String name, UUID coreId) {
     if (isShutDown) {
       throw new AlreadyClosedException();
     }
     SolrCore newCore = null;
     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
diff --git a/solr/core/src/java/org/apache/solr/core/PluginBag.java b/solr/core/src/java/org/apache/solr/core/PluginBag.java
index 2f82ccc..37a3450 100644
--- a/solr/core/src/java/org/apache/solr/core/PluginBag.java
+++ b/solr/core/src/java/org/apache/solr/core/PluginBag.java
@@ -368,6 +368,10 @@ public class PluginBag<T> implements AutoCloseable {
     protected final PluginInfo pluginInfo;
     boolean registerAPI = false;
 
+    public PluginHolder(T inst, SolrConfig.SolrPluginInfo info) {
+      this.inst = inst;
+      pluginInfo = new PluginInfo(info.tag, Collections.singletonMap("class", inst.getClass().getName()));
+    }
     public PluginHolder(PluginInfo info) {
       this.pluginInfo = info;
     }
diff --git a/solr/core/src/java/org/apache/solr/core/PluginInfo.java b/solr/core/src/java/org/apache/solr/core/PluginInfo.java
index cc6615f..58fa73d 100644
--- a/solr/core/src/java/org/apache/solr/core/PluginInfo.java
+++ b/solr/core/src/java/org/apache/solr/core/PluginInfo.java
@@ -25,7 +25,6 @@ import java.util.Map;
 
 import org.apache.solr.common.MapSerializable;
 import org.apache.solr.common.util.NamedList;
-import org.apache.solr.common.util.Pair;
 import org.apache.solr.util.DOMUtil;
 import org.w3c.dom.Node;
 import org.w3c.dom.NodeList;
@@ -42,6 +41,7 @@ import static org.apache.solr.schema.FieldType.CLASS_NAME;
  */
 public class PluginInfo implements MapSerializable {
   public final String name, className, type, pkgName;
+  public final CName cName;
   @SuppressWarnings({"rawtypes"})
   public final NamedList initArgs;
   public final Map<String, String> attributes;
@@ -53,9 +53,9 @@ public class PluginInfo implements MapSerializable {
   public PluginInfo(String type, Map<String, String> attrs, @SuppressWarnings({"rawtypes"})NamedList initArgs, List<PluginInfo> children) {
     this.type = type;
     this.name = attrs.get(NAME);
-    Pair<String, String> parsed = parseClassName(attrs.get(CLASS_NAME));
-    this.className = parsed.second();
-    this.pkgName = parsed.first();
+    cName = parseClassName(attrs.get(CLASS_NAME));
+    this.className = cName.className;
+    this.pkgName = cName.pkg;
     this.initArgs = initArgs;
     attributes = unmodifiableMap(attrs);
     this.children = children == null ? Collections.<PluginInfo>emptyList(): unmodifiableList(children);
@@ -66,17 +66,29 @@ public class PluginInfo implements MapSerializable {
    * This checks if it is a package name prefixed classname.
    * the return value has first = package name and second = class name
    */
-  public static Pair<String,String > parseClassName(String name) {
-    String pkgName = null;
-    String className = name;
-    if (name != null) {
+  public static CName parseClassName(String name) {
+    return new CName(name);
+  }
+
+  public static class CName {
+    public final String pkg;
+    public final String className;
+
+    public CName(String name) {
+      if (name == null) {
+        pkg = null;
+        className = null;
+        return;
+      }
       int colonIdx = name.indexOf(':');
       if (colonIdx > -1) {
-        pkgName = name.substring(0, colonIdx);
+        pkg = name.substring(0, colonIdx);
         className = name.substring(colonIdx + 1);
+      } else {
+        pkg = null;
+        className = name;
       }
     }
-    return new Pair<>(pkgName, className);
 
   }
 
@@ -84,9 +96,9 @@ public class PluginInfo implements MapSerializable {
   public PluginInfo(Node node, String err, boolean requireName, boolean requireClass) {
     type = node.getNodeName();
     name = DOMUtil.getAttr(node, NAME, requireName ? err : null);
-    Pair<String, String> parsed = parseClassName(DOMUtil.getAttr(node, CLASS_NAME, requireClass ? err : null));
-    className = parsed.second();
-    pkgName = parsed.first();
+    cName = parseClassName(DOMUtil.getAttr(node, CLASS_NAME, requireClass ? err : null));
+    className = cName.className;
+    pkgName = cName.pkg;
     initArgs = DOMUtil.childNodesToNamedList(node);
     attributes = unmodifiableMap(DOMUtil.toMap(node.getAttributes()));
     children = loadSubPlugins(node);
@@ -117,9 +129,9 @@ public class PluginInfo implements MapSerializable {
     }
     this.type = type;
     this.name = (String) m.get(NAME);
-    Pair<String, String> parsed = parseClassName((String) m.get(CLASS_NAME));
-    this.className = parsed.second();
-    this.pkgName = parsed.first();
+    cName = parseClassName((String) m.get(CLASS_NAME));
+    this.className = cName.className;
+    this.pkgName = cName.pkg;
     attributes = unmodifiableMap(m);
     this.children =  Collections.<PluginInfo>emptyList();
     isFromSolrConfig = true;
diff --git a/solr/core/src/java/org/apache/solr/core/SolrConfig.java b/solr/core/src/java/org/apache/solr/core/SolrConfig.java
index 2daaa95..c189eb4 100644
--- a/solr/core/src/java/org/apache/solr/core/SolrConfig.java
+++ b/solr/core/src/java/org/apache/solr/core/SolrConfig.java
@@ -57,6 +57,7 @@ import org.apache.solr.common.SolrException;
 import org.apache.solr.common.SolrException.ErrorCode;
 import org.apache.solr.common.util.IOUtils;
 import org.apache.solr.handler.component.SearchComponent;
+import org.apache.solr.pkg.PackageListeners;
 import org.apache.solr.request.SolrRequestHandler;
 import org.apache.solr.response.QueryResponseWriter;
 import org.apache.solr.response.transform.TransformerFactory;
@@ -105,6 +106,8 @@ public class SolrConfig extends XmlConfigFile implements MapSerializable {
   private static final Logger log = LoggerFactory.getLogger(MethodHandles.lookup().lookupClass());
 
   public static final String DEFAULT_CONF_FILE = "solrconfig.xml";
+  public static final String LATEST = "$LATEST";
+
 
   private RequestParams requestParams;
 
@@ -971,6 +974,21 @@ public class SolrConfig extends XmlConfigFile implements MapSerializable {
     return requestParams;
   }
 
+  /**
+   * The version of package that should be loaded for a given package name
+   * This information is stored in the params.json in the same configset
+   * If params.json is absent or there is no corresponding version specified for a given package,
+   * the latest is used
+   */
+  public String maxPackageVersion(String pkg) {
+    RequestParams.ParamSet p = getRequestParams().getParams(PackageListeners.PACKAGE_VERSIONS);
+    if (p == null) {
+      return null;
+    }
+    Object o = p.get().get(pkg);
+    if (o == null || LATEST.equals(o)) return null;
+    return o.toString();
+  }
 
   public RequestParams refreshRequestParams() {
     requestParams = RequestParams.getFreshRequestParams(getResourceLoader(), requestParams);
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 0b1c551..83526da 100644
--- a/solr/core/src/java/org/apache/solr/core/SolrCore.java
+++ b/solr/core/src/java/org/apache/solr/core/SolrCore.java
@@ -31,22 +31,7 @@ import java.nio.charset.StandardCharsets;
 import java.nio.file.NoSuchFileException;
 import java.nio.file.Path;
 import java.nio.file.Paths;
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.Collection;
-import java.util.Collections;
-import java.util.Date;
-import java.util.HashMap;
-import java.util.HashSet;
-import java.util.Iterator;
-import java.util.LinkedHashMap;
-import java.util.LinkedList;
-import java.util.List;
-import java.util.Map;
-import java.util.Objects;
-import java.util.Optional;
-import java.util.Properties;
-import java.util.Set;
+import java.util.*;
 import java.util.concurrent.Callable;
 import java.util.concurrent.ConcurrentHashMap;
 import java.util.concurrent.CopyOnWriteArrayList;
@@ -97,6 +82,7 @@ import org.apache.solr.common.util.SimpleOrderedMap;
 import org.apache.solr.common.util.SolrNamedThreadFactory;
 import org.apache.solr.common.util.Utils;
 import org.apache.solr.core.DirectoryFactory.DirContext;
+import org.apache.solr.core.PluginBag.PluginHolder;
 import org.apache.solr.core.snapshots.SolrSnapshotManager;
 import org.apache.solr.core.snapshots.SolrSnapshotMetaDataManager;
 import org.apache.solr.core.snapshots.SolrSnapshotMetaDataManager.SnapshotMetaData;
@@ -112,6 +98,7 @@ import org.apache.solr.metrics.SolrMetricProducer;
 import org.apache.solr.metrics.SolrMetricsContext;
 import org.apache.solr.pkg.PackageListeners;
 import org.apache.solr.pkg.PackageLoader;
+import org.apache.solr.pkg.PackagePluginHolder;
 import org.apache.solr.request.SolrQueryRequest;
 import org.apache.solr.request.SolrRequestHandler;
 import org.apache.solr.response.BinaryResponseWriter;
@@ -137,10 +124,7 @@ import org.apache.solr.schema.FieldType;
 import org.apache.solr.schema.IndexSchema;
 import org.apache.solr.schema.ManagedIndexSchema;
 import org.apache.solr.schema.SimilarityFactory;
-import org.apache.solr.search.QParserPlugin;
-import org.apache.solr.search.SolrFieldCacheBean;
-import org.apache.solr.search.SolrIndexSearcher;
-import org.apache.solr.search.ValueSourceParser;
+import org.apache.solr.search.*;
 import org.apache.solr.search.stats.LocalStatsCache;
 import org.apache.solr.search.stats.StatsCache;
 import org.apache.solr.update.DefaultSolrCoreState;
@@ -191,6 +175,11 @@ public final class SolrCore implements SolrInfoBean, Closeable {
 
   private String name;
   private String logid; // used to show what name is set
+  /**
+   * A unique id to differentiate multiple instances of the same core
+   * If we reload a core, the name remains same , but the id will be new
+   */
+  public final UUID uniqueId = UUID.randomUUID();
 
   private boolean isReloaded = false;
 
@@ -626,25 +615,26 @@ public final class SolrCore implements SolrInfoBean, Closeable {
   }
 
 
+  @SuppressWarnings("unchecked")
   private void initListeners() {
     final Class<SolrEventListener> clazz = SolrEventListener.class;
     final String label = "Event Listener";
     for (PluginInfo info : solrConfig.getPluginInfos(SolrEventListener.class.getName())) {
       final String event = info.attributes.get("event");
       if ("firstSearcher".equals(event)) {
-        SolrEventListener obj = createInitInstance(info, clazz, label, null);
+        PluginHolder<SolrEventListener> obj = (PluginHolder<SolrEventListener>)PackagePluginHolder.createHolder(info, this, SolrEventListener.class, label);
         firstSearcherListeners.add(obj);
-        log.debug("[{}] Added SolrEventListener for firstSearcher: [{}]", logid, obj);
+        log.debug("[{}] Added SolrEventListener for firstSearcher: [{}]", logid, obj.get());
       } else if ("newSearcher".equals(event)) {
-        SolrEventListener obj = createInitInstance(info, clazz, label, null);
+        PluginHolder<SolrEventListener> obj = (PluginHolder<SolrEventListener>)PackagePluginHolder.createHolder(info, this, SolrEventListener.class, label);
         newSearcherListeners.add(obj);
-        log.debug("[{}] Added SolrEventListener for newSearcher: [{}]", logid, obj);
+        log.debug("[{}] Added SolrEventListener for newSearcher: [{}]", logid, obj.get());
       }
     }
   }
 
-  final List<SolrEventListener> firstSearcherListeners = new ArrayList<>();
-  final List<SolrEventListener> newSearcherListeners = new ArrayList<>();
+  final List<PluginHolder<SolrEventListener>> firstSearcherListeners = new ArrayList<>();
+  final List<PluginHolder<SolrEventListener>> newSearcherListeners = new ArrayList<>();
 
   /**
    * NOTE: this function is not thread safe.  However, it is safe to call within the
@@ -654,7 +644,8 @@ public final class SolrCore implements SolrInfoBean, Closeable {
    * @see SolrCoreAware
    */
   public void registerFirstSearcherListener(SolrEventListener listener) {
-    firstSearcherListeners.add(listener);
+    firstSearcherListeners.add(new PluginHolder<>(listener,
+            SolrConfig.classVsSolrPluginInfo.get(SolrEventListener.class.getName())));
   }
 
   /**
@@ -665,7 +656,8 @@ public final class SolrCore implements SolrInfoBean, Closeable {
    * @see SolrCoreAware
    */
   public void registerNewSearcherListener(SolrEventListener listener) {
-    newSearcherListeners.add(listener);
+    newSearcherListeners.add(
+            new PluginHolder<>(listener, SolrConfig.classVsSolrPluginInfo.get(SolrEventListener.class.getName())));
   }
 
   /**
@@ -938,6 +930,7 @@ public final class SolrCore implements SolrInfoBean, Closeable {
 
       this.solrConfig = configSet.getSolrConfig();
       this.resourceLoader = configSet.getSolrConfig().getResourceLoader();
+      this.resourceLoader.core = this;
       this.configSetProperties = configSet.getProperties();
       // Initialize the metrics manager
       this.coreMetricManager = initCoreMetricManager(solrConfig);
@@ -2364,8 +2357,8 @@ public final class SolrCore implements SolrInfoBean, Closeable {
         if (currSearcher == null) {
           future = searcherExecutor.submit(() -> {
             try {
-              for (SolrEventListener listener : firstSearcherListeners) {
-                listener.newSearcher(newSearcher, null);
+              for (PluginHolder<SolrEventListener>  listener : firstSearcherListeners) {
+                listener.get().newSearcher(newSearcher, null);
               }
             } catch (Throwable e) {
               SolrException.log(log, null, e);
@@ -2380,8 +2373,8 @@ public final class SolrCore implements SolrInfoBean, Closeable {
         if (currSearcher != null) {
           future = searcherExecutor.submit(() -> {
             try {
-              for (SolrEventListener listener : newSearcherListeners) {
-                listener.newSearcher(newSearcher, currSearcher);
+              for (PluginHolder<SolrEventListener>  listener : newSearcherListeners) {
+                listener.get().newSearcher(newSearcher, currSearcher);
               }
             } catch (Throwable e) {
               SolrException.log(log, null, e);
@@ -3252,4 +3245,5 @@ public final class SolrCore implements SolrInfoBean, Closeable {
   public void runAsync(Runnable r) {
     coreAsyncTaskExecutor.submit(r);
   }
+
 }
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 77c80bf..3ab1ba1 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,12 @@ public class SolrResourceLoader implements ResourceLoader, Closeable {
   protected URLClassLoader classLoader;
   private final Path instanceDir;
 
+  /**
+   * 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>());
   private final List<ResourceLoaderAware> waitingForResources = Collections.synchronizedList(new ArrayList<ResourceLoaderAware>());
@@ -198,6 +204,11 @@ public class SolrResourceLoader implements ResourceLoader, Closeable {
     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/handler/StreamHandler.java b/solr/core/src/java/org/apache/solr/handler/StreamHandler.java
index f1b1544..d604616 100644
--- a/solr/core/src/java/org/apache/solr/handler/StreamHandler.java
+++ b/solr/core/src/java/org/apache/solr/handler/StreamHandler.java
@@ -158,8 +158,8 @@ public class StreamHandler extends RequestHandlerBase implements SolrCoreAware,
     }
 
     @Override
-    protected void initNewInstance(PackageLoader.Package.Version newest) {
-      clazz = newest.getLoader().findClass(pluginInfo.className, Expressible.class);
+    protected Object initNewInstance(PackageLoader.Package.Version newest) {
+      return clazz = newest.getLoader().findClass(pluginInfo.className, Expressible.class);
     }
 
   }
diff --git a/solr/core/src/java/org/apache/solr/handler/component/SearchHandler.java b/solr/core/src/java/org/apache/solr/handler/component/SearchHandler.java
index b93d855..6ee180e 100644
--- a/solr/core/src/java/org/apache/solr/handler/component/SearchHandler.java
+++ b/solr/core/src/java/org/apache/solr/handler/component/SearchHandler.java
@@ -166,7 +166,7 @@ public class SearchHandler extends RequestHandlerBase implements SolrCoreAware,
         }
 
         @Override
-        public void changed(PackageLoader.Package pkg) {
+        public void changed(PackageLoader.Package pkg, Ctx ctx) {
           //we could optimize this by listening to only relevant packages,
           // but it is not worth optimizing as these are lightweight objects
           components = null;
diff --git a/solr/core/src/java/org/apache/solr/packagemanager/PackageManager.java b/solr/core/src/java/org/apache/solr/packagemanager/PackageManager.java
index ef042da..f9b746a 100644
--- a/solr/core/src/java/org/apache/solr/packagemanager/PackageManager.java
+++ b/solr/core/src/java/org/apache/solr/packagemanager/PackageManager.java
@@ -43,10 +43,10 @@ import org.apache.solr.common.cloud.SolrZkClient;
 import org.apache.solr.common.cloud.ZkStateReader;
 import org.apache.solr.common.util.Pair;
 import org.apache.solr.common.util.Utils;
+import org.apache.solr.core.SolrConfig;
 import org.apache.solr.packagemanager.SolrPackage.Command;
 import org.apache.solr.packagemanager.SolrPackage.Manifest;
 import org.apache.solr.packagemanager.SolrPackage.Plugin;
-import org.apache.solr.pkg.PackagePluginHolder;
 import org.apache.solr.util.SolrCLI;
 import org.apache.zookeeper.KeeperException;
 import org.slf4j.Logger;
@@ -250,7 +250,7 @@ public class PackageManager implements Closeable {
       // Set the package version in the collection's parameters
       try {
         SolrCLI.postJsonToSolr(solrClient, PackageUtils.getCollectionParamsPath(collection),
-            "{set:{PKG_VERSIONS:{" + packageInstance.name+": '" + (pegToLatest? PackagePluginHolder.LATEST: packageInstance.version)+"'}}}");
+            "{set:{PKG_VERSIONS:{" + packageInstance.name+": '" + (pegToLatest? SolrConfig.LATEST: packageInstance.version)+"'}}}");
       } catch (Exception ex) {
         throw new SolrException(ErrorCode.SERVER_ERROR, ex);
       }
@@ -296,7 +296,7 @@ public class PackageManager implements Closeable {
       // Set the package version in the collection's parameters
       try {
         SolrCLI.postJsonToSolr(solrClient, PackageUtils.getCollectionParamsPath(collection),
-            "{update:{PKG_VERSIONS:{'" + packageInstance.name + "' : '" + (pegToLatest? PackagePluginHolder.LATEST: packageInstance.version) + "'}}}");
+            "{update:{PKG_VERSIONS:{'" + packageInstance.name + "' : '" + (pegToLatest? SolrConfig.LATEST: packageInstance.version) + "'}}}");
       } catch (Exception ex) {
         throw new SolrException(ErrorCode.SERVER_ERROR, ex);
       }
@@ -550,7 +550,7 @@ public class PackageManager implements Closeable {
         }
       }
     }
-    if (version == null || version.equalsIgnoreCase(PackageUtils.LATEST) || version.equalsIgnoreCase(PackagePluginHolder.LATEST)) {
+    if (version == null || version.equalsIgnoreCase(PackageUtils.LATEST) || version.equalsIgnoreCase(SolrConfig.LATEST)) {
       return latest;
     } else return null;
   }
@@ -671,7 +671,7 @@ public class PackageManager implements Closeable {
 
   /**
    * Given a package, return a map of collections where this package is
-   * installed to the installed version (which can be {@link PackagePluginHolder#LATEST})
+   * installed to the installed version (which can be {@link org.apache.solr.core.SolrConfig#LATEST})
    */
   public Map<String, String> getDeployedCollections(String packageName) {
     List<String> allCollections;
diff --git a/solr/core/src/java/org/apache/solr/packagemanager/RepositoryManager.java b/solr/core/src/java/org/apache/solr/packagemanager/RepositoryManager.java
index 0d1fc17..e961a37 100644
--- a/solr/core/src/java/org/apache/solr/packagemanager/RepositoryManager.java
+++ b/solr/core/src/java/org/apache/solr/packagemanager/RepositoryManager.java
@@ -48,11 +48,11 @@ import org.apache.solr.common.SolrException;
 import org.apache.solr.common.SolrException.ErrorCode;
 import org.apache.solr.common.cloud.SolrZkClient;
 import org.apache.solr.core.BlobRepository;
+import org.apache.solr.core.SolrConfig;
 import org.apache.solr.filestore.PackageStoreAPI;
 import org.apache.solr.packagemanager.SolrPackage.Artifact;
 import org.apache.solr.packagemanager.SolrPackage.SolrPackageRelease;
 import org.apache.solr.pkg.PackageAPI;
-import org.apache.solr.pkg.PackagePluginHolder;
 import org.apache.solr.util.SolrCLI;
 import org.apache.zookeeper.CreateMode;
 import org.apache.zookeeper.KeeperException;
@@ -300,7 +300,7 @@ public class RepositoryManager {
 
   /**
    * Install a version of the package. Also, run verify commands in case some
-   * collection was using {@link PackagePluginHolder#LATEST} version of this package and got auto-updated.
+   * collection was using {@link org.apache.solr.core.SolrConfig#LATEST} version of this package and got auto-updated.
    */
   public boolean install(String packageName, String version) throws SolrException {
     SolrPackageRelease pkg = getLastPackageRelease(packageName);
@@ -312,7 +312,7 @@ public class RepositoryManager {
 
     Map<String, String> collectionsDeployedIn = packageManager.getDeployedCollections(packageName);
     List<String> collectionsPeggedToLatest = collectionsDeployedIn.keySet().stream().
-        filter(collection -> collectionsDeployedIn.get(collection).equals(PackagePluginHolder.LATEST)).collect(Collectors.toList());
+        filter(collection -> collectionsDeployedIn.get(collection).equals(SolrConfig.LATEST)).collect(Collectors.toList());
     if (!collectionsPeggedToLatest.isEmpty()) {
       PackageUtils.printGreen("Collections that will be affected (since they are configured to use $LATEST): "+collectionsPeggedToLatest);
     }
diff --git a/solr/core/src/java/org/apache/solr/pkg/CoreRefreshingClassLoader.java b/solr/core/src/java/org/apache/solr/pkg/CoreRefreshingClassLoader.java
new file mode 100644
index 0000000..efad846
--- /dev/null
+++ b/solr/core/src/java/org/apache/solr/pkg/CoreRefreshingClassLoader.java
@@ -0,0 +1,88 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.solr.pkg;
+
+import org.apache.solr.core.PluginInfo;
+import org.apache.solr.core.SolrCore;
+import org.apache.solr.core.SolrResourceLoader;
+
+import java.util.function.Function;
+
+/**A utility class that loads classes from packages and reloads core if any of those packages are updated
+ *
+ */
+public class CoreRefreshingClassLoader implements PackageListeners.Listener {
+  private final SolrCore solrCore;
+  private final PluginInfo info;
+  private final PackageLoader.Package.Version version;
+
+  public CoreRefreshingClassLoader(SolrCore solrCore, PluginInfo info, PackageLoader.Package.Version version) {
+    this.solrCore = solrCore;
+    this.info = info;
+    this.version = version;
+  }
+
+  @Override
+  public String packageName() {
+    return info.cName.pkg;
+  }
+
+  public SolrResourceLoader getLoader() {
+    return version.getLoader();
+  }
+  @Override
+  public PluginInfo pluginInfo() {
+    return info;
+  }
+
+  @Override
+  public void changed(PackageLoader.Package pkg, Ctx ctx) {
+    PackageLoader.Package.Version version = pkg.getLatest(solrCore.getSolrConfig().maxPackageVersion(info.cName.pkg));
+    if(version != this.version) {
+      ctx.runLater(SolrCore.class.getName(), () -> solrCore.getCoreContainer().reload(CoreRefreshingClassLoader.class.getName() , solrCore.uniqueId));
+    }
+  }
+
+  @Override
+  public PackageLoader.Package.Version getPackageVersion() {
+    return version;
+  }
+
+  @SuppressWarnings({"rawtypes","unchecked"})
+  public static Class loadClass(SolrCore core, PluginInfo info, Class type) {
+    return _get(core, info, version -> version.getLoader().findClass(info.cName.className, type));
+
+  }
+
+  private static  <T> T _get(SolrCore core, PluginInfo info, Function<PackageLoader.Package.Version, T> fun){
+    PluginInfo.CName cName = info.cName;
+    PackageLoader.Package.Version latest = core.getCoreContainer().getPackageLoader().getPackage(cName.pkg)
+            .getLatest(core.getSolrConfig().maxPackageVersion(cName.pkg));
+    T result = fun.apply(latest);
+    core.getPackageListeners().addListener(new CoreRefreshingClassLoader(core, info, latest));
+    return result;
+  }
+
+  public static <T> T createInst(SolrCore core, PluginInfo info, Class<T> type) {
+    if(info.cName.pkg == null) {
+      return core.getResourceLoader().newInstance(info.cName.className== null? type.getName(): info.cName.className , type);
+    }
+    return _get(core, info, version -> version.getLoader().newInstance(info.cName.className, type));
+  }
+
+}
diff --git a/solr/core/src/java/org/apache/solr/pkg/PackageListeners.java b/solr/core/src/java/org/apache/solr/pkg/PackageListeners.java
index b5b295f..a2b859e 100644
--- a/solr/core/src/java/org/apache/solr/pkg/PackageListeners.java
+++ b/solr/core/src/java/org/apache/solr/pkg/PackageListeners.java
@@ -20,10 +20,9 @@ package org.apache.solr.pkg;
 import java.lang.invoke.MethodHandles;
 import java.lang.ref.Reference;
 import java.lang.ref.SoftReference;
-import java.util.ArrayList;
-import java.util.Iterator;
-import java.util.List;
+import java.util.*;
 import java.util.concurrent.CopyOnWriteArrayList;
+
 import org.apache.solr.core.PluginInfo;
 import org.apache.solr.core.SolrCore;
 import org.apache.solr.logging.MDCLoggingContext;
@@ -64,21 +63,23 @@ public class PackageListeners {
 
   synchronized void packagesUpdated(List<PackageLoader.Package> pkgs) {
     MDCLoggingContext.setCore(core);
+    Listener.Ctx ctx = new Listener.Ctx();
     try {
       for (PackageLoader.Package pkgInfo : pkgs) {
-        invokeListeners(pkgInfo);
+        invokeListeners(pkgInfo, ctx);
       }
     } finally {
+      ctx.runLaterTasks();
       MDCLoggingContext.clear();
     }
   }
 
-  private synchronized void invokeListeners(PackageLoader.Package pkg) {
+  private synchronized void invokeListeners(PackageLoader.Package pkg, Listener.Ctx ctx) {
     for (Reference<Listener> ref : listeners) {
       Listener listener = ref.get();
       if(listener == null) continue;
       if (listener.packageName() == null || listener.packageName().equals(pkg.name())) {
-        listener.changed(pkg);
+        listener.changed(pkg, ctx);
       }
     }
   }
@@ -96,15 +97,32 @@ public class PackageListeners {
 
 
   public interface Listener {
-    /**Name of the package or null to loisten to all package changes
+    /**Name of the package or null to listen to all package changes
      */
     String packageName();
 
     PluginInfo pluginInfo();
 
-    void changed(PackageLoader.Package pkg);
+    void changed(PackageLoader.Package pkg, Ctx ctx);
 
     PackageLoader.Package.Version getPackageVersion();
+    class Ctx {
+      private Map<String, Runnable > runLater;
+      public void runLater(String name,  Runnable runnable  ){
+        if(runLater == null) runLater = new LinkedHashMap<>();
+        runLater.put(name, runnable);
+      }
+      private void runLaterTasks(){
+        if(runLater == null) return;
+        new Thread(() -> runLater.forEach((s, runnable) -> {
+          try {
+            runnable.run();
+          } catch (Exception e) {
+            log.error("Unknown error", e);
+          }
+        }));
+      }
+    }
 
   }
 }
diff --git a/solr/core/src/java/org/apache/solr/pkg/PackagePluginHolder.java b/solr/core/src/java/org/apache/solr/pkg/PackagePluginHolder.java
index 322a1d3..9df1ec3 100644
--- a/solr/core/src/java/org/apache/solr/pkg/PackagePluginHolder.java
+++ b/solr/core/src/java/org/apache/solr/pkg/PackagePluginHolder.java
@@ -55,7 +55,7 @@ public class PackagePluginHolder<T> extends PluginBag.PluginHolder<T> {
       }
 
       @Override
-      public void changed(PackageLoader.Package pkg) {
+      public void changed(PackageLoader.Package pkg, Ctx ctx) {
         reload(pkg);
 
       }
@@ -68,19 +68,17 @@ public class PackagePluginHolder<T> extends PluginBag.PluginHolder<T> {
     });
   }
 
-  private String maxVersion() {
-    RequestParams.ParamSet p = core.getSolrConfig().getRequestParams().getParams(PackageListeners.PACKAGE_VERSIONS);
-    if (p == null) {
-      return null;
+  @SuppressWarnings({"rawtypes", "unchecked"})
+  public static PluginBag.PluginHolder createHolder(PluginInfo info, SolrCore core, Class type, String msg) {
+    if(info.cName.pkg == null) {
+      return new PluginBag.PluginHolder(info, core.createInitInstance(info, type,msg, null));
+    } else {
+      return new PackagePluginHolder(info, core, SolrConfig.classVsSolrPluginInfo.get(type.getName()));
     }
-    Object o = p.get().get(info.pkgName);
-    if (o == null || LATEST.equals(o)) return null;
-    return o.toString();
   }
 
-
   private synchronized void reload(PackageLoader.Package pkg) {
-    String lessThan = maxVersion();
+    String lessThan = core.getSolrConfig().maxPackageVersion(info.pkgName);
     PackageLoader.Package.Version newest = pkg.getLatest(lessThan);
     if (newest == null) {
       log.error("No latest version available for package : {}", pkg.name());
@@ -113,7 +111,7 @@ public class PackagePluginHolder<T> extends PluginBag.PluginHolder<T> {
   }
 
   @SuppressWarnings({"unchecked"})
-  protected void initNewInstance(PackageLoader.Package.Version newest) {
+  protected Object initNewInstance(PackageLoader.Package.Version newest) {
     Object instance = SolrCore.createInstance(pluginInfo.className,
         pluginMeta.clazz, pluginMeta.getCleanTag(), core, newest.getLoader());
     PluginBag.initInstance(instance, pluginInfo);
@@ -128,6 +126,7 @@ public class PackagePluginHolder<T> extends PluginBag.PluginHolder<T> {
         log.error("error closing plugin", e);
       }
     }
+    return inst;
   }
 
   private void handleAwareCallbacks(SolrResourceLoader loader, Object instance) {
diff --git a/solr/core/src/java/org/apache/solr/search/CacheConfig.java b/solr/core/src/java/org/apache/solr/search/CacheConfig.java
index 6470915..8b9a458 100644
--- a/solr/core/src/java/org/apache/solr/search/CacheConfig.java
+++ b/solr/core/src/java/org/apache/solr/search/CacheConfig.java
@@ -23,12 +23,15 @@ import java.util.HashMap;
 import java.util.LinkedHashMap;
 import java.util.List;
 import java.util.Map;
+import java.util.function.Supplier;
 
 import org.apache.solr.common.SolrException;
 import org.apache.solr.common.util.StrUtils;
 import org.apache.solr.common.MapSerializable;
+import org.apache.solr.core.PluginInfo;
 import org.apache.solr.core.SolrConfig;
 import org.apache.solr.core.SolrResourceLoader;
+import org.apache.solr.pkg.CoreRefreshingClassLoader;
 import org.apache.solr.util.DOMUtil;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
@@ -50,7 +53,7 @@ public class CacheConfig implements MapSerializable{
   private String nodeName;
 
   @SuppressWarnings({"rawtypes"})
-  private Class<? extends SolrCache> clazz;
+  private Supplier<Class<? extends SolrCache>> clazz;
   private Map<String,String> args;
   private CacheRegenerator regenerator;
 
@@ -64,7 +67,7 @@ public class CacheConfig implements MapSerializable{
 
   @SuppressWarnings({"rawtypes"})
   public CacheConfig(Class<? extends SolrCache> clazz, Map<String,String> args, CacheRegenerator regenerator) {
-    this.clazz = clazz;
+    this.clazz = () -> clazz;
     this.args = args;
     this.regenerator = regenerator;
   }
@@ -134,8 +137,14 @@ public class CacheConfig implements MapSerializable{
     SolrResourceLoader loader = solrConfig.getResourceLoader();
     config.cacheImpl = config.args.get("class");
     if(config.cacheImpl == null) config.cacheImpl = "solr.CaffeineCache";
+    config.clazz = () -> {
+      PluginInfo.CName cName = new PluginInfo.CName(config.cacheImpl);
+      if(cName.pkg == null) return loader.findClass(cName.className, SolrCache.class);
+      return CoreRefreshingClassLoader.loadClass(loader.getCore(),
+              new PluginInfo("cache", Collections.singletonMap("class", config.cacheImpl)),
+              SolrCache.class);
+    };
     config.regenImpl = config.args.get("regenerator");
-    config.clazz = loader.findClass(config.cacheImpl, SolrCache.class);
     if (config.regenImpl != null) {
       config.regenerator = loader.newInstance(config.regenImpl, CacheRegenerator.class);
     }
@@ -146,7 +155,7 @@ public class CacheConfig implements MapSerializable{
   @SuppressWarnings({"rawtypes"})
   public SolrCache newInstance() {
     try {
-      SolrCache cache = clazz.getConstructor().newInstance();
+      SolrCache cache = clazz.get().getConstructor().newInstance();
       persistence[0] = cache.init(args, persistence[0], regenerator);
       return cache;
     } catch (Exception e) {
diff --git a/solr/core/src/java/org/apache/solr/update/UpdateHandler.java b/solr/core/src/java/org/apache/solr/update/UpdateHandler.java
index 37397f7..6a5eb18 100644
--- a/solr/core/src/java/org/apache/solr/update/UpdateHandler.java
+++ b/solr/core/src/java/org/apache/solr/update/UpdateHandler.java
@@ -20,13 +20,11 @@ import java.io.IOException;
 import java.lang.invoke.MethodHandles;
 import java.util.Vector;
 
-import org.apache.solr.core.DirectoryFactory;
-import org.apache.solr.core.HdfsDirectoryFactory;
-import org.apache.solr.core.PluginInfo;
-import org.apache.solr.core.SolrCore;
-import org.apache.solr.core.SolrEventListener;
-import org.apache.solr.core.SolrInfoBean;
+import org.apache.solr.core.*;
+import org.apache.solr.core.PluginBag.PluginHolder;
 import org.apache.solr.metrics.SolrMetricsContext;
+import org.apache.solr.pkg.CoreRefreshingClassLoader;
+import org.apache.solr.pkg.PackagePluginHolder;
 import org.apache.solr.schema.FieldType;
 import org.apache.solr.schema.SchemaField;
 import org.apache.solr.util.plugin.SolrCoreAware;
@@ -48,25 +46,26 @@ public abstract class UpdateHandler implements SolrInfoBean {
   protected final SchemaField idField;
   protected final FieldType idFieldType;
 
-  protected Vector<SolrEventListener> commitCallbacks = new Vector<>();
-  protected Vector<SolrEventListener> softCommitCallbacks = new Vector<>();
-  protected Vector<SolrEventListener> optimizeCallbacks = new Vector<>();
+  protected Vector<PluginHolder<SolrEventListener>> commitCallbacks = new Vector<>();
+  protected Vector<PluginHolder<SolrEventListener>> softCommitCallbacks = new Vector<>();
+  protected Vector<PluginHolder<SolrEventListener>> optimizeCallbacks = new Vector<>();
 
   protected final UpdateLog ulog;
 
   protected SolrMetricsContext solrMetricsContext;
 
+  @SuppressWarnings("unchecked")
   private void parseEventListeners() {
     final Class<SolrEventListener> clazz = SolrEventListener.class;
     final String label = "Event Listener";
     for (PluginInfo info : core.getSolrConfig().getPluginInfos(SolrEventListener.class.getName())) {
       String event = info.attributes.get("event");
       if ("postCommit".equals(event)) {
-        SolrEventListener obj = core.createInitInstance(info,clazz,label,null);
+        PluginHolder<SolrEventListener> obj = PackagePluginHolder.createHolder(info, core, SolrEventListener.class, label);
         commitCallbacks.add(obj);
         log.info("added SolrEventListener for postCommit: {}", obj);
       } else if ("postOptimize".equals(event)) {
-        SolrEventListener obj = core.createInitInstance(info,clazz,label,null);
+        PluginHolder<SolrEventListener> obj = PackagePluginHolder.createHolder(info, core, SolrEventListener.class, label);
         optimizeCallbacks.add(obj);
         log.info("added SolrEventListener for postOptimize: {}", obj);
       }
@@ -77,33 +76,35 @@ public abstract class UpdateHandler implements SolrInfoBean {
    * Call the {@link SolrCoreAware#inform(SolrCore)} on all the applicable registered listeners.
    */
   public void informEventListeners(SolrCore core) {
-    for (SolrEventListener listener: commitCallbacks) {
-      if (listener instanceof SolrCoreAware) {
-        ((SolrCoreAware) listener).inform(core);
+    for (PluginHolder<SolrEventListener>  listener: commitCallbacks) {
+      if(listener instanceof PackagePluginHolder)continue;
+      if (listener.get() instanceof SolrCoreAware) {
+        ((SolrCoreAware) listener.get()).inform(core);
       }
     }
-    for (SolrEventListener listener: optimizeCallbacks) {
-      if (listener instanceof SolrCoreAware) {
-        ((SolrCoreAware) listener).inform(core);
+    for (PluginHolder<SolrEventListener> listener: optimizeCallbacks) {
+      if(listener instanceof PackagePluginHolder)continue;
+      if (listener.get() instanceof SolrCoreAware) {
+        ((SolrCoreAware) listener.get()).inform(core);
       }
     }
   }
 
   protected void callPostCommitCallbacks() {
-    for (SolrEventListener listener : commitCallbacks) {
-      listener.postCommit();
+    for (PluginHolder<SolrEventListener> listener : commitCallbacks) {
+      listener.get(). postCommit();
     }
   }
 
   protected void callPostSoftCommitCallbacks() {
-    for (SolrEventListener listener : softCommitCallbacks) {
-      listener.postSoftCommit();
+    for (PluginHolder<SolrEventListener>  listener : softCommitCallbacks) {
+      listener.get().postSoftCommit();
     }
   }
 
   protected void callPostOptimizeCallbacks() {
-    for (SolrEventListener listener : optimizeCallbacks) {
-      listener.postCommit();
+    for (PluginHolder<SolrEventListener> listener : optimizeCallbacks) {
+      listener.get().postCommit();
     }
   }
 
@@ -125,8 +126,8 @@ public abstract class UpdateHandler implements SolrInfoBean {
       if (dirFactory instanceof HdfsDirectoryFactory) {
         ulog = new HdfsUpdateLog(((HdfsDirectoryFactory)dirFactory).getConfDir());
       } else {
-        String className = ulogPluginInfo.className == null ? UpdateLog.class.getName() : ulogPluginInfo.className;
-        ulog = core.getResourceLoader().newInstance(className, UpdateLog.class);
+        ulog = ulogPluginInfo.className == null ? new UpdateLog():
+                CoreRefreshingClassLoader.createInst(core, ulogPluginInfo, UpdateLog.class);
       }
 
       if (!core.isReloaded() && !dirFactory.isPersistent()) {
@@ -172,7 +173,7 @@ public abstract class UpdateHandler implements SolrInfoBean {
    */
   public void registerCommitCallback( SolrEventListener listener )
   {
-    commitCallbacks.add( listener );
+    commitCallbacks.add( new PluginHolder<>(listener, SolrConfig.classVsSolrPluginInfo.get(SolrEventListener.class.getName())) );
   }
 
   /**
@@ -184,7 +185,7 @@ public abstract class UpdateHandler implements SolrInfoBean {
    */
   public void registerSoftCommitCallback( SolrEventListener listener )
   {
-    softCommitCallbacks.add( listener );
+    softCommitCallbacks.add( new PluginHolder<>(listener, SolrConfig.classVsSolrPluginInfo.get(SolrEventListener.class.getName())) );
   }
 
   /**
@@ -196,7 +197,7 @@ public abstract class UpdateHandler implements SolrInfoBean {
    */
   public void registerOptimizeCallback( SolrEventListener listener )
   {
-    optimizeCallbacks.add( listener );
+    optimizeCallbacks.add( new PluginHolder<>(listener, SolrConfig.classVsSolrPluginInfo.get(SolrEventListener.class.getName())) );
   }
 
   public abstract void split(SplitIndexCommand cmd) throws IOException;
diff --git a/solr/core/src/test/org/apache/solr/core/TestQuerySenderListener.java b/solr/core/src/test/org/apache/solr/core/TestQuerySenderListener.java
index ad564c2..0d66abe 100644
--- a/solr/core/src/test/org/apache/solr/core/TestQuerySenderListener.java
+++ b/solr/core/src/test/org/apache/solr/core/TestQuerySenderListener.java
@@ -60,7 +60,8 @@ public class TestQuerySenderListener extends SolrTestCaseJ4 {
   @Test
   public void testSearcherEvents() throws Exception {
     SolrCore core = h.getCore();
-    SolrEventListener newSearcherListener = core.newSearcherListeners.get(0);
+    SolrEventListener newSearcherListener = core.newSearcherListeners.get(0).get();
+
     assertTrue("Not an instance of QuerySenderListener", newSearcherListener instanceof QuerySenderListener);
     QuerySenderListener qsl = (QuerySenderListener) newSearcherListener;
 
diff --git a/solr/core/src/test/org/apache/solr/core/TestQuerySenderNoQuery.java b/solr/core/src/test/org/apache/solr/core/TestQuerySenderNoQuery.java
index a44fe3c..e113137 100644
--- a/solr/core/src/test/org/apache/solr/core/TestQuerySenderNoQuery.java
+++ b/solr/core/src/test/org/apache/solr/core/TestQuerySenderNoQuery.java
@@ -61,7 +61,7 @@ public class TestQuerySenderNoQuery extends SolrTestCaseJ4 {
   @Test
   public void testSearcherEvents() throws Exception {
     SolrCore core = h.getCore();
-    SolrEventListener newSearcherListener = core.newSearcherListeners.get(0);
+    SolrEventListener newSearcherListener = core.newSearcherListeners.get(0).get();
     assertTrue("Not an instance of QuerySenderListener", newSearcherListener instanceof QuerySenderListener);
     QuerySenderListener qsl = (QuerySenderListener) newSearcherListener;
 


[lucene] 17/42: merging w/ master

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

dweiss pushed a commit to branch jira/solr14155-1
in repository https://gitbox.apache.org/repos/asf/lucene.git

commit e8609111be43142c38f77b843d585fb8fcc218a1
Author: noblepaul <no...@gmail.com>
AuthorDate: Thu Jul 16 16:29:26 2020 +1000

    merging w/ master
---
 solr/core/src/java/org/apache/solr/core/ConfigSetService.java | 5 +++--
 1 file changed, 3 insertions(+), 2 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 2e648ca..22dacdf 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,7 @@ public abstract class ConfigSetService {
               ) ? false: true;
 
       SolrConfig solrConfig = createSolrConfig(dcore, coreLoader, trusted);
-      IndexSchema schema = createIndexSchema(dcore, solrConfig);
+      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,
@@ -118,7 +118,7 @@ public abstract class ConfigSetService {
    * @param solrConfig the core's SolrConfig
    * @return an IndexSchema
    */
-  protected IndexSchema createIndexSchema(CoreDescriptor cd, SolrConfig solrConfig) {
+  protected IndexSchema createIndexSchema(CoreDescriptor cd, SolrConfig solrConfig, boolean forceFetch) {
     // This is the schema name from the core descriptor.  Sometimes users specify a custom schema file.
     //   Important:  indexSchemaFactory.create wants this!
     String cdSchemaName = cd.getSchemaName();
@@ -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 {


[lucene] 11/42: moved some methods to SRL

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

dweiss pushed a commit to branch jira/solr14155-1
in repository https://gitbox.apache.org/repos/asf/lucene.git

commit 74f51561f614834bfd34272f626108dfefd9871f
Author: noblepaul <no...@gmail.com>
AuthorDate: Wed Jul 15 10:41:05 2020 +1000

    moved some methods to SRL
---
 solr/core/src/java/org/apache/solr/search/CacheConfig.java | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/solr/core/src/java/org/apache/solr/search/CacheConfig.java b/solr/core/src/java/org/apache/solr/search/CacheConfig.java
index 8d7edd5..1ae9151 100644
--- a/solr/core/src/java/org/apache/solr/search/CacheConfig.java
+++ b/solr/core/src/java/org/apache/solr/search/CacheConfig.java
@@ -54,7 +54,7 @@ public class CacheConfig implements MapSerializable{
 
   /**
    * When this object is created, the core is not yet available . So, if the class is to be
-   * loaded from a package we should have  acorresponding core
+   * loaded from a package we should have a corresponding core
    *
    */
   @SuppressWarnings({"rawtypes"})


[lucene] 28/42: cleanup

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

dweiss pushed a commit to branch jira/solr14155-1
in repository https://gitbox.apache.org/repos/asf/lucene.git

commit 9d4946a7984af647117ec61284980ea5760f69da
Author: noblepaul <no...@gmail.com>
AuthorDate: Fri Jul 17 00:53:36 2020 +1000

    cleanup
---
 .../org/apache/solr/pkg/PackageListeningClassLoader.java   | 14 +++++++-------
 1 file changed, 7 insertions(+), 7 deletions(-)

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 8dae3f0..0773693 100644
--- a/solr/core/src/java/org/apache/solr/pkg/PackageListeningClassLoader.java
+++ b/solr/core/src/java/org/apache/solr/pkg/PackageListeningClassLoader.java
@@ -37,7 +37,7 @@ import java.util.function.Function;
  * */
 public class PackageListeningClassLoader implements SolrClassLoader , PackageListeners.Listener {
     private final CoreContainer coreContainer;
-    private final SolrResourceLoader fallbackResourceLoader;
+    private final SolrClassLoader fallbackClassLoader;
     private final Function<String, String> pkgVersionSupplier;
     /** package name and the versions that we are tracking
      */
@@ -45,16 +45,16 @@ public class PackageListeningClassLoader implements SolrClassLoader , PackageLis
     private final Runnable onReload;
 
     /**
-     * @param fallbackResourceLoader The {@link SolrResourceLoader} to use if no package is specified
+     * @param fallbackClassLoader The {@link SolrClassLoader} to use if no package is specified
      * @param pkgVersionSupplier Get the version configured for a given package
      * @param onReload The callback function that should be run if a package is updated
      */
     public PackageListeningClassLoader(CoreContainer coreContainer,
-                                       SolrResourceLoader fallbackResourceLoader,
+                                       SolrClassLoader fallbackClassLoader,
                                        Function<String, String> pkgVersionSupplier,
                                        Runnable onReload) {
         this.coreContainer = coreContainer;
-        this.fallbackResourceLoader = fallbackResourceLoader;
+        this.fallbackClassLoader = fallbackClassLoader;
         this.pkgVersionSupplier = pkgVersionSupplier;
         this.onReload = () -> {
             packageVersions = new HashMap<>();
@@ -67,7 +67,7 @@ public class PackageListeningClassLoader implements SolrClassLoader , PackageLis
     public <T> T newInstance(String cname, Class<T> expectedType, String... subpackages) {
         PluginInfo.ClassName cName = new PluginInfo.ClassName(cname);
         if(cName.pkg == null) {
-            return fallbackResourceLoader.newInstance(cname, expectedType, subpackages);
+            return fallbackClassLoader.newInstance(cname, expectedType, subpackages);
         } else {
             PackageLoader.Package.Version version = findPackageVersion(cName, true);
             return applyResourceLoaderAware(version, version.getLoader().newInstance(cName.className, expectedType, subpackages));
@@ -113,7 +113,7 @@ public class PackageListeningClassLoader implements SolrClassLoader , PackageLis
     public <T> T newInstance(String cname, Class<T> expectedType, String[] subPackages, Class[] params, Object[] args) {
         PluginInfo.ClassName cName = new PluginInfo.ClassName(cname);
         if (cName.pkg == null) {
-            return fallbackResourceLoader.newInstance(cname, expectedType, subPackages, params, args);
+            return fallbackClassLoader.newInstance(cname, expectedType, subPackages, params, args);
         } else {
             PackageLoader.Package.Version version = findPackageVersion(cName, true);
             return applyResourceLoaderAware(version, version.getLoader().newInstance(cName.className, expectedType, subPackages, params, args));
@@ -124,7 +124,7 @@ public class PackageListeningClassLoader implements SolrClassLoader , PackageLis
     public <T> Class<? extends T> findClass(String cname, Class<T> expectedType) {
         PluginInfo.ClassName cName = new PluginInfo.ClassName(cname);
         if (cName.pkg == null) {
-            return fallbackResourceLoader.findClass(cname, expectedType);
+            return fallbackClassLoader.findClass(cname, expectedType);
         } else {
             PackageLoader.Package.Version version = findPackageVersion(cName, true);
             return version.getLoader().findClass(cName.className, expectedType);


[lucene] 33/42: merging with trunk

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

dweiss pushed a commit to branch jira/solr14155-1
in repository https://gitbox.apache.org/repos/asf/lucene.git

commit 31080d809c0ee0f11581a3c5d9b1030afa1d6b4f
Author: noblepaul <no...@gmail.com>
AuthorDate: Tue Jan 12 17:32:45 2021 +1100

    merging with trunk
---
 .../src/java/org/apache/solr/core/SolrCore.java    | 104 ++++++++++-----------
 1 file changed, 51 insertions(+), 53 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 a2cb27c..6773fb2 100644
--- a/solr/core/src/java/org/apache/solr/core/SolrCore.java
+++ b/solr/core/src/java/org/apache/solr/core/SolrCore.java
@@ -99,7 +99,6 @@ import org.apache.solr.common.util.SimpleOrderedMap;
 import org.apache.solr.common.util.SolrNamedThreadFactory;
 import org.apache.solr.common.util.Utils;
 import org.apache.solr.core.DirectoryFactory.DirContext;
-import org.apache.solr.core.PluginBag.PluginHolder;
 import org.apache.solr.core.snapshots.SolrSnapshotManager;
 import org.apache.solr.core.snapshots.SolrSnapshotMetaDataManager;
 import org.apache.solr.core.snapshots.SolrSnapshotMetaDataManager.SnapshotMetaData;
@@ -179,7 +178,6 @@ import org.slf4j.LoggerFactory;
 
 import static org.apache.solr.common.params.CommonParams.NAME;
 import static org.apache.solr.common.params.CommonParams.PATH;
-import static org.apache.solr.pkg.PackagePluginHolder.createHolder;
 
 /**
  * SolrCore got its name because it represents the "core" of Solr -- one index and everything needed to make it work.
@@ -385,7 +383,7 @@ public final class SolrCore implements SolrInfoBean, Closeable {
       if (_searcher == null) return getNewIndexDir();
       SolrIndexSearcher searcher = _searcher.get();
       return searcher.getPath() == null ? dataDir + "index/" : searcher
-              .getPath();
+          .getPath();
     }
   }
 
@@ -554,7 +552,7 @@ public final class SolrCore implements SolrInfoBean, Closeable {
     try {
       String dirName = getDataDir() + SolrSnapshotMetaDataManager.SNAPSHOT_METADATA_DIR + "/";
       Directory snapshotDir = directoryFactory.get(dirName, DirContext.DEFAULT,
-              getSolrConfig().indexConfig.lockType);
+          getSolrConfig().indexConfig.lockType);
       return new SolrSnapshotMetaDataManager(this, snapshotDir);
     } catch (IOException e) {
       throw new IllegalStateException(e);
@@ -716,7 +714,7 @@ public final class SolrCore implements SolrInfoBean, Closeable {
         CoreDescriptor cd = new CoreDescriptor(name, getCoreDescriptor());
         cd.loadExtraProperties(); //Reload the extra properties
         core = new SolrCore(coreContainer, cd, coreConfig, getDataDir(),
-                updateHandler, solrDelPolicy, currentCore, true);
+            updateHandler, solrDelPolicy, currentCore, true);
 
         // we open a new IndexWriter to pick up the latest config
         core.getUpdateHandler().getSolrCoreState().newIndexWriter(core, false);
@@ -803,12 +801,12 @@ public final class SolrCore implements SolrInfoBean, Closeable {
       try {
         if (isWriterLocked(dir)) {
           log.error("{}Solr index directory '{}' is locked (lockType={}).  Throwing exception.", logid,
-                  indexDir, lockType);
+              indexDir, lockType);
           throw new LockObtainFailedException(
-                  "Index dir '" + indexDir + "' of core '" + name + "' is already locked. " +
-                          "The most likely cause is another Solr server (or another solr core in this server) " +
-                          "also configured to use this directory; other possible causes may be specific to lockType: " +
-                          lockType);
+              "Index dir '" + indexDir + "' of core '" + name + "' is already locked. " +
+                  "The most likely cause is another Solr server (or another solr core in this server) " +
+                  "also configured to use this directory; other possible causes may be specific to lockType: " +
+                  lockType);
         }
       } finally {
         directoryFactory.release(dir);
@@ -821,7 +819,7 @@ public final class SolrCore implements SolrInfoBean, Closeable {
       SolrIndexWriter writer = null;
       try {
         writer = SolrIndexWriter.create(this, "SolrCore.initIndex", indexDir, getDirectoryFactory(), true,
-                getLatestSchema(), solrConfig.indexConfig, solrDelPolicy, codec);
+            getLatestSchema(), solrConfig.indexConfig, solrDelPolicy, codec);
       } finally {
         IOUtils.closeQuietly(writer);
       }
@@ -929,7 +927,7 @@ public final class SolrCore implements SolrInfoBean, Closeable {
 
   public SolrCore(CoreContainer coreContainer, CoreDescriptor cd, ConfigSet configSet) {
     this(coreContainer, cd, configSet, null,
-            null, null, null, false);
+        null, null, null, false);
   }
 
   public CoreContainer getCoreContainer() {
@@ -1256,8 +1254,8 @@ public final class SolrCore implements SolrInfoBean, Closeable {
         VersionInfo.getAndCheckVersionField(schema);
       } catch (SolrException e) {
         throw new SolrException(ErrorCode.SERVER_ERROR,
-                "Schema will not work with SolrCloud mode: " +
-                        e.getMessage(), e);
+            "Schema will not work with SolrCloud mode: " +
+                e.getMessage(), e);
       }
     }
   }
@@ -1397,8 +1395,8 @@ public final class SolrCore implements SolrInfoBean, Closeable {
       } catch (InterruptedException e) {
         Thread.currentThread().interrupt();
         throw new SolrException(ErrorCode.SERVER_ERROR,
-                "Caught InterruptedException whilst waiting for core " + getName() + " to close: "
-                        + e.getMessage(), e);
+            "Caught InterruptedException whilst waiting for core " + getName() + " to close: "
+                + e.getMessage(), e);
       }
     }
   }
@@ -1472,9 +1470,9 @@ public final class SolrCore implements SolrInfoBean, Closeable {
       log.debug("no updateRequestProcessorChain defined as default, creating implicit default");
       // construct the default chain
       UpdateRequestProcessorFactory[] factories = new UpdateRequestProcessorFactory[]{
-              new LogUpdateProcessorFactory(),
-              new DistributedUpdateProcessorFactory(),
-              new RunUpdateProcessorFactory()
+          new LogUpdateProcessorFactory(),
+          new DistributedUpdateProcessorFactory(),
+          new RunUpdateProcessorFactory()
       };
       def = new UpdateRequestProcessorChain(Arrays.asList(factories), this);
     }
@@ -1482,7 +1480,7 @@ public final class SolrCore implements SolrInfoBean, Closeable {
     map.put("", def);
 
     map.computeIfAbsent(RunUpdateProcessorFactory.PRE_RUN_CHAIN_NAME,
-            k -> new UpdateRequestProcessorChain(Collections.singletonList(new NestedUpdateProcessorFactory()), this));
+        k -> new UpdateRequestProcessorChain(Collections.singletonList(new NestedUpdateProcessorFactory()), this));
 
     return map;
   }
@@ -1498,7 +1496,7 @@ public final class SolrCore implements SolrInfoBean, Closeable {
     UpdateRequestProcessorChain chain = updateProcessorChains.get(name);
     if (chain == null) {
       throw new SolrException(ErrorCode.BAD_REQUEST,
-              "unknown UpdateRequestProcessorChain: " + name);
+          "unknown UpdateRequestProcessorChain: " + name);
     }
     return chain;
   }
@@ -1872,7 +1870,7 @@ public final class SolrCore implements SolrInfoBean, Closeable {
   private final LinkedList<RefCounted<SolrIndexSearcher>> _realtimeSearchers = new LinkedList<>();
 
   final ExecutorService searcherExecutor = ExecutorUtil.newMDCAwareSingleThreadExecutor(
-          new SolrNamedThreadFactory("searcherExecutor"));
+      new SolrNamedThreadFactory("searcherExecutor"));
   private int onDeckSearchers;  // number of searchers preparing
   // Lock ordering: one can acquire the openSearcherLock and then the searcherLock, but not vice-versa.
   private Object searcherLock = new Object();  // the sync object for the searcher
@@ -1947,7 +1945,7 @@ public final class SolrCore implements SolrInfoBean, Closeable {
    * @throws IOException Can throw IOException
    */
   public IndexFingerprint getIndexFingerprint(SolrIndexSearcher searcher, LeafReaderContext ctx, long maxVersion)
-          throws IOException {
+      throws IOException {
     IndexReader.CacheHelper cacheHelper = ctx.reader().getReaderCacheHelper();
     if (cacheHelper == null) {
       if (log.isDebugEnabled()) {
@@ -2141,7 +2139,7 @@ public final class SolrCore implements SolrInfoBean, Closeable {
         final boolean useCaches = !realtime;
         final String newName = realtime ? "realtime" : "main";
         tmp = new SolrIndexSearcher(this, newIndexDir, getLatestSchema(), newName,
-                newReader, true, useCaches, true, directoryFactory);
+            newReader, true, useCaches, true, directoryFactory);
 
       } else {
         // newestSearcher == null at this point
@@ -2152,7 +2150,7 @@ public final class SolrCore implements SolrInfoBean, Closeable {
           // in time on a core reload
           DirectoryReader newReader = newReaderCreator.call();
           tmp = new SolrIndexSearcher(this, newIndexDir, getLatestSchema(),
-                  (realtime ? "realtime" : "main"), newReader, true, !realtime, true, directoryFactory);
+              (realtime ? "realtime" : "main"), newReader, true, !realtime, true, directoryFactory);
         } else {
           RefCounted<IndexWriter> writer = getSolrCoreState().getIndexWriter(this);
           DirectoryReader newReader = null;
@@ -2162,7 +2160,7 @@ public final class SolrCore implements SolrInfoBean, Closeable {
             writer.decref();
           }
           tmp = new SolrIndexSearcher(this, newIndexDir, getLatestSchema(),
-                  (realtime ? "realtime" : "main"), newReader, true, !realtime, true, directoryFactory);
+              (realtime ? "realtime" : "main"), newReader, true, !realtime, true, directoryFactory);
         }
       }
 
@@ -2414,23 +2412,23 @@ public final class SolrCore implements SolrInfoBean, Closeable {
       final RefCounted<SolrIndexSearcher> currSearcherHolderF = currSearcherHolder;
       if (!alreadyRegistered) {
         future = searcherExecutor.submit(
-                () -> {
-                  try {
-                    // registerSearcher will decrement onDeckSearchers and
-                    // do a notify, even if it fails.
-                    registerSearcher(newSearchHolder);
-                  } catch (Throwable e) {
-                    SolrException.log(log, e);
-                    if (e instanceof Error) {
-                      throw (Error) e;
-                    }
-                  } finally {
-                    // we are all done with the old searcher we used
-                    // for warming...
-                    if (currSearcherHolderF != null) currSearcherHolderF.decref();
-                  }
-                  return null;
+            () -> {
+              try {
+                // registerSearcher will decrement onDeckSearchers and
+                // do a notify, even if it fails.
+                registerSearcher(newSearchHolder);
+              } catch (Throwable e) {
+                SolrException.log(log, e);
+                if (e instanceof Error) {
+                  throw (Error) e;
                 }
+              } finally {
+                // we are all done with the old searcher we used
+                // for warming...
+                if (currSearcherHolderF != null) currSearcherHolderF.decref();
+              }
+              return null;
+            }
         );
       }
 
@@ -2591,7 +2589,7 @@ public final class SolrCore implements SolrInfoBean, Closeable {
   public void execute(SolrRequestHandler handler, SolrQueryRequest req, SolrQueryResponse rsp) {
     if (handler == null) {
       String msg = "Null Request Handler '" +
-              req.getParams().get(CommonParams.QT) + "'";
+          req.getParams().get(CommonParams.QT) + "'";
 
       log.warn("{}{}:{}", logid, msg, req);
 
@@ -2712,7 +2710,7 @@ public final class SolrCore implements SolrInfoBean, Closeable {
       EchoParamStyle echoParams = EchoParamStyle.get(ep);
       if (echoParams == null) {
         throw new SolrException(ErrorCode.BAD_REQUEST, "Invalid value '" + ep + "' for " + CommonParams.HEADER_ECHO_PARAMS
-                + " parameter, use '" + EchoParamStyle.EXPLICIT + "' or '" + EchoParamStyle.ALL + "'");
+            + " parameter, use '" + EchoParamStyle.EXPLICIT + "' or '" + EchoParamStyle.ALL + "'");
       }
       if (echoParams == EchoParamStyle.EXPLICIT) {
         responseHeader.add("params", req.getOriginalParams().toNamedList());
@@ -2753,7 +2751,7 @@ public final class SolrCore implements SolrInfoBean, Closeable {
     DEFAULT_RESPONSE_WRITERS = Collections.unmodifiableMap(m);
     try {
       m.put("xlsx",
-              (QueryResponseWriter) Class.forName("org.apache.solr.handler.extraction.XLSXResponseWriter").getConstructor().newInstance());
+          (QueryResponseWriter) Class.forName("org.apache.solr.handler.extraction.XLSXResponseWriter").getConstructor().newInstance());
     } catch (Exception e) {
       //don't worry; solrcell contrib not in class path
     }
@@ -2922,7 +2920,7 @@ public final class SolrCore implements SolrInfoBean, Closeable {
   protected RestManager initRestManager() throws SolrException {
 
     PluginInfo restManagerPluginInfo =
-            getSolrConfig().getPluginInfo(RestManager.class.getName());
+        getSolrConfig().getPluginInfo(RestManager.class.getName());
 
     NamedList<String> initArgs = null;
     RestManager mgr = null;
@@ -2944,7 +2942,7 @@ public final class SolrCore implements SolrInfoBean, Closeable {
 
     String collection = getCoreDescriptor().getCollectionName();
     StorageIO storageIO =
-            ManagedResourceStorage.newStorageIO(collection, resourceLoader, initArgs);
+        ManagedResourceStorage.newStorageIO(collection, resourceLoader, initArgs);
     mgr.init(resourceLoader, initArgs, storageIO);
 
     return mgr;
@@ -3017,7 +3015,7 @@ public final class SolrCore implements SolrInfoBean, Closeable {
               FileUtils.deleteDirectory(desc.getInstanceDir().toFile());
             } catch (IOException e) {
               SolrException.log(log, "Failed to delete instance dir for core:"
-                      + core.getName() + " dir:" + desc.getInstanceDir());
+                  + core.getName() + " dir:" + desc.getInstanceDir());
             }
           }
         }
@@ -3070,9 +3068,9 @@ public final class SolrCore implements SolrInfoBean, Closeable {
     final ZkSolrResourceLoader zkSolrResourceLoader = (ZkSolrResourceLoader) resourceLoader;
     if (zkSolrResourceLoader != null)
       zkSolrResourceLoader.getZkController().registerConfListenerForCore(
-              zkSolrResourceLoader.getConfigSetZkPath(),
-              this,
-              getConfListener(this, zkSolrResourceLoader));
+          zkSolrResourceLoader.getConfigSetZkPath(),
+          this,
+          getConfListener(this, zkSolrResourceLoader));
 
   }
 
@@ -3108,8 +3106,8 @@ public final class SolrCore implements SolrInfoBean, Closeable {
         cfg.refreshRequestParams();
       }
       if (checkStale(zkClient, overlayPath, solrConfigversion) ||
-              checkStale(zkClient, solrConfigPath, overlayVersion) ||
-              checkStale(zkClient, managedSchmaResourcePath, managedSchemaVersion)) {
+          checkStale(zkClient, solrConfigPath, overlayVersion) ||
+          checkStale(zkClient, managedSchmaResourcePath, managedSchemaVersion)) {
         log.info("core reload {}", coreName);
         SolrConfigHandler configHandler = ((SolrConfigHandler) core.getRequestHandler("/config"));
         if (configHandler.getReloadLock().tryLock()) {


[lucene] 41/42: unused imports

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

dweiss pushed a commit to branch jira/solr14155-1
in repository https://gitbox.apache.org/repos/asf/lucene.git

commit 98bff64f123801e27d48a10db84e4a82ad301de3
Author: noblepaul <no...@gmail.com>
AuthorDate: Wed Jan 13 22:07:26 2021 +1100

    unused imports
---
 solr/core/src/test/org/apache/solr/pkg/TestPackages.java | 1 -
 1 file changed, 1 deletion(-)

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 6014507..2e908ef 100644
--- a/solr/core/src/test/org/apache/solr/pkg/TestPackages.java
+++ b/solr/core/src/test/org/apache/solr/pkg/TestPackages.java
@@ -32,7 +32,6 @@ import org.apache.solr.client.solrj.impl.HttpSolrClient;
 import org.apache.solr.client.solrj.request.*;
 import org.apache.solr.client.solrj.request.beans.Package;
 import org.apache.solr.client.solrj.response.QueryResponse;
-import org.apache.solr.client.solrj.response.SimpleSolrResponse;
 import org.apache.solr.client.solrj.util.ClientUtils;
 import org.apache.solr.cloud.MiniSolrCloudCluster;
 import org.apache.solr.cloud.SolrCloudTestCase;


[lucene] 38/42: fix the API to show package version

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

dweiss pushed a commit to branch jira/solr14155-1
in repository https://gitbox.apache.org/repos/asf/lucene.git

commit eeac7dc6497aeca4db74acfbdc2632ca3788be61
Author: noblepaul <no...@gmail.com>
AuthorDate: Wed Jan 13 18:11:03 2021 +1100

    fix the API to show package version
---
 .../org/apache/solr/handler/SolrConfigHandler.java | 25 +++++++++----------
 .../solr/handler/component/SearchHandler.java      | 11 ++++-----
 .../java/org/apache/solr/pkg/PackageListeners.java |  5 +++-
 .../solr/pkg/PackageListeningClassLoader.java      | 28 +++++++++++++---------
 .../org/apache/solr/pkg/PackagePluginHolder.java   |  6 +++--
 5 files changed, 42 insertions(+), 33 deletions(-)

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 0b97896..1356da5 100644
--- a/solr/core/src/java/org/apache/solr/handler/SolrConfigHandler.java
+++ b/solr/core/src/java/org/apache/solr/handler/SolrConfigHandler.java
@@ -36,6 +36,7 @@ import java.util.concurrent.Future;
 import java.util.concurrent.TimeUnit;
 import java.util.concurrent.locks.Lock;
 import java.util.concurrent.locks.ReentrantLock;
+import java.util.function.BiConsumer;
 
 import com.google.common.collect.ImmutableMap;
 import com.google.common.collect.ImmutableSet;
@@ -48,6 +49,7 @@ import org.apache.solr.client.solrj.impl.HttpSolrClient;
 import org.apache.solr.client.solrj.io.stream.expr.Expressible;
 import org.apache.solr.cloud.ZkController;
 import org.apache.solr.cloud.ZkSolrResourceLoader;
+import org.apache.solr.common.MapWriter;
 import org.apache.solr.common.SolrException;
 import org.apache.solr.common.cloud.ClusterState;
 import org.apache.solr.common.cloud.DocCollection;
@@ -70,6 +72,7 @@ import org.apache.solr.core.SolrConfig;
 import org.apache.solr.core.SolrCore;
 import org.apache.solr.core.SolrResourceLoader;
 import org.apache.solr.pkg.PackageListeners;
+import org.apache.solr.pkg.PackageLoader;
 import org.apache.solr.request.LocalSolrQueryRequest;
 import org.apache.solr.request.SolrQueryRequest;
 import org.apache.solr.request.SolrRequestHandler;
@@ -250,25 +253,23 @@ public class SolrConfigHandler extends RequestHandlerBase implements SolrCoreAwa
             String componentName = req.getParams().get("componentName");
             if (componentName != null) {
               @SuppressWarnings({"rawtypes"})
-              Map map = (Map) val.get(parts.get(1));
-              if (map != null) {
-                Object o = map.get(componentName);
-                val.put(parts.get(1), makeMap(componentName, o));
+              Map pluginNameVsPluginInfo = (Map) val.get(parts.get(1));
+              if (pluginNameVsPluginInfo != null) {
+                Object pluginInfo = pluginNameVsPluginInfo.get(componentName);
+                val.put(parts.get(1), makeMap(componentName, pluginInfo));
                 if (req.getParams().getBool("meta", false)) {
                   // meta=true is asking for the package info of the plugin
                   // We go through all the listeners and see if there is one registered for this plugin
                   List<PackageListeners.Listener> listeners = req.getCore().getPackageListeners().getListeners();
                   for (PackageListeners.Listener listener :
                       listeners) {
-                    PluginInfo info = listener.pluginInfo();
-                    if(info == null) continue;
-                    if (info.type.equals(parts.get(1)) && info.name.equals(componentName)) {
-                      if (o instanceof Map) {
-                        @SuppressWarnings({"rawtypes"})
-                        Map m1 = (Map) o;
-                        m1.put("_packageinfo_", listener.getPackageVersion(info.cName));
+                    Map<String, PackageLoader.Package.Version> infos = listener.packageDetails();
+                    if(infos == null || infos.isEmpty()) continue;
+                    infos.forEach((s, mapWriter) -> {
+                      if(s.equals(((Map) pluginInfo).get("class"))) {
+                        ((Map) pluginInfo).put("_packageinfo_", mapWriter);
                       }
-                    }
+                    });
                   }
                 }
               }
diff --git a/solr/core/src/java/org/apache/solr/handler/component/SearchHandler.java b/solr/core/src/java/org/apache/solr/handler/component/SearchHandler.java
index f5c2474..94b5b3e 100644
--- a/solr/core/src/java/org/apache/solr/handler/component/SearchHandler.java
+++ b/solr/core/src/java/org/apache/solr/handler/component/SearchHandler.java
@@ -19,11 +19,7 @@ package org.apache.solr.handler.component;
 import java.io.PrintWriter;
 import java.io.StringWriter;
 import java.lang.invoke.MethodHandles;
-import java.util.ArrayList;
-import java.util.HashSet;
-import java.util.LinkedList;
-import java.util.List;
-import java.util.Set;
+import java.util.*;
 import java.util.concurrent.atomic.AtomicLong;
 
 import org.apache.commons.lang3.StringUtils;
@@ -31,6 +27,7 @@ import org.apache.lucene.index.ExitableDirectoryReader;
 import org.apache.lucene.search.TotalHits;
 import org.apache.solr.client.solrj.SolrServerException;
 import org.apache.solr.cloud.ZkController;
+import org.apache.solr.common.MapWriter;
 import org.apache.solr.common.SolrDocumentList;
 import org.apache.solr.common.SolrException;
 import org.apache.solr.common.params.CommonParams;
@@ -162,8 +159,8 @@ public class SearchHandler extends RequestHandlerBase implements SolrCoreAware,
         }
 
         @Override
-        public PluginInfo pluginInfo() {
-          return null;
+        public Map<String , PackageLoader.Package.Version> packageDetails() {
+          return Collections.emptyMap();
         }
 
         @Override
diff --git a/solr/core/src/java/org/apache/solr/pkg/PackageListeners.java b/solr/core/src/java/org/apache/solr/pkg/PackageListeners.java
index 25c6e4f..2b36b1e 100644
--- a/solr/core/src/java/org/apache/solr/pkg/PackageListeners.java
+++ b/solr/core/src/java/org/apache/solr/pkg/PackageListeners.java
@@ -110,7 +110,10 @@ public class PackageListeners {
     /**Name of the package or null to listen to all package changes */
     String packageName();
 
-    PluginInfo pluginInfo();
+    /** fetch the package versions of class names
+     *
+     */
+    Map<String, PackageLoader.Package.Version> packageDetails();
 
     /**A callback when the package is updated */
     void changed(PackageLoader.Package pkg, Ctx ctx);
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 75deaa1..6e57f44 100644
--- a/solr/core/src/java/org/apache/solr/pkg/PackageListeningClassLoader.java
+++ b/solr/core/src/java/org/apache/solr/pkg/PackageListeningClassLoader.java
@@ -26,9 +26,8 @@ import org.apache.solr.common.cloud.SolrClassLoader;
 import org.apache.solr.core.SolrResourceLoader;
 
 import java.io.IOException;
-import java.util.HashMap;
-import java.util.Map;
-import java.util.Objects;
+import java.util.*;
+import java.util.concurrent.ConcurrentHashMap;
 import java.util.function.Function;
 /**
  * A {@link SolrClassLoader} that is designed to listen to a set of packages.
@@ -41,7 +40,8 @@ public class PackageListeningClassLoader implements SolrClassLoader , PackageLis
     private final Function<String, String> pkgVersionSupplier;
     /** package name and the versions that we are tracking
      */
-    private Map<String ,PackageAPI.PkgVersion> packageVersions =  new HashMap<>(1);
+    private Map<String ,PackageAPI.PkgVersion> packageVersions =  new ConcurrentHashMap<>(1);
+    private Map<String, String> classNameVsPackageName = new ConcurrentHashMap<>();
     private final Runnable onReload;
 
     /**
@@ -57,7 +57,8 @@ public class PackageListeningClassLoader implements SolrClassLoader , PackageLis
         this.fallbackClassLoader = fallbackClassLoader;
         this.pkgVersionSupplier = pkgVersionSupplier;
         this.onReload = () -> {
-            packageVersions = new HashMap<>();
+            packageVersions = new ConcurrentHashMap<>();
+            classNameVsPackageName = new ConcurrentHashMap<>();
             onReload.run();
         };
     }
@@ -70,8 +71,9 @@ public class PackageListeningClassLoader implements SolrClassLoader , PackageLis
             return fallbackClassLoader.newInstance(cname, expectedType, subpackages);
         } else {
             PackageLoader.Package.Version version = findPackageVersion(cName, true);
-            return applyResourceLoaderAware(version, version.getLoader().newInstance(cName.className, expectedType, subpackages));
-
+            T obj = version.getLoader().newInstance(cName.className, expectedType, subpackages);
+            classNameVsPackageName.put(cName.original, cName.pkg);
+            return applyResourceLoaderAware(version, obj);
         }
     }
 
@@ -116,7 +118,9 @@ public class PackageListeningClassLoader implements SolrClassLoader , PackageLis
             return fallbackClassLoader.newInstance(cname, expectedType, subPackages, params, args);
         } else {
             PackageLoader.Package.Version version = findPackageVersion(cName, true);
-            return applyResourceLoaderAware(version, version.getLoader().newInstance(cName.className, expectedType, subPackages, params, args));
+            T obj = version.getLoader().newInstance(cName.className, expectedType, subPackages, params, args);
+            classNameVsPackageName.put(cName.original, cName.pkg);
+            return applyResourceLoaderAware(version, obj);
         }
     }
 
@@ -127,7 +131,9 @@ public class PackageListeningClassLoader implements SolrClassLoader , PackageLis
             return fallbackClassLoader.findClass(cname, expectedType);
         } else {
             PackageLoader.Package.Version version = findPackageVersion(cName, true);
-            return version.getLoader().findClass(cName.className, expectedType);
+            Class<? extends T> klas = version.getLoader().findClass(cName.className, expectedType);
+            classNameVsPackageName.put(cName.original, cName.pkg);
+            return klas;
 
         }
     }
@@ -138,8 +144,8 @@ public class PackageListeningClassLoader implements SolrClassLoader , PackageLis
     }
 
     @Override
-    public PluginInfo pluginInfo() {
-        return null;
+    public Map<String, PackageLoader.Package.Version> packageDetails() {
+        return Collections.emptyMap();
     }
 
     @Override
diff --git a/solr/core/src/java/org/apache/solr/pkg/PackagePluginHolder.java b/solr/core/src/java/org/apache/solr/pkg/PackagePluginHolder.java
index 1ee5cf9..2a07d0c 100644
--- a/solr/core/src/java/org/apache/solr/pkg/PackagePluginHolder.java
+++ b/solr/core/src/java/org/apache/solr/pkg/PackagePluginHolder.java
@@ -20,6 +20,8 @@ package org.apache.solr.pkg;
 import java.io.IOException;
 import java.lang.invoke.MethodHandles;
 import java.util.Collections;
+import java.util.List;
+import java.util.Map;
 
 import org.apache.lucene.util.ResourceLoaderAware;
 import org.apache.solr.common.MapWriter;
@@ -58,8 +60,8 @@ public class PackagePluginHolder<T> extends PluginBag.PluginHolder<T> {
       }
 
       @Override
-      public PluginInfo pluginInfo() {
-        return info;
+      public Map<String, PackageLoader.Package.Version> packageDetails() {
+        return Collections.singletonMap(info.cName.original, pkgVersion);
       }
 
       @Override


[lucene] 32/42: merging with trunk

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

dweiss pushed a commit to branch jira/solr14155-1
in repository https://gitbox.apache.org/repos/asf/lucene.git

commit 6f24116e7182570694f5e701bf1ebec247adaf6d
Merge: ecee497 7a301c7
Author: noblepaul <no...@gmail.com>
AuthorDate: Tue Jan 12 17:28:24 2021 +1100

    merging with trunk

 .dir-locals.el                                     |     3 +
 .git-blame-ignore-revs                             |     6 +
 .github/workflows/ant.yml                          |    32 +
 .github/workflows/docker-test.yml                  |    44 +
 .github/workflows/gradle-precommit.yml             |    18 +-
 .github/workflows/solrj-test.yml                   |    37 +
 .gitignore                                         |    61 +-
 .muse/config.toml                                  |     5 +
 build.gradle                                       |    20 +-
 dev-docs/working-between-major-versions.adoc       |    63 +
 dev-tools/doap/lucene.rdf                          |    14 +
 dev-tools/doap/solr.rdf                            |    14 +
 dev-tools/scripts/LUCENE-3753.patch.hack.pl        |   111 -
 dev-tools/scripts/README.md                        |     2 +-
 dev-tools/scripts/addBackcompatIndexes.py          |     5 +-
 dev-tools/scripts/addVersion.py                    |    24 +-
 dev-tools/scripts/buildAndPushRelease.py           |    50 +-
 dev-tools/scripts/checkJavadocLinks.py             |     4 +-
 dev-tools/scripts/crawl.maven.release.dist.sh      |    68 -
 dev-tools/scripts/gitignore-gen.sh                 |    21 -
 dev-tools/scripts/releaseWizard.py                 |    36 +-
 dev-tools/scripts/releaseWizard.yaml               |   103 +-
 dev-tools/scripts/scriptutil.py                    |    17 +-
 dev-tools/scripts/smokeTestRelease.py              |    27 +-
 dev-tools/scripts/write.stage.maven.build.xml.pl   |   180 -
 .../test-patch/lucene-solr-yetus-personality.sh    |     2 +-
 gradle/ant-compat/artifact-naming.gradle           |    11 -
 gradle/defaults.gradle                             |     3 -
 gradle/documentation/changes-to-html.gradle        |    31 +-
 .../changes-to-html}/ChangesFancyStyle.css         |     0
 .../changes-to-html}/ChangesFixedWidthStyle.css    |     0
 .../changes-to-html}/ChangesSimpleStyle.css        |     0
 .../documentation/changes-to-html}/changes2html.pl |     0
 gradle/documentation/documentation.gradle          |    89 +-
 gradle/documentation/markdown.gradle               |    31 +-
 gradle/documentation/render-javadoc.gradle         |    47 +-
 gradle/generate-defaults.gradle                    |    15 +-
 gradle/generation/javacc.gradle                    |   581 +-
 gradle/generation/jflex.gradle                     |    52 +-
 gradle/generation/kuromoji.gradle                  |   173 +-
 gradle/generation/nori.gradle                      |    85 +
 gradle/generation/snowball.gradle                  |     6 +-
 gradle/generation/snowball.patch                   |    10 +-
 gradle/generation/util.gradle                      |    17 +
 gradle/hacks/gradle-archives.gradle                |    26 +
 gradle/help.gradle                                 |     2 +
 gradle/ide/intellij-idea.gradle                    |    16 -
 gradle/maven/defaults-maven.gradle                 |   213 +-
 gradle/maven/maven-local.gradle                    |    15 +-
 gradle/native/disable-native.gradle                |    82 +
 gradle/releasing.gradle                            |    55 +
 gradle/solr/packaging.gradle                       |     3 +-
 gradle/testing/alternative-jdk-support.gradle      |     1 +
 gradle/testing/defaults-tests.gradle               |     1 +
 gradle/testing/failed-tests-at-end.gradle          |     2 +-
 gradle/testing/randomization.gradle                |     3 +-
 .../randomization/policies/solr-tests.policy       |     2 +-
 gradle/testing/randomization/policies/tests.policy |    10 +-
 gradle/validation/check-broken-links.gradle        |     6 +-
 gradle/validation/check-environment.gradle         |     2 +-
 gradle/validation/error-prone.gradle               |     6 +
 gradle/validation/forbidden-apis/defaults.all.txt  |     4 +
 gradle/validation/git-status.gradle                |    39 +-
 gradle/validation/jar-checks.gradle                |     5 +-
 .../owasp-dependency-check/exclusions.xml          |    45 -
 gradle/validation/precommit.gradle                 |     6 +-
 gradle/validation/spotless.gradle                  |   114 +
 gradle/validation/spotless/asl-header.txt          |    16 +
 gradle/validation/validate-log-calls.gradle        |    27 +-
 gradle/validation/validate-source-patterns.gradle  |   151 +-
 gradle/wrapper/gradle-wrapper.jar                  |   Bin 58910 -> 59203 bytes
 gradle/wrapper/gradle-wrapper.jar.sha256           |     2 +-
 gradle/wrapper/gradle-wrapper.jar.version          |     2 +-
 gradle/wrapper/gradle-wrapper.properties           |     2 +-
 help/ant.txt                                       |     2 +-
 help/docker.txt                                    |    58 +
 help/formatting.txt                                |    20 +
 help/git.txt                                       |    13 +
 help/validateLogCalls.txt                          |     2 +-
 help/workflow.txt                                  |     3 +-
 lucene/CHANGES.txt                                 |   211 +-
 lucene/MIGRATE.md                                  |    58 +
 lucene/NOTICE.txt                                  |     7 +-
 lucene/analysis/README.txt                         |    18 +-
 .../apache/lucene/analysis/ar/ArabicAnalyzer.java  |    90 +-
 .../analysis/ar/ArabicNormalizationFilter.java     |    10 +-
 .../ar/ArabicNormalizationFilterFactory.java       |     7 +-
 .../lucene/analysis/ar/ArabicNormalizer.java       |    77 +-
 .../lucene/analysis/ar/ArabicStemFilter.java       |    24 +-
 .../analysis/ar/ArabicStemFilterFactory.java       |     7 +-
 .../apache/lucene/analysis/ar/ArabicStemmer.java   |    91 +-
 .../apache/lucene/analysis/ar/package-info.java    |     6 +-
 .../lucene/analysis/bg/BulgarianAnalyzer.java      |    76 +-
 .../lucene/analysis/bg/BulgarianStemFilter.java    |    24 +-
 .../analysis/bg/BulgarianStemFilterFactory.java    |    12 +-
 .../lucene/analysis/bg/BulgarianStemmer.java       |    86 +-
 .../apache/lucene/analysis/bg/package-info.java    |     4 +-
 .../apache/lucene/analysis/bn/BengaliAnalyzer.java |    65 +-
 .../analysis/bn/BengaliNormalizationFilter.java    |    25 +-
 .../bn/BengaliNormalizationFilterFactory.java      |    14 +-
 .../lucene/analysis/bn/BengaliNormalizer.java      |    72 +-
 .../lucene/analysis/bn/BengaliStemFilter.java      |    15 +-
 .../analysis/bn/BengaliStemFilterFactory.java      |    16 +-
 .../apache/lucene/analysis/bn/BengaliStemmer.java  |   255 +-
 .../apache/lucene/analysis/bn/package-info.java    |     4 +-
 .../analysis/boost/DelimitedBoostTokenFilter.java  |    14 +-
 .../boost/DelimitedBoostTokenFilterFactory.java    |    16 +-
 .../apache/lucene/analysis/boost/package-info.java |     4 +-
 .../lucene/analysis/br/BrazilianAnalyzer.java      |    72 +-
 .../lucene/analysis/br/BrazilianStemFilter.java    |    31 +-
 .../analysis/br/BrazilianStemFilterFactory.java    |    14 +-
 .../lucene/analysis/br/BrazilianStemmer.java       |  1202 +-
 .../apache/lucene/analysis/br/package-info.java    |     4 +-
 .../apache/lucene/analysis/ca/CatalanAnalyzer.java |    66 +-
 .../apache/lucene/analysis/ca/package-info.java    |     4 +-
 .../lucene/analysis/charfilter/BaseCharFilter.java |    49 +-
 .../charfilter/HTMLStripCharFilterFactory.java     |    11 +-
 .../analysis/charfilter/MappingCharFilter.java     |    26 +-
 .../charfilter/MappingCharFilterFactory.java       |    86 +-
 .../analysis/charfilter/NormalizeCharMap.java      |    46 +-
 .../lucene/analysis/charfilter/package-info.java   |    61 +-
 .../apache/lucene/analysis/cjk/CJKAnalyzer.java    |    35 +-
 .../lucene/analysis/cjk/CJKBigramFilter.java       |   191 +-
 .../analysis/cjk/CJKBigramFilterFactory.java       |    16 +-
 .../lucene/analysis/cjk/CJKWidthCharFilter.java    |   151 +
 .../analysis/cjk/CJKWidthCharFilterFactory.java    |    55 +
 .../apache/lucene/analysis/cjk/CJKWidthFilter.java |    75 +-
 .../lucene/analysis/cjk/CJKWidthFilterFactory.java |    14 +-
 .../apache/lucene/analysis/cjk/package-info.java   |    29 +-
 .../apache/lucene/analysis/ckb/SoraniAnalyzer.java |    57 +-
 .../analysis/ckb/SoraniNormalizationFilter.java    |     9 +-
 .../ckb/SoraniNormalizationFilterFactory.java      |     8 +-
 .../lucene/analysis/ckb/SoraniNormalizer.java      |    28 +-
 .../lucene/analysis/ckb/SoraniStemFilter.java      |    24 +-
 .../analysis/ckb/SoraniStemFilterFactory.java      |     8 +-
 .../apache/lucene/analysis/ckb/SoraniStemmer.java  |    52 +-
 .../apache/lucene/analysis/ckb/package-info.java   |     4 +-
 .../lucene/analysis/classic/ClassicAnalyzer.java   |   108 +
 .../lucene/analysis/classic/ClassicFilter.java     |    75 +
 .../analysis/classic/ClassicFilterFactory.java     |    60 +
 .../lucene/analysis/classic/ClassicTokenizer.java  |   183 +
 .../analysis/classic/ClassicTokenizerFactory.java  |    64 +
 .../analysis/classic/ClassicTokenizerImpl.java     |   703 +
 .../analysis/classic/ClassicTokenizerImpl.jflex    |   127 +
 .../lucene/analysis/classic/package-info.java      |    28 +
 .../analysis/commongrams/CommonGramsFilter.java    |    80 +-
 .../commongrams/CommonGramsFilterFactory.java      |    16 +-
 .../commongrams/CommonGramsQueryFilter.java        |    62 +-
 .../commongrams/CommonGramsQueryFilterFactory.java |    10 +-
 .../lucene/analysis/commongrams/package-info.java  |     4 +-
 .../compound/CompoundWordTokenFilterBase.java      |    78 +-
 .../DictionaryCompoundWordTokenFilter.java         |    89 +-
 .../DictionaryCompoundWordTokenFilterFactory.java  |    28 +-
 .../HyphenationCompoundWordTokenFilter.java        |   118 +-
 .../HyphenationCompoundWordTokenFilterFactory.java |    60 +-
 .../analysis/compound/hyphenation/ByteVector.java  |    31 +-
 .../analysis/compound/hyphenation/CharVector.java  |    33 +-
 .../analysis/compound/hyphenation/Hyphen.java      |    24 +-
 .../analysis/compound/hyphenation/Hyphenation.java |    17 +-
 .../compound/hyphenation/HyphenationTree.java      |   179 +-
 .../compound/hyphenation/PatternConsumer.java      |    25 +-
 .../compound/hyphenation/PatternParser.java        |    67 +-
 .../analysis/compound/hyphenation/TernaryTree.java |   183 +-
 .../compound/hyphenation/package-info.java         |     9 +-
 .../lucene/analysis/compound/package-info.java     |   123 +-
 .../lucene/analysis/core/DecimalDigitFilter.java   |    16 +-
 .../analysis/core/DecimalDigitFilterFactory.java   |    12 +-
 .../lucene/analysis/core/FlattenGraphFilter.java   |   143 +-
 .../analysis/core/FlattenGraphFilterFactory.java   |    11 +-
 .../lucene/analysis/core/KeywordAnalyzer.java      |     8 +-
 .../lucene/analysis/core/KeywordTokenizer.java     |    37 +-
 .../analysis/core/KeywordTokenizerFactory.java     |    31 +-
 .../lucene/analysis/core/LetterTokenizer.java      |    47 +-
 .../analysis/core/LetterTokenizerFactory.java      |    26 +-
 .../lucene/analysis/core/LowerCaseFilter.java      |    13 +-
 .../analysis/core/LowerCaseFilterFactory.java      |    11 +-
 .../lucene/analysis/core/SimpleAnalyzer.java       |    16 +-
 .../apache/lucene/analysis/core/StopAnalyzer.java  |    41 +-
 .../apache/lucene/analysis/core/StopFilter.java    |    20 +-
 .../lucene/analysis/core/StopFilterFactory.java    |    66 +-
 .../lucene/analysis/core/TypeTokenFilter.java      |    24 +-
 .../analysis/core/TypeTokenFilterFactory.java      |    18 +-
 .../analysis/core/UnicodeWhitespaceAnalyzer.java   |    14 +-
 .../analysis/core/UnicodeWhitespaceTokenizer.java  |    37 +-
 .../lucene/analysis/core/UpperCaseFilter.java      |    20 +-
 .../analysis/core/UpperCaseFilterFactory.java      |    21 +-
 .../lucene/analysis/core/WhitespaceAnalyzer.java   |    12 +-
 .../lucene/analysis/core/WhitespaceTokenizer.java  |    38 +-
 .../analysis/core/WhitespaceTokenizerFactory.java  |    28 +-
 .../apache/lucene/analysis/core/package-info.java  |     4 +-
 .../lucene/analysis/custom/CustomAnalyzer.java     |   471 +-
 .../lucene/analysis/custom/package-info.java       |     4 +-
 .../apache/lucene/analysis/cz/CzechAnalyzer.java   |    61 +-
 .../apache/lucene/analysis/cz/CzechStemFilter.java |    24 +-
 .../lucene/analysis/cz/CzechStemFilterFactory.java |    12 +-
 .../apache/lucene/analysis/cz/CzechStemmer.java    |   141 +-
 .../apache/lucene/analysis/cz/package-info.java    |     4 +-
 .../apache/lucene/analysis/da/DanishAnalyzer.java  |    57 +-
 .../apache/lucene/analysis/da/package-info.java    |     4 +-
 .../apache/lucene/analysis/de/GermanAnalyzer.java  |    93 +-
 .../lucene/analysis/de/GermanLightStemFilter.java  |    16 +-
 .../analysis/de/GermanLightStemFilterFactory.java  |    12 +-
 .../lucene/analysis/de/GermanLightStemmer.java     |   125 +-
 .../analysis/de/GermanMinimalStemFilter.java       |    16 +-
 .../de/GermanMinimalStemFilterFactory.java         |    12 +-
 .../lucene/analysis/de/GermanMinimalStemmer.java   |    99 +-
 .../analysis/de/GermanNormalizationFilter.java     |    37 +-
 .../de/GermanNormalizationFilterFactory.java       |    12 +-
 .../lucene/analysis/de/GermanStemFilter.java       |    93 +-
 .../analysis/de/GermanStemFilterFactory.java       |    16 +-
 .../apache/lucene/analysis/de/GermanStemmer.java   |   412 +-
 .../apache/lucene/analysis/de/package-info.java    |     4 +-
 .../apache/lucene/analysis/el/GreekAnalyzer.java   |    66 +-
 .../lucene/analysis/el/GreekLowerCaseFilter.java   |    66 +-
 .../analysis/el/GreekLowerCaseFilterFactory.java   |    14 +-
 .../apache/lucene/analysis/el/GreekStemFilter.java |    33 +-
 .../lucene/analysis/el/GreekStemFilterFactory.java |    14 +-
 .../apache/lucene/analysis/el/GreekStemmer.java    |  1091 +-
 .../apache/lucene/analysis/el/package-info.java    |     4 +-
 .../{standard => email}/ASCIITLD.jflex-macro       |     0
 .../analysis/email/UAX29URLEmailAnalyzer.java      |   105 +
 .../analysis/email/UAX29URLEmailTokenizer.java     |   182 +
 .../email/UAX29URLEmailTokenizerFactory.java       |    64 +
 .../analysis/email/UAX29URLEmailTokenizerImpl.java | 41174 +++++++++++++++++++
 .../email/UAX29URLEmailTokenizerImpl.jflex         |   433 +
 .../apache/lucene/analysis/email/package-info.java |    32 +
 .../apache/lucene/analysis/en/EnglishAnalyzer.java |    61 +-
 .../analysis/en/EnglishMinimalStemFilter.java      |    16 +-
 .../en/EnglishMinimalStemFilterFactory.java        |    14 +-
 .../lucene/analysis/en/EnglishMinimalStemmer.java  |    24 +-
 .../analysis/en/EnglishPossessiveFilter.java       |    20 +-
 .../en/EnglishPossessiveFilterFactory.java         |    14 +-
 .../org/apache/lucene/analysis/en/KStemData1.java  |  1412 +-
 .../org/apache/lucene/analysis/en/KStemData2.java  |  1411 +-
 .../org/apache/lucene/analysis/en/KStemData3.java  |  1411 +-
 .../org/apache/lucene/analysis/en/KStemData4.java  |  1411 +-
 .../org/apache/lucene/analysis/en/KStemData5.java  |  1411 +-
 .../org/apache/lucene/analysis/en/KStemData6.java  |  1411 +-
 .../org/apache/lucene/analysis/en/KStemData7.java  |  1411 +-
 .../org/apache/lucene/analysis/en/KStemData8.java  |  1209 +-
 .../org/apache/lucene/analysis/en/KStemFilter.java |    41 +-
 .../lucene/analysis/en/KStemFilterFactory.java     |    10 +-
 .../org/apache/lucene/analysis/en/KStemmer.java    |  1265 +-
 .../lucene/analysis/en/PorterStemFilter.java       |    62 +-
 .../analysis/en/PorterStemFilterFactory.java       |    11 +-
 .../apache/lucene/analysis/en/PorterStemmer.java   |   500 +-
 .../apache/lucene/analysis/en/package-info.java    |     4 +-
 .../apache/lucene/analysis/es/SpanishAnalyzer.java |    58 +-
 .../lucene/analysis/es/SpanishLightStemFilter.java |    16 +-
 .../analysis/es/SpanishLightStemFilterFactory.java |    14 +-
 .../lucene/analysis/es/SpanishLightStemmer.java    |    92 +-
 .../analysis/es/SpanishMinimalStemFilter.java      |    13 +-
 .../es/SpanishMinimalStemFilterFactory.java        |    11 +-
 .../lucene/analysis/es/SpanishMinimalStemmer.java  |    55 +-
 .../apache/lucene/analysis/es/package-info.java    |     4 +-
 .../lucene/analysis/et/EstonianAnalyzer.java       |   155 +-
 .../apache/lucene/analysis/et/package-info.java    |     4 +-
 .../apache/lucene/analysis/eu/BasqueAnalyzer.java  |    54 +-
 .../apache/lucene/analysis/eu/package-info.java    |     4 +-
 .../apache/lucene/analysis/fa/PersianAnalyzer.java |    77 +-
 .../lucene/analysis/fa/PersianCharFilter.java      |    14 +-
 .../analysis/fa/PersianCharFilterFactory.java      |     9 +-
 .../analysis/fa/PersianNormalizationFilter.java    |    14 +-
 .../fa/PersianNormalizationFilterFactory.java      |    14 +-
 .../lucene/analysis/fa/PersianNormalizer.java      |    53 +-
 .../apache/lucene/analysis/fa/package-info.java    |     4 +-
 .../apache/lucene/analysis/fi/FinnishAnalyzer.java |    57 +-
 .../lucene/analysis/fi/FinnishLightStemFilter.java |    16 +-
 .../analysis/fi/FinnishLightStemFilterFactory.java |    14 +-
 .../lucene/analysis/fi/FinnishLightStemmer.java    |   237 +-
 .../apache/lucene/analysis/fi/package-info.java    |     4 +-
 .../apache/lucene/analysis/fr/FrenchAnalyzer.java  |    99 +-
 .../lucene/analysis/fr/FrenchLightStemFilter.java  |    16 +-
 .../analysis/fr/FrenchLightStemFilterFactory.java  |    12 +-
 .../lucene/analysis/fr/FrenchLightStemmer.java     |   261 +-
 .../analysis/fr/FrenchMinimalStemFilter.java       |    16 +-
 .../fr/FrenchMinimalStemFilterFactory.java         |    14 +-
 .../lucene/analysis/fr/FrenchMinimalStemmer.java   |    66 +-
 .../apache/lucene/analysis/fr/package-info.java    |     4 +-
 .../apache/lucene/analysis/ga/IrishAnalyzer.java   |    79 +-
 .../lucene/analysis/ga/IrishLowerCaseFilter.java   |    22 +-
 .../analysis/ga/IrishLowerCaseFilterFactory.java   |    14 +-
 .../apache/lucene/analysis/ga/package-info.java    |     4 +-
 .../lucene/analysis/gl/GalicianAnalyzer.java       |    57 +-
 .../analysis/gl/GalicianMinimalStemFilter.java     |    16 +-
 .../gl/GalicianMinimalStemFilterFactory.java       |    14 +-
 .../lucene/analysis/gl/GalicianMinimalStemmer.java |    17 +-
 .../lucene/analysis/gl/GalicianStemFilter.java     |    18 +-
 .../analysis/gl/GalicianStemFilterFactory.java     |    14 +-
 .../apache/lucene/analysis/gl/GalicianStemmer.java |    47 +-
 .../apache/lucene/analysis/gl/package-info.java    |     4 +-
 .../apache/lucene/analysis/hi/HindiAnalyzer.java   |    65 +-
 .../analysis/hi/HindiNormalizationFilter.java      |    27 +-
 .../hi/HindiNormalizationFilterFactory.java        |    16 +-
 .../apache/lucene/analysis/hi/HindiNormalizer.java |   271 +-
 .../apache/lucene/analysis/hi/HindiStemFilter.java |    12 +-
 .../lucene/analysis/hi/HindiStemFilterFactory.java |    16 +-
 .../apache/lucene/analysis/hi/HindiStemmer.java    |   166 +-
 .../apache/lucene/analysis/hi/package-info.java    |     4 +-
 .../lucene/analysis/hu/HungarianAnalyzer.java      |    57 +-
 .../analysis/hu/HungarianLightStemFilter.java      |    16 +-
 .../hu/HungarianLightStemFilterFactory.java        |    16 +-
 .../lucene/analysis/hu/HungarianLightStemmer.java  |   252 +-
 .../apache/lucene/analysis/hu/package-info.java    |     4 +-
 .../lucene/analysis/hunspell/Dictionary.java       |   518 +-
 .../analysis/hunspell/HunspellStemFilter.java      |    96 +-
 .../hunspell/HunspellStemFilterFactory.java        |    45 +-
 .../analysis/hunspell/ISO8859_14Decoder.java       |    32 +-
 .../apache/lucene/analysis/hunspell/Stemmer.java   |   329 +-
 .../lucene/analysis/hunspell/package-info.java     |    11 +-
 .../lucene/analysis/hy/ArmenianAnalyzer.java       |    55 +-
 .../apache/lucene/analysis/hy/package-info.java    |     4 +-
 .../lucene/analysis/id/IndonesianAnalyzer.java     |    62 +-
 .../lucene/analysis/id/IndonesianStemFilter.java   |    23 +-
 .../analysis/id/IndonesianStemFilterFactory.java   |    12 +-
 .../lucene/analysis/id/IndonesianStemmer.java      |   130 +-
 .../apache/lucene/analysis/id/package-info.java    |     4 +-
 .../analysis/in/IndicNormalizationFilter.java      |     9 +-
 .../in/IndicNormalizationFilterFactory.java        |    16 +-
 .../apache/lucene/analysis/in/IndicNormalizer.java |   407 +-
 .../apache/lucene/analysis/in/package-info.java    |     4 +-
 .../apache/lucene/analysis/it/ItalianAnalyzer.java |    71 +-
 .../lucene/analysis/it/ItalianLightStemFilter.java |    16 +-
 .../analysis/it/ItalianLightStemFilterFactory.java |    18 +-
 .../lucene/analysis/it/ItalianLightStemmer.java    |   103 +-
 .../apache/lucene/analysis/it/package-info.java    |     4 +-
 .../lucene/analysis/lt/LithuanianAnalyzer.java     |    55 +-
 .../apache/lucene/analysis/lt/package-info.java    |     4 +-
 .../apache/lucene/analysis/lv/LatvianAnalyzer.java |    57 +-
 .../lucene/analysis/lv/LatvianStemFilter.java      |    16 +-
 .../analysis/lv/LatvianStemFilterFactory.java      |    16 +-
 .../apache/lucene/analysis/lv/LatvianStemmer.java  |   155 +-
 .../apache/lucene/analysis/lv/package-info.java    |     4 +-
 .../lucene/analysis/minhash/MinHashFilter.java     |    73 +-
 .../analysis/minhash/MinHashFilterFactory.java     |    19 +-
 .../lucene/analysis/minhash/package-info.java      |     4 +-
 .../analysis/miscellaneous/ASCIIFoldingFilter.java |   134 +-
 .../miscellaneous/ASCIIFoldingFilterFactory.java   |    15 +-
 .../miscellaneous/CapitalizationFilter.java        |    73 +-
 .../miscellaneous/CapitalizationFilterFactory.java |    52 +-
 .../miscellaneous/CodepointCountFilter.java        |    21 +-
 .../miscellaneous/CodepointCountFilterFactory.java |    10 +-
 .../miscellaneous/ConcatenateGraphFilter.java      |   150 +-
 .../ConcatenateGraphFilterFactory.java             |    59 +-
 .../miscellaneous/ConcatenatingTokenStream.java    |    30 +-
 .../miscellaneous/ConditionalTokenFilter.java      |    40 +-
 .../ConditionalTokenFilterFactory.java             |    45 +-
 .../miscellaneous/DateRecognizerFilter.java        |    11 +-
 .../miscellaneous/DateRecognizerFilterFactory.java |    21 +-
 .../DelimitedTermFrequencyTokenFilter.java         |    23 +-
 .../DelimitedTermFrequencyTokenFilterFactory.java  |     8 +-
 .../miscellaneous/DropIfFlaggedFilter.java         |    50 +
 .../miscellaneous/DropIfFlaggedFilterFactory.java  |    66 +
 .../analysis/miscellaneous/EmptyTokenStream.java   |     6 +-
 .../analysis/miscellaneous/FingerprintFilter.java  |    93 +-
 .../miscellaneous/FingerprintFilterFactory.java    |    19 +-
 .../miscellaneous/FixBrokenOffsetsFilter.java      |     3 +-
 .../FixBrokenOffsetsFilterFactory.java             |     6 +-
 .../miscellaneous/HyphenatedWordsFilter.java       |    34 +-
 .../HyphenatedWordsFilterFactory.java              |    13 +-
 .../analysis/miscellaneous/KeepWordFilter.java     |    16 +-
 .../miscellaneous/KeepWordFilterFactory.java       |    15 +-
 .../miscellaneous/KeywordMarkerFilter.java         |    10 +-
 .../miscellaneous/KeywordMarkerFilterFactory.java  |    25 +-
 .../miscellaneous/KeywordRepeatFilter.java         |    20 +-
 .../miscellaneous/KeywordRepeatFilterFactory.java  |    17 +-
 .../analysis/miscellaneous/LengthFilter.java       |    21 +-
 .../miscellaneous/LengthFilterFactory.java         |    11 +-
 .../miscellaneous/LimitTokenCountAnalyzer.java     |    33 +-
 .../miscellaneous/LimitTokenCountFilter.java       |    38 +-
 .../LimitTokenCountFilterFactory.java              |    15 +-
 .../miscellaneous/LimitTokenOffsetFilter.java      |    23 +-
 .../LimitTokenOffsetFilterFactory.java             |    10 +-
 .../miscellaneous/LimitTokenPositionFilter.java    |    43 +-
 .../LimitTokenPositionFilterFactory.java           |    16 +-
 .../miscellaneous/PatternKeywordMarkerFilter.java  |    27 +-
 .../miscellaneous/PerFieldAnalyzerWrapper.java     |    57 +-
 .../miscellaneous/ProtectedTermFilter.java         |    18 +-
 .../miscellaneous/ProtectedTermFilterFactory.java  |    76 +-
 .../miscellaneous/RemoveDuplicatesTokenFilter.java |    23 +-
 .../RemoveDuplicatesTokenFilterFactory.java        |    11 +-
 .../miscellaneous/ScandinavianFoldingFilter.java   |    81 +-
 .../ScandinavianFoldingFilterFactory.java          |     8 +-
 .../ScandinavianNormalizationFilter.java           |    55 +-
 .../ScandinavianNormalizationFilterFactory.java    |     6 +-
 .../miscellaneous/SetKeywordMarkerFilter.java      |    23 +-
 .../miscellaneous/StemmerOverrideFilter.java       |    95 +-
 .../StemmerOverrideFilterFactory.java              |    15 +-
 .../lucene/analysis/miscellaneous/TrimFilter.java  |    23 +-
 .../analysis/miscellaneous/TrimFilterFactory.java  |    12 +-
 .../miscellaneous/TruncateTokenFilter.java         |    16 +-
 .../miscellaneous/TruncateTokenFilterFactory.java  |    14 +-
 .../miscellaneous/TypeAsSynonymFilter.java         |    49 +-
 .../miscellaneous/TypeAsSynonymFilterFactory.java  |    29 +-
 .../miscellaneous/WordDelimiterFilter.java         |   267 +-
 .../miscellaneous/WordDelimiterFilterFactory.java  |   136 +-
 .../miscellaneous/WordDelimiterGraphFilter.java    |   349 +-
 .../WordDelimiterGraphFilterFactory.java           |   139 +-
 .../miscellaneous/WordDelimiterIterator.java       |   194 +-
 .../analysis/miscellaneous/package-info.java       |     6 +-
 .../analysis/ngram/EdgeNGramFilterFactory.java     |     8 +-
 .../analysis/ngram/EdgeNGramTokenFilter.java       |    42 +-
 .../lucene/analysis/ngram/EdgeNGramTokenizer.java  |    12 +-
 .../analysis/ngram/EdgeNGramTokenizerFactory.java  |     9 +-
 .../lucene/analysis/ngram/NGramFilterFactory.java  |     8 +-
 .../lucene/analysis/ngram/NGramTokenFilter.java    |    71 +-
 .../lucene/analysis/ngram/NGramTokenizer.java      |    64 +-
 .../analysis/ngram/NGramTokenizerFactory.java      |    16 +-
 .../apache/lucene/analysis/ngram/package-info.java |     4 +-
 .../apache/lucene/analysis/nl/DutchAnalyzer.java   |    92 +-
 .../apache/lucene/analysis/nl/package-info.java    |     4 +-
 .../lucene/analysis/no/NorwegianAnalyzer.java      |    58 +-
 .../analysis/no/NorwegianLightStemFilter.java      |    33 +-
 .../no/NorwegianLightStemFilterFactory.java        |    20 +-
 .../lucene/analysis/no/NorwegianLightStemmer.java  |   224 +-
 .../analysis/no/NorwegianMinimalStemFilter.java    |    31 +-
 .../no/NorwegianMinimalStemFilterFactory.java      |    20 +-
 .../analysis/no/NorwegianMinimalStemmer.java       |    95 +-
 .../apache/lucene/analysis/no/package-info.java    |     4 +-
 .../analysis/path/PathHierarchyTokenizer.java      |    76 +-
 .../path/PathHierarchyTokenizerFactory.java        |    50 +-
 .../path/ReversePathHierarchyTokenizer.java        |    45 +-
 .../apache/lucene/analysis/path/package-info.java  |     4 +-
 .../pattern/PatternCaptureGroupFilterFactory.java  |    18 +-
 .../pattern/PatternCaptureGroupTokenFilter.java    |    86 +-
 .../analysis/pattern/PatternReplaceCharFilter.java |    49 +-
 .../pattern/PatternReplaceCharFilterFactory.java   |    11 +-
 .../analysis/pattern/PatternReplaceFilter.java     |    36 +-
 .../pattern/PatternReplaceFilterFactory.java       |    12 +-
 .../lucene/analysis/pattern/PatternTokenizer.java  |    61 +-
 .../analysis/pattern/PatternTokenizerFactory.java  |    54 +-
 .../pattern/SimplePatternSplitTokenizer.java       |    43 +-
 .../SimplePatternSplitTokenizerFactory.java        |    47 +-
 .../analysis/pattern/SimplePatternTokenizer.java   |    55 +-
 .../pattern/SimplePatternTokenizerFactory.java     |    42 +-
 .../lucene/analysis/pattern/package-info.java      |     4 +-
 .../lucene/analysis/payloads/AbstractEncoder.java  |     8 +-
 .../payloads/DelimitedPayloadTokenFilter.java      |    24 +-
 .../DelimitedPayloadTokenFilterFactory.java        |    22 +-
 .../lucene/analysis/payloads/FloatEncoder.java     |     8 +-
 .../lucene/analysis/payloads/IdentityEncoder.java  |    14 +-
 .../lucene/analysis/payloads/IntegerEncoder.java   |    13 +-
 .../payloads/NumericPayloadTokenFilter.java        |    13 +-
 .../payloads/NumericPayloadTokenFilterFactory.java |    13 +-
 .../lucene/analysis/payloads/PayloadEncoder.java   |    13 +-
 .../lucene/analysis/payloads/PayloadHelper.java    |    36 +-
 .../payloads/TokenOffsetPayloadTokenFilter.java    |    15 +-
 .../TokenOffsetPayloadTokenFilterFactory.java      |    14 +-
 .../payloads/TypeAsPayloadTokenFilter.java         |    11 +-
 .../payloads/TypeAsPayloadTokenFilterFactory.java  |    14 +-
 .../lucene/analysis/payloads/package-info.java     |     4 +-
 .../lucene/analysis/pt/PortugueseAnalyzer.java     |    58 +-
 .../analysis/pt/PortugueseLightStemFilter.java     |    16 +-
 .../pt/PortugueseLightStemFilterFactory.java       |    14 +-
 .../lucene/analysis/pt/PortugueseLightStemmer.java |   162 +-
 .../analysis/pt/PortugueseMinimalStemFilter.java   |    16 +-
 .../pt/PortugueseMinimalStemFilterFactory.java     |    14 +-
 .../analysis/pt/PortugueseMinimalStemmer.java      |    22 +-
 .../lucene/analysis/pt/PortugueseStemFilter.java   |    18 +-
 .../analysis/pt/PortugueseStemFilterFactory.java   |    16 +-
 .../lucene/analysis/pt/PortugueseStemmer.java      |    65 +-
 .../apache/lucene/analysis/pt/RSLPStemmerBase.java |   262 +-
 .../apache/lucene/analysis/pt/package-info.java    |     4 +-
 .../analysis/query/QueryAutoStopWordAnalyzer.java  |    90 +-
 .../apache/lucene/analysis/query/package-info.java |     4 +-
 .../analysis/reverse/ReverseStringFilter.java      |   106 +-
 .../reverse/ReverseStringFilterFactory.java        |    12 +-
 .../lucene/analysis/reverse/package-info.java      |     4 +-
 .../lucene/analysis/ro/RomanianAnalyzer.java       |    61 +-
 .../apache/lucene/analysis/ro/package-info.java    |     4 +-
 .../apache/lucene/analysis/ru/RussianAnalyzer.java |   159 +-
 .../lucene/analysis/ru/RussianLightStemFilter.java |    16 +-
 .../analysis/ru/RussianLightStemFilterFactory.java |    14 +-
 .../lucene/analysis/ru/RussianLightStemmer.java    |   168 +-
 .../apache/lucene/analysis/ru/package-info.java    |     4 +-
 .../analysis/shingle/FixedShingleFilter.java       |    45 +-
 .../shingle/FixedShingleFilterFactory.java         |     6 +-
 .../analysis/shingle/ShingleAnalyzerWrapper.java   |    52 +-
 .../lucene/analysis/shingle/ShingleFilter.java     |   295 +-
 .../analysis/shingle/ShingleFilterFactory.java     |    24 +-
 .../lucene/analysis/shingle/package-info.java      |     4 +-
 .../lucene/analysis/sinks/TeeSinkTokenFilter.java  |    44 +-
 .../apache/lucene/analysis/sinks/package-info.java |     4 +-
 .../lucene/analysis/snowball/SnowballFilter.java   |    42 +-
 .../snowball/SnowballPorterFilterFactory.java      |    24 +-
 .../lucene/analysis/snowball/package-info.java     |    53 +-
 .../apache/lucene/analysis/sr/SerbianAnalyzer.java |    49 +-
 .../analysis/sr/SerbianNormalizationFilter.java    |   243 +-
 .../sr/SerbianNormalizationFilterFactory.java      |    16 +-
 .../sr/SerbianNormalizationRegularFilter.java      |   228 +-
 .../apache/lucene/analysis/sr/package-info.java    |     4 +-
 .../lucene/analysis/standard/ClassicAnalyzer.java  |   107 -
 .../lucene/analysis/standard/ClassicFilter.java    |    73 -
 .../analysis/standard/ClassicFilterFactory.java    |    60 -
 .../lucene/analysis/standard/ClassicTokenizer.java |   184 -
 .../analysis/standard/ClassicTokenizerFactory.java |    64 -
 .../analysis/standard/ClassicTokenizerImpl.java    |   749 -
 .../analysis/standard/ClassicTokenizerImpl.jflex   |   127 -
 .../standard/StandardTokenizerFactory.java         |    64 -
 .../analysis/standard/UAX29URLEmailAnalyzer.java   |   103 -
 .../analysis/standard/UAX29URLEmailTokenizer.java  |   186 -
 .../standard/UAX29URLEmailTokenizerFactory.java    |    64 -
 .../standard/UAX29URLEmailTokenizerImpl.java       | 41174 -------------------
 .../standard/UAX29URLEmailTokenizerImpl.jflex      |   433 -
 .../apache/lucene/analysis/standard/package.html   |    52 -
 .../apache/lucene/analysis/sv/SwedishAnalyzer.java |    57 +-
 .../lucene/analysis/sv/SwedishLightStemFilter.java |    16 +-
 .../analysis/sv/SwedishLightStemFilterFactory.java |    14 +-
 .../lucene/analysis/sv/SwedishLightStemmer.java    |   112 +-
 .../apache/lucene/analysis/sv/package-info.java    |     4 +-
 .../lucene/analysis/synonym/SolrSynonymParser.java |    79 +-
 .../lucene/analysis/synonym/SynonymFilter.java     |   193 +-
 .../analysis/synonym/SynonymFilterFactory.java     |   118 +-
 .../analysis/synonym/SynonymGraphFilter.java       |   185 +-
 .../synonym/SynonymGraphFilterFactory.java         |   114 +-
 .../apache/lucene/analysis/synonym/SynonymMap.java |   128 +-
 .../analysis/synonym/WordnetSynonymParser.java     |    28 +-
 .../lucene/analysis/synonym/package-info.java      |     4 +-
 .../apache/lucene/analysis/th/ThaiAnalyzer.java    |    44 +-
 .../apache/lucene/analysis/th/ThaiTokenizer.java   |    45 +-
 .../lucene/analysis/th/ThaiTokenizerFactory.java   |    14 +-
 .../apache/lucene/analysis/th/package-info.java    |     4 +-
 .../lucene/analysis/tr/ApostropheFilter.java       |    20 +-
 .../analysis/tr/ApostropheFilterFactory.java       |     8 +-
 .../apache/lucene/analysis/tr/TurkishAnalyzer.java |    54 +-
 .../lucene/analysis/tr/TurkishLowerCaseFilter.java |    74 +-
 .../analysis/tr/TurkishLowerCaseFilterFactory.java |    14 +-
 .../apache/lucene/analysis/tr/package-info.java    |     4 +-
 .../analysis/util/AbstractAnalysisFactory.java     |   369 -
 .../lucene/analysis/util/AnalysisSPILoader.java    |   183 -
 .../lucene/analysis/util/CharArrayIterator.java    |    45 +-
 .../lucene/analysis/util/CharFilterFactory.java    |    99 -
 .../apache/lucene/analysis/util/CharTokenizer.java |   127 +-
 .../analysis/util/ClasspathResourceLoader.java     |    99 -
 .../apache/lucene/analysis/util/ElisionFilter.java |    15 +-
 .../lucene/analysis/util/ElisionFilterFactory.java |    11 +-
 .../analysis/util/FilesystemResourceLoader.java    |    52 +-
 .../lucene/analysis/util/OpenStringBuilder.java    |    55 +-
 .../lucene/analysis/util/ResourceLoader.java       |    44 -
 .../lucene/analysis/util/ResourceLoaderAware.java  |    34 -
 .../lucene/analysis/util/RollingCharBuffer.java    |    46 +-
 .../analysis/util/SegmentingTokenizerBase.java     |    97 +-
 .../apache/lucene/analysis/util/StemmerUtil.java   |    44 +-
 .../lucene/analysis/util/TokenFilterFactory.java   |    98 -
 .../lucene/analysis/util/TokenizerFactory.java     |    96 -
 .../apache/lucene/analysis/util/UnicodeProps.java  |    24 +-
 .../apache/lucene/analysis/util/package-info.java  |     4 +-
 .../analysis/wikipedia/WikipediaTokenizer.java     |   218 +-
 .../wikipedia/WikipediaTokenizerFactory.java       |     8 +-
 .../analysis/wikipedia/WikipediaTokenizerImpl.java |  1444 +-
 .../lucene/analysis/wikipedia/package-info.java    |     4 +-
 .../collation/CollationAttributeFactory.java       |    90 +-
 .../lucene/collation/CollationDocValuesField.java  |    27 +-
 .../lucene/collation/CollationKeyAnalyzer.java     |    84 +-
 .../org/apache/lucene/collation/package-info.java  |   122 +-
 .../tokenattributes/CollatedTermAttributeImpl.java |    10 +-
 .../org/tartarus/snowball/ext/SerbianStemmer.java  |   235 +-
 .../org/tartarus/snowball/ext/YiddishStemmer.java  |  1381 +
 .../org.apache.lucene.analysis.CharFilterFactory   |    20 +
 .../org.apache.lucene.analysis.TokenFilterFactory  |   118 +
 .../org.apache.lucene.analysis.TokenizerFactory    |    28 +
 ...g.apache.lucene.analysis.util.CharFilterFactory |    19 -
 ....apache.lucene.analysis.util.TokenFilterFactory |   117 -
 ...rg.apache.lucene.analysis.util.TokenizerFactory |    29 -
 .../lucene/analysis/ar/TestArabicAnalyzer.java     |    90 +-
 .../lucene/analysis/ar/TestArabicFilters.java      |    61 +-
 .../analysis/ar/TestArabicNormalizationFilter.java |    56 +-
 .../lucene/analysis/ar/TestArabicStemFilter.java   |    98 +-
 .../lucene/analysis/bg/TestBulgarianAnalyzer.java  |    37 +-
 .../bg/TestBulgarianStemFilterFactory.java         |    25 +-
 .../lucene/analysis/bg/TestBulgarianStemmer.java   |   103 +-
 .../lucene/analysis/bn/TestBengaliAnalyzer.java    |    12 +-
 .../lucene/analysis/bn/TestBengaliFilters.java     |    59 +-
 .../lucene/analysis/bn/TestBengaliNormalizer.java  |    40 +-
 .../lucene/analysis/bn/TestBengaliStemmer.java     |    31 +-
 .../boost/DelimitedBoostTokenFilterTest.java       |    22 +-
 .../lucene/analysis/br/TestBrazilianAnalyzer.java  |   211 +-
 .../br/TestBrazilianStemFilterFactory.java         |    25 +-
 .../lucene/analysis/ca/TestCatalanAnalyzer.java    |    21 +-
 .../charfilter/HTMLStripCharFilterTest.java        |   621 +-
 .../charfilter/TestHTMLStripCharFilterFactory.java |    83 +-
 .../analysis/charfilter/TestMappingCharFilter.java |   286 +-
 .../charfilter/TestMappingCharFilterFactory.java   |    54 +-
 .../lucene/analysis/cjk/TestCJKAnalyzer.java       |   476 +-
 .../lucene/analysis/cjk/TestCJKBigramFilter.java   |   287 +-
 .../analysis/cjk/TestCJKBigramFilterFactory.java   |    51 +-
 .../analysis/cjk/TestCJKWidthCharFilter.java       |   122 +
 .../cjk/TestCJKWidthCharFilterFactory.java         |    43 +
 .../lucene/analysis/cjk/TestCJKWidthFilter.java    |    73 +-
 .../analysis/cjk/TestCJKWidthFilterFactory.java    |    21 +-
 .../lucene/analysis/ckb/TestSoraniAnalyzer.java    |    32 +-
 .../ckb/TestSoraniNormalizationFilter.java         |    58 +-
 .../ckb/TestSoraniNormalizationFilterFactory.java  |    23 +-
 .../lucene/analysis/ckb/TestSoraniStemFilter.java  |    68 +-
 .../analysis/ckb/TestSoraniStemFilterFactory.java  |    25 +-
 .../analysis/classic/TestClassicAnalyzer.java      |   358 +
 .../analysis/classic/TestClassicFactories.java     |    77 +
 .../commongrams/CommonGramsFilterTest.java         |   390 +-
 .../commongrams/TestCommonGramsFilterFactory.java  |    85 +-
 .../TestCommonGramsQueryFilterFactory.java         |    94 +-
 .../compound/TestCompoundWordTokenFilter.java      |   557 +-
 ...stDictionaryCompoundWordTokenFilterFactory.java |    41 +-
 ...tHyphenationCompoundWordTokenFilterFactory.java |    80 +-
 .../core/TestAllAnalyzersHaveFactories.java        |   148 +-
 .../apache/lucene/analysis/core/TestAnalyzers.java |   162 +-
 .../lucene/analysis/core/TestBugInSomething.java   |   323 +-
 .../lucene/analysis/core/TestCoreFactories.java    |    69 +
 .../analysis/core/TestDecimalDigitFilter.java      |   121 +-
 .../core/TestDecimalDigitFilterFactory.java        |    29 +-
 .../lucene/analysis/core/TestDuelingAnalyzers.java |   181 +-
 .../apache/lucene/analysis/core/TestFactories.java |    73 +-
 .../analysis/core/TestFlattenGraphFilter.java      |   372 +-
 .../lucene/analysis/core/TestKeywordAnalyzer.java  |    26 +-
 .../lucene/analysis/core/TestKeywordTokenizer.java |    37 +-
 .../lucene/analysis/core/TestRandomChains.java     |   776 +-
 .../lucene/analysis/core/TestStopAnalyzer.java     |    27 +-
 .../analysis/core/TestStopFilterFactory.java       |    65 +-
 .../lucene/analysis/core/TestTypeTokenFilter.java  |    28 +-
 .../analysis/core/TestTypeTokenFilterFactory.java  |    54 +-
 .../core/TestUnicodeWhitespaceTokenizer.java       |    54 +-
 .../analysis/core/TestWhitespaceAnalyzer.java      |    22 +-
 .../lucene/analysis/custom/TestCustomAnalyzer.java |   552 +-
 .../lucene/analysis/cz/TestCzechAnalyzer.java      |    27 +-
 .../analysis/cz/TestCzechStemFilterFactory.java    |    27 +-
 .../lucene/analysis/cz/TestCzechStemmer.java       |   410 +-
 .../lucene/analysis/da/TestDanishAnalyzer.java     |    16 +-
 .../lucene/analysis/de/TestGermanAnalyzer.java     |    25 +-
 .../analysis/de/TestGermanLightStemFilter.java     |    69 +-
 .../de/TestGermanLightStemFilterFactory.java       |    21 +-
 .../analysis/de/TestGermanMinimalStemFilter.java   |    71 +-
 .../de/TestGermanMinimalStemFilterFactory.java     |    23 +-
 .../analysis/de/TestGermanNormalizationFilter.java |    62 +-
 .../de/TestGermanNormalizationFilterFactory.java   |    23 +-
 .../lucene/analysis/de/TestGermanStemFilter.java   |    72 +-
 .../analysis/de/TestGermanStemFilterFactory.java   |    27 +-
 .../lucene/analysis/el/GreekAnalyzerTest.java      |    45 +-
 .../el/TestGreekLowerCaseFilterFactory.java        |    25 +-
 .../analysis/el/TestGreekStemFilterFactory.java    |    21 +-
 .../lucene/analysis/el/TestGreekStemmer.java       |   186 +-
 .../LuceneResourcesWikiPage.html                   |     0
 .../LuceneResourcesWikiPageURLs.txt                |     0
 .../analysis/email/TestUAX29URLEmailAnalyzer.java  |   619 +
 .../analysis/email/TestUAX29URLEmailTokenizer.java |  2426 ++
 .../email/TestUAX29URLEmailTokenizerFactory.java   |   221 +
 ...esses.from.random.text.with.email.addresses.txt |     0
 .../random.text.with.email.addresses.txt           |     0
 .../{standard => email}/random.text.with.urls.txt  |     0
 .../urls.from.random.text.with.urls.txt            |     0
 .../lucene/analysis/en/TestEnglishAnalyzer.java    |    16 +-
 .../analysis/en/TestEnglishMinimalStemFilter.java  |    46 +-
 .../en/TestEnglishMinimalStemFilterFactory.java    |    21 +-
 .../lucene/analysis/en/TestKStemFilterFactory.java |    21 +-
 .../apache/lucene/analysis/en/TestKStemmer.java    |   113 +-
 .../lucene/analysis/en/TestPorterStemFilter.java   |    58 +-
 .../analysis/en/TestPorterStemFilterFactory.java   |    25 +-
 .../lucene/analysis/es/TestSpanishAnalyzer.java    |    16 +-
 .../analysis/es/TestSpanishLightStemFilter.java    |    48 +-
 .../es/TestSpanishLightStemFilterFactory.java      |    23 +-
 .../analysis/es/TestSpanishMinimalStemFilter.java  |    38 +-
 .../es/TestSpanishMinimalStemFilterFactory.java    |    20 +-
 .../lucene/analysis/et/TestEstonianAnalyzer.java   |    69 +-
 .../lucene/analysis/eu/TestBasqueAnalyzer.java     |    18 +-
 .../lucene/analysis/fa/TestPersianAnalyzer.java    |   200 +-
 .../lucene/analysis/fa/TestPersianCharFilter.java  |    34 +-
 .../fa/TestPersianNormalizationFilter.java         |    30 +-
 .../fa/TestPersianNormalizationFilterFactory.java  |    25 +-
 .../lucene/analysis/fi/TestFinnishAnalyzer.java    |    16 +-
 .../analysis/fi/TestFinnishLightStemFilter.java    |    69 +-
 .../fi/TestFinnishLightStemFilterFactory.java      |    23 +-
 .../lucene/analysis/fr/TestFrenchAnalyzer.java     |   142 +-
 .../analysis/fr/TestFrenchLightStemFilter.java     |   147 +-
 .../fr/TestFrenchLightStemFilterFactory.java       |    21 +-
 .../analysis/fr/TestFrenchMinimalStemFilter.java   |    73 +-
 .../fr/TestFrenchMinimalStemFilterFactory.java     |    21 +-
 .../lucene/analysis/ga/TestIrishAnalyzer.java      |    29 +-
 .../analysis/ga/TestIrishLowerCaseFilter.java      |    35 +-
 .../ga/TestIrishLowerCaseFilterFactory.java        |    21 +-
 .../lucene/analysis/gl/TestGalicianAnalyzer.java   |    16 +-
 .../analysis/gl/TestGalicianMinimalStemFilter.java |    69 +-
 .../gl/TestGalicianMinimalStemFilterFactory.java   |    21 +-
 .../lucene/analysis/gl/TestGalicianStemFilter.java |    44 +-
 .../analysis/gl/TestGalicianStemFilterFactory.java |    21 +-
 .../lucene/analysis/hi/TestHindiAnalyzer.java      |    25 +-
 .../lucene/analysis/hi/TestHindiFilters.java       |    59 +-
 .../lucene/analysis/hi/TestHindiNormalizer.java    |    31 +-
 .../lucene/analysis/hi/TestHindiStemmer.java       |    58 +-
 .../lucene/analysis/hu/TestHungarianAnalyzer.java  |    16 +-
 .../analysis/hu/TestHungarianLightStemFilter.java  |    67 +-
 .../hu/TestHungarianLightStemFilterFactory.java    |    21 +-
 .../lucene/analysis/hunspell/StemmerTestBase.java  |    34 +-
 .../lucene/analysis/hunspell/Test64kAffixes.java   |    18 +-
 .../analysis/hunspell/TestAllDictionaries.java     |   308 +-
 .../analysis/hunspell/TestAllDictionaries2.java    |   424 +-
 .../analysis/hunspell/TestAlternateCasing.java     |    35 +-
 .../analysis/hunspell/TestCaseInsensitive.java     |     5 +-
 .../analysis/hunspell/TestCaseSensitive.java       |    41 +-
 .../lucene/analysis/hunspell/TestCircumfix.java    |     5 +-
 .../analysis/hunspell/TestComplexPrefix.java       |     3 +-
 .../lucene/analysis/hunspell/TestCondition.java    |     3 +-
 .../lucene/analysis/hunspell/TestCondition2.java   |     5 +-
 .../apache/lucene/analysis/hunspell/TestConv.java  |     5 +-
 .../lucene/analysis/hunspell/TestDependencies.java |     5 +-
 .../lucene/analysis/hunspell/TestDictionary.java   |   148 +-
 .../lucene/analysis/hunspell/TestDoubleEscape.java |     3 +-
 .../lucene/analysis/hunspell/TestEscaped.java      |     3 +-
 .../lucene/analysis/hunspell/TestFlagLong.java     |     3 +-
 .../lucene/analysis/hunspell/TestFlagNum.java      |     3 +-
 .../lucene/analysis/hunspell/TestFullStrip.java    |     3 +-
 .../lucene/analysis/hunspell/TestHomonyms.java     |     5 +-
 .../analysis/hunspell/TestHunspellStemFilter.java  |    82 +-
 .../hunspell/TestHunspellStemFilterFactory.java    |    30 +-
 .../lucene/analysis/hunspell/TestIgnore.java       |     5 +-
 .../lucene/analysis/hunspell/TestKeepCase.java     |    23 +-
 .../apache/lucene/analysis/hunspell/TestMorph.java |     5 +-
 .../lucene/analysis/hunspell/TestMorphAlias.java   |     9 +-
 .../lucene/analysis/hunspell/TestMorphData.java    |     9 +-
 .../lucene/analysis/hunspell/TestNeedAffix.java    |    15 +-
 .../analysis/hunspell/TestOnlyInCompound.java      |     9 +-
 .../analysis/hunspell/TestOptionalCondition.java   |     3 +-
 .../lucene/analysis/hunspell/TestSpaces.java       |     5 +-
 .../lucene/analysis/hunspell/TestStemmer.java      |     5 +-
 .../hunspell/TestStrangeOvergeneration.java        |     3 +-
 .../lucene/analysis/hunspell/TestTwoFold.java      |     5 +-
 .../lucene/analysis/hunspell/TestTwoSuffixes.java  |     5 +-
 .../lucene/analysis/hunspell/TestZeroAffix.java    |     3 +-
 .../lucene/analysis/hunspell/TestZeroAffix2.java   |     5 +-
 .../lucene/analysis/hy/TestArmenianAnalyzer.java   |    18 +-
 .../lucene/analysis/id/TestIndonesianAnalyzer.java |    16 +-
 .../id/TestIndonesianStemFilterFactory.java        |    37 +-
 .../lucene/analysis/id/TestIndonesianStemmer.java  |    75 +-
 .../lucene/analysis/in/TestIndicNormalizer.java    |    34 +-
 .../lucene/analysis/it/TestItalianAnalyzer.java    |    22 +-
 .../analysis/it/TestItalianLightStemFilter.java    |    48 +-
 .../it/TestItalianLightStemFilterFactory.java      |    21 +-
 .../lucene/analysis/lt/TestLithuanianAnalyzer.java |    18 +-
 .../lucene/analysis/lt/TestLithuanianStemming.java |   773 +-
 .../lucene/analysis/lv/TestLatvianAnalyzer.java    |    16 +-
 .../analysis/lv/TestLatvianStemFilterFactory.java  |    23 +-
 .../lucene/analysis/lv/TestLatvianStemmer.java     |   330 +-
 .../lucene/analysis/minhash/MinHashFilterTest.java |   133 +-
 .../DateRecognizerFilterFactoryTest.java           |    20 +-
 .../miscellaneous/DateRecognizerFilterTest.java    |     9 +-
 .../DelimitedTermFrequencyTokenFilterTest.java     |    11 +-
 .../miscellaneous/TestASCIIFoldingFilter.java      |  3475 +-
 .../TestAsciiFoldingFilterFactory.java             |    18 +-
 .../miscellaneous/TestCapitalizationFilter.java    |   366 +-
 .../TestCapitalizationFilterFactory.java           |   425 +-
 .../miscellaneous/TestCodepointCountFilter.java    |    37 +-
 .../TestCodepointCountFilterFactory.java           |    55 +-
 .../miscellaneous/TestConcatenateGraphFilter.java  |    72 +-
 .../TestConcatenateGraphFilterFactory.java         |    64 +-
 .../TestConcatenatingTokenStream.java              |    73 +-
 .../miscellaneous/TestConditionalTokenFilter.java  |   276 +-
 .../miscellaneous/TestDropIfFlaggedFilter.java     |    70 +
 .../TestDropIfFlaggedFilterFactory.java            |    54 +
 .../miscellaneous/TestEmptyTokenStream.java        |    11 +-
 .../miscellaneous/TestFingerprintFilter.java       |    26 +-
 .../TestFingerprintFilterFactory.java              |    42 +-
 .../miscellaneous/TestFixBrokenOffsetsFilter.java  |     7 +-
 .../miscellaneous/TestHyphenatedWordsFilter.java   |    71 +-
 .../miscellaneous/TestKeepFilterFactory.java       |    30 +-
 .../analysis/miscellaneous/TestKeepWordFilter.java |    49 +-
 .../miscellaneous/TestKeywordMarkerFilter.java     |   122 +-
 .../TestKeywordMarkerFilterFactory.java            |   108 +-
 .../miscellaneous/TestKeywordRepeatFilter.java     |    33 +-
 .../analysis/miscellaneous/TestLengthFilter.java   |    31 +-
 .../miscellaneous/TestLengthFilterFactory.java     |    58 +-
 .../miscellaneous/TestLimitTokenCountAnalyzer.java |    55 +-
 .../miscellaneous/TestLimitTokenCountFilter.java   |     5 +-
 .../TestLimitTokenCountFilterFactory.java          |    56 +-
 .../miscellaneous/TestLimitTokenOffsetFilter.java  |     7 +-
 .../TestLimitTokenOffsetFilterFactory.java         |    54 +-
 .../TestLimitTokenPositionFilter.java              |    91 +-
 .../TestLimitTokenPositionFilterFactory.java       |    75 +-
 .../miscellaneous/TestMiscellaneousFactories.java  |    44 +
 .../miscellaneous/TestPerFieldAnalyzerWrapper.java |   108 +-
 .../miscellaneous/TestProtectedTermFilter.java     |    17 +-
 .../TestProtectedTermFilterFactory.java            |   207 +-
 .../TestRemoveDuplicatesTokenFilter.java           |   191 +-
 .../TestRemoveDuplicatesTokenFilterFactory.java    |    36 +-
 .../TestScandinavianFoldingFilter.java             |    45 +-
 .../TestScandinavianFoldingFilterFactory.java      |    19 +-
 .../TestScandinavianNormalizationFilter.java       |    46 +-
 ...TestScandinavianNormalizationFilterFactory.java |    16 +-
 .../miscellaneous/TestStemmerOverrideFilter.java   |    62 +-
 .../TestStemmerOverrideFilterFactory.java          |    52 +-
 .../analysis/miscellaneous/TestTrimFilter.java     |    52 +-
 .../miscellaneous/TestTrimFilterFactory.java       |    21 +-
 .../miscellaneous/TestTruncateTokenFilter.java     |     8 +-
 .../TestTruncateTokenFilterFactory.java            |    68 +-
 .../miscellaneous/TestTypeAsSynonymFilter.java     |   123 +
 .../TestTypeAsSynonymFilterFactory.java            |    38 +-
 .../miscellaneous/TestWordDelimiterFilter.java     |   651 +-
 .../TestWordDelimiterGraphFilter.java              |  1048 +-
 .../analysis/ngram/EdgeNGramTokenFilterTest.java   |   160 +-
 .../analysis/ngram/EdgeNGramTokenizerTest.java     |   116 +-
 .../analysis/ngram/NGramTokenFilterTest.java       |   224 +-
 .../lucene/analysis/ngram/NGramTokenizerTest.java  |   131 +-
 .../lucene/analysis/ngram/TestNGramFilters.java    |   180 +-
 .../lucene/analysis/nl/TestDutchAnalyzer.java      |   210 +-
 .../lucene/analysis/no/TestNorwegianAnalyzer.java  |    16 +-
 .../analysis/no/TestNorwegianLightStemFilter.java  |    90 +-
 .../no/TestNorwegianLightStemFilterFactory.java    |    23 +-
 .../no/TestNorwegianMinimalStemFilter.java         |    92 +-
 .../no/TestNorwegianMinimalStemFilterFactory.java  |    35 +-
 .../analysis/path/TestPathHierarchyTokenizer.java  |   264 +-
 .../path/TestReversePathHierarchyTokenizer.java    |   219 +-
 .../TestPatternCaptureGroupTokenFilter.java        |   554 +-
 .../pattern/TestPatternReplaceCharFilter.java      |   242 +-
 .../TestPatternReplaceCharFilterFactory.java       |    84 +-
 .../analysis/pattern/TestPatternReplaceFilter.java |   115 +-
 .../pattern/TestPatternReplaceFilterFactory.java   |    34 +-
 .../analysis/pattern/TestPatternTokenizer.java     |   125 +-
 .../pattern/TestPatternTokenizerFactory.java       |    23 +-
 .../pattern/TestSimplePatternSplitTokenizer.java   |   135 +-
 .../pattern/TestSimplePatternTokenizer.java        |    97 +-
 .../payloads/DelimitedPayloadTokenFilterTest.java  |    52 +-
 .../payloads/NumericPayloadTokenFilterTest.java    |    33 +-
 .../TestDelimitedPayloadTokenFilterFactory.java    |    27 +-
 .../TokenOffsetPayloadTokenFilterTest.java         |    16 +-
 .../payloads/TypeAsPayloadTokenFilterTest.java     |    20 +-
 .../lucene/analysis/pt/TestPortugueseAnalyzer.java |    16 +-
 .../analysis/pt/TestPortugueseLightStemFilter.java |   166 +-
 .../pt/TestPortugueseLightStemFilterFactory.java   |    23 +-
 .../pt/TestPortugueseMinimalStemFilter.java        |   120 +-
 .../pt/TestPortugueseMinimalStemFilterFactory.java |    23 +-
 .../analysis/pt/TestPortugueseStemFilter.java      |   120 +-
 .../pt/TestPortugueseStemFilterFactory.java        |    21 +-
 .../query/QueryAutoStopWordAnalyzerTest.java       |    65 +-
 .../analysis/reverse/TestReverseStringFilter.java  |    67 +-
 .../reverse/TestReverseStringFilterFactory.java    |    25 +-
 .../lucene/analysis/ro/TestRomanianAnalyzer.java   |    16 +-
 .../lucene/analysis/ru/TestRussianAnalyzer.java    |    41 +-
 .../analysis/ru/TestRussianLightStemFilter.java    |    69 +-
 .../ru/TestRussianLightStemFilterFactory.java      |    21 +-
 .../analysis/shingle/FixedShingleFilterTest.java   |   362 +-
 .../shingle/ShingleAnalyzerWrapperTest.java        |   551 +-
 .../lucene/analysis/shingle/ShingleFilterTest.java |  2240 +-
 .../analysis/shingle/TestShingleFilterFactory.java |   238 +-
 .../analysis/sinks/TestTeeSinkTokenFilter.java     |    74 +-
 .../lucene/analysis/snowball/TestSnowball.java     |    86 +-
 .../snowball/TestSnowballPorterFilterFactory.java  |    43 +-
 .../analysis/snowball/TestSnowballVocab.java       |    37 +-
 .../apache/lucene/analysis/snowball/languages.txt  |     1 +
 .../lucene/analysis/sr/TestSerbianAnalyzer.java    |    16 +-
 .../sr/TestSerbianNormalizationFilter.java         |    57 +-
 .../sr/TestSerbianNormalizationFilterFactory.java  |    28 +-
 .../sr/TestSerbianNormalizationRegularFilter.java  |    58 +-
 .../analysis/standard/TestClassicAnalyzer.java     |   347 -
 .../analysis/standard/TestStandardFactories.java   |   170 -
 .../standard/TestUAX29URLEmailAnalyzer.java        |   382 -
 .../standard/TestUAX29URLEmailTokenizer.java       |   790 -
 .../TestUAX29URLEmailTokenizerFactory.java         |   180 -
 .../lucene/analysis/sv/TestSwedishAnalyzer.java    |    16 +-
 .../analysis/sv/TestSwedishLightStemFilter.java    |    69 +-
 .../sv/TestSwedishLightStemFilterFactory.java      |    21 +-
 .../synonym/BaseSynonymParserTestCase.java         |    61 +-
 .../analysis/synonym/TestMultiWordSynonyms.java    |    27 +-
 .../analysis/synonym/TestSolrSynonymParser.java    |   232 +-
 .../analysis/synonym/TestSynonymFilterFactory.java |   148 +-
 .../analysis/synonym/TestSynonymGraphFilter.java   |  1330 +-
 .../analysis/synonym/TestSynonymMapFilter.java     |   628 +-
 .../analysis/synonym/TestWordnetSynonymParser.java |    70 +-
 .../lucene/analysis/th/TestThaiAnalyzer.java       |   110 +-
 .../analysis/th/TestThaiTokenizerFactory.java      |    33 +-
 .../lucene/analysis/tr/TestApostropheFilter.java   |     4 +-
 .../analysis/tr/TestApostropheFilterFactory.java   |    32 +-
 .../lucene/analysis/tr/TestTurkishAnalyzer.java    |    13 +-
 .../analysis/tr/TestTurkishLowerCaseFilter.java    |    72 +-
 .../tr/TestTurkishLowerCaseFilterFactory.java      |    27 +-
 .../util/BaseTokenStreamFactoryTestCase.java       |   144 -
 .../analysis/util/StringMockResourceLoader.java    |     4 +-
 .../analysis/util/TestAbstractAnalysisFactory.java |    41 -
 .../analysis/util/TestAnalysisSPILoader.java       |   154 -
 .../analysis/util/TestCharArrayIterator.java       |    46 +-
 .../lucene/analysis/util/TestCharTokenizers.java   |   171 +-
 .../apache/lucene/analysis/util/TestElision.java   |    25 +-
 .../analysis/util/TestElisionFilterFactory.java    |    52 +-
 .../util/TestFilesystemResourceLoader.java         |    61 +-
 .../analysis/util/TestRollingCharBuffer.java       |    17 +-
 .../analysis/util/TestSegmentingTokenizerBase.java |   177 +-
 .../wikipedia/TestWikipediaTokenizerFactory.java   |   173 +-
 .../analysis/wikipedia/WikipediaTokenizerTest.java |   521 +-
 .../collation/TestCollationDocValuesField.java     |    47 +-
 .../lucene/collation/TestCollationKeyAnalyzer.java |    43 +-
 .../analysis/standard/GenerateJflexTLDMacros.java  |   177 +-
 .../analysis/icu/ICUCollationAttributeFactory.java |    80 +
 .../analysis/icu/ICUCollationDocValuesField.java   |    73 +
 .../analysis/icu/ICUCollationKeyAnalyzer.java      |    70 +
 .../lucene/analysis/icu/ICUFoldingFilter.java      |   108 +-
 .../analysis/icu/ICUFoldingFilterFactory.java      |    10 +-
 .../analysis/icu/ICUNormalizer2CharFilter.java     |    33 +-
 .../icu/ICUNormalizer2CharFilterFactory.java       |    40 +-
 .../lucene/analysis/icu/ICUNormalizer2Filter.java  |    47 +-
 .../analysis/icu/ICUNormalizer2FilterFactory.java  |    39 +-
 .../lucene/analysis/icu/ICUTransformFilter.java    |    79 +-
 .../analysis/icu/ICUTransformFilterFactory.java    |    19 +-
 .../apache/lucene/analysis/icu/package-info.java   |     4 +-
 .../icu/segmentation/BreakIteratorWrapper.java     |    19 +-
 .../icu/segmentation/CharArrayIterator.java        |    12 +-
 .../icu/segmentation/CompositeBreakIterator.java   |    71 +-
 .../segmentation/DefaultICUTokenizerConfig.java    |   103 +-
 .../analysis/icu/segmentation/ICUTokenizer.java    |   105 +-
 .../icu/segmentation/ICUTokenizerConfig.java       |    12 +-
 .../icu/segmentation/ICUTokenizerFactory.java      |    93 +-
 .../analysis/icu/segmentation/ScriptIterator.java  |    86 +-
 .../analysis/icu/segmentation/package-info.java    |     4 +-
 .../ICUCollatedTermAttributeImpl.java              |    55 +
 .../icu/tokenattributes/ScriptAttribute.java       |    15 +-
 .../icu/tokenattributes/ScriptAttributeImpl.java   |    26 +-
 .../analysis/icu/tokenattributes/package-info.java |     4 +-
 .../collation/ICUCollationAttributeFactory.java    |    91 -
 .../collation/ICUCollationDocValuesField.java      |    76 -
 .../lucene/collation/ICUCollationKeyAnalyzer.java  |    85 -
 .../java/org/apache/lucene/collation/package.html  |    23 -
 .../ICUCollatedTermAttributeImpl.java              |    56 -
 .../lucene/collation/tokenattributes/package.html  |    23 -
 ...> org.apache.lucene.analysis.CharFilterFactory} |     0
 ... org.apache.lucene.analysis.TokenFilterFactory} |     0
 ...=> org.apache.lucene.analysis.TokenizerFactory} |     0
 .../icu/TestICUCollationDocValuesField.java        |   132 +
 .../analysis/icu/TestICUCollationKeyAnalyzer.java  |    77 +
 .../lucene/analysis/icu/TestICUFoldingFilter.java  |    86 +-
 .../analysis/icu/TestICUFoldingFilterFactory.java  |    28 +-
 .../analysis/icu/TestICUNormalizer2CharFilter.java |   636 +-
 .../icu/TestICUNormalizer2CharFilterFactory.java   |    29 +-
 .../analysis/icu/TestICUNormalizer2Filter.java     |    94 +-
 .../icu/TestICUNormalizer2FilterFactory.java       |    31 +-
 .../analysis/icu/TestICUTransformFilter.java       |    98 +-
 .../icu/TestICUTransformFilterFactory.java         |    40 +-
 .../icu/segmentation/TestCharArrayIterator.java    |    32 +-
 .../icu/segmentation/TestICUTokenizer.java         |   552 +-
 .../icu/segmentation/TestICUTokenizerCJK.java      |   104 +-
 .../icu/segmentation/TestICUTokenizerFactory.java  |   115 +-
 .../icu/segmentation/TestMyanmarSyllable.java      |   116 +-
 .../icu/segmentation/TestWithCJKBigramFilter.java  |   423 +-
 .../collation/TestICUCollationDocValuesField.java  |   126 -
 .../collation/TestICUCollationKeyAnalyzer.java     |    82 -
 .../analysis/icu/GenerateUTR30DataFiles.java       |    81 +-
 .../lucene/analysis/icu/RBBIRuleCompiler.java      |    34 +-
 .../lucene/analysis/ja/GraphvizFormatter.java      |    93 +-
 .../lucene/analysis/ja/JapaneseAnalyzer.java       |    39 +-
 .../lucene/analysis/ja/JapaneseBaseFormFilter.java |    15 +-
 .../analysis/ja/JapaneseBaseFormFilterFactory.java |    10 +-
 .../ja/JapaneseIterationMarkCharFilter.java        |   105 +-
 .../ja/JapaneseIterationMarkCharFilterFactory.java |    17 +-
 .../analysis/ja/JapaneseKatakanaStemFilter.java    |    36 +-
 .../ja/JapaneseKatakanaStemFilterFactory.java      |    18 +-
 .../lucene/analysis/ja/JapaneseNumberFilter.java   |   149 +-
 .../analysis/ja/JapaneseNumberFilterFactory.java   |    15 +-
 .../ja/JapanesePartOfSpeechStopFilter.java         |     9 +-
 .../ja/JapanesePartOfSpeechStopFilterFactory.java  |    36 +-
 .../analysis/ja/JapaneseReadingFormFilter.java     |    14 +-
 .../ja/JapaneseReadingFormFilterFactory.java       |    12 +-
 .../lucene/analysis/ja/JapaneseTokenizer.java      |   795 +-
 .../analysis/ja/JapaneseTokenizerFactory.java      |    75 +-
 .../java/org/apache/lucene/analysis/ja/Token.java  |    90 +-
 .../lucene/analysis/ja/dict/BinaryDictionary.java  |   127 +-
 .../analysis/ja/dict/CharacterDefinition.java      |    44 +-
 .../lucene/analysis/ja/dict/ConnectionCosts.java   |    22 +-
 .../apache/lucene/analysis/ja/dict/Dictionary.java |    35 +-
 .../analysis/ja/dict/TokenInfoDictionary.java      |    27 +-
 .../lucene/analysis/ja/dict/TokenInfoFST.java      |    31 +-
 .../lucene/analysis/ja/dict/UnknownDictionary.java |    32 +-
 .../lucene/analysis/ja/dict/UserDictionary.java    |   117 +-
 .../lucene/analysis/ja/dict/package-info.java      |     4 +-
 .../apache/lucene/analysis/ja/package-info.java    |     4 +-
 .../ja/tokenattributes/BaseFormAttribute.java      |     7 +-
 .../ja/tokenattributes/BaseFormAttributeImpl.java  |    11 +-
 .../ja/tokenattributes/InflectionAttribute.java    |     8 +-
 .../tokenattributes/InflectionAttributeImpl.java   |    16 +-
 .../ja/tokenattributes/PartOfSpeechAttribute.java  |     6 +-
 .../tokenattributes/PartOfSpeechAttributeImpl.java |    17 +-
 .../ja/tokenattributes/ReadingAttribute.java       |     8 +-
 .../ja/tokenattributes/ReadingAttributeImpl.java   |    16 +-
 .../analysis/ja/tokenattributes/package-info.java  |     4 +-
 .../analysis/ja/util/BinaryDictionaryWriter.java   |   115 +-
 .../apache/lucene/analysis/ja/util/CSVUtil.java    |    58 +-
 .../ja/util/CharacterDefinitionWriter.java         |    37 +-
 .../analysis/ja/util/ConnectionCostsBuilder.java   |     6 +-
 .../analysis/ja/util/ConnectionCostsWriter.java    |    23 +-
 .../lucene/analysis/ja/util/DictionaryBuilder.java |    42 +-
 .../lucene/analysis/ja/util/ToStringUtil.java      |    64 +-
 .../ja/util/TokenInfoDictionaryBuilder.java        |    46 +-
 .../ja/util/TokenInfoDictionaryWriter.java         |    10 +-
 .../analysis/ja/util/UnknownDictionaryBuilder.java |    30 +-
 .../analysis/ja/util/UnknownDictionaryWriter.java  |    18 +-
 .../lucene/analysis/ja/util/package-info.java      |     4 +-
 ...> org.apache.lucene.analysis.CharFilterFactory} |     0
 ... org.apache.lucene.analysis.TokenFilterFactory} |     0
 ...=> org.apache.lucene.analysis.TokenizerFactory} |     0
 .../analysis/ja/StringMockResourceLoader.java      |     4 +-
 .../org/apache/lucene/analysis/ja/TestCSVUtil.java |     9 +-
 .../lucene/analysis/ja/TestExtendedMode.java       |    39 +-
 .../apache/lucene/analysis/ja/TestFactories.java   |    73 +-
 .../lucene/analysis/ja/TestJapaneseAnalyzer.java   |   221 +-
 .../analysis/ja/TestJapaneseBaseFormFilter.java    |    80 +-
 .../ja/TestJapaneseBaseFormFilterFactory.java      |    36 +-
 .../ja/TestJapaneseIterationMarkCharFilter.java    |   198 +-
 ...TestJapaneseIterationMarkCharFilterFactory.java |    85 +-
 .../ja/TestJapaneseKatakanaStemFilter.java         |    97 +-
 .../ja/TestJapaneseKatakanaStemFilterFactory.java  |    63 +-
 .../analysis/ja/TestJapaneseNumberFilter.java      |   258 +-
 .../ja/TestJapaneseNumberFilterFactory.java        |    31 +-
 .../TestJapanesePartOfSpeechStopFilterFactory.java |    59 +-
 .../analysis/ja/TestJapaneseReadingFormFilter.java |   137 +-
 .../ja/TestJapaneseReadingFormFilterFactory.java   |    43 +-
 .../lucene/analysis/ja/TestJapaneseTokenizer.java  |   684 +-
 .../analysis/ja/TestJapaneseTokenizerFactory.java  |   147 +-
 .../apache/lucene/analysis/ja/TestSearchMode.java  |    71 +-
 .../analysis/ja/dict/TokenInfoDictionaryTest.java  |    41 +-
 .../analysis/ja/dict/UserDictionaryTest.java       |    37 +-
 .../lucene/analysis/ja/util/TestToStringUtil.java  |   260 +-
 .../analysis/ja/util/UnknownDictionaryTest.java    |    17 +-
 .../analysis/morfologik/MorfologikAnalyzer.java    |    30 +-
 .../analysis/morfologik/MorfologikFilter.java      |    66 +-
 .../morfologik/MorfologikFilterFactory.java        |    49 +-
 .../morfologik/MorphosyntacticTagsAttribute.java   |    20 +-
 .../MorphosyntacticTagsAttributeImpl.java          |    25 +-
 .../lucene/analysis/morfologik/package-info.java   |    15 +-
 .../analysis/uk/UkrainianMorfologikAnalyzer.java   |    60 +-
 .../apache/lucene/analysis/uk/package-info.java    |     4 +-
 ... org.apache.lucene.analysis.TokenFilterFactory} |     0
 .../morfologik/TestMorfologikAnalyzer.java         |   110 +-
 .../morfologik/TestMorfologikFilterFactory.java    |    44 +-
 .../lucene/analysis/uk/TestUkrainianAnalyzer.java  |    59 +-
 .../apache/lucene/analysis/ko/DecompoundToken.java |    20 +-
 .../apache/lucene/analysis/ko/DictionaryToken.java |    37 +-
 .../lucene/analysis/ko/GraphvizFormatter.java      |    95 +-
 .../apache/lucene/analysis/ko/KoreanAnalyzer.java  |    26 +-
 .../lucene/analysis/ko/KoreanNumberFilter.java     |   117 +-
 .../analysis/ko/KoreanNumberFilterFactory.java     |    13 +-
 .../analysis/ko/KoreanPartOfSpeechStopFilter.java  |    57 +-
 .../ko/KoreanPartOfSpeechStopFilterFactory.java    |    19 +-
 .../analysis/ko/KoreanReadingFormFilter.java       |     6 +-
 .../ko/KoreanReadingFormFilterFactory.java         |    10 +-
 .../apache/lucene/analysis/ko/KoreanTokenizer.java |   394 +-
 .../lucene/analysis/ko/KoreanTokenizerFactory.java |    43 +-
 .../java/org/apache/lucene/analysis/ko/POS.java    |   197 +-
 .../java/org/apache/lucene/analysis/ko/Token.java  |    48 +-
 .../lucene/analysis/ko/dict/BinaryDictionary.java  |    70 +-
 .../analysis/ko/dict/CharacterDefinition.java      |    35 +-
 .../lucene/analysis/ko/dict/ConnectionCosts.java   |    20 +-
 .../apache/lucene/analysis/ko/dict/Dictionary.java |    41 +-
 .../analysis/ko/dict/TokenInfoDictionary.java      |    24 +-
 .../lucene/analysis/ko/dict/TokenInfoFST.java      |    21 +-
 .../lucene/analysis/ko/dict/UnknownDictionary.java |     7 +-
 .../lucene/analysis/ko/dict/UserDictionary.java    |    32 +-
 .../lucene/analysis/ko/dict/package-info.java      |     4 +-
 .../apache/lucene/analysis/ko/package-info.java    |     4 +-
 .../ko/tokenattributes/PartOfSpeechAttribute.java  |    21 +-
 .../tokenattributes/PartOfSpeechAttributeImpl.java |    22 +-
 .../ko/tokenattributes/ReadingAttribute.java       |    13 +-
 .../ko/tokenattributes/ReadingAttributeImpl.java   |     5 +-
 .../analysis/ko/tokenattributes/package-info.java  |     4 +-
 .../analysis/ko/util/BinaryDictionaryWriter.java   |    49 +-
 .../apache/lucene/analysis/ko/util/CSVUtil.java    |    46 +-
 .../ko/util/CharacterDefinitionWriter.java         |    36 +-
 .../analysis/ko/util/ConnectionCostsBuilder.java   |     5 +-
 .../analysis/ko/util/ConnectionCostsWriter.java    |    22 +-
 .../lucene/analysis/ko/util/DictionaryBuilder.java |    24 +-
 .../ko/util/TokenInfoDictionaryBuilder.java        |    31 +-
 .../ko/util/TokenInfoDictionaryWriter.java         |     9 +-
 .../analysis/ko/util/UnknownDictionaryBuilder.java |    29 +-
 .../analysis/ko/util/UnknownDictionaryWriter.java  |    15 +-
 .../lucene/analysis/ko/util/package-info.java      |     4 +-
 ... org.apache.lucene.analysis.TokenFilterFactory} |     0
 ...=> org.apache.lucene.analysis.TokenizerFactory} |     0
 .../analysis/ko/StringMockResourceLoader.java      |     4 +-
 .../lucene/analysis/ko/TestKoreanAnalyzer.java     |   102 +-
 .../lucene/analysis/ko/TestKoreanNumberFilter.java |   272 +-
 .../analysis/ko/TestKoreanNumberFilterFactory.java |    28 +-
 .../TestKoreanPartOfSpeechStopFilterFactory.java   |    31 +-
 .../analysis/ko/TestKoreanReadingFormFilter.java   |    50 +-
 .../ko/TestKoreanReadingFormFilterFactory.java     |    29 +-
 .../lucene/analysis/ko/TestKoreanTokenizer.java    |   814 +-
 .../analysis/ko/TestKoreanTokenizerFactory.java    |    85 +-
 .../analysis/ko/dict/TokenInfoDictionaryTest.java  |    39 +-
 .../analysis/ko/dict/UserDictionaryTest.java       |     6 +-
 .../analysis/ko/util/UnknownDictionaryTest.java    |    11 +-
 .../analysis/opennlp/OpenNLPChunkerFilter.java     |    15 +-
 .../opennlp/OpenNLPChunkerFilterFactory.java       |    10 +-
 .../analysis/opennlp/OpenNLPLemmatizerFilter.java  |    38 +-
 .../opennlp/OpenNLPLemmatizerFilterFactory.java    |    24 +-
 .../lucene/analysis/opennlp/OpenNLPPOSFilter.java  |    12 +-
 .../analysis/opennlp/OpenNLPPOSFilterFactory.java  |    10 +-
 .../opennlp/OpenNLPSentenceBreakIterator.java      |    19 +-
 .../lucene/analysis/opennlp/OpenNLPTokenizer.java  |    28 +-
 .../analysis/opennlp/OpenNLPTokenizerFactory.java  |    12 +-
 .../lucene/analysis/opennlp/package-info.java      |     4 +-
 .../analysis/opennlp/tools/NLPChunkerOp.java       |     8 +-
 .../analysis/opennlp/tools/NLPLemmatizerOp.java    |    39 +-
 .../analysis/opennlp/tools/NLPNERTaggerOp.java     |    24 +-
 .../analysis/opennlp/tools/NLPPOSTaggerOp.java     |     6 +-
 .../opennlp/tools/NLPSentenceDetectorOp.java       |     6 +-
 .../analysis/opennlp/tools/NLPTokenizerOp.java     |     4 +-
 .../analysis/opennlp/tools/OpenNLPOpsFactory.java  |    55 +-
 .../analysis/opennlp/tools/package-info.java       |     4 +-
 ... org.apache.lucene.analysis.TokenFilterFactory} |     0
 ...=> org.apache.lucene.analysis.TokenizerFactory} |     0
 .../opennlp/TestOpenNLPChunkerFilterFactory.java   |   101 +-
 .../TestOpenNLPLemmatizerFilterFactory.java        |   334 +-
 .../opennlp/TestOpenNLPPOSFilterFactory.java       |   131 +-
 .../opennlp/TestOpenNLPSentenceBreakIterator.java  |    73 +-
 .../opennlp/TestOpenNLPTokenizerFactory.java       |    97 +-
 .../analysis/phonetic/BeiderMorseFilter.java       |    34 +-
 .../phonetic/BeiderMorseFilterFactory.java         |    23 +-
 .../phonetic/DaitchMokotoffSoundexFilter.java      |     5 +-
 .../DaitchMokotoffSoundexFilterFactory.java        |    19 +-
 .../analysis/phonetic/DoubleMetaphoneFilter.java   |    36 +-
 .../phonetic/DoubleMetaphoneFilterFactory.java     |    14 +-
 .../lucene/analysis/phonetic/PhoneticFilter.java   |    32 +-
 .../analysis/phonetic/PhoneticFilterFactory.java   |    68 +-
 .../lucene/analysis/phonetic/package-info.java     |     4 +-
 lucene/analysis/phonetic/src/java/overview.html    |     2 +-
 ... org.apache.lucene.analysis.TokenFilterFactory} |     0
 .../phonetic/DoubleMetaphoneFilterTest.java        |    73 +-
 .../analysis/phonetic/TestBeiderMorseFilter.java   |   167 +-
 .../phonetic/TestBeiderMorseFilterFactory.java     |    62 +-
 .../phonetic/TestDaitchMokotoffSoundexFilter.java  |    73 +-
 .../TestDaitchMokotoffSoundexFilterFactory.java    |    29 +-
 .../phonetic/TestDoubleMetaphoneFilterFactory.java |    29 +-
 .../analysis/phonetic/TestPhoneticFilter.java      |   185 +-
 .../phonetic/TestPhoneticFilterFactory.java        |   232 +-
 .../lucene/analysis/cn/smart/AnalyzerProfile.java  |    35 +-
 .../apache/lucene/analysis/cn/smart/CharType.java  |    56 +-
 .../analysis/cn/smart/HMMChineseTokenizer.java     |    19 +-
 .../cn/smart/HMMChineseTokenizerFactory.java       |    17 +-
 .../analysis/cn/smart/SmartChineseAnalyzer.java    |    82 +-
 .../apache/lucene/analysis/cn/smart/Utility.java   |   103 +-
 .../lucene/analysis/cn/smart/WordSegmenter.java    |    27 +-
 .../apache/lucene/analysis/cn/smart/WordType.java  |    50 +-
 .../analysis/cn/smart/hhmm/AbstractDictionary.java |    66 +-
 .../lucene/analysis/cn/smart/hhmm/BiSegGraph.java  |    52 +-
 .../analysis/cn/smart/hhmm/BigramDictionary.java   |    59 +-
 .../analysis/cn/smart/hhmm/HHMMSegmenter.java      |    45 +-
 .../lucene/analysis/cn/smart/hhmm/PathNode.java    |    39 +-
 .../lucene/analysis/cn/smart/hhmm/SegGraph.java    |    30 +-
 .../lucene/analysis/cn/smart/hhmm/SegToken.java    |    66 +-
 .../analysis/cn/smart/hhmm/SegTokenFilter.java     |    15 +-
 .../analysis/cn/smart/hhmm/SegTokenPair.java       |    42 +-
 .../analysis/cn/smart/hhmm/WordDictionary.java     |   196 +-
 .../analysis/cn/smart/hhmm/package-info.java       |     1 +
 .../lucene/analysis/cn/smart/package-info.java     |    33 +-
 ...=> org.apache.lucene.analysis.TokenizerFactory} |     0
 .../cn/smart/TestHMMChineseTokenizerFactory.java   |    33 +-
 .../cn/smart/TestSmartChineseAnalyzer.java         |   121 +-
 .../apache/lucene/analysis/pl/PolishAnalyzer.java  |    76 +-
 .../apache/lucene/analysis/pl/package-info.java    |     4 +-
 .../lucene/analysis/stempel/StempelFilter.java     |    32 +-
 .../stempel/StempelPolishStemFilterFactory.java    |     9 +-
 .../lucene/analysis/stempel/StempelStemmer.java    |    45 +-
 .../lucene/analysis/stempel/package-info.java      |     4 +-
 .../stempel/src/java/org/egothor/stemmer/Cell.java |   110 +-
 .../src/java/org/egothor/stemmer/Compile.java      |   159 +-
 .../stempel/src/java/org/egothor/stemmer/Diff.java |   158 +-
 .../src/java/org/egothor/stemmer/DiffIt.java       |   125 +-
 .../src/java/org/egothor/stemmer/Gener.java        |   127 +-
 .../stempel/src/java/org/egothor/stemmer/Lift.java |   135 +-
 .../src/java/org/egothor/stemmer/MultiTrie.java    |   172 +-
 .../src/java/org/egothor/stemmer/MultiTrie2.java   |   179 +-
 .../src/java/org/egothor/stemmer/Optimizer.java    |   156 +-
 .../src/java/org/egothor/stemmer/Optimizer2.java   |   118 +-
 .../src/java/org/egothor/stemmer/Reduce.java       |   133 +-
 .../stempel/src/java/org/egothor/stemmer/Row.java  |   200 +-
 .../stempel/src/java/org/egothor/stemmer/Trie.java |   252 +-
 .../src/java/org/egothor/stemmer/package-info.java |     4 +-
 ... org.apache.lucene.analysis.TokenFilterFactory} |     0
 .../org/apache/lucene/analysis/pl/stopwords.txt    |     2 +-
 .../lucene/analysis/pl/TestPolishAnalyzer.java     |    14 +-
 .../TestStempelPolishStemFilterFactory.java        |    30 +-
 .../src/test/org/egothor/stemmer/TestCompile.java  |   127 +-
 .../src/test/org/egothor/stemmer/TestStemmer.java  |   189 +-
 .../apache/lucene/backward_codecs/Placeholder.java |    23 +
 .../lucene/backward_codecs/lucene50/ForUtil.java   |   238 +
 .../lucene50/Lucene50PostingsFormat.java           |   470 +
 .../lucene50/Lucene50PostingsReader.java           |  1874 +
 .../lucene50/Lucene50ScoreSkipReader.java          |   163 +
 .../lucene50/Lucene50SkipReader.java               |   214 +
 .../lucene50/Lucene50StoredFieldsFormat.java       |   159 +
 .../backward_codecs/lucene50/package-info.java     |    19 +
 .../lucene60/Lucene60PointsFormat.java             |   107 +
 .../lucene60/Lucene60PointsReader.java             |   150 +
 .../backward_codecs/lucene60/package-info.java     |    19 +
 .../lucene70/Lucene70SegmentInfoFormat.java        |   319 +
 .../backward_codecs/lucene70/package-info.java     |    22 +
 .../backward_codecs/lucene80/Lucene80Codec.java    |   138 +
 .../backward_codecs/lucene80/package-info.java     |    19 +
 .../backward_codecs/lucene84/Lucene84Codec.java    |   180 +
 .../backward_codecs/lucene84/package-info.java     |    19 +
 .../backward_codecs/lucene86/Lucene86Codec.java    |   181 +
 .../backward_codecs/lucene86/package-info.java     |    19 +
 .../backward_codecs/lucene87/Lucene87Codec.java    |   193 +
 .../backward_codecs/lucene87/package-info.java     |    19 +
 .../lucene/backward_codecs/package-info.java       |    19 +
 .../java/org/apache/lucene/codecs/Placeholder.java |    23 -
 .../org/apache/lucene/codecs/lucene50/ForUtil.java |   246 -
 .../codecs/lucene50/Lucene50PostingsFormat.java    |   480 -
 .../codecs/lucene50/Lucene50PostingsReader.java    |  1786 -
 .../codecs/lucene50/Lucene50ScoreSkipReader.java   |   159 -
 .../lucene/codecs/lucene50/Lucene50SkipReader.java |   211 -
 .../lucene50/Lucene50StoredFieldsFormat.java       |   152 -
 .../org/apache/lucene/codecs/lucene50/package.html |    25 -
 .../codecs/lucene60/Lucene60PointsFormat.java      |   110 -
 .../codecs/lucene60/Lucene60PointsReader.java      |   146 -
 .../org/apache/lucene/codecs/lucene60/package.html |    25 -
 .../codecs/lucene70/Lucene70SegmentInfoFormat.java |   281 -
 .../lucene/codecs/lucene70/package-info.java       |    22 -
 .../lucene/codecs/lucene80/Lucene80Codec.java      |   131 -
 .../org/apache/lucene/codecs/lucene80/package.html |    25 -
 .../lucene/codecs/lucene84/Lucene84Codec.java      |   178 -
 .../org/apache/lucene/codecs/lucene84/package.html |    25 -
 .../lucene/codecs/lucene86/Lucene86Codec.java      |   178 -
 .../org/apache/lucene/codecs/lucene86/package.html |    25 -
 .../src/java/org/apache/lucene/codecs/package.html |    26 -
 .../services/org.apache.lucene.codecs.Codec        |     7 +-
 .../org.apache.lucene.codecs.PostingsFormat        |     2 +-
 .../lucene50/Lucene50PostingsWriter.java           |   528 +
 .../lucene50/Lucene50RWPostingsFormat.java         |    47 +
 .../lucene50/Lucene50RWStoredFieldsFormat.java     |    55 +
 .../lucene50/Lucene50SkipWriter.java               |   237 +
 .../lucene50/TestBlockPostingsFormat.java          |   130 +
 .../lucene50/TestBlockPostingsFormat2.java         |   133 +
 .../lucene50/TestBlockPostingsFormat3.java         |   488 +
 .../backward_codecs/lucene50/TestForUtil.java      |    95 +
 .../lucene50/TestLucene50StoredFieldsFormat.java   |    28 +
 ...tLucene50StoredFieldsFormatHighCompression.java |    82 +
 ...estLucene50StoredFieldsFormatMergeInstance.java |    26 +
 .../lucene60/Lucene60PointsWriter.java             |   299 +
 .../lucene60/Lucene60RWPointsFormat.java           |    33 +
 .../lucene60/TestLucene60PointsFormat.java         |   378 +
 .../lucene70/Lucene70RWSegmentInfoFormat.java      |   216 +
 .../lucene70/TestLucene70SegmentInfoFormat.java    |    36 +
 .../backward_codecs/lucene84/Lucene84RWCodec.java  |    43 +
 .../backward_codecs/lucene86/Lucene86RWCodec.java  |    42 +
 .../backward_index/TestBackwardsCompatibility.java |  1989 +
 .../backward_index/TestIndexWriterOnOldIndex.java  |    66 +
 .../backward_index/TestManyPointsInOldIndex.java   |    76 +
 .../{index => backward_index}/dvupdates.8.0.0.zip  |   Bin
 .../{index => backward_index}/empty.8.0.0.zip      |   Bin
 .../{index => backward_index}/index.8.0.0-cfs.zip  |   Bin
 .../index.8.0.0-nocfs.zip                          |   Bin
 .../{index => backward_index}/index.8.1.0-cfs.zip  |   Bin
 .../index.8.1.0-nocfs.zip                          |   Bin
 .../{index => backward_index}/index.8.1.1-cfs.zip  |   Bin
 .../index.8.1.1-nocfs.zip                          |   Bin
 .../{index => backward_index}/index.8.2.0-cfs.zip  |   Bin
 .../index.8.2.0-nocfs.zip                          |   Bin
 .../{index => backward_index}/index.8.3.0-cfs.zip  |   Bin
 .../index.8.3.0-nocfs.zip                          |   Bin
 .../{index => backward_index}/index.8.3.1-cfs.zip  |   Bin
 .../index.8.3.1-nocfs.zip                          |   Bin
 .../{index => backward_index}/index.8.4.0-cfs.zip  |   Bin
 .../index.8.4.0-nocfs.zip                          |   Bin
 .../{index => backward_index}/index.8.4.1-cfs.zip  |   Bin
 .../index.8.4.1-nocfs.zip                          |   Bin
 .../{index => backward_index}/index.8.5.0-cfs.zip  |   Bin
 .../index.8.5.0-nocfs.zip                          |   Bin
 .../{index => backward_index}/index.8.5.1-cfs.zip  |   Bin
 .../index.8.5.1-nocfs.zip                          |   Bin
 .../{index => backward_index}/index.8.5.2-cfs.zip  |   Bin
 .../index.8.5.2-nocfs.zip                          |   Bin
 .../{index => backward_index}/index.8.6.0-cfs.zip  |   Bin
 .../index.8.6.0-nocfs.zip                          |   Bin
 .../{index => backward_index}/index.8.6.1-cfs.zip  |   Bin
 .../index.8.6.1-nocfs.zip                          |   Bin
 .../{index => backward_index}/index.8.6.2-cfs.zip  |   Bin
 .../index.8.6.2-nocfs.zip                          |   Bin
 .../lucene/backward_index/index.8.6.3-cfs.zip      |   Bin 0 -> 16419 bytes
 .../lucene/backward_index/index.8.6.3-nocfs.zip    |   Bin 0 -> 16428 bytes
 .../{index => backward_index}/moreterms.8.0.0.zip  |   Bin
 .../{index => backward_index}/sorted.8.0.0.zip     |   Bin
 .../{index => backward_index}/sorted.8.1.0.zip     |   Bin
 .../{index => backward_index}/sorted.8.1.1.zip     |   Bin
 .../{index => backward_index}/sorted.8.2.0.zip     |   Bin
 .../{index => backward_index}/sorted.8.3.0.zip     |   Bin
 .../{index => backward_index}/sorted.8.3.1.zip     |   Bin
 .../{index => backward_index}/sorted.8.4.0.zip     |   Bin
 .../{index => backward_index}/sorted.8.4.1.zip     |   Bin
 .../{index => backward_index}/sorted.8.5.0.zip     |   Bin
 .../{index => backward_index}/sorted.8.5.1.zip     |   Bin
 .../{index => backward_index}/sorted.8.5.2.zip     |   Bin
 .../{index => backward_index}/sorted.8.6.0.zip     |   Bin
 .../{index => backward_index}/sorted.8.6.1.zip     |   Bin
 .../{index => backward_index}/sorted.8.6.2.zip     |   Bin
 .../apache/lucene/backward_index/sorted.8.6.3.zip  |   Bin 0 -> 141031 bytes
 .../unsupported.1.9.0-cfs.zip                      |   Bin
 .../unsupported.1.9.0-nocfs.zip                    |   Bin
 .../unsupported.2.0.0-cfs.zip                      |   Bin
 .../unsupported.2.0.0-nocfs.zip                    |   Bin
 .../unsupported.2.1.0-cfs.zip                      |   Bin
 .../unsupported.2.1.0-nocfs.zip                    |   Bin
 .../unsupported.2.2.0-cfs.zip                      |   Bin
 .../unsupported.2.2.0-nocfs.zip                    |   Bin
 .../unsupported.2.3.0-cfs.zip                      |   Bin
 .../unsupported.2.3.0-nocfs.zip                    |   Bin
 .../unsupported.2.4.0-cfs.zip                      |   Bin
 .../unsupported.2.4.0-nocfs.zip                    |   Bin
 .../unsupported.2.4.1-cfs.zip                      |   Bin
 .../unsupported.2.4.1-nocfs.zip                    |   Bin
 .../unsupported.2.9.0-cfs.zip                      |   Bin
 .../unsupported.2.9.0-nocfs.zip                    |   Bin
 .../unsupported.2.9.1-cfs.zip                      |   Bin
 .../unsupported.2.9.1-nocfs.zip                    |   Bin
 .../unsupported.2.9.2-cfs.zip                      |   Bin
 .../unsupported.2.9.2-nocfs.zip                    |   Bin
 .../unsupported.2.9.3-cfs.zip                      |   Bin
 .../unsupported.2.9.3-nocfs.zip                    |   Bin
 .../unsupported.2.9.4-cfs.zip                      |   Bin
 .../unsupported.2.9.4-nocfs.zip                    |   Bin
 .../unsupported.3.0.0-cfs.zip                      |   Bin
 .../unsupported.3.0.0-nocfs.zip                    |   Bin
 .../unsupported.3.0.1-cfs.zip                      |   Bin
 .../unsupported.3.0.1-nocfs.zip                    |   Bin
 .../unsupported.3.0.2-cfs.zip                      |   Bin
 .../unsupported.3.0.2-nocfs.zip                    |   Bin
 .../unsupported.3.0.3-cfs.zip                      |   Bin
 .../unsupported.3.0.3-nocfs.zip                    |   Bin
 .../unsupported.3.1.0-cfs.zip                      |   Bin
 .../unsupported.3.1.0-nocfs.zip                    |   Bin
 .../unsupported.3.2.0-cfs.zip                      |   Bin
 .../unsupported.3.2.0-nocfs.zip                    |   Bin
 .../unsupported.3.3.0-cfs.zip                      |   Bin
 .../unsupported.3.3.0-nocfs.zip                    |   Bin
 .../unsupported.3.4.0-cfs.zip                      |   Bin
 .../unsupported.3.4.0-nocfs.zip                    |   Bin
 .../unsupported.3.5.0-cfs.zip                      |   Bin
 .../unsupported.3.5.0-nocfs.zip                    |   Bin
 .../unsupported.3.6.0-cfs.zip                      |   Bin
 .../unsupported.3.6.0-nocfs.zip                    |   Bin
 .../unsupported.3.6.1-cfs.zip                      |   Bin
 .../unsupported.3.6.1-nocfs.zip                    |   Bin
 .../unsupported.3.6.2-cfs.zip                      |   Bin
 .../unsupported.3.6.2-nocfs.zip                    |   Bin
 .../unsupported.4.0.0-cfs.zip                      |   Bin
 .../unsupported.4.0.0-nocfs.zip                    |   Bin
 .../unsupported.4.0.0.1-cfs.zip                    |   Bin
 .../unsupported.4.0.0.1-nocfs.zip                  |   Bin
 .../unsupported.4.0.0.2-cfs.zip                    |   Bin
 .../unsupported.4.0.0.2-nocfs.zip                  |   Bin
 .../unsupported.4.1.0-cfs.zip                      |   Bin
 .../unsupported.4.1.0-nocfs.zip                    |   Bin
 .../unsupported.4.10.0-cfs.zip                     |   Bin
 .../unsupported.4.10.0-nocfs.zip                   |   Bin
 .../unsupported.4.10.1-cfs.zip                     |   Bin
 .../unsupported.4.10.1-nocfs.zip                   |   Bin
 .../unsupported.4.10.2-cfs.zip                     |   Bin
 .../unsupported.4.10.2-nocfs.zip                   |   Bin
 .../unsupported.4.10.3-cfs.zip                     |   Bin
 .../unsupported.4.10.3-nocfs.zip                   |   Bin
 .../unsupported.4.10.4-cfs.zip                     |   Bin
 .../unsupported.4.10.4-nocfs.zip                   |   Bin
 .../unsupported.4.2.0-cfs.zip                      |   Bin
 .../unsupported.4.2.0-nocfs.zip                    |   Bin
 .../unsupported.4.2.1-cfs.zip                      |   Bin
 .../unsupported.4.2.1-nocfs.zip                    |   Bin
 .../unsupported.4.3.0-cfs.zip                      |   Bin
 .../unsupported.4.3.0-nocfs.zip                    |   Bin
 .../unsupported.4.3.1-cfs.zip                      |   Bin
 .../unsupported.4.3.1-nocfs.zip                    |   Bin
 .../unsupported.4.4.0-cfs.zip                      |   Bin
 .../unsupported.4.4.0-nocfs.zip                    |   Bin
 .../unsupported.4.5.0-cfs.zip                      |   Bin
 .../unsupported.4.5.0-nocfs.zip                    |   Bin
 .../unsupported.4.5.1-cfs.zip                      |   Bin
 .../unsupported.4.5.1-nocfs.zip                    |   Bin
 .../unsupported.4.6.0-cfs.zip                      |   Bin
 .../unsupported.4.6.0-nocfs.zip                    |   Bin
 .../unsupported.4.6.1-cfs.zip                      |   Bin
 .../unsupported.4.6.1-nocfs.zip                    |   Bin
 .../unsupported.4.7.0-cfs.zip                      |   Bin
 .../unsupported.4.7.0-nocfs.zip                    |   Bin
 .../unsupported.4.7.1-cfs.zip                      |   Bin
 .../unsupported.4.7.1-nocfs.zip                    |   Bin
 .../unsupported.4.7.2-cfs.zip                      |   Bin
 .../unsupported.4.7.2-nocfs.zip                    |   Bin
 .../unsupported.4.8.0-cfs.zip                      |   Bin
 .../unsupported.4.8.0-nocfs.zip                    |   Bin
 .../unsupported.4.8.1-cfs.zip                      |   Bin
 .../unsupported.4.8.1-nocfs.zip                    |   Bin
 .../unsupported.4.9.0-cfs.zip                      |   Bin
 .../unsupported.4.9.0-nocfs.zip                    |   Bin
 .../unsupported.4.9.1-cfs.zip                      |   Bin
 .../unsupported.4.9.1-nocfs.zip                    |   Bin
 .../unsupported.5.0.0-cfs.zip                      |   Bin
 .../unsupported.5.0.0-nocfs.zip                    |   Bin
 .../unsupported.5.0.0.singlesegment-cfs.zip        |   Bin
 .../unsupported.5.0.0.singlesegment-nocfs.zip      |   Bin
 .../unsupported.5.1.0-cfs.zip                      |   Bin
 .../unsupported.5.1.0-nocfs.zip                    |   Bin
 .../unsupported.5.2.0-cfs.zip                      |   Bin
 .../unsupported.5.2.0-nocfs.zip                    |   Bin
 .../unsupported.5.2.1-cfs.zip                      |   Bin
 .../unsupported.5.2.1-nocfs.zip                    |   Bin
 .../unsupported.5.3.0-cfs.zip                      |   Bin
 .../unsupported.5.3.0-nocfs.zip                    |   Bin
 .../unsupported.5.3.1-cfs.zip                      |   Bin
 .../unsupported.5.3.1-nocfs.zip                    |   Bin
 .../unsupported.5.3.2-cfs.zip                      |   Bin
 .../unsupported.5.3.2-nocfs.zip                    |   Bin
 .../unsupported.5.4.0-cfs.zip                      |   Bin
 .../unsupported.5.4.0-nocfs.zip                    |   Bin
 .../unsupported.5.4.1-cfs.zip                      |   Bin
 .../unsupported.5.4.1-nocfs.zip                    |   Bin
 .../unsupported.5.5.0-cfs.zip                      |   Bin
 .../unsupported.5.5.0-nocfs.zip                    |   Bin
 .../unsupported.5.5.1-cfs.zip                      |   Bin
 .../unsupported.5.5.1-nocfs.zip                    |   Bin
 .../unsupported.5.5.2-cfs.zip                      |   Bin
 .../unsupported.5.5.2-nocfs.zip                    |   Bin
 .../unsupported.5.5.3-cfs.zip                      |   Bin
 .../unsupported.5.5.3-nocfs.zip                    |   Bin
 .../unsupported.5.5.4-cfs.zip                      |   Bin
 .../unsupported.5.5.4-nocfs.zip                    |   Bin
 .../unsupported.5.5.5-cfs.zip                      |   Bin
 .../unsupported.5.5.5-nocfs.zip                    |   Bin
 .../unsupported.5x-with-4x-segments-cfs.zip        |   Bin
 .../unsupported.5x-with-4x-segments-nocfs.zip      |   Bin
 .../unsupported.6.0.0-cfs.zip                      |   Bin
 .../unsupported.6.0.0-nocfs.zip                    |   Bin
 .../unsupported.6.0.1-cfs.zip                      |   Bin
 .../unsupported.6.0.1-nocfs.zip                    |   Bin
 .../unsupported.6.1.0-cfs.zip                      |   Bin
 .../unsupported.6.1.0-nocfs.zip                    |   Bin
 .../unsupported.6.2.0-cfs.zip                      |   Bin
 .../unsupported.6.2.0-nocfs.zip                    |   Bin
 .../unsupported.6.2.1-cfs.zip                      |   Bin
 .../unsupported.6.2.1-nocfs.zip                    |   Bin
 .../unsupported.6.3.0-cfs.zip                      |   Bin
 .../unsupported.6.3.0-nocfs.zip                    |   Bin
 .../unsupported.6.4.0-cfs.zip                      |   Bin
 .../unsupported.6.4.0-nocfs.zip                    |   Bin
 .../unsupported.6.4.1-cfs.zip                      |   Bin
 .../unsupported.6.4.1-nocfs.zip                    |   Bin
 .../unsupported.6.4.2-cfs.zip                      |   Bin
 .../unsupported.6.4.2-nocfs.zip                    |   Bin
 .../unsupported.6.5.0-cfs.zip                      |   Bin
 .../unsupported.6.5.0-nocfs.zip                    |   Bin
 .../unsupported.6.5.1-cfs.zip                      |   Bin
 .../unsupported.6.5.1-nocfs.zip                    |   Bin
 .../unsupported.6.6.0-cfs.zip                      |   Bin
 .../unsupported.6.6.0-nocfs.zip                    |   Bin
 .../unsupported.6.6.1-cfs.zip                      |   Bin
 .../unsupported.6.6.1-nocfs.zip                    |   Bin
 .../unsupported.6.6.2-cfs.zip                      |   Bin
 .../unsupported.6.6.2-nocfs.zip                    |   Bin
 .../unsupported.6.6.3-cfs.zip                      |   Bin
 .../unsupported.6.6.3-nocfs.zip                    |   Bin
 .../unsupported.6.6.4-cfs.zip                      |   Bin
 .../unsupported.6.6.4-nocfs.zip                    |   Bin
 .../unsupported.6.6.5-cfs.zip                      |   Bin
 .../unsupported.6.6.5-nocfs.zip                    |   Bin
 .../unsupported.6.6.6-cfs.zip                      |   Bin
 .../unsupported.6.6.6-nocfs.zip                    |   Bin
 .../unsupported.7.0.0-cfs.zip                      |   Bin
 .../unsupported.7.0.0-nocfs.zip                    |   Bin
 .../unsupported.7.0.1-cfs.zip                      |   Bin
 .../unsupported.7.0.1-nocfs.zip                    |   Bin
 .../unsupported.7.1.0-cfs.zip                      |   Bin
 .../unsupported.7.1.0-nocfs.zip                    |   Bin
 .../unsupported.7.2.0-cfs.zip                      |   Bin
 .../unsupported.7.2.0-nocfs.zip                    |   Bin
 .../unsupported.7.2.1-cfs.zip                      |   Bin
 .../unsupported.7.2.1-nocfs.zip                    |   Bin
 .../unsupported.7.3.0-cfs.zip                      |   Bin
 .../unsupported.7.3.0-nocfs.zip                    |   Bin
 .../unsupported.7.3.1-cfs.zip                      |   Bin
 .../unsupported.7.3.1-nocfs.zip                    |   Bin
 .../unsupported.7.4.0-cfs.zip                      |   Bin
 .../unsupported.7.4.0-nocfs.zip                    |   Bin
 .../unsupported.7.5.0-cfs.zip                      |   Bin
 .../unsupported.7.5.0-nocfs.zip                    |   Bin
 .../unsupported.7.6.0-cfs.zip                      |   Bin
 .../unsupported.7.6.0-nocfs.zip                    |   Bin
 .../unsupported.7.7.0-cfs.zip                      |   Bin
 .../unsupported.7.7.0-nocfs.zip                    |   Bin
 .../unsupported.7.7.1-cfs.zip                      |   Bin
 .../unsupported.7.7.1-nocfs.zip                    |   Bin
 .../unsupported.7.7.2-cfs.zip                      |   Bin
 .../unsupported.7.7.2-nocfs.zip                    |   Bin
 .../unsupported.7.7.3-cfs.zip                      |   Bin
 .../unsupported.7.7.3-nocfs.zip                    |   Bin
 .../unsupported.dvupdates.7.0.0.zip                |   Bin
 .../unsupported.empty.7.0.0.zip                    |   Bin
 .../unsupported.moreterms.7.0.0.zip                |   Bin
 .../unsupported.sorted-invalid.7.5.0.zip           |   Bin
 .../unsupported.sorted.7.0.0.zip                   |   Bin
 .../unsupported.sorted.7.0.1.zip                   |   Bin
 .../unsupported.sorted.7.1.0.zip                   |   Bin
 .../unsupported.sorted.7.2.0.zip                   |   Bin
 .../unsupported.sorted.7.2.1.zip                   |   Bin
 .../unsupported.sorted.7.3.0.zip                   |   Bin
 .../unsupported.sorted.7.3.1.zip                   |   Bin
 .../unsupported.sorted.7.4.0.zip                   |   Bin
 .../unsupported.sorted.7.5.0.zip                   |   Bin
 .../unsupported.sorted.7.6.0.zip                   |   Bin
 .../unsupported.sorted.7.7.3.zip                   |   Bin
 .../codecs/lucene50/Lucene50PostingsWriter.java    |   507 -
 .../codecs/lucene50/Lucene50RWPostingsFormat.java  |    47 -
 .../lucene50/Lucene50RWStoredFieldsFormat.java     |    51 -
 .../lucene/codecs/lucene50/Lucene50SkipWriter.java |   224 -
 .../codecs/lucene50/TestBlockPostingsFormat.java   |   132 -
 .../codecs/lucene50/TestBlockPostingsFormat2.java  |   135 -
 .../codecs/lucene50/TestBlockPostingsFormat3.java  |   463 -
 .../apache/lucene/codecs/lucene50/TestForUtil.java |    96 -
 .../lucene50/TestLucene50StoredFieldsFormat.java   |    29 -
 ...tLucene50StoredFieldsFormatHighCompression.java |    80 -
 ...estLucene50StoredFieldsFormatMergeInstance.java |    29 -
 .../codecs/lucene60/Lucene60PointsWriter.java      |   267 -
 .../codecs/lucene60/Lucene60RWPointsFormat.java    |    35 -
 .../codecs/lucene60/TestLucene60PointsFormat.java  |   354 -
 .../lucene70/Lucene70RWSegmentInfoFormat.java      |   204 -
 .../lucene70/TestLucene70SegmentInfoFormat.java    |    36 -
 .../lucene/codecs/lucene84/Lucene84RWCodec.java    |    46 -
 .../lucene/codecs/lucene86/Lucene86RWCodec.java    |    45 -
 .../lucene/index/TestBackwardsCompatibility.java   |  1807 -
 .../lucene/index/TestIndexWriterOnOldIndex.java    |    56 -
 .../lucene/index/TestManyPointsInOldIndex.java     |    73 -
 .../org/apache/lucene/benchmark/Constants.java     |    16 +-
 .../apache/lucene/benchmark/byTask/Benchmark.java  |    68 +-
 .../lucene/benchmark/byTask/PerfRunData.java       |   243 +-
 .../benchmark/byTask/feeds/AbstractQueryMaker.java |    24 +-
 .../benchmark/byTask/feeds/ContentItemsSource.java |   147 +-
 .../benchmark/byTask/feeds/ContentSource.java      |    24 +-
 .../benchmark/byTask/feeds/DemoHTMLParser.java     |   212 +-
 .../benchmark/byTask/feeds/DirContentSource.java   |    63 +-
 .../lucene/benchmark/byTask/feeds/DocData.java     |    16 +-
 .../lucene/benchmark/byTask/feeds/DocMaker.java    |   176 +-
 .../byTask/feeds/EnwikiContentSource.java          |    95 +-
 .../benchmark/byTask/feeds/EnwikiQueryMaker.java   |   157 +-
 .../lucene/benchmark/byTask/feeds/FacetSource.java |    15 +-
 .../byTask/feeds/FileBasedQueryMaker.java          |    57 +-
 .../benchmark/byTask/feeds/GeonamesLineParser.java |    13 +-
 .../lucene/benchmark/byTask/feeds/HTMLParser.java  |    19 +-
 .../benchmark/byTask/feeds/LineDocSource.java      |   160 +-
 .../byTask/feeds/LongToEnglishContentSource.java   |    28 +-
 .../byTask/feeds/LongToEnglishQueryMaker.java      |    17 +-
 .../byTask/feeds/NoMoreDataException.java          |    11 +-
 .../lucene/benchmark/byTask/feeds/QueryMaker.java  |    27 +-
 .../benchmark/byTask/feeds/RandomFacetSource.java  |    38 +-
 .../byTask/feeds/ReutersContentSource.java         |    34 +-
 .../benchmark/byTask/feeds/ReutersQueryMaker.java  |    97 +-
 .../benchmark/byTask/feeds/SimpleQueryMaker.java   |    36 +-
 .../byTask/feeds/SimpleSloppyPhraseQueryMaker.java |    21 +-
 .../benchmark/byTask/feeds/SingleDocSource.java    |    42 +-
 .../byTask/feeds/SortableSingleDocSource.java      |   272 +-
 .../benchmark/byTask/feeds/SpatialDocMaker.java    |   155 +-
 .../byTask/feeds/SpatialFileQueryMaker.java        |    32 +-
 .../benchmark/byTask/feeds/TrecContentSource.java  |   134 +-
 .../benchmark/byTask/feeds/TrecDocParser.java      |   110 +-
 .../benchmark/byTask/feeds/TrecFBISParser.java     |    25 +-
 .../benchmark/byTask/feeds/TrecFR94Parser.java     |    34 +-
 .../benchmark/byTask/feeds/TrecFTParser.java       |    19 +-
 .../benchmark/byTask/feeds/TrecGov2Parser.java     |    17 +-
 .../benchmark/byTask/feeds/TrecLATimesParser.java  |    33 +-
 .../benchmark/byTask/feeds/TrecParserByPath.java   |    16 +-
 .../benchmark/byTask/feeds/package-info.java       |     4 +-
 .../lucene/benchmark/byTask/package-info.java      |   972 +-
 .../benchmark/byTask/programmatic/Sample.java      |    53 +-
 .../byTask/programmatic/package-info.java          |     4 +-
 .../lucene/benchmark/byTask/stats/Points.java      |    46 +-
 .../lucene/benchmark/byTask/stats/Report.java      |    23 +-
 .../lucene/benchmark/byTask/stats/TaskStats.java   |    99 +-
 .../benchmark/byTask/stats/package-info.java       |     4 +-
 .../lucene/benchmark/byTask/tasks/AddDocTask.java  |    24 +-
 .../benchmark/byTask/tasks/AddFacetedDocTask.java  |    35 +-
 .../benchmark/byTask/tasks/AddIndexesTask.java     |    41 +-
 .../byTask/tasks/AnalyzerFactoryTask.java          |   531 +-
 .../benchmark/byTask/tasks/ClearStatsTask.java     |     6 +-
 .../benchmark/byTask/tasks/CloseIndexTask.java     |     8 +-
 .../benchmark/byTask/tasks/CloseReaderTask.java    |    12 +-
 .../byTask/tasks/CloseTaxonomyIndexTask.java       |     7 +-
 .../byTask/tasks/CloseTaxonomyReaderTask.java      |    11 +-
 .../benchmark/byTask/tasks/CommitIndexTask.java    |    17 +-
 .../byTask/tasks/CommitTaxonomyIndexTask.java      |     8 +-
 .../byTask/tasks/ConsumeContentSourceTask.java     |     6 +-
 .../benchmark/byTask/tasks/CreateIndexTask.java    |   119 +-
 .../byTask/tasks/CreateTaxonomyIndexTask.java      |    13 +-
 .../benchmark/byTask/tasks/ForceMergeTask.java     |     9 +-
 .../byTask/tasks/NearRealtimeReaderTask.java       |    30 +-
 .../benchmark/byTask/tasks/NewAnalyzerTask.java    |    69 +-
 .../byTask/tasks/NewCollationAnalyzerTask.java     |    64 +-
 .../benchmark/byTask/tasks/NewLocaleTask.java      |    54 +-
 .../benchmark/byTask/tasks/NewRoundTask.java       |     6 +-
 .../benchmark/byTask/tasks/OpenIndexTask.java      |    27 +-
 .../benchmark/byTask/tasks/OpenReaderTask.java     |    16 +-
 .../byTask/tasks/OpenTaxonomyIndexTask.java        |    10 +-
 .../byTask/tasks/OpenTaxonomyReaderTask.java       |     7 +-
 .../lucene/benchmark/byTask/tasks/PerfTask.java    |   164 +-
 .../benchmark/byTask/tasks/PrintReaderTask.java    |    20 +-
 .../lucene/benchmark/byTask/tasks/ReadTask.java    |    83 +-
 .../benchmark/byTask/tasks/ReadTokensTask.java     |    33 +-
 .../benchmark/byTask/tasks/ReopenReaderTask.java   |     7 +-
 .../lucene/benchmark/byTask/tasks/RepAllTask.java  |    27 +-
 .../byTask/tasks/RepSelectByPrefTask.java          |    36 +-
 .../byTask/tasks/RepSumByNameRoundTask.java        |    30 +-
 .../benchmark/byTask/tasks/RepSumByNameTask.java   |    29 +-
 .../byTask/tasks/RepSumByPrefRoundTask.java        |    33 +-
 .../benchmark/byTask/tasks/RepSumByPrefTask.java   |    39 +-
 .../lucene/benchmark/byTask/tasks/ReportTask.java  |    86 +-
 .../benchmark/byTask/tasks/ResetInputsTask.java    |    11 +-
 .../byTask/tasks/ResetSystemEraseTask.java         |    13 +-
 .../byTask/tasks/ResetSystemSoftTask.java          |    11 +-
 .../benchmark/byTask/tasks/RollbackIndexTask.java  |     5 +-
 .../lucene/benchmark/byTask/tasks/SearchTask.java  |     9 +-
 .../byTask/tasks/SearchTravRetHighlightTask.java   |   147 +-
 .../tasks/SearchTravRetLoadFieldSelectorTask.java  |    27 +-
 .../benchmark/byTask/tasks/SearchTravRetTask.java  |    19 +-
 .../benchmark/byTask/tasks/SearchTravTask.java     |    19 +-
 .../byTask/tasks/SearchWithCollectorTask.java      |    11 +-
 .../benchmark/byTask/tasks/SearchWithSortTask.java |    26 +-
 .../lucene/benchmark/byTask/tasks/SetPropTask.java |    28 +-
 .../benchmark/byTask/tasks/TaskSequence.java       |   159 +-
 .../benchmark/byTask/tasks/UpdateDocTask.java      |    20 +-
 .../lucene/benchmark/byTask/tasks/WaitTask.java    |    20 +-
 .../lucene/benchmark/byTask/tasks/WarmTask.java    |    15 +-
 .../byTask/tasks/WriteEnwikiLineDocTask.java       |    22 +-
 .../benchmark/byTask/tasks/WriteLineDocTask.java   |   129 +-
 .../benchmark/byTask/tasks/package-info.java       |     4 +-
 .../lucene/benchmark/byTask/utils/Algorithm.java   |   245 +-
 .../benchmark/byTask/utils/AnalyzerFactory.java    |    35 +-
 .../lucene/benchmark/byTask/utils/Config.java      |    97 +-
 .../lucene/benchmark/byTask/utils/Format.java      |    17 +-
 .../lucene/benchmark/byTask/utils/StreamUtils.java |    37 +-
 .../benchmark/byTask/utils/package-info.java       |     4 +-
 .../org/apache/lucene/benchmark/package-info.java  |    51 +-
 .../org/apache/lucene/benchmark/quality/Judge.java |    29 +-
 .../lucene/benchmark/quality/QualityBenchmark.java |   127 +-
 .../lucene/benchmark/quality/QualityQuery.java     |    43 +-
 .../benchmark/quality/QualityQueryParser.java      |     6 +-
 .../lucene/benchmark/quality/QualityStats.java     |   183 +-
 .../lucene/benchmark/quality/package-info.java     |    66 +-
 .../lucene/benchmark/quality/trec/QueryDriver.java |    45 +-
 .../benchmark/quality/trec/Trec1MQReader.java      |    36 +-
 .../lucene/benchmark/quality/trec/TrecJudge.java   |    71 +-
 .../benchmark/quality/trec/TrecTopicsReader.java   |    64 +-
 .../benchmark/quality/trec/package-info.java       |     4 +-
 .../benchmark/quality/utils/DocNameExtractor.java  |    52 +-
 .../quality/utils/QualityQueriesFinder.java        |    92 +-
 .../benchmark/quality/utils/SimpleQQParser.java    |    19 +-
 .../benchmark/quality/utils/SubmissionReport.java  |    59 +-
 .../benchmark/quality/utils/package-info.java      |     4 +-
 .../lucene/benchmark/utils/ExtractReuters.java     |    32 +-
 .../lucene/benchmark/utils/ExtractWikipedia.java   |    32 +-
 .../lucene/benchmark/utils/package-info.java       |     4 +-
 .../apache/lucene/benchmark/BenchmarkTestCase.java |    36 +-
 .../benchmark/byTask/TestPerfTasksLogic.java       |   949 +-
 .../benchmark/byTask/TestPerfTasksParse.java       |    92 +-
 .../benchmark/byTask/feeds/DocMakerTest.java       |    61 +-
 .../byTask/feeds/EnwikiContentSourceTest.java      |   144 +-
 .../benchmark/byTask/feeds/LineDocSourceTest.java  |   101 +-
 .../benchmark/byTask/feeds/TestHtmlParser.java     |    93 +-
 .../byTask/feeds/TrecContentSourceTest.java        |   509 +-
 .../benchmark/byTask/tasks/AddIndexesTaskTest.java |    47 +-
 .../byTask/tasks/CommitIndexTaskTest.java          |     5 +-
 .../byTask/tasks/CountingSearchTestTask.java       |     6 +-
 .../byTask/tasks/CreateIndexTaskTest.java          |    12 +-
 .../benchmark/byTask/tasks/PerfTaskTest.java       |    28 +-
 .../byTask/tasks/SearchWithSortTaskTest.java       |     4 +-
 .../byTask/tasks/WriteEnwikiLineDocTaskTest.java   |    37 +-
 .../byTask/tasks/WriteLineDocTaskTest.java         |   106 +-
 .../byTask/tasks/alt/AltPackageTaskTest.java       |    18 +-
 .../benchmark/byTask/tasks/alt/AltTestTask.java    |     8 +-
 .../benchmark/byTask/utils/StreamUtilsTest.java    |    32 +-
 .../lucene/benchmark/byTask/utils/TestConfig.java  |     3 -
 .../lucene/benchmark/quality/TestQualityRun.java   |   222 +-
 lucene/build.gradle                                |     2 +-
 .../lucene/classification/BM25NBClassifier.java    |    64 +-
 .../BooleanPerceptronClassifier.java               |   104 +-
 .../CachingNaiveBayesClassifier.java               |    73 +-
 .../classification/ClassificationResult.java       |     5 +-
 .../apache/lucene/classification/Classifier.java   |    16 +-
 .../classification/KNearestFuzzyClassifier.java    |    90 +-
 .../classification/KNearestNeighborClassifier.java |   139 +-
 .../classification/SimpleNaiveBayesClassifier.java |    90 +-
 .../document/DocumentClassifier.java               |    36 +-
 .../KNearestNeighborDocumentClassifier.java        |    72 +-
 .../SimpleNaiveBayesDocumentClassifier.java        |    84 +-
 .../classification/document/package-info.java      |     3 +-
 .../apache/lucene/classification/package-info.java |     7 +-
 .../utils/ConfusionMatrixGenerator.java            |    89 +-
 .../classification/utils/DatasetSplitter.java      |    47 +-
 .../utils/DocToDoubleVectorUtils.java              |    25 +-
 .../classification/utils/NearestFuzzyQuery.java    |   101 +-
 .../lucene/classification/utils/package-info.java  |     4 +-
 .../classification/BM25NBClassifierTest.java       |    32 +-
 .../BooleanPerceptronClassifierTest.java           |    26 +-
 .../CachingNaiveBayesClassifierTest.java           |    48 +-
 .../classification/ClassificationTestBase.java     |   142 +-
 .../KNearestFuzzyClassifierTest.java               |    22 +-
 .../KNearestNeighborClassifierTest.java            |   103 +-
 .../SimpleNaiveBayesClassifierTest.java            |    33 +-
 .../Test20NewsgroupsClassification.java            |   256 +-
 .../document/DocumentClassificationTestBase.java   |   150 +-
 .../KNearestNeighborDocumentClassifierTest.java    |   164 +-
 .../SimpleNaiveBayesDocumentClassifierTest.java    |   116 +-
 .../utils/ConfusionMatrixGeneratorTest.java        |    97 +-
 .../classification/utils/DataSplitterTest.java     |    28 +-
 .../utils/DocToDoubleVectorUtilsTest.java          |    16 +-
 .../lucene/codecs/blockterms/BlockTermsReader.java |   272 +-
 .../lucene/codecs/blockterms/BlockTermsWriter.java |   107 +-
 .../blockterms/FixedGapTermsIndexReader.java       |   150 +-
 .../blockterms/FixedGapTermsIndexWriter.java       |    65 +-
 .../codecs/blockterms/TermsIndexReaderBase.java    |    36 +-
 .../codecs/blockterms/TermsIndexWriterBase.java    |    27 +-
 .../blockterms/VariableGapTermsIndexReader.java    |    54 +-
 .../blockterms/VariableGapTermsIndexWriter.java    |   100 +-
 .../lucene/codecs/blockterms/package-info.java     |     4 +-
 .../blocktreeords/BlockTreeOrdsPostingsFormat.java |    33 +-
 .../codecs/blocktreeords/FSTOrdsOutputs.java       |    56 +-
 .../blocktreeords/OrdsBlockTreeTermsReader.java    |   115 +-
 .../blocktreeords/OrdsBlockTreeTermsWriter.java    |   351 +-
 .../codecs/blocktreeords/OrdsFieldReader.java      |    61 +-
 .../blocktreeords/OrdsIntersectTermsEnum.java      |   165 +-
 .../blocktreeords/OrdsIntersectTermsEnumFrame.java |    49 +-
 .../codecs/blocktreeords/OrdsSegmentTermsEnum.java |   540 +-
 .../blocktreeords/OrdsSegmentTermsEnumFrame.java   |   191 +-
 .../lucene/codecs/blocktreeords/package-info.java  |     5 +-
 .../lucene/codecs/bloom/BloomFilterFactory.java    |    30 +-
 .../codecs/bloom/BloomFilteringPostingsFormat.java |   279 +-
 .../codecs/bloom/DefaultBloomFilterFactory.java    |    18 +-
 .../org/apache/lucene/codecs/bloom/FuzzySet.java   |   255 +-
 .../apache/lucene/codecs/bloom/HashFunction.java   |    11 +-
 .../apache/lucene/codecs/bloom/MurmurHash2.java    |    39 +-
 .../apache/lucene/codecs/bloom/package-info.java   |     5 +-
 .../lucene/codecs/memory/DirectPostingsFormat.java |   409 +-
 .../lucene/codecs/memory/FSTPostingsFormat.java    |     8 +-
 .../lucene/codecs/memory/FSTTermOutputs.java       |    94 +-
 .../lucene/codecs/memory/FSTTermsReader.java       |   180 +-
 .../lucene/codecs/memory/FSTTermsWriter.java       |   142 +-
 .../codecs/memory/LegacyBinaryDocValues.java       |    15 +-
 .../memory/LegacyBinaryDocValuesWrapper.java       |     8 +-
 .../codecs/memory/LegacyDocValuesIterables.java    |   117 +-
 .../codecs/memory/LegacyNumericDocValues.java      |     6 +-
 .../memory/LegacyNumericDocValuesWrapper.java      |     7 +-
 .../codecs/memory/LegacySortedDocValues.java       |    59 +-
 .../memory/LegacySortedDocValuesWrapper.java       |     8 +-
 .../memory/LegacySortedNumericDocValues.java       |    28 +-
 .../LegacySortedNumericDocValuesWrapper.java       |     8 +-
 .../codecs/memory/LegacySortedSetDocValues.java    |    76 +-
 .../memory/LegacySortedSetDocValuesWrapper.java    |     8 +-
 .../apache/lucene/codecs/memory/package-info.java  |     5 +-
 .../codecs/simpletext/SimpleTextBKDReader.java     |   185 +-
 .../codecs/simpletext/SimpleTextBKDWriter.java     |  1052 +-
 .../lucene/codecs/simpletext/SimpleTextCodec.java  |    23 +-
 .../simpletext/SimpleTextCompoundFormat.java       |    93 +-
 .../simpletext/SimpleTextDocValuesFormat.java      |    91 +-
 .../simpletext/SimpleTextDocValuesReader.java      |   364 +-
 .../simpletext/SimpleTextDocValuesWriter.java      |   255 +-
 .../simpletext/SimpleTextFieldInfosFormat.java     |   168 +-
 .../codecs/simpletext/SimpleTextFieldsReader.java  |   196 +-
 .../codecs/simpletext/SimpleTextFieldsWriter.java  |    42 +-
 .../simpletext/SimpleTextLiveDocsFormat.java       |    61 +-
 .../codecs/simpletext/SimpleTextNormsFormat.java   |    56 +-
 .../codecs/simpletext/SimpleTextPointsFormat.java  |    16 +-
 .../codecs/simpletext/SimpleTextPointsReader.java  |   104 +-
 .../codecs/simpletext/SimpleTextPointsWriter.java  |   116 +-
 .../simpletext/SimpleTextPostingsFormat.java       |    16 +-
 .../simpletext/SimpleTextSegmentInfoFormat.java    |   148 +-
 .../simpletext/SimpleTextStoredFieldsFormat.java   |    14 +-
 .../simpletext/SimpleTextStoredFieldsReader.java   |    93 +-
 .../simpletext/SimpleTextStoredFieldsWriter.java   |    96 +-
 .../simpletext/SimpleTextTermVectorsFormat.java    |    14 +-
 .../simpletext/SimpleTextTermVectorsReader.java    |    62 +-
 .../simpletext/SimpleTextTermVectorsWriter.java    |   111 +-
 .../lucene/codecs/simpletext/SimpleTextUtil.java   |    48 +-
 .../codecs/simpletext/SimpleTextVectorFormat.java  |    51 +
 .../codecs/simpletext/SimpleTextVectorReader.java  |   337 +
 .../codecs/simpletext/SimpleTextVectorWriter.java  |   150 +
 .../lucene/codecs/simpletext/package-info.java     |     4 +-
 .../lucene/codecs/uniformsplit/BlockDecoder.java   |    10 +-
 .../lucene/codecs/uniformsplit/BlockEncoder.java   |    18 +-
 .../lucene/codecs/uniformsplit/BlockHeader.java    |   112 +-
 .../lucene/codecs/uniformsplit/BlockLine.java      |   160 +-
 .../lucene/codecs/uniformsplit/BlockReader.java    |   222 +-
 .../lucene/codecs/uniformsplit/BlockWriter.java    |   129 +-
 .../uniformsplit/DeltaBaseTermStateSerializer.java |    82 +-
 .../lucene/codecs/uniformsplit/FSTDictionary.java  |    57 +-
 .../lucene/codecs/uniformsplit/FieldMetadata.java  |   137 +-
 .../codecs/uniformsplit/IndexDictionary.java       |    94 +-
 .../codecs/uniformsplit/IntersectBlockReader.java  |   233 +-
 .../lucene/codecs/uniformsplit/RamUsageUtil.java   |    31 +-
 .../lucene/codecs/uniformsplit/TermBytes.java      |    59 +-
 .../uniformsplit/UniformSplitPostingsFormat.java   |   106 +-
 .../codecs/uniformsplit/UniformSplitTerms.java     |    53 +-
 .../uniformsplit/UniformSplitTermsReader.java      |   265 +-
 .../uniformsplit/UniformSplitTermsWriter.java      |   301 +-
 .../lucene/codecs/uniformsplit/package-info.java   |    22 +-
 .../uniformsplit/sharedterms/STBlockLine.java      |   129 +-
 .../uniformsplit/sharedterms/STBlockReader.java    |    44 +-
 .../uniformsplit/sharedterms/STBlockWriter.java    |    57 +-
 .../sharedterms/STIntersectBlockReader.java        |    56 +-
 .../sharedterms/STMergingBlockReader.java          |    52 +-
 .../sharedterms/STMergingTermsEnum.java            |    37 +-
 .../sharedterms/STUniformSplitPostingsFormat.java  |    74 +-
 .../sharedterms/STUniformSplitTerms.java           |    45 +-
 .../sharedterms/STUniformSplitTermsReader.java     |   100 +-
 .../sharedterms/STUniformSplitTermsWriter.java     |   256 +-
 .../uniformsplit/sharedterms/package-info.java     |    15 +-
 .../blockterms/TestFixedGapPostingsFormat.java     |     8 +-
 .../TestVarGapDocFreqIntervalPostingsFormat.java   |     9 +-
 .../TestVarGapFixedIntervalPostingsFormat.java     |    10 +-
 .../codecs/blocktreeords/TestOrdsBlockTree.java    |    70 +-
 .../codecs/bloom/TestBloomPostingsFormat.java      |     5 +-
 .../codecs/lucene84/MockTermStateFactory.java      |    10 +-
 .../codecs/memory/TestDirectPostingsFormat.java    |     5 +-
 .../codecs/memory/TestFSTPostingsFormat.java       |     5 +-
 .../simpletext/TestSimpleTextCompoundFormat.java   |     1 -
 .../simpletext/TestSimpleTextDocValuesFormat.java  |     5 +-
 .../simpletext/TestSimpleTextFieldInfoFormat.java  |     5 +-
 .../simpletext/TestSimpleTextNormsFormat.java      |     1 -
 .../simpletext/TestSimpleTextPointsFormat.java     |     5 +-
 .../simpletext/TestSimpleTextPostingsFormat.java   |     5 +-
 .../TestSimpleTextSegmentInfoFormat.java           |     9 +-
 .../TestSimpleTextStoredFieldsFormat.java          |     1 -
 .../TestSimpleTextTermVectorsFormat.java           |     6 +-
 .../codecs/uniformsplit/TestBlockWriter.java       |    56 +-
 .../codecs/uniformsplit/TestFSTDictionary.java     |    34 +-
 .../lucene/codecs/uniformsplit/TestTermBytes.java  |   204 +-
 .../uniformsplit/TestTermBytesComparator.java      |    76 +-
 .../TestUniformSplitPostingFormat.java             |    15 +-
 .../sharedterms/TestSTBlockReader.java             |   149 +-
 .../TestSTUniformSplitPostingFormat.java           |    15 +-
 .../src/java/org/apache/lucene/LucenePackage.java  |     5 +-
 .../lucene/analysis/AbstractAnalysisFactory.java   |   393 +
 .../apache/lucene/analysis/AnalysisSPILoader.java  |   214 +
 .../java/org/apache/lucene/analysis/Analyzer.java  |   427 +-
 .../apache/lucene/analysis/AnalyzerWrapper.java    |   112 +-
 .../apache/lucene/analysis/CachingTokenFilter.java |    37 +-
 .../org/apache/lucene/analysis/CharArrayMap.java   |   359 +-
 .../org/apache/lucene/analysis/CharArraySet.java   |   136 +-
 .../org/apache/lucene/analysis/CharFilter.java     |    56 +-
 .../apache/lucene/analysis/CharFilterFactory.java  |    92 +
 .../org/apache/lucene/analysis/CharacterUtils.java |   145 +-
 .../lucene/analysis/DelegatingAnalyzerWrapper.java |    56 +-
 .../lucene/analysis/FilteringTokenFilter.java      |    20 +-
 .../apache/lucene/analysis/GraphTokenFilter.java   |    36 +-
 .../apache/lucene/analysis/LowerCaseFilter.java    |    15 +-
 .../lucene/analysis/ReusableStringReader.java      |    18 +-
 .../org/apache/lucene/analysis/StopFilter.java     |    65 +-
 .../lucene/analysis/StopwordAnalyzerBase.java      |    97 +-
 .../org/apache/lucene/analysis/TokenFilter.java    |    40 +-
 .../apache/lucene/analysis/TokenFilterFactory.java |    92 +
 .../org/apache/lucene/analysis/TokenStream.java    |   222 +-
 .../lucene/analysis/TokenStreamToAutomaton.java    |    58 +-
 .../java/org/apache/lucene/analysis/Tokenizer.java |    78 +-
 .../apache/lucene/analysis/TokenizerFactory.java   |    88 +
 .../org/apache/lucene/analysis/WordlistLoader.java |   117 +-
 .../org/apache/lucene/analysis/package-info.java   |  1139 +-
 .../lucene/analysis/standard/StandardAnalyzer.java |    54 +-
 .../analysis/standard/StandardTokenizer.java       |    94 +-
 .../standard/StandardTokenizerFactory.java         |    63 +
 .../lucene/analysis/standard/package-info.java     |    23 +-
 .../tokenattributes/BytesTermAttribute.java        |     9 +-
 .../tokenattributes/BytesTermAttributeImpl.java    |    13 +-
 .../tokenattributes/CharTermAttribute.java         |   101 +-
 .../tokenattributes/CharTermAttributeImpl.java     |    98 +-
 .../analysis/tokenattributes/FlagsAttribute.java   |    20 +-
 .../tokenattributes/FlagsAttributeImpl.java        |    13 +-
 .../analysis/tokenattributes/KeywordAttribute.java |    23 +-
 .../tokenattributes/KeywordAttributeImpl.java      |    12 +-
 .../analysis/tokenattributes/OffsetAttribute.java  |    41 +-
 .../tokenattributes/OffsetAttributeImpl.java       |    26 +-
 .../tokenattributes/PackedTokenAttributeImpl.java  |    95 +-
 .../analysis/tokenattributes/PayloadAttribute.java |    23 +-
 .../tokenattributes/PayloadAttributeImpl.java      |    29 +-
 .../PositionIncrementAttribute.java                |    46 +-
 .../PositionIncrementAttributeImpl.java            |    21 +-
 .../tokenattributes/PositionLengthAttribute.java   |    32 +-
 .../PositionLengthAttributeImpl.java               |    23 +-
 .../tokenattributes/TermFrequencyAttribute.java    |     8 +-
 .../TermFrequencyAttributeImpl.java                |    21 +-
 .../tokenattributes/TermToBytesRefAttribute.java   |    26 +-
 .../analysis/tokenattributes/TypeAttribute.java    |    15 +-
 .../tokenattributes/TypeAttributeImpl.java         |    17 +-
 .../analysis/tokenattributes/package-info.java     |     4 +-
 .../org/apache/lucene/codecs/BlockTermState.java   |    20 +-
 .../src/java/org/apache/lucene/codecs/Codec.java   |   110 +-
 .../java/org/apache/lucene/codecs/CodecUtil.java   |   504 +-
 .../codecs/CompetitiveImpactAccumulator.java       |    41 +-
 .../apache/lucene/codecs/CompoundDirectory.java    |    35 +-
 .../org/apache/lucene/codecs/CompoundFormat.java   |    26 +-
 .../apache/lucene/codecs/DocValuesConsumer.java    |  1035 +-
 .../org/apache/lucene/codecs/DocValuesFormat.java  |   106 +-
 .../apache/lucene/codecs/DocValuesProducer.java    |    74 +-
 .../org/apache/lucene/codecs/FieldInfosFormat.java |    26 +-
 .../org/apache/lucene/codecs/FieldsConsumer.java   |    78 +-
 .../org/apache/lucene/codecs/FieldsProducer.java   |    37 +-
 .../java/org/apache/lucene/codecs/FilterCodec.java |    33 +-
 .../org/apache/lucene/codecs/LiveDocsFormat.java   |    31 +-
 .../lucene/codecs/MultiLevelSkipListReader.java    |   123 +-
 .../lucene/codecs/MultiLevelSkipListWriter.java    |    78 +-
 .../apache/lucene/codecs/MutablePointValues.java   |    10 +-
 .../org/apache/lucene/codecs/NormsConsumer.java    |   228 +-
 .../java/org/apache/lucene/codecs/NormsFormat.java |    30 +-
 .../org/apache/lucene/codecs/NormsProducer.java    |    41 +-
 .../org/apache/lucene/codecs/PointsFormat.java     |    80 +-
 .../org/apache/lucene/codecs/PointsReader.java     |    25 +-
 .../org/apache/lucene/codecs/PointsWriter.java     |    89 +-
 .../org/apache/lucene/codecs/PostingsFormat.java   |   105 +-
 .../apache/lucene/codecs/PostingsReaderBase.java   |    63 +-
 .../apache/lucene/codecs/PostingsWriterBase.java   |    61 +-
 .../lucene/codecs/PushPostingsWriterBase.java      |    78 +-
 .../apache/lucene/codecs/SegmentInfoFormat.java    |    25 +-
 .../apache/lucene/codecs/StoredFieldsFormat.java   |    24 +-
 .../apache/lucene/codecs/StoredFieldsReader.java   |    38 +-
 .../apache/lucene/codecs/StoredFieldsWriter.java   |   102 +-
 .../java/org/apache/lucene/codecs/TermStats.java   |    11 +-
 .../apache/lucene/codecs/TermVectorsFormat.java    |    25 +-
 .../apache/lucene/codecs/TermVectorsReader.java    |    48 +-
 .../apache/lucene/codecs/TermVectorsWriter.java    |   187 +-
 .../org/apache/lucene/codecs/VectorFormat.java     |    73 +
 .../org/apache/lucene/codecs/VectorReader.java     |    53 +
 .../org/apache/lucene/codecs/VectorWriter.java     |   301 +
 .../codecs/blocktree/BlockTreeTermsReader.java     |   175 +-
 .../codecs/blocktree/BlockTreeTermsWriter.java     |   559 +-
 .../codecs/blocktree/CompressionAlgorithm.java     |    15 +-
 .../lucene/codecs/blocktree/FieldReader.java       |    82 +-
 .../codecs/blocktree/IntersectTermsEnum.java       |   104 +-
 .../codecs/blocktree/IntersectTermsEnumFrame.java  |    21 +-
 .../lucene/codecs/blocktree/SegmentTermsEnum.java  |   462 +-
 .../codecs/blocktree/SegmentTermsEnumFrame.java    |   180 +-
 .../org/apache/lucene/codecs/blocktree/Stats.java  |   137 +-
 .../lucene/codecs/blocktree/package-info.java      |    20 +-
 .../compressing/CompressingStoredFieldsFormat.java |   141 +-
 .../compressing/CompressingStoredFieldsReader.java |   325 +-
 .../compressing/CompressingStoredFieldsWriter.java |   335 +-
 .../compressing/CompressingTermVectorsFormat.java  |    79 +-
 .../compressing/CompressingTermVectorsReader.java  |   403 +-
 .../compressing/CompressingTermVectorsWriter.java  |   270 +-
 .../lucene/codecs/compressing/CompressionMode.java |   209 +-
 .../lucene/codecs/compressing/Compressor.java      |    13 +-
 .../lucene/codecs/compressing/Decompressor.java    |    21 +-
 .../lucene/codecs/compressing/FieldsIndex.java     |     2 -
 .../codecs/compressing/FieldsIndexReader.java      |    46 +-
 .../codecs/compressing/FieldsIndexWriter.java      |    45 +-
 .../compressing/LegacyFieldsIndexReader.java       |    38 +-
 .../lucene/codecs/compressing/MatchingReaders.java |    23 +-
 .../lucene/codecs/compressing/package-info.java    |     6 +-
 .../codecs/lucene50/Lucene50CompoundFormat.java    |   155 +-
 .../codecs/lucene50/Lucene50CompoundReader.java    |   126 +-
 .../codecs/lucene50/Lucene50FieldInfosFormat.java  |   294 -
 .../codecs/lucene50/Lucene50LiveDocsFormat.java    |   127 +-
 .../codecs/lucene50/Lucene50TermVectorsFormat.java |   208 +-
 .../lucene/codecs/lucene50/package-info.java       |     5 +-
 .../codecs/lucene60/Lucene60FieldInfosFormat.java  |   420 +-
 .../lucene/codecs/lucene60/package-info.java       |     4 +-
 .../apache/lucene/codecs/lucene80/IndexedDISI.java |   369 +-
 .../codecs/lucene80/Lucene80DocValuesConsumer.java |   383 +-
 .../codecs/lucene80/Lucene80DocValuesFormat.java   |   199 +-
 .../codecs/lucene80/Lucene80DocValuesProducer.java |   375 +-
 .../codecs/lucene80/Lucene80NormsConsumer.java     |    37 +-
 .../codecs/lucene80/Lucene80NormsFormat.java       |    95 +-
 .../codecs/lucene80/Lucene80NormsProducer.java     |   103 +-
 .../lucene/codecs/lucene80/package-info.java       |     5 +-
 .../lucene/codecs/lucene84/ForDeltaUtil.java       |    21 +-
 .../org/apache/lucene/codecs/lucene84/ForUtil.java |  1328 +-
 .../codecs/lucene84/Lucene84PostingsFormat.java    |   635 +-
 .../codecs/lucene84/Lucene84PostingsReader.java    |   486 +-
 .../codecs/lucene84/Lucene84PostingsWriter.java    |   128 +-
 .../codecs/lucene84/Lucene84ScoreSkipReader.java   |    59 +-
 .../lucene/codecs/lucene84/Lucene84SkipReader.java |    64 +-
 .../lucene/codecs/lucene84/Lucene84SkipWriter.java |    69 +-
 .../apache/lucene/codecs/lucene84/PForUtil.java    |    37 +-
 .../apache/lucene/codecs/lucene84/gen_ForUtil.py   |    72 +-
 .../lucene/codecs/lucene84/package-info.java       |     4 +-
 .../codecs/lucene86/Lucene86PointsFormat.java      |    29 +-
 .../codecs/lucene86/Lucene86PointsReader.java      |    49 +-
 .../codecs/lucene86/Lucene86PointsWriter.java      |   155 +-
 .../codecs/lucene86/Lucene86SegmentInfoFormat.java |   285 +-
 .../lucene/codecs/lucene86/package-info.java       |   398 +-
 .../codecs/lucene87/BugfixDeflater_JDK8252739.java |   219 +-
 .../DeflateWithPresetDictCompressionMode.java      |    58 +-
 .../lucene87/LZ4WithPresetDictCompressionMode.java |    41 +-
 .../lucene/codecs/lucene87/Lucene87Codec.java      |   179 -
 .../lucene87/Lucene87StoredFieldsFormat.java       |   175 +-
 .../lucene/codecs/lucene87/package-info.java       |   398 +-
 .../lucene/codecs/lucene90/Lucene90Codec.java      |   201 +
 .../codecs/lucene90/Lucene90FieldInfosFormat.java  |   375 +
 .../codecs/lucene90/Lucene90VectorFormat.java      |    56 +
 .../codecs/lucene90/Lucene90VectorReader.java      |   489 +
 .../codecs/lucene90/Lucene90VectorWriter.java      |   241 +
 .../lucene/codecs/lucene90/package-info.java       |   419 +
 .../org/apache/lucene/codecs/package-info.java     |    74 +-
 .../codecs/perfield/PerFieldDocValuesFormat.java   |   126 +-
 .../lucene/codecs/perfield/PerFieldMergeState.java |    46 +-
 .../codecs/perfield/PerFieldPostingsFormat.java    |   157 +-
 .../lucene/codecs/perfield/package-info.java       |     4 +-
 .../lucene/document/BinaryDocValuesField.java      |    33 +-
 .../org/apache/lucene/document/BinaryPoint.java    |   167 +-
 .../lucene/document/BinaryRangeDocValues.java      |     7 +-
 .../lucene/document/BinaryRangeDocValuesField.java |     5 +-
 .../document/BinaryRangeFieldRangeQuery.java       |    41 +-
 .../java/org/apache/lucene/document/DateTools.java |   166 +-
 .../java/org/apache/lucene/document/Document.java  |   172 +-
 .../document/DocumentStoredFieldVisitor.java       |    39 +-
 .../lucene/document/DoubleDocValuesField.java      |    25 +-
 .../org/apache/lucene/document/DoublePoint.java    |   182 +-
 .../org/apache/lucene/document/DoubleRange.java    |   121 +-
 .../lucene/document/DoubleRangeDocValuesField.java |    23 +-
 .../lucene/document/DoubleRangeSlowRangeQuery.java |    10 +-
 .../lucene/document/FeatureDoubleValuesSource.java |    25 +-
 .../org/apache/lucene/document/FeatureField.java   |   387 +-
 .../org/apache/lucene/document/FeatureQuery.java   |    20 +-
 .../apache/lucene/document/FeatureSortField.java   |    24 +-
 .../src/java/org/apache/lucene/document/Field.java |   308 +-
 .../java/org/apache/lucene/document/FieldType.java |   253 +-
 .../lucene/document/FloatDocValuesField.java       |    26 +-
 .../org/apache/lucene/document/FloatPoint.java     |   176 +-
 .../org/apache/lucene/document/FloatRange.java     |   121 +-
 .../lucene/document/FloatRangeDocValuesField.java  |    23 +-
 .../lucene/document/FloatRangeSlowRangeQuery.java  |     7 +-
 .../apache/lucene/document/InetAddressPoint.java   |   328 +
 .../apache/lucene/document/InetAddressRange.java   |   191 +
 .../java/org/apache/lucene/document/IntPoint.java  |   159 +-
 .../java/org/apache/lucene/document/IntRange.java  |   121 +-
 .../lucene/document/IntRangeDocValuesField.java    |    26 +-
 .../lucene/document/IntRangeSlowRangeQuery.java    |     6 +-
 .../lucene/document/LatLonDocValuesBoxQuery.java   |    88 +-
 .../document/LatLonDocValuesDistanceQuery.java     |   148 -
 .../lucene/document/LatLonDocValuesField.java      |   198 +-
 .../LatLonDocValuesPointInPolygonQuery.java        |   147 -
 .../lucene/document/LatLonDocValuesQuery.java      |   272 +
 .../org/apache/lucene/document/LatLonPoint.java    |   226 +-
 .../document/LatLonPointDistanceComparator.java    |    72 +-
 .../document/LatLonPointDistanceFeatureQuery.java  |   321 +-
 .../lucene/document/LatLonPointDistanceQuery.java  |   119 +-
 .../lucene/document/LatLonPointInPolygonQuery.java |   258 -
 .../apache/lucene/document/LatLonPointQuery.java   |   182 +
 .../lucene/document/LatLonPointSortField.java      |    15 +-
 .../org/apache/lucene/document/LatLonShape.java    |   143 +-
 .../document/LatLonShapeBoundingBoxQuery.java      |   568 +-
 .../apache/lucene/document/LatLonShapeQuery.java   |   258 +-
 .../lucene/document/LongDistanceFeatureQuery.java  |   163 +-
 .../java/org/apache/lucene/document/LongPoint.java |   186 +-
 .../java/org/apache/lucene/document/LongRange.java |   117 +-
 .../lucene/document/LongRangeDocValuesField.java   |    23 +-
 .../lucene/document/LongRangeSlowRangeQuery.java   |     7 +-
 .../lucene/document/NumericDocValuesField.java     |    66 +-
 .../apache/lucene/document/RangeFieldQuery.java    |   325 +-
 .../org/apache/lucene/document/ShapeField.java     |   220 +-
 .../org/apache/lucene/document/ShapeQuery.java     |   567 -
 .../lucene/document/SortedDocValuesField.java      |    68 +-
 .../document/SortedNumericDocValuesField.java      |    79 +-
 .../document/SortedNumericDocValuesRangeQuery.java |    68 +-
 .../lucene/document/SortedSetDocValuesField.java   |    72 +-
 .../document/SortedSetDocValuesRangeQuery.java     |    80 +-
 .../org/apache/lucene/document/SpatialQuery.java   |   722 +
 .../org/apache/lucene/document/StoredField.java    |    88 +-
 .../org/apache/lucene/document/StringField.java    |    46 +-
 .../java/org/apache/lucene/document/TextField.java |    24 +-
 .../org/apache/lucene/document/VectorField.java    |   107 +
 .../apache/lucene/document/XYDocValuesField.java   |   145 +-
 .../document/XYDocValuesPointInGeometryQuery.java  |    44 +-
 .../lucene/document/XYPointDistanceComparator.java |    43 +-
 .../org/apache/lucene/document/XYPointField.java   |    96 +-
 .../lucene/document/XYPointInGeometryQuery.java    |    94 +-
 .../apache/lucene/document/XYPointSortField.java   |    12 +-
 .../java/org/apache/lucene/document/XYShape.java   |   108 +-
 .../org/apache/lucene/document/XYShapeQuery.java   |   251 +-
 .../org/apache/lucene/document/package-info.java   |    55 +-
 .../src/java/org/apache/lucene/geo/Circle.java     |    28 +-
 .../src/java/org/apache/lucene/geo/Circle2D.java   |   221 +-
 .../java/org/apache/lucene/geo/Component2D.java    |   215 +-
 .../java/org/apache/lucene/geo/ComponentTree.java  |   161 +-
 .../src/java/org/apache/lucene/geo/EdgeTree.java   |   264 +-
 .../org/apache/lucene/geo/GeoEncodingUtils.java    |   210 +-
 .../src/java/org/apache/lucene/geo/GeoUtils.java   |   133 +-
 .../java/org/apache/lucene/geo/LatLonGeometry.java |     4 +-
 .../core/src/java/org/apache/lucene/geo/Line.java  |    22 +-
 .../src/java/org/apache/lucene/geo/Line2D.java     |   117 +-
 .../core/src/java/org/apache/lucene/geo/Point.java |    16 +-
 .../src/java/org/apache/lucene/geo/Point2D.java    |   109 +-
 .../src/java/org/apache/lucene/geo/Polygon.java    |    69 +-
 .../src/java/org/apache/lucene/geo/Polygon2D.java  |   171 +-
 .../src/java/org/apache/lucene/geo/Rectangle.java  |    40 +-
 .../java/org/apache/lucene/geo/Rectangle2D.java    |   171 +-
 .../lucene/geo/SimpleGeoJSONPolygonParser.java     |    81 +-
 .../apache/lucene/geo/SimpleWKTShapeParser.java    |   112 +-
 .../java/org/apache/lucene/geo/Tessellator.java    |   782 +-
 .../src/java/org/apache/lucene/geo/XYCircle.java   |    16 +-
 .../org/apache/lucene/geo/XYEncodingUtils.java     |    12 +-
 .../src/java/org/apache/lucene/geo/XYGeometry.java |     4 +-
 .../src/java/org/apache/lucene/geo/XYLine.java     |    18 +-
 .../src/java/org/apache/lucene/geo/XYPoint.java    |    16 +-
 .../src/java/org/apache/lucene/geo/XYPolygon.java  |    42 +-
 .../java/org/apache/lucene/geo/XYRectangle.java    |     7 +-
 .../java/org/apache/lucene/geo/package-info.java   |     6 +-
 .../apache/lucene/index/AutomatonTermsEnum.java    |   181 +-
 .../apache/lucene/index/BaseCompositeReader.java   |   110 +-
 .../org/apache/lucene/index/BaseTermsEnum.java     |    19 +-
 .../org/apache/lucene/index/BinaryDocValues.java   |    16 +-
 .../lucene/index/BinaryDocValuesFieldUpdates.java  |    34 +-
 .../apache/lucene/index/BinaryDocValuesWriter.java |   144 +-
 .../java/org/apache/lucene/index/BitsSlice.java    |     8 +-
 .../org/apache/lucene/index/BufferedUpdates.java   |    92 +-
 .../apache/lucene/index/BufferedUpdatesStream.java |   135 +-
 .../org/apache/lucene/index/ByteSliceReader.java   |    36 +-
 .../org/apache/lucene/index/ByteSliceWriter.java   |    23 +-
 .../java/org/apache/lucene/index/CheckIndex.java   |  2354 +-
 .../java/org/apache/lucene/index/CodecReader.java  |   113 +-
 .../org/apache/lucene/index/CompositeReader.java   |    84 +-
 .../lucene/index/CompositeReaderContext.java       |    65 +-
 .../lucene/index/ConcurrentMergeScheduler.java     |   350 +-
 .../apache/lucene/index/CorruptIndexException.java |    21 +-
 .../apache/lucene/index/DefaultIndexingChain.java  |   992 -
 .../org/apache/lucene/index/DirectoryReader.java   |   342 +-
 .../java/org/apache/lucene/index/DocConsumer.java  |    35 -
 .../java/org/apache/lucene/index/DocIDMerger.java  |    55 +-
 .../java/org/apache/lucene/index/DocValues.java    |   196 +-
 .../apache/lucene/index/DocValuesFieldUpdates.java |   171 +-
 .../org/apache/lucene/index/DocValuesIterator.java |    14 +-
 .../apache/lucene/index/DocValuesLeafReader.java   |     6 +-
 .../org/apache/lucene/index/DocValuesType.java     |    45 +-
 .../org/apache/lucene/index/DocValuesUpdate.java   |    66 +-
 .../org/apache/lucene/index/DocValuesWriter.java   |     6 +-
 .../org/apache/lucene/index/DocsWithFieldSet.java  |    13 +-
 .../org/apache/lucene/index/DocumentsWriter.java   |   363 +-
 .../lucene/index/DocumentsWriterDeleteQueue.java   |   215 +-
 .../lucene/index/DocumentsWriterFlushControl.java  |   450 +-
 .../lucene/index/DocumentsWriterFlushQueue.java    |    36 +-
 .../lucene/index/DocumentsWriterPerThread.java     |   458 +-
 .../lucene/index/DocumentsWriterPerThreadPool.java |    85 +-
 .../lucene/index/DocumentsWriterStallControl.java  |    61 +-
 .../lucene/index/EmptyDocValuesProducer.java       |     8 +-
 .../lucene/index/ExitableDirectoryReader.java      |   480 +-
 .../java/org/apache/lucene/index/FieldInfo.java    |   391 +-
 .../java/org/apache/lucene/index/FieldInfos.java   |   644 +-
 .../org/apache/lucene/index/FieldInvertState.java  |    82 +-
 .../org/apache/lucene/index/FieldTermIterator.java |    23 +-
 .../apache/lucene/index/FieldUpdatesBuffer.java    |   139 +-
 .../src/java/org/apache/lucene/index/Fields.java   |    31 +-
 .../apache/lucene/index/FilterBinaryDocValues.java |    13 +-
 .../org/apache/lucene/index/FilterCodecReader.java |    42 +-
 .../apache/lucene/index/FilterDirectoryReader.java |    47 +-
 .../org/apache/lucene/index/FilterLeafReader.java  |    86 +-
 .../org/apache/lucene/index/FilterMergePolicy.java |    30 +-
 .../lucene/index/FilterNumericDocValues.java       |    12 +-
 .../apache/lucene/index/FilterSortedDocValues.java |     7 +-
 .../lucene/index/FilterSortedNumericDocValues.java |     7 +-
 .../lucene/index/FilterSortedSetDocValues.java     |     7 +-
 .../org/apache/lucene/index/FilteredTermsEnum.java |   169 +-
 .../lucene/index/FlushByRamOrCountsPolicy.java     |   105 +-
 .../java/org/apache/lucene/index/FlushPolicy.java  |    91 +-
 .../org/apache/lucene/index/FreqProxFields.java    |    43 +-
 .../apache/lucene/index/FreqProxTermsWriter.java   |   109 +-
 .../lucene/index/FreqProxTermsWriterPerField.java  |    77 +-
 .../apache/lucene/index/FrozenBufferedUpdates.java |   205 +-
 .../src/java/org/apache/lucene/index/Impact.java   |    17 +-
 .../src/java/org/apache/lucene/index/Impacts.java  |    28 +-
 .../java/org/apache/lucene/index/ImpactsEnum.java  |     5 +-
 .../org/apache/lucene/index/ImpactsSource.java     |    34 +-
 .../java/org/apache/lucene/index/IndexCommit.java  |    96 +-
 .../apache/lucene/index/IndexDeletionPolicy.java   |   106 +-
 .../org/apache/lucene/index/IndexFileDeleter.java  |   360 +-
 .../org/apache/lucene/index/IndexFileNames.java    |   118 +-
 .../lucene/index/IndexFormatTooNewException.java   |    67 +-
 .../lucene/index/IndexFormatTooOldException.java   |   106 +-
 .../lucene/index/IndexNotFoundException.java       |     9 +-
 .../java/org/apache/lucene/index/IndexOptions.java |    36 +-
 .../java/org/apache/lucene/index/IndexReader.java  |   435 +-
 .../apache/lucene/index/IndexReaderContext.java    |    43 +-
 .../java/org/apache/lucene/index/IndexSorter.java  |   225 +-
 .../org/apache/lucene/index/IndexUpgrader.java     |   136 +-
 .../java/org/apache/lucene/index/IndexWriter.java  |  3738 +-
 .../org/apache/lucene/index/IndexWriterConfig.java |   363 +-
 .../org/apache/lucene/index/IndexableField.java    |    37 +-
 .../apache/lucene/index/IndexableFieldType.java    |   138 +-
 .../org/apache/lucene/index/IndexingChain.java     |  1316 +
 .../index/KeepOnlyLastCommitDeletionPolicy.java    |    22 +-
 .../org/apache/lucene/index/KnnGraphValues.java    |    71 +
 .../java/org/apache/lucene/index/LeafMetaData.java |    24 +-
 .../java/org/apache/lucene/index/LeafReader.java   |   204 +-
 .../org/apache/lucene/index/LeafReaderContext.java |    30 +-
 .../apache/lucene/index/LiveIndexWriterConfig.java |   315 +-
 .../lucene/index/LogByteSizeMergePolicy.java       |   119 +-
 .../org/apache/lucene/index/LogDocMergePolicy.java |    40 +-
 .../org/apache/lucene/index/LogMergePolicy.java    |   383 +-
 .../org/apache/lucene/index/MappedMultiFields.java |    27 +-
 .../lucene/index/MappingMultiPostingsEnum.java     |    35 +-
 .../java/org/apache/lucene/index/MergePolicy.java  |   561 +-
 .../org/apache/lucene/index/MergeRateLimiter.java  |    47 +-
 .../apache/lucene/index/MergeReaderWrapper.java    |    26 +-
 .../org/apache/lucene/index/MergeScheduler.java    |    62 +-
 .../java/org/apache/lucene/index/MergeState.java   |   108 +-
 .../java/org/apache/lucene/index/MergeTrigger.java |    34 +-
 .../java/org/apache/lucene/index/MultiBits.java    |    49 +-
 .../org/apache/lucene/index/MultiDocValues.java    |   261 +-
 .../java/org/apache/lucene/index/MultiFields.java  |    41 +-
 .../org/apache/lucene/index/MultiLeafReader.java   |     8 +-
 .../org/apache/lucene/index/MultiPostingsEnum.java |    55 +-
 .../java/org/apache/lucene/index/MultiReader.java  |    55 +-
 .../java/org/apache/lucene/index/MultiSorter.java  |    85 +-
 .../java/org/apache/lucene/index/MultiTerms.java   |    86 +-
 .../org/apache/lucene/index/MultiTermsEnum.java    |    80 +-
 .../org/apache/lucene/index/NoDeletionPolicy.java  |    10 +-
 .../org/apache/lucene/index/NoMergePolicy.java     |    42 +-
 .../org/apache/lucene/index/NoMergeScheduler.java  |    17 +-
 .../org/apache/lucene/index/NormValuesWriter.java  |    81 +-
 .../org/apache/lucene/index/NumericDocValues.java  |    16 +-
 .../lucene/index/NumericDocValuesFieldUpdates.java |    25 +-
 .../lucene/index/NumericDocValuesWriter.java       |    66 +-
 .../lucene/index/OneMergeWrappingMergePolicy.java  |    23 +-
 .../java/org/apache/lucene/index/OrdTermState.java |    11 +-
 .../java/org/apache/lucene/index/OrdinalMap.java   |   195 +-
 .../lucene/index/ParallelCompositeReader.java      |   101 +-
 .../apache/lucene/index/ParallelLeafReader.java    |   158 +-
 .../apache/lucene/index/ParallelPostingsArray.java |     2 +-
 .../org/apache/lucene/index/PendingDeletes.java    |   116 +-
 .../apache/lucene/index/PendingSoftDeletes.java    |    72 +-
 .../index/PersistentSnapshotDeletionPolicy.java    |   133 +-
 .../java/org/apache/lucene/index/PointValues.java  |   210 +-
 .../org/apache/lucene/index/PointValuesWriter.java |   274 +-
 .../java/org/apache/lucene/index/PostingsEnum.java |    88 +-
 .../org/apache/lucene/index/PrefixCodedTerms.java  |    27 +-
 .../java/org/apache/lucene/index/QueryTimeout.java |    17 +-
 .../org/apache/lucene/index/QueryTimeoutImpl.java  |    37 +-
 .../lucene/index/RandomAccessVectorValues.java     |    55 +
 .../index/RandomAccessVectorValuesProducer.java    |    33 +
 .../org/apache/lucene/index/ReaderManager.java     |    69 +-
 .../java/org/apache/lucene/index/ReaderPool.java   |   173 +-
 .../java/org/apache/lucene/index/ReaderSlice.java  |     3 +-
 .../java/org/apache/lucene/index/ReaderUtil.java   |    34 +-
 .../org/apache/lucene/index/ReadersAndUpdates.java |   384 +-
 .../org/apache/lucene/index/SegmentCommitInfo.java |   182 +-
 .../apache/lucene/index/SegmentCoreReaders.java    |   130 +-
 .../org/apache/lucene/index/SegmentDocValues.java  |    36 +-
 .../lucene/index/SegmentDocValuesProducer.java     |    32 +-
 .../java/org/apache/lucene/index/SegmentInfo.java  |   152 +-
 .../java/org/apache/lucene/index/SegmentInfos.java |   788 +-
 .../org/apache/lucene/index/SegmentMerger.java     |   222 +-
 .../org/apache/lucene/index/SegmentReadState.java  |    41 +-
 .../org/apache/lucene/index/SegmentReader.java     |   161 +-
 .../org/apache/lucene/index/SegmentWriteState.java |    81 +-
 .../apache/lucene/index/SerialMergeScheduler.java  |    18 +-
 .../lucene/index/SimpleMergedSegmentWarmer.java    |    40 +-
 .../org/apache/lucene/index/SingleTermsEnum.java   |    19 +-
 .../index/SingletonSortedNumericDocValues.java     |    15 +-
 .../lucene/index/SingletonSortedSetDocValues.java  |    12 +-
 .../lucene/index/SlowCodecReaderWrapper.java       |    67 +-
 .../org/apache/lucene/index/SlowImpactsEnum.java   |    39 +-
 .../lucene/index/SnapshotDeletionPolicy.java       |   103 +-
 .../index/SoftDeletesDirectoryReaderWrapper.java   |   120 +-
 .../index/SoftDeletesRetentionMergePolicy.java     |   102 +-
 .../org/apache/lucene/index/SortFieldProvider.java |    55 +-
 .../org/apache/lucene/index/SortedDocValues.java   |    73 +-
 .../lucene/index/SortedDocValuesTermsEnum.java     |    11 +-
 .../apache/lucene/index/SortedDocValuesWriter.java |   109 +-
 .../lucene/index/SortedNumericDocValues.java       |    27 +-
 .../lucene/index/SortedNumericDocValuesWriter.java |   157 +-
 .../apache/lucene/index/SortedSetDocValues.java    |    75 +-
 .../lucene/index/SortedSetDocValuesTermsEnum.java  |    13 +-
 .../lucene/index/SortedSetDocValuesWriter.java     |   216 +-
 .../src/java/org/apache/lucene/index/Sorter.java   |   102 +-
 .../apache/lucene/index/SortingCodecReader.java    |   301 +-
 .../lucene/index/SortingStoredFieldsConsumer.java  |    96 +-
 .../lucene/index/SortingTermVectorsConsumer.java   |    93 +-
 .../lucene/index/StandardDirectoryReader.java      |   208 +-
 .../apache/lucene/index/StoredFieldVisitor.java    |    74 +-
 .../apache/lucene/index/StoredFieldsConsumer.java  |    36 +-
 .../src/java/org/apache/lucene/index/Term.java     |   144 +-
 .../java/org/apache/lucene/index/TermState.java    |    20 +-
 .../java/org/apache/lucene/index/TermStates.java   |   132 +-
 .../apache/lucene/index/TermVectorsConsumer.java   |    62 +-
 .../lucene/index/TermVectorsConsumerPerField.java  |    99 +-
 .../src/java/org/apache/lucene/index/Terms.java    |   125 +-
 .../java/org/apache/lucene/index/TermsEnum.java    |   313 +-
 .../java/org/apache/lucene/index/TermsHash.java    |    42 +-
 .../org/apache/lucene/index/TermsHashPerField.java |   104 +-
 .../org/apache/lucene/index/TieredMergePolicy.java |   500 +-
 .../index/TrackingTmpOutputDirectoryWrapper.java   |     3 +-
 .../org/apache/lucene/index/TwoPhaseCommit.java    |    29 +-
 .../apache/lucene/index/TwoPhaseCommitTool.java    |    54 +-
 .../lucene/index/UpgradeIndexMergePolicy.java      |   108 +-
 .../java/org/apache/lucene/index/VectorValues.java |   208 +
 .../apache/lucene/index/VectorValuesWriter.java    |   351 +
 .../java/org/apache/lucene/index/package-info.java |   365 +-
 .../src/java/org/apache/lucene/package-info.java   |     6 +-
 .../org/apache/lucene/search/AutomatonQuery.java   |   101 +-
 .../org/apache/lucene/search/BlendedTermQuery.java |   139 +-
 .../lucene/search/BlockMaxConjunctionScorer.java   |    20 +-
 .../org/apache/lucene/search/BlockMaxDISI.java     |    10 +-
 .../lucene/search/Boolean2ScorerSupplier.java      |   111 +-
 .../org/apache/lucene/search/BooleanClause.java    |    75 +-
 .../org/apache/lucene/search/BooleanQuery.java     |   199 +-
 .../org/apache/lucene/search/BooleanScorer.java    |    74 +-
 .../org/apache/lucene/search/BooleanWeight.java    |   102 +-
 .../org/apache/lucene/search/BoostAttribute.java   |    22 +-
 .../apache/lucene/search/BoostAttributeImpl.java   |     9 +-
 .../java/org/apache/lucene/search/BoostQuery.java  |    39 +-
 .../java/org/apache/lucene/search/BulkScorer.java  |    71 +-
 .../org/apache/lucene/search/CachingCollector.java |   128 +-
 .../apache/lucene/search/CollectionStatistics.java |   124 +-
 .../search/CollectionTerminatedException.java      |    16 +-
 .../java/org/apache/lucene/search/Collector.java   |    61 +-
 .../org/apache/lucene/search/CollectorManager.java |    35 +-
 .../org/apache/lucene/search/ConjunctionDISI.java  |   174 +-
 .../apache/lucene/search/ConjunctionScorer.java    |     9 +-
 .../apache/lucene/search/ConstantScoreQuery.java   |    49 +-
 .../apache/lucene/search/ConstantScoreScorer.java  |    65 +-
 .../apache/lucene/search/ConstantScoreWeight.java  |    12 +-
 .../search/ControlledRealTimeReopenThread.java     |   113 +-
 .../apache/lucene/search/DisiPriorityQueue.java    |    15 +-
 .../java/org/apache/lucene/search/DisiWrapper.java |     7 +-
 .../search/DisjunctionDISIApproximation.java       |     9 +-
 .../lucene/search/DisjunctionMatchesIterator.java  |    68 +-
 .../apache/lucene/search/DisjunctionMaxQuery.java  |   123 +-
 .../apache/lucene/search/DisjunctionMaxScorer.java |    26 +-
 .../DisjunctionScoreBlockBoundaryPropagator.java   |    40 +-
 .../apache/lucene/search/DisjunctionScorer.java    |    44 +-
 .../apache/lucene/search/DisjunctionSumScorer.java |    14 +-
 .../java/org/apache/lucene/search/DocIdSet.java    |    73 +-
 .../org/apache/lucene/search/DocIdSetIterator.java |   112 +-
 .../lucene/search/DocValuesFieldExistsQuery.java   |    20 +-
 .../lucene/search/DocValuesRewriteMethod.java      |   160 +-
 .../org/apache/lucene/search/DoubleValues.java     |    38 +-
 .../apache/lucene/search/DoubleValuesSource.java   |   266 +-
 .../apache/lucene/search/ExactPhraseMatcher.java   |    72 +-
 .../java/org/apache/lucene/search/Explanation.java |    63 +-
 .../org/apache/lucene/search/FieldComparator.java  |   565 +-
 .../lucene/search/FieldComparatorSource.java       |    11 +-
 .../java/org/apache/lucene/search/FieldDoc.java    |    35 +-
 .../apache/lucene/search/FieldValueHitQueue.java   |   114 +-
 .../org/apache/lucene/search/FilterCollector.java  |     2 -
 .../apache/lucene/search/FilterLeafCollector.java  |     2 -
 .../lucene/search/FilterMatchesIterator.java       |     9 +-
 .../org/apache/lucene/search/FilterScorable.java   |    11 +-
 .../org/apache/lucene/search/FilterScorer.java     |    22 +-
 .../org/apache/lucene/search/FilterWeight.java     |    25 +-
 .../lucene/search/FilteredDocIdSetIterator.java    |    12 +-
 .../lucene/search/FilteringFieldComparator.java    |    93 -
 .../search/FilteringLeafFieldComparator.java       |    39 -
 .../lucene/search/FilteringNumericComparator.java  |    52 -
 .../search/FilteringNumericLeafComparator.java     |   336 -
 .../lucene/search/FuzzyAutomatonBuilder.java       |    14 +-
 .../java/org/apache/lucene/search/FuzzyQuery.java  |   170 +-
 .../org/apache/lucene/search/FuzzyTermsEnum.java   |   171 +-
 .../java/org/apache/lucene/search/HitQueue.java    |    71 +-
 .../apache/lucene/search/HitsThresholdChecker.java |    23 +-
 .../java/org/apache/lucene/search/ImpactsDISI.java |    25 +-
 .../lucene/search/IndexOrDocValuesQuery.java       |    54 +-
 .../org/apache/lucene/search/IndexSearcher.java    |   690 +-
 .../org/apache/lucene/search/LRUQueryCache.java    |   279 +-
 .../org/apache/lucene/search/LeafCollector.java    |    74 +-
 .../apache/lucene/search/LeafFieldComparator.java  |   121 +-
 .../org/apache/lucene/search/LeafSimScorer.java    |    31 +-
 .../org/apache/lucene/search/LiveFieldValues.java  |    50 +-
 .../java/org/apache/lucene/search/LongValues.java  |    10 +-
 .../org/apache/lucene/search/LongValuesSource.java |    96 +-
 .../apache/lucene/search/MatchAllDocsQuery.java    |    14 +-
 .../org/apache/lucene/search/MatchNoDocsQuery.java |    12 +-
 .../src/java/org/apache/lucene/search/Matches.java |    19 +-
 .../org/apache/lucene/search/MatchesIterator.java  |    36 +-
 .../org/apache/lucene/search/MatchesUtils.java     |    73 +-
 .../search/MaxNonCompetitiveBoostAttribute.java    |    34 +-
 .../MaxNonCompetitiveBoostAttributeImpl.java       |    17 +-
 .../apache/lucene/search/MaxScoreAccumulator.java  |    14 +-
 .../org/apache/lucene/search/MaxScoreCache.java    |    30 +-
 .../lucene/search/MaxScoreSumPropagator.java       |    22 +-
 .../lucene/search/MinShouldMatchSumScorer.java     |   196 +-
 .../org/apache/lucene/search/MultiCollector.java   |    69 +-
 .../lucene/search/MultiCollectorManager.java       |    30 +-
 .../lucene/search/MultiLeafFieldComparator.java    |    18 +-
 .../org/apache/lucene/search/MultiPhraseQuery.java |   204 +-
 .../org/apache/lucene/search/MultiTermQuery.java   |   317 +-
 .../search/MultiTermQueryConstantScoreWrapper.java |    66 +-
 .../java/org/apache/lucene/search/Multiset.java    |    14 +-
 .../org/apache/lucene/search/NGramPhraseQuery.java |    32 +-
 .../org/apache/lucene/search/NamedMatches.java     |    32 +-
 .../lucene/search/NormsFieldExistsQuery.java       |    16 +-
 .../org/apache/lucene/search/PhraseMatcher.java    |    50 +-
 .../org/apache/lucene/search/PhrasePositions.java  |    41 +-
 .../java/org/apache/lucene/search/PhraseQuery.java |   250 +-
 .../java/org/apache/lucene/search/PhraseQueue.java |     5 +-
 .../org/apache/lucene/search/PhraseScorer.java     |     1 -
 .../org/apache/lucene/search/PhraseWeight.java     |   146 +-
 .../org/apache/lucene/search/PointInSetQuery.java  |   167 +-
 .../org/apache/lucene/search/PointRangeQuery.java  |   184 +-
 .../lucene/search/PositiveScoresOnlyCollector.java |    12 +-
 .../java/org/apache/lucene/search/PrefixQuery.java |    23 +-
 .../src/java/org/apache/lucene/search/Query.java   |   109 +-
 .../java/org/apache/lucene/search/QueryCache.java  |     9 +-
 .../apache/lucene/search/QueryCachingPolicy.java   |    23 +-
 .../org/apache/lucene/search/QueryRescorer.java    |   101 +-
 .../org/apache/lucene/search/QueryVisitor.java     |    35 +-
 .../lucene/search/QueueSizeBasedExecutor.java      |    10 +-
 .../org/apache/lucene/search/ReferenceManager.java |   215 +-
 .../java/org/apache/lucene/search/RegexpQuery.java |   117 +-
 .../apache/lucene/search/ReqExclBulkScorer.java    |     3 -
 .../org/apache/lucene/search/ReqExclScorer.java    |    33 +-
 .../org/apache/lucene/search/ReqOptSumScorer.java  |   269 +-
 .../java/org/apache/lucene/search/Rescorer.java    |    42 +-
 .../java/org/apache/lucene/search/Scorable.java    |    47 +-
 .../java/org/apache/lucene/search/ScoreAndDoc.java |     7 +-
 .../lucene/search/ScoreCachingWrappingScorer.java  |    17 +-
 .../java/org/apache/lucene/search/ScoreDoc.java    |    13 +-
 .../java/org/apache/lucene/search/ScoreMode.java   |    36 +-
 .../src/java/org/apache/lucene/search/Scorer.java  |    72 +-
 .../org/apache/lucene/search/ScorerSupplier.java   |    25 +-
 .../java/org/apache/lucene/search/ScorerUtil.java  |    49 +
 .../org/apache/lucene/search/ScoringRewrite.java   |   181 +-
 .../org/apache/lucene/search/SearcherFactory.java  |    35 +-
 .../lucene/search/SearcherLifetimeManager.java     |   168 +-
 .../org/apache/lucene/search/SearcherManager.java  |   153 +-
 .../org/apache/lucene/search/SegmentCacheable.java |    19 +-
 .../org/apache/lucene/search/SimpleCollector.java  |     3 -
 .../lucene/search/SimpleFieldComparator.java       |     5 +-
 .../org/apache/lucene/search/SliceExecutor.java    |    11 +-
 .../apache/lucene/search/SloppyPhraseMatcher.java  |   336 +-
 .../src/java/org/apache/lucene/search/Sort.java    |   146 +-
 .../java/org/apache/lucene/search/SortField.java   |   370 +-
 .../org/apache/lucene/search/SortRescorer.java     |    29 +-
 .../lucene/search/SortedNumericSelector.java       |    65 +-
 .../lucene/search/SortedNumericSortField.java      |   164 +-
 .../apache/lucene/search/SortedSetSelector.java    |    98 +-
 .../apache/lucene/search/SortedSetSortField.java   |    81 +-
 .../org/apache/lucene/search/SynonymQuery.java     |   161 +-
 .../lucene/search/TermCollectingRewrite.java       |    37 +-
 .../org/apache/lucene/search/TermInSetQuery.java   |    68 +-
 .../apache/lucene/search/TermMatchesIterator.java  |     9 +-
 .../java/org/apache/lucene/search/TermQuery.java   |    94 +-
 .../org/apache/lucene/search/TermRangeQuery.java   |   130 +-
 .../java/org/apache/lucene/search/TermScorer.java  |    27 +-
 .../org/apache/lucene/search/TermStatistics.java   |    92 +-
 .../lucene/search/TimeLimitingCollector.java       |   176 +-
 .../src/java/org/apache/lucene/search/TopDocs.java |   136 +-
 .../org/apache/lucene/search/TopDocsCollector.java |   125 +-
 .../apache/lucene/search/TopFieldCollector.java    |   290 +-
 .../org/apache/lucene/search/TopFieldDocs.java     |    24 +-
 .../apache/lucene/search/TopScoreDocCollector.java |   116 +-
 .../org/apache/lucene/search/TopTermsRewrite.java  |   244 +-
 .../lucene/search/TotalHitCountCollector.java      |     6 +-
 .../java/org/apache/lucene/search/TotalHits.java   |    32 +-
 .../org/apache/lucene/search/TwoPhaseIterator.java |    51 +-
 .../search/UsageTrackingQueryCachingPolicy.java    |    49 +-
 .../java/org/apache/lucene/search/WANDScorer.java  |   187 +-
 .../src/java/org/apache/lucene/search/Weight.java  |   225 +-
 .../org/apache/lucene/search/WildcardQuery.java    |    59 +-
 .../lucene/search/comparators/DocComparator.java   |   180 +
 .../search/comparators/DoubleComparator.java       |   114 +
 .../lucene/search/comparators/FloatComparator.java |   114 +
 .../lucene/search/comparators/IntComparator.java   |   116 +
 .../lucene/search/comparators/LongComparator.java  |   116 +
 .../lucene/search/comparators/MinDocIterator.java  |    63 +
 .../search/comparators/NumericComparator.java      |   285 +
 .../lucene/search/comparators/package-info.java    |    22 +
 .../org/apache/lucene/search/package-info.java     |   839 +-
 .../lucene/search/similarities/AfterEffect.java    |    31 +-
 .../lucene/search/similarities/AfterEffectB.java   |    17 +-
 .../lucene/search/similarities/AfterEffectL.java   |     8 +-
 .../lucene/search/similarities/Axiomatic.java      |   160 +-
 .../lucene/search/similarities/AxiomaticF1EXP.java |    82 +-
 .../lucene/search/similarities/AxiomaticF1LOG.java |    76 +-
 .../lucene/search/similarities/AxiomaticF2EXP.java |    85 +-
 .../lucene/search/similarities/AxiomaticF2LOG.java |    80 +-
 .../lucene/search/similarities/AxiomaticF3EXP.java |    80 +-
 .../lucene/search/similarities/AxiomaticF3LOG.java |    73 +-
 .../lucene/search/similarities/BM25Similarity.java |   140 +-
 .../lucene/search/similarities/BasicModel.java     |    37 +-
 .../lucene/search/similarities/BasicModelG.java    |    34 +-
 .../lucene/search/similarities/BasicModelIF.java   |    23 +-
 .../lucene/search/similarities/BasicModelIn.java   |    18 +-
 .../lucene/search/similarities/BasicModelIne.java  |    27 +-
 .../lucene/search/similarities/BasicStats.java     |    32 +-
 .../search/similarities/BooleanSimilarity.java     |    18 +-
 .../search/similarities/ClassicSimilarity.java     |    23 +-
 .../lucene/search/similarities/DFISimilarity.java  |    85 +-
 .../lucene/search/similarities/DFRSimilarity.java  |   146 +-
 .../lucene/search/similarities/Distribution.java   |    30 +-
 .../lucene/search/similarities/DistributionLL.java |    10 +-
 .../search/similarities/DistributionSPL.java       |    19 +-
 .../lucene/search/similarities/IBSimilarity.java   |   149 +-
 .../lucene/search/similarities/Independence.java   |    21 +-
 .../similarities/IndependenceChiSquared.java       |    15 +-
 .../search/similarities/IndependenceSaturated.java |    13 +-
 .../similarities/IndependenceStandardized.java     |    16 +-
 .../search/similarities/LMDirichletSimilarity.java |    93 +-
 .../similarities/LMJelinekMercerSimilarity.java    |    70 +-
 .../lucene/search/similarities/LMSimilarity.java   |   101 +-
 .../apache/lucene/search/similarities/Lambda.java  |    21 +-
 .../lucene/search/similarities/LambdaDF.java       |    17 +-
 .../lucene/search/similarities/LambdaTTF.java      |    18 +-
 .../search/similarities/MultiSimilarity.java       |    25 +-
 .../lucene/search/similarities/Normalization.java  |    52 +-
 .../search/similarities/NormalizationH1.java       |    47 +-
 .../search/similarities/NormalizationH2.java       |    48 +-
 .../search/similarities/NormalizationH3.java       |    33 +-
 .../lucene/search/similarities/NormalizationZ.java |    28 +-
 .../similarities/PerFieldSimilarityWrapper.java    |    26 +-
 .../lucene/search/similarities/Similarity.java     |   216 +-
 .../lucene/search/similarities/SimilarityBase.java |   151 +-
 .../search/similarities/TFIDFSimilarity.java       |   485 +-
 .../lucene/search/similarities/package-info.java   |   191 +-
 .../lucene/search/spans/ConjunctionSpans.java      |    24 +-
 .../apache/lucene/search/spans/ContainSpans.java   |    18 +-
 .../lucene/search/spans/FieldMaskingSpanQuery.java |    68 +-
 .../apache/lucene/search/spans/FilterSpans.java    |    57 +-
 .../lucene/search/spans/NearSpansOrdered.java      |    46 +-
 .../lucene/search/spans/NearSpansUnordered.java    |    40 +-
 .../apache/lucene/search/spans/SpanBoostQuery.java |    33 +-
 .../apache/lucene/search/spans/SpanCollector.java  |    16 +-
 .../lucene/search/spans/SpanContainQuery.java      |    35 +-
 .../lucene/search/spans/SpanContainingQuery.java   |    35 +-
 .../apache/lucene/search/spans/SpanFirstQuery.java |    27 +-
 .../search/spans/SpanMultiTermQueryWrapper.java    |   200 +-
 .../apache/lucene/search/spans/SpanNearQuery.java  |   131 +-
 .../apache/lucene/search/spans/SpanNotQuery.java   |   107 +-
 .../apache/lucene/search/spans/SpanOrQuery.java    |    59 +-
 .../search/spans/SpanPositionCheckQuery.java       |    63 +-
 .../lucene/search/spans/SpanPositionQueue.java     |     8 +-
 .../search/spans/SpanPositionRangeQuery.java       |    33 +-
 .../org/apache/lucene/search/spans/SpanQuery.java  |    11 +-
 .../org/apache/lucene/search/spans/SpanScorer.java |    39 +-
 .../apache/lucene/search/spans/SpanTermQuery.java  |    98 +-
 .../org/apache/lucene/search/spans/SpanWeight.java |   255 +-
 .../lucene/search/spans/SpanWithinQuery.java       |    36 +-
 .../java/org/apache/lucene/search/spans/Spans.java |    62 +-
 .../org/apache/lucene/search/spans/TermSpans.java  |    28 +-
 .../apache/lucene/search/spans/package-info.java   |    97 +-
 .../lucene/store/AlreadyClosedException.java       |     7 +-
 .../org/apache/lucene/store/BaseDirectory.java     |     9 +-
 .../org/apache/lucene/store/BufferedChecksum.java  |    18 +-
 .../lucene/store/BufferedChecksumIndexInput.java   |     9 +-
 .../apache/lucene/store/BufferedIndexInput.java    |   146 +-
 .../apache/lucene/store/ByteArrayDataInput.java    |    41 +-
 .../apache/lucene/store/ByteArrayDataOutput.java   |    11 +-
 .../org/apache/lucene/store/ByteBufferGuard.java   |    65 +-
 .../apache/lucene/store/ByteBufferIndexInput.java  |   196 +-
 .../apache/lucene/store/ByteBuffersDataInput.java  |   144 +-
 .../apache/lucene/store/ByteBuffersDataOutput.java |   240 +-
 .../apache/lucene/store/ByteBuffersDirectory.java  |   141 +-
 .../apache/lucene/store/ByteBuffersIndexInput.java |    33 +-
 .../lucene/store/ByteBuffersIndexOutput.java       |    25 +-
 .../apache/lucene/store/ChecksumIndexInput.java    |    25 +-
 .../java/org/apache/lucene/store/DataInput.java    |   167 +-
 .../java/org/apache/lucene/store/DataOutput.java   |   174 +-
 .../java/org/apache/lucene/store/Directory.java    |   106 +-
 .../java/org/apache/lucene/store/FSDirectory.java  |   260 +-
 .../org/apache/lucene/store/FSLockFactory.java     |    26 +-
 .../apache/lucene/store/FileSwitchDirectory.java   |    60 +-
 .../org/apache/lucene/store/FilterDirectory.java   |    35 +-
 .../java/org/apache/lucene/store/FlushInfo.java    |    45 +-
 .../java/org/apache/lucene/store/IOContext.java    |    78 +-
 .../java/org/apache/lucene/store/IndexInput.java   |   101 +-
 .../java/org/apache/lucene/store/IndexOutput.java  |    26 +-
 .../apache/lucene/store/InputStreamDataInput.java  |    13 +-
 .../src/java/org/apache/lucene/store/Lock.java     |    42 +-
 .../java/org/apache/lucene/store/LockFactory.java  |    35 +-
 .../lucene/store/LockObtainFailedException.java    |     9 +-
 .../lucene/store/LockReleaseFailedException.java   |     6 +-
 .../org/apache/lucene/store/LockStressTest.java    |   107 +-
 .../store/LockValidatingDirectoryWrapper.java      |    10 +-
 .../org/apache/lucene/store/LockVerifyServer.java  |   168 +-
 .../org/apache/lucene/store/MMapDirectory.java     |   355 +-
 .../java/org/apache/lucene/store/MergeInfo.java    |    64 +-
 .../org/apache/lucene/store/NIOFSDirectory.java    |   127 +-
 .../apache/lucene/store/NRTCachingDirectory.java   |   107 +-
 .../apache/lucene/store/NativeFSLockFactory.java   |    99 +-
 .../org/apache/lucene/store/NoLockFactory.java     |    18 +-
 .../lucene/store/OutputStreamDataOutput.java       |    11 +-
 .../lucene/store/OutputStreamIndexOutput.java      |    13 +-
 .../org/apache/lucene/store/RandomAccessInput.java |    22 +-
 .../lucene/store/RateLimitedIndexOutput.java       |    20 +-
 .../java/org/apache/lucene/store/RateLimiter.java  |    78 +-
 .../apache/lucene/store/SimpleFSLockFactory.java   |    75 +-
 .../lucene/store/SingleInstanceLockFactory.java    |    13 +-
 .../apache/lucene/store/SleepingLockWrapper.java   |    60 +-
 .../lucene/store/TrackingDirectoryWrapper.java     |     7 +-
 .../apache/lucene/store/VerifyingLockFactory.java  |    23 +-
 .../java/org/apache/lucene/store/package-info.java |     4 +-
 .../java/org/apache/lucene/util/Accountable.java   |    12 +-
 .../java/org/apache/lucene/util/Accountables.java  |   115 +-
 .../lucene/util/ArrayInPlaceMergeSorter.java       |     3 +-
 .../org/apache/lucene/util/ArrayIntroSorter.java   |     3 +-
 .../org/apache/lucene/util/ArrayTimSorter.java     |     3 +-
 .../src/java/org/apache/lucene/util/ArrayUtil.java |   400 +-
 .../src/java/org/apache/lucene/util/Attribute.java |     8 +-
 .../org/apache/lucene/util/AttributeFactory.java   |   124 +-
 .../java/org/apache/lucene/util/AttributeImpl.java |    89 +-
 .../org/apache/lucene/util/AttributeReflector.java |    11 +-
 .../org/apache/lucene/util/AttributeSource.java    |   354 +-
 .../java/org/apache/lucene/util/BitDocIdSet.java   |    14 +-
 .../src/java/org/apache/lucene/util/BitSet.java    |    45 +-
 .../org/apache/lucene/util/BitSetIterator.java     |    13 +-
 .../src/java/org/apache/lucene/util/BitUtil.java   |   107 +-
 .../core/src/java/org/apache/lucene/util/Bits.java |    29 +-
 .../java/org/apache/lucene/util/ByteBlockPool.java |   253 +-
 .../src/java/org/apache/lucene/util/BytesRef.java  |   137 +-
 .../java/org/apache/lucene/util/BytesRefArray.java |   106 +-
 .../org/apache/lucene/util/BytesRefBuilder.java    |    62 +-
 .../org/apache/lucene/util/BytesRefComparator.java |    27 +-
 .../java/org/apache/lucene/util/BytesRefHash.java  |   245 +-
 .../org/apache/lucene/util/BytesRefIterator.java   |    22 +-
 .../src/java/org/apache/lucene/util/CharsRef.java  |   115 +-
 .../org/apache/lucene/util/CharsRefBuilder.java    |    35 +-
 .../org/apache/lucene/util/ClassLoaderUtils.java   |    13 +-
 .../lucene/util/ClasspathResourceLoader.java       |    97 +
 .../apache/lucene/util/CloseableThreadLocal.java   |    56 +-
 .../org/apache/lucene/util/CollectionUtil.java     |    54 +-
 .../org/apache/lucene/util/CommandLineUtil.java    |    75 +-
 .../src/java/org/apache/lucene/util/Constants.java |    45 +-
 .../src/java/org/apache/lucene/util/Counter.java   |    29 +-
 .../org/apache/lucene/util/DocIdSetBuilder.java    |    59 +-
 .../org/apache/lucene/util/FilterIterator.java     |    20 +-
 .../java/org/apache/lucene/util/FixedBitSet.java   |   205 +-
 .../src/java/org/apache/lucene/util/FixedBits.java |     9 +-
 .../lucene/util/FixedLengthBytesRefArray.java      |    65 +-
 .../lucene/util/FrequencyTrackingRingBuffer.java   |    57 +-
 .../java/org/apache/lucene/util/IOSupplier.java    |     3 +-
 .../src/java/org/apache/lucene/util/IOUtils.java   |   503 +-
 .../org/apache/lucene/util/InPlaceMergeSorter.java |    12 +-
 .../java/org/apache/lucene/util/InfoStream.java    |    54 +-
 .../org/apache/lucene/util/IntArrayDocIdSet.java   |    11 +-
 .../java/org/apache/lucene/util/IntBlockPool.java  |   220 +-
 .../java/org/apache/lucene/util/IntroSelector.java |    53 +-
 .../java/org/apache/lucene/util/IntroSorter.java   |    13 +-
 .../src/java/org/apache/lucene/util/IntsRef.java   |    89 +-
 .../org/apache/lucene/util/IntsRefBuilder.java     |    25 +-
 .../org/apache/lucene/util/LSBRadixSorter.java     |    12 +-
 .../java/org/apache/lucene/util/LongBitSet.java    |   197 +-
 .../src/java/org/apache/lucene/util/LongHeap.java  |   242 +
 .../java/org/apache/lucene/util/LongValues.java    |    38 +-
 .../src/java/org/apache/lucene/util/LongsRef.java  |    96 +-
 .../org/apache/lucene/util/MSBRadixSorter.java     |    62 +-
 .../src/java/org/apache/lucene/util/MapOfSets.java |    30 +-
 .../src/java/org/apache/lucene/util/MathUtil.java  |    83 +-
 .../org/apache/lucene/util/MergedIterator.java     |    60 +-
 .../org/apache/lucene/util/NamedSPILoader.java     |    75 +-
 .../org/apache/lucene/util/NamedThreadFactory.java |    33 +-
 .../java/org/apache/lucene/util/NotDocIdSet.java   |    13 +-
 .../java/org/apache/lucene/util/NumericUtils.java  |   158 +-
 .../java/org/apache/lucene/util/OfflineSorter.java |   306 +-
 .../java/org/apache/lucene/util/PagedBytes.java    |   127 +-
 .../apache/lucene/util/PrintStreamInfoStream.java  |    29 +-
 .../java/org/apache/lucene/util/PriorityQueue.java |   125 +-
 .../java/org/apache/lucene/util/QueryBuilder.java  |   347 +-
 .../java/org/apache/lucene/util/RadixSelector.java |    63 +-
 .../org/apache/lucene/util/RamUsageEstimator.java  |   297 +-
 .../lucene/util/RecyclingByteBlockAllocator.java   |    68 +-
 .../lucene/util/RecyclingIntBlockAllocator.java    |    70 +-
 .../src/java/org/apache/lucene/util/RefCount.java  |    37 +-
 .../org/apache/lucene/util/ResourceLoader.java     |    34 +
 .../apache/lucene/util/ResourceLoaderAware.java    |    34 +
 .../org/apache/lucene/util/RoaringDocIdSet.java    |    41 +-
 .../java/org/apache/lucene/util/RollingBuffer.java |    63 +-
 .../lucene/util/SameThreadExecutorService.java     |     6 +-
 .../src/java/org/apache/lucene/util/Selector.java  |    17 +-
 .../org/apache/lucene/util/SentinelIntSet.java     |    74 +-
 .../src/java/org/apache/lucene/util/SetOnce.java   |    29 +-
 .../java/org/apache/lucene/util/SloppyMath.java    |   226 +-
 .../java/org/apache/lucene/util/SmallFloat.java    |    76 +-
 .../src/java/org/apache/lucene/util/Sorter.java    |    55 +-
 .../org/apache/lucene/util/SparseFixedBitSet.java  |    58 +-
 .../apache/lucene/util/StrictStringTokenizer.java  |    13 +-
 .../java/org/apache/lucene/util/StringHelper.java  |   171 +-
 .../apache/lucene/util/StringMSBRadixSorter.java   |     3 +-
 .../org/apache/lucene/util/SuppressForbidden.java  |     6 +-
 .../lucene/util/ThreadInterruptedException.java    |     6 +-
 .../src/java/org/apache/lucene/util/TimSorter.java |    67 +-
 .../java/org/apache/lucene/util/ToStringUtils.java |    11 +-
 .../java/org/apache/lucene/util/UnicodeUtil.java   |   419 +-
 .../java/org/apache/lucene/util/VectorUtil.java    |   103 +
 .../src/java/org/apache/lucene/util/Version.java   |   199 +-
 .../java/org/apache/lucene/util/VirtualMethod.java |   119 +-
 .../org/apache/lucene/util/WeakIdentityMap.java    |   164 +-
 .../org/apache/lucene/util/automaton/Automata.java |   234 +-
 .../apache/lucene/util/automaton/Automaton.java    |   709 +-
 .../lucene/util/automaton/AutomatonProvider.java   |    15 +-
 .../lucene/util/automaton/ByteRunAutomaton.java    |    10 +-
 .../util/automaton/CharacterRunAutomaton.java      |    30 +-
 .../lucene/util/automaton/CompiledAutomaton.java   |   239 +-
 .../automaton/DaciukMihovAutomatonBuilder.java     |   224 +-
 .../util/automaton/FiniteStringsIterator.java      |    73 +-
 .../org/apache/lucene/util/automaton/IntSet.java   |    46 +-
 .../util/automaton/Lev1ParametricDescription.java  |    75 +-
 .../util/automaton/Lev1TParametricDescription.java |    82 +-
 .../util/automaton/Lev2ParametricDescription.java  |   225 +-
 .../util/automaton/Lev2TParametricDescription.java |   296 +-
 .../lucene/util/automaton/LevenshteinAutomata.java |   252 +-
 .../automaton/LimitedFiniteStringsIterator.java    |    26 +-
 .../util/automaton/MinimizationOperations.java     |   111 +-
 .../apache/lucene/util/automaton/Operations.java   |   507 +-
 .../org/apache/lucene/util/automaton/RegExp.java   |   629 +-
 .../apache/lucene/util/automaton/RunAutomaton.java |    84 +-
 .../apache/lucene/util/automaton/SortedIntSet.java |    56 +-
 .../apache/lucene/util/automaton/StatePair.java    |    32 +-
 .../TooComplexToDeterminizeException.java          |    33 +-
 .../apache/lucene/util/automaton/Transition.java   |    20 +-
 .../apache/lucene/util/automaton/UTF32ToUTF8.java  |   132 +-
 .../apache/lucene/util/automaton/package-info.java |    28 +-
 .../java/org/apache/lucene/util/bkd/BKDConfig.java |   104 +
 .../apache/lucene/util/bkd/BKDRadixSelector.java   |   488 +-
 .../java/org/apache/lucene/util/bkd/BKDReader.java |   585 +-
 .../java/org/apache/lucene/util/bkd/BKDWriter.java |  1788 +-
 .../org/apache/lucene/util/bkd/DocIdsWriter.java   |    31 +-
 .../apache/lucene/util/bkd/HeapPointReader.java    |    41 +-
 .../apache/lucene/util/bkd/HeapPointWriter.java    |    92 +-
 .../lucene/util/bkd/MutablePointsReaderUtils.java  |   129 +-
 .../apache/lucene/util/bkd/OfflinePointReader.java |    85 +-
 .../apache/lucene/util/bkd/OfflinePointWriter.java |    49 +-
 .../org/apache/lucene/util/bkd/PointReader.java    |    11 +-
 .../org/apache/lucene/util/bkd/PointValue.java     |     9 +-
 .../org/apache/lucene/util/bkd/PointWriter.java    |    13 +-
 .../org/apache/lucene/util/bkd/package-info.java   |     5 +-
 .../java/org/apache/lucene/util/compress/LZ4.java  |   112 +-
 .../util/compress/LowercaseAsciiCompression.java   |    36 +-
 .../apache/lucene/util/compress/package-info.java  |     6 +-
 .../org/apache/lucene/util/fst/BitTableUtil.java   |    76 +-
 .../lucene/util/fst/ByteSequenceOutputs.java       |    22 +-
 .../apache/lucene/util/fst/BytesRefFSTEnum.java    |    37 +-
 .../org/apache/lucene/util/fst/BytesStore.java     |   112 +-
 .../lucene/util/fst/CharSequenceOutputs.java       |    32 +-
 .../src/java/org/apache/lucene/util/fst/FST.java   |   502 +-
 .../org/apache/lucene/util/fst/FSTCompiler.java    |   330 +-
 .../java/org/apache/lucene/util/fst/FSTEnum.java   |   214 +-
 .../java/org/apache/lucene/util/fst/FSTStore.java  |    14 +-
 .../apache/lucene/util/fst/ForwardBytesReader.java |     1 -
 .../apache/lucene/util/fst/IntSequenceOutputs.java |    34 +-
 .../org/apache/lucene/util/fst/IntsRefFSTEnum.java |    39 +-
 .../java/org/apache/lucene/util/fst/NoOutputs.java |    43 +-
 .../java/org/apache/lucene/util/fst/NodeHash.java  |    64 +-
 .../apache/lucene/util/fst/OffHeapFSTStore.java    |    77 +-
 .../org/apache/lucene/util/fst/OnHeapFSTStore.java |   115 +-
 .../java/org/apache/lucene/util/fst/Outputs.java   |    55 +-
 .../org/apache/lucene/util/fst/PairOutputs.java    |    64 +-
 .../apache/lucene/util/fst/PositiveIntOutputs.java |    16 +-
 .../apache/lucene/util/fst/ReverseBytesReader.java |     6 +-
 .../lucene/util/fst/ReverseRandomAccessReader.java |    76 +-
 .../src/java/org/apache/lucene/util/fst/Util.java  |   430 +-
 .../org/apache/lucene/util/fst/package-info.java   |    41 +-
 .../util/graph/GraphTokenStreamFiniteStrings.java  |    63 +-
 .../org/apache/lucene/util/graph/package-info.java |     4 +-
 .../org/apache/lucene/util/hnsw/BoundsChecker.java |    75 +
 .../org/apache/lucene/util/hnsw/HnswGraph.java     |   192 +
 .../apache/lucene/util/hnsw/HnswGraphBuilder.java  |   276 +
 .../org/apache/lucene/util/hnsw/NeighborArray.java |    76 +
 .../org/apache/lucene/util/hnsw/NeighborQueue.java |   120 +
 .../org/apache/lucene/util/hnsw/package-info.java  |    22 +
 .../apache/lucene/util/mutable/MutableValue.java   |    10 +-
 .../lucene/util/mutable/MutableValueBool.java      |    12 +-
 .../lucene/util/mutable/MutableValueDate.java      |     3 +-
 .../lucene/util/mutable/MutableValueDouble.java    |    13 +-
 .../lucene/util/mutable/MutableValueFloat.java     |    11 +-
 .../lucene/util/mutable/MutableValueInt.java       |    20 +-
 .../lucene/util/mutable/MutableValueLong.java      |    18 +-
 .../lucene/util/mutable/MutableValueStr.java       |    12 +-
 .../apache/lucene/util/mutable/package-info.java   |     6 +-
 .../java/org/apache/lucene/util/package-info.java  |     4 +-
 .../util/packed/AbstractBlockPackedWriter.java     |    21 +-
 .../lucene/util/packed/AbstractPagedMutable.java   |    14 +-
 .../lucene/util/packed/BlockPackedReader.java      |    29 +-
 .../util/packed/BlockPackedReaderIterator.java     |    31 +-
 .../lucene/util/packed/BlockPackedWriter.java      |    56 +-
 .../apache/lucene/util/packed/BulkOperation.java   |   243 +-
 .../lucene/util/packed/BulkOperationPacked.java    |    51 +-
 .../lucene/util/packed/BulkOperationPacked1.java   |    17 +-
 .../lucene/util/packed/BulkOperationPacked10.java  |    17 +-
 .../lucene/util/packed/BulkOperationPacked11.java  |    17 +-
 .../lucene/util/packed/BulkOperationPacked12.java  |    17 +-
 .../lucene/util/packed/BulkOperationPacked13.java  |    17 +-
 .../lucene/util/packed/BulkOperationPacked14.java  |    17 +-
 .../lucene/util/packed/BulkOperationPacked15.java  |    17 +-
 .../lucene/util/packed/BulkOperationPacked16.java  |    23 +-
 .../lucene/util/packed/BulkOperationPacked17.java  |    17 +-
 .../lucene/util/packed/BulkOperationPacked18.java  |    17 +-
 .../lucene/util/packed/BulkOperationPacked19.java  |    23 +-
 .../lucene/util/packed/BulkOperationPacked2.java   |    17 +-
 .../lucene/util/packed/BulkOperationPacked20.java  |    17 +-
 .../lucene/util/packed/BulkOperationPacked21.java  |    29 +-
 .../lucene/util/packed/BulkOperationPacked22.java  |    17 +-
 .../lucene/util/packed/BulkOperationPacked23.java  |    35 +-
 .../lucene/util/packed/BulkOperationPacked24.java  |    17 +-
 .../lucene/util/packed/BulkOperationPacked3.java   |    17 +-
 .../lucene/util/packed/BulkOperationPacked4.java   |    17 +-
 .../lucene/util/packed/BulkOperationPacked5.java   |    17 +-
 .../lucene/util/packed/BulkOperationPacked6.java   |    17 +-
 .../lucene/util/packed/BulkOperationPacked7.java   |    17 +-
 .../lucene/util/packed/BulkOperationPacked8.java   |    17 +-
 .../lucene/util/packed/BulkOperationPacked9.java   |    17 +-
 .../packed/BulkOperationPackedSingleBlock.java     |    43 +-
 .../lucene/util/packed/DeltaPackedLongValues.java  |    18 +-
 .../lucene/util/packed/DirectMonotonicReader.java  |    68 +-
 .../lucene/util/packed/DirectMonotonicWriter.java  |    58 +-
 .../packed/DirectPacked64SingleBlockReader.java    |     5 +-
 .../lucene/util/packed/DirectPackedReader.java     |    21 +-
 .../apache/lucene/util/packed/DirectReader.java    |   157 +-
 .../apache/lucene/util/packed/DirectWriter.java    |    69 +-
 .../apache/lucene/util/packed/GrowableWriter.java  |    31 +-
 .../util/packed/MonotonicBlockPackedReader.java    |    40 +-
 .../util/packed/MonotonicBlockPackedWriter.java    |    47 +-
 .../lucene/util/packed/MonotonicLongValues.java    |    32 +-
 .../org/apache/lucene/util/packed/Packed64.java    |   112 +-
 .../lucene/util/packed/Packed64SingleBlock.java    |    56 +-
 .../apache/lucene/util/packed/PackedDataInput.java |    21 +-
 .../lucene/util/packed/PackedDataOutput.java       |    24 +-
 .../org/apache/lucene/util/packed/PackedInts.java  |   663 +-
 .../lucene/util/packed/PackedLongValues.java       |    57 +-
 .../lucene/util/packed/PackedReaderIterator.java   |    13 +-
 .../apache/lucene/util/packed/PackedWriter.java    |     7 +-
 .../lucene/util/packed/PagedGrowableWriter.java    |    26 +-
 .../apache/lucene/util/packed/PagedMutable.java    |    14 +-
 .../apache/lucene/util/packed/gen_BulkOperation.py |     2 +
 .../lucene/util/packed/gen_Packed64SingleBlock.py  |     3 +
 .../apache/lucene/util/packed/package-info.java    |   143 +-
 lucene/core/src/java/overview.html                 |     6 +-
 .../org.apache.lucene.analysis.TokenizerFactory    |    16 +
 .../services/org.apache.lucene.codecs.Codec        |     2 +-
 .../org.apache.lucene.analysis.CharFilterFactory   |    16 +
 .../org.apache.lucene.analysis.TokenFilterFactory  |    16 +
 .../src/test/org/apache/lucene/TestAssertions.java |    17 +-
 .../core/src/test/org/apache/lucene/TestDemo.java  |    10 +-
 .../test/org/apache/lucene/TestExternalCodecs.java |    50 +-
 .../apache/lucene/TestMergeSchedulerExternal.java  |    29 +-
 .../src/test/org/apache/lucene/TestSearch.java     |   141 +-
 .../org/apache/lucene/TestSearchForDuplicates.java |   163 +-
 .../lucene/analysis/FakeCharFilterFactory.java     |    41 +
 .../lucene/analysis/FakeTokenFilterFactory.java    |    40 +
 .../analysis/TestAbstractAnalysisFactory.java      |    39 +
 .../lucene/analysis/TestAnalysisSPILoader.java     |   184 +
 .../lucene/analysis/TestAnalyzerWrapper.java       |    49 +-
 .../lucene/analysis/TestCachingTokenFilter.java    |    93 +-
 .../apache/lucene/analysis/TestCharArrayMap.java   |   112 +-
 .../apache/lucene/analysis/TestCharArraySet.java   |   239 +-
 .../org/apache/lucene/analysis/TestCharFilter.java |     8 +-
 .../apache/lucene/analysis/TestCharacterUtils.java |    40 +-
 .../analysis/TestDelegatingAnalyzerWrapper.java    |    85 +-
 .../lucene/analysis/TestGraphTokenFilter.java      |    60 +-
 .../lucene/analysis/TestGraphTokenizers.java       |   415 +-
 .../lucene/analysis/TestReusableStringReader.java  |     8 +-
 .../org/apache/lucene/analysis/TestStopFilter.java |   104 +-
 .../test/org/apache/lucene/analysis/TestToken.java |   114 +-
 .../apache/lucene/analysis/TestWordlistLoader.java |    39 +-
 .../analysis/standard/TestStandardAnalyzer.java    |   638 +-
 .../analysis/standard/TestStandardFactories.java   |    59 +
 .../tokenattributes/TestBytesRefAttImpl.java       |     1 -
 .../tokenattributes/TestCharTermAttributeImpl.java |   182 +-
 .../TestPackedTokenAttributeImpl.java              |    77 +-
 .../tokenattributes/TestSimpleAttributeImpl.java   |    43 +-
 .../lucene/codecs/TestCodecLoadingDeadlock.java    |   173 +-
 .../org/apache/lucene/codecs/TestCodecUtil.java    |   275 +-
 .../codecs/TestCompetitiveFreqNormAccumulator.java |    11 +-
 .../compressing/AbstractTestCompressionMode.java   |    40 +-
 .../compressing/TestFastCompressionMode.java       |     1 -
 .../compressing/TestFastDecompressionMode.java     |     1 -
 .../compressing/TestHighCompressionMode.java       |     2 -
 .../lucene50/TestLucene50CompoundFormat.java       |     3 +-
 .../lucene50/TestLucene50LiveDocsFormat.java       |     1 -
 .../lucene50/TestLucene50TermVectorsFormat.java    |     1 -
 .../lucene50/TestLucene60FieldInfoFormat.java      |     5 +-
 .../BaseLucene80DocValuesFormatTestCase.java       |   764 +
 ...TestBestCompressionLucene80DocValuesFormat.java |    33 +
 .../TestBestSpeedLucene80DocValuesFormat.java      |    32 +
 .../lucene/codecs/lucene80/TestIndexedDISI.java    |   236 +-
 .../lucene80/TestLucene80DocValuesFormat.java      |   747 -
 .../codecs/lucene80/TestLucene80NormsFormat.java   |     7 +-
 .../TestLucene80NormsFormatMergeInstance.java      |     5 +-
 .../lucene/codecs/lucene84/TestForDeltaUtil.java   |    16 +-
 .../apache/lucene/codecs/lucene84/TestForUtil.java |    15 +-
 .../lucene84/TestLucene84PostingsFormat.java       |    23 +-
 .../lucene/codecs/lucene84/TestPForUtil.java       |    15 +-
 .../codecs/lucene86/TestLucene86PointsFormat.java  |   244 +-
 .../lucene86/TestLucene86SegmentInfoFormat.java    |     3 +-
 ...tLucene87StoredFieldsFormatHighCompression.java |    38 +-
 ...estLucene87StoredFieldsFormatMergeInstance.java |     5 +-
 .../perfield/TestPerFieldDocValuesFormat.java      |   104 +-
 .../perfield/TestPerFieldPostingsFormat.java       |     6 +-
 .../perfield/TestPerFieldPostingsFormat2.java      |   154 +-
 .../document/BaseLatLonDocValueTestCase.java       |    72 +
 .../lucene/document/BaseLatLonPointTestCase.java   |   139 +
 .../lucene/document/BaseLatLonShapeTestCase.java   |   434 +-
 .../lucene/document/BaseLatLonSpatialTestCase.java |   220 +
 .../lucene/document/BaseShapeEncodingTestCase.java |   171 +-
 .../apache/lucene/document/BaseShapeTestCase.java  |   899 -
 .../lucene/document/BaseSpatialTestCase.java       |   880 +
 .../lucene/document/BaseXYShapeTestCase.java       |   139 +-
 .../apache/lucene/document/TestBinaryDocument.java |    37 +-
 .../org/apache/lucene/document/TestDateTools.java  |   104 +-
 .../org/apache/lucene/document/TestDocument.java   |   164 +-
 .../apache/lucene/document/TestDoubleRange.java    |     6 +-
 .../lucene/document/TestFeatureDoubleValues.java   |   109 +-
 .../apache/lucene/document/TestFeatureField.java   |   102 +-
 .../apache/lucene/document/TestFeatureSort.java    |    48 +-
 .../test/org/apache/lucene/document/TestField.java |   251 +-
 .../org/apache/lucene/document/TestFieldType.java  |    40 +-
 .../org/apache/lucene/document/TestFloatRange.java |     8 +-
 .../lucene/document/TestInetAddressPoint.java      |   251 +
 .../org/apache/lucene/document/TestIntRange.java   |     2 +-
 .../lucene/document/TestLatLonDocValuesField.java  |    10 +-
 .../TestLatLonDocValuesMultiPointPointQueries.java |    99 +
 .../TestLatLonDocValuesPointPointQueries.java      |    71 +
 .../document/TestLatLonLineShapeQueries.java       |    19 +-
 .../document/TestLatLonMultiLineShapeQueries.java  |    29 +-
 .../document/TestLatLonMultiPointPointQueries.java |    99 +
 .../document/TestLatLonMultiPointShapeQueries.java |    32 +-
 .../TestLatLonMultiPolygonShapeQueries.java        |    55 +-
 .../apache/lucene/document/TestLatLonPoint.java    |    21 +-
 .../TestLatLonPointDistanceFeatureQuery.java       |   226 +-
 .../document/TestLatLonPointDistanceSort.java      |    87 +-
 .../document/TestLatLonPointPointQueries.java      |    69 +
 .../document/TestLatLonPointShapeQueries.java      |    45 +-
 .../document/TestLatLonPolygonShapeQueries.java    |    29 +-
 .../apache/lucene/document/TestLatLonShape.java    |   544 +-
 .../lucene/document/TestLatLonShapeEncoding.java   |     2 +-
 .../document/TestLongDistanceFeatureQuery.java     |   117 +-
 .../org/apache/lucene/document/TestLongRange.java  |     2 +-
 .../lucene/document/TestXYLineShapeQueries.java    |    25 +-
 .../document/TestXYMultiLineShapeQueries.java      |    22 +-
 .../document/TestXYMultiPointShapeQueries.java     |    35 +-
 .../document/TestXYMultiPolygonShapeQueries.java   |    77 +-
 .../lucene/document/TestXYPointShapeQueries.java   |    40 +-
 .../lucene/document/TestXYPolygonShapeQueries.java |    35 +-
 .../org/apache/lucene/document/TestXYShape.java    |   115 +-
 .../lucene/document/TestXYShapeEncoding.java       |    12 +-
 .../src/test/org/apache/lucene/geo/TestCircle.java |    54 +-
 .../test/org/apache/lucene/geo/TestCircle2D.java   |    46 +-
 .../apache/lucene/geo/TestGeoEncodingUtils.java    |    75 +-
 .../test/org/apache/lucene/geo/TestGeoUtils.java   |   111 +-
 .../src/test/org/apache/lucene/geo/TestLine2D.java |    39 +-
 .../src/test/org/apache/lucene/geo/TestPoint.java  |    26 +-
 .../test/org/apache/lucene/geo/TestPoint2D.java    |    74 +-
 .../test/org/apache/lucene/geo/TestPolygon.java    |   142 +-
 .../test/org/apache/lucene/geo/TestPolygon2D.java  |   236 +-
 .../org/apache/lucene/geo/TestRectangle2D.java     |    51 +-
 .../lucene/geo/TestSimpleWKTShapeParsing.java      |    83 +-
 .../org/apache/lucene/geo/TestTessellator.java     |   857 +-
 .../test/org/apache/lucene/geo/TestXYCircle.java   |    86 +-
 .../src/test/org/apache/lucene/geo/TestXYLine.java |    77 +-
 .../test/org/apache/lucene/geo/TestXYPoint.java    |    62 +-
 .../test/org/apache/lucene/geo/TestXYPolygon.java  |    88 +-
 .../org/apache/lucene/geo/TestXYRectangle.java     |   125 +-
 .../apache/lucene/index/Test2BBinaryDocValues.java |    87 +-
 .../test/org/apache/lucene/index/Test2BDocs.java   |    59 +-
 .../lucene/index/Test2BNumericDocValues.java       |    42 +-
 .../test/org/apache/lucene/index/Test2BPoints.java |    69 +-
 .../org/apache/lucene/index/Test2BPositions.java   |    41 +-
 .../org/apache/lucene/index/Test2BPostings.java    |    35 +-
 .../apache/lucene/index/Test2BPostingsBytes.java   |    72 +-
 .../index/Test2BSortedDocValuesFixedSorted.java    |    48 +-
 .../lucene/index/Test2BSortedDocValuesOrds.java    |    50 +-
 .../test/org/apache/lucene/index/Test2BTerms.java  |    74 +-
 .../apache/lucene/index/Test4GBStoredFields.java   |    30 +-
 .../org/apache/lucene/index/TestAddIndexes.java    |   670 +-
 .../lucene/index/TestAllFilesCheckIndexHeader.java |    58 +-
 .../lucene/index/TestAllFilesDetectBitFlips.java   |    44 +-
 .../lucene/index/TestAllFilesDetectTruncation.java |    52 +-
 .../index/TestAllFilesHaveChecksumFooter.java      |    21 +-
 .../lucene/index/TestAllFilesHaveCodecHeader.java  |    35 +-
 .../org/apache/lucene/index/TestAtomicUpdate.java  |    24 +-
 .../apache/lucene/index/TestBagOfPositions.java    |    69 +-
 .../org/apache/lucene/index/TestBagOfPostings.java |    82 +-
 .../lucene/index/TestBinaryDocValuesUpdates.java   |   587 +-
 .../org/apache/lucene/index/TestBinaryTerms.java   |    22 +-
 .../apache/lucene/index/TestBufferedUpdates.java   |     4 +-
 .../org/apache/lucene/index/TestByteSlices.java    |    31 +-
 .../org/apache/lucene/index/TestCheckIndex.java    |     8 +-
 .../lucene/index/TestCodecHoldsOpenFiles.java      |     5 +-
 .../test/org/apache/lucene/index/TestCodecs.java   |   329 +-
 .../lucene/index/TestConcurrentMergeScheduler.java |   442 +-
 .../lucene/index/TestConsistentFieldNumbers.java   |   145 +-
 .../test/org/apache/lucene/index/TestCrash.java    |    25 +-
 .../lucene/index/TestCrashCausesCorruptIndex.java  |    86 +-
 .../org/apache/lucene/index/TestCustomNorms.java   |    15 +-
 .../apache/lucene/index/TestCustomTermFreq.java    |   265 +-
 .../apache/lucene/index/TestDeletionPolicy.java    |   301 +-
 .../lucene/index/TestDemoParallelLeafReader.java   |   650 +-
 .../apache/lucene/index/TestDirectoryReader.java   |   527 +-
 .../lucene/index/TestDirectoryReaderReopen.java    |   702 +-
 .../src/test/org/apache/lucene/index/TestDoc.java  |   127 +-
 .../test/org/apache/lucene/index/TestDocCount.java |    16 +-
 .../org/apache/lucene/index/TestDocIDMerger.java   |    59 +-
 .../index/TestDocInverterPerFieldErrorInfo.java    |    36 +-
 .../org/apache/lucene/index/TestDocValues.java     |   259 +-
 .../lucene/index/TestDocValuesFieldUpdates.java    |    16 +-
 .../apache/lucene/index/TestDocValuesIndexing.java |   300 +-
 .../apache/lucene/index/TestDocsAndPositions.java  |   148 +-
 .../apache/lucene/index/TestDocsWithFieldSet.java  |     2 -
 .../apache/lucene/index/TestDocumentWriter.java    |   190 +-
 .../index/TestDocumentsWriterDeleteQueue.java      |    55 +-
 .../index/TestDocumentsWriterPerThreadPool.java    |    55 +-
 .../index/TestDocumentsWriterStallControl.java     |   188 +-
 .../org/apache/lucene/index/TestDuelingCodecs.java |    46 +-
 .../lucene/index/TestDuelingCodecsAtNight.java     |     7 +-
 .../lucene/index/TestExceedMaxTermLength.java      |    70 +-
 .../lucene/index/TestExitableDirectoryReader.java  |   212 +-
 .../org/apache/lucene/index/TestFieldInfos.java    |    93 +-
 .../apache/lucene/index/TestFieldInvertState.java  |    40 +-
 .../org/apache/lucene/index/TestFieldReuse.java    |    42 +-
 .../lucene/index/TestFieldUpdatesBuffer.java       |    84 +-
 .../org/apache/lucene/index/TestFieldsReader.java  |    33 +-
 .../apache/lucene/index/TestFilterCodecReader.java |    21 +-
 .../lucene/index/TestFilterDirectoryReader.java    |    13 +-
 .../apache/lucene/index/TestFilterLeafReader.java  |    63 +-
 .../apache/lucene/index/TestFilterMergePolicy.java |     3 +-
 .../src/test/org/apache/lucene/index/TestFlex.java |    26 +-
 .../lucene/index/TestFlushByRamOrCountsPolicy.java |    91 +-
 .../apache/lucene/index/TestForTooMuchCloning.java |    42 +-
 .../apache/lucene/index/TestForceMergeForever.java |    35 +-
 .../lucene/index/TestFrozenBufferedUpdates.java    |    13 +-
 .../org/apache/lucene/index/TestIndexCommit.java   |   106 +-
 .../apache/lucene/index/TestIndexFileDeleter.java  |   282 +-
 .../org/apache/lucene/index/TestIndexInput.java    |   265 +-
 .../lucene/index/TestIndexManyDocuments.java       |    38 +-
 .../org/apache/lucene/index/TestIndexOptions.java  |    53 +-
 .../apache/lucene/index/TestIndexReaderClose.java  |    92 +-
 .../org/apache/lucene/index/TestIndexSorting.java  |   303 +-
 .../apache/lucene/index/TestIndexTooManyDocs.java  |   105 +-
 .../org/apache/lucene/index/TestIndexWriter.java   |  2264 +-
 .../apache/lucene/index/TestIndexWriterCommit.java |   412 +-
 .../apache/lucene/index/TestIndexWriterConfig.java |   160 +-
 .../apache/lucene/index/TestIndexWriterDelete.java |   611 +-
 .../lucene/index/TestIndexWriterDeleteByQuery.java |     1 -
 .../lucene/index/TestIndexWriterExceptions.java    |  1432 +-
 .../lucene/index/TestIndexWriterExceptions2.java   |   103 +-
 .../lucene/index/TestIndexWriterForceMerge.java    |   152 +-
 .../lucene/index/TestIndexWriterFromReader.java    |   271 +-
 .../lucene/index/TestIndexWriterLockRelease.java   |    15 +-
 .../lucene/index/TestIndexWriterMaxDocs.java       |   306 +-
 .../lucene/index/TestIndexWriterMergePolicy.java   |   539 +-
 .../lucene/index/TestIndexWriterMerging.java       |   266 +-
 .../lucene/index/TestIndexWriterNRTIsCurrent.java  |    36 +-
 .../lucene/index/TestIndexWriterOnDiskFull.java    |   303 +-
 .../lucene/index/TestIndexWriterOnJRECrash.java    |   156 +-
 .../lucene/index/TestIndexWriterOnVMError.java     |   175 +-
 .../index/TestIndexWriterOutOfFileDescriptors.java |    22 +-
 .../apache/lucene/index/TestIndexWriterReader.java |   587 +-
 .../index/TestIndexWriterThreadsToSegments.java    |   224 +-
 .../lucene/index/TestIndexWriterUnicode.java       |   158 +-
 .../lucene/index/TestIndexWriterWithThreads.java   |   403 +-
 .../apache/lucene/index/TestIndexableField.java    |   230 +-
 .../lucene/index/TestIndexingSequenceNumbers.java  |   463 +-
 .../org/apache/lucene/index/TestInfoStream.java    |    75 +-
 .../org/apache/lucene/index/TestIntBlockPool.java  |    50 +-
 .../org/apache/lucene/index/TestIsCurrent.java     |    19 +-
 .../test/org/apache/lucene/index/TestKnnGraph.java |   390 +
 .../apache/lucene/index/TestLazyProxSkipping.java  |   351 +-
 .../apache/lucene/index/TestLogMergePolicy.java    |     1 -
 .../org/apache/lucene/index/TestLongPostings.java  |    94 +-
 .../org/apache/lucene/index/TestManyFields.java    |    74 +-
 .../org/apache/lucene/index/TestMaxPosition.java   |    19 +-
 .../apache/lucene/index/TestMaxTermFrequency.java  |    30 +-
 .../org/apache/lucene/index/TestMergePolicy.java   |   107 +-
 .../apache/lucene/index/TestMergeRateLimiter.java  |     1 -
 .../org/apache/lucene/index/TestMixedCodecs.java   |     6 +-
 .../lucene/index/TestMixedDocValuesUpdates.java    |   385 +-
 .../apache/lucene/index/TestMultiDocValues.java    |   132 +-
 .../org/apache/lucene/index/TestMultiFields.java   |    55 +-
 .../lucene/index/TestMultiLevelSkipList.java       |    57 +-
 .../apache/lucene/index/TestMultiTermsEnum.java    |    19 +-
 .../apache/lucene/index/TestNRTReaderCleanup.java  |     6 +-
 .../lucene/index/TestNRTReaderWithThreads.java     |    29 +-
 .../org/apache/lucene/index/TestNRTThreads.java    |    23 +-
 .../org/apache/lucene/index/TestNeverDelete.java   |    55 +-
 .../org/apache/lucene/index/TestNewestSegment.java |     4 +-
 .../apache/lucene/index/TestNoDeletionPolicy.java  |    15 +-
 .../org/apache/lucene/index/TestNoMergePolicy.java |     7 +-
 .../apache/lucene/index/TestNoMergeScheduler.java  |    10 +-
 .../test/org/apache/lucene/index/TestNorms.java    |    22 +-
 .../lucene/index/TestNumericDocValuesUpdates.java  |   678 +-
 .../org/apache/lucene/index/TestOmitNorms.java     |   114 +-
 .../org/apache/lucene/index/TestOmitPositions.java |    54 +-
 .../test/org/apache/lucene/index/TestOmitTf.java   |   400 +-
 .../index/TestOneMergeWrappingMergePolicy.java     |    77 +-
 .../org/apache/lucene/index/TestOrdinalMap.java    |    95 +-
 .../lucene/index/TestParallelCompositeReader.java  |   234 +-
 .../lucene/index/TestParallelLeafReader.java       |   144 +-
 .../lucene/index/TestParallelReaderEmptyIndex.java |    52 +-
 .../apache/lucene/index/TestParallelTermEnum.java  |     8 +-
 .../test/org/apache/lucene/index/TestPayloads.java |   233 +-
 .../apache/lucene/index/TestPayloadsOnVectors.java |    29 +-
 .../apache/lucene/index/TestPendingDeletes.java    |    58 +-
 .../lucene/index/TestPendingSoftDeletes.java       |   218 +-
 .../apache/lucene/index/TestPerSegmentDeletes.java |    67 +-
 .../TestPersistentSnapshotDeletionPolicy.java      |    76 +-
 .../org/apache/lucene/index/TestPointValues.java   |   355 +-
 .../apache/lucene/index/TestPostingsOffsets.java   |   257 +-
 .../apache/lucene/index/TestPrefixCodedTerms.java  |    21 +-
 .../org/apache/lucene/index/TestReadOnlyIndex.java |    31 +-
 .../org/apache/lucene/index/TestReaderClosed.java  |    22 +-
 .../org/apache/lucene/index/TestReaderPool.java    |   131 +-
 .../lucene/index/TestReaderWrapperDVTypeCheck.java |    63 +-
 .../test/org/apache/lucene/index/TestRollback.java |    10 +-
 .../apache/lucene/index/TestRollingUpdates.java    |    53 +-
 .../lucene/index/TestSameTokenSamePosition.java    |    23 +-
 .../org/apache/lucene/index/TestSegmentInfos.java  |   254 +-
 .../org/apache/lucene/index/TestSegmentMerger.java |    73 +-
 .../org/apache/lucene/index/TestSegmentReader.java |   140 +-
 .../apache/lucene/index/TestSegmentTermDocs.java   |   146 +-
 .../apache/lucene/index/TestSegmentTermEnum.java   |    38 +-
 .../lucene/index/TestSegmentToThreadMapping.java   |    28 +-
 .../lucene/index/TestSizeBoundedForceMerge.java    |   131 +-
 .../lucene/index/TestSnapshotDeletionPolicy.java   |   200 +-
 .../TestSoftDeletesDirectoryReaderWrapper.java     |    72 +-
 .../index/TestSoftDeletesRetentionMergePolicy.java |   376 +-
 .../lucene/index/TestSortedSetDocValues.java       |     1 -
 .../lucene/index/TestSortingCodecReader.java       |    89 +-
 .../org/apache/lucene/index/TestStressAdvance.java |    20 +-
 .../org/apache/lucene/index/TestStressDeletes.java |    92 +-
 .../apache/lucene/index/TestStressIndexing.java    |    55 +-
 .../apache/lucene/index/TestStressIndexing2.java   |   421 +-
 .../org/apache/lucene/index/TestStressNRT.java     |   574 +-
 .../org/apache/lucene/index/TestSumDocFreq.java    |    23 +-
 .../apache/lucene/index/TestSwappedIndexFiles.java |    37 +-
 .../src/test/org/apache/lucene/index/TestTerm.java |     1 -
 .../org/apache/lucene/index/TestTermStates.java    |     3 +-
 .../org/apache/lucene/index/TestTermVectors.java   |    50 +-
 .../apache/lucene/index/TestTermVectorsReader.java |   226 +-
 .../apache/lucene/index/TestTermVectorsWriter.java |   156 +-
 .../org/apache/lucene/index/TestTermdocPerf.java   |   101 +-
 .../test/org/apache/lucene/index/TestTerms.java    |    17 +-
 .../org/apache/lucene/index/TestTermsEnum.java     |   190 +-
 .../org/apache/lucene/index/TestTermsEnum2.java    |    62 +-
 .../apache/lucene/index/TestTermsHashPerField.java |   208 +-
 .../lucene/index/TestThreadedForceMerge.java       |   130 +-
 .../apache/lucene/index/TestTieredMergePolicy.java |   427 +-
 .../index/TestTragicIndexWriterDeadlock.java       |   140 +-
 .../lucene/index/TestTransactionRollback.java      |   103 +-
 .../org/apache/lucene/index/TestTransactions.java  |    77 +-
 .../org/apache/lucene/index/TestTryDelete.java     |    45 +-
 .../lucene/index/TestTwoPhaseCommitTool.java       |     7 +-
 .../apache/lucene/index/TestUniqueTermCount.java   |    27 +-
 .../lucene/index/TestUpgradeIndexMergePolicy.java  |     5 +-
 .../org/apache/lucene/index/TestVectorValues.java  |   818 +
 .../apache/lucene/search/BaseTestRangeFilter.java  |    70 +-
 .../lucene/search/FuzzyTermOnShortTermsTest.java   |   119 +-
 .../apache/lucene/search/JustCompileSearch.java    |    33 +-
 .../apache/lucene/search/TermInSetQueryTest.java   |    87 +-
 .../search/TestApproximationSearchEquivalence.java |    12 +-
 .../apache/lucene/search/TestAutomatonQuery.java   |   131 +-
 .../lucene/search/TestAutomatonQueryUnicode.java   |    19 +-
 .../apache/lucene/search/TestBlendedTermQuery.java |    68 +-
 .../lucene/search/TestBlockMaxConjunction.java     |    29 +-
 .../org/apache/lucene/search/TestBoolean2.java     |   125 +-
 .../lucene/search/TestBoolean2ScorerSupplier.java  |   144 +-
 .../lucene/search/TestBooleanMinShouldMatch.java   |   678 +-
 .../org/apache/lucene/search/TestBooleanOr.java    |   107 +-
 .../org/apache/lucene/search/TestBooleanQuery.java |   327 +-
 .../search/TestBooleanQueryVisitSubscorers.java    |   100 +-
 .../apache/lucene/search/TestBooleanRewrites.java  |   495 +-
 .../apache/lucene/search/TestBooleanScorer.java    |   172 +-
 .../org/apache/lucene/search/TestBoostQuery.java   |    34 +-
 .../apache/lucene/search/TestCachingCollector.java |    83 +-
 .../lucene/search/TestComplexExplanations.java     |   238 +-
 .../TestComplexExplanationsOfNonMatches.java       |    11 +-
 .../apache/lucene/search/TestConjunctionDISI.java  |   152 +-
 .../org/apache/lucene/search/TestConjunctions.java |    74 +-
 .../lucene/search/TestConstantScoreQuery.java      |   141 +-
 .../lucene/search/TestConstantScoreScorer.java     |    69 +-
 .../search/TestControlledRealTimeReopenThread.java |   263 +-
 .../lucene/search/TestCustomSearcherSort.java      |   105 +-
 .../org/apache/lucene/search/TestDateSort.java     |    11 +-
 .../lucene/search/TestDisjunctionMaxQuery.java     |   436 +-
 ...estDisjunctionScoreBlockBoundaryPropagator.java |     5 +-
 .../apache/lucene/search/TestDocIdSetIterator.java |    22 +-
 .../apache/lucene/search/TestDocValuesQueries.java |   117 +-
 .../lucene/search/TestDocValuesRewriteMethod.java  |    48 +-
 .../lucene/search/TestDoubleRangeFieldQueries.java |    86 +-
 .../lucene/search/TestDoubleValuesSource.java      |   195 +-
 .../apache/lucene/search/TestEarlyTermination.java |    56 +-
 .../lucene/search/TestElevationComparator.java     |   221 +-
 .../lucene/search/TestFieldCacheRewriteMethod.java |    18 +-
 .../search/TestFieldSortOptimizationSkipping.java  |   297 +-
 .../apache/lucene/search/TestFieldValueQuery.java  |    21 +-
 .../org/apache/lucene/search/TestFilterWeight.java |    30 +-
 .../lucene/search/TestFloatRangeFieldQueries.java  |    89 +-
 .../org/apache/lucene/search/TestFuzzyQuery.java   |   340 +-
 .../lucene/search/TestIndexOrDocValuesQuery.java   |    89 +-
 .../apache/lucene/search/TestIndexSearcher.java    |   228 +-
 .../lucene/search/TestInetAddressRangeQueries.java |   211 +
 .../lucene/search/TestIntRangeFieldQueries.java    |    59 +-
 .../apache/lucene/search/TestLRUQueryCache.java    |   781 +-
 .../lucene/search/TestLatLonDocValuesQueries.java  |    19 +-
 .../lucene/search/TestLatLonPointQueries.java      |    18 +-
 .../apache/lucene/search/TestLiveFieldValues.java  |   167 +-
 .../lucene/search/TestLongRangeFieldQueries.java   |    63 +-
 .../apache/lucene/search/TestLongValuesSource.java |    28 +-
 .../lucene/search/TestMatchAllDocsQuery.java       |    36 +-
 .../apache/lucene/search/TestMatchNoDocsQuery.java |    16 +-
 .../apache/lucene/search/TestMatchesIterator.java  |   709 +-
 .../apache/lucene/search/TestMaxClauseLimit.java   |    72 +-
 .../lucene/search/TestMaxScoreAccumulator.java     |     3 +-
 .../lucene/search/TestMaxScoreSumPropagator.java   |    31 +-
 .../apache/lucene/search/TestMinShouldMatch2.java  |   177 +-
 .../apache/lucene/search/TestMultiCollector.java   |   218 +-
 .../apache/lucene/search/TestMultiPhraseEnum.java  |    56 +-
 .../apache/lucene/search/TestMultiPhraseQuery.java |   288 +-
 .../apache/lucene/search/TestMultiSliceMerge.java  |    25 +-
 .../lucene/search/TestMultiTermConstantScore.java  |   168 +-
 .../lucene/search/TestMultiTermQueryRewrites.java  |   166 +-
 .../lucene/search/TestMultiThreadTermVectors.java  |    25 +-
 .../org/apache/lucene/search/TestMultiset.java     |     3 -
 .../apache/lucene/search/TestNGramPhraseQuery.java |    27 +-
 .../org/apache/lucene/search/TestNeedsScores.java  |    38 +-
 .../lucene/search/TestNormsFieldExistsQuery.java   |    15 +-
 .../src/test/org/apache/lucene/search/TestNot.java |    12 +-
 .../lucene/search/TestPhrasePrefixQuery.java       |    26 +-
 .../org/apache/lucene/search/TestPhraseQuery.java  |   557 +-
 .../org/apache/lucene/search/TestPointQueries.java |   986 +-
 .../lucene/search/TestPositionIncrement.java       |   133 +-
 .../search/TestPositiveScoresOnlyCollector.java    |    53 +-
 .../lucene/search/TestPrefixInBooleanQuery.java    |    54 +-
 .../org/apache/lucene/search/TestPrefixQuery.java  |    21 +-
 .../org/apache/lucene/search/TestPrefixRandom.java |    48 +-
 .../apache/lucene/search/TestQueryRescorer.java    |   162 +-
 .../org/apache/lucene/search/TestQueryVisitor.java |   228 +-
 .../search/TestRangeFieldsDocValuesQuery.java      |     8 +-
 .../org/apache/lucene/search/TestRegexpQuery.java  |   118 +-
 .../org/apache/lucene/search/TestRegexpRandom.java |    46 +-
 .../apache/lucene/search/TestRegexpRandom2.java    |    51 +-
 .../lucene/search/TestReqExclBulkScorer.java       |    88 +-
 .../apache/lucene/search/TestReqOptSumScorer.java  |   162 +-
 .../lucene/search/TestSameScoresWithThreads.java   |    72 +-
 .../search/TestScoreCachingWrappingScorer.java     |    77 +-
 .../org/apache/lucene/search/TestScorerPerf.java   |   240 +-
 .../org/apache/lucene/search/TestSearchAfter.java  |    97 +-
 .../lucene/search/TestSearchWithThreads.java       |    50 +-
 .../apache/lucene/search/TestSearcherManager.java  |   554 +-
 .../lucene/search/TestSegmentCacheables.java       |     7 +-
 .../apache/lucene/search/TestShardSearching.java   |   101 +-
 .../org/apache/lucene/search/TestSimilarity.java   |   208 +-
 .../lucene/search/TestSimilarityProvider.java      |     8 +-
 .../lucene/search/TestSimpleExplanations.java      |   355 +-
 .../search/TestSimpleExplanationsOfNonMatches.java |    12 +-
 .../TestSimpleExplanationsWithFillerDocs.java      |    60 +-
 .../lucene/search/TestSimpleSearchEquivalence.java |    55 +-
 .../lucene/search/TestSloppyPhraseQuery.java       |   242 +-
 .../lucene/search/TestSloppyPhraseQuery2.java      |    26 +-
 .../test/org/apache/lucene/search/TestSort.java    |   124 +-
 .../org/apache/lucene/search/TestSortRandom.java   |   114 +-
 .../org/apache/lucene/search/TestSortRescorer.java |    91 +-
 .../lucene/search/TestSortedNumericSortField.java  |    53 +-
 .../lucene/search/TestSortedSetSelector.java       |    93 +-
 .../lucene/search/TestSortedSetSortField.java      |    37 +-
 .../apache/lucene/search/TestSubScorerFreqs.java   |    44 +-
 .../org/apache/lucene/search/TestSynonymQuery.java |   250 +-
 .../org/apache/lucene/search/TestTermQuery.java    |   107 +-
 .../apache/lucene/search/TestTermRangeQuery.java   |    84 +-
 .../org/apache/lucene/search/TestTermScorer.java   |   193 +-
 .../lucene/search/TestTimeLimitingCollector.java   |   267 +-
 .../apache/lucene/search/TestTopDocsCollector.java |   235 +-
 .../org/apache/lucene/search/TestTopDocsMerge.java |   117 +-
 .../lucene/search/TestTopFieldCollector.java       |   246 +-
 .../TestTopFieldCollectorEarlyTermination.java     |   157 +-
 .../lucene/search/TestTotalHitCountCollector.java  |     9 +-
 .../TestUsageTrackingFilterCachingPolicy.java      |    37 +-
 .../org/apache/lucene/search/TestWANDScorer.java   |   399 +-
 .../org/apache/lucene/search/TestWildcard.java     |   279 +-
 .../apache/lucene/search/TestWildcardRandom.java   |    49 +-
 .../lucene/search/TestXYDocValuesQueries.java      |     6 +
 .../lucene/search/TestXYPointDistanceSort.java     |    67 +-
 .../apache/lucene/search/TestXYPointQueries.java   |     8 +-
 .../search/similarities/AxiomaticTestCase.java     |     6 +-
 .../search/similarities/BasicModelTestCase.java    |    11 +-
 .../search/similarities/DistributionTestCase.java  |     5 +-
 .../search/similarities/TestAxiomaticF1EXP.java    |     1 -
 .../search/similarities/TestAxiomaticF1LOG.java    |     1 -
 .../search/similarities/TestAxiomaticF2EXP.java    |     1 -
 .../search/similarities/TestAxiomaticF2LOG.java    |     1 -
 .../search/similarities/TestAxiomaticF3EXP.java    |     1 -
 .../search/similarities/TestAxiomaticF3LOG.java    |     1 -
 .../similarities/TestAxiomaticSimilarity.java      |    81 +-
 .../search/similarities/TestBM25Similarity.java    |    80 +-
 .../search/similarities/TestBasicModelG.java       |     1 -
 .../search/similarities/TestBasicModelIF.java      |     1 -
 .../search/similarities/TestBasicModelIn.java      |     1 -
 .../search/similarities/TestBasicModelIne.java     |     1 -
 .../search/similarities/TestBooleanSimilarity.java |    26 +-
 .../search/similarities/TestClassicSimilarity.java |    77 +-
 .../search/similarities/TestDistributionLL.java    |     1 -
 .../search/similarities/TestDistributionSPL.java   |     1 -
 .../similarities/TestIndependenceChiSquared.java   |     1 -
 .../similarities/TestIndependenceSaturated.java    |     1 -
 .../similarities/TestIndependenceStandardized.java |     1 -
 .../similarities/TestLMDirichletSimilarity.java    |     1 -
 .../TestLMJelinekMercerSimilarity.java             |     1 -
 .../search/similarities/TestSimilarity2.java       |    62 +-
 .../search/similarities/TestSimilarityBase.java    |   397 +-
 .../search/spans/JustCompileSearchSpans.java       |    18 +-
 .../org/apache/lucene/search/spans/TestBasics.java |   377 +-
 .../search/spans/TestFieldMaskingSpanQuery.java    |   348 +-
 .../lucene/search/spans/TestFilterSpans.java       |     2 -
 .../lucene/search/spans/TestNearSpansOrdered.java  |   275 +-
 .../lucene/search/spans/TestSpanBoostQuery.java    |    14 +-
 .../lucene/search/spans/TestSpanCollection.java    |    51 +-
 .../lucene/search/spans/TestSpanContainQuery.java  |    34 +-
 .../lucene/search/spans/TestSpanExplanations.java  |   176 +-
 .../spans/TestSpanExplanationsOfNonMatches.java    |    13 +-
 .../lucene/search/spans/TestSpanFirstQuery.java    |    15 +-
 .../spans/TestSpanMultiTermQueryWrapper.java       |   133 +-
 .../lucene/search/spans/TestSpanNearQuery.java     |    54 +-
 .../lucene/search/spans/TestSpanNotQuery.java      |    32 +-
 .../lucene/search/spans/TestSpanOrQuery.java       |    18 +-
 .../search/spans/TestSpanSearchEquivalence.java    |   313 +-
 .../lucene/search/spans/TestSpanTermQuery.java     |    19 +-
 .../org/apache/lucene/search/spans/TestSpans.java  |   248 +-
 .../apache/lucene/search/spans/TestSpansEnum.java  |    56 +-
 .../lucene/store/BaseDataOutputTestCase.java       |   230 +-
 .../apache/lucene/store/TestBufferedChecksum.java  |     6 +-
 .../lucene/store/TestBufferedIndexInput.java       |   170 +-
 .../lucene/store/TestByteArrayDataInput.java       |     1 -
 .../lucene/store/TestByteBuffersDataInput.java     |   149 +-
 .../lucene/store/TestByteBuffersDataOutput.java    |   101 +-
 .../lucene/store/TestByteBuffersDirectory.java     |    74 +-
 .../org/apache/lucene/store/TestDirectory.java     |    56 +-
 .../lucene/store/TestFileSwitchDirectory.java      |    76 +-
 .../apache/lucene/store/TestFilterDirectory.java   |     8 +-
 .../org/apache/lucene/store/TestLockFactory.java   |   126 +-
 .../org/apache/lucene/store/TestMmapDirectory.java |    44 +-
 .../org/apache/lucene/store/TestMultiMMap.java     |   221 +-
 .../apache/lucene/store/TestNIOFSDirectory.java    |    29 +-
 .../lucene/store/TestNRTCachingDirectory.java      |    53 +-
 .../lucene/store/TestNativeFSLockFactory.java      |    57 +-
 .../org/apache/lucene/store/TestRateLimiter.java   |    83 +-
 .../lucene/store/TestSimpleFSLockFactory.java      |    16 +-
 .../store/TestSingleInstanceLockFactory.java       |    19 +-
 .../lucene/store/TestSleepingLockWrapper.java      |     9 +-
 .../lucene/store/TestStressLockFactories.java      |   108 +
 .../lucene/store/TestTrackingDirectoryWrapper.java |     9 +-
 .../org/apache/lucene/util/BaseSortTestCase.java   |    39 +-
 .../lucene/util/StressRamUsageEstimator.java       |    15 +-
 .../org/apache/lucene/util/Test2BPagedBytes.java   |     8 +-
 .../test/org/apache/lucene/util/TestArrayUtil.java |   249 +-
 .../apache/lucene/util/TestAttributeSource.java    |   165 +-
 .../org/apache/lucene/util/TestByteBlockPool.java  |     4 +-
 .../test/org/apache/lucene/util/TestBytesRef.java  |    23 +-
 .../org/apache/lucene/util/TestBytesRefArray.java  |    27 +-
 .../org/apache/lucene/util/TestBytesRefHash.java   |   121 +-
 .../test/org/apache/lucene/util/TestCharsRef.java  |   112 +-
 .../apache/lucene/util/TestCharsRefBuilder.java    |     2 -
 .../apache/lucene/util/TestClassLoaderUtils.java   |     4 +-
 .../lucene/util/TestCloseableThreadLocal.java      |     6 +-
 .../org/apache/lucene/util/TestCollectionUtil.java |    23 +-
 .../apache/lucene/util/TestDocIdSetBuilder.java    |    17 +-
 .../org/apache/lucene/util/TestFilterIterator.java |   135 +-
 .../apache/lucene/util/TestFixedBitDocIdSet.java   |     1 -
 .../org/apache/lucene/util/TestFixedBitSet.java    |   318 +-
 .../lucene/util/TestFixedLengthBytesRefArray.java  |    41 +-
 .../util/TestFrequencyTrackingRingBuffer.java      |     5 +-
 .../test/org/apache/lucene/util/TestIOUtils.java   |   428 +-
 .../apache/lucene/util/TestInPlaceMergeSorter.java |     6 +-
 .../apache/lucene/util/TestIntArrayDocIdSet.java   |     3 -
 .../org/apache/lucene/util/TestIntroSelector.java  |    32 +-
 .../org/apache/lucene/util/TestIntroSorter.java    |     1 -
 .../test/org/apache/lucene/util/TestIntsRef.java   |    23 +-
 .../org/apache/lucene/util/TestLSBRadixSorter.java |     2 -
 .../org/apache/lucene/util/TestLongBitSet.java     |   199 +-
 .../test/org/apache/lucene/util/TestLongHeap.java  |   194 +
 .../test/org/apache/lucene/util/TestLongsRef.java  |    22 +-
 .../org/apache/lucene/util/TestMSBRadixSorter.java |    27 +-
 .../test/org/apache/lucene/util/TestMathUtil.java  |    68 +-
 .../org/apache/lucene/util/TestMergedIterator.java |    13 +-
 .../org/apache/lucene/util/TestNamedSPILoader.java |    16 +-
 .../org/apache/lucene/util/TestNotDocIdSet.java    |     6 +-
 .../org/apache/lucene/util/TestNumericUtils.java   |   426 +-
 .../org/apache/lucene/util/TestOfflineSorter.java  |   544 +-
 .../org/apache/lucene/util/TestPagedBytes.java     |    48 +-
 .../org/apache/lucene/util/TestPriorityQueue.java  |    52 +-
 .../org/apache/lucene/util/TestQueryBuilder.java   |   471 +-
 .../org/apache/lucene/util/TestRadixSelector.java  |    42 +-
 .../apache/lucene/util/TestRamUsageEstimator.java  |   118 +-
 .../util/TestRecyclingByteBlockAllocator.java      |    25 +-
 .../util/TestRecyclingIntBlockAllocator.java       |    27 +-
 .../apache/lucene/util/TestRoaringDocIdSet.java    |     5 +-
 .../org/apache/lucene/util/TestRollingBuffer.java  |    24 +-
 .../org/apache/lucene/util/TestSentinelIntSet.java |    31 +-
 .../test/org/apache/lucene/util/TestSetOnce.java   |    25 +-
 .../org/apache/lucene/util/TestSloppyMath.java     |   107 +-
 .../org/apache/lucene/util/TestSmallFloat.java     |    97 +-
 .../lucene/util/TestSparseFixedBitDocIdSet.java    |     2 -
 .../apache/lucene/util/TestSparseFixedBitSet.java  |     6 +-
 .../org/apache/lucene/util/TestStringHelper.java   |    41 +-
 .../lucene/util/TestStringMSBRadixSorter.java      |     4 +-
 .../test/org/apache/lucene/util/TestTimSorter.java |     3 +-
 .../apache/lucene/util/TestTimSorterWorstCase.java |    63 +-
 .../org/apache/lucene/util/TestUnicodeUtil.java    |    79 +-
 .../org/apache/lucene/util/TestVectorUtil.java     |   107 +
 .../test/org/apache/lucene/util/TestVersion.java   |   176 +-
 .../org/apache/lucene/util/TestVirtualMethod.java  |    69 +-
 .../apache/lucene/util/TestWeakIdentityMap.java    |   197 +-
 .../util/automaton/FiniteStringsIteratorTest.java  |    53 +-
 .../LimitedFiniteStringsIteratorTest.java          |    32 +-
 .../lucene/util/automaton/TestAutomaton.java       |  1012 +-
 .../util/automaton/TestCompiledAutomaton.java      |    32 +-
 .../automaton/TestDaciukMihovAutomatonBuilder.java |    12 +-
 .../lucene/util/automaton/TestDeterminism.java     |    60 +-
 .../util/automaton/TestDeterminizeLexicon.java     |    10 +-
 .../apache/lucene/util/automaton/TestIntSet.java   |   124 +-
 .../util/automaton/TestLevenshteinAutomata.java    |   309 +-
 .../apache/lucene/util/automaton/TestMinimize.java |    29 +-
 .../lucene/util/automaton/TestOperations.java      |    81 +-
 .../apache/lucene/util/automaton/TestRegExp.java   |   136 +-
 .../lucene/util/automaton/TestUTF32ToUTF8.java     |    86 +-
 .../apache/lucene/util/bkd/Test2BBKDPoints.java    |    42 +-
 .../test/org/apache/lucene/util/bkd/TestBKD.java   |  1488 +-
 .../lucene/util/bkd/TestBKDRadixSelector.java      |   390 +-
 .../apache/lucene/util/bkd/TestBKDRadixSort.java   |   146 +-
 .../apache/lucene/util/bkd/TestDocIdsWriter.java   |    37 +-
 .../util/bkd/TestMutablePointsReaderUtils.java     |   191 +-
 .../apache/lucene/util/compress/LZ4TestCase.java   |   211 +-
 .../apache/lucene/util/compress/TestFastLZ4.java   |     1 -
 .../apache/lucene/util/compress/TestHighLZ4.java   |     3 +-
 .../compress/TestLowercaseAsciiCompression.java    |     7 +-
 .../test/org/apache/lucene/util/fst/Test2BFST.java |    88 +-
 .../apache/lucene/util/fst/TestBitTableUtil.java   |    79 +-
 .../org/apache/lucene/util/fst/TestBytesStore.java |   312 +-
 .../lucene/util/fst/TestFSTDirectAddressing.java   |   118 +-
 .../test/org/apache/lucene/util/fst/TestFSTs.java  |   659 +-
 .../test/org/apache/lucene/util/fst/TestUtil.java  |    20 +-
 .../graph/TestGraphTokenStreamFiniteStrings.java   |   427 +-
 .../apache/lucene/util/hnsw/KnnGraphTester.java    |   726 +
 .../apache/lucene/util/hnsw/MockVectorValues.java  |   140 +
 .../test/org/apache/lucene/util/hnsw/TestHnsw.java |   432 +
 .../org/apache/lucene/util/hnsw/TestNeighbors.java |   113 +
 .../lucene/util/mutable/TestMutableValues.java     |    64 +-
 .../lucene/util/packed/TestDirectMonotonic.java    |    98 +-
 .../lucene/util/packed/TestDirectPacked.java       |    34 +-
 .../apache/lucene/util/packed/TestPackedInts.java  |   492 +-
 .../java/org/apache/lucene/demo/IndexFiles.java    |   103 +-
 .../java/org/apache/lucene/demo/SearchFiles.java   |    90 +-
 .../demo/facet/AssociationsFacetsExample.java      |    23 +-
 .../lucene/demo/facet/DistanceFacetsExample.java   |   113 +-
 .../facet/ExpressionAggregationFacetsExample.java  |    27 +-
 .../facet/MultiCategoryListsFacetsExample.java     |     7 +-
 .../lucene/demo/facet/RangeFacetsExample.java      |    57 +-
 .../lucene/demo/facet/SimpleFacetsExample.java     |    54 +-
 .../demo/facet/SimpleSortedSetFacetsExample.java   |    28 +-
 .../org/apache/lucene/demo/facet/package-info.java |     4 +-
 .../java/org/apache/lucene/demo/package-info.java  |     4 +-
 lucene/demo/src/java/overview.html                 |     2 +-
 .../src/test/org/apache/lucene/demo/TestDemo.java  |    11 +-
 .../demo/facet/TestAssociationsFacetsExample.java  |    19 +-
 .../demo/facet/TestDistanceFacetsExample.java      |     6 +-
 .../TestExpressionAggregationFacetsExample.java    |     5 +-
 .../facet/TestMultiCategoryListsFacetsExample.java |    10 +-
 .../lucene/demo/facet/TestRangeFacetsExample.java  |     5 +-
 .../lucene/demo/facet/TestSimpleFacetsExample.java |    35 +-
 .../facet/TestSimpleSortedSetFacetsExample.java    |    14 +-
 lucene/documentation/build.gradle                  |    18 +
 .../src/assets}/lucene_green_300.gif               |   Bin
 .../src/markdown}/index.template.md                |     0
 .../org/apache/lucene/expressions/Bindings.java    |    16 +-
 .../expressions/CachingExpressionValueSource.java  |    34 +-
 .../org/apache/lucene/expressions/Expression.java  |    24 +-
 .../expressions/ExpressionFunctionValues.java      |     5 +-
 .../lucene/expressions/ExpressionRescorer.java     |    25 +-
 .../lucene/expressions/ExpressionValueSource.java  |    41 +-
 .../apache/lucene/expressions/SimpleBindings.java  |    36 +-
 .../expressions/js/JavascriptBaseVisitor.java      |   154 +-
 .../lucene/expressions/js/JavascriptCompiler.java  |   258 +-
 .../js/JavascriptErrorHandlingLexer.java           |    21 +-
 .../js/JavascriptParserErrorStrategy.java          |    58 +-
 .../lucene/expressions/js/VariableContext.java     |    42 +-
 .../apache/lucene/expressions/js/package-info.java |    41 +-
 .../apache/lucene/expressions/package-info.java    |    23 +-
 .../lucene/expressions/TestDemoExpressions.java    |   184 +-
 .../lucene/expressions/TestExpressionRescorer.java |    27 +-
 .../expressions/TestExpressionSortField.java       |    37 +-
 .../lucene/expressions/TestExpressionSorts.java    |    42 +-
 .../expressions/TestExpressionValidation.java      |    78 +-
 .../expressions/TestExpressionValueSource.java     |    46 +-
 .../lucene/expressions/js/TestCustomFunctions.java |   321 +-
 .../expressions/js/TestJavascriptCompiler.java     |   169 +-
 .../expressions/js/TestJavascriptFunction.java     |   134 +-
 .../expressions/js/TestJavascriptOperations.java   |    57 +-
 .../lucene/expressions/js/TestVariableContext.java |     9 +-
 lucene/facet/build.gradle                          |     2 +
 .../org/apache/lucene/facet/DrillDownQuery.java    |    78 +-
 .../org/apache/lucene/facet/DrillSideways.java     |   309 +-
 .../apache/lucene/facet/DrillSidewaysQuery.java    |    80 +-
 .../apache/lucene/facet/DrillSidewaysScorer.java   |   257 +-
 .../java/org/apache/lucene/facet/FacetField.java   |    24 +-
 .../java/org/apache/lucene/facet/FacetQuery.java   |    17 +-
 .../java/org/apache/lucene/facet/FacetResult.java  |    20 +-
 .../src/java/org/apache/lucene/facet/Facets.java   |    36 +-
 .../org/apache/lucene/facet/FacetsCollector.java   |   118 +-
 .../lucene/facet/FacetsCollectorManager.java       |    16 +-
 .../java/org/apache/lucene/facet/FacetsConfig.java |   247 +-
 .../org/apache/lucene/facet/LabelAndValue.java     |     3 +-
 .../apache/lucene/facet/LongValueFacetCounts.java  |   137 +-
 .../org/apache/lucene/facet/MultiFacetQuery.java   |    22 +-
 .../java/org/apache/lucene/facet/MultiFacets.java  |    19 +-
 .../facet/RandomSamplingFacetsCollector.java       |   140 +-
 .../apache/lucene/facet/TopOrdAndFloatQueue.java   |     6 +-
 .../org/apache/lucene/facet/TopOrdAndIntQueue.java |     6 +-
 .../java/org/apache/lucene/facet/package-info.java |    62 +-
 .../org/apache/lucene/facet/range/DoubleRange.java |    83 +-
 .../lucene/facet/range/DoubleRangeFacetCounts.java |    73 +-
 .../org/apache/lucene/facet/range/LongRange.java   |    69 +-
 .../lucene/facet/range/LongRangeCounter.java       |    74 +-
 .../lucene/facet/range/LongRangeFacetCounts.java   |    67 +-
 .../java/org/apache/lucene/facet/range/Range.java  |     6 +-
 .../lucene/facet/range/RangeFacetCounts.java       |    25 +-
 .../apache/lucene/facet/range/package-info.java    |     4 +-
 .../ConcurrentSortedSetDocValuesFacetCounts.java   |    94 +-
 .../DefaultSortedSetDocValuesReaderState.java      |    62 +-
 .../sortedset/SortedSetDocValuesFacetCounts.java   |   108 +-
 .../sortedset/SortedSetDocValuesFacetField.java    |    12 +-
 .../sortedset/SortedSetDocValuesReaderState.java   |    49 +-
 .../lucene/facet/sortedset/package-info.java       |     4 +-
 .../facet/taxonomy/AssociationFacetField.java      |    36 +-
 .../facet/taxonomy/CachedOrdinalsReader.java       |    52 +-
 .../facet/taxonomy/DocValuesOrdinalsReader.java    |    22 +-
 .../apache/lucene/facet/taxonomy/FacetLabel.java   |    74 +-
 .../facet/taxonomy/FastTaxonomyFacetCounts.java    |    54 +-
 .../facet/taxonomy/FloatAssociationFacetField.java |    25 +-
 .../lucene/facet/taxonomy/FloatTaxonomyFacets.java |    18 +-
 .../facet/taxonomy/IntAssociationFacetField.java   |    35 +-
 .../lucene/facet/taxonomy/IntTaxonomyFacets.java   |    34 +-
 .../apache/lucene/facet/taxonomy/LRUHashMap.java   |    92 +-
 .../facet/taxonomy/OrdinalMappingLeafReader.java   |    74 +-
 .../lucene/facet/taxonomy/OrdinalsReader.java      |    16 +-
 .../facet/taxonomy/ParallelTaxonomyArrays.java     |    48 +-
 .../lucene/facet/taxonomy/PrintTaxonomyStats.java  |    30 +-
 .../facet/taxonomy/SearcherTaxonomyManager.java    |    76 +-
 .../lucene/facet/taxonomy/TaxonomyFacetCounts.java |    39 +-
 .../lucene/facet/taxonomy/TaxonomyFacetLabels.java |   196 +
 .../TaxonomyFacetSumFloatAssociations.java         |    51 +-
 .../taxonomy/TaxonomyFacetSumIntAssociations.java  |    51 +-
 .../taxonomy/TaxonomyFacetSumValueSource.java      |    55 +-
 .../lucene/facet/taxonomy/TaxonomyFacets.java      |    76 +-
 .../lucene/facet/taxonomy/TaxonomyMergeUtils.java  |    32 +-
 .../lucene/facet/taxonomy/TaxonomyReader.java      |   202 +-
 .../lucene/facet/taxonomy/TaxonomyWriter.java      |   135 +-
 .../lucene/facet/taxonomy/directory/Consts.java    |     4 +-
 .../directory/DirectoryTaxonomyReader.java         |   209 +-
 .../directory/DirectoryTaxonomyWriter.java         |   482 +-
 .../taxonomy/directory/TaxonomyIndexArrays.java    |    89 +-
 .../facet/taxonomy/directory/package-info.java     |     4 +-
 .../apache/lucene/facet/taxonomy/package-info.java |    50 +-
 .../facet/taxonomy/writercache/CharBlockArray.java |    20 +-
 .../facet/taxonomy/writercache/LabelToOrdinal.java |    28 +-
 .../writercache/LruTaxonomyWriterCache.java        |    23 +-
 .../taxonomy/writercache/NameHashIntCacheLRU.java  |    11 +-
 .../taxonomy/writercache/NameIntCacheLRU.java      |    57 +-
 .../taxonomy/writercache/TaxonomyWriterCache.java  |    93 +-
 .../writercache/UTF8TaxonomyWriterCache.java       |    47 +-
 .../facet/taxonomy/writercache/package-info.java   |     4 +-
 .../facet/AssertingSubDocsAtOnceCollector.java     |    11 +-
 .../org/apache/lucene/facet/FacetTestCase.java     |   184 +-
 .../org/apache/lucene/facet/SlowDirectory.java     |   111 +-
 .../apache/lucene/facet/TestDrillDownQuery.java    |    67 +-
 .../org/apache/lucene/facet/TestDrillSideways.java |   386 +-
 .../org/apache/lucene/facet/TestFacetQuery.java    |    23 +-
 .../org/apache/lucene/facet/TestFacetsConfig.java  |    35 +-
 .../lucene/facet/TestLongValueFacetCounts.java     |   255 +-
 .../lucene/facet/TestMultipleIndexFields.java      |   100 +-
 .../lucene/facet/TestParallelDrillSideways.java    |    26 +-
 .../facet/TestRandomSamplingFacetsCollector.java   |    82 +-
 .../lucene/facet/range/TestRangeFacetCounts.java   |   441 +-
 .../sortedset/TestSortedSetDocValuesFacets.java    |    86 +-
 .../facet/taxonomy/TestCachedOrdinalsReader.java   |    34 +-
 .../lucene/facet/taxonomy/TestFacetLabel.java      |   208 +-
 .../taxonomy/TestOrdinalMappingLeafReader.java     |    49 +-
 .../taxonomy/TestSearcherTaxonomyManager.java      |    98 +-
 .../facet/taxonomy/TestTaxonomyCombined.java       |   756 +-
 .../taxonomy/TestTaxonomyFacetAssociations.java    |   139 +-
 .../facet/taxonomy/TestTaxonomyFacetCounts.java    |   329 +-
 .../facet/taxonomy/TestTaxonomyFacetCounts2.java   |   114 +-
 .../facet/taxonomy/TestTaxonomyFacetLabels.java    |   204 +
 .../taxonomy/TestTaxonomyFacetSumValueSource.java  |   169 +-
 .../facet/taxonomy/directory/TestAddTaxonomy.java  |   114 +-
 .../directory/TestBackwardsCompatibility.java      |   113 +
 .../directory/TestConcurrentFacetedIndexing.java   |   122 +-
 .../directory/TestDirectoryTaxonomyReader.java     |   231 +-
 .../directory/TestDirectoryTaxonomyWriter.java     |   311 +-
 .../taxonomy/directory/taxonomy.8.6.3-cfs.zip      |   Bin 0 -> 3058 bytes
 .../writercache/Test2GBCharBlockArray.java         |     9 +-
 .../taxonomy/writercache/TestCharBlockArray.java   |    34 +-
 .../writercache/TestLruTaxonomyWriterCache.java    |     1 -
 .../writercache/TestUTF8TaxonomyWriterCache.java   |     7 +-
 .../search/grouping/AllGroupHeadsCollector.java    |    84 +-
 .../lucene/search/grouping/AllGroupsCollector.java |    23 +-
 .../search/grouping/BlockGroupingCollector.java    |   193 +-
 .../search/grouping/CollectedSearchGroup.java      |    10 +-
 .../search/grouping/DistinctValuesCollector.java   |    27 +-
 .../apache/lucene/search/grouping/DoubleRange.java |    10 +-
 .../lucene/search/grouping/DoubleRangeFactory.java |    20 +-
 .../search/grouping/DoubleRangeGroupSelector.java  |    16 +-
 .../grouping/FirstPassGroupingCollector.java       |   100 +-
 .../apache/lucene/search/grouping/GroupDocs.java   |    40 +-
 .../search/grouping/GroupFacetCollector.java       |    93 +-
 .../lucene/search/grouping/GroupReducer.java       |    35 +-
 .../lucene/search/grouping/GroupSelector.java      |    39 +-
 .../lucene/search/grouping/GroupingSearch.java     |   135 +-
 .../apache/lucene/search/grouping/LongRange.java   |     9 +-
 .../lucene/search/grouping/LongRangeFactory.java   |    20 +-
 .../search/grouping/LongRangeGroupSelector.java    |    16 +-
 .../apache/lucene/search/grouping/SearchGroup.java |   103 +-
 .../grouping/SecondPassGroupingCollector.java      |    28 +-
 .../search/grouping/TermGroupFacetCollector.java   |   113 +-
 .../lucene/search/grouping/TermGroupSelector.java  |    25 +-
 .../apache/lucene/search/grouping/TopGroups.java   |   176 +-
 .../lucene/search/grouping/TopGroupsCollector.java |   106 +-
 .../search/grouping/ValueSourceGroupSelector.java  |    13 +-
 .../lucene/search/grouping/package-info.java       |   187 +-
 .../search/grouping/AbstractGroupingTestCase.java  |    17 +-
 .../grouping/AllGroupHeadsCollectorTest.java       |   558 -
 .../search/grouping/AllGroupsCollectorTest.java    |   134 -
 .../search/grouping/BaseGroupSelectorTestCase.java |   128 +-
 .../lucene/search/grouping/BlockGroupingTest.java  |   225 -
 .../grouping/DistinctValuesCollectorTest.java      |   481 -
 .../grouping/DoubleRangeGroupSelectorTest.java     |    59 -
 .../search/grouping/GroupFacetCollectorTest.java   |   771 -
 .../lucene/search/grouping/GroupingSearchTest.java |   247 -
 .../grouping/LongRangeGroupSelectorTest.java       |    59 -
 .../search/grouping/TermGroupSelectorTest.java     |    60 -
 .../grouping/TestAllGroupHeadsCollector.java       |   608 +
 .../search/grouping/TestAllGroupsCollector.java    |   132 +
 .../lucene/search/grouping/TestBlockGrouping.java  |   227 +
 .../grouping/TestDistinctValuesCollector.java      |   523 +
 .../search/grouping/TestDoubleRangeFactory.java    |     2 -
 .../grouping/TestDoubleRangeGroupSelector.java     |    59 +
 .../search/grouping/TestGroupFacetCollector.java   |   848 +
 .../lucene/search/grouping/TestGrouping.java       |   798 +-
 .../lucene/search/grouping/TestGroupingSearch.java |   251 +
 .../search/grouping/TestLongRangeFactory.java      |     2 -
 .../grouping/TestLongRangeGroupSelector.java       |    59 +
 .../search/grouping/TestTermGroupSelector.java     |    60 +
 .../lucene/search/grouping/TestTopGroups.java      |   266 +
 .../grouping/TestValueSourceGroupSelector.java     |    50 +
 .../lucene/search/grouping/TopGroupsTest.java      |   231 -
 .../grouping/ValueSourceGroupSelectorTest.java     |    51 -
 .../lucene/search/highlight/DefaultEncoder.java    |    10 +-
 .../apache/lucene/search/highlight/Encoder.java    |    11 +-
 .../apache/lucene/search/highlight/Formatter.java  |    12 +-
 .../apache/lucene/search/highlight/Fragmenter.java |    21 +-
 .../lucene/search/highlight/GradientFormatter.java |   360 +-
 .../lucene/search/highlight/Highlighter.java       |   417 +-
 .../highlight/InvalidTokenOffsetsException.java    |    12 +-
 .../search/highlight/LimitTokenOffsetFilter.java   |     5 +-
 .../lucene/search/highlight/NullFragmenter.java    |     9 +-
 .../search/highlight/OffsetLimitTokenFilter.java   |    15 +-
 .../lucene/search/highlight/PositionSpan.java      |     3 +-
 .../lucene/search/highlight/QueryScorer.java       |    92 +-
 .../search/highlight/QueryTermExtractor.java       |    80 +-
 .../lucene/search/highlight/QueryTermScorer.java   |    52 +-
 .../org/apache/lucene/search/highlight/Scorer.java |    38 +-
 .../lucene/search/highlight/SimpleFragmenter.java  |    20 +-
 .../lucene/search/highlight/SimpleHTMLEncoder.java |    66 +-
 .../search/highlight/SimpleHTMLFormatter.java      |    13 +-
 .../search/highlight/SimpleSpanFragmenter.java     |    21 +-
 .../search/highlight/SpanGradientFormatter.java    |    33 +-
 .../search/highlight/TermVectorLeafReader.java     |    83 +-
 .../lucene/search/highlight/TextFragment.java      |    48 +-
 .../apache/lucene/search/highlight/TokenGroup.java |    21 +-
 .../lucene/search/highlight/TokenSources.java      |   136 +-
 .../highlight/TokenStreamFromTermVector.java       |   124 +-
 .../lucene/search/highlight/WeightedSpanTerm.java  |    15 +-
 .../highlight/WeightedSpanTermExtractor.java       |   266 +-
 .../lucene/search/highlight/WeightedTerm.java      |    46 +-
 .../lucene/search/highlight/package-info.java      |    70 +-
 .../BreakIteratorShrinkingAdjuster.java            |     4 +-
 .../matchhighlight/CharSequenceIterator.java       |     4 +-
 .../matchhighlight/FieldValueHighlighters.java     |   157 +
 .../search/matchhighlight/MatchHighlighter.java    |   323 +
 .../matchhighlight/MatchRegionRetriever.java       |   114 +-
 .../lucene/search/matchhighlight/OffsetRange.java  |    14 +-
 .../matchhighlight/OffsetsFromMatchIterator.java   |    10 +-
 .../matchhighlight/OffsetsFromPositions.java       |   101 +-
 .../search/matchhighlight/OffsetsFromTokens.java   |    44 +-
 .../search/matchhighlight/OffsetsFromValues.java   |    22 +-
 .../matchhighlight/OffsetsRetrievalStrategy.java   |    18 +-
 .../OffsetsRetrievalStrategySupplier.java          |     8 +-
 .../lucene/search/matchhighlight/Passage.java      |     6 +
 .../search/matchhighlight/PassageAdjuster.java     |     6 +-
 .../search/matchhighlight/PassageFormatter.java    |    26 +-
 .../search/matchhighlight/PassageSelector.java     |    82 +-
 .../lucene/search/matchhighlight/package-info.java |    14 +-
 .../search/uhighlight/AnalysisOffsetStrategy.java  |    93 +-
 .../lucene/search/uhighlight/CharArrayMatcher.java |    10 +-
 .../uhighlight/CustomSeparatorBreakIterator.java   |     9 +-
 .../search/uhighlight/DefaultPassageFormatter.java |    27 +-
 .../lucene/search/uhighlight/FieldHighlighter.java |    88 +-
 .../search/uhighlight/FieldOffsetStrategy.java     |    93 +-
 .../uhighlight/LabelledCharArrayMatcher.java       |    72 +-
 .../search/uhighlight/LengthGoalBreakIterator.java |    83 +-
 .../uhighlight/MemoryIndexOffsetStrategy.java      |    48 +-
 .../search/uhighlight/MultiTermHighlighting.java   |    20 +-
 .../search/uhighlight/NoOpOffsetStrategy.java      |    17 +-
 .../lucene/search/uhighlight/OffsetsEnum.java      |   156 +-
 .../OverlaySingleDocTermsLeafReader.java           |    13 +-
 .../apache/lucene/search/uhighlight/Passage.java   |    70 +-
 .../lucene/search/uhighlight/PassageFormatter.java |    18 +-
 .../lucene/search/uhighlight/PassageScorer.java    |    56 +-
 .../lucene/search/uhighlight/PhraseHelper.java     |   184 +-
 .../search/uhighlight/PostingsOffsetStrategy.java  |     7 +-
 .../PostingsWithTermVectorsOffsetStrategy.java     |     7 +-
 .../search/uhighlight/SplittingBreakIterator.java  |    39 +-
 .../uhighlight/TermVectorFilteredLeafReader.java   |    29 +-
 .../uhighlight/TermVectorOffsetStrategy.java       |    12 +-
 .../uhighlight/TokenStreamOffsetStrategy.java      |    17 +-
 .../lucene/search/uhighlight/UHComponents.java     |    26 +-
 .../search/uhighlight/UnifiedHighlighter.java      |   644 +-
 .../search/uhighlight/WholeBreakIterator.java      |     6 +-
 .../lucene/search/uhighlight/package-info.java     |     4 +-
 .../vectorhighlight/BaseFragListBuilder.java       |   132 +-
 .../vectorhighlight/BaseFragmentsBuilder.java      |   314 +-
 .../search/vectorhighlight/BoundaryScanner.java    |    10 +-
 .../BreakIteratorBoundaryScanner.java              |    13 +-
 .../vectorhighlight/FastVectorHighlighter.java     |   261 +-
 .../search/vectorhighlight/FieldFragList.java      |   100 +-
 .../search/vectorhighlight/FieldPhraseList.java    |   338 +-
 .../lucene/search/vectorhighlight/FieldQuery.java  |   389 +-
 .../search/vectorhighlight/FieldTermStack.java     |   134 +-
 .../search/vectorhighlight/FragListBuilder.java    |     8 +-
 .../search/vectorhighlight/FragmentsBuilder.java   |    63 +-
 .../ScoreOrderFragmentsBuilder.java                |    50 +-
 .../vectorhighlight/SimpleBoundaryScanner.java     |    46 +-
 .../vectorhighlight/SimpleFieldFragList.java       |    25 +-
 .../vectorhighlight/SimpleFragListBuilder.java     |    14 +-
 .../vectorhighlight/SimpleFragmentsBuilder.java    |    30 +-
 .../vectorhighlight/SingleFragListBuilder.java     |    25 +-
 .../vectorhighlight/WeightedFieldFragList.java     |    56 +-
 .../vectorhighlight/WeightedFragListBuilder.java   |    12 +-
 .../search/vectorhighlight/package-info.java       |   150 +-
 .../search/highlight/HighlighterPhraseTest.java    |   424 -
 .../lucene/search/highlight/HighlighterTest.java   |  2328 --
 .../apache/lucene/search/highlight/MissesTest.java |    79 -
 .../highlight/OffsetLimitTokenFilterTest.java      |    58 -
 .../lucene/search/highlight/TestHighlighter.java   |  2504 ++
 .../search/highlight/TestHighlighterPhrase.java    |   453 +
 .../apache/lucene/search/highlight/TestMisses.java |    91 +
 .../highlight/TestOffsetLimitTokenFilter.java      |    58 +
 .../lucene/search/highlight/TestTokenSources.java  |   502 +
 .../lucene/search/highlight/TokenSourcesTest.java  |   497 -
 .../highlight/custom/HighlightCustomQueryTest.java |   196 -
 .../highlight/custom/TestHighlightCustomQuery.java |   189 +
 .../search/matchhighlight/AnalyzerWithGaps.java    |    49 +
 .../matchhighlight/AsciiMatchRangeHighlighter.java |    12 +-
 .../lucene/search/matchhighlight/IndexBuilder.java |   105 +
 .../search/matchhighlight/MissingAnalyzer.java     |     3 +-
 .../matchhighlight/TestMatchHighlighter.java       |   545 +
 .../matchhighlight/TestMatchRegionRetriever.java   |   954 +-
 .../search/matchhighlight/TestPassageSelector.java |    73 +-
 .../uhighlight/LengthGoalBreakIteratorTest.java    |   199 -
 .../TestCustomSeparatorBreakIterator.java          |    33 +-
 .../uhighlight/TestDefaultPassageFormatter.java    |    22 +-
 .../uhighlight/TestLengthGoalBreakIterator.java    |   251 +
 .../uhighlight/TestSplittingBreakIterator.java     |    66 +-
 .../search/uhighlight/TestUnifiedHighlighter.java  |   718 +-
 .../uhighlight/TestUnifiedHighlighterMTQ.java      |   431 +-
 .../uhighlight/TestUnifiedHighlighterRanking.java  |   155 +-
 .../TestUnifiedHighlighterReanalysis.java          |    28 +-
 .../TestUnifiedHighlighterStrictPhrases.java       |   609 +-
 .../TestUnifiedHighlighterTermIntervals.java       |   467 +-
 .../uhighlight/TestUnifiedHighlighterTermVec.java  |    90 +-
 .../search/uhighlight/TestWholeBreakIterator.java  |    56 +-
 .../lucene/search/uhighlight/UHTestHelper.java     |    20 +-
 .../TestUnifiedHighlighterExtensibility.java       |   344 +-
 .../search/vectorhighlight/AbstractTestCase.java   |   270 +-
 .../BreakIteratorBoundaryScannerTest.java          |    92 -
 .../vectorhighlight/FastVectorHighlighterTest.java |   790 -
 .../vectorhighlight/FieldPhraseListTest.java       |   290 -
 .../search/vectorhighlight/FieldQueryTest.java     |   961 -
 .../search/vectorhighlight/FieldTermStackTest.java |   210 -
 .../vectorhighlight/IndexTimeSynonymTest.java      |   315 -
 .../ScoreOrderFragmentsBuilderTest.java            |    49 -
 .../vectorhighlight/SimpleBoundaryScannerTest.java |    58 -
 .../vectorhighlight/SimpleFragListBuilderTest.java |   182 -
 .../SimpleFragmentsBuilderTest.java                |   336 -
 .../vectorhighlight/SingleFragListBuilderTest.java |    52 -
 .../TestBreakIteratorBoundaryScanner.java          |    93 +
 .../vectorhighlight/TestFastVectorHighlighter.java |   992 +
 .../vectorhighlight/TestFieldPhraseList.java       |   292 +
 .../search/vectorhighlight/TestFieldQuery.java     |   956 +
 .../search/vectorhighlight/TestFieldTermStack.java |   212 +
 .../vectorhighlight/TestIndexTimeSynonym.java      |   327 +
 .../TestScoreOrderFragmentsBuilder.java            |    49 +
 .../vectorhighlight/TestSimpleBoundaryScanner.java |    58 +
 .../vectorhighlight/TestSimpleFragListBuilder.java |   201 +
 .../TestSimpleFragmentsBuilder.java                |   345 +
 .../vectorhighlight/TestSingleFragListBuilder.java |    63 +
 .../TestWeightedFragListBuilder.java               |    64 +
 .../WeightedFragListBuilderTest.java               |    63 -
 .../search/join/BaseGlobalOrdinalScorer.java       |     5 +-
 .../apache/lucene/search/join/BitSetProducer.java  |    10 +-
 .../lucene/search/join/BlockJoinSelector.java      |   131 +-
 .../apache/lucene/search/join/CheckJoinIndex.java  |    33 +-
 .../search/join/DocValuesTermsCollector.java       |     9 +-
 .../lucene/search/join/GenericTermsCollector.java  |    48 +-
 .../search/join/GlobalOrdinalsCollector.java       |     8 +-
 .../lucene/search/join/GlobalOrdinalsQuery.java    |    96 +-
 .../join/GlobalOrdinalsWithScoreCollector.java     |    30 +-
 .../search/join/GlobalOrdinalsWithScoreQuery.java  |   121 +-
 .../org/apache/lucene/search/join/JoinUtil.java    |   635 +-
 .../search/join/ParentChildrenBlockJoinQuery.java  |    97 +-
 .../search/join/PointInSetIncludingScoreQuery.java |   111 +-
 .../lucene/search/join/QueryBitSetProducer.java    |    24 +-
 .../org/apache/lucene/search/join/ScoreMode.java   |    25 +-
 .../search/join/SeekingTermSetTermsEnum.java       |    13 +-
 .../apache/lucene/search/join/TermsCollector.java  |    12 +-
 .../search/join/TermsIncludingScoreQuery.java      |    94 +-
 .../org/apache/lucene/search/join/TermsQuery.java  |    59 +-
 .../search/join/TermsWithScoreCollector.java       |    45 +-
 .../lucene/search/join/ToChildBlockJoinQuery.java  |    81 +-
 .../lucene/search/join/ToParentBlockJoinQuery.java |   124 +-
 .../search/join/ToParentBlockJoinSortField.java    |   197 +-
 .../lucene/search/join/ToParentDocValues.java      |   132 +-
 .../apache/lucene/search/join/package-info.java    |   104 +-
 .../apache/lucene/search/join/TestBlockJoin.java   |   622 +-
 .../lucene/search/join/TestBlockJoinScorer.java    |    25 +-
 .../lucene/search/join/TestBlockJoinSelector.java  |    80 +-
 .../lucene/search/join/TestBlockJoinSorting.java   |    98 +-
 .../search/join/TestBlockJoinValidation.java       |    79 +-
 .../lucene/search/join/TestCheckJoinIndex.java     |     8 +-
 .../apache/lucene/search/join/TestJoinUtil.java    |  1202 +-
 .../join/TestParentChildrenBlockJoinQuery.java     |    21 +-
 .../search/join/TestQueryBitSetProducer.java       |    34 +-
 .../jetty-continuation-9.4.27.v20200227.jar.sha1   |     1 -
 .../jetty-continuation-9.4.34.v20201102.jar.sha1   |     1 +
 .../licenses/jetty-http-9.4.27.v20200227.jar.sha1  |     1 -
 .../licenses/jetty-http-9.4.34.v20201102.jar.sha1  |     1 +
 lucene/licenses/jetty-io-9.4.27.v20200227.jar.sha1 |     1 -
 lucene/licenses/jetty-io-9.4.34.v20201102.jar.sha1 |     1 +
 .../jetty-server-9.4.27.v20200227.jar.sha1         |     1 -
 .../jetty-server-9.4.34.v20201102.jar.sha1         |     1 +
 .../jetty-servlet-9.4.27.v20200227.jar.sha1        |     1 -
 .../jetty-servlet-9.4.34.v20201102.jar.sha1        |     1 +
 .../licenses/jetty-util-9.4.27.v20200227.jar.sha1  |     1 -
 .../licenses/jetty-util-9.4.34.v20201102.jar.sha1  |     1 +
 lucene/licenses/junit-4.12.jar.sha1                |     1 -
 lucene/licenses/junit-4.13.1.jar.sha1              |     1 +
 lucene/luke/build.gradle                           |    35 +-
 .../apache/lucene/luke/app/AbstractHandler.java    |     2 -
 .../apache/lucene/luke/app/DirectoryHandler.java   |     5 +-
 .../apache/lucene/luke/app/DirectoryObserver.java  |     1 -
 .../org/apache/lucene/luke/app/IndexHandler.java   |    18 +-
 .../org/apache/lucene/luke/app/IndexObserver.java  |     1 -
 .../java/org/apache/lucene/luke/app/LukeState.java |     5 +-
 .../java/org/apache/lucene/luke/app/Observer.java  |     3 +-
 .../apache/lucene/luke/app/desktop/LukeMain.java   |    38 +-
 .../lucene/luke/app/desktop/MessageBroker.java     |     1 -
 .../lucene/luke/app/desktop/Preferences.java       |     8 +-
 .../luke/app/desktop/PreferencesFactory.java       |     3 +-
 .../lucene/luke/app/desktop/PreferencesImpl.java   |    14 +-
 .../desktop/components/AnalysisPanelProvider.java  |   185 +-
 .../desktop/components/AnalysisTabOperator.java    |     2 -
 .../desktop/components/CommitsPanelProvider.java   |   204 +-
 .../components/ComponentOperatorRegistry.java      |     4 +-
 .../desktop/components/DocumentsPanelProvider.java |   345 +-
 .../desktop/components/DocumentsTabOperator.java   |     2 +-
 .../app/desktop/components/LogsPanelProvider.java  |     6 +-
 .../app/desktop/components/LukeWindowProvider.java |    33 +-
 .../app/desktop/components/MenuBarProvider.java    |    45 +-
 .../desktop/components/OverviewPanelProvider.java  |   172 +-
 .../desktop/components/SearchPanelProvider.java    |   344 +-
 .../app/desktop/components/TabSwitcherProxy.java   |     1 -
 .../app/desktop/components/TabbedPaneProvider.java |    10 +-
 .../app/desktop/components/TableColumnInfo.java    |     1 -
 .../app/desktop/components/TableModelBase.java     |     9 +-
 .../components/dialog/ConfirmDialogFactory.java    |    23 +-
 .../components/dialog/HelpDialogFactory.java       |    15 +-
 .../analysis/AnalysisChainDialogFactory.java       |    54 +-
 .../dialog/analysis/EditFiltersDialogFactory.java  |   140 +-
 .../dialog/analysis/EditFiltersMode.java           |     3 +-
 .../dialog/analysis/EditParamsDialogFactory.java   |   106 +-
 .../components/dialog/analysis/EditParamsMode.java |     4 +-
 .../analysis/TokenAttributeDialogFactory.java      |    40 +-
 .../components/dialog/analysis/package-info.java   |     2 +-
 .../dialog/documents/AddDocumentDialogFactory.java |   254 +-
 .../documents/AddDocumentDialogOperator.java       |     1 -
 .../dialog/documents/DocValuesDialogFactory.java   |    64 +-
 .../documents/IndexOptionsDialogFactory.java       |    27 +-
 .../dialog/documents/StoredValueDialogFactory.java |    34 +-
 .../dialog/documents/TermVectorDialogFactory.java  |    65 +-
 .../components/dialog/documents/package-info.java  |     2 +-
 .../dialog/menubar/AboutDialogFactory.java         |   104 +-
 .../dialog/menubar/CheckIndexDialogFactory.java    |   187 +-
 .../dialog/menubar/CreateIndexDialogFactory.java   |   160 +-
 .../dialog/menubar/ExportTermsDialogFactory.java   |   135 +-
 .../dialog/menubar/OpenIndexDialogFactory.java     |    76 +-
 .../dialog/menubar/OptimizeIndexDialogFactory.java |   101 +-
 .../components/dialog/menubar/package-info.java    |     2 +-
 .../desktop/components/dialog/package-info.java    |     2 +-
 .../dialog/search/ExplainDialogFactory.java        |    38 +-
 .../components/dialog/search/package-info.java     |     2 +-
 .../analysis/CustomAnalyzerPanelOperator.java      |     1 -
 .../analysis/CustomAnalyzerPanelProvider.java      |   267 +-
 .../analysis/PresetAnalyzerPanelOperator.java      |     1 -
 .../analysis/PresetAnalyzerPanelProvider.java      |    20 +-
 .../analysis/SimpleAnalyzeResultPanelOperator.java |     4 +-
 .../analysis/SimpleAnalyzeResultPanelProvider.java |    55 +-
 .../StepByStepAnalyzeResultPanelOperator.java      |     3 +-
 .../StepByStepAnalyzeResultPanelProvider.java      |    99 +-
 .../fragments/analysis/package-info.java           |     2 +-
 .../desktop/components/fragments/package-info.java |     2 +-
 .../fragments/search/AnalyzerPaneProvider.java     |    43 +-
 .../fragments/search/AnalyzerTabOperator.java      |     1 -
 .../fragments/search/FieldValuesPaneProvider.java  |    37 +-
 .../fragments/search/FieldValuesTabOperator.java   |     1 -
 .../fragments/search/MLTPaneProvider.java          |    59 +-
 .../fragments/search/MLTTabOperator.java           |     1 -
 .../fragments/search/QueryParserPaneProvider.java  |   109 +-
 .../fragments/search/QueryParserTabOperator.java   |     2 -
 .../fragments/search/SimilarityPaneProvider.java   |    18 +-
 .../fragments/search/SortPaneProvider.java         |    75 +-
 .../fragments/search/SortTabOperator.java          |     2 -
 .../components/fragments/search/package-info.java  |     2 +-
 .../luke/app/desktop/components/package-info.java  |     2 +-
 .../luke/app/desktop/dto/documents/NewField.java   |     5 +-
 .../app/desktop/dto/documents/package-info.java    |     2 +-
 .../lucene/luke/app/desktop/package-info.java      |     2 +-
 .../lucene/luke/app/desktop/util/DialogOpener.java |    17 +-
 .../luke/app/desktop/util/ExceptionHandler.java    |     2 -
 .../lucene/luke/app/desktop/util/FontUtils.java    |    13 +-
 .../luke/app/desktop/util/HelpHeaderRenderer.java  |    67 +-
 .../lucene/luke/app/desktop/util/ImageUtils.java   |     9 +-
 .../lucene/luke/app/desktop/util/ListUtils.java    |     8 +-
 .../lucene/luke/app/desktop/util/MessageUtils.java |    41 +-
 .../lucene/luke/app/desktop/util/NumericUtils.java |    31 +-
 .../lucene/luke/app/desktop/util/StringUtils.java  |     3 +-
 .../luke/app/desktop/util/StyleConstants.java      |     4 +-
 .../lucene/luke/app/desktop/util/TabUtils.java     |    12 +-
 .../lucene/luke/app/desktop/util/TableUtils.java   |    27 +-
 .../luke/app/desktop/util/TextAreaAppender.java    |    28 +-
 .../luke/app/desktop/util/TextAreaPrintStream.java |     2 +-
 .../lucene/luke/app/desktop/util/URLLabel.java     |    16 +-
 .../luke/app/desktop/util/inifile/IniFile.java     |     1 -
 .../app/desktop/util/inifile/IniFileReader.java    |     1 -
 .../app/desktop/util/inifile/IniFileWriter.java    |     1 -
 .../luke/app/desktop/util/inifile/OptionMap.java   |     1 -
 .../app/desktop/util/inifile/SimpleIniFile.java    |     4 +-
 .../desktop/util/inifile/SimpleIniFileReader.java  |    39 +-
 .../app/desktop/util/inifile/package-info.java     |     2 +-
 .../luke/app/desktop/util/lang/package-info.java   |     2 +-
 .../lucene/luke/app/desktop/util/package-info.java |     2 +-
 .../org/apache/lucene/luke/app/package-info.java   |     2 +-
 .../apache/lucene/luke/models/LukeException.java   |     1 -
 .../org/apache/lucene/luke/models/LukeModel.java   |     7 +-
 .../lucene/luke/models/analysis/Analysis.java      |    76 +-
 .../luke/models/analysis/AnalysisFactory.java      |     1 -
 .../lucene/luke/models/analysis/AnalysisImpl.java  |    84 +-
 .../luke/models/analysis/CustomAnalyzerConfig.java |    20 +-
 .../lucene/luke/models/analysis/package-info.java  |     2 +-
 .../apache/lucene/luke/models/commits/Commit.java  |     8 +-
 .../apache/lucene/luke/models/commits/Commits.java |    12 +-
 .../lucene/luke/models/commits/CommitsFactory.java |     1 -
 .../lucene/luke/models/commits/CommitsImpl.java    |    39 +-
 .../apache/lucene/luke/models/commits/File.java    |     7 +-
 .../apache/lucene/luke/models/commits/Segment.java |     8 +-
 .../lucene/luke/models/commits/package-info.java   |     2 +-
 .../lucene/luke/models/documents/DocValues.java    |    35 +-
 .../luke/models/documents/DocValuesAdapter.java    |    58 +-
 .../luke/models/documents/DocumentField.java       |    38 +-
 .../lucene/luke/models/documents/Documents.java    |    58 +-
 .../luke/models/documents/DocumentsFactory.java    |     1 -
 .../luke/models/documents/DocumentsImpl.java       |    48 +-
 .../lucene/luke/models/documents/TermPosting.java  |    24 +-
 .../luke/models/documents/TermVectorEntry.java     |    70 +-
 .../luke/models/documents/TermVectorsAdapter.java  |    10 +-
 .../lucene/luke/models/documents/package-info.java |     2 +-
 .../lucene/luke/models/overview/Overview.java      |    57 +-
 .../luke/models/overview/OverviewFactory.java      |     1 -
 .../lucene/luke/models/overview/OverviewImpl.java  |    18 +-
 .../lucene/luke/models/overview/TermCounts.java    |    17 +-
 .../luke/models/overview/TermCountsOrder.java      |    20 +-
 .../lucene/luke/models/overview/TermStats.java     |    34 +-
 .../lucene/luke/models/overview/TopTerms.java      |    13 +-
 .../lucene/luke/models/overview/package-info.java  |     2 +-
 .../apache/lucene/luke/models/package-info.java    |     2 +-
 .../lucene/luke/models/search/MLTConfig.java       |     6 +-
 .../luke/models/search/QueryParserConfig.java      |    63 +-
 .../apache/lucene/luke/models/search/Search.java   |    47 +-
 .../lucene/luke/models/search/SearchFactory.java   |     1 -
 .../lucene/luke/models/search/SearchImpl.java      |   114 +-
 .../lucene/luke/models/search/SearchResults.java   |    58 +-
 .../luke/models/search/SimilarityConfig.java       |    26 +-
 .../lucene/luke/models/search/package-info.java    |     2 +-
 .../lucene/luke/models/tools/IndexTools.java       |    15 +-
 .../luke/models/tools/IndexToolsFactory.java       |     1 -
 .../lucene/luke/models/tools/IndexToolsImpl.java   |    23 +-
 .../lucene/luke/models/tools/package-info.java     |     2 +-
 .../apache/lucene/luke/models/util/IndexUtils.java |    93 +-
 .../lucene/luke/models/util/package-info.java      |     2 +-
 .../luke/models/util/twentynewsgroups/Message.java |     8 +-
 .../util/twentynewsgroups/MessageFilesParser.java  |    12 +-
 .../models/util/twentynewsgroups/package-info.java |     2 +-
 .../java/org/apache/lucene/luke/package-info.java  |     2 +-
 .../org/apache/lucene/luke/util/BytesRefUtils.java |     7 +-
 .../org/apache/lucene/luke/util/LoggerFactory.java |    37 +-
 .../org/apache/lucene/luke/util/package-info.java  |     2 +-
 .../lucene/luke/util/reflection/ClassScanner.java  |    10 +-
 .../luke/util/reflection/SubtypeCollector.java     |     8 +-
 .../lucene/luke/util/reflection/package-info.java  |     2 +-
 .../desktop/util/inifile/SimpleIniFileTest.java    |     1 -
 .../luke/models/analysis/AnalysisImplTest.java     |    60 +-
 .../luke/models/commits/CommitsImplTest.java       |    10 +-
 .../models/documents/DocValuesAdapterTest.java     |    16 +-
 .../luke/models/documents/DocumentsImplTest.java   |     7 +-
 .../luke/models/documents/DocumentsTestBase.java   |    34 +-
 .../models/documents/TermVectorsAdapterTest.java   |     4 +-
 .../luke/models/overview/OverviewImplTest.java     |     8 +-
 .../luke/models/overview/OverviewTestBase.java     |     4 +-
 .../luke/models/overview/TermCountsTest.java       |     4 +-
 .../lucene/luke/models/overview/TopTermsTest.java  |     2 -
 .../lucene/luke/models/search/SearchImplTest.java  |   111 +-
 .../apache/lucene/index/memory/MemoryIndex.java    |   733 +-
 .../apache/lucene/index/memory/package-info.java   |     4 +-
 .../lucene/index/memory/TestMemoryIndex.java       |   207 +-
 .../memory/TestMemoryIndexAgainstDirectory.java    |   287 +-
 lucene/misc/build.gradle                           |     4 +-
 lucene/misc/native/build.gradle                    |    69 +
 .../misc/native/src/main/posix/NativePosixUtil.cpp |   346 +
 .../native/src/main/windows/WindowsDirectory.cpp   |   175 +
 .../apache/lucene/document/InetAddressPoint.java   |   312 -
 .../apache/lucene/document/InetAddressRange.java   |   172 -
 .../org/apache/lucene/document/LazyDocument.java   |   195 -
 .../java/org/apache/lucene/document/package.html   |    22 -
 .../org/apache/lucene/index/IndexSplitter.java     |   159 -
 .../lucene/index/MultiPassIndexSplitter.java       |   266 -
 .../org/apache/lucene/index/PKIndexSplitter.java   |   182 -
 .../src/java/org/apache/lucene/index/package.html  |    22 -
 .../apache/lucene/misc/CollectorMemoryTracker.java |     7 +-
 .../java/org/apache/lucene/misc/GetTermInfo.java   |    38 +-
 .../java/org/apache/lucene/misc/HighFreqTerms.java |    88 +-
 .../org/apache/lucene/misc/IndexMergeTool.java     |    42 +-
 .../apache/lucene/misc/SweetSpotSimilarity.java    |   165 +-
 .../src/java/org/apache/lucene/misc/TermStats.java |    18 +-
 .../apache/lucene/misc/document/LazyDocument.java  |   193 +
 .../apache/lucene/misc/document/package-info.java  |    19 +
 .../apache/lucene/misc/index/IndexSplitter.java    |   161 +
 .../lucene/misc/index/MultiPassIndexSplitter.java  |   279 +
 .../apache/lucene/misc/index/PKIndexSplitter.java  |   207 +
 .../org/apache/lucene/misc/index/package-info.java |    19 +
 .../java/org/apache/lucene/misc/package-info.java  |     4 +-
 .../misc/search/DiversifiedTopDocsCollector.java   |   242 +
 .../apache/lucene/misc/search/DocValuesStats.java  |   418 +
 .../misc/search/DocValuesStatsCollector.java       |    71 +
 .../search/MemoryAccountingBitsetCollector.java    |    59 +
 .../apache/lucene/misc/search/package-info.java    |    19 +
 .../search/similarity/LegacyBM25Similarity.java    |   111 +
 .../misc/search/similarity/package-info.java       |    19 +
 .../misc/store/HardlinkCopyDirectoryWrapper.java   |   104 +
 .../apache/lucene/misc/store/NativePosixUtil.java  |    55 +
 .../lucene/misc/store/NativeUnixDirectory.java     |   451 +
 .../org/apache/lucene/misc/store/RAFDirectory.java |   199 +
 .../apache/lucene/misc/store/WindowsDirectory.java |   147 +
 .../org/apache/lucene/misc/store/package-info.java |    19 +
 .../org/apache/lucene/misc/util/MemoryTracker.java |    25 +
 .../apache/lucene/misc/util/fst/ListOfOutputs.java |   227 +
 .../misc/util/fst/UpToTwoPositiveIntOutputs.java   |   246 +
 .../apache/lucene/misc/util/fst/package-info.java  |    19 +
 .../org/apache/lucene/misc/util/package-info.java  |    19 +
 .../lucene/search/DiversifiedTopDocsCollector.java |   244 -
 .../org/apache/lucene/search/DocValuesStats.java   |   409 -
 .../lucene/search/DocValuesStatsCollector.java     |    64 -
 .../search/MemoryAccountingBitsetCollector.java    |    58 -
 .../src/java/org/apache/lucene/search/package.html |    22 -
 .../search/similarity/LegacyBM25Similarity.java    |   104 -
 .../apache/lucene/search/similarity/package.html   |    22 -
 .../lucene/store/HardlinkCopyDirectoryWrapper.java |    95 -
 .../org/apache/lucene/store/NativePosixUtil.cpp    |   346 -
 .../org/apache/lucene/store/NativePosixUtil.java   |    52 -
 .../apache/lucene/store/NativeUnixDirectory.java   |   429 -
 .../java/org/apache/lucene/store/RAFDirectory.java |   176 -
 .../org/apache/lucene/store/WindowsDirectory.cpp   |   175 -
 .../org/apache/lucene/store/WindowsDirectory.java  |   137 -
 .../src/java/org/apache/lucene/store/package.html  |    22 -
 .../java/org/apache/lucene/util/MemoryTracker.java |    26 -
 .../org/apache/lucene/util/fst/ListOfOutputs.java  |   231 -
 .../lucene/util/fst/UpToTwoPositiveIntOutputs.java |   250 -
 .../java/org/apache/lucene/util/fst/package.html   |    22 -
 .../src/java/org/apache/lucene/util/package.html   |    23 -
 lucene/misc/src/java/overview.html                 |    25 +-
 .../lucene/document/TestInetAddressPoint.java      |   176 -
 .../apache/lucene/document/TestLazyDocument.java   |   223 -
 .../org/apache/lucene/index/TestIndexSplitter.java |    96 -
 .../lucene/index/TestMultiPassIndexSplitter.java   |   139 -
 .../apache/lucene/index/TestPKIndexSplitter.java   |   117 -
 .../lucene/misc/SweetSpotSimilarityTest.java       |   199 +-
 .../org/apache/lucene/misc/TestHighFreqTerms.java  |   183 +-
 .../org/apache/lucene/misc/TestIndexMergeTool.java |    40 +-
 .../lucene/misc/document/TestLazyDocument.java     |   217 +
 .../lucene/misc/index/TestIndexSplitter.java       |   104 +
 .../misc/index/TestMultiPassIndexSplitter.java     |   136 +
 .../lucene/misc/index/TestPKIndexSplitter.java     |   136 +
 .../search/TestDiversifiedTopDocsCollector.java    |   575 +
 .../misc/search/TestDocValuesStatsCollector.java   |   482 +
 .../TestMemoryAccountingBitsetCollector.java       |    77 +
 .../similarity/TestLegacyBM25Similarity.java       |   143 +
 .../lucene/misc/store/NativeLibEnableRule.java     |    55 +
 .../lucene/misc/store/NativeUnixDirectoryTest.java |    48 +
 .../store/TestHardLinkCopyDirectoryWrapper.java    |   138 +
 .../apache/lucene/misc/store/TestRAFDirectory.java |    33 +
 .../lucene/misc/store/WindowsDirectoryTest.java    |    39 +
 .../misc/util/TestCollectorMemoryTracker.java      |    47 +
 .../apache/lucene/misc/util/fst/TestFSTsMisc.java  |   235 +
 .../search/TestDiversifiedTopDocsCollector.java    |   551 -
 .../lucene/search/TestDocValuesStatsCollector.java |   463 -
 .../lucene/search/TestInetAddressRangeQueries.java |   210 -
 .../TestMemoryAccountingBitsetCollector.java       |    69 -
 .../similarity/TestLegacyBM25Similarity.java       |   123 -
 .../store/TestHardLinkCopyDirectoryWrapper.java    |   126 -
 .../org/apache/lucene/store/TestRAFDirectory.java  |    32 -
 .../lucene/util/TestCollectorMemoryTracker.java    |    42 -
 .../org/apache/lucene/util/fst/TestFSTsMisc.java   |   236 -
 .../apache/lucene/monitor/CandidateMatcher.java    |    60 +-
 .../apache/lucene/monitor/CollectingMatcher.java   |     9 +-
 .../lucene/monitor/ConcurrentQueryLoader.java      |    59 +-
 .../apache/lucene/monitor/CustomQueryHandler.java  |    15 +-
 .../org/apache/lucene/monitor/DocumentBatch.java   |    11 +-
 .../org/apache/lucene/monitor/ExplainingMatch.java |    54 +-
 .../lucene/monitor/ForceNoBulkScoringQuery.java    |    12 +-
 .../org/apache/lucene/monitor/HighlightsMatch.java |   144 +-
 .../org/apache/lucene/monitor/MatcherFactory.java  |     5 +-
 .../org/apache/lucene/monitor/MatchingQueries.java |    33 +-
 .../java/org/apache/lucene/monitor/Monitor.java    |   159 +-
 .../lucene/monitor/MonitorConfiguration.java       |    30 +-
 .../org/apache/lucene/monitor/MonitorQuery.java    |    44 +-
 .../lucene/monitor/MonitorQuerySerializer.java     |    22 +-
 .../lucene/monitor/MonitorUpdateListener.java      |    40 +-
 .../lucene/monitor/MultiMatchingQueries.java       |    37 +-
 .../monitor/MultipassTermFilteredPresearcher.java  |    77 +-
 .../org/apache/lucene/monitor/ParallelMatcher.java |    64 +-
 .../apache/lucene/monitor/PartitionMatcher.java    |    58 +-
 .../org/apache/lucene/monitor/Presearcher.java     |    41 +-
 .../apache/lucene/monitor/PresearcherMatch.java    |    12 +-
 .../apache/lucene/monitor/PresearcherMatches.java  |    12 +-
 .../org/apache/lucene/monitor/QueryAnalyzer.java   |    41 +-
 .../org/apache/lucene/monitor/QueryCacheEntry.java |    21 +-
 .../org/apache/lucene/monitor/QueryDecomposer.java |    24 +-
 .../java/org/apache/lucene/monitor/QueryIndex.java |    86 +-
 .../java/org/apache/lucene/monitor/QueryMatch.java |    30 +-
 .../apache/lucene/monitor/QueryTimeListener.java   |    20 +-
 .../java/org/apache/lucene/monitor/QueryTree.java  |    77 +-
 .../apache/lucene/monitor/RegexpQueryHandler.java  |    44 +-
 .../org/apache/lucene/monitor/ScoringMatch.java    |    15 +-
 .../java/org/apache/lucene/monitor/SlowLog.java    |    22 +-
 .../lucene/monitor/SuffixingNGramTokenFilter.java  |    29 +-
 .../lucene/monitor/TermFilteredPresearcher.java    |   126 +-
 .../org/apache/lucene/monitor/TermWeightor.java    |    48 +-
 .../lucene/monitor/TermsEnumTokenStream.java       |     8 +-
 .../org/apache/lucene/monitor/package-info.java    |   135 +-
 .../lucene/monitor/ConcurrentMatcherTestBase.java  |    23 +-
 .../FieldFilterPresearcherComponentTestBase.java   |    22 +-
 .../org/apache/lucene/monitor/MonitorTestBase.java |     1 -
 .../apache/lucene/monitor/PresearcherTestBase.java |    51 +-
 .../monitor/TestBooleanClauseWeightings.java       |    36 +-
 .../lucene/monitor/TestBooleanTermExtractor.java   |    16 +-
 .../apache/lucene/monitor/TestCachePurging.java    |    76 +-
 .../lucene/monitor/TestConcurrentQueryLoader.java  |     1 -
 .../apache/lucene/monitor/TestDocumentBatch.java   |    17 +-
 .../lucene/monitor/TestExplainingMatcher.java      |     4 +-
 .../org/apache/lucene/monitor/TestExtractors.java  |    26 +-
 .../TestFieldFilteredMultipassPresearcher.java     |     4 +-
 .../monitor/TestFieldTermFilteredPresearcher.java  |     3 +-
 .../monitor/TestForceNoBulkScoringQuery.java       |    11 +-
 .../lucene/monitor/TestHighlightingMatcher.java    |   319 +-
 .../lucene/monitor/TestMatchAllPresearcher.java    |     1 -
 .../org/apache/lucene/monitor/TestMonitor.java     |   105 +-
 .../lucene/monitor/TestMonitorErrorHandling.java   |    15 +-
 .../lucene/monitor/TestMonitorPersistence.java     |    29 +-
 .../lucene/monitor/TestMultipassPresearcher.java   |    67 +-
 .../apache/lucene/monitor/TestParallelMatcher.java |     3 +-
 .../lucene/monitor/TestPartitionMatcher.java       |     4 +-
 .../monitor/TestPresearcherMatchCollector.java     |     6 +-
 .../apache/lucene/monitor/TestQueryAnalyzer.java   |    74 +-
 .../apache/lucene/monitor/TestQueryDecomposer.java |    44 +-
 .../lucene/monitor/TestQueryTermComparators.java   |    17 +-
 .../apache/lucene/monitor/TestQueryTermFilter.java |    12 +-
 .../lucene/monitor/TestRegexpQueryHandler.java     |    68 +-
 .../apache/lucene/monitor/TestSimilarities.java    |    19 +-
 .../apache/lucene/monitor/TestSimpleMatcher.java   |     4 +-
 .../apache/lucene/monitor/TestSpanExtractors.java  |    66 +-
 .../monitor/TestSuffixingNGramTokenizer.java       |    61 +-
 .../apache/lucene/monitor/TestTermPresearcher.java |    62 +-
 .../lucene/monitor/TestTermsEnumTokenFilter.java   |    23 +-
 .../monitor/TestWildcardTermPresearcher.java       |    36 +-
 lucene/packaging/build.gradle                      |   170 +
 .../apache/lucene/queries/CommonTermsQuery.java    |   249 +-
 .../queries/function/FunctionMatchQuery.java       |    51 +-
 .../lucene/queries/function/FunctionQuery.java     |    42 +-
 .../queries/function/FunctionRangeQuery.java       |    79 +-
 .../queries/function/FunctionScoreQuery.java       |   140 +-
 .../lucene/queries/function/FunctionValues.java    |   154 +-
 .../queries/function/IndexReaderFunctions.java     |    27 +-
 .../lucene/queries/function/ValueSource.java       |    88 +-
 .../lucene/queries/function/ValueSourceScorer.java |    55 +-
 .../queries/function/docvalues/BoolDocValues.java  |    11 +-
 .../function/docvalues/DocTermsIndexDocValues.java |    37 +-
 .../function/docvalues/DoubleDocValues.java        |    40 +-
 .../queries/function/docvalues/FloatDocValues.java |    11 +-
 .../queries/function/docvalues/IntDocValues.java   |    27 +-
 .../queries/function/docvalues/LongDocValues.java  |    29 +-
 .../queries/function/docvalues/StrDocValues.java   |     1 -
 .../queries/function/docvalues/package-info.java   |     4 +-
 .../lucene/queries/function/package-info.java      |     4 +-
 .../queries/function/valuesource/BoolFunction.java |     4 +-
 .../function/valuesource/BytesRefFieldSource.java  |    16 +-
 .../valuesource/ComparisonBoolFunction.java        |    22 +-
 .../function/valuesource/ConstNumberSource.java    |    13 +-
 .../function/valuesource/ConstValueSource.java     |    30 +-
 .../queries/function/valuesource/DefFunction.java  |    23 +-
 .../function/valuesource/DivFloatFunction.java     |    12 +-
 .../function/valuesource/DocFreqValueSource.java   |    38 +-
 .../valuesource/DoubleConstValueSource.java        |    20 +-
 .../function/valuesource/DoubleFieldSource.java    |    20 +-
 .../function/valuesource/DualFloatFunction.java    |    44 +-
 .../function/valuesource/EnumFieldSource.java      |    54 +-
 .../function/valuesource/FieldCacheSource.java     |    11 +-
 .../function/valuesource/FloatFieldSource.java     |    29 +-
 .../function/valuesource/IDFValueSource.java       |    35 +-
 .../queries/function/valuesource/IfFunction.java   |    37 +-
 .../function/valuesource/IntFieldSource.java       |    24 +-
 .../valuesource/JoinDocFreqValueSource.java        |    24 +-
 .../function/valuesource/LinearFloatFunction.java  |    27 +-
 .../function/valuesource/LiteralValueSource.java   |    18 +-
 .../function/valuesource/LongFieldSource.java      |    25 +-
 .../function/valuesource/MaxDocValueSource.java    |    17 +-
 .../function/valuesource/MaxFloatFunction.java     |    15 +-
 .../function/valuesource/MinFloatFunction.java     |    18 +-
 .../function/valuesource/MultiBoolFunction.java    |    16 +-
 .../function/valuesource/MultiFloatFunction.java   |    45 +-
 .../function/valuesource/MultiFunction.java        |    76 +-
 .../function/valuesource/MultiValueSource.java     |     8 +-
 .../valuesource/MultiValuedDoubleFieldSource.java  |    24 +-
 .../valuesource/MultiValuedFloatFieldSource.java   |    24 +-
 .../valuesource/MultiValuedIntFieldSource.java     |    24 +-
 .../valuesource/MultiValuedLongFieldSource.java    |    24 +-
 .../function/valuesource/NormValueSource.java      |    47 +-
 .../function/valuesource/NumDocsValueSource.java   |    18 +-
 .../function/valuesource/PowFloatFunction.java     |    16 +-
 .../function/valuesource/ProductFloatFunction.java |     5 +-
 .../function/valuesource/QueryValueSource.java     |    56 +-
 .../valuesource/RangeMapFloatFunction.java         |    75 +-
 .../valuesource/ReciprocalFloatFunction.java       |    61 +-
 .../function/valuesource/ScaleFloatFunction.java   |    75 +-
 .../function/valuesource/SimpleBoolFunction.java   |    21 +-
 .../function/valuesource/SimpleFloatFunction.java  |    16 +-
 .../function/valuesource/SingleFunction.java       |    17 +-
 .../function/valuesource/SortedSetFieldSource.java |    22 +-
 .../function/valuesource/SumFloatFunction.java     |     7 +-
 .../valuesource/SumTotalTermFreqValueSource.java   |    31 +-
 .../function/valuesource/TFValueSource.java        |   131 +-
 .../function/valuesource/TermFreqValueSource.java  |   119 +-
 .../valuesource/TotalTermFreqValueSource.java      |    39 +-
 .../function/valuesource/VectorValueSource.java    |    35 +-
 .../queries/function/valuesource/package-info.java |     4 +-
 .../queries/intervals/BlockIntervalsSource.java    |    14 +-
 .../queries/intervals/CachingMatchesIterator.java  |    17 +-
 .../lucene/queries/intervals/ConjunctionDISI.java  |    16 +-
 .../intervals/ConjunctionIntervalIterator.java     |    10 +-
 .../intervals/ConjunctionIntervalsSource.java      |    21 +-
 .../intervals/ContainedByIntervalsSource.java      |     6 +-
 .../intervals/ContainingIntervalsSource.java       |     6 +-
 .../intervals/DifferenceIntervalsSource.java       |    16 +-
 .../queries/intervals/DisiPriorityQueue.java       |    15 +-
 .../lucene/queries/intervals/DisiWrapper.java      |     1 -
 .../intervals/DisjunctionDISIApproximation.java    |     8 +-
 .../intervals/DisjunctionIntervalsSource.java      |   195 +-
 .../lucene/queries/intervals/Disjunctions.java     |    15 +-
 .../intervals/ExtendedIntervalIterator.java        |    15 +-
 .../queries/intervals/ExtendedIntervalsSource.java |    15 +-
 .../queries/intervals/FilteredIntervalsSource.java |    38 +-
 .../intervals/FixedFieldIntervalsSource.java       |    11 +-
 .../lucene/queries/intervals/IntervalFilter.java   |    15 +-
 .../lucene/queries/intervals/IntervalIterator.java |    50 +-
 .../lucene/queries/intervals/IntervalMatches.java  |    11 +-
 .../queries/intervals/IntervalMatchesIterator.java |    10 +-
 .../lucene/queries/intervals/IntervalQuery.java    |   104 +-
 .../queries/intervals/IntervalScoreFunction.java   |    27 +-
 .../lucene/queries/intervals/IntervalScorer.java   |    12 +-
 .../apache/lucene/queries/intervals/Intervals.java |   222 +-
 .../lucene/queries/intervals/IntervalsSource.java  |    43 +-
 .../MinimizingConjunctionMatchesIterator.java      |     6 +-
 .../MinimumShouldMatchIntervalsSource.java         |    54 +-
 .../intervals/MultiTermIntervalsSource.java        |    28 +-
 .../intervals/NonOverlappingIntervalsSource.java   |     6 +-
 .../intervals/NotContainedByIntervalsSource.java   |    12 +-
 .../intervals/NotContainingIntervalsSource.java    |    10 +-
 .../queries/intervals/OffsetIntervalsSource.java   |    19 +-
 .../queries/intervals/OrderedIntervalsSource.java  |    32 +-
 .../intervals/OverlappingIntervalsSource.java      |    10 +-
 .../PayloadFilteredTermIntervalsSource.java        |    43 +-
 .../lucene/queries/intervals/RelativeIterator.java |     3 +-
 .../intervals/RepeatingIntervalsSource.java        |    24 +-
 .../queries/intervals/TermIntervalsSource.java     |    64 +-
 .../intervals/UnorderedIntervalsSource.java        |    30 +-
 .../lucene/queries/intervals/package-info.java     |    65 +-
 .../apache/lucene/queries/mlt/MoreLikeThis.java    |   366 +-
 .../lucene/queries/mlt/MoreLikeThisQuery.java      |    42 +-
 .../apache/lucene/queries/mlt/package-info.java    |     4 +-
 .../org/apache/lucene/queries/package-info.java    |     4 +-
 .../queries/payloads/AveragePayloadFunction.java   |    25 +-
 .../queries/payloads/MaxPayloadFunction.java       |    25 +-
 .../queries/payloads/MinPayloadFunction.java       |    26 +-
 .../lucene/queries/payloads/PayloadDecoder.java    |    13 +-
 .../lucene/queries/payloads/PayloadFunction.java   |    37 +-
 .../lucene/queries/payloads/PayloadScoreQuery.java |    86 +-
 .../queries/payloads/SpanPayloadCheckQuery.java    |    67 +-
 .../queries/payloads/SumPayloadFunction.java       |    23 +-
 .../lucene/queries/payloads/package-info.java      |    16 +-
 .../lucene/queries/CommonTermsQueryTest.java       |   552 -
 .../lucene/queries/TestCommonTermsQuery.java       |   562 +
 .../lucene/queries/function/FunctionTestSetup.java |   101 +-
 .../function/TestDocValuesFieldSources.java        |    18 +-
 .../queries/function/TestFieldScoreQuery.java      |    72 +-
 .../queries/function/TestFunctionMatchQuery.java   |    12 +-
 .../function/TestFunctionQueryExplanations.java    |    16 +-
 .../queries/function/TestFunctionQuerySort.java    |    18 +-
 .../queries/function/TestFunctionRangeQuery.java   |    44 +-
 .../function/TestFunctionScoreExplanations.java    |    11 +-
 .../queries/function/TestFunctionScoreQuery.java   |   170 +-
 .../queries/function/TestIndexReaderFunctions.java |    80 +-
 .../queries/function/TestLongNormValueSource.java  |     6 +-
 .../queries/function/TestSortedSetFieldSource.java |    14 +-
 .../lucene/queries/function/TestValueSources.java  |   562 +-
 .../docvalues/TestBoolValOfNumericDVs.java         |    72 +-
 .../queries/intervals/OneTimeIntervalSource.java   |   187 +
 .../queries/intervals/TestDisjunctionRewrites.java |   213 +-
 .../queries/intervals/TestIntervalQuery.java       |   359 +-
 .../lucene/queries/intervals/TestIntervals.java    |   869 +-
 .../intervals/TestPayloadFilteredInterval.java     |    33 +-
 .../queries/intervals/TestSimplifications.java     |    44 +-
 .../lucene/queries/mlt/TestMoreLikeThis.java       |   280 +-
 .../lucene/queries/payloads/PayloadHelper.java     |    54 +-
 .../queries/payloads/TestPayloadCheckQuery.java    |   104 +-
 .../queries/payloads/TestPayloadExplanations.java  |    69 +-
 .../queries/payloads/TestPayloadScoreQuery.java    |   217 +-
 .../lucene/queries/payloads/TestPayloadSpans.java  |   226 +-
 .../queries/payloads/TestPayloadTermQuery.java     |   152 +-
 lucene/queryparser/build.gradle                    |     2 -
 .../lucene/queryparser/charstream/CharStream.java  |    96 +
 .../queryparser/charstream/FastCharStream.java     |   130 +
 .../queryparser/charstream/package-info.java       |    24 +
 .../lucene/queryparser/classic/CharStream.java     |   115 -
 .../lucene/queryparser/classic/FastCharStream.java |   141 -
 .../queryparser/classic/MultiFieldQueryParser.java |   193 +-
 .../lucene/queryparser/classic/ParseException.java |    38 +-
 .../lucene/queryparser/classic/QueryParser.java    |   737 +-
 .../lucene/queryparser/classic/QueryParser.jj      |     2 +
 .../queryparser/classic/QueryParserBase.java       |   544 +-
 .../classic/QueryParserTokenManager.java           |   458 +-
 .../apache/lucene/queryparser/classic/Token.java   |     7 +-
 .../lucene/queryparser/classic/TokenMgrError.java  |    24 +-
 .../lucene/queryparser/classic/package-info.java   |   481 +-
 .../complexPhrase/ComplexPhraseQueryParser.java    |   170 +-
 .../queryparser/complexPhrase/package-info.java    |     7 +-
 .../queryparser/ext/ExtendableQueryParser.java     |   102 +-
 .../lucene/queryparser/ext/ExtensionQuery.java     |    23 +-
 .../apache/lucene/queryparser/ext/Extensions.java  |   184 +-
 .../lucene/queryparser/ext/ParserExtension.java    |    35 +-
 .../lucene/queryparser/ext/package-info.java       |     8 +-
 .../queryparser/flexible/core/QueryNodeError.java  |    23 +-
 .../flexible/core/QueryNodeException.java          |    20 +-
 .../flexible/core/QueryNodeParseException.java     |    46 +-
 .../flexible/core/QueryParserHelper.java           |   163 +-
 .../flexible/core/builders/QueryBuilder.java       |    12 +-
 .../flexible/core/builders/QueryTreeBuilder.java   |    99 +-
 .../flexible/core/builders/package-info.java       |    16 +-
 .../flexible/core/config/AbstractQueryConfig.java  |    58 +-
 .../flexible/core/config/ConfigurationKey.java     |    17 +-
 .../flexible/core/config/FieldConfig.java          |    19 +-
 .../flexible/core/config/FieldConfigListener.java  |    14 +-
 .../flexible/core/config/QueryConfigHandler.java   |    54 +-
 .../flexible/core/config/package-info.java         |    28 +-
 .../core/messages/QueryParserMessages.java         |     5 +-
 .../flexible/core/messages/package-info.java       |     9 +-
 .../flexible/core/nodes/AndQueryNode.java          |    31 +-
 .../flexible/core/nodes/AnyQueryNode.java          |    49 +-
 .../flexible/core/nodes/BooleanQueryNode.java      |    28 +-
 .../flexible/core/nodes/BoostQueryNode.java        |    48 +-
 .../flexible/core/nodes/DeletedQueryNode.java      |     8 +-
 .../flexible/core/nodes/FieldQueryNode.java        |    89 +-
 .../core/nodes/FieldValuePairQueryNode.java        |    12 +-
 .../flexible/core/nodes/FieldableNode.java         |    19 +-
 .../flexible/core/nodes/FuzzyQueryNode.java        |    43 +-
 .../flexible/core/nodes/GroupQueryNode.java        |    24 +-
 .../flexible/core/nodes/MatchAllDocsQueryNode.java |     4 +-
 .../flexible/core/nodes/MatchNoDocsQueryNode.java  |     6 +-
 .../flexible/core/nodes/ModifierQueryNode.java     |    92 +-
 .../flexible/core/nodes/NoTokenFoundQueryNode.java |     4 +-
 .../flexible/core/nodes/OpaqueQueryNode.java       |    22 +-
 .../flexible/core/nodes/OrQueryNode.java           |    30 +-
 .../flexible/core/nodes/PathQueryNode.java         |    87 +-
 .../flexible/core/nodes/PhraseSlopQueryNode.java   |    40 +-
 .../flexible/core/nodes/ProximityQueryNode.java    |   140 +-
 .../queryparser/flexible/core/nodes/QueryNode.java |    47 +-
 .../flexible/core/nodes/QueryNodeImpl.java         |    68 +-
 .../flexible/core/nodes/QuotedFieldQueryNode.java  |    32 +-
 .../flexible/core/nodes/RangeQueryNode.java        |    15 +-
 .../flexible/core/nodes/SlopQueryNode.java         |    46 +-
 .../flexible/core/nodes/TextableQueryNode.java     |     5 +-
 .../core/nodes/TokenizedPhraseQueryNode.java       |    18 +-
 .../flexible/core/nodes/ValueQueryNode.java        |    10 +-
 .../flexible/core/nodes/package-info.java          |   108 +-
 .../queryparser/flexible/core/package-info.java    |    54 +-
 .../flexible/core/parser/EscapeQuerySyntax.java    |    20 +-
 .../flexible/core/parser/SyntaxParser.java         |    13 +-
 .../flexible/core/parser/package-info.java         |    29 +-
 .../NoChildOptimizationQueryNodeProcessor.java     |    31 +-
 .../core/processors/QueryNodeProcessor.java        |    52 +-
 .../core/processors/QueryNodeProcessorImpl.java    |   119 +-
 .../processors/QueryNodeProcessorPipeline.java     |   160 +-
 .../RemoveDeletedQueryNodesProcessor.java          |    27 +-
 .../flexible/core/processors/package-info.java     |    48 +-
 .../flexible/core/util/QueryNodeOperation.java     |    86 +-
 .../flexible/core/util/StringUtils.java            |    12 +-
 .../flexible/core/util/UnescapedCharSequence.java  |    45 +-
 .../flexible/core/util/package-info.java           |    10 +-
 .../queryparser/flexible/messages/Message.java     |     5 +-
 .../queryparser/flexible/messages/MessageImpl.java |     6 +-
 .../lucene/queryparser/flexible/messages/NLS.java  |    69 +-
 .../flexible/messages/NLSException.java            |    14 +-
 .../flexible/messages/package-info.java            |    73 +-
 .../flexible/precedence/PrecedenceQueryParser.java |    36 +-
 .../flexible/precedence/package-info.java          |    22 +-
 .../BooleanModifiersQueryNodeProcessor.java        |    45 +-
 .../PrecedenceQueryNodeProcessorPipeline.java      |    32 +-
 .../precedence/processors/package-info.java        |    38 +-
 .../standard/CommonQueryParserConfiguration.java   |   133 +-
 .../flexible/standard/QueryParserUtil.java         |   119 +-
 .../flexible/standard/StandardQueryParser.java     |   347 +-
 .../standard/builders/AnyQueryNodeBuilder.java     |    22 +-
 .../standard/builders/BooleanQueryNodeBuilder.java |    48 +-
 .../standard/builders/BoostQueryNodeBuilder.java   |    12 +-
 .../standard/builders/DummyQueryNodeBuilder.java   |    15 +-
 .../standard/builders/FieldQueryNodeBuilder.java   |     9 +-
 .../standard/builders/FuzzyQueryNodeBuilder.java   |    19 +-
 .../standard/builders/GroupQueryNodeBuilder.java   |    10 +-
 .../builders/MatchAllDocsQueryNodeBuilder.java     |    18 +-
 .../builders/MatchNoDocsQueryNodeBuilder.java      |    16 +-
 .../builders/ModifierQueryNodeBuilder.java         |    10 +-
 .../builders/MultiPhraseQueryNodeBuilder.java      |    18 +-
 .../standard/builders/PhraseQueryNodeBuilder.java  |    12 +-
 .../builders/PointRangeQueryNodeBuilder.java       |    29 +-
 .../builders/PrefixWildcardQueryNodeBuilder.java   |    18 +-
 .../standard/builders/RegexpQueryNodeBuilder.java  |    13 +-
 .../standard/builders/SlopQueryNodeBuilder.java    |    19 +-
 .../standard/builders/StandardQueryBuilder.java    |     7 +-
 .../builders/StandardQueryTreeBuilder.java         |    24 +-
 .../builders/TermRangeQueryNodeBuilder.java        |    38 +-
 .../builders/WildcardQueryNodeBuilder.java         |    18 +-
 .../flexible/standard/builders/package-info.java   |    23 +-
 .../standard/config/FieldBoostMapFCListener.java   |    18 +-
 .../config/FieldDateResolutionFCListener.java      |    20 +-
 .../flexible/standard/config/FuzzyConfig.java      |     9 +-
 .../flexible/standard/config/NumberDateFormat.java |    34 +-
 .../flexible/standard/config/PointsConfig.java     |    67 +-
 .../standard/config/PointsConfigListener.java      |    28 +-
 .../config/StandardQueryConfigHandler.java         |   149 +-
 .../flexible/standard/config/package-info.java     |    20 +-
 .../standard/nodes/AbstractRangeQueryNode.java     |   115 +-
 .../standard/nodes/BooleanModifierNode.java        |     9 +-
 .../standard/nodes/MultiPhraseQueryNode.java       |    20 +-
 .../flexible/standard/nodes/PointQueryNode.java    |    78 +-
 .../standard/nodes/PointRangeQueryNode.java        |    98 +-
 .../standard/nodes/PrefixWildcardQueryNode.java    |    25 +-
 .../flexible/standard/nodes/RegexpQueryNode.java   |    36 +-
 .../flexible/standard/nodes/SynonymQueryNode.java  |     1 -
 .../standard/nodes/TermRangeQueryNode.java         |    25 +-
 .../flexible/standard/nodes/WildcardQueryNode.java |    20 +-
 .../flexible/standard/nodes/package-info.java      |    13 +-
 .../flexible/standard/package-info.java            |    31 +-
 .../flexible/standard/parser/CharStream.java       |   115 -
 .../standard/parser/EscapeQuerySyntaxImpl.java     |   131 +-
 .../flexible/standard/parser/FastCharStream.java   |   141 -
 .../flexible/standard/parser/ParseException.java   |    84 +-
 .../standard/parser/StandardSyntaxParser.java      |  1402 +-
 .../standard/parser/StandardSyntaxParser.jj        |   760 +-
 .../parser/StandardSyntaxParserConstants.java      |    24 +-
 .../parser/StandardSyntaxParserTokenManager.java   |   646 +-
 .../flexible/standard/parser/Token.java            |     7 +-
 .../flexible/standard/parser/TokenMgrError.java    |    24 +-
 .../flexible/standard/parser/package-info.java     |    17 +-
 .../processors/AllowLeadingWildcardProcessor.java  |    42 +-
 .../processors/AnalyzerQueryNodeProcessor.java     |   153 +-
 .../BooleanQuery2ModifierNodeProcessor.java        |   112 +-
 ...nSingleChildOptimizationQueryNodeProcessor.java |    25 +-
 .../processors/BoostQueryNodeProcessor.java        |    25 +-
 .../DefaultPhraseSlopQueryNodeProcessor.java       |    34 +-
 .../processors/FuzzyQueryNodeProcessor.java        |    28 +-
 .../processors/MatchAllDocsQueryNodeProcessor.java |    19 +-
 .../processors/MultiFieldQueryNodeProcessor.java   |    26 +-
 .../MultiTermRewriteMethodProcessor.java           |    17 +-
 .../processors/OpenRangeQueryNodeProcessor.java    |    42 +-
 .../processors/PhraseSlopQueryNodeProcessor.java   |    17 +-
 .../processors/PointQueryNodeProcessor.java        |    92 +-
 .../processors/PointRangeQueryNodeProcessor.java   |    56 +-
 .../processors/RegexpQueryNodeProcessor.java       |     5 +-
 .../RemoveEmptyNonLeafQueryNodeProcessor.java      |    28 +-
 .../StandardQueryNodeProcessorPipeline.java        |    25 +-
 .../processors/TermRangeQueryNodeProcessor.java    |    85 +-
 .../processors/WildcardQueryNodeProcessor.java     |    85 +-
 .../flexible/standard/processors/package-info.java |    18 +-
 .../queryparser/simple/SimpleQueryParser.java      |   200 +-
 .../lucene/queryparser/simple/package-info.java    |     6 +-
 .../queryparser/surround/parser/CharStream.java    |   115 -
 .../surround/parser/FastCharStream.java            |   140 -
 .../surround/parser/ParseException.java            |    38 +-
 .../queryparser/surround/parser/QueryParser.java   |   582 +-
 .../queryparser/surround/parser/QueryParser.jj     |     2 +
 .../surround/parser/QueryParserTokenManager.java   |   325 +-
 .../lucene/queryparser/surround/parser/Token.java  |     7 +-
 .../queryparser/surround/parser/TokenMgrError.java |    24 +-
 .../queryparser/surround/parser/package-info.java  |     9 +-
 .../queryparser/surround/query/AndQuery.java       |    18 +-
 .../surround/query/BasicQueryFactory.java          |    46 +-
 .../queryparser/surround/query/ComposedQuery.java  |    68 +-
 .../queryparser/surround/query/DistanceQuery.java  |    59 +-
 .../surround/query/DistanceRewriteQuery.java       |     7 +-
 .../surround/query/DistanceSubQuery.java           |    18 +-
 .../queryparser/surround/query/FieldsQuery.java    |    51 +-
 .../queryparser/surround/query/NotQuery.java       |    30 +-
 .../lucene/queryparser/surround/query/OrQuery.java |    27 +-
 .../queryparser/surround/query/RewriteQuery.java   |    37 +-
 .../queryparser/surround/query/SimpleTerm.java     |    87 +-
 .../surround/query/SimpleTermRewriteQuery.java     |    35 +-
 .../surround/query/SpanNearClauseFactory.java      |    97 +-
 .../surround/query/SrndBooleanQuery.java           |    18 +-
 .../surround/query/SrndPrefixQuery.java            |    51 +-
 .../queryparser/surround/query/SrndQuery.java      |    75 +-
 .../queryparser/surround/query/SrndTermQuery.java  |    34 +-
 .../queryparser/surround/query/SrndTruncQuery.java |    59 +-
 .../surround/query/TooManyBasicQueries.java        |    12 +-
 .../queryparser/surround/query/package-info.java   |    21 +-
 .../apache/lucene/queryparser/xml/CoreParser.java  |    58 +-
 .../queryparser/xml/CorePlusExtensionsParser.java  |    10 +-
 .../queryparser/xml/CorePlusQueriesParser.java     |     9 +-
 .../apache/lucene/queryparser/xml/DOMUtils.java    |    74 +-
 .../lucene/queryparser/xml/ParserException.java    |     5 +-
 .../lucene/queryparser/xml/QueryBuilder.java       |     4 +-
 .../queryparser/xml/QueryBuilderFactory.java       |     8 +-
 .../xml/builders/BooleanQueryBuilder.java          |    15 +-
 .../xml/builders/BoostingTermBuilder.java          |    14 +-
 .../xml/builders/ConstantScoreQueryBuilder.java    |     6 +-
 .../xml/builders/DisjunctionMaxQueryBuilder.java   |    12 +-
 .../xml/builders/FuzzyLikeThisQueryBuilder.java    |     8 +-
 .../xml/builders/LikeThisQueryBuilder.java         |    41 +-
 .../xml/builders/MatchAllDocsQueryBuilder.java     |    11 +-
 .../xml/builders/PointRangeQueryBuilder.java       |    22 +-
 .../xml/builders/RangeQueryBuilder.java            |     8 +-
 .../queryparser/xml/builders/SpanBuilderBase.java  |    10 +-
 .../queryparser/xml/builders/SpanFirstBuilder.java |    10 +-
 .../queryparser/xml/builders/SpanNearBuilder.java  |    13 +-
 .../queryparser/xml/builders/SpanNotBuilder.java   |    10 +-
 .../queryparser/xml/builders/SpanOrBuilder.java    |    13 +-
 .../xml/builders/SpanOrTermsBuilder.java           |    22 +-
 .../xml/builders/SpanPositionRangeBuilder.java     |     5 +-
 .../queryparser/xml/builders/SpanQueryBuilder.java |     7 +-
 .../xml/builders/SpanQueryBuilderFactory.java      |    11 +-
 .../queryparser/xml/builders/SpanTermBuilder.java  |    10 +-
 .../queryparser/xml/builders/TermQueryBuilder.java |    12 +-
 .../xml/builders/TermsQueryBuilder.java            |    13 +-
 .../xml/builders/UserInputQueryBuilder.java        |    20 +-
 .../queryparser/xml/builders/package-info.java     |     7 +-
 .../lucene/queryparser/xml/package-info.java       |     7 +-
 .../queryparser/classic/TestMultiAnalyzer.java     |   138 +-
 .../classic/TestMultiFieldQueryParser.java         |   188 +-
 .../classic/TestMultiPhraseQueryParsing.java       |    41 +-
 .../queryparser/classic/TestQueryParser.java       |   536 +-
 .../complexPhrase/TestComplexPhraseQuery.java      |    90 +-
 .../lucene/queryparser/ext/ExtensionStub.java      |     4 +-
 .../queryparser/ext/TestExtendableQueryParser.java |    64 +-
 .../lucene/queryparser/ext/TestExtensions.java     |    21 +-
 .../core/builders/TestQueryTreeBuilder.java        |    24 +-
 .../flexible/core/nodes/TestQueryNode.java         |    17 +-
 .../queryparser/flexible/messages/TestNLS.java     |    68 +-
 .../precedence/TestPrecedenceQueryParser.java      |   181 +-
 .../flexible/spans/SpanOrQueryNodeBuilder.java     |     7 +-
 .../flexible/spans/SpanTermQueryNodeBuilder.java   |    11 +-
 .../flexible/spans/SpansQueryConfigHandler.java    |     9 +-
 .../flexible/spans/SpansQueryTreeBuilder.java      |    10 +-
 .../spans/SpansValidatorQueryNodeProcessor.java    |    29 +-
 .../flexible/spans/TestSpanQueryParser.java        |   152 +-
 .../spans/TestSpanQueryParserSimpleSample.java     |    67 +-
 .../flexible/spans/UniqueFieldAttribute.java       |     7 +-
 .../flexible/spans/UniqueFieldAttributeImpl.java   |    17 +-
 .../spans/UniqueFieldQueryNodeProcessor.java       |    20 +-
 .../standard/TestMultiAnalyzerQPHelper.java        |    96 +-
 .../flexible/standard/TestMultiFieldQPHelper.java  |   168 +-
 .../flexible/standard/TestPointQueryParser.java    |    71 +-
 .../flexible/standard/TestQPHelper.java            |   477 +-
 .../flexible/standard/TestStandardQP.java          |   109 +-
 .../queryparser/simple/TestSimpleQueryParser.java  |    70 +-
 .../surround/query/BooleanQueryTst.java            |    27 +-
 .../surround/query/ExceptionQueryTst.java          |    17 +-
 .../surround/query/SingleFieldTestDb.java          |    27 +-
 .../queryparser/surround/query/SrndQueryTest.java  |    11 +-
 .../surround/query/Test01Exceptions.java           |     4 -
 .../queryparser/surround/query/Test02Boolean.java  |   101 +-
 .../queryparser/surround/query/Test03Distance.java |   203 +-
 .../queryparser/util/QueryParserTestBase.java      |   760 +-
 .../queryparser/xml/CoreParserTestIndexData.java   |    20 +-
 .../lucene/queryparser/xml/TestCoreParser.java     |    75 +-
 .../xml/TestCorePlusExtensionsParser.java          |     3 +-
 .../queryparser/xml/TestCorePlusQueriesParser.java |     1 -
 .../IndexAndTaxonomyReplicationHandler.java        |   104 +-
 .../replicator/IndexAndTaxonomyRevision.java       |   120 +-
 .../lucene/replicator/IndexInputInputStream.java   |    26 +-
 .../lucene/replicator/IndexReplicationHandler.java |   166 +-
 .../apache/lucene/replicator/IndexRevision.java    |    69 +-
 .../apache/lucene/replicator/LocalReplicator.java  |   117 +-
 .../replicator/PerSessionDirectoryFactory.java     |    17 +-
 .../lucene/replicator/ReplicationClient.java       |   213 +-
 .../org/apache/lucene/replicator/Replicator.java   |    75 +-
 .../org/apache/lucene/replicator/Revision.java     |    55 +-
 .../org/apache/lucene/replicator/RevisionFile.java |    20 +-
 .../lucene/replicator/SessionExpiredException.java |    25 +-
 .../org/apache/lucene/replicator/SessionToken.java |    40 +-
 .../lucene/replicator/http/HttpClientBase.java     |   140 +-
 .../lucene/replicator/http/HttpReplicator.java     |    97 +-
 .../lucene/replicator/http/ReplicationService.java |    96 +-
 .../lucene/replicator/http/package-info.java       |     8 +-
 .../org/apache/lucene/replicator/nrt/CopyJob.java  |    99 +-
 .../apache/lucene/replicator/nrt/CopyOneFile.java  |    53 +-
 .../apache/lucene/replicator/nrt/CopyState.java    |    21 +-
 .../apache/lucene/replicator/nrt/FileMetaData.java |    12 +-
 .../org/apache/lucene/replicator/nrt/Node.java     |   130 +-
 .../replicator/nrt/NodeCommunicationException.java |     4 +-
 .../replicator/nrt/PreCopyMergedSegmentWarmer.java |    25 +-
 .../apache/lucene/replicator/nrt/PrimaryNode.java  |   133 +-
 .../lucene/replicator/nrt/ReplicaFileDeleter.java  |    39 +-
 .../apache/lucene/replicator/nrt/ReplicaNode.java  |   477 +-
 .../nrt/SegmentInfosSearcherManager.java           |    45 +-
 .../apache/lucene/replicator/nrt/package-info.java |     6 +-
 .../org/apache/lucene/replicator/package-info.java |    61 +-
 .../IndexAndTaxonomyReplicationClientTest.java     |   460 -
 .../replicator/IndexAndTaxonomyRevisionTest.java   |   171 -
 .../replicator/IndexReplicationClientTest.java     |   336 -
 .../lucene/replicator/IndexRevisionTest.java       |   154 -
 .../lucene/replicator/LocalReplicatorTest.java     |   182 -
 .../lucene/replicator/ReplicatorTestCase.java      |    73 +-
 .../apache/lucene/replicator/SessionTokenTest.java |    64 -
 .../TestIndexAndTaxonomyReplicationClient.java     |   480 +
 .../replicator/TestIndexAndTaxonomyRevision.java   |   173 +
 .../replicator/TestIndexReplicationClient.java     |   354 +
 .../lucene/replicator/TestIndexRevision.java       |   156 +
 .../lucene/replicator/TestLocalReplicator.java     |   200 +
 .../apache/lucene/replicator/TestSessionToken.java |    62 +
 .../lucene/replicator/http/HttpReplicatorTest.java |   153 -
 .../lucene/replicator/http/ReplicationServlet.java |    11 +-
 .../lucene/replicator/http/TestHttpReplicator.java |   165 +
 .../org/apache/lucene/replicator/nrt/Jobs.java     |    18 +-
 .../apache/lucene/replicator/nrt/NodeProcess.java  |    31 +-
 .../lucene/replicator/nrt/SimpleCopyJob.java       |   108 +-
 .../lucene/replicator/nrt/SimplePrimaryNode.java   |   437 +-
 .../lucene/replicator/nrt/SimpleReplicaNode.java   |   357 +-
 .../apache/lucene/replicator/nrt/SimpleServer.java |   159 +-
 .../lucene/replicator/nrt/SimpleTransLog.java      |    93 +-
 .../lucene/replicator/nrt/TestNRTReplication.java  |   189 +-
 .../replicator/nrt/TestStressNRTReplication.java   |   512 +-
 .../apache/lucene/replicator/nrt/ThreadPumper.java |    62 +-
 .../codecs/idversion/IDVersionPostingsFormat.java  |   142 -
 .../codecs/idversion/IDVersionPostingsReader.java  |   109 -
 .../codecs/idversion/IDVersionPostingsWriter.java  |   169 -
 .../idversion/IDVersionSegmentTermsEnum.java       |  1061 -
 .../idversion/IDVersionSegmentTermsEnumFrame.java  |   724 -
 .../codecs/idversion/IDVersionTermState.java       |    40 -
 .../lucene/codecs/idversion/SingleDocsEnum.java    |    90 -
 .../codecs/idversion/SinglePostingsEnum.java       |   101 -
 .../idversion/VersionBlockTreeTermsReader.java     |   253 -
 .../idversion/VersionBlockTreeTermsWriter.java     |   861 -
 .../codecs/idversion/VersionFieldReader.java       |   176 -
 .../lucene/codecs/idversion/package-info.java      |    22 -
 .../apache/lucene/document/BigIntegerPoint.java    |   250 -
 .../document/DoublePointMultiRangeBuilder.java     |    54 -
 .../document/FloatPointMultiRangeBuilder.java      |    55 -
 .../lucene/document/FloatPointNearestNeighbor.java |   311 -
 .../org/apache/lucene/document/HalfFloatPoint.java |   425 -
 .../lucene/document/IntPointMultiRangeBuilder.java |    53 -
 .../apache/lucene/document/LatLonBoundingBox.java  |   232 -
 .../document/LongPointMultiRangeBuilder.java       |    53 -
 .../java/org/apache/lucene/document/package.html   |    32 -
 .../lucene/payloads/PayloadSpanCollector.java      |    18 +-
 .../apache/lucene/payloads/PayloadSpanUtil.java    |    39 +-
 .../org/apache/lucene/payloads/package-info.java   |     4 +-
 .../codecs/idversion/IDVersionPostingsFormat.java  |   142 +
 .../codecs/idversion/IDVersionPostingsReader.java  |   113 +
 .../codecs/idversion/IDVersionPostingsWriter.java  |   190 +
 .../idversion/IDVersionSegmentTermsEnum.java       |  1222 +
 .../idversion/IDVersionSegmentTermsEnumFrame.java  |   747 +
 .../codecs/idversion/IDVersionTermState.java       |    40 +
 .../sandbox/codecs/idversion/SingleDocsEnum.java   |    89 +
 .../codecs/idversion/SinglePostingsEnum.java       |   101 +
 .../idversion/VersionBlockTreeTermsReader.java     |   295 +
 .../idversion/VersionBlockTreeTermsWriter.java     |   951 +
 .../codecs/idversion/VersionFieldReader.java       |   202 +
 .../sandbox/codecs/idversion/package-info.java     |    22 +
 .../lucene/sandbox/document/BigIntegerPoint.java   |   273 +
 .../document/DoublePointMultiRangeBuilder.java     |    55 +
 .../document/FloatPointMultiRangeBuilder.java      |    55 +
 .../document/FloatPointNearestNeighbor.java        |   366 +
 .../lucene/sandbox/document/HalfFloatPoint.java    |   441 +
 .../document/IntPointMultiRangeBuilder.java        |    55 +
 .../lucene/sandbox/document/LatLonBoundingBox.java |   279 +
 .../document/LongPointMultiRangeBuilder.java       |    55 +
 .../lucene/sandbox/document/package-info.java      |    28 +
 .../lucene/sandbox/queries/FuzzyLikeThisQuery.java |   277 +-
 .../lucene/sandbox/queries/package-info.java       |     6 +-
 .../apache/lucene/sandbox/search/BM25FQuery.java   |   491 +
 .../lucene/sandbox/search/CoveringQuery.java       |   241 +
 .../lucene/sandbox/search/CoveringScorer.java      |   231 +
 .../sandbox/search/DocValuesNumbersQuery.java      |   152 +
 .../lucene/sandbox/search/DocValuesTermsQuery.java |   236 +
 .../IndexSortSortedNumericDocValuesRangeQuery.java |   309 +
 .../search/LargeNumHitsTopDocsCollector.java       |   167 +
 .../search/LatLonPointPrototypeQueries.java        |   125 +
 .../apache/lucene/sandbox/search/LongHashSet.java  |   162 +
 .../sandbox/search/MultiNormsLeafSimScorer.java    |   161 +
 .../lucene/sandbox/search/MultiRangeQuery.java     |   475 +
 .../lucene/sandbox/search/NearestNeighbor.java     |   420 +
 .../lucene/sandbox/search/PhraseWildcardQuery.java |  1107 +
 .../lucene/sandbox/search/TermAutomatonQuery.java  |   545 +
 .../lucene/sandbox/search/TermAutomatonScorer.java |   400 +
 .../search/TokenStreamToTermAutomatonQuery.java    |   115 +
 .../apache/lucene/sandbox/search/package-info.java |    22 +
 .../java/org/apache/lucene/search/BM25FQuery.java  |   454 -
 .../org/apache/lucene/search/CoveringQuery.java    |   219 -
 .../org/apache/lucene/search/CoveringScorer.java   |   225 -
 .../lucene/search/DocValuesNumbersQuery.java       |   150 -
 .../apache/lucene/search/DocValuesTermsQuery.java  |   246 -
 .../IndexSortSortedNumericDocValuesRangeQuery.java |   301 -
 .../search/LargeNumHitsTopDocsCollector.java       |   157 -
 .../lucene/search/LatLonPointPrototypeQueries.java |   113 -
 .../java/org/apache/lucene/search/LongHashSet.java |   165 -
 .../lucene/search/MultiNormsLeafSimScorer.java     |   155 -
 .../org/apache/lucene/search/MultiRangeQuery.java  |   389 -
 .../org/apache/lucene/search/NearestNeighbor.java  |   340 -
 .../apache/lucene/search/PhraseWildcardQuery.java  |  1045 -
 .../apache/lucene/search/TermAutomatonQuery.java   |   510 -
 .../apache/lucene/search/TermAutomatonScorer.java  |   387 -
 .../search/TokenStreamToTermAutomatonQuery.java    |   113 -
 .../src/java/org/apache/lucene/search/package.html |    28 -
 .../org.apache.lucene.codecs.PostingsFormat        |     2 +-
 .../codecs/idversion/StringAndPayloadField.java    |   100 -
 .../idversion/TestIDVersionPostingsFormat.java     |   834 -
 .../lucene/document/TestBigIntegerPoint.java       |   119 -
 .../lucene/document/TestDoubleRangeField.java      |    67 -
 .../document/TestFloatPointNearestNeighbor.java    |   248 -
 .../apache/lucene/document/TestHalfFloatPoint.java |   244 -
 .../lucene/payloads/TestPayloadSpanUtil.java       |    19 +-
 .../codecs/idversion/StringAndPayloadField.java    |    98 +
 .../idversion/TestIDVersionPostingsFormat.java     |   951 +
 .../sandbox/document/TestBigIntegerPoint.java      |   153 +
 .../sandbox/document/TestDoubleRangeField.java     |    81 +
 .../document/TestFloatPointNearestNeighbor.java    |   283 +
 .../sandbox/document/TestHalfFloatPoint.java       |   259 +
 .../sandbox/queries/FuzzyLikeThisQueryTest.java    |   154 -
 .../sandbox/queries/TestFuzzyLikeThisQuery.java    |   154 +
 .../lucene/sandbox/search/LongHashSetTests.java    |   102 +
 .../lucene/sandbox/search/TestBM25FQuery.java      |   269 +
 .../lucene/sandbox/search/TestCoveringQuery.java   |   164 +
 .../sandbox/search/TestDocValuesNumbersQuery.java  |   203 +
 .../sandbox/search/TestDocValuesTermsQuery.java    |   200 +
 .../sandbox/search/TestFieldCacheTermsFilter.java  |    81 +
 ...tIndexSortSortedNumericDocValuesRangeQuery.java |   465 +
 .../search/TestLargeNumHitsTopDocsCollector.java   |   177 +
 .../search/TestLatLonBoundingBoxQueries.java       |   322 +
 .../sandbox/search/TestMultiRangeQueries.java      |   594 +
 .../apache/lucene/sandbox/search/TestNearest.java  |   300 +
 .../sandbox/search/TestPhraseWildcardQuery.java    |   699 +
 .../sandbox/search/TestTermAutomatonQuery.java     |  1003 +
 .../org/apache/lucene/search/LongHashSetTests.java |   100 -
 .../org/apache/lucene/search/TestBM25FQuery.java   |   169 -
 .../apache/lucene/search/TestCoveringQuery.java    |   157 -
 .../lucene/search/TestDocValuesNumbersQuery.java   |   187 -
 .../lucene/search/TestDocValuesTermsQuery.java     |   184 -
 .../lucene/search/TestFieldCacheTermsFilter.java   |    74 -
 ...tIndexSortSortedNumericDocValuesRangeQuery.java |   446 -
 .../search/TestLargeNumHitsTopDocsCollector.java   |   158 -
 .../search/TestLatLonBoundingBoxQueries.java       |   305 -
 .../lucene/search/TestMultiRangeQueries.java       |   590 -
 .../test/org/apache/lucene/search/TestNearest.java |   251 -
 .../lucene/search/TestPhraseWildcardQuery.java     |   589 -
 .../lucene/search/TestTermAutomatonQuery.java      |   982 -
 lucene/site/xsl/index.xsl                          |   117 -
 .../org/apache/lucene/spatial/ShapeValues.java     |    11 +-
 .../apache/lucene/spatial/ShapeValuesSource.java   |    10 +-
 .../org/apache/lucene/spatial/SpatialStrategy.java |   115 +-
 .../spatial/bbox/BBoxOverlapRatioValueSource.java  |   169 +-
 .../spatial/bbox/BBoxSimilarityValueSource.java    |    62 +-
 .../apache/lucene/spatial/bbox/BBoxStrategy.java   |   227 +-
 .../lucene/spatial/bbox/BBoxValueSource.java       |    15 +-
 .../apache/lucene/spatial/bbox/package-info.java   |     6 +-
 .../composite/CompositeSpatialStrategy.java        |    64 +-
 .../spatial/composite/CompositeVerifyQuery.java    |    32 +-
 .../composite/IntersectsRPTVerifyQuery.java        |   103 +-
 .../lucene/spatial/composite/package-info.java     |     2 +-
 .../org/apache/lucene/spatial/package-info.java    |     2 +-
 .../spatial/prefix/AbstractPrefixTreeQuery.java    |    33 +-
 .../prefix/AbstractVisitingPrefixTreeQuery.java    |   242 +-
 .../prefix/BytesRefIteratorTokenStream.java        |     6 +-
 .../spatial/prefix/CellToBytesRefIterator.java     |     6 +-
 .../spatial/prefix/ContainsPrefixTreeQuery.java    |   148 +-
 .../lucene/spatial/prefix/HeatmapFacetCounter.java |   251 +-
 .../spatial/prefix/IntersectsPrefixTreeQuery.java  |    29 +-
 .../prefix/NumberRangePrefixTreeStrategy.java      |   121 +-
 .../prefix/PointPrefixTreeFieldCacheProvider.java  |    16 +-
 .../spatial/prefix/PrefixTreeFacetCounter.java     |   128 +-
 .../lucene/spatial/prefix/PrefixTreeStrategy.java  |   151 +-
 .../prefix/RecursivePrefixTreeStrategy.java        |   107 +-
 .../prefix/TermQueryPrefixTreeStrategy.java        |    52 +-
 .../spatial/prefix/WithinPrefixTreeQuery.java      |   147 +-
 .../apache/lucene/spatial/prefix/package-info.java |     4 +-
 .../apache/lucene/spatial/prefix/tree/Cell.java    |    91 +-
 .../lucene/spatial/prefix/tree/CellCanPrune.java   |     9 +-
 .../lucene/spatial/prefix/tree/CellIterator.java   |    26 +-
 .../spatial/prefix/tree/DateRangePrefixTree.java   |   361 +-
 .../spatial/prefix/tree/FilterCellIterator.java    |    15 +-
 .../spatial/prefix/tree/GeohashPrefixTree.java     |    58 +-
 .../lucene/spatial/prefix/tree/LegacyCell.java     |    97 +-
 .../spatial/prefix/tree/LegacyPrefixTree.java      |    39 +-
 .../spatial/prefix/tree/NumberRangePrefixTree.java |   526 +-
 .../spatial/prefix/tree/PackedQuadPrefixTree.java  |   207 +-
 .../lucene/spatial/prefix/tree/QuadPrefixTree.java |   117 +-
 .../lucene/spatial/prefix/tree/S2PrefixTree.java   |   221 +-
 .../spatial/prefix/tree/S2PrefixTreeCell.java      |   442 +-
 .../lucene/spatial/prefix/tree/S2ShapeFactory.java |     7 +-
 .../spatial/prefix/tree/SingletonCellIterator.java |     3 +-
 .../spatial/prefix/tree/SpatialPrefixTree.java     |    61 +-
 .../prefix/tree/SpatialPrefixTreeFactory.java      |    48 +-
 .../spatial/prefix/tree/TreeCellIterator.java      |    53 +-
 .../lucene/spatial/prefix/tree/package-info.java   |    19 +-
 .../apache/lucene/spatial/query/SpatialArgs.java   |    40 +-
 .../lucene/spatial/query/SpatialArgsParser.java    |    50 +-
 .../lucene/spatial/query/SpatialOperation.java     |   194 +-
 .../spatial/query/UnsupportedSpatialOperation.java |     4 +-
 .../apache/lucene/spatial/query/package-info.java  |     4 +-
 .../spatial/serialized/SerializedDVStrategy.java   |    94 +-
 .../lucene/spatial/serialized/package-info.java    |     6 +-
 .../lucene/spatial/spatial4j/Geo3dBinaryCodec.java |    28 +-
 .../lucene/spatial/spatial4j/Geo3dCircleShape.java |    24 +-
 .../spatial/spatial4j/Geo3dDistanceCalculator.java |    28 +-
 .../lucene/spatial/spatial4j/Geo3dPointShape.java  |    10 +-
 .../spatial/spatial4j/Geo3dRectangleShape.java     |    63 +-
 .../lucene/spatial/spatial4j/Geo3dShape.java       |    36 +-
 .../spatial/spatial4j/Geo3dShapeFactory.java       |   133 +-
 .../spatial4j/Geo3dSpatialContextFactory.java      |    13 +-
 .../lucene/spatial/spatial4j/package-info.java     |     2 +-
 .../spatial/util/CachingDoubleValueSource.java     |    14 +-
 .../spatial/util/DistanceToShapeValueSource.java   |    42 +-
 .../spatial/util/ReciprocalDoubleValuesSource.java |    22 +-
 .../lucene/spatial/util/ShapeAreaValueSource.java  |    36 +-
 .../lucene/spatial/util/ShapeFieldCache.java       |    26 +-
 .../util/ShapeFieldCacheDistanceValueSource.java   |    64 +-
 .../spatial/util/ShapeFieldCacheProvider.java      |    25 +-
 .../lucene/spatial/util/ShapeValuesPredicate.java  |    25 +-
 .../apache/lucene/spatial/util/package-info.java   |     2 +-
 .../lucene/spatial/vector/DistanceValueSource.java |    55 +-
 .../lucene/spatial/vector/PointVectorStrategy.java |   156 +-
 .../apache/lucene/spatial/vector/package-info.java |     4 +-
 .../lucene/spatial/DistanceStrategyTest.java       |   118 -
 .../org/apache/lucene/spatial/PortedSolr3Test.java |   174 -
 .../lucene/spatial/QueryEqualsHashCodeTest.java    |   119 -
 .../org/apache/lucene/spatial/SpatialArgsTest.java |    50 -
 .../org/apache/lucene/spatial/SpatialExample.java  |   110 +-
 .../apache/lucene/spatial/SpatialMatchConcern.java |    11 +-
 .../org/apache/lucene/spatial/SpatialTestCase.java |    57 +-
 .../org/apache/lucene/spatial/SpatialTestData.java |    21 +-
 .../apache/lucene/spatial/SpatialTestQuery.java    |    37 +-
 .../apache/lucene/spatial/StrategyTestCase.java    |    74 +-
 .../lucene/spatial/TestDistanceStrategy.java       |   117 +
 .../org/apache/lucene/spatial/TestPortedSolr3.java |   175 +
 .../lucene/spatial/TestQueryEqualsHashCode.java    |   129 +
 .../org/apache/lucene/spatial/TestSpatialArgs.java |    51 +
 .../apache/lucene/spatial/TestTestFramework.java   |    40 +-
 .../lucene/spatial/bbox/TestBBoxStrategy.java      |   172 +-
 .../spatial/composite/CompositeStrategyTest.java   |   135 -
 .../spatial/composite/TestCompositeStrategy.java   |   136 +
 .../lucene/spatial/prefix/DateNRStrategyTest.java  |   155 -
 .../spatial/prefix/HeatmapFacetCounterTest.java    |   265 -
 .../lucene/spatial/prefix/JtsPolygonTest.java      |   117 -
 .../spatial/prefix/NumberRangeFacetsTest.java      |   275 -
 .../RandomSpatialOpFuzzyPrefixTree50Test.java      |    31 -
 .../prefix/RandomSpatialOpFuzzyPrefixTreeTest.java |   558 -
 .../prefix/RandomSpatialOpStrategyTestCase.java    |    65 +-
 .../lucene/spatial/prefix/TestDateNRStrategy.java  |   153 +
 .../spatial/prefix/TestHeatmapFacetCounter.java    |   300 +
 .../lucene/spatial/prefix/TestJtsPolygon.java      |   124 +
 .../spatial/prefix/TestNumberRangeFacets.java      |   283 +
 .../prefix/TestRandomSpatialOpFuzzyPrefixTree.java |   581 +
 .../TestRandomSpatialOpFuzzyPrefixTree50.java      |    32 +
 .../prefix/TestRecursivePrefixTreeStrategy.java    |    50 +-
 .../prefix/TestTermQueryPrefixGridStrategy.java    |    30 +-
 .../prefix/tree/DateRangePrefixTreeTest.java       |   289 -
 .../spatial/prefix/tree/S2PrefixTreeTest.java      |   113 -
 .../spatial/prefix/tree/SpatialPrefixTreeTest.java |   114 -
 .../prefix/tree/TestDateRangePrefixTree.java       |   349 +
 .../spatial/prefix/tree/TestS2PrefixTree.java      |   119 +
 .../spatial/prefix/tree/TestSpatialPrefixTree.java |   114 +
 .../spatial/query/SpatialArgsParserTest.java       |    77 -
 .../spatial/query/TestSpatialArgsParser.java       |    79 +
 .../spatial/serialized/SerializedStrategyTest.java |    61 -
 .../spatial/serialized/TestSerializedStrategy.java |    60 +
 .../lucene/spatial/spatial4j/Geo3dRptTest.java     |   167 -
 .../Geo3dShapeSphereModelRectRelationTest.java     |    95 -
 .../Geo3dShapeWGS84ModelRectRelationTest.java      |   137 -
 .../apache/lucene/spatial/spatial4j/Geo3dTest.java |    85 -
 .../spatial/spatial4j/RandomizedShapeTestCase.java |    19 +-
 .../spatial4j/ShapeRectRelationTestCase.java       |    42 +-
 .../apache/lucene/spatial/spatial4j/TestGeo3d.java |    92 +
 .../lucene/spatial/spatial4j/TestGeo3dRpt.java     |   172 +
 .../TestGeo3dShapeSphereModelRectRelation.java     |   113 +
 .../TestGeo3dShapeWGS84ModelRectRelation.java      |   171 +
 .../spatial/vector/TestPointVectorStrategy.java    |    31 +-
 .../lucene/spatial3d/Geo3DDocValuesField.java      |   313 +-
 .../org/apache/lucene/spatial3d/Geo3DPoint.java    |   151 +-
 .../spatial3d/Geo3DPointDistanceComparator.java    |    72 +-
 .../Geo3DPointOutsideDistanceComparator.java       |    55 +-
 .../spatial3d/Geo3DPointOutsideSortField.java      |    17 +-
 .../lucene/spatial3d/Geo3DPointSortField.java      |    15 +-
 .../org/apache/lucene/spatial3d/Geo3DUtil.java     |   156 +-
 .../lucene/spatial3d/PointInGeo3DShapeQuery.java   |    35 +-
 .../spatial3d/PointInShapeIntersectVisitor.java    |   108 +-
 .../apache/lucene/spatial3d/geom/ArcDistance.java  |    53 +-
 .../lucene/spatial3d/geom/BasePlanetObject.java    |    30 +-
 .../apache/lucene/spatial3d/geom/BaseXYZSolid.java |    81 +-
 .../org/apache/lucene/spatial3d/geom/Bounded.java  |     7 +-
 .../org/apache/lucene/spatial3d/geom/Bounds.java   |   181 +-
 .../lucene/spatial3d/geom/DistanceStyle.java       |   110 +-
 .../org/apache/lucene/spatial3d/geom/GeoArea.java  |    36 +-
 .../lucene/spatial3d/geom/GeoAreaFactory.java      |    28 +-
 .../apache/lucene/spatial3d/geom/GeoAreaShape.java |    16 +-
 .../org/apache/lucene/spatial3d/geom/GeoBBox.java  |     6 +-
 .../lucene/spatial3d/geom/GeoBBoxFactory.java      |    85 +-
 .../lucene/spatial3d/geom/GeoBaseAreaShape.java    |    62 +-
 .../apache/lucene/spatial3d/geom/GeoBaseBBox.java  |    12 +-
 .../lucene/spatial3d/geom/GeoBaseCircle.java       |     8 +-
 .../spatial3d/geom/GeoBaseCompositeAreaShape.java  |    74 +-
 .../geom/GeoBaseCompositeMembershipShape.java      |    21 +-
 .../spatial3d/geom/GeoBaseCompositeShape.java      |    37 +-
 .../spatial3d/geom/GeoBaseDistanceShape.java       |    38 +-
 .../spatial3d/geom/GeoBaseMembershipShape.java     |    22 +-
 .../apache/lucene/spatial3d/geom/GeoBasePath.java  |     8 +-
 .../lucene/spatial3d/geom/GeoBasePolygon.java      |     8 +-
 .../apache/lucene/spatial3d/geom/GeoBaseShape.java |    15 +-
 .../apache/lucene/spatial3d/geom/GeoCircle.java    |     3 +-
 .../lucene/spatial3d/geom/GeoCircleFactory.java    |    47 +-
 .../lucene/spatial3d/geom/GeoComplexPolygon.java   |  1857 +-
 .../spatial3d/geom/GeoCompositeAreaShape.java      |    14 +-
 .../geom/GeoCompositeMembershipShape.java          |    17 +-
 .../lucene/spatial3d/geom/GeoCompositePolygon.java |    20 +-
 .../lucene/spatial3d/geom/GeoConcavePolygon.java   |   311 +-
 .../lucene/spatial3d/geom/GeoConvexPolygon.java    |   316 +-
 .../geom/GeoDegenerateHorizontalLine.java          |   118 +-
 .../spatial3d/geom/GeoDegenerateLatitudeZone.java  |    46 +-
 .../geom/GeoDegenerateLongitudeSlice.java          |    68 +-
 .../lucene/spatial3d/geom/GeoDegeneratePath.java   |   796 +-
 .../lucene/spatial3d/geom/GeoDegeneratePoint.java  |    87 +-
 .../spatial3d/geom/GeoDegenerateVerticalLine.java  |   125 +-
 .../apache/lucene/spatial3d/geom/GeoDistance.java  |    56 +-
 .../lucene/spatial3d/geom/GeoDistanceShape.java    |    21 +-
 .../lucene/spatial3d/geom/GeoExactCircle.java      |   313 +-
 .../lucene/spatial3d/geom/GeoLatitudeZone.java     |    99 +-
 .../lucene/spatial3d/geom/GeoLongitudeSlice.java   |   109 +-
 .../lucene/spatial3d/geom/GeoMembershipShape.java  |     7 +-
 .../spatial3d/geom/GeoNorthLatitudeZone.java       |    61 +-
 .../lucene/spatial3d/geom/GeoNorthRectangle.java   |   196 +-
 .../lucene/spatial3d/geom/GeoOutsideDistance.java  |    23 +-
 .../org/apache/lucene/spatial3d/geom/GeoPath.java  |    37 +-
 .../lucene/spatial3d/geom/GeoPathFactory.java      |    12 +-
 .../org/apache/lucene/spatial3d/geom/GeoPoint.java |   230 +-
 .../lucene/spatial3d/geom/GeoPointShape.java       |     7 +-
 .../spatial3d/geom/GeoPointShapeFactory.java       |    11 +-
 .../apache/lucene/spatial3d/geom/GeoPolygon.java   |     4 +-
 .../lucene/spatial3d/geom/GeoPolygonFactory.java   |  1435 +-
 .../apache/lucene/spatial3d/geom/GeoRectangle.java |   227 +-
 .../apache/lucene/spatial3d/geom/GeoS2Shape.java   |   366 +-
 .../lucene/spatial3d/geom/GeoS2ShapeFactory.java   |    20 +-
 .../org/apache/lucene/spatial3d/geom/GeoShape.java |    39 +-
 .../apache/lucene/spatial3d/geom/GeoSizeable.java  |     4 +-
 .../spatial3d/geom/GeoSouthLatitudeZone.java       |    51 +-
 .../lucene/spatial3d/geom/GeoSouthRectangle.java   |   159 +-
 .../lucene/spatial3d/geom/GeoStandardCircle.java   |    93 +-
 .../lucene/spatial3d/geom/GeoStandardPath.java     |  1397 +-
 .../geom/GeoWideDegenerateHorizontalLine.java      |   142 +-
 .../spatial3d/geom/GeoWideLongitudeSlice.java      |   132 +-
 .../spatial3d/geom/GeoWideNorthRectangle.java      |   178 +-
 .../lucene/spatial3d/geom/GeoWideRectangle.java    |   221 +-
 .../spatial3d/geom/GeoWideSouthRectangle.java      |   156 +-
 .../org/apache/lucene/spatial3d/geom/GeoWorld.java |    33 +-
 .../apache/lucene/spatial3d/geom/LatLonBounds.java |   181 +-
 .../lucene/spatial3d/geom/LinearDistance.java      |    53 +-
 .../spatial3d/geom/LinearSquaredDistance.java      |    53 +-
 .../apache/lucene/spatial3d/geom/Membership.java   |     1 -
 .../lucene/spatial3d/geom/NormalDistance.java      |    53 +-
 .../spatial3d/geom/NormalSquaredDistance.java      |    53 +-
 .../org/apache/lucene/spatial3d/geom/Plane.java    |  1681 +-
 .../apache/lucene/spatial3d/geom/PlanetModel.java  |   410 +-
 .../apache/lucene/spatial3d/geom/PlanetObject.java |     1 -
 .../lucene/spatial3d/geom/SerializableObject.java  |   279 +-
 .../apache/lucene/spatial3d/geom/SidedPlane.java   |   171 +-
 .../lucene/spatial3d/geom/StandardObjects.java     |    92 +-
 .../lucene/spatial3d/geom/StandardXYZSolid.java    |   462 +-
 .../org/apache/lucene/spatial3d/geom/Tools.java    |    14 +-
 .../org/apache/lucene/spatial3d/geom/Vector.java   |   268 +-
 .../apache/lucene/spatial3d/geom/XYZBounds.java    |   219 +-
 .../org/apache/lucene/spatial3d/geom/XYZSolid.java |     4 +-
 .../lucene/spatial3d/geom/XYZSolidFactory.java     |    42 +-
 .../apache/lucene/spatial3d/geom/XYdZSolid.java    |   183 +-
 .../apache/lucene/spatial3d/geom/XdYZSolid.java    |   176 +-
 .../apache/lucene/spatial3d/geom/XdYdZSolid.java   |    86 +-
 .../apache/lucene/spatial3d/geom/dXYZSolid.java    |   191 +-
 .../apache/lucene/spatial3d/geom/dXYdZSolid.java   |    86 +-
 .../apache/lucene/spatial3d/geom/dXdYZSolid.java   |    86 +-
 .../apache/lucene/spatial3d/geom/dXdYdZSolid.java  |    90 +-
 .../apache/lucene/spatial3d/geom/package-info.java |     2 +-
 .../org/apache/lucene/spatial3d/package-info.java  |     3 +-
 .../lucene/spatial3d/TestGeo3DDocValues.java       |    17 +-
 .../apache/lucene/spatial3d/TestGeo3DPoint.java    |  1414 +-
 .../geom/CompositeGeoPolygonRelationshipsTest.java |   842 -
 .../apache/lucene/spatial3d/geom/Geo3DUtil.java    |     6 +-
 .../apache/lucene/spatial3d/geom/GeoBBoxTest.java  |   390 -
 .../lucene/spatial3d/geom/GeoCircleTest.java       |   429 -
 .../spatial3d/geom/GeoConvexPolygonTest.java       |    91 -
 .../lucene/spatial3d/geom/GeoExactCircleTest.java  |   253 -
 .../apache/lucene/spatial3d/geom/GeoModelTest.java |   110 -
 .../apache/lucene/spatial3d/geom/GeoPathTest.java  |   435 -
 .../apache/lucene/spatial3d/geom/GeoPointTest.java |   110 -
 .../lucene/spatial3d/geom/GeoPolygonTest.java      |  1932 -
 .../apache/lucene/spatial3d/geom/PlaneTest.java    |    92 -
 .../spatial3d/geom/RandomBinaryCodecTest.java      |    69 -
 .../spatial3d/geom/RandomGeo3dShapeGenerator.java  |   559 +-
 .../spatial3d/geom/RandomGeoPolygonTest.java       |   271 -
 .../geom/RandomGeoShapeRelationshipTest.java       |   282 -
 .../lucene/spatial3d/geom/RandomPlaneTest.java     |   101 -
 .../geom/SimpleGeoPolygonRelationshipsTest.java    |   875 -
 .../geom/TestCompositeGeoPolygonRelationships.java |   975 +
 .../apache/lucene/spatial3d/geom/TestGeoBBox.java  |   487 +
 .../lucene/spatial3d/geom/TestGeoCircle.java       |   575 +
 .../spatial3d/geom/TestGeoConvexPolygon.java       |    89 +
 .../lucene/spatial3d/geom/TestGeoExactCircle.java  |   326 +
 .../apache/lucene/spatial3d/geom/TestGeoModel.java |   105 +
 .../apache/lucene/spatial3d/geom/TestGeoPath.java  |   491 +
 .../apache/lucene/spatial3d/geom/TestGeoPoint.java |   125 +
 .../lucene/spatial3d/geom/TestGeoPolygon.java      |  2881 ++
 .../apache/lucene/spatial3d/geom/TestPlane.java    |    91 +
 .../spatial3d/geom/TestRandomBinaryCodec.java      |    66 +
 .../spatial3d/geom/TestRandomGeoPolygon.java       |   305 +
 .../geom/TestRandomGeoShapeRelationship.java       |   272 +
 .../lucene/spatial3d/geom/TestRandomPlane.java     |   107 +
 .../geom/TestSimpleGeoPolygonRelationships.java    |  1008 +
 .../apache/lucene/spatial3d/geom/TestXYZSolid.java |   239 +
 .../apache/lucene/spatial3d/geom/XYZSolidTest.java |   239 -
 .../lucene/search/spell/CombineSuggestion.java     |    23 +-
 .../org/apache/lucene/search/spell/Dictionary.java |     9 +-
 .../lucene/search/spell/DirectSpellChecker.java    |   352 +-
 .../search/spell/HighFrequencyDictionary.java      |    33 +-
 .../lucene/search/spell/JaroWinklerDistance.java   |    39 +-
 .../lucene/search/spell/LevenshteinDistance.java   |   161 +-
 .../lucene/search/spell/LuceneDictionary.java      |    14 +-
 .../search/spell/LuceneLevenshteinDistance.java    |    71 +-
 .../apache/lucene/search/spell/NGramDistance.java  |   132 +-
 .../lucene/search/spell/PlainTextDictionary.java   |    17 +-
 .../apache/lucene/search/spell/SpellChecker.java   |   292 +-
 .../apache/lucene/search/spell/StringDistance.java |    14 +-
 .../apache/lucene/search/spell/SuggestMode.java    |    15 +-
 .../apache/lucene/search/spell/SuggestWord.java    |    30 +-
 .../spell/SuggestWordFrequencyComparator.java      |    12 +-
 .../lucene/search/spell/SuggestWordQueue.java      |    16 +-
 .../search/spell/SuggestWordScoreComparator.java   |    13 +-
 .../lucene/search/spell/WordBreakSpellChecker.java |   334 +-
 .../apache/lucene/search/spell/package-info.java   |     5 +-
 .../apache/lucene/search/suggest/BitsProducer.java |     9 +-
 .../search/suggest/BufferedInputIterator.java      |     8 +-
 .../lucene/search/suggest/DocumentDictionary.java  |    99 +-
 .../suggest/DocumentValueSourceDictionary.java     |   108 +-
 .../lucene/search/suggest/FileDictionary.java      |    75 +-
 .../lucene/search/suggest/InMemorySorter.java      |     9 +-
 .../lucene/search/suggest/InputIterator.java       |    45 +-
 .../org/apache/lucene/search/suggest/Lookup.java   |   156 +-
 .../lucene/search/suggest/SortedInputIterator.java |   147 +-
 .../search/suggest/UnsortedInputIterator.java      |    19 +-
 .../suggest/analyzing/AnalyzingInfixSuggester.java |   542 +-
 .../suggest/analyzing/AnalyzingSuggester.java      |   481 +-
 .../suggest/analyzing/BlendedInfixSuggester.java   |   168 +-
 .../lucene/search/suggest/analyzing/FSTUtil.java   |    64 +-
 .../suggest/analyzing/FreeTextSuggester.java       |   459 +-
 .../search/suggest/analyzing/FuzzySuggester.java   |   220 +-
 .../suggest/analyzing/SuggestStopFilter.java       |    23 +-
 .../analyzing/SuggestStopFilterFactory.java        |    62 +-
 .../search/suggest/analyzing/package-info.java     |     6 +-
 .../document/Completion50PostingsFormat.java       |    19 +-
 .../document/Completion84PostingsFormat.java       |    14 +-
 .../suggest/document/CompletionAnalyzer.java       |    92 +-
 .../suggest/document/CompletionFieldsConsumer.java |    73 +-
 .../suggest/document/CompletionFieldsProducer.java |    66 +-
 .../suggest/document/CompletionPostingsFormat.java |   130 +-
 .../search/suggest/document/CompletionQuery.java   |    57 +-
 .../search/suggest/document/CompletionScorer.java  |    40 +-
 .../search/suggest/document/CompletionTerms.java   |    26 +-
 .../suggest/document/CompletionTokenStream.java    |    40 +-
 .../search/suggest/document/CompletionWeight.java  |    35 +-
 .../suggest/document/CompletionsTermsReader.java   |    21 +-
 .../search/suggest/document/ContextQuery.java      |   153 +-
 .../suggest/document/ContextSuggestField.java      |    65 +-
 .../suggest/document/FuzzyCompletionQuery.java     |   138 +-
 .../search/suggest/document/NRTSuggester.java      |   312 +-
 .../suggest/document/NRTSuggesterBuilder.java      |    56 +-
 .../suggest/document/PrefixCompletionQuery.java    |    30 +-
 .../suggest/document/RegexCompletionQuery.java     |    53 +-
 .../search/suggest/document/SuggestField.java      |    58 +-
 .../suggest/document/SuggestIndexSearcher.java     |    33 +-
 .../document/SuggestScoreDocPriorityQueue.java     |    13 +-
 .../search/suggest/document/TopSuggestDocs.java    |    53 +-
 .../suggest/document/TopSuggestDocsCollector.java  |    87 +-
 .../search/suggest/document/package-info.java      |     4 +-
 .../lucene/search/suggest/fst/BytesRefSorter.java  |    26 +-
 .../search/suggest/fst/ExternalRefSorter.java      |    54 +-
 .../lucene/search/suggest/fst/FSTCompletion.java   |   178 +-
 .../search/suggest/fst/FSTCompletionBuilder.java   |   240 +-
 .../search/suggest/fst/FSTCompletionLookup.java    |   179 +-
 .../search/suggest/fst/WFSTCompletionLookup.java   |   135 +-
 .../lucene/search/suggest/fst/package-info.java    |     6 +-
 .../search/suggest/jaspell/JaspellLookup.java      |    45 +-
 .../suggest/jaspell/JaspellTernarySearchTrie.java  |   662 +-
 .../search/suggest/jaspell/package-info.java       |     8 +-
 .../apache/lucene/search/suggest/package-info.java |     4 +-
 .../lucene/search/suggest/tst/TSTAutocomplete.java |    65 +-
 .../lucene/search/suggest/tst/TSTLookup.java       |   120 +-
 .../lucene/search/suggest/tst/TernaryTreeNode.java |    25 +-
 .../lucene/search/suggest/tst/package-info.java    |     6 +-
 ... org.apache.lucene.analysis.TokenFilterFactory} |     0
 .../search/spell/TestDirectSpellChecker.java       |   149 +-
 .../search/spell/TestJaroWinklerDistance.java      |     9 +-
 .../search/spell/TestLevenshteinDistance.java      |    23 +-
 .../lucene/search/spell/TestLuceneDictionary.java  |    56 +-
 .../lucene/search/spell/TestNGramDistance.java     |    76 +-
 .../search/spell/TestPlainTextDictionary.java      |     7 +-
 .../lucene/search/spell/TestSpellChecker.java      |   283 +-
 .../search/spell/TestWordBreakSpellChecker.java    |   313 +-
 .../org/apache/lucene/search/suggest/Average.java  |    70 +-
 .../search/suggest/DocumentDictionaryTest.java     |   148 +-
 .../suggest/DocumentValueSourceDictionaryTest.java |   136 +-
 .../lucene/search/suggest/FileDictionaryTest.java  |    74 +-
 .../org/apache/lucene/search/suggest/Input.java    |    28 +-
 .../lucene/search/suggest/InputArrayIterator.java  |    10 +-
 .../lucene/search/suggest/LookupBenchmarkTest.java |   183 +-
 .../lucene/search/suggest/PersistenceTest.java     |    48 +-
 .../lucene/search/suggest/TestInputIterator.java   |    71 +-
 .../analyzing/AnalyzingInfixSuggesterTest.java     |   715 +-
 .../suggest/analyzing/AnalyzingSuggesterTest.java  |   601 +-
 .../analyzing/BlendedInfixSuggesterTest.java       |   298 +-
 .../suggest/analyzing/FuzzySuggesterTest.java      |   626 +-
 .../suggest/analyzing/TestFreeTextSuggester.java   |   370 +-
 .../suggest/analyzing/TestSuggestStopFilter.java   |   137 +-
 .../analyzing/TestSuggestStopFilterFactory.java    |    66 +-
 .../search/suggest/document/TestContextQuery.java  |   191 +-
 .../suggest/document/TestContextSuggestField.java  |   127 +-
 .../suggest/document/TestFuzzyCompletionQuery.java |    41 +-
 .../document/TestPrefixCompletionQuery.java        |   199 +-
 .../suggest/document/TestRegexCompletionQuery.java |    53 +-
 .../search/suggest/document/TestSuggestField.java  |   302 +-
 .../search/suggest/fst/BytesRefSortersTest.java    |    15 +-
 .../search/suggest/fst/FSTCompletionTest.java      |   157 +-
 .../search/suggest/fst/WFSTCompletionTest.java     |   109 +-
 .../analysis/BaseTokenStreamFactoryTestCase.java   |   162 +
 .../lucene/analysis/BaseTokenStreamTestCase.java   |   921 +-
 .../lucene/analysis/CannedBinaryTokenStream.java   |    16 +-
 .../apache/lucene/analysis/CannedTokenStream.java  |    14 +-
 .../apache/lucene/analysis/CollationTestBase.java  |   108 +-
 .../apache/lucene/analysis/CrankyTokenFilter.java  |    14 +-
 .../lucene/analysis/LookaheadTokenFilter.java      |   117 +-
 .../org/apache/lucene/analysis/MockAnalyzer.java   |   102 +-
 .../apache/lucene/analysis/MockBytesAnalyzer.java  |    14 +-
 .../org/apache/lucene/analysis/MockCharFilter.java |    46 +-
 .../analysis/MockFixedLengthPayloadFilter.java     |     5 +-
 .../lucene/analysis/MockGraphTokenFilter.java      |    29 +-
 .../analysis/MockHoleInjectingTokenFilter.java     |    10 +-
 .../lucene/analysis/MockLowerCaseFilter.java       |     6 +-
 .../lucene/analysis/MockPayloadAnalyzer.java       |    22 +-
 .../analysis/MockRandomLookaheadTokenFilter.java   |    11 +-
 .../apache/lucene/analysis/MockReaderWrapper.java  |     9 +-
 .../lucene/analysis/MockSynonymAnalyzer.java       |     1 -
 .../apache/lucene/analysis/MockSynonymFilter.java  |     5 +-
 .../apache/lucene/analysis/MockTokenFilter.java    |    74 +-
 .../org/apache/lucene/analysis/MockTokenizer.java  |   166 +-
 .../analysis/MockUTF16TermAttributeImpl.java       |    12 +-
 .../analysis/MockVariableLengthPayloadFilter.java  |     5 +-
 .../lucene/analysis/SimplePayloadFilter.java       |     1 -
 .../src/java/org/apache/lucene/analysis/Token.java |   112 +-
 .../apache/lucene/analysis/TokenStreamToDot.java   |    27 +-
 .../lucene/analysis/ValidatingTokenFilter.java     |    72 +-
 .../apache/lucene/analysis/VocabularyAssert.java   |    34 +-
 .../apache/lucene/codecs/MissingOrdRemapper.java   |    21 +-
 .../lucene/codecs/asserting/AssertingCodec.java    |    66 +-
 .../codecs/asserting/AssertingDocValuesFormat.java |    75 +-
 .../codecs/asserting/AssertingLiveDocsFormat.java  |    15 +-
 .../codecs/asserting/AssertingNormsFormat.java     |    27 +-
 .../codecs/asserting/AssertingPointsFormat.java    |    26 +-
 .../codecs/asserting/AssertingPostingsFormat.java  |    46 +-
 .../asserting/AssertingStoredFieldsFormat.java     |    36 +-
 .../asserting/AssertingTermVectorsFormat.java      |    42 +-
 .../lucene/codecs/asserting/package-info.java      |     4 +-
 .../lucene/codecs/blockterms/LuceneFixedGap.java   |     8 +-
 .../blockterms/LuceneVarGapDocFreqInterval.java    |    17 +-
 .../blockterms/LuceneVarGapFixedInterval.java      |    13 +-
 .../bloom/TestBloomFilteredLucenePostings.java     |    35 +-
 .../codecs/cheapbastard/CheapBastardCodec.java     |     6 +-
 .../lucene/codecs/cheapbastard/package-info.java   |     6 +-
 .../codecs/compressing/CompressingCodec.java       |   141 +-
 .../DeflateWithPresetCompressingCodec.java         |    16 +-
 .../codecs/compressing/FastCompressingCodec.java   |    13 +-
 .../FastDecompressionCompressingCodec.java         |    13 +-
 .../HighCompressionCompressingCodec.java           |    13 +-
 .../compressing/LZ4WithPresetCompressingCodec.java |    16 +-
 .../compressing/dummy/DummyCompressingCodec.java   |   118 +-
 .../codecs/compressing/dummy/package-info.java     |     4 +-
 .../apache/lucene/codecs/cranky/CrankyCodec.java   |     8 +-
 .../lucene/codecs/cranky/CrankyCompoundFormat.java |    10 +-
 .../codecs/cranky/CrankyDocValuesFormat.java       |    26 +-
 .../codecs/cranky/CrankyFieldInfosFormat.java      |    15 +-
 .../lucene/codecs/cranky/CrankyLiveDocsFormat.java |    10 +-
 .../lucene/codecs/cranky/CrankyNormsFormat.java    |     9 +-
 .../lucene/codecs/cranky/CrankyPointsFormat.java   |    23 +-
 .../lucene/codecs/cranky/CrankyPostingsFormat.java |    17 +-
 .../codecs/cranky/CrankySegmentInfoFormat.java     |     9 +-
 .../codecs/cranky/CrankyStoredFieldsFormat.java    |    33 +-
 .../codecs/cranky/CrankyTermVectorsFormat.java     |    47 +-
 .../apache/lucene/codecs/cranky/package-info.java  |     4 +-
 .../mockrandom/MockRandomPostingsFormat.java       |   105 +-
 .../lucene/codecs/mockrandom/package-info.java     |     4 +-
 .../codecs/ramonly/RAMOnlyPostingsFormat.java      |   107 +-
 .../apache/lucene/codecs/ramonly/package-info.java |     4 +-
 .../codecs/uniformsplit/Rot13CypherTestUtil.java   |    11 +-
 .../UniformSplitRot13PostingsFormat.java           |    25 +-
 .../STUniformSplitRot13PostingsFormat.java         |    25 +-
 .../apache/lucene/geo/BaseGeoPointTestCase.java    |  1192 +-
 .../org/apache/lucene/geo/BaseXYPointTestCase.java |   987 +-
 .../java/org/apache/lucene/geo/EarthDebugger.java  |   124 +-
 .../java/org/apache/lucene/geo/GeoTestUtil.java    |   303 +-
 .../java/org/apache/lucene/geo/ShapeTestUtil.java  |   120 +-
 .../apache/lucene/index/AlcoholicMergePolicy.java  |    51 +-
 .../lucene/index/AllDeletedFilterReader.java       |     6 +-
 .../lucene/index/AssertingDirectoryReader.java     |     6 +-
 .../apache/lucene/index/AssertingLeafReader.java   |   224 +-
 .../lucene/index/BaseCompoundFormatTestCase.java   |   413 +-
 .../BaseCompressingDocValuesFormatTestCase.java    |     4 +-
 .../lucene/index/BaseDocValuesFormatTestCase.java  |   988 +-
 .../lucene/index/BaseFieldInfoFormatTestCase.java  |   246 +-
 .../lucene/index/BaseIndexFileFormatTestCase.java  |   562 +-
 .../lucene/index/BaseLiveDocsFormatTestCase.java   |    50 +-
 .../lucene/index/BaseMergePolicyTestCase.java      |   375 +-
 .../lucene/index/BaseNormsFormatTestCase.java      |   505 +-
 .../lucene/index/BasePointsFormatTestCase.java     |   569 +-
 .../lucene/index/BasePostingsFormatTestCase.java   |   670 +-
 .../index/BaseSegmentInfoFormatTestCase.java       |   473 +-
 .../index/BaseStoredFieldsFormatTestCase.java      |   238 +-
 .../index/BaseTermVectorsFormatTestCase.java       |   489 +-
 .../apache/lucene/index/BaseTestCheckIndex.java    |    44 +-
 .../java/org/apache/lucene/index/DocHelper.java    |   190 +-
 .../apache/lucene/index/FieldFilterLeafReader.java |    90 +-
 .../org/apache/lucene/index/ForceMergePolicy.java  |    10 +-
 .../lucene/index/IndexWriterMaxDocsChanger.java    |    16 +-
 .../apache/lucene/index/MergingCodecReader.java    |    41 +-
 .../index/MergingDirectoryReaderWrapper.java       |    22 +-
 .../lucene/index/MismatchedDirectoryReader.java    |     9 +-
 .../apache/lucene/index/MismatchedLeafReader.java  |    57 +-
 .../apache/lucene/index/MockRandomMergePolicy.java |   102 +-
 .../lucene/index/OwnCacheKeyMultiReader.java       |    35 +-
 .../org/apache/lucene/index/PerThreadPKLookup.java |    33 +-
 .../apache/lucene/index/PointsStackTracker.java    |    34 +-
 .../java/org/apache/lucene/index/RandomCodec.java  |   230 +-
 .../org/apache/lucene/index/RandomIndexWriter.java |   234 +-
 .../apache/lucene/index/RandomPostingsTester.java  |   697 +-
 .../ThreadedIndexingAndSearchingTestCase.java      |   680 +-
 .../org/apache/lucene/mockfile/DisableFsyncFS.java |    25 +-
 .../java/org/apache/lucene/mockfile/ExtrasFS.java  |    43 +-
 .../mockfile/FilterAsynchronousFileChannel.java    |    40 +-
 .../lucene/mockfile/FilterDirectoryStream.java     |    31 +-
 .../apache/lucene/mockfile/FilterFileChannel.java  |    25 +-
 .../apache/lucene/mockfile/FilterFileStore.java    |    26 +-
 .../apache/lucene/mockfile/FilterFileSystem.java   |    39 +-
 .../lucene/mockfile/FilterFileSystemProvider.java  |   114 +-
 .../apache/lucene/mockfile/FilterInputStream2.java |    37 +-
 .../lucene/mockfile/FilterOutputStream2.java       |    39 +-
 .../org/apache/lucene/mockfile/FilterPath.java     |    72 +-
 .../lucene/mockfile/FilterSeekableByteChannel.java |    25 +-
 .../org/apache/lucene/mockfile/HandleLimitFS.java  |    11 +-
 .../apache/lucene/mockfile/HandleTrackingFS.java   |   413 +-
 .../java/org/apache/lucene/mockfile/LeakFS.java    |    16 +-
 .../lucene/mockfile/MockFileSystemTestCase.java    |    22 +-
 .../java/org/apache/lucene/mockfile/ShuffleFS.java |    23 +-
 .../java/org/apache/lucene/mockfile/VerboseFS.java |    54 +-
 .../apache/lucene/mockfile/VirusCheckingFS.java    |    25 +-
 .../java/org/apache/lucene/mockfile/WindowsFS.java |    53 +-
 .../org/apache/lucene/mockfile/package-info.java   |    13 +-
 .../apache/lucene/search/AssertingBulkScorer.java  |    11 +-
 .../apache/lucene/search/AssertingCollector.java   |    14 +-
 .../lucene/search/AssertingIndexSearcher.java      |    24 +-
 .../lucene/search/AssertingLeafCollector.java      |     4 +-
 .../org/apache/lucene/search/AssertingMatches.java |     5 +-
 .../lucene/search/AssertingMatchesIterator.java    |     9 +-
 .../org/apache/lucene/search/AssertingQuery.java   |    11 +-
 .../apache/lucene/search/AssertingScorable.java    |    20 +-
 .../org/apache/lucene/search/AssertingScorer.java  |   116 +-
 .../org/apache/lucene/search/AssertingWeight.java  |    23 +-
 .../lucene/search/BaseExplanationTestCase.java     |    91 +-
 .../lucene/search/BaseRangeFieldQueryTestCase.java |   133 +-
 .../lucene/search/BlockScoreQueryWrapper.java      |     9 +-
 .../lucene/search/BulkScorerWrapperScorer.java     |    38 +-
 .../java/org/apache/lucene/search/CheckHits.java   |   397 +-
 .../java/org/apache/lucene/search/QueryUtils.java  |   642 +-
 .../lucene/search/RandomApproximationQuery.java    |    24 +-
 .../apache/lucene/search/ScorerIndexSearcher.java  |    31 +-
 .../lucene/search/SearchEquivalenceTestBase.java   |   106 +-
 .../lucene/search/ShardSearchingTestBase.java      |   148 +-
 .../search/similarities/AssertingSimilarity.java   |    15 +-
 .../similarities/BaseSimilarityTestCase.java       |   171 +-
 .../search/similarities/RandomSimilarity.java      |    37 +-
 .../lucene/search/spans/AssertingSpanQuery.java    |     9 +-
 .../lucene/search/spans/AssertingSpanWeight.java   |    10 +-
 .../apache/lucene/search/spans/AssertingSpans.java |   129 +-
 .../apache/lucene/search/spans/SpanTestUtil.java   |   106 +-
 .../apache/lucene/store/BaseDirectoryTestCase.java |   462 +-
 .../apache/lucene/store/BaseDirectoryWrapper.java  |    18 +-
 .../lucene/store/BaseLockFactoryTestCase.java      |   150 +-
 .../apache/lucene/store/CorruptingIndexOutput.java |    21 +-
 .../apache/lucene/store/MockDirectoryWrapper.java  |   632 +-
 .../apache/lucene/store/MockIndexInputWrapper.java |    36 +-
 .../lucene/store/MockIndexOutputWrapper.java       |    43 +-
 .../apache/lucene/store/RawDirectoryWrapper.java   |    14 +-
 .../store/SlowClosingMockIndexInputWrapper.java    |    14 +-
 .../store/SlowOpeningMockIndexInputWrapper.java    |    13 +-
 .../lucene/util/AbstractBeforeAfterRule.java       |    11 +-
 .../org/apache/lucene/util/BaseBitSetTestCase.java |    16 +-
 .../apache/lucene/util/BaseDocIdSetTestCase.java   |    15 +-
 .../org/apache/lucene/util/CloseableDirectory.java |    10 +-
 .../src/java/org/apache/lucene/util/English.java   |    26 +-
 .../lucene/util/FailOnNonBulkMergesInfoStream.java |     5 +-
 .../java/org/apache/lucene/util/FailureMarker.java |     5 +-
 .../java/org/apache/lucene/util/LineFileDocs.java  |    64 +-
 .../lucene/util/LuceneJUnit3MethodProvider.java    |    21 +-
 .../org/apache/lucene/util/LuceneTestCase.java     |  1949 +-
 .../org/apache/lucene/util/NullInfoStream.java     |    10 +-
 .../lucene/util/QuickPatchThreadsFilter.java       |    11 +-
 .../org/apache/lucene/util/RamUsageTester.java     |   276 +-
 .../org/apache/lucene/util/RemoveUponClose.java    |    13 +-
 .../src/java/org/apache/lucene/util/Rethrow.java   |    16 +-
 .../lucene/util/RunListenerPrintReproduceInfo.java |   107 +-
 .../lucene/util/TestRuleAssertionsRequired.java    |     6 +-
 .../org/apache/lucene/util/TestRuleDelegate.java   |     5 +-
 .../util/TestRuleIgnoreAfterMaxFailures.java       |    34 +-
 .../lucene/util/TestRuleIgnoreTestSuites.java      |    37 +-
 .../apache/lucene/util/TestRuleLimitSysouts.java   |   169 +-
 .../apache/lucene/util/TestRuleMarkFailure.java    |    28 +-
 .../util/TestRuleRestoreSystemProperties.java      |    26 +-
 .../util/TestRuleSetupAndRestoreClassEnv.java      |   176 +-
 .../util/TestRuleSetupAndRestoreInstanceEnv.java   |     4 +-
 .../lucene/util/TestRuleSetupTeardownChained.java  |    23 +-
 .../apache/lucene/util/TestRuleStoreClassName.java |    13 +-
 .../lucene/util/TestRuleTemporaryFilesCleanup.java |   119 +-
 .../lucene/util/TestRuleThreadAndTestName.java     |    13 +-
 .../apache/lucene/util/TestSecurityManager.java    |    72 +-
 .../src/java/org/apache/lucene/util/TestUtil.java  |  1124 +-
 .../apache/lucene/util/ThrottledIndexOutput.java   |    45 +-
 .../src/java/org/apache/lucene/util/TimeUnits.java |     2 +-
 .../lucene/util/automaton/AutomatonTestUtil.java   |   182 +-
 .../java/org/apache/lucene/util/fst/FSTTester.java |   301 +-
 .../lucene/analysis/TestLookaheadTokenFilter.java  |    94 +-
 .../apache/lucene/analysis/TestMockAnalyzer.java   |   307 +-
 .../apache/lucene/analysis/TestMockCharFilter.java |    54 +-
 .../lucene/analysis/TestMockSynonymFilter.java     |   199 +-
 .../org/apache/lucene/analysis/TestPosition.java   |     5 +-
 .../lucene/analysis/TrivialLookaheadFilter.java    |    20 +-
 .../asserting/TestAssertingDocValuesFormat.java    |     2 +-
 .../codecs/asserting/TestAssertingNormsFormat.java |     4 +-
 .../asserting/TestAssertingPostingsFormat.java     |     2 +-
 .../asserting/TestAssertingStoredFieldsFormat.java |     4 +-
 .../asserting/TestAssertingTermVectorsFormat.java  |     9 +-
 .../TestCompressingStoredFieldsFormat.java         |    78 +-
 .../TestCompressingTermVectorsFormat.java          |    22 +-
 .../lucene/index/TestAssertingLeafReader.java      |    20 +-
 .../apache/lucene/index/TestForceMergePolicy.java  |     3 +-
 .../apache/lucene/mockfile/TestDisableFsyncFS.java |    16 +-
 .../org/apache/lucene/mockfile/TestExtrasFS.java   |    18 +-
 .../apache/lucene/mockfile/TestHandleLimitFS.java  |    21 +-
 .../lucene/mockfile/TestHandleTrackingFS.java      |    52 +-
 .../org/apache/lucene/mockfile/TestLeakFS.java     |    31 +-
 .../org/apache/lucene/mockfile/TestShuffleFS.java  |    55 +-
 .../org/apache/lucene/mockfile/TestVerboseFS.java  |    72 +-
 .../lucene/mockfile/TestVirusCheckingFS.java       |    11 +-
 .../org/apache/lucene/mockfile/TestWindowsFS.java  |    88 +-
 .../lucene/search/TestBaseExplanationTestCase.java |    66 +-
 .../lucene/store/TestMockDirectoryWrapper.java     |    35 +-
 .../src/test/org/apache/lucene/util/SorePoint.java |     7 +-
 .../lucene/util/TestBeforeAfterOverrides.java      |    18 +-
 .../org/apache/lucene/util/TestCodecReported.java  |     5 +-
 .../util/TestExceptionInBeforeClassHooks.java      |    83 +-
 .../org/apache/lucene/util/TestExpectThrows.java   |   128 +-
 .../lucene/util/TestFailIfDirectoryNotClosed.java  |    10 +-
 .../lucene/util/TestFailIfUnreferencedFiles.java   |    15 +-
 .../org/apache/lucene/util/TestGroupFiltering.java |    12 +-
 .../org/apache/lucene/util/TestJUnitRuleOrder.java |    40 +-
 .../test/org/apache/lucene/util/TestJvmInfo.java   |    28 +-
 .../apache/lucene/util/TestMaxFailuresRule.java    |   137 +-
 .../org/apache/lucene/util/TestPleaseFail.java     |    35 +
 .../util/TestRamUsageTesterOnWildAnimals.java      |     8 +-
 .../apache/lucene/util/TestReproduceMessage.java   |   184 +-
 .../util/TestReproduceMessageWithRepeated.java     |    17 +-
 .../util/TestRunWithRestrictedPermissions.java     |    17 +-
 .../apache/lucene/util/TestSeedFromUncaught.java   |    22 +-
 .../lucene/util/TestSetupTeardownChaining.java     |    33 +-
 .../org/apache/lucene/util/TestSysoutsLimits.java  |    39 +-
 .../lucene/util/TestWorstCaseTestBehavior.java     |    44 +-
 .../org/apache/lucene/util/WithNestedTests.java    |   154 +-
 settings.gradle                                    |     9 +-
 solr/.gitignore                                    |     5 +-
 solr/CHANGES.txt                                   |   335 +-
 solr/NOTICE.txt                                    |    25 +-
 solr/bin/oom_solr.sh                               |    14 +-
 solr/bin/solr                                      |    66 +-
 solr/bin/solr.cmd                                  |    10 +-
 solr/bin/solr.in.cmd                               |     2 +-
 solr/bin/solr.in.sh                                |    22 +-
 .../org/apache/solr/schema/ICUCollationField.java  |     4 +-
 .../apache/solr/schema/TestICUCollationField.java  |     2 +-
 solr/contrib/clustering/build.gradle               |     6 +-
 .../handler/clustering/ClusteringComponent.java    |   652 +-
 .../solr/handler/clustering/ClusteringEngine.java  |    41 -
 .../solr/handler/clustering/ClusteringParams.java  |    35 -
 .../clustering/DocumentClusteringEngine.java       |    47 -
 .../org/apache/solr/handler/clustering/Engine.java |   195 +
 .../solr/handler/clustering/EngineContext.java     |   177 +
 .../solr/handler/clustering/EngineEntry.java       |    80 +
 .../solr/handler/clustering/EngineParameters.java  |   353 +
 .../handler/clustering/FlatKeysAttrVisitor.java    |   194 +
 .../solr/handler/clustering/InputDocument.java     |    67 +
 .../handler/clustering/PathResourceLookup.java     |    80 +
 .../handler/clustering/SearchClusteringEngine.java |    52 -
 .../clustering/carrot2/CarrotClusteringEngine.java |   565 -
 .../handler/clustering/carrot2/CarrotParams.java   |    73 -
 .../carrot2/LuceneCarrot2StemmerFactory.java       |   246 -
 .../carrot2/LuceneCarrot2TokenizerFactory.java     |   167 -
 .../clustering/carrot2/SolrResourceLocator.java    |   142 -
 .../SolrStopwordsCarrot2LexicalDataFactory.java    |   140 -
 .../handler/clustering/carrot2/package-info.java   |    25 -
 .../solr/handler/clustering/package-info.java      |    12 +-
 ....carrot2.clustering.ClusteringAlgorithmProvider |     3 +
 .../carrot2/mock-external-attrs-attributes.xml     |    10 -
 .../conf/clustering/carrot2/stoplabels.mt          |     1 -
 .../conf/clustering/carrot2/stopwords.mt           |     1 -
 .../conf/clustering/custom/stoplabels.mt           |     1 -
 .../conf/clustering/custom/stopwords.mt            |     1 -
 .../collection1/conf/mapping-ISOLatin1Accent.txt   |   246 -
 .../clustering/solr/collection1/conf/schema.xml    |   335 +-
 .../solr/collection1/conf/solrconfig.xml           |   423 +-
 .../clustering/solr/collection1/conf/spellings.txt |     2 -
 .../clustering/solr/collection1/conf/stopwords.txt |     5 +-
 .../clustering/solr/collection1/conf/synonyms.txt  |    31 -
 .../english.stoplabels.utf8                        |     1 +
 .../english.stopwords.utf8                         |     2 +
 solr/contrib/clustering/src/test-files/log4j2.xml  |    43 +
 ...ComponentDistributedTest-testLingoAlgorithm.txt |    17 +
 ...ngComponentDistributedTest-testStcAlgorithm.txt |    10 +
 ...ngComponentTest-testCustomLanguageResources.txt |     2 +
 ...steringComponentTest-testDefaultEngineOrder.txt |     2 +
 ...ClusteringComponentTest-testKmeansAlgorithm.txt |     8 +
 .../ClusteringComponentTest-testLingoAlgorithm.txt |    17 +
 ...eringComponentTest-testParamDefaultLanguage.txt |     2 +
 ...steringComponentTest-testParamLanguageField.txt |     9 +
 ...lusteringComponentTest-testParamOtherTopics.txt |    12 +
 ...eringComponentTest-testParamSubclusters-off.txt |     4 +
 ...teringComponentTest-testParamSubclusters-on.txt |    13 +
 ...usteringComponentTest-testPassingAttributes.txt |     2 +
 ...nentTest-testPassingAttributesViaSolrConfig.txt |     2 +
 .../ClusteringComponentTest-testStcAlgorithm.txt   |    10 +
 .../clustering/AbstractClusteringTestCase.java     |   250 -
 .../ClusteringComponentDistributedTest.java        |   130 +
 .../clustering/ClusteringComponentTest.java        |   442 +-
 .../DistributedClusteringComponentTest.java        |    54 -
 .../clustering/EchoClusteringAlgorithm.java        |    62 +
 .../EchoClusteringAlgorithmProvider.java           |    34 +
 .../clustering/MockClusteringAlgorithm.java        |   129 +
 .../MockClusteringAlgorithmProvider.java           |    31 +
 .../clustering/MockDocumentClusteringEngine.java   |    42 -
 .../handler/clustering/ResourceCheckAlgorithm.java |    74 +
 .../clustering/ResourceCheckAlgorithmProvider.java |    31 +
 .../apache/solr/handler/clustering/SampleData.java |   146 +
 .../carrot2/CarrotClusteringEngineTest.java        |   542 -
 .../carrot2/DuplicatingStemmerFactory.java         |    33 -
 .../carrot2/DuplicatingTokenizerFactory.java       |    51 -
 .../carrot2/EchoClusteringAlgorithm.java           |    76 -
 .../carrot2/EchoStemsClusteringAlgorithm.java      |    74 -
 .../carrot2/EchoTokensClusteringAlgorithm.java     |    68 -
 .../LexicalResourcesCheckClusteringAlgorithm.java  |    79 -
 .../carrot2/MockClusteringAlgorithm.java           |   103 -
 .../extraction/ExtractingDocumentLoader.java       |     2 +-
 solr/contrib/ltr/build.gradle                      |     1 -
 .../src/java/org/apache/solr/ltr/LTRRescorer.java  |   153 +-
 .../java/org/apache/solr/ltr/LTRScoringQuery.java  |     4 +
 .../solr/ltr/SolrQueryRequestContextUtils.java     |    12 +-
 .../apache/solr/ltr/interleaving/Interleaving.java |    46 +
 .../solr/ltr/interleaving/InterleavingResult.java  |    42 +
 .../ltr/interleaving/LTRInterleavingQuery.java     |    75 +
 .../ltr/interleaving/LTRInterleavingRescorer.java  |   162 +
 .../interleaving/LTRInterleavingScoringQuery.java  |    53 +
 .../OriginalRankingLTRScoringQuery.java            |    33 +
 .../algorithms/TeamDraftInterleaving.java          |   127 +
 .../ltr/interleaving/algorithms/package-info.java  |    21 +
 .../apache/solr/ltr/interleaving/package-info.java |    21 +
 .../LTRFeatureLoggerTransformerFactory.java        |   187 +-
 .../LTRInterleavingTransformerFactory.java         |   114 +
 .../apache/solr/ltr/search/LTRQParserPlugin.java   |   159 +-
 .../java/org/apache/solr/ltr/search/LTRQuery.java  |    80 +
 solr/contrib/ltr/src/java/overview.html            |     2 +-
 .../solr/collection1/conf/solrconfig-ltr.xml       |     9 +
 .../org/apache/solr/ltr/TestLTRQParserExplain.java |   160 +
 .../org/apache/solr/ltr/TestLTRQParserPlugin.java  |    16 +-
 .../apache/solr/ltr/TestLTRReRankingPipeline.java  |     3 +-
 .../org/apache/solr/ltr/TestLTRScoringQuery.java   |     3 +-
 .../test/org/apache/solr/ltr/TestLTRWithSort.java  |   103 +
 .../test/org/apache/solr/ltr/TestRerankBase.java   |    17 +-
 .../interleaving/TestLTRQParserInterleaving.java   |   206 +
 .../algorithms/TeamDraftInterleavingTest.java      |   170 +
 .../apache/solr/ltr/norm/TestMinMaxNormalizer.java |     5 +-
 .../solr/ltr/norm/TestStandardNormalizer.java      |     5 +-
 .../transform/TestFeatureLoggerTransformer.java    |   400 +
 .../transform/TestInterleavingTransformer.java     |   277 +
 solr/contrib/prometheus-exporter/bin/solr-exporter |    45 +-
 .../prometheus-exporter/bin/solr-exporter.cmd      |    15 +-
 solr/contrib/prometheus-exporter/build.gradle      |    51 +-
 .../conf/grafana-solr-dashboard.json               | 11238 +++--
 solr/contrib/prometheus-exporter/conf/log4j2.xml   |    40 +
 .../conf/solr-exporter-config.xml                  |  1575 +-
 .../collector/SchedulerMetricsCollector.java       |     2 +-
 .../prometheus/exporter/MetricsConfiguration.java  |   110 +-
 .../solr/prometheus/exporter/MetricsQuery.java     |    22 +-
 .../prometheus/exporter/MetricsQueryTemplate.java  |   129 +
 .../exporter/PrometheusExporterSettings.java       |     2 +-
 .../solr/prometheus/exporter/SolrExporter.java     |    19 +-
 .../solr/prometheus/scraper/SolrCloudScraper.java  |    16 +-
 .../test-files/conf/test-config-with-templates.xml |   222 +
 .../src/test-files/query-metrics.json              |    91 +
 .../prometheus/PrometheusExporterTestBase.java     |     1 +
 .../exporter/MetricsQueryTemplateTest.java         |   127 +
 .../org/apache/solr/prometheus/utils/Helpers.java  |    13 +-
 solr/contrib/velocity/build.gradle                 |    33 -
 .../java/org/apache/solr/response/PageTool.java    |    92 -
 .../solr/response/SolrVelocityResourceLoader.java  |    61 -
 .../solr/response/VelocityResponseWriter.java      |   468 -
 .../src/java/org/apache/solr/response/package.html |    23 -
 solr/contrib/velocity/src/java/overview.html       |    21 -
 .../velocity/src/resources/VM_global_library.vm    |     4 -
 solr/contrib/velocity/src/resources/_macros.vm     |    70 -
 solr/contrib/velocity/src/resources/macros.vm      |     3 -
 .../velocity/src/resources/velocity/_default.vm    |    14 -
 .../velocity/src/resources/velocity/browse.vm      |    73 -
 .../velocity/src/resources/velocity/error.vm       |     4 -
 .../velocity/src/resources/velocity/facets.vm      |    23 -
 .../velocity/src/resources/velocity/footer.vm      |    19 -
 .../velocity/src/resources/velocity/head.vm        |   185 -
 .../contrib/velocity/src/resources/velocity/hit.vm |    27 -
 .../velocity/src/resources/velocity/layout.vm      |    19 -
 .../src/resources/velocity/resources.properties    |     6 -
 .../src/resources/velocity/results_list.vm         |     3 -
 .../velocity/src/test-files/velocity/file.vm       |     1 -
 .../velocity/solr/collection1/conf/schema.xml      |    26 -
 .../velocity/solr/collection1/conf/solrconfig.xml  |    52 -
 .../solr/collection1/conf/velocity-init.properties |    18 -
 .../collection1/conf/velocity/VM_global_library.vm |     3 -
 .../solr/collection1/conf/velocity/encoding.vm     |     1 -
 .../solr/collection1/conf/velocity/layout.vm       |     1 -
 .../solr/collection1/conf/velocity/locale.vm       |     1 -
 .../collection1/conf/velocity/locale_number.vm     |     1 -
 .../solr/collection1/conf/velocity/macros.vm       |     3 -
 .../solr/collection1/conf/velocity/numFound.vm     |     1 -
 .../collection1/conf/velocity/outside_the_box.vm   |     4 -
 .../solr/collection1/conf/velocity/resource_get.vm |     1 -
 .../conf/velocity/sandbox_intersection.vm          |     5 -
 .../conf/velocity/test_macro_legacy_support.vm     |     1 -
 .../conf/velocity/test_macro_overridden.vm         |     1 -
 .../conf/velocity/test_macro_visible.vm            |     1 -
 solr/contrib/velocity/src/test/custom_tool.vm      |    19 -
 solr/contrib/velocity/src/test/foreach.vm          |    14 -
 .../test/org/apache/solr/velocity/MockTool.java    |    34 -
 .../solr/velocity/VelocityResponseWriterTest.java  |   318 -
 .../src/test/velocity/resources.properties         |    18 -
 .../src/test/velocity/resources_en_UK.properties   |    18 -
 solr/core/build.gradle                             |     2 -
 .../solr/analysis/LowerCaseTokenizerFactory.java   |     2 +-
 .../analysis/ReversedWildcardFilterFactory.java    |     2 +-
 .../org/apache/solr/analysis/TokenizerChain.java   |     6 +-
 .../src/java/org/apache/solr/api/AnnotatedApi.java |    34 +-
 .../org/apache/solr/api/ConfigurablePlugin.java    |    33 +
 .../apache/solr/api/ContainerPluginsRegistry.java  |   485 +
 .../apache/solr/api/CustomContainerPlugins.java    |   354 -
 .../src/java/org/apache/solr/api/PayloadObj.java   |     4 +-
 .../src/java/org/apache/solr/api/V2HttpCall.java   |     2 +-
 .../apache/solr/cloud/ActiveReplicaWatcher.java    |     4 +-
 .../apache/solr/cloud/CloudConfigSetService.java   |    34 +-
 .../org/apache/solr/cloud/CloudDescriptor.java     |     2 +-
 .../src/java/org/apache/solr/cloud/CloudUtil.java  |    20 +-
 .../org/apache/solr/cloud/ClusterSingleton.java    |    73 +
 .../java/org/apache/solr/cloud/LeaderElector.java  |    11 +-
 .../src/java/org/apache/solr/cloud/Overseer.java   |    31 +-
 .../OverseerCollectionConfigSetProcessor.java      |    11 +-
 .../cloud/OverseerConfigSetMessageHandler.java     |    24 +-
 .../apache/solr/cloud/OverseerTaskProcessor.java   |    27 +-
 .../org/apache/solr/cloud/RecoveryStrategy.java    |   170 +-
 .../org/apache/solr/cloud/ReplicateFromLeader.java |    13 +-
 .../solr/cloud/ShardLeaderElectionContext.java     |    10 +-
 .../solr/cloud/ShardLeaderElectionContextBase.java |     4 +-
 .../java/org/apache/solr/cloud/ZkController.java   |   125 +-
 .../java/org/apache/solr/cloud/ZkShardTerms.java   |    91 +-
 .../apache/solr/cloud/ZkSolrResourceLoader.java    |     7 +-
 .../solr/cloud/api/collections/AddReplicaCmd.java  |    42 +-
 .../apache/solr/cloud/api/collections/Assign.java  |   122 +-
 .../solr/cloud/api/collections/BackupCmd.java      |     2 +-
 .../cloud/api/collections/CreateCollectionCmd.java |    85 +-
 .../cloud/api/collections/DeleteCollectionCmd.java |    25 +-
 .../solr/cloud/api/collections/MoveReplicaCmd.java |    21 -
 .../OverseerCollectionMessageHandler.java          |    23 +-
 .../solr/cloud/api/collections/ReplaceNodeCmd.java |     5 +-
 .../solr/cloud/api/collections/RestoreCmd.java     |     8 +-
 .../solr/cloud/api/collections/SplitShardCmd.java  |    15 +-
 .../apache/solr/cloud/overseer/SliceMutator.java   |    18 +-
 .../org/apache/solr/cloud/rule/ImplicitSnitch.java |    65 -
 .../apache/solr/cloud/rule/ReplicaAssigner.java    |   452 -
 .../src/java/org/apache/solr/cloud/rule/Rule.java  |   395 -
 .../solr/cloud/rule/ServerSnitchContext.java       |    59 -
 .../org/apache/solr/cloud/rule/package-info.java   |    23 -
 .../src/java/org/apache/solr/cluster/Cluster.java  |    50 +
 .../src/java/org/apache/solr/cluster/Node.java     |    25 +
 .../src/java/org/apache/solr/cluster/Replica.java  |    61 +
 .../src/java/org/apache/solr/cluster/Shard.java    |    60 +
 .../org/apache/solr/cluster/SolrCollection.java    |    83 +
 .../apache/solr/cluster/events/ClusterEvent.java   |    47 +
 .../solr/cluster/events/ClusterEventListener.java  |    36 +
 .../solr/cluster/events/ClusterEventProducer.java  |    62 +
 .../cluster/events/ClusterEventProducerBase.java   |   107 +
 .../events/ClusterPropertiesChangedEvent.java      |    33 +
 .../solr/cluster/events/CollectionsAddedEvent.java |    33 +
 .../cluster/events/CollectionsRemovedEvent.java    |    32 +
 .../apache/solr/cluster/events/NoOpProducer.java   |    51 +
 .../apache/solr/cluster/events/NodesDownEvent.java |    32 +
 .../apache/solr/cluster/events/NodesUpEvent.java   |    32 +
 .../events/impl/ClusterEventProducerFactory.java   |   203 +
 .../impl/CollectionsRepairEventListener.java       |   263 +
 .../events/impl/DefaultClusterEventProducer.java   |   231 +
 .../impl/DelegatingClusterEventProducer.java       |   141 +
 .../solr/cluster/events/impl/package-info.java     |    23 +
 .../apache/solr/cluster/events/package-info.java   |    23 +
 .../java/org/apache/solr/cluster/package-info.java |    28 +
 .../solr/cluster/placement/AttributeFetcher.java   |    70 +
 .../solr/cluster/placement/AttributeValues.java    |    44 +
 .../solr/cluster/placement/CollectionMetrics.java  |    32 +
 .../org/apache/solr/cluster/placement/Metric.java  |    42 +
 .../apache/solr/cluster/placement/NodeMetric.java  |    54 +
 .../solr/cluster/placement/PlacementException.java |    48 +
 .../solr/cluster/placement/PlacementPlan.java      |    43 +
 .../cluster/placement/PlacementPlanFactory.java    |    51 +
 .../solr/cluster/placement/PlacementPlugin.java    |    51 +
 .../cluster/placement/PlacementPluginConfig.java   |    28 +
 .../cluster/placement/PlacementPluginFactory.java  |    69 +
 .../solr/cluster/placement/PlacementRequest.java   |    64 +
 .../solr/cluster/placement/ReplicaMetric.java      |    24 +
 .../solr/cluster/placement/ReplicaMetrics.java     |    32 +
 .../solr/cluster/placement/ReplicaPlacement.java   |    56 +
 .../solr/cluster/placement/ShardMetrics.java       |    32 +
 .../placement/impl/AttributeFetcherImpl.java       |   223 +
 .../placement/impl/AttributeValuesImpl.java        |    79 +
 .../placement/impl/CollectionMetricsBuilder.java   |   164 +
 .../impl/DelegatingPlacementPluginFactory.java     |    53 +
 .../solr/cluster/placement/impl/MetricImpl.java    |   138 +
 .../cluster/placement/impl/NodeMetricImpl.java     |   110 +
 .../placement/impl/PlacementPlanFactoryImpl.java   |    40 +
 .../cluster/placement/impl/PlacementPlanImpl.java  |    55 +
 .../impl/PlacementPluginAssignStrategy.java        |    70 +
 .../impl/PlacementPluginFactoryLoader.java         |    79 +
 .../placement/impl/PlacementRequestImpl.java       |    98 +
 .../cluster/placement/impl/ReplicaMetricImpl.java  |    41 +
 .../placement/impl/ReplicaPlacementImpl.java       |    88 +
 .../impl/SimpleClusterAbstractionsImpl.java        |   436 +
 .../solr/cluster/placement/impl/package-info.java  |    22 +
 .../solr/cluster/placement/package-info.java       |    40 +
 .../placement/plugins/AffinityPlacementConfig.java |    56 +
 .../plugins/AffinityPlacementFactory.java          |   570 +
 .../plugins/MinimizeCoresPlacementFactory.java     |   127 +
 .../placement/plugins/RandomPlacementFactory.java  |    93 +
 .../cluster/placement/plugins/package-info.java    |    21 +
 .../java/org/apache/solr/core/BlobRepository.java  |     3 +-
 .../apache/solr/core/CachingDirectoryFactory.java  |    15 +-
 .../src/java/org/apache/solr/core/CloudConfig.java |     2 +-
 .../org/apache/solr/core/ClusterSingletons.java    |   193 +
 .../src/java/org/apache/solr/core/ConfigSet.java   |    13 +-
 .../org/apache/solr/core/ConfigSetService.java     |    30 +-
 .../java/org/apache/solr/core/CoreContainer.java   |   330 +-
 .../java/org/apache/solr/core/CoreDescriptor.java  |     2 +-
 .../apache/solr/core/DelegatingEventListener.java  |    55 +
 .../java/org/apache/solr/core/MetricsConfig.java   |   127 +-
 .../src/java/org/apache/solr/core/NodeConfig.java  |    38 +-
 .../src/java/org/apache/solr/core/PluginBag.java   |    11 +-
 .../src/java/org/apache/solr/core/PluginInfo.java  |     2 +-
 .../org/apache/solr/core/RateLimiterConfig.java    |    53 +
 .../org/apache/solr/core/SchemaCodecFactory.java   |     6 +-
 .../src/java/org/apache/solr/core/SolrConfig.java  |    70 +-
 .../src/java/org/apache/solr/core/SolrCore.java    |   218 +-
 .../src/java/org/apache/solr/core/SolrCores.java   |   226 +-
 .../src/java/org/apache/solr/core/SolrPaths.java   |    59 -
 .../org/apache/solr/core/SolrResourceLoader.java   |   229 +-
 .../java/org/apache/solr/core/SolrXmlConfig.java   |    96 +-
 .../apache/solr/core/StandardDirectoryFactory.java |    15 +-
 .../apache/solr/core/TransientSolrCoreCache.java   |     4 +
 .../solr/core/TransientSolrCoreCacheDefault.java   |    16 +-
 .../solr/core/TransientSolrCoreCacheFactory.java   |    16 +-
 .../java/org/apache/solr/core/XmlConfigFile.java   |    30 +-
 .../src/java/org/apache/solr/core/ZkContainer.java |    32 +-
 .../core/backup/repository/BackupRepository.java   |     4 +-
 .../apache/solr/filestore/DistribPackageStore.java |     2 +-
 .../solr/handler/AnalysisRequestHandlerBase.java   |     6 +-
 .../java/org/apache/solr/handler/ClusterAPI.java   |   269 +
 .../org/apache/solr/handler/CollectionsAPI.java    |    63 +
 .../solr/handler/ContentStreamHandlerBase.java     |    65 +-
 .../solr/handler/FieldAnalysisRequestHandler.java  |     2 -
 .../java/org/apache/solr/handler/IndexFetcher.java |     4 +-
 .../apache/solr/handler/ReplicationHandler.java    |   163 +-
 .../apache/solr/handler/RequestHandlerBase.java    |     6 +-
 .../org/apache/solr/handler/SchemaHandler.java     |    39 +
 .../org/apache/solr/handler/SolrConfigHandler.java |    37 +-
 .../solr/handler/SolrDefaultStreamFactory.java     |     2 +
 .../apache/solr/handler/admin/BackupCoreOp.java    |     3 +-
 .../apache/solr/handler/admin/ClusterStatus.java   |    26 +-
 .../solr/handler/admin/CollectionHandlerApi.java   |    53 -
 .../solr/handler/admin/CollectionsHandler.java     |   127 +-
 .../solr/handler/admin/ConfigSetsHandler.java      |   247 +-
 .../solr/handler/admin/ConfigSetsHandlerApi.java   |    93 -
 .../solr/handler/admin/ContainerPluginsApi.java    |    39 +-
 .../solr/handler/admin/CoreAdminOperation.java     |     2 +-
 .../solr/handler/admin/HealthCheckHandler.java     |     2 +-
 .../solr/handler/admin/LukeRequestHandler.java     |     6 +-
 .../apache/solr/handler/admin/MetricsHandler.java  |    42 +-
 .../solr/handler/admin/MetricsHistoryHandler.java  |    18 +-
 .../apache/solr/handler/admin/PrepRecoveryOp.java  |     2 +-
 .../solr/handler/admin/RebalanceLeaders.java       |     4 +-
 .../solr/handler/admin/RequestSyncShardOp.java     |     1 -
 .../apache/solr/handler/admin/RestoreCoreOp.java   |     3 +-
 .../org/apache/solr/handler/admin/StatusOp.java    |     5 +-
 .../solr/handler/admin/SystemInfoHandler.java      |     7 +-
 .../solr/handler/admin/ZookeeperInfoHandler.java   |    10 +-
 .../solr/handler/admin/ZookeeperReadAPI.java       |    33 +-
 .../component/PhrasesIdentificationComponent.java  |     2 +-
 .../solr/handler/component/QueryComponent.java     |     5 -
 .../handler/component/QueryElevationComponent.java |     4 +-
 .../handler/component/RealTimeGetComponent.java    |   413 +-
 .../solr/handler/component/SearchHandler.java      |    11 +-
 .../solr/handler/component/SuggestComponent.java   |    74 +-
 .../solr/handler/component/TermsComponent.java     |    46 -
 .../solr/handler/tagger/TaggerRequestHandler.java  |     2 +-
 .../solr/index/SlowCompositeReaderWrapper.java     |     6 +
 .../org/apache/solr/logging/DeprecationLog.java    |    53 +
 .../org/apache/solr/metrics/MetricSuppliers.java   |   267 +-
 .../java/org/apache/solr/metrics/MetricsMap.java   |    69 +-
 .../org/apache/solr/metrics/SolrMetricManager.java |    89 +-
 .../apache/solr/metrics/SolrMetricsContext.java    |    32 +-
 .../solr/metrics/reporters/solr/SolrReporter.java  |     2 +-
 .../apache/solr/packagemanager/PackageManager.java |     3 +-
 .../java/org/apache/solr/parser/CharStream.java    |   115 -
 .../org/apache/solr/parser/FastCharStream.java     |   148 -
 .../org/apache/solr/parser/ParseException.java     |    38 +-
 .../java/org/apache/solr/parser/QueryParser.java   |   765 +-
 .../src/java/org/apache/solr/parser/QueryParser.jj |     2 +
 .../solr/parser/QueryParserTokenManager.java       |   559 +-
 .../apache/solr/parser/SolrQueryParserBase.java    |     4 +-
 .../src/java/org/apache/solr/parser/Token.java     |     7 +-
 .../java/org/apache/solr/parser/TokenMgrError.java |    24 +-
 .../src/java/org/apache/solr/pkg/PackageAPI.java   |    46 +-
 .../solr/pkg/PackageListeningClassLoader.java      |     2 +-
 .../java/org/apache/solr/pkg/PackageLoader.java    |     8 +
 .../org/apache/solr/pkg/PackagePluginHolder.java   |    70 +-
 .../apache/solr/request/macro/MacroExpander.java   |    35 +-
 .../apache/solr/response/BinaryResponseWriter.java |     3 +
 .../solr/response/GeoJSONResponseWriter.java       |     7 -
 .../apache/solr/response/JSONResponseWriter.java   |     7 -
 .../java/org/apache/solr/response/JSONWriter.java  |    30 -
 .../solr/response/PHPSerializedResponseWriter.java |    10 +-
 .../org/apache/solr/response/SchemaXmlWriter.java  |     5 -
 .../solr/response/TabularResponseWriter.java       |     7 -
 .../apache/solr/response/TextResponseWriter.java   |    11 +-
 .../java/org/apache/solr/response/XMLWriter.java   |    20 -
 .../response/transform/ChildDocTransformer.java    |    76 +-
 .../transform/ChildDocTransformerFactory.java      |    12 +-
 .../org/apache/solr/rest/BaseSolrResource.java     |   133 +-
 .../src/java/org/apache/solr/rest/DELETEable.java  |    26 -
 .../src/java/org/apache/solr/rest/GETable.java     |    26 -
 .../java/org/apache/solr/rest/ManagedResource.java |    23 +-
 .../apache/solr/rest/ManagedResourceStorage.java   |     4 +-
 .../src/java/org/apache/solr/rest/POSTable.java    |    26 -
 .../src/java/org/apache/solr/rest/PUTable.java     |    26 -
 .../src/java/org/apache/solr/rest/RestManager.java |   323 +-
 .../org/apache/solr/rest/SolrSchemaRestApi.java    |    78 -
 .../java/org/apache/solr/rest/package-info.java    |     2 +-
 .../analysis/BaseManagedTokenFilterFactory.java    |     6 +-
 .../analysis/ManagedSynonymFilterFactory.java      |     8 +-
 .../analysis/ManagedSynonymGraphFilterFactory.java |     8 +-
 .../solr/rest/schema/analysis/package-info.java    |     3 +-
 .../org/apache/solr/rest/schema/package-info.java  |     2 +-
 .../schema/AbstractSpatialPrefixTreeFieldType.java |    67 +
 .../org/apache/solr/schema/CollationField.java     |     2 +-
 .../java/org/apache/solr/schema/CurrencyField.java |     2 +-
 .../org/apache/solr/schema/CurrencyFieldType.java  |     4 +-
 .../apache/solr/schema/ExchangeRateProvider.java   |     2 +-
 .../org/apache/solr/schema/ExternalFileField.java  |     5 +-
 .../src/java/org/apache/solr/schema/FieldType.java |     8 +-
 .../apache/solr/schema/FieldTypePluginLoader.java  |    91 +-
 .../solr/schema/FileExchangeRateProvider.java      |     2 +-
 .../java/org/apache/solr/schema/IndexSchema.java   |   225 +-
 .../org/apache/solr/schema/IndexSchemaFactory.java |    68 +-
 .../org/apache/solr/schema/ManagedIndexSchema.java |    30 +-
 .../solr/schema/ManagedIndexSchemaFactory.java     |    17 +-
 .../java/org/apache/solr/schema/NestPathField.java |     1 +
 .../solr/schema/OpenExchangeRatesOrgProvider.java  |     2 +-
 .../java/org/apache/solr/schema/SchemaField.java   |    11 +
 .../java/org/apache/solr/schema/SchemaManager.java |    20 +-
 .../apache/solr/schema/ZkIndexSchemaReader.java    |    21 +-
 .../java/org/apache/solr/search/CacheConfig.java   |    18 +-
 .../java/org/apache/solr/search/CaffeineCache.java |     2 +-
 .../solr/search/CollapsingQParserPlugin.java       |  1035 +-
 .../apache/solr/search/ExtendedDismaxQParser.java  |     2 +-
 .../org/apache/solr/search/FunctionQParser.java    |    38 +-
 .../src/java/org/apache/solr/search/Insanity.java  |     3 +-
 .../org/apache/solr/search/JoinQParserPlugin.java  |    14 +-
 .../org/apache/solr/search/SolrCoreParser.java     |    13 +-
 .../apache/solr/search/SolrDocumentFetcher.java    |     2 +-
 .../org/apache/solr/search/SolrFieldCacheBean.java |     4 +-
 .../org/apache/solr/search/SolrIndexSearcher.java  |    22 +-
 .../org/apache/solr/search/SolrReturnFields.java   |    29 +
 .../org/apache/solr/search/TermsQParserPlugin.java |     1 +
 .../org/apache/solr/search/TopLevelJoinQuery.java  |    28 +-
 .../org/apache/solr/search/facet/FacetContext.java |    38 +
 .../org/apache/solr/search/facet/FacetField.java   |     5 +-
 .../org/apache/solr/search/facet/FacetModule.java  |     2 +
 .../org/apache/solr/search/facet/FacetParser.java  |     7 +-
 .../solr/search/facet/FacetRangeProcessor.java     |    58 +-
 .../apache/solr/search/facet/RelatednessAgg.java   |     7 +-
 .../java/org/apache/solr/search/facet/SlotAcc.java |    20 +-
 .../distance/GeoDistValueSourceParser.java         |    68 +-
 .../solr/search/join/GraphEdgeCollector.java       |     2 +-
 .../similarities/LegacyBM25SimilarityFactory.java  |     2 +-
 .../similarities/SchemaSimilarityFactory.java      |     2 +-
 .../apache/solr/search/stats/ExactStatsCache.java  |     6 +
 .../ConfigurableInternodeAuthHadoopPlugin.java     |     3 +-
 .../org/apache/solr/security/HadoopAuthPlugin.java |     2 +-
 .../org/apache/solr/security/JWTAuthPlugin.java    |     8 +-
 .../solr/security/MultiDestinationAuditLogger.java |     4 +-
 .../java/org/apache/solr/servlet/HttpSolrCall.java |    88 +-
 .../org/apache/solr/servlet/QueryRateLimiter.java  |   107 +-
 .../org/apache/solr/servlet/RateLimitManager.java  |    31 +-
 .../apache/solr/servlet/RequestRateLimiter.java    |    55 +-
 .../org/apache/solr/servlet/ResponseUtils.java     |     2 +-
 .../apache/solr/servlet/SolrDispatchFilter.java    |   189 +-
 .../apache/solr/servlet/SolrRequestParsers.java    |    29 +-
 .../solr/servlet/cache/HttpCacheHeaderUtil.java    |     7 +-
 .../apache/solr/spelling/SpellCheckCollator.java   |     2 +-
 .../org/apache/solr/store/blockcache/Metrics.java  |     2 +-
 .../solr/store/hdfs/HdfsLocalityReporter.java      |     2 +-
 .../apache/solr/uninverting/UninvertingReader.java |     3 +-
 .../org/apache/solr/update/AddUpdateCommand.java   |   199 +-
 .../apache/solr/update/DirectUpdateHandler2.java   |    47 +-
 .../org/apache/solr/update/DocumentBuilder.java    |    53 +-
 .../src/java/org/apache/solr/update/PeerSync.java  |    30 +-
 .../java/org/apache/solr/update/SolrCoreState.java |    75 +-
 .../org/apache/solr/update/SolrIndexSplitter.java  |     4 +-
 .../java/org/apache/solr/update/UpdateHandler.java |     2 +-
 .../src/java/org/apache/solr/update/UpdateLog.java |    12 +
 .../processor/AtomicUpdateDocumentMerger.java      |   266 +-
 .../processor/ClassificationUpdateProcessor.java   |     6 +-
 .../processor/DistributedUpdateProcessor.java      |    93 +-
 .../processor/DistributedZkUpdateProcessor.java    |    24 +-
 .../processor/NestedUpdateProcessorFactory.java    |     2 +-
 .../SkipExistingDocumentsProcessorFactory.java     |    17 +-
 .../java/org/apache/solr/util/DOMConfigNode.java   |    89 +
 .../src/java/org/apache/solr/util/DOMUtil.java     |   418 -
 .../java/org/apache/solr/util/DataConfigNode.java  |   132 +
 .../src/java/org/apache/solr/util/PackageTool.java |    12 +-
 .../java/org/apache/solr/util/PayloadUtils.java    |     2 +-
 .../java/org/apache/solr/util/PropertiesUtil.java  |   151 -
 .../java/org/apache/solr/util/SafeXMLParsing.java  |     2 +-
 .../src/java/org/apache/solr/util/SolrCLI.java     |    15 +-
 .../java/org/apache/solr/util/SolrLogPostTool.java |    33 +-
 .../org/apache/solr/util/StartupLoggingUtils.java  |     2 +-
 .../org/apache/solr/util/SystemIdResolver.java     |     2 +-
 .../java/org/apache/solr/util/TestInjection.java   |    39 +
 .../solr/util/plugin/AbstractPluginLoader.java     |    21 +-
 .../apache/solr/util/plugin/MapPluginLoader.java   |     8 +-
 .../solr/util/plugin/NamedListPluginLoader.java    |     6 +-
 .../org/apache/solr/util/stats/MetricUtils.java    |   380 +-
 .../apache/solr/util/xslt/TransformerProvider.java |     2 +-
 solr/core/src/resources/ImplicitPlugins.json       |     5 +-
 ... org.apache.lucene.analysis.TokenFilterFactory} |     0
 .../MyPatternReplaceCharFilterFactory.java.txt     |    30 +
 .../{MyPlugin.java => MyPlugin.java.txt}           |     0
 .../test-files/runtimecode/MyTextField.java.txt    |    23 +
 .../MyWhitespaceTokenizerFactory.java.txt          |    28 +
 ...qHandler.java => RuntimeLibReqHandler.java.txt} |     0
 ...iter.java => RuntimeLibResponseWriter.java.txt} |     0
 ...ent.java => RuntimeLibSearchComponent.java.txt} |     0
 .../runtimecode/{TestURP.java => TestURP.java.txt} |     0
 ...VersionedURP.java => TestVersionedURP.java.txt} |     0
 .../runtimecode/payload-component.jar.bin          |   Bin 0 -> 17815 bytes
 .../test-files/runtimecode/schema-plugins.jar.bin  |   Bin 6814 -> 1461 bytes
 .../bad-schema-daterangefield-instance-options.xml |    34 +
 .../bad-schema-daterangefield-type-options.xml     |    35 +
 .../solr/collection1/conf/schema-nest.xml          |     2 +-
 .../solr/collection1/conf/solrconfig-caching.xml   |    40 -
 .../collection1/conf/solrconfig-deeppaging.xml     |    15 +-
 .../solr/collection1/conf/solrconfig-minhash.xml   |    11 +-
 .../collection1/conf/solrconfig-plugcollector.xml  |     9 +-
 .../solr/collection1/conf/solrconfig.xml           |     4 +-
 .../solr/configsets/schema-package/conf/schema.xml |    50 +
 .../configsets/schema-package/conf/solrconfig.xml  |    51 +
 .../src/test-files/solr/solr-metricsconfig.xml     |     2 +-
 .../src/test-files/solr/solr-metricsconfig1.xml    |    28 +
 solr/core/src/test-files/solr/solr.xml             |     2 +
 .../src/test/org/apache/hadoop/fs/FileUtil.java    |    10 +-
 .../datanode/fsdataset/impl/BlockPoolSlice.java    |     3 +-
 .../test/org/apache/hadoop/http/HttpServer2.java   |     3 +-
 .../org/apache/solr/BasicFunctionalityTest.java    |     2 +-
 .../src/test/org/apache/solr/CursorPagingTest.java |    95 +-
 .../apache/solr/SolrTestCaseJ4DeleteCoreTest.java  |    36 +
 .../test/org/apache/solr/TestRandomDVFaceting.java |     1 +
 .../test/org/apache/solr/TestSolrTestCaseJ4.java   |    36 -
 .../analysis/ProtectedTermFilterFactoryTest.java   |     2 +-
 .../TestReversedWildcardFilterFactory.java         |     2 +-
 .../analysis/TestWordDelimiterFilterFactory.java   |     2 +-
 .../analysis/ThrowingMockTokenFilterFactory.java   |     2 +-
 .../apache/solr/analysis/TokenizerChainTest.java   |     2 +-
 .../solr/backcompat/TestLuceneIndexBackCompat.java |     2 +-
 .../ChaosMonkeySafeLeaderWithPullReplicasTest.java |     2 +-
 .../apache/solr/cloud/ClusterStateMockUtil.java    |     6 +-
 .../solr/cloud/ClusterStateMockUtilTest.java       |    13 +-
 .../apache/solr/cloud/CollectionsAPISolrJTest.java |     1 +
 .../org/apache/solr/cloud/ConfigSetsAPITest.java   |    94 -
 .../org/apache/solr/cloud/DeleteReplicaTest.java   |     6 +-
 .../apache/solr/cloud/DistribCursorPagingTest.java |     7 -
 .../org/apache/solr/cloud/ForceLeaderTest.java     |     3 +-
 .../org/apache/solr/cloud/HttpPartitionTest.java   |    29 +-
 .../org/apache/solr/cloud/LeaderElectionTest.java  |    32 +-
 .../apache/solr/cloud/LeaderTragicEventTest.java   |   170 +-
 .../solr/cloud/MetricsHistoryIntegrationTest.java  |     1 +
 .../MetricsHistoryWithAuthIntegrationTest.java     |     2 +-
 .../solr/cloud/NestedShardedAtomicUpdateTest.java  |   194 +-
 .../org/apache/solr/cloud/NodeMutatorTest.java     |    14 +-
 .../OverseerCollectionConfigSetProcessorTest.java  |    28 +-
 .../org/apache/solr/cloud/OverseerRolesTest.java   |     2 +-
 .../test/org/apache/solr/cloud/OverseerTest.java   |   114 +-
 .../org/apache/solr/cloud/ReplaceNodeTest.java     |    39 +
 .../apache/solr/cloud/ReplicationFactorTest.java   |    58 +-
 .../org/apache/solr/cloud/RollingRestartTest.java  |     2 +-
 .../test/org/apache/solr/cloud/ShardTermsTest.java |    48 +
 .../test/org/apache/solr/cloud/SplitShardTest.java |     1 +
 .../apache/solr/cloud/TestBaseStatsCacheCloud.java |     1 +
 .../org/apache/solr/cloud/TestCloudRecovery.java   |     1 +
 .../org/apache/solr/cloud/TestConfigSetsAPI.java   |   934 +-
 .../solr/cloud/TestConfigSetsAPIExclusivity.java   |     3 +
 .../solr/cloud/TestConfigSetsAPIShareSchema.java   |    94 +
 .../solr/cloud/TestConfigSetsAPIZkFailure.java     |     1 +
 .../cloud/TestLeaderElectionWithEmptyReplica.java  |     4 +-
 .../solr/cloud/TestMiniSolrCloudClusterSSL.java    |     3 +
 .../solr/cloud/TestPullReplicaErrorHandling.java   |    23 +-
 .../solr/cloud/TestRandomRequestDistribution.java  |     5 +-
 .../org/apache/solr/cloud/TestTlogReplica.java     |     1 +
 .../src/test/org/apache/solr/cloud/ZkCLITest.java  |     8 +-
 .../org/apache/solr/cloud/ZkControllerTest.java    |    13 +-
 .../test/org/apache/solr/cloud/ZkFailoverTest.java |    35 +-
 .../org/apache/solr/cloud/ZkShardTermsTest.java    |     8 -
 .../CollectionsAPIDistributedZkTest.java           |     5 +-
 .../solr/cloud/api/collections/ShardSplitTest.java |     5 +-
 .../org/apache/solr/cloud/hdfs/HdfsTestUtil.java   |    19 +-
 .../apache/solr/cloud/rule/ImplicitSnitchTest.java |   244 -
 .../org/apache/solr/cloud/rule/RuleEngineTest.java |   323 -
 .../test/org/apache/solr/cloud/rule/RulesTest.java |   328 -
 .../solr/cluster/events/AllEventsListener.java     |    61 +
 .../cluster/events/ClusterEventProducerTest.java   |   370 +
 .../impl/CollectionsRepairEventListenerTest.java   |   164 +
 .../cluster/placement/AttributeFetcherForTest.java |    62 +
 .../apache/solr/cluster/placement/Builders.java    |   535 +
 .../solr/cluster/placement/BuildersTest.java       |   129 +
 .../placement/ClusterAbstractionsForTest.java      |   316 +
 .../impl/PlacementPluginIntegrationTest.java       |   324 +
 .../impl/SimpleClusterAbstractionsTest.java        |    89 +
 .../plugins/AffinityPlacementFactoryTest.java      |   730 +
 .../solr/core/ConfigureRecoveryStrategyTest.java   |     2 +-
 .../test/org/apache/solr/core/CoreSorterTest.java  |     4 +-
 .../apache/solr/core/DirectoryFactoriesTest.java   |   106 +
 .../test/org/apache/solr/core/MockInfoBean.java    |     2 +-
 .../org/apache/solr/core/ResourceLoaderTest.java   |    13 +-
 .../org/apache/solr/core/TestCodecSupport.java     |     2 +-
 .../org/apache/solr/core/TestCoreContainer.java    |   128 +-
 .../org/apache/solr/core/TestCoreDiscovery.java    |     3 +-
 .../org/apache/solr/core/TestCustomStream.java     |    19 -
 .../org/apache/solr/core/TestDirectoryFactory.java |   106 -
 .../test/org/apache/solr/core/TestLazyCores.java   |    10 +-
 .../org/apache/solr/core/TestMinimalConfig.java    |    45 +
 .../apache/solr/core/TestSolrConfigHandler.java    |     4 -
 .../src/test/org/apache/solr/core/TestSolrXml.java |    19 +-
 .../core/snapshots/TestSolrCloudSnapshots.java     |    13 +-
 .../solr/core/snapshots/TestSolrCoreSnapshots.java |     6 +-
 .../handler/FieldAnalysisRequestHandlerTest.java   |     4 +-
 .../org/apache/solr/handler/TestBlobHandler.java   |     3 +-
 .../org/apache/solr/handler/TestConfigReload.java  |     2 +-
 .../apache/solr/handler/TestContainerPlugin.java   |   190 +-
 .../solr/handler/TestHdfsBackupRestoreCore.java    |     7 +-
 .../solr/handler/TestReplicationHandler.java       |     2 +-
 .../org/apache/solr/handler/TestReqParamsAPI.java  |     2 +-
 .../solr/handler/TestSolrConfigHandlerCloud.java   |     4 +-
 .../handler/TestSolrConfigHandlerConcurrent.java   |     2 +-
 .../solr/handler/admin/AdminHandlersProxyTest.java |     1 +
 .../solr/handler/admin/HealthCheckHandlerTest.java |     2 +-
 .../solr/handler/admin/MetricsHandlerTest.java     |    63 +-
 .../handler/admin/MetricsHistoryHandlerTest.java   |     1 +
 .../solr/handler/admin/TestApiFramework.java       |    41 +-
 .../solr/handler/admin/TestCollectionAPIs.java     |    16 +-
 .../apache/solr/handler/admin/TestConfigsApi.java  |    23 +-
 .../solr/handler/admin/ZookeeperReadAPITest.java   |     1 +
 .../handler/component/CloudReplicaSourceTest.java  |    45 +-
 .../component/CustomTermsComponentTest.java        |   257 -
 .../component/DistributedSuggestComponentTest.java |    12 +-
 .../component/DistributedTermsComponentTest.java   |    32 +-
 .../solr/handler/component/TermsComponentTest.java |    58 +-
 .../tagger/WordLengthTaggingFilterFactory.java     |     2 +-
 .../solr/index/WrapperMergePolicyFactoryTest.java  |     2 +-
 .../apache/solr/index/hdfs/CheckHdfsIndexTest.java |     2 +
 .../org/apache/solr/metrics/MetricsConfigTest.java |    36 +-
 .../solr/metrics/MetricsDisabledCloudTest.java     |    72 +
 .../apache/solr/metrics/SolrMetricManagerTest.java |    94 +-
 .../solr/metrics/SolrMetricsIntegrationTest.java   |    18 +-
 .../solr/parser/SolrQueryParserBaseTest.java       |     1 +
 .../src/test/org/apache/solr/pkg/TestPackages.java |   268 +-
 .../org/apache/solr/request/TestStreamBody.java    |     4 -
 .../solr/request/macro/TestMacroExpander.java      |    56 +-
 .../solr/response/TestBinaryResponseWriter.java    |    16 +
 .../transform/TestChildDocTransformer.java         |    35 +-
 .../TestChildDocTransformerHierarchy.java          |    47 +
 .../org/apache/solr/rest/SolrRestletTestBase.java  |     9 +-
 .../test/org/apache/solr/rest/TestRestManager.java |   147 +-
 .../apache/solr/rest/schema/TestBulkSchemaAPI.java |   104 +-
 .../schema/TestSerializedLuceneMatchVersion.java   |     4 -
 .../analysis/TestManagedStopFilterFactory.java     |     4 -
 .../analysis/TestManagedSynonymFilterFactory.java  |     4 -
 .../TestManagedSynonymGraphFilterFactory.java      |     4 -
 .../org/apache/solr/schema/BadIndexSchemaTest.java |     5 +
 .../apache/solr/schema/CustomAnalyzerStrField.java |     4 +-
 .../org/apache/solr/schema/DateRangeFieldTest.java |     4 +
 .../solr/schema/MockExchangeRateProvider.java      |     2 +-
 .../schema/OpenExchangeRatesOrgProviderTest.java   |     2 +-
 .../solr/schema/SpatialRPTFieldTypeTest.java       |     3 +-
 .../apache/solr/schema/TestCloudSchemaless.java    |     4 -
 .../solr/schema/TestManagedSchemaThreadSafety.java |     8 +-
 .../org/apache/solr/schema/TestSchemaManager.java  |    17 +
 .../solr/schema/TestUseDocValuesAsStored.java      |     2 +-
 .../org/apache/solr/search/LargeFieldTest.java     |     2 +-
 .../apache/solr/search/SolrIndexSearcherTest.java  |   123 +
 .../solr/search/TestCollapseQParserPlugin.java     |   230 +-
 .../test/org/apache/solr/search/TestDocSet.java    |     6 +
 .../search/TestRandomCollapseQParserPlugin.java    |    53 +-
 .../solr/search/TestReRankQParserPlugin.java       |    20 +-
 .../org/apache/solr/search/TestSolr4Spatial2.java  |    78 +-
 .../org/apache/solr/search/TestSolrCoreParser.java |    14 +-
 .../org/apache/solr/search/TestXmlQParser.java     |    18 +-
 .../solr/search/facet/RangeFacetCloudTest.java     |     6 -
 .../solr/search/facet/TestCloudJSONFacetSKG.java   |    29 +-
 .../search/facet/TestCloudJSONFacetSKGEquiv.java   |    23 +-
 .../solr/search/facet/TestJsonFacetRefinement.java |    12 +-
 .../apache/solr/search/facet/TestJsonFacets.java   |    50 +-
 .../search/facet/TestJsonFacetsStatsParsing.java   |    56 +-
 .../solr/search/facet/TestJsonRangeFacets.java     |    16 +-
 .../solr/search/function/AggValueSourceTest.java   |   106 +
 .../solr/search/function/TestFunctionQuery.java    |   127 +-
 .../TestLegacyBM25SimilarityFactory.java           |     2 +-
 .../solr/search/stats/TestDefaultStatsCache.java   |     1 +
 .../solr/search/stats/TestExactStatsCache.java     |    74 +-
 .../solr/security/BasicAuthIntegrationTest.java    |     2 +-
 .../apache/solr/security/JWTAuthPluginTest.java    |    18 +-
 .../security/MultiDestinationAuditLoggerTest.java  |     5 +-
 .../apache/solr/servlet/SecurityHeadersTest.java   |    93 +
 .../solr/servlet/TestRequestRateLimiter.java       |    21 +-
 .../solr/uninverting/TestFieldCacheSort.java       |     3 +-
 .../apache/solr/update/SolrCmdDistributorTest.java |    25 +-
 .../solr/update/TestInPlaceUpdatesDistrib.java     |    24 +-
 .../solr/update/TestInPlaceUpdatesStandalone.java  |    32 +
 .../solr/update/TestNestedUpdateProcessor.java     |     2 +-
 .../update/processor/AtomicUpdateJavabinTest.java  |   370 +
 .../processor/AtomicUpdateRemovalJavabinTest.java  |   132 -
 .../solr/update/processor/AtomicUpdatesTest.java   |    76 +-
 .../CategoryRoutedAliasUpdateProcessorTest.java    |     2 +-
 .../DimensionalRoutedAliasUpdateProcessorTest.java |     2 +-
 .../update/processor/NestedAtomicUpdateTest.java   |    98 +-
 .../TimeRoutedAliasUpdateProcessorTest.java        |     2 +-
 .../src/test/org/apache/solr/util/DOMUtilTest.java |    57 -
 .../org/apache/solr/util/SolrLogPostToolTest.java  |    26 +-
 .../org/apache/solr/util/TestSafeXMLParsing.java   |     2 +-
 .../apache/solr/util/TestSolrCLIRunExample.java    |     2 +-
 .../org/apache/solr/util/TestSystemIdResolver.java |     2 +-
 .../apache/solr/util/stats/MetricUtilsTest.java    |    75 +-
 .../overseer/images/configSet-processor-flow.png   |   Bin 0 -> 37427 bytes
 solr/dev-docs/overseer/images/locking-levels.png   |   Bin 0 -> 9474 bytes
 .../overseer/images/session-lockTree-20nodes.png   |   Bin 0 -> 7608 bytes
 .../dev-docs/overseer/images/session-lockTree1.png |   Bin 0 -> 4368 bytes
 .../dev-docs/overseer/images/session-lockTree2.png |   Bin 0 -> 4515 bytes
 .../images/single-thread-clusterstate-updater.png  |   Bin 0 -> 18235 bytes
 .../overseer/images/state-change-steps.png         |   Bin 0 -> 267439 bytes
 solr/dev-docs/overseer/overseer.adoc               |   678 +
 solr/docker/Docker-FAQ.md                          |   320 +
 solr/docker/Dockerfile                             |    74 +
 solr/docker/README.md                              |   275 +
 solr/docker/build.gradle                           |   123 +
 solr/docker/docs/docker-compose.yml                |    13 +
 solr/docker/docs/docker-networking.md              |   249 +
 solr/docker/docs/precreate-collection.sh           |    20 +
 solr/docker/docs/set-heap.sh                       |    16 +
 solr/docker/include/scripts/docker-entrypoint.sh   |    34 +
 solr/docker/include/scripts/init-var-solr          |    59 +
 solr/docker/include/scripts/precreate-core         |    40 +
 solr/docker/include/scripts/run-initdb             |    28 +
 solr/docker/include/scripts/solr-create            |    63 +
 solr/docker/include/scripts/solr-demo              |    42 +
 solr/docker/include/scripts/solr-fg                |    31 +
 solr/docker/include/scripts/solr-foreground        |    12 +
 solr/docker/include/scripts/solr-precreate         |    24 +
 solr/docker/include/scripts/start-local-solr       |    21 +
 solr/docker/include/scripts/stop-local-solr        |    11 +
 solr/docker/include/scripts/wait-for-solr.sh       |    98 +
 solr/docker/include/scripts/wait-for-zookeeper.sh  |   165 +
 solr/docker/package/Dockerfile.local-package       |     3 +
 solr/docker/package/Dockerfile.release-package     |    74 +
 solr/docker/package/build.gradle                   |    36 +
 solr/docker/tests/README.md                        |     6 +
 solr/docker/tests/cases/create_bad_core/test.sh    |    16 +
 solr/docker/tests/cases/create_core/test.sh        |    24 +
 solr/docker/tests/cases/create_core_exec/test.sh   |    26 +
 .../cases/create_core_randomuser_rootgroup/test.sh |    30 +
 solr/docker/tests/cases/demo-tini/test.sh          |    25 +
 solr/docker/tests/cases/demo/test.sh               |    21 +
 .../empty-varsolr-dir-ramdomuser-rootgroup/test.sh |    44 +
 .../tests/cases/empty-varsolr-dir-solr/test.sh     |    45 +
 .../tests/cases/empty-varsolr-dir-user/test.sh     |    42 +
 .../empty-varsolr-vol-ramdomuser-rootgroup/test.sh |    42 +
 .../cases/empty-varsolr-vol-solr-nocopy/test.sh    |    48 +
 .../tests/cases/empty-varsolr-vol-solr/test.sh     |    41 +
 .../tests/cases/empty-varsolr-vol-user/test.sh     |    48 +
 solr/docker/tests/cases/gosu/test.sh               |    68 +
 solr/docker/tests/cases/initdb/test.sh             |    50 +
 solr/docker/tests/cases/precreate_core/test.sh     |    24 +
 .../precreate_core_randomuser_rootgroup/test.sh    |    29 +
 .../docker/tests/cases/test_log4j/bogus-log4j2.xml |     1 +
 solr/docker/tests/cases/test_log4j/log4j2.xml      |    76 +
 solr/docker/tests/cases/test_log4j/test.sh         |    34 +
 solr/docker/tests/cases/user_volume/test.sh        |    68 +
 solr/docker/tests/shared.sh                        |   133 +
 solr/documentation/build.gradle                    |    18 +
 .../images => documentation/src/assets}/solr.svg   |     0
 .../src/markdown}/SYSTEM_REQUIREMENTS.md           |     0
 solr/documentation/src/markdown/index.template.md  |    37 +
 .../src/markdown/online-link.template.md           |    21 +
 solr/example/files/README.md                       |   167 -
 .../browse-resources/velocity/resources.properties |    82 -
 .../velocity/resources_de_DE.properties            |    18 -
 .../velocity/resources_fr_FR.properties            |    20 -
 solr/example/files/conf/currency.xml               |    67 -
 solr/example/files/conf/elevate.xml                |    42 -
 solr/example/files/conf/email_url_types.txt        |     2 -
 solr/example/files/conf/lang/contractions_ca.txt   |     8 -
 solr/example/files/conf/lang/contractions_fr.txt   |    15 -
 solr/example/files/conf/lang/contractions_ga.txt   |     5 -
 solr/example/files/conf/lang/contractions_it.txt   |    23 -
 solr/example/files/conf/lang/hyphenations_ga.txt   |     5 -
 solr/example/files/conf/lang/stemdict_nl.txt       |     6 -
 solr/example/files/conf/lang/stoptags_ja.txt       |   420 -
 solr/example/files/conf/lang/stopwords_ar.txt      |   125 -
 solr/example/files/conf/lang/stopwords_bg.txt      |   193 -
 solr/example/files/conf/lang/stopwords_ca.txt      |   220 -
 solr/example/files/conf/lang/stopwords_cz.txt      |   172 -
 solr/example/files/conf/lang/stopwords_da.txt      |   110 -
 solr/example/files/conf/lang/stopwords_de.txt      |   294 -
 solr/example/files/conf/lang/stopwords_el.txt      |    78 -
 solr/example/files/conf/lang/stopwords_en.txt      |    54 -
 solr/example/files/conf/lang/stopwords_es.txt      |   356 -
 solr/example/files/conf/lang/stopwords_eu.txt      |    99 -
 solr/example/files/conf/lang/stopwords_fa.txt      |   313 -
 solr/example/files/conf/lang/stopwords_fi.txt      |    97 -
 solr/example/files/conf/lang/stopwords_fr.txt      |   186 -
 solr/example/files/conf/lang/stopwords_ga.txt      |   110 -
 solr/example/files/conf/lang/stopwords_gl.txt      |   161 -
 solr/example/files/conf/lang/stopwords_hi.txt      |   235 -
 solr/example/files/conf/lang/stopwords_hu.txt      |   211 -
 solr/example/files/conf/lang/stopwords_hy.txt      |    46 -
 solr/example/files/conf/lang/stopwords_id.txt      |   359 -
 solr/example/files/conf/lang/stopwords_it.txt      |   303 -
 solr/example/files/conf/lang/stopwords_ja.txt      |   127 -
 solr/example/files/conf/lang/stopwords_lv.txt      |   172 -
 solr/example/files/conf/lang/stopwords_nl.txt      |   119 -
 solr/example/files/conf/lang/stopwords_no.txt      |   194 -
 solr/example/files/conf/lang/stopwords_pt.txt      |   253 -
 solr/example/files/conf/lang/stopwords_ro.txt      |   233 -
 solr/example/files/conf/lang/stopwords_ru.txt      |   243 -
 solr/example/files/conf/lang/stopwords_sv.txt      |   133 -
 solr/example/files/conf/lang/stopwords_th.txt      |   119 -
 solr/example/files/conf/lang/stopwords_tr.txt      |   212 -
 solr/example/files/conf/lang/userdict_ja.txt       |    29 -
 solr/example/files/conf/managed-schema             |   520 -
 solr/example/files/conf/params.json                |    34 -
 solr/example/files/conf/protwords.txt              |    21 -
 solr/example/files/conf/solrconfig.xml             |  1423 -
 solr/example/files/conf/stopwords.txt              |    14 -
 solr/example/files/conf/synonyms.txt               |    29 -
 solr/example/files/conf/update-script.js           |   115 -
 solr/example/files/conf/velocity/browse.vm         |    32 -
 solr/example/files/conf/velocity/dropit.js         |     0
 solr/example/files/conf/velocity/facet_doc_type.vm |     2 -
 .../files/conf/velocity/facet_text_shingles.vm     |    12 -
 solr/example/files/conf/velocity/facets.vm         |    24 -
 solr/example/files/conf/velocity/footer.vm         |    29 -
 solr/example/files/conf/velocity/head.vm           |   290 -
 solr/example/files/conf/velocity/hit.vm            |    77 -
 .../files/conf/velocity/img/english_640.png        |   Bin 138412 -> 0 bytes
 .../example/files/conf/velocity/img/france_640.png |   Bin 99992 -> 0 bytes
 .../files/conf/velocity/img/germany_640.png        |   Bin 105271 -> 0 bytes
 solr/example/files/conf/velocity/img/globe_256.png |   Bin 46622 -> 0 bytes
 .../files/conf/velocity/jquery.tx3-tag-cloud.js    |     0
 solr/example/files/conf/velocity/js/dropit.js      |    97 -
 .../files/conf/velocity/js/jquery.autocomplete.js  |   763 -
 .../files/conf/velocity/js/jquery.tx3-tag-cloud.js |    70 -
 solr/example/files/conf/velocity/layout.vm         |    42 -
 solr/example/files/conf/velocity/macros.vm         |    16 -
 .../example/files/conf/velocity/mime_type_lists.vm |    68 -
 solr/example/files/conf/velocity/results.vm        |    20 -
 solr/example/files/conf/velocity/results_list.vm   |    21 -
 solr/example/films/README.md                       |    46 -
 solr/licenses/attributes-binder-1.3.3.jar.sha1     |     1 -
 solr/licenses/attributes-binder-LICENSE-ASL.txt    |   202 -
 solr/licenses/attributes-binder-NOTICE.txt         |     9 -
 solr/licenses/carrot2-LICENSE-BSD_LIKE.txt         |    36 +
 solr/licenses/carrot2-NOTICE.txt                   |    10 +
 solr/licenses/carrot2-core-4.0.4.jar.sha1          |     1 +
 solr/licenses/carrot2-guava-18.0.jar.sha1          |     1 -
 solr/licenses/carrot2-guava-LICENSE-ASL.txt        |   202 -
 solr/licenses/carrot2-guava-NOTICE.txt             |     5 -
 solr/licenses/carrot2-mini-3.16.2.jar.sha1         |     1 -
 solr/licenses/carrot2-mini-LICENSE-BSD_LIKE.txt    |    36 -
 solr/licenses/carrot2-mini-NOTICE.txt              |    10 -
 solr/licenses/commons-io-2.6.jar.sha1              |     1 -
 solr/licenses/commons-io-2.8.0.jar.sha1            |     1 +
 .../http2-client-9.4.27.v20200227.jar.sha1         |     1 -
 .../http2-client-9.4.34.v20201102.jar.sha1         |     1 +
 .../http2-common-9.4.27.v20200227.jar.sha1         |     1 -
 .../http2-common-9.4.34.v20201102.jar.sha1         |     1 +
 .../licenses/http2-hpack-9.4.27.v20200227.jar.sha1 |     1 -
 .../licenses/http2-hpack-9.4.34.v20201102.jar.sha1 |     1 +
 ...http-client-transport-9.4.27.v20200227.jar.sha1 |     1 -
 ...http-client-transport-9.4.34.v20201102.jar.sha1 |     1 +
 .../http2-server-9.4.27.v20200227.jar.sha1         |     1 -
 .../http2-server-9.4.34.v20201102.jar.sha1         |     1 +
 .../jetty-alpn-client-9.4.27.v20200227.jar.sha1    |     1 -
 .../jetty-alpn-client-9.4.34.v20201102.jar.sha1    |     1 +
 ...etty-alpn-java-client-9.4.27.v20200227.jar.sha1 |     1 -
 ...etty-alpn-java-client-9.4.34.v20201102.jar.sha1 |     1 +
 ...etty-alpn-java-server-9.4.27.v20200227.jar.sha1 |     1 -
 ...etty-alpn-java-server-9.4.34.v20201102.jar.sha1 |     1 +
 .../jetty-alpn-server-9.4.27.v20200227.jar.sha1    |     1 -
 .../jetty-alpn-server-9.4.34.v20201102.jar.sha1    |     1 +
 .../jetty-client-9.4.27.v20200227.jar.sha1         |     1 -
 .../jetty-client-9.4.34.v20201102.jar.sha1         |     1 +
 .../jetty-continuation-9.4.27.v20200227.jar.sha1   |     1 -
 .../jetty-continuation-9.4.34.v20201102.jar.sha1   |     1 +
 .../jetty-deploy-9.4.27.v20200227.jar.sha1         |     1 -
 .../jetty-deploy-9.4.34.v20201102.jar.sha1         |     1 +
 solr/licenses/jetty-http-9.4.27.v20200227.jar.sha1 |     1 -
 solr/licenses/jetty-http-9.4.34.v20201102.jar.sha1 |     1 +
 solr/licenses/jetty-io-9.4.27.v20200227.jar.sha1   |     1 -
 solr/licenses/jetty-io-9.4.34.v20201102.jar.sha1   |     1 +
 solr/licenses/jetty-jmx-9.4.27.v20200227.jar.sha1  |     1 -
 solr/licenses/jetty-jmx-9.4.34.v20201102.jar.sha1  |     1 +
 .../jetty-rewrite-9.4.27.v20200227.jar.sha1        |     1 -
 .../jetty-rewrite-9.4.34.v20201102.jar.sha1        |     1 +
 .../jetty-security-9.4.27.v20200227.jar.sha1       |     1 -
 .../jetty-security-9.4.34.v20201102.jar.sha1       |     1 +
 .../jetty-server-9.4.27.v20200227.jar.sha1         |     1 -
 .../jetty-server-9.4.34.v20201102.jar.sha1         |     1 +
 .../jetty-servlet-9.4.27.v20200227.jar.sha1        |     1 -
 .../jetty-servlet-9.4.34.v20201102.jar.sha1        |     1 +
 .../jetty-servlets-9.4.27.v20200227.jar.sha1       |     1 -
 .../jetty-servlets-9.4.34.v20201102.jar.sha1       |     1 +
 .../jetty-start-9.4.27.v20200227-shaded.jar.sha1   |     1 -
 .../jetty-start-9.4.34.v20201102-shaded.jar.sha1   |     1 +
 solr/licenses/jetty-util-9.4.27.v20200227.jar.sha1 |     1 -
 solr/licenses/jetty-util-9.4.34.v20201102.jar.sha1 |     1 +
 .../jetty-webapp-9.4.27.v20200227.jar.sha1         |     1 -
 .../jetty-webapp-9.4.34.v20201102.jar.sha1         |     1 +
 solr/licenses/jetty-xml-9.4.27.v20200227.jar.sha1  |     1 -
 solr/licenses/jetty-xml-9.4.34.v20201102.jar.sha1  |     1 +
 solr/licenses/junit-4.12.jar.sha1                  |     1 -
 solr/licenses/junit-4.13.1.jar.sha1                |     1 +
 solr/licenses/org.restlet-2.4.3.jar.sha1           |     1 -
 solr/licenses/org.restlet-LICENSE-ASL.txt          |   201 -
 solr/licenses/org.restlet-NOTICE.txt               |     2 -
 .../org.restlet.ext.servlet-2.4.3.jar.sha1         |     1 -
 .../org.restlet.ext.servlet-LICENSE-ASL.txt        |   201 -
 solr/licenses/org.restlet.ext.servlet-NOTICE.txt   |     2 -
 solr/licenses/simple-xml-safe-2.7.1.jar.sha1       |     1 -
 solr/licenses/simple-xml-safe-LICENSE-ASL.txt      |   202 -
 solr/licenses/simple-xml-safe-NOTICE.txt           |     2 -
 solr/licenses/velocity-engine-core-2.0.jar.sha1    |     1 -
 solr/licenses/velocity-engine-core-LICENSE-ASL.txt |   202 -
 solr/licenses/velocity-engine-core-NOTICE.txt      |     7 -
 solr/licenses/velocity-tools-generic-3.0.jar.sha1  |     1 -
 .../velocity-tools-generic-LICENSE-ASL.txt         |   201 -
 solr/licenses/velocity-tools-generic-NOTICE.txt    |    12 -
 solr/licenses/velocity-tools-view-3.0.jar.sha1     |     1 -
 solr/licenses/velocity-tools-view-LICENSE-ASL.txt  |   201 -
 solr/licenses/velocity-tools-view-NOTICE.txt       |    12 -
 solr/licenses/velocity-tools-view-jsp-3.0.jar.sha1 |     1 -
 .../velocity-tools-view-jsp-LICENSE-ASL.txt        |   201 -
 solr/licenses/velocity-tools-view-jsp-NOTICE.txt   |    12 -
 solr/licenses/zookeeper-3.6.1.jar.sha1             |     1 -
 solr/licenses/zookeeper-3.6.2.jar.sha1             |     1 +
 solr/licenses/zookeeper-jute-3.6.1.jar.sha1        |     1 -
 solr/licenses/zookeeper-jute-3.6.2.jar.sha1        |     1 +
 solr/packaging/build.gradle                        |   114 +-
 solr/server/etc/security.policy                    |     2 +-
 .../solr/configsets/_default/conf/solrconfig.xml   |   175 +-
 .../conf/clustering/carrot2/README.md              |    11 -
 .../conf/clustering/carrot2/kmeans-attributes.xml  |    19 -
 .../conf/clustering/carrot2/lingo-attributes.xml   |    24 -
 .../conf/clustering/carrot2/stc-attributes.xml     |    19 -
 .../conf/solrconfig.xml                            |   367 +-
 .../conf/velocity/README.md                        |   116 -
 .../conf/velocity/VM_global_library.vm             |   186 -
 .../conf/velocity/browse.vm                        |    33 -
 .../conf/velocity/cluster.vm                       |    19 -
 .../conf/velocity/cluster_results.vm               |    31 -
 .../conf/velocity/debug.vm                         |    28 -
 .../conf/velocity/did_you_mean.vm                  |    11 -
 .../conf/velocity/error.vm                         |    11 -
 .../conf/velocity/facet_fields.vm                  |    24 -
 .../conf/velocity/facet_pivot.vm                   |    12 -
 .../conf/velocity/facet_queries.vm                 |    12 -
 .../conf/velocity/facet_ranges.vm                  |    23 -
 .../conf/velocity/facets.vm                        |    10 -
 .../conf/velocity/footer.vm                        |    43 -
 .../conf/velocity/head.vm                          |    37 -
 .../conf/velocity/header.vm                        |     7 -
 .../conf/velocity/hit.vm                           |    25 -
 .../conf/velocity/hit_grouped.vm                   |    43 -
 .../conf/velocity/hit_plain.vm                     |    25 -
 .../conf/velocity/join_doc.vm                      |    20 -
 .../conf/velocity/jquery.autocomplete.css          |    48 -
 .../conf/velocity/jquery.autocomplete.js           |   763 -
 .../conf/velocity/layout.vm                        |    24 -
 .../conf/velocity/main.css                         |   231 -
 .../conf/velocity/mime_type_lists.vm               |    68 -
 .../conf/velocity/pagination_bottom.vm             |    22 -
 .../conf/velocity/pagination_top.vm                |    29 -
 .../conf/velocity/product_doc.vm                   |    32 -
 .../conf/velocity/query.vm                         |    42 -
 .../conf/velocity/query_form.vm                    |    64 -
 .../conf/velocity/query_group.vm                   |    43 -
 .../conf/velocity/query_spatial.vm                 |    75 -
 .../conf/velocity/results_list.vm                  |    22 -
 .../conf/velocity/richtext_doc.vm                  |   153 -
 .../conf/velocity/suggest.vm                       |     8 -
 .../conf/velocity/tabs.vm                          |    50 -
 solr/server/solr/solr.xml                          |     4 +-
 solr/site/assets/images/favicon.ico                |   Bin 3262 -> 0 bytes
 .../images/quickstart-admin-ui-facet-options.png   |   Bin 10646 -> 0 bytes
 .../site/assets/images/quickstart-query-screen.png |   Bin 278938 -> 0 bytes
 solr/site/assets/images/quickstart-range-facet.png |   Bin 21592 -> 0 bytes
 solr/site/assets/images/quickstart-solrcloud.png   |   Bin 50418 -> 0 bytes
 solr/site/assets/images/quickstart-spatial.png     |   Bin 229121 -> 0 bytes
 solr/site/index.template.md                        |    37 -
 solr/site/index.xsl                                |   112 -
 solr/site/online-link.template.md                  |    19 -
 solr/site/online-link.xsl                          |    69 -
 solr/solr-ref-guide/build.gradle                   |   402 +-
 solr/solr-ref-guide/src/_config.yml.template       |    38 +-
 solr/solr-ref-guide/src/_includes/footer.html      |     2 +-
 solr/solr-ref-guide/src/_includes/head.html        |     8 +-
 solr/solr-ref-guide/src/_templates/table.html.slim |     4 +-
 solr/solr-ref-guide/src/analytics.adoc             |     2 +-
 .../authentication-and-authorization-plugins.adoc  |     2 +-
 .../src/basic-authentication-plugin.adoc           |     2 +-
 solr/solr-ref-guide/src/blob-store-api.adoc        |   274 -
 .../src/cluster-node-management.adoc               |     9 +-
 solr/solr-ref-guide/src/cluster-plugins.adoc       |   242 +
 solr/solr-ref-guide/src/codec-factory.adoc         |     4 +-
 solr/solr-ref-guide/src/collection-management.adoc |    22 +-
 .../src/common-query-parameters.adoc               |    15 +-
 solr/solr-ref-guide/src/config-api.adoc            |     3 +-
 solr/solr-ref-guide/src/configsets-api.adoc        |   110 +-
 solr/solr-ref-guide/src/configuration-apis.adoc    |     5 +-
 solr/solr-ref-guide/src/css/navs.css               |     4 +-
 solr/solr-ref-guide/src/css/ref-guide.css          |     1 -
 ...datadir-and-directoryfactory-in-solrconfig.adoc |     6 +-
 solr/solr-ref-guide/src/distributed-requests.adoc  |     8 +-
 .../src/documents-fields-and-schema-design.adoc    |     2 +
 solr/solr-ref-guide/src/enabling-ssl.adoc          |     2 +
 solr/solr-ref-guide/src/exporting-result-sets.adoc |     2 +-
 solr/solr-ref-guide/src/faceting.adoc              |     9 +-
 .../src/field-types-included-with-solr.adoc        |    62 +-
 solr/solr-ref-guide/src/filter-descriptions.adoc   |     6 +-
 solr/solr-ref-guide/src/format-of-solr-xml.adoc    |    10 +-
 .../src/hadoop-authentication-plugin.adoc          |     2 +-
 solr/solr-ref-guide/src/highlighting.adoc          |     4 +-
 .../prometheus-solr-ping.png                       |   Bin 0 -> 425471 bytes
 .../result-clustering/carrot2-docs-attrs1.png      |   Bin 0 -> 132866 bytes
 .../result-clustering/carrot2-docs-attrs2.png      |   Bin 0 -> 133160 bytes
 .../images/result-clustering/carrot2-workbench.png |   Bin 210974 -> 0 bytes
 .../src/images/result-clustering/carrot2.png       |   Bin 403362 -> 637015 bytes
 .../images/solr-tracing/query-request-tracing.png  |   Bin 286374 -> 157465 bytes
 .../velocity-search-ui/techproducts_browse.png     |   Bin 74854 -> 0 bytes
 .../src/implicit-requesthandlers.adoc              |    58 +-
 solr/solr-ref-guide/src/index-replication.adoc     |     4 +-
 .../src/indexconfig-in-solrconfig.adoc             |    17 +-
 .../src/indexing-nested-documents.adoc             |   107 +-
 .../src/initparams-in-solrconfig.adoc              |     2 +-
 solr/solr-ref-guide/src/json-facet-api.adoc        |     2 +-
 .../src/json-faceting-domain-changes.adoc          |     2 +-
 solr/solr-ref-guide/src/jvm-settings.adoc          |     2 +-
 solr/solr-ref-guide/src/language-analysis.adoc     |     2 +-
 solr/solr-ref-guide/src/learning-to-rank.adoc      |   154 +-
 solr/solr-ref-guide/src/libs.adoc                  |     4 +-
 solr/solr-ref-guide/src/luke-request-handler.adoc  |     2 +-
 .../src/major-changes-from-solr-5-to-solr-6.adoc   |     2 +-
 .../src/major-changes-in-solr-7.adoc               |     2 +-
 .../src/major-changes-in-solr-8.adoc               |     8 +-
 .../src/major-changes-in-solr-9.adoc               |    25 +-
 .../src/making-and-restoring-backups.adoc          |     6 +-
 solr/solr-ref-guide/src/math-expressions.adoc      |     3 +-
 solr/solr-ref-guide/src/meta-docs/publish.adoc     |     8 +-
 solr/solr-ref-guide/src/metrics-history.adoc       |     9 +-
 solr/solr-ref-guide/src/metrics-reporting.adoc     |    87 +-
 ...onitoring-solr-with-prometheus-and-grafana.adoc |    70 +-
 solr/solr-ref-guide/src/other-parsers.adoc         |    35 +-
 solr/solr-ref-guide/src/other-schema-elements.adoc |     6 +-
 solr/solr-ref-guide/src/pagination-of-results.adoc |     1 +
 solr/solr-ref-guide/src/query-re-ranking.adoc      |     8 +-
 .../src/query-settings-in-solrconfig.adoc          |     2 +-
 .../src/query-syntax-and-parsing.adoc              |     2 +-
 solr/solr-ref-guide/src/rate-limiters.adoc         |    64 +-
 solr/solr-ref-guide/src/reindexing.adoc            |   162 +-
 solr/solr-ref-guide/src/replica-management.adoc    |     5 +
 ...andlers-and-searchcomponents-in-solrconfig.adoc |   290 +-
 solr/solr-ref-guide/src/response-writers.adoc      |    10 +-
 solr/solr-ref-guide/src/result-clustering.adoc     |   400 +-
 .../src/rule-based-authorization-plugin.adoc       |     4 +-
 .../src/rule-based-replica-placement.adoc          |   177 -
 solr/solr-ref-guide/src/schemaless-mode.adoc       |    16 +-
 .../src/searching-nested-documents.adoc            |    42 +-
 solr/solr-ref-guide/src/searching.adoc             |     2 -
 .../src/shards-and-indexing-data-in-solrcloud.adoc |     6 +-
 solr/solr-ref-guide/src/solr-field-types.adoc      |     2 +-
 solr/solr-ref-guide/src/solr-plugins.adoc          |     7 +-
 solr/solr-ref-guide/src/solr-tracing.adoc          |   102 +-
 solr/solr-ref-guide/src/solr-tutorial.adoc         |    13 +-
 solr/solr-ref-guide/src/solr-upgrade-notes.adoc    |   122 +-
 ...solrcloud-query-routing-and-read-tolerance.adoc |     2 +-
 solr/solr-ref-guide/src/solrcloud.adoc             |     5 +-
 solr/solr-ref-guide/src/statistics.adoc            |     4 +-
 .../src/stream-decorator-reference.adoc            |    10 +-
 .../src/stream-source-reference.adoc               |     3 +-
 solr/solr-ref-guide/src/streaming-expressions.adoc |     8 +-
 .../src/taking-solr-to-production.adoc             |    10 +-
 .../src/the-query-elevation-component.adoc         |    12 +-
 solr/solr-ref-guide/src/the-terms-component.adoc   |    57 +-
 solr/solr-ref-guide/src/tokenizers.adoc            |     2 +-
 .../src/transforming-result-documents.adoc         |    11 +-
 .../src/update-request-processors.adoc             |   106 +-
 .../src/updating-parts-of-documents.adoc           |    36 +-
 .../src/uploading-data-with-index-handlers.adoc    |     5 +
 solr/solr-ref-guide/src/using-solrj.adoc           |    22 +-
 solr/solr-ref-guide/src/v2-api.adoc                |    10 -
 solr/solr-ref-guide/src/vectorization.adoc         |     8 +-
 .../src/velocity-response-writer.adoc              |   122 -
 solr/solr-ref-guide/src/velocity-search-ui.adoc    |    26 -
 .../src/zookeeper-access-control.adoc              |     6 +-
 solr/solr-ref-guide/tools/BuildNavDataFiles.java   |     1 -
 .../solr-ref-guide/tools/CheckLinksAndAnchors.java |    11 -
 solr/solrj/build.gradle                            |     1 -
 .../apache/solr/client/solrj/cloud/ShardTerms.java |    19 +-
 .../client/solrj/impl/BaseCloudSolrClient.java     |    20 +-
 .../solr/client/solrj/impl/Http2SolrClient.java    |     8 +
 .../solrj/impl/HttpClientBuilderFactory.java       |     3 +-
 .../solr/client/solrj/impl/HttpClientUtil.java     |     3 +-
 .../client/solrj/impl/Krb5HttpClientBuilder.java   |     5 +-
 .../PreemptiveBasicAuthClientBuilderFactory.java   |     8 +-
 .../solrj/impl/SolrClientNodeStateProvider.java    |   105 +-
 .../solr/client/solrj/io/SolrClientCache.java      |     2 +
 .../solr/client/solrj/io/comp/FieldComparator.java |    23 +-
 .../solrj/io/comp/MultipleFieldComparator.java     |    14 +
 .../client/solrj/io/comp/StreamComparator.java     |     6 +-
 .../client/solrj/io/stream/CloudSolrStream.java    |    96 +-
 .../solr/client/solrj/io/stream/DrillStream.java   |    35 +-
 .../solr/client/solrj/io/stream/FacetStream.java   |   101 +-
 .../solrj/io/stream/ParallelMetricsRollup.java     |   130 +
 .../client/solrj/io/stream/ScoreNodesStream.java   |     4 -
 .../solr/client/solrj/io/stream/SolrStream.java    |    27 +-
 .../solr/client/solrj/io/stream/TupleStream.java   |   128 +-
 .../client/solrj/io/stream/metrics/MaxMetric.java  |     2 +-
 .../client/solrj/io/stream/metrics/MeanMetric.java |     2 +-
 .../client/solrj/io/stream/metrics/MinMetric.java  |     2 +-
 .../client/solrj/io/stream/metrics/SumMetric.java  |     2 +-
 .../solrj/io/stream/metrics/WeightedSumMetric.java |   135 +
 .../solrj/request/CollectionAdminRequest.java      |    11 -
 .../client/solrj/request/CollectionApiMapping.java |   100 -
 .../solr/client/solrj/request/UpdateRequest.java   |     6 -
 .../solr/client/solrj/request/V2Request.java       |    20 +
 .../solrj/request/beans/ClusterPropInfo.java       |    72 +
 .../solrj/request/beans/CreateConfigInfo.java      |    32 +
 .../client/solrj/request/beans/PluginMeta.java     |    26 +-
 .../solrj/request/beans/RateLimiterMeta.java       |    73 +
 .../apache/solr/client/solrj/response/Cluster.java |     9 +-
 .../client/solrj/response/ClusteringResponse.java  |    13 +-
 .../solr/client/solrj/response/QueryResponse.java  |     6 +-
 .../client/solrj/response/SuggesterResponse.java   |    11 +-
 .../RequestReplicaListTransformerGenerator.java    |    31 +-
 .../org/apache/solr/cluster/api/SimpleMap.java     |     5 +
 .../java/org/apache/solr/common/ConfigNode.java    |   104 +
 .../java/org/apache/solr/common/MapWriterMap.java  |     9 +-
 .../org/apache/solr/common/NavigableObject.java    |     6 +
 .../java/org/apache/solr/common/SolrDocument.java  |    28 +
 .../org/apache/solr/common/SolrInputDocument.java  |    27 +
 .../solr/common/cloud/ClusterProperties.java       |    23 +
 .../apache/solr/common/cloud/ClusterStateUtil.java |     2 +-
 .../apache/solr/common/cloud/DocCollection.java    |     6 -
 .../solr/common/cloud/NodesSysPropsCacher.java     |     4 +-
 .../java/org/apache/solr/common/cloud/Replica.java |    22 +-
 .../org/apache/solr/common/cloud/UrlScheme.java    |    73 +
 .../apache/solr/common/cloud/ZkConfigManager.java  |    23 +-
 .../apache/solr/common/cloud/ZkCoreNodeProps.java  |    27 +-
 .../solr/common/cloud/ZkMaintenanceUtils.java      |     9 +-
 .../org/apache/solr/common/cloud/ZkNodeProps.java  |    54 +-
 .../apache/solr/common/cloud/ZkStateReader.java    |    25 +-
 .../solr/common/cloud/rule/ImplicitSnitch.java     |     4 +-
 .../solr/common/params/CollectionAdminParams.java  |    11 -
 .../apache/solr/common/params/CommonParams.java    |     7 -
 .../apache/solr/common/params/ConfigSetParams.java |     3 +
 .../solr/common/params/DefaultSolrParams.java      |     2 +-
 .../org/apache/solr/common/params/FacetParams.java |    22 -
 .../java/org/apache/solr/common/util/DOMUtil.java  |   477 +
 .../apache/solr/common/util/JsonSchemaCreator.java |    15 +-
 .../org/apache/solr/common/util/NamedList.java     |     5 +
 .../apache/solr/common/util/PropertiesUtil.java    |   157 +
 .../java/org/apache/solr/common/util/Utils.java    |    69 +-
 .../src/resources/apispec/cluster.Commands.json    |   146 -
 .../apispec/cluster.commandstatus.delete.json      |    10 -
 .../resources/apispec/cluster.commandstatus.json   |    20 -
 .../apispec/cluster.configs.Commands.json          |    34 -
 .../resources/apispec/cluster.configs.delete.json  |    12 -
 .../src/resources/apispec/cluster.configs.json     |    12 -
 solr/solrj/src/resources/apispec/cluster.json      |    14 -
 .../solrj/src/resources/apispec/cluster.nodes.json |    12 -
 .../resources/apispec/collections.Commands.json    |    16 -
 .../collections.collection.Commands.modify.json    |    16 -
 .../apispec/collections.collection.delete.json     |    13 -
 solr/solrj/src/resources/apispec/collections.json  |    13 -
 ...nfig.Commands.addRequestHandler.properties.json |     4 -
 .../apispec/core.config.Commands.generic.json      |     4 -
 .../resources/apispec/core.config.Commands.json    |    13 -
 .../solrj/impl/CloudHttp2SolrClientRetryTest.java  |     1 +
 .../solrj/impl/CloudHttp2SolrClientTest.java       |    62 +-
 .../solrj/impl/CloudSolrClientRetryTest.java       |     1 +
 .../client/solrj/impl/CloudSolrClientTest.java     |    62 +-
 .../client/solrj/impl/Http2SolrClientTest.java     |     6 +
 .../stream/ParallelFacetStreamOverAliasTest.java   |   301 +
 .../solr/client/solrj/io/stream/StreamingTest.java |    60 +
 .../io/stream/metrics/WeightedSumMetricTest.java   |    75 +
 .../solr/client/solrj/request/SchemaTest.java      |     4 -
 .../solr/client/solrj/request/TestCoreAdmin.java   |     1 +
 .../client/solrj/response/QueryResponseTest.java   |    11 +-
 .../solrj/response/TestClusteringResponse.java     |     5 +-
 .../solrj/response/TestSuggesterResponse.java      |   127 +-
 .../routing/NodePreferenceRulesComparatorTest.java |    45 +-
 .../solrj/routing/ReplicaListTransformerTest.java  |     2 +-
 ...RequestReplicaListTransformerGeneratorTest.java |    64 +-
 .../ShufflingReplicaListTransformerTest.java       |     4 +-
 .../apache/solr/common/cloud/SolrZkClientTest.java |    20 +-
 .../solr/common/cloud/TestZkMaintenanceUtils.java  |   176 +
 .../apache/solr/common/cloud/UrlSchemeTest.java    |    59 +
 .../solr/common/params/CommonParamsTest.java       |     2 -
 .../apache/solr/common/util/ContentStreamTest.java |    19 +-
 .../org/apache/solr/common/util/DOMUtilTest.java   |    56 +
 .../apache/solr/common/util/JsonValidatorTest.java |     9 -
 .../solr/common/util/TestZkMaintenanceUtils.java   |    55 -
 .../src/java/org/apache/solr/SolrTestCaseJ4.java   |    12 +-
 .../solr/analysis/MockCharFilterFactory.java       |     2 +-
 .../solr/analysis/MockTokenFilterFactory.java      |     2 +-
 .../apache/solr/analysis/MockTokenizerFactory.java |     2 +-
 .../analysis/StringMockSolrResourceLoader.java     |     2 +-
 .../solr/cloud/AbstractFullDistribZkTestBase.java  |    28 +-
 .../apache/solr/cloud/MiniSolrCloudCluster.java    |    38 +-
 .../apache/solr/cloud/SolrCloudAuthTestCase.java   |    12 +
 .../src/java/org/apache/solr/util/TestHarness.java |    32 +-
 .../solr/cloud/MiniSolrCloudClusterTest.java       |   111 +
 solr/webapp/web/WEB-INF/web.xml                    |    14 -
 solr/webapp/web/css/angular/angular-csp.css        |     4 +-
 solr/webapp/web/css/angular/collections.css        |     5 +
 solr/webapp/web/css/angular/jstree.style.min.css   |     2 +-
 solr/webapp/web/img/jstree/32px.png                |   Bin 5667 -> 5660 bytes
 solr/webapp/web/img/jstree/40px.png                |   Bin 2218 -> 2215 bytes
 solr/webapp/web/img/jstree/throbber.gif            |   Bin 1464 -> 1464 bytes
 solr/webapp/web/index.html                         |     2 +-
 solr/webapp/web/js/angular/app.js                  |     7 +-
 .../web/js/angular/controllers/collections.js      |     7 +-
 solr/webapp/web/js/angular/controllers/files.js    |    14 +-
 solr/webapp/web/libs/angular-cookies.min.js        |     6 +-
 solr/webapp/web/libs/angular-resource.min.js       |     6 +-
 solr/webapp/web/libs/angular-route.min.js          |     6 +-
 solr/webapp/web/libs/angular-sanitize.min.js       |     6 +-
 solr/webapp/web/libs/angular.min.js                |   690 +-
 solr/webapp/web/libs/jquery-3.4.1.min.js           |    28 -
 solr/webapp/web/libs/jquery-3.5.1.min.js           |    27 +
 solr/webapp/web/libs/jstree.min.js                 |    12 +-
 solr/webapp/web/partials/collections.html          |    22 +-
 solr/webapp/web/partials/replication.html          |     2 +-
 versions.lock                                      |    83 +-
 versions.props                                     |    15 +-
 6606 files changed, 401167 insertions(+), 341841 deletions(-)

diff --cc solr/core/src/java/org/apache/solr/core/SolrCore.java
index b11e315,a388bf3..a2cb27c
--- a/solr/core/src/java/org/apache/solr/core/SolrCore.java
+++ b/solr/core/src/java/org/apache/solr/core/SolrCore.java
@@@ -380,7 -383,7 +385,7 @@@ public final class SolrCore implements 
        if (_searcher == null) return getNewIndexDir();
        SolrIndexSearcher searcher = _searcher.get();
        return searcher.getPath() == null ? dataDir + "index/" : searcher
--          .getPath();
++              .getPath();
      }
    }
  
@@@ -549,7 -552,7 +554,7 @@@
      try {
        String dirName = getDataDir() + SolrSnapshotMetaDataManager.SNAPSHOT_METADATA_DIR + "/";
        Directory snapshotDir = directoryFactory.get(dirName, DirContext.DEFAULT,
--          getSolrConfig().indexConfig.lockType);
++              getSolrConfig().indexConfig.lockType);
        return new SolrSnapshotMetaDataManager(this, snapshotDir);
      } catch (IOException e) {
        throw new IllegalStateException(e);
@@@ -704,7 -714,7 +716,7 @@@
          CoreDescriptor cd = new CoreDescriptor(name, getCoreDescriptor());
          cd.loadExtraProperties(); //Reload the extra properties
          core = new SolrCore(coreContainer, cd, coreConfig, getDataDir(),
--            updateHandler, solrDelPolicy, currentCore, true);
++                updateHandler, solrDelPolicy, currentCore, true);
  
          // we open a new IndexWriter to pick up the latest config
          core.getUpdateHandler().getSolrCoreState().newIndexWriter(core, false);
@@@ -791,12 -801,12 +803,12 @@@
        try {
          if (isWriterLocked(dir)) {
            log.error("{}Solr index directory '{}' is locked (lockType={}).  Throwing exception.", logid,
--              indexDir, lockType);
++                  indexDir, lockType);
            throw new LockObtainFailedException(
--              "Index dir '" + indexDir + "' of core '" + name + "' is already locked. " +
--                  "The most likely cause is another Solr server (or another solr core in this server) " +
--                  "also configured to use this directory; other possible causes may be specific to lockType: " +
--                  lockType);
++                  "Index dir '" + indexDir + "' of core '" + name + "' is already locked. " +
++                          "The most likely cause is another Solr server (or another solr core in this server) " +
++                          "also configured to use this directory; other possible causes may be specific to lockType: " +
++                          lockType);
          }
        } finally {
          directoryFactory.release(dir);
@@@ -809,7 -819,7 +821,7 @@@
        SolrIndexWriter writer = null;
        try {
          writer = SolrIndexWriter.create(this, "SolrCore.initIndex", indexDir, getDirectoryFactory(), true,
--            getLatestSchema(), solrConfig.indexConfig, solrDelPolicy, codec);
++                getLatestSchema(), solrConfig.indexConfig, solrDelPolicy, codec);
        } finally {
          IOUtils.closeQuietly(writer);
        }
@@@ -917,7 -927,7 +929,7 @@@
  
    public SolrCore(CoreContainer coreContainer, CoreDescriptor cd, ConfigSet configSet) {
      this(coreContainer, cd, configSet, null,
--        null, null, null, false);
++            null, null, null, false);
    }
  
    public CoreContainer getCoreContainer() {
@@@ -1238,7 -1241,7 +1243,7 @@@
  
    private void checkVersionFieldExistsInSchema(IndexSchema schema, CoreDescriptor coreDescriptor) {
      if (null != coreDescriptor.getCloudDescriptor()) {
--      // we are evidently running in cloud mode.  
++      // we are evidently running in cloud mode.
        //
        // In cloud mode, version field is required for correct consistency
        // ideally this check would be more fine grained, and individual features
@@@ -1251,8 -1254,8 +1256,8 @@@
          VersionInfo.getAndCheckVersionField(schema);
        } catch (SolrException e) {
          throw new SolrException(ErrorCode.SERVER_ERROR,
--            "Schema will not work with SolrCloud mode: " +
--                e.getMessage(), e);
++                "Schema will not work with SolrCloud mode: " +
++                        e.getMessage(), e);
        }
      }
    }
@@@ -1392,8 -1395,8 +1397,8 @@@
        } catch (InterruptedException e) {
          Thread.currentThread().interrupt();
          throw new SolrException(ErrorCode.SERVER_ERROR,
--            "Caught InterruptedException whilst waiting for core " + getName() + " to close: "
--                + e.getMessage(), e);
++                "Caught InterruptedException whilst waiting for core " + getName() + " to close: "
++                        + e.getMessage(), e);
        }
      }
    }
@@@ -1467,9 -1470,9 +1472,9 @@@
        log.debug("no updateRequestProcessorChain defined as default, creating implicit default");
        // construct the default chain
        UpdateRequestProcessorFactory[] factories = new UpdateRequestProcessorFactory[]{
--          new LogUpdateProcessorFactory(),
--          new DistributedUpdateProcessorFactory(),
--          new RunUpdateProcessorFactory()
++              new LogUpdateProcessorFactory(),
++              new DistributedUpdateProcessorFactory(),
++              new RunUpdateProcessorFactory()
        };
        def = new UpdateRequestProcessorChain(Arrays.asList(factories), this);
      }
@@@ -1477,7 -1480,7 +1482,7 @@@
      map.put("", def);
  
      map.computeIfAbsent(RunUpdateProcessorFactory.PRE_RUN_CHAIN_NAME,
--        k -> new UpdateRequestProcessorChain(Collections.singletonList(new NestedUpdateProcessorFactory()), this));
++            k -> new UpdateRequestProcessorChain(Collections.singletonList(new NestedUpdateProcessorFactory()), this));
  
      return map;
    }
@@@ -1493,7 -1496,7 +1498,7 @@@
      UpdateRequestProcessorChain chain = updateProcessorChains.get(name);
      if (chain == null) {
        throw new SolrException(ErrorCode.BAD_REQUEST,
--          "unknown UpdateRequestProcessorChain: " + name);
++              "unknown UpdateRequestProcessorChain: " + name);
      }
      return chain;
    }
@@@ -1853,7 -1870,7 +1872,7 @@@
    private final LinkedList<RefCounted<SolrIndexSearcher>> _realtimeSearchers = new LinkedList<>();
  
    final ExecutorService searcherExecutor = ExecutorUtil.newMDCAwareSingleThreadExecutor(
--      new SolrNamedThreadFactory("searcherExecutor"));
++          new SolrNamedThreadFactory("searcherExecutor"));
    private int onDeckSearchers;  // number of searchers preparing
    // Lock ordering: one can acquire the openSearcherLock and then the searcherLock, but not vice-versa.
    private Object searcherLock = new Object();  // the sync object for the searcher
@@@ -1928,7 -1945,7 +1947,7 @@@
     * @throws IOException Can throw IOException
     */
    public IndexFingerprint getIndexFingerprint(SolrIndexSearcher searcher, LeafReaderContext ctx, long maxVersion)
--      throws IOException {
++          throws IOException {
      IndexReader.CacheHelper cacheHelper = ctx.reader().getReaderCacheHelper();
      if (cacheHelper == null) {
        if (log.isDebugEnabled()) {
@@@ -2117,12 -2134,12 +2136,12 @@@
            newReader = currentReader;
          }
  
--        // for now, turn off caches if this is for a realtime reader 
++        // for now, turn off caches if this is for a realtime reader
          // (caches take a little while to instantiate)
          final boolean useCaches = !realtime;
          final String newName = realtime ? "realtime" : "main";
          tmp = new SolrIndexSearcher(this, newIndexDir, getLatestSchema(), newName,
--            newReader, true, useCaches, true, directoryFactory);
++                newReader, true, useCaches, true, directoryFactory);
  
        } else {
          // newestSearcher == null at this point
@@@ -2133,7 -2150,7 +2152,7 @@@
            // in time on a core reload
            DirectoryReader newReader = newReaderCreator.call();
            tmp = new SolrIndexSearcher(this, newIndexDir, getLatestSchema(),
--              (realtime ? "realtime" : "main"), newReader, true, !realtime, true, directoryFactory);
++                  (realtime ? "realtime" : "main"), newReader, true, !realtime, true, directoryFactory);
          } else {
            RefCounted<IndexWriter> writer = getSolrCoreState().getIndexWriter(this);
            DirectoryReader newReader = null;
@@@ -2143,7 -2160,7 +2162,7 @@@
              writer.decref();
            }
            tmp = new SolrIndexSearcher(this, newIndexDir, getLatestSchema(),
--              (realtime ? "realtime" : "main"), newReader, true, !realtime, true, directoryFactory);
++                  (realtime ? "realtime" : "main"), newReader, true, !realtime, true, directoryFactory);
          }
        }
  
@@@ -2395,23 -2412,23 +2414,23 @@@
        final RefCounted<SolrIndexSearcher> currSearcherHolderF = currSearcherHolder;
        if (!alreadyRegistered) {
          future = searcherExecutor.submit(
--            () -> {
--              try {
--                // registerSearcher will decrement onDeckSearchers and
--                // do a notify, even if it fails.
--                registerSearcher(newSearchHolder);
--              } catch (Throwable e) {
--                SolrException.log(log, e);
--                if (e instanceof Error) {
--                  throw (Error) e;
++                () -> {
++                  try {
++                    // registerSearcher will decrement onDeckSearchers and
++                    // do a notify, even if it fails.
++                    registerSearcher(newSearchHolder);
++                  } catch (Throwable e) {
++                    SolrException.log(log, e);
++                    if (e instanceof Error) {
++                      throw (Error) e;
++                    }
++                  } finally {
++                    // we are all done with the old searcher we used
++                    // for warming...
++                    if (currSearcherHolderF != null) currSearcherHolderF.decref();
++                  }
++                  return null;
                  }
--              } finally {
--                // we are all done with the old searcher we used
--                // for warming...
--                if (currSearcherHolderF != null) currSearcherHolderF.decref();
--              }
--              return null;
--            }
          );
        }
  
@@@ -2572,7 -2589,7 +2591,7 @@@
    public void execute(SolrRequestHandler handler, SolrQueryRequest req, SolrQueryResponse rsp) {
      if (handler == null) {
        String msg = "Null Request Handler '" +
--          req.getParams().get(CommonParams.QT) + "'";
++              req.getParams().get(CommonParams.QT) + "'";
  
        log.warn("{}{}:{}", logid, msg, req);
  
@@@ -2693,7 -2710,7 +2712,7 @@@
        EchoParamStyle echoParams = EchoParamStyle.get(ep);
        if (echoParams == null) {
          throw new SolrException(ErrorCode.BAD_REQUEST, "Invalid value '" + ep + "' for " + CommonParams.HEADER_ECHO_PARAMS
--            + " parameter, use '" + EchoParamStyle.EXPLICIT + "' or '" + EchoParamStyle.ALL + "'");
++                + " parameter, use '" + EchoParamStyle.EXPLICIT + "' or '" + EchoParamStyle.ALL + "'");
        }
        if (echoParams == EchoParamStyle.EXPLICIT) {
          responseHeader.add("params", req.getOriginalParams().toNamedList());
@@@ -2734,7 -2751,7 +2753,7 @@@
      DEFAULT_RESPONSE_WRITERS = Collections.unmodifiableMap(m);
      try {
        m.put("xlsx",
--          (QueryResponseWriter) Class.forName("org.apache.solr.handler.extraction.XLSXResponseWriter").getConstructor().newInstance());
++              (QueryResponseWriter) Class.forName("org.apache.solr.handler.extraction.XLSXResponseWriter").getConstructor().newInstance());
      } catch (Exception e) {
        //don't worry; solrcell contrib not in class path
      }
@@@ -2903,7 -2920,7 +2922,7 @@@
    protected RestManager initRestManager() throws SolrException {
  
      PluginInfo restManagerPluginInfo =
--        getSolrConfig().getPluginInfo(RestManager.class.getName());
++            getSolrConfig().getPluginInfo(RestManager.class.getName());
  
      NamedList<String> initArgs = null;
      RestManager mgr = null;
@@@ -2925,7 -2942,7 +2944,7 @@@
  
      String collection = getCoreDescriptor().getCollectionName();
      StorageIO storageIO =
--        ManagedResourceStorage.newStorageIO(collection, resourceLoader, initArgs);
++            ManagedResourceStorage.newStorageIO(collection, resourceLoader, initArgs);
      mgr.init(resourceLoader, initArgs, storageIO);
  
      return mgr;
@@@ -2998,7 -3015,7 +3017,7 @@@
                FileUtils.deleteDirectory(desc.getInstanceDir().toFile());
              } catch (IOException e) {
                SolrException.log(log, "Failed to delete instance dir for core:"
--                  + core.getName() + " dir:" + desc.getInstanceDir());
++                      + core.getName() + " dir:" + desc.getInstanceDir());
              }
            }
          }
@@@ -3051,9 -3068,9 +3070,9 @@@
      final ZkSolrResourceLoader zkSolrResourceLoader = (ZkSolrResourceLoader) resourceLoader;
      if (zkSolrResourceLoader != null)
        zkSolrResourceLoader.getZkController().registerConfListenerForCore(
--          zkSolrResourceLoader.getConfigSetZkPath(),
--          this,
--          getConfListener(this, zkSolrResourceLoader));
++              zkSolrResourceLoader.getConfigSetZkPath(),
++              this,
++              getConfListener(this, zkSolrResourceLoader));
  
    }
  
@@@ -3089,8 -3106,8 +3108,8 @@@
          cfg.refreshRequestParams();
        }
        if (checkStale(zkClient, overlayPath, solrConfigversion) ||
--          checkStale(zkClient, solrConfigPath, overlayVersion) ||
--          checkStale(zkClient, managedSchmaResourcePath, managedSchemaVersion)) {
++              checkStale(zkClient, solrConfigPath, overlayVersion) ||
++              checkStale(zkClient, managedSchmaResourcePath, managedSchemaVersion)) {
          log.info("core reload {}", coreName);
          SolrConfigHandler configHandler = ((SolrConfigHandler) core.getRequestHandler("/config"));
          if (configHandler.getReloadLock().tryLock()) {
@@@ -3160,7 -3177,7 +3179,7 @@@
    public void cleanupOldIndexDirectories(boolean reload) {
      final DirectoryFactory myDirFactory = getDirectoryFactory();
      final String myDataDir = getDataDir();
--    final String myIndexDir = getNewIndexDir(); // ensure the latest replicated index is protected 
++    final String myIndexDir = getNewIndexDir(); // ensure the latest replicated index is protected
      final String coreName = getName();
      if (myDirFactory != null && myDataDir != null && myIndexDir != null) {
        Thread cleanupThread = new Thread(() -> {
@@@ -3247,4 -3264,28 +3266,31 @@@
    public void runAsync(Runnable r) {
      coreAsyncTaskExecutor.submit(r);
    }
+ 
+   /**Provides the core instance if the core instance is still alive.
+    * This helps to not hold on to a live {@link SolrCore} instance
+    * even after it's unloaded
+    *
+    */
+   public static class Provider {
+     private final CoreContainer coreContainer;
+     private final String coreName;
+     private final UUID coreId;
+ 
+     public Provider(CoreContainer coreContainer, String coreName, UUID coreId) {
+       this.coreContainer = coreContainer;
+       this.coreName = coreName;
+       this.coreId = coreId;
+     }
++    public void reload() {
++      coreContainer.reload(coreName, coreId);
++    }
+ 
+     public void withCore(Consumer<SolrCore> r) {
+       try(SolrCore core = coreContainer.getCore(coreName, coreId)) {
+         if(core == null) return;
+         r.accept(core);
+       }
+     }
+   }
  }
diff --cc solr/core/src/java/org/apache/solr/core/SolrResourceLoader.java
index 96b8974,fa183c6..c02bd42
--- a/solr/core/src/java/org/apache/solr/core/SolrResourceLoader.java
+++ b/solr/core/src/java/org/apache/solr/core/SolrResourceLoader.java
@@@ -30,9 -34,14 +34,15 @@@ import java.nio.file.DirectoryStream
  import java.nio.file.Files;
  import java.nio.file.Path;
  import java.nio.file.PathMatcher;
- import java.util.*;
+ import java.util.ArrayList;
+ import java.util.Arrays;
+ import java.util.Collections;
+ import java.util.HashMap;
+ import java.util.List;
+ import java.util.Map;
+ import java.util.UUID;
  import java.util.concurrent.ConcurrentHashMap;
 +import java.util.function.Function;
  import java.util.regex.Matcher;
  import java.util.regex.Pattern;
  import java.util.stream.Collectors;
@@@ -47,8 -62,8 +63,9 @@@ import org.apache.solr.common.SolrExcep
  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.logging.DeprecationLog;
  import org.apache.solr.pkg.PackageListeningClassLoader;
 +import org.apache.solr.pkg.PackageLoader;
  import org.apache.solr.request.SolrRequestHandler;
  import org.apache.solr.response.QueryResponseWriter;
  import org.apache.solr.rest.RestManager;
@@@ -69,9 -84,9 +86,9 @@@ public class SolrResourceLoader impleme
  
    private static final String base = "org.apache.solr";
    private static final String[] packages = {
--      "", "analysis.", "schema.", "handler.", "handler.tagger.", "search.", "update.", "core.", "response.", "request.",
--      "update.processor.", "util.", "spelling.", "handler.component.",
--      "spelling.suggest.", "spelling.suggest.fst.", "rest.schema.analysis.", "security.", "handler.admin."
++          "", "analysis.", "schema.", "handler.", "handler.tagger.", "search.", "update.", "core.", "response.", "request.",
++          "update.processor.", "util.", "spelling.", "handler.component.",
++          "spelling.suggest.", "spelling.suggest.fst.", "rest.schema.analysis.", "security.", "handler.admin."
    };
    private static final Charset UTF_8 = StandardCharsets.UTF_8;
  
@@@ -85,9 -100,6 +102,7 @@@
    private CoreContainer coreContainer;
    private PackageListeningClassLoader schemaLoader ;
  
 +  private PackageListeningClassLoader coreReloadingClassLoader ;
- 
- 
    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>());
@@@ -97,7 -109,7 +112,7 @@@
    // 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() */
@@@ -171,16 -163,12 +166,12 @@@
     */
    public SolrResourceLoader(Path instanceDir, ClassLoader parent) {
      if (instanceDir == null) {
-       this.instanceDir = SolrPaths.locateSolrHome();
-       log.debug("new SolrResourceLoader for deduced Solr Home: '{}'", this.instanceDir);
-     } else {
-       this.instanceDir = instanceDir;
-       log.debug("new SolrResourceLoader for directory: '{}'", this.instanceDir);
+       throw new NullPointerException("SolrResourceLoader instanceDir must be non-null");
      }
 -    
 +
+     this.instanceDir = instanceDir;
+     log.debug("new SolrResourceLoader for directory: '{}'", this.instanceDir);
+ 
      if (parent == null) {
        parent = getClass().getClassLoader();
      }
@@@ -206,11 -194,11 +197,11 @@@
  
      if (log.isInfoEnabled()) {
        log.info("Added {} libs to classloader, from paths: {}",
--          urls.size(), urls.stream()
--              .map(u -> u.getPath().substring(0, u.getPath().lastIndexOf("/")))
--              .sorted()
--              .distinct()
--              .collect(Collectors.toList()));
++              urls.size(), urls.stream()
++                      .map(u -> u.getPath().substring(0, u.getPath().lastIndexOf("/")))
++                      .sorted()
++                      .distinct()
++                      .collect(Collectors.toList()));
      }
    }
  
@@@ -329,7 -317,7 +320,7 @@@
      if (pathToCheck.startsWith(instanceDir))
        return pathToCheck;
      throw new IOException("File " + pathToCheck + " is outside resource loader dir " + instanceDir +
--        "; set -Dsolr.allow.unsafe.resourceloading=true to allow unsafe loading");
++            "; set -Dsolr.allow.unsafe.resourceloading=true to allow unsafe loading");
    }
  
    /**
@@@ -432,7 -420,7 +423,7 @@@
        return WordlistLoader.getLines(openResource(resource), charset);
      } catch (CharacterCodingException ex) {
        throw new SolrException(SolrException.ErrorCode.SERVER_ERROR,
--          "Error loading resource (wrong encoding?): " + resource, ex);
++              "Error loading resource (wrong encoding?): " + resource, ex);
      }
    }
  
@@@ -448,7 -436,7 +439,7 @@@
  
    // Using this pattern, legacy analysis components from previous Solr versions are identified and delegated to SPI loader:
    private static final Pattern legacyAnalysisPattern =
--      Pattern.compile("((\\Q" + base + ".analysis.\\E)|(\\Qsolr.\\E))([\\p{L}_$][\\p{L}\\p{N}_$]+?)(TokenFilter|Filter|Tokenizer|CharFilter)Factory");
++          Pattern.compile("((\\Q" + base + ".analysis.\\E)|(\\Qsolr.\\E))([\\p{L}_$][\\p{L}\\p{N}_$]+?)(TokenFilter|Filter|Tokenizer|CharFilter)Factory");
  
    @Override
    public <T> Class<? extends T> findClass(String cname, Class<T> expectedType) {
@@@ -529,16 -518,16 +521,16 @@@
          //cache the shortname vs FQN if it is loaded by the webapp classloader  and it is loaded
          // using a shortname
          if (clazz.getClassLoader() == SolrResourceLoader.class.getClassLoader() &&
--            !cname.equals(clazz.getName()) &&
--            (subpackages.length == 0 || subpackages == packages)) {
++                !cname.equals(clazz.getName()) &&
++                (subpackages.length == 0 || subpackages == packages)) {
            //store in the cache
            classNameCache.put(cname, clazz.getName());
          }
  
          // print warning if class is deprecated
          if (clazz.isAnnotationPresent(Deprecated.class)) {
-           log.warn("Solr loaded a deprecated plugin/analysis class [{}]. Please consult documentation how to replace it accordingly.",
-               cname);
+           DeprecationLog.log(cname,
 -            "Solr loaded a deprecated plugin/analysis class [" + cname + "]. Please consult documentation how to replace it accordingly.");
++                  "Solr loaded a deprecated plugin/analysis class [" + cname + "]. Please consult documentation how to replace it accordingly.");
          }
        }
      }
@@@ -586,7 -593,7 +596,7 @@@
  
      } catch (Error err) {
        log.error("Loading Class {} ({}) triggered serious java error: {}", cName, clazz.getName(),
--          err.getClass().getName(), err);
++              err.getClass().getName(), err);
  
        throw err;
  
@@@ -648,14 -654,6 +657,16 @@@
      this.config = core.getSolrConfig();
      this.coreId = core.uniqueId;
      this.coreContainer = core.getCoreContainer();
++    SolrCore.Provider coreProvider = core.coreProvider;
++
 +    this.coreReloadingClassLoader = new PackageListeningClassLoader(core.getCoreContainer(),
-         this, s -> config.maxPackageVersion(s), null){
++            this, s -> config.maxPackageVersion(s), null){
 +      @Override
 +      protected void doReloadAction(Ctx ctx) {
-          coreContainer.reload(coreName, coreId, true);
++        coreProvider.reload();
 +      }
 +    };
 +    core.getPackageListeners().addListener(coreReloadingClassLoader, true);
      if(getSchemaLoader() != null) core.getPackageListeners().addListener(schemaLoader);
  
      // make a copy to avoid potential deadlock of a callback calling newInstance and trying to
@@@ -743,34 -754,45 +767,45 @@@
    static {
      awareCompatibility = new HashMap<>();
      awareCompatibility.put(
--        SolrCoreAware.class, new Class<?>[]{
--            // DO NOT ADD THINGS TO THIS LIST -- ESPECIALLY THINGS THAT CAN BE CREATED DYNAMICALLY
--            // VIA RUNTIME APIS -- UNTILL CAREFULLY CONSIDERING THE ISSUES MENTIONED IN SOLR-8311
--            CodecFactory.class,
--            DirectoryFactory.class,
--            ManagedIndexSchemaFactory.class,
--            QueryResponseWriter.class,
--            SearchComponent.class,
--            ShardHandlerFactory.class,
--            SimilarityFactory.class,
--            SolrRequestHandler.class,
--            UpdateRequestProcessorFactory.class
--        }
++            SolrCoreAware.class, new Class<?>[]{
++                    // DO NOT ADD THINGS TO THIS LIST -- ESPECIALLY THINGS THAT CAN BE CREATED DYNAMICALLY
++                    // VIA RUNTIME APIS -- UNTILL CAREFULLY CONSIDERING THE ISSUES MENTIONED IN SOLR-8311
++                    CodecFactory.class,
++                    DirectoryFactory.class,
++                    ManagedIndexSchemaFactory.class,
++                    QueryResponseWriter.class,
++                    SearchComponent.class,
++                    ShardHandlerFactory.class,
++                    SimilarityFactory.class,
++                    SolrRequestHandler.class,
++                    UpdateRequestProcessorFactory.class
++            }
      );
  
      awareCompatibility.put(
--        ResourceLoaderAware.class, new Class<?>[]{
--            // DO NOT ADD THINGS TO THIS LIST -- ESPECIALLY THINGS THAT CAN BE CREATED DYNAMICALLY
--            // VIA RUNTIME APIS -- UNTILL CAREFULLY CONSIDERING THE ISSUES MENTIONED IN SOLR-8311
 -            // evaluate if this must go into schemaResourceLoaderComponents
--            CharFilterFactory.class,
--            TokenFilterFactory.class,
--            TokenizerFactory.class,
--            QParserPlugin.class,
--            FieldType.class
--        }
++            ResourceLoaderAware.class, new Class<?>[]{
++                    // DO NOT ADD THINGS TO THIS LIST -- ESPECIALLY THINGS THAT CAN BE CREATED DYNAMICALLY
++                    // VIA RUNTIME APIS -- UNTILL CAREFULLY CONSIDERING THE ISSUES MENTIONED IN SOLR-8311
++                    // evaluate if this must go into schemaResourceLoaderComponents
++                    CharFilterFactory.class,
++                    TokenFilterFactory.class,
++                    TokenizerFactory.class,
++                    QParserPlugin.class,
++                    FieldType.class
++            }
      );
    }
  
+   /**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);
++          CharFilterFactory.class,
++          TokenFilterFactory.class,
++          TokenizerFactory.class,
++          FieldType.class);
+ 
    /**
     * Utility function to throw an exception if the class is invalid
     */
@@@ -779,7 -801,7 +814,7 @@@
      Class[] valid = awareCompatibility.get(aware);
      if (valid == null) {
        throw new SolrException(SolrException.ErrorCode.SERVER_ERROR,
--          "Unknown Aware interface: " + aware);
++              "Unknown Aware interface: " + aware);
      }
      for (Class v : valid) {
        if (v.isInstance(obj)) {
@@@ -812,47 -834,27 +847,68 @@@
    public List<SolrInfoBean> getInfoMBeans() {
      return Collections.unmodifiableList(infoMBeans);
    }
 +  /**
 +   * Load a class using an appropriate {@link SolrResourceLoader} depending of the package on that class
 +   * @param registerCoreReloadListener register a listener for the package and reload the core if the package is changed.
 +   *                                   Use this sparingly. This will result in core reloads across all the cores in
 +   *                                   all collections using this configset
 +   */
 +  public  <T> Class<? extends T> findClass( PluginInfo info, Class<T>  type, boolean registerCoreReloadListener) {
 +    if(info.cName.pkg == null) return findClass(info.className, type);
 +    return _classLookup(info,
 +            (Function<PackageLoader.Package.Version, Class<? extends T>>) ver -> ver.getLoader().findClass(info.cName.className, type), registerCoreReloadListener);
 +
 +  }
 +
++
 +  private  <T> T _classLookup(PluginInfo info, Function<PackageLoader.Package.Version, T> fun, boolean registerCoreReloadListener ) {
 +    PluginInfo.ClassName cName = info.cName;
 +    if (registerCoreReloadListener) {
 +      if (coreReloadingClassLoader == null) {
 +        throw new SolrException(SolrException.ErrorCode.SERVER_ERROR, "Core not set");
 +      }
 +      return fun.apply(coreReloadingClassLoader.findPackageVersion(cName, true));
 +    } else {
 +      return fun.apply(coreReloadingClassLoader.findPackageVersion(cName, false));
 +    }
 +  }
 +
 +  /**
 +   *Create a n instance of a class using an appropriate {@link SolrResourceLoader} depending on the package of that class
 +   * @param registerCoreReloadListener register a listener for the package and reload the core if the package is changed.
 +   *                                   Use this sparingly. This will result in core reloads across all the cores in
 +   *                                   all collections using this configset
 +   */
 +  public <T> T newInstance(PluginInfo info, Class<T> type, boolean registerCoreReloadListener) {
 +    if(info.cName.pkg == null) {
 +      return newInstance(info.cName.className == null?
 +                      type.getName():
 +                      info.cName.className ,
 +              type);
 +    }
 +    return _classLookup( info, version -> version.getLoader().newInstance(info.cName.className, type), registerCoreReloadListener);
 +  }
  
+   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
      File confFile = new File(loader.getConfigDir(), resourceName);
diff --cc solr/core/src/java/org/apache/solr/pkg/PackagePluginHolder.java
index 0714543,332de74..9e4c0cb
--- a/solr/core/src/java/org/apache/solr/pkg/PackagePluginHolder.java
+++ b/solr/core/src/java/org/apache/solr/pkg/PackagePluginHolder.java
@@@ -19,13 -19,10 +19,13 @@@ package org.apache.solr.pkg
  
  import java.io.IOException;
  import java.lang.invoke.MethodHandles;
 +import java.util.Collections;
 +import java.util.UUID;
  
- import org.apache.lucene.analysis.util.ResourceLoaderAware;
+ import org.apache.lucene.util.ResourceLoaderAware;
  import org.apache.solr.common.MapWriter;
  import org.apache.solr.common.SolrException;
 +import org.apache.solr.core.CoreContainer;
  import org.apache.solr.core.PluginBag;
  import org.apache.solr.core.PluginInfo;
  import org.apache.solr.core.SolrConfig;
@@@ -96,49 -83,43 +92,43 @@@ public class PackagePluginHolder<T> ext
      }
    }
  
-   private synchronized void reload(PackageLoader.Package pkg) {
-     try (SolrCore core = coreContainer.getCore(coreName, coreId)) {
-       if (core == null) {
-         //this core got reloaded. do not do anything
-         return;
-       }
-       String lessThan = core.getSolrConfig().maxPackageVersion(info.pkgName);
- 
-       PackageLoader.Package.Version newest = pkg.getLatest(lessThan);
-       if (newest == null) {
-         log.error("No latest version available for package : {}", pkg.name());
-         return;
-       }
-       if (lessThan != null) {
-         PackageLoader.Package.Version pkgLatest = pkg.getLatest();
-         if (pkgLatest != newest) {
-           if (log.isInfoEnabled()) {
-             log.info("Using version :{}. latest is {},  params.json has config {} : {}", newest.getVersion(), pkgLatest.getVersion(), pkg.name(), lessThan);
-           }
+   private synchronized void reload(PackageLoader.Package pkg, SolrCore core) {
+     String lessThan = core.getSolrConfig().maxPackageVersion(info.pkgName);
+     PackageLoader.Package.Version newest = pkg.getLatest(lessThan);
+     if (newest == null) {
+       log.error("No latest version available for package : {}", pkg.name());
+       return;
+     }
+     if (lessThan != null) {
+       PackageLoader.Package.Version pkgLatest = pkg.getLatest();
+       if (pkgLatest != newest) {
+         if (log.isInfoEnabled()) {
+           log.info("Using version :{}. latest is {},  params.json has config {} : {}", newest.getVersion(), pkgLatest.getVersion(), pkg.name(), lessThan);
          }
        }
+     }
  
-       if (pkgVersion != null) {
-         if (newest == pkgVersion) {
-           //I'm already using the latest classloader in the package. nothing to do
-           return;
-         }
+     if (pkgVersion != null) {
+       if (newest == pkgVersion) {
+         //I'm already using the latest classloader in the package. nothing to do
+         return;
        }
+     }
  
-       if (log.isInfoEnabled()) {
-         log.info("loading plugin: {} -> {} using  package {}:{}",
-             pluginInfo.type, pluginInfo.name, pkg.name(), newest.getVersion());
-       }
-       initNewInstance(newest, core);
-       pkgVersion = newest;
+     if (log.isInfoEnabled()) {
+       log.info("loading plugin: {} -> {} using  package {}:{}",
 -          pluginInfo.type, pluginInfo.name, pkg.name(), newest.getVersion());
++              pluginInfo.type, pluginInfo.name, pkg.name(), newest.getVersion());
      }
  
+     initNewInstance(newest, core);
+     pkgVersion = newest;
+ 
    }
  
    @SuppressWarnings({"unchecked"})
    protected Object initNewInstance(PackageLoader.Package.Version newest, SolrCore core) {
      Object instance = SolrCore.createInstance(pluginInfo.className,
--        pluginMeta.clazz, pluginMeta.getCleanTag(), core, newest.getLoader());
++            pluginMeta.clazz, pluginMeta.getCleanTag(), core, newest.getLoader());
      PluginBag.initInstance(instance, pluginInfo);
      handleAwareCallbacks(newest.getLoader(), instance, core);
      T old = inst;
diff --cc solr/core/src/java/org/apache/solr/search/CacheConfig.java
index 1ae9151,d8c41c6..d747ba9
--- a/solr/core/src/java/org/apache/solr/search/CacheConfig.java
+++ b/solr/core/src/java/org/apache/solr/search/CacheConfig.java
@@@ -23,15 -23,13 +23,17 @@@ import java.util.HashMap
  import java.util.LinkedHashMap;
  import java.util.List;
  import java.util.Map;
 +import java.util.function.Supplier;
  
+ import org.apache.solr.common.MapSerializable;
  import org.apache.solr.common.SolrException;
+ import org.apache.solr.common.util.DOMUtil;
  import org.apache.solr.common.util.StrUtils;
- import org.apache.solr.common.MapSerializable;
++
 +import org.apache.solr.core.PluginInfo;
++
  import org.apache.solr.core.SolrConfig;
  import org.apache.solr.core.SolrResourceLoader;
- import org.apache.solr.util.DOMUtil;
  import org.slf4j.Logger;
  import org.slf4j.LoggerFactory;
  import org.w3c.dom.Node;
@@@ -48,17 -46,11 +50,17 @@@ import static org.apache.solr.common.pa
   */
  public class CacheConfig implements MapSerializable{
    private static final Logger log = LoggerFactory.getLogger(MethodHandles.lookup().lookupClass());
--  
++
    private String nodeName;
  
 +
 +  /**
 +   * When this object is created, the core is not yet available . So, if the class is to be
 +   * loaded from a package we should have a corresponding core
 +   *
 +   */
    @SuppressWarnings({"rawtypes"})
 -  private Class<? extends SolrCache> clazz;
 +  private Supplier<Class<? extends SolrCache>> clazz;
    private Map<String,String> args;
    private CacheRegenerator regenerator;
  
@@@ -93,7 -85,7 +95,7 @@@
        Node node = nodes.item(i);
        if ("true".equals(DOMUtil.getAttrOrDefault(node, "enabled", "true"))) {
          CacheConfig config = getConfig(solrConfig, node.getNodeName(),
--                                       DOMUtil.toMap(node.getAttributes()), configPath);
++                DOMUtil.toMap(node.getAttributes()), configPath);
          result.put(config.args.get(NAME), config);
        }
      }
@@@ -159,7 -138,8 +161,7 @@@
      if (config.regenImpl != null) {
        config.regenerator = loader.newInstance(config.regenImpl, CacheRegenerator.class);
      }
--    
++
      return config;
    }
  
diff --cc solr/core/src/java/org/apache/solr/update/UpdateHandler.java
index 7b098f5,14b78af..6e8c3a4
--- a/solr/core/src/java/org/apache/solr/update/UpdateHandler.java
+++ b/solr/core/src/java/org/apache/solr/update/UpdateHandler.java
@@@ -112,7 -108,7 +112,7 @@@ public abstract class UpdateHandler imp
    public UpdateHandler(SolrCore core)  {
      this(core, null);
    }
--  
++
    public UpdateHandler(SolrCore core, UpdateLog updateLog)  {
      this.core=core;
      idField = core.getLatestSchema().getUniqueKeyField();


[lucene] 15/42: more refactoring and reviw comments implemented

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

dweiss pushed a commit to branch jira/solr14155-1
in repository https://gitbox.apache.org/repos/asf/lucene.git

commit 14f9ed6c68f12be2e4d446b9a6bb8985b6b0b246
Author: noblepaul <no...@gmail.com>
AuthorDate: Thu Jul 16 12:05:41 2020 +1000

    more refactoring and reviw comments implemented
---
 solr/core/src/java/org/apache/solr/cloud/ZkSolrResourceLoader.java | 1 -
 1 file changed, 1 deletion(-)

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 05f9499..4d9d910 100644
--- a/solr/core/src/java/org/apache/solr/cloud/ZkSolrResourceLoader.java
+++ b/solr/core/src/java/org/apache/solr/cloud/ZkSolrResourceLoader.java
@@ -26,7 +26,6 @@ import java.nio.file.Path;
 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;


[lucene] 10/42: moved some methods to SRL

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

dweiss pushed a commit to branch jira/solr14155-1
in repository https://gitbox.apache.org/repos/asf/lucene.git

commit 0d6d206fcd846859c01be3fe31b552445ab1c71f
Author: noblepaul <no...@gmail.com>
AuthorDate: Wed Jul 15 10:40:30 2020 +1000

    moved some methods to SRL
---
 .../org/apache/solr/core/DirectoryFactory.java     |  4 +--
 .../src/java/org/apache/solr/core/SolrCore.java    |  9 +++--
 .../org/apache/solr/core/SolrResourceLoader.java   | 41 ++++++++++++++++++++++
 ...der.java => CoreRefreshingPackageListener.java} | 40 ++++-----------------
 .../java/org/apache/solr/search/CacheConfig.java   | 23 +++++++++---
 .../java/org/apache/solr/update/UpdateHandler.java |  3 +-
 6 files changed, 73 insertions(+), 47 deletions(-)

diff --git a/solr/core/src/java/org/apache/solr/core/DirectoryFactory.java b/solr/core/src/java/org/apache/solr/core/DirectoryFactory.java
index d8e1728..d83f0fa 100644
--- a/solr/core/src/java/org/apache/solr/core/DirectoryFactory.java
+++ b/solr/core/src/java/org/apache/solr/core/DirectoryFactory.java
@@ -36,7 +36,7 @@ import org.apache.lucene.store.IOContext;
 import org.apache.lucene.store.LockFactory;
 import org.apache.solr.common.SolrException;
 import org.apache.solr.core.CachingDirectoryFactory.CloseListener;
-import org.apache.solr.pkg.CoreRefreshingClassLoader;
+import org.apache.solr.pkg.CoreRefreshingPackageListener;
 import org.apache.solr.util.plugin.NamedListInitializedPlugin;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
@@ -420,7 +420,7 @@ public abstract class DirectoryFactory implements NamedListInitializedPlugin,
     final DirectoryFactory dirFactory;
     if (info != null) {
       log.debug(info.className);
-      dirFactory = CoreRefreshingClassLoader.createInst(config.getResourceLoader(), info, DirectoryFactory.class);
+      dirFactory = CoreRefreshingPackageListener.createInst(config.getResourceLoader(), info, DirectoryFactory.class);
       // allow DirectoryFactory instances to access the CoreContainer
       dirFactory.initCoreContainer(cc);
       dirFactory.init(info.initArgs);
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 e5f8707..e8c38f1 100644
--- a/solr/core/src/java/org/apache/solr/core/SolrCore.java
+++ b/solr/core/src/java/org/apache/solr/core/SolrCore.java
@@ -112,7 +112,6 @@ import org.apache.solr.logging.MDCLoggingContext;
 import org.apache.solr.metrics.SolrCoreMetricManager;
 import org.apache.solr.metrics.SolrMetricProducer;
 import org.apache.solr.metrics.SolrMetricsContext;
-import org.apache.solr.pkg.CoreRefreshingClassLoader;
 import org.apache.solr.pkg.PackageListeners;
 import org.apache.solr.pkg.PackageLoader;
 import org.apache.solr.pkg.PackagePluginHolder;
@@ -734,7 +733,7 @@ public final class SolrCore implements SolrInfoBean, Closeable {
     final RecoveryStrategy.Builder rsBuilder;
     if (info != null && info.className != null) {
       log.info(info.className);
-      rsBuilder = CoreRefreshingClassLoader.createInst(getResourceLoader(), info, RecoveryStrategy.Builder.class);
+      rsBuilder = getResourceLoader().newInstance( info, RecoveryStrategy.Builder.class, true);
     } else {
       log.debug("solr.RecoveryStrategy.Builder");
       rsBuilder = new RecoveryStrategy.Builder();
@@ -749,7 +748,7 @@ public final class SolrCore implements SolrInfoBean, Closeable {
     IndexReaderFactory indexReaderFactory;
     PluginInfo info = solrConfig.getPluginInfo(IndexReaderFactory.class.getName());
     if (info != null) {
-      indexReaderFactory = CoreRefreshingClassLoader.createInst(resourceLoader, info, IndexReaderFactory.class);
+      indexReaderFactory = resourceLoader.newInstance(info, IndexReaderFactory.class, true);
       indexReaderFactory.init(info.initArgs);
     } else {
       indexReaderFactory = new StandardIndexReaderFactory();
@@ -1416,7 +1415,7 @@ public final class SolrCore implements SolrInfoBean, Closeable {
     final PluginInfo info = solrConfig.getPluginInfo(CodecFactory.class.getName());
     final CodecFactory factory;
     if (info != null) {
-      factory = CoreRefreshingClassLoader.createInst(resourceLoader,  info, CodecFactory.class);
+      factory = resourceLoader.newInstance( info, CodecFactory.class, true);
       factory.init(info.initArgs);
     } else {
       factory = new CodecFactory() {
@@ -1454,7 +1453,7 @@ public final class SolrCore implements SolrInfoBean, Closeable {
     final StatsCache cache;
     PluginInfo pluginInfo = solrConfig.getPluginInfo(StatsCache.class.getName());
     if (pluginInfo != null && pluginInfo.className != null && pluginInfo.className.length() > 0) {
-      cache = CoreRefreshingClassLoader.createInst(resourceLoader, pluginInfo, StatsCache.class);
+      cache = resourceLoader.newInstance( pluginInfo, StatsCache.class, true);
       initPlugin(pluginInfo ,cache);
       if (log.isDebugEnabled()) {
         log.debug("Using statsCache impl: {}", cache.getClass().getName());
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 354a8b0..8535e81 100644
--- a/solr/core/src/java/org/apache/solr/core/SolrResourceLoader.java
+++ b/solr/core/src/java/org/apache/solr/core/SolrResourceLoader.java
@@ -32,6 +32,7 @@ import java.nio.file.Path;
 import java.nio.file.PathMatcher;
 import java.util.*;
 import java.util.concurrent.ConcurrentHashMap;
+import java.util.function.Function;
 import java.util.regex.Matcher;
 import java.util.regex.Pattern;
 import java.util.stream.Collectors;
@@ -45,6 +46,8 @@ import org.apache.lucene.util.IOUtils;
 import org.apache.solr.common.SolrException;
 import org.apache.solr.handler.component.SearchComponent;
 import org.apache.solr.handler.component.ShardHandlerFactory;
+import org.apache.solr.pkg.CoreRefreshingPackageListener;
+import org.apache.solr.pkg.PackageLoader;
 import org.apache.solr.request.SolrRequestHandler;
 import org.apache.solr.response.QueryResponseWriter;
 import org.apache.solr.rest.RestManager;
@@ -763,7 +766,45 @@ public class SolrResourceLoader implements ResourceLoader, Closeable {
   public List<SolrInfoBean> getInfoMBeans() {
     return Collections.unmodifiableList(infoMBeans);
   }
+  /**
+   * Load a class using an appropriate {@link SolrResourceLoader} depending of the package on that class
+   * @param registerCoreReloadListener register a listener for the package and reload the core if the package is changed.
+   *                                   Use this sparingly. This will result in core reloads across all the cores in
+   *                                   all collections using this configset
+   */
+  public  <T> Class<? extends T> findClass( PluginInfo info, Class<T>  type, boolean registerCoreReloadListener) {
+    if(info.cName.pkg == null) return findClass(info.className, type);
+    return _classLookup(info,
+            (Function<PackageLoader.Package.Version, Class<? extends T>>) ver -> ver.getLoader().findClass(info.cName.className, type), registerCoreReloadListener);
+
+  }
 
+  private  <T> T _classLookup(PluginInfo info, Function<PackageLoader.Package.Version, T> fun, boolean registerCoreReloadListener ) {
+    PluginInfo.ClassName cName = info.cName;
+    PackageLoader.Package.Version latest = getCoreContainer().getPackageLoader().getPackage(cName.pkg)
+            .getLatest(core.getSolrConfig().maxPackageVersion(cName.pkg));
+    T result = fun.apply(latest);
+    if (registerCoreReloadListener && getCore() != null) {
+      getCore().getPackageListeners().addListener(new CoreRefreshingPackageListener(core, info, latest));
+    }
+    return result;
+  }
+
+  /**
+   *Create a n instance of a class using an appropriate {@link SolrResourceLoader} depending on the package of that class
+   * @param registerCoreReloadListener register a listener for the package and reload the core if the package is changed.
+   *                                   Use this sparingly. This will result in core reloads across all the cores in
+   *                                   all collections using this configset
+   */
+  public <T> T newInstance(PluginInfo info, Class<T> type, boolean registerCoreReloadListener) {
+    if(info.cName.pkg == null) {
+      return newInstance(info.cName.className == null?
+                      type.getName():
+                      info.cName.className ,
+              type);
+    }
+    return _classLookup( info, version -> version.getLoader().newInstance(info.cName.className, type), registerCoreReloadListener);
+  }
 
   public CoreContainer getCoreContainer(){
     return coreContainer;
diff --git a/solr/core/src/java/org/apache/solr/pkg/CoreRefreshingClassLoader.java b/solr/core/src/java/org/apache/solr/pkg/CoreRefreshingPackageListener.java
similarity index 52%
rename from solr/core/src/java/org/apache/solr/pkg/CoreRefreshingClassLoader.java
rename to solr/core/src/java/org/apache/solr/pkg/CoreRefreshingPackageListener.java
index f28baf7..41e61e4 100644
--- a/solr/core/src/java/org/apache/solr/pkg/CoreRefreshingClassLoader.java
+++ b/solr/core/src/java/org/apache/solr/pkg/CoreRefreshingPackageListener.java
@@ -17,8 +17,6 @@
 
 package org.apache.solr.pkg;
 
-import java.util.function.Function;
-
 import org.apache.solr.core.PluginInfo;
 import org.apache.solr.core.SolrCore;
 import org.apache.solr.core.SolrResourceLoader;
@@ -26,12 +24,12 @@ import org.apache.solr.core.SolrResourceLoader;
 /**A utility class that loads classes from packages and reloads core if any of those packages are updated
  *
  */
-public class CoreRefreshingClassLoader implements PackageListeners.Listener {
+public class CoreRefreshingPackageListener implements PackageListeners.Listener {
   private final SolrCore solrCore;
   private final PluginInfo info;
   private final PackageLoader.Package.Version version;
 
-  public CoreRefreshingClassLoader(SolrCore solrCore, PluginInfo info, PackageLoader.Package.Version version) {
+  public CoreRefreshingPackageListener(SolrCore solrCore, PluginInfo info, PackageLoader.Package.Version version) {
     this.solrCore = solrCore;
     this.info = info;
     this.version = version;
@@ -54,7 +52,8 @@ public class CoreRefreshingClassLoader implements PackageListeners.Listener {
   public void changed(PackageLoader.Package pkg, Ctx ctx) {
     PackageLoader.Package.Version version = pkg.getLatest(solrCore.getSolrConfig().maxPackageVersion(info.cName.pkg));
     if(version != this.version) {
-      ctx.runLater(SolrCore.class.getName(), () -> solrCore.getCoreContainer().reload(CoreRefreshingClassLoader.class.getName() , solrCore.uniqueId));
+      ctx.runLater(CoreRefreshingPackageListener.class.getSimpleName()+"/"+ SolrCore.class.getName(),
+              () -> solrCore.getCoreContainer().reload(CoreRefreshingPackageListener.class.getName() , solrCore.uniqueId));
     }
   }
 
@@ -63,36 +62,9 @@ public class CoreRefreshingClassLoader implements PackageListeners.Listener {
     return version;
   }
 
-  /**
-   * Load a class using an appropriate {@link SolrResourceLoader} depending of the package of that class
-   */
-  public static <T> Class<? extends T> findClass(SolrResourceLoader srl, PluginInfo info, Class<T>  type) {
-    if(info.cName.pkg == null) return srl.findClass(info.className, type);
-    return _get(srl, info,
-            (Function<PackageLoader.Package.Version, Class<? extends T>>) ver -> ver.getLoader().findClass(info.cName.className, type));
-
-  }
-
-  private static  <T> T _get(SolrResourceLoader srl, PluginInfo info, Function<PackageLoader.Package.Version, T> fun) {
-    PluginInfo.ClassName cName = info.cName;
-    SolrCore core = srl.getCore();
-    PackageLoader.Package.Version latest = srl.getCoreContainer().getPackageLoader().getPackage(cName.pkg)
-            .getLatest(core.getSolrConfig().maxPackageVersion(cName.pkg));
-    T result = fun.apply(latest);
-    if(srl.getCore() !=null) {
-      srl.getCore().getPackageListeners().addListener(new CoreRefreshingClassLoader(core, info, latest));
-    }
-    return result;
-  }
-
   public static <T> T createInst(SolrResourceLoader srl, PluginInfo info, Class<T> type) {
-    if(info.cName.pkg == null) {
-        return srl.newInstance(info.cName.className == null?
-                type.getName():
-                info.cName.className ,
-                type);
+    return srl.newInstance(info, type,true);
     }
-    return _get(srl, info, version -> version.getLoader().newInstance(info.cName.className, type));
-  }
+
 
 }
diff --git a/solr/core/src/java/org/apache/solr/search/CacheConfig.java b/solr/core/src/java/org/apache/solr/search/CacheConfig.java
index 807f3c0..8d7edd5 100644
--- a/solr/core/src/java/org/apache/solr/search/CacheConfig.java
+++ b/solr/core/src/java/org/apache/solr/search/CacheConfig.java
@@ -31,7 +31,6 @@ import org.apache.solr.common.MapSerializable;
 import org.apache.solr.core.PluginInfo;
 import org.apache.solr.core.SolrConfig;
 import org.apache.solr.core.SolrResourceLoader;
-import org.apache.solr.pkg.CoreRefreshingClassLoader;
 import org.apache.solr.util.DOMUtil;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
@@ -52,6 +51,12 @@ public class CacheConfig implements MapSerializable{
   
   private String nodeName;
 
+
+  /**
+   * When this object is created, the core is not yet available . So, if the class is to be
+   * loaded from a package we should have  acorresponding core
+   *
+   */
   @SuppressWarnings({"rawtypes"})
   private Supplier<Class<? extends SolrCache>> clazz;
   private Map<String,String> args;
@@ -137,9 +142,19 @@ public class CacheConfig implements MapSerializable{
     SolrResourceLoader loader = solrConfig.getResourceLoader();
     config.cacheImpl = config.args.get("class");
     if (config.cacheImpl == null) config.cacheImpl = "solr.CaffeineCache";
-    config.clazz = () -> CoreRefreshingClassLoader.findClass(loader,
-            new PluginInfo("cache", Collections.singletonMap("class", config.cacheImpl)),
-            SolrCache.class);
+    config.clazz = new Supplier<>() {
+      @SuppressWarnings("rawtypes")
+      Class<SolrCache> loadedClass;
+
+      @Override
+      @SuppressWarnings("rawtypes")
+      public Class<? extends SolrCache> get() {
+        if (loadedClass != null) return loadedClass;
+        return loadedClass = (Class<SolrCache>) loader.findClass(
+                new PluginInfo("cache", Collections.singletonMap("class", config.cacheImpl)),
+                SolrCache.class, true);
+      }
+    };
     config.regenImpl = config.args.get("regenerator");
     if (config.regenImpl != null) {
       config.regenerator = loader.newInstance(config.regenImpl, CacheRegenerator.class);
diff --git a/solr/core/src/java/org/apache/solr/update/UpdateHandler.java b/solr/core/src/java/org/apache/solr/update/UpdateHandler.java
index f82effc..dd275dc 100644
--- a/solr/core/src/java/org/apache/solr/update/UpdateHandler.java
+++ b/solr/core/src/java/org/apache/solr/update/UpdateHandler.java
@@ -23,7 +23,6 @@ import java.util.Vector;
 import org.apache.solr.core.*;
 import org.apache.solr.core.PluginBag.PluginHolder;
 import org.apache.solr.metrics.SolrMetricsContext;
-import org.apache.solr.pkg.CoreRefreshingClassLoader;
 import org.apache.solr.pkg.PackagePluginHolder;
 import org.apache.solr.schema.FieldType;
 import org.apache.solr.schema.SchemaField;
@@ -127,7 +126,7 @@ public abstract class UpdateHandler implements SolrInfoBean {
         ulog = new HdfsUpdateLog(((HdfsDirectoryFactory)dirFactory).getConfDir());
       } else {
         ulog = ulogPluginInfo.className == null ? new UpdateLog():
-                CoreRefreshingClassLoader.createInst(core.getResourceLoader(), ulogPluginInfo, UpdateLog.class);
+                core.getResourceLoader().newInstance(ulogPluginInfo, UpdateLog.class, true);
       }
 
       if (!core.isReloaded() && !dirFactory.isPersistent()) {


[lucene] 12/42: refactoring

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

dweiss pushed a commit to branch jira/solr14155-1
in repository https://gitbox.apache.org/repos/asf/lucene.git

commit 84169b9704292f48876c39ccb9fe1e360707c50f
Author: noblepaul <no...@gmail.com>
AuthorDate: Wed Jul 15 14:32:59 2020 +1000

    refactoring
---
 .../java/org/apache/solr/core/CoreContainer.java   |   1 +
 .../org/apache/solr/core/DirectoryFactory.java     |   3 +-
 .../java/org/apache/solr/core/SolrClassLoader.java |  31 ++++
 .../src/java/org/apache/solr/core/SolrCore.java    |  12 +-
 .../org/apache/solr/core/SolrResourceLoader.java   |  14 +-
 .../org/apache/solr/handler/SolrConfigHandler.java |   2 +-
 .../solr/handler/component/SearchHandler.java      |   5 -
 .../solr/pkg/CoreRefreshingPackageListener.java    |  70 ---------
 .../org/apache/solr/pkg/MultiPackageListener.java  | 158 +++++++++++++++++++++
 .../src/java/org/apache/solr/pkg/PackageAPI.java   |  11 +-
 .../java/org/apache/solr/pkg/PackageListeners.java |  30 ++--
 .../java/org/apache/solr/pkg/PackageLoader.java    |   3 +
 .../org/apache/solr/pkg/PackagePluginHolder.java   |   3 +-
 13 files changed, 247 insertions(+), 96 deletions(-)

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 1d24c8d..86573d8 100644
--- a/solr/core/src/java/org/apache/solr/core/CoreContainer.java
+++ b/solr/core/src/java/org/apache/solr/core/CoreContainer.java
@@ -1417,6 +1417,7 @@ public class CoreContainer {
         return core.getDirectoryFactory().isSharedStorage();
       } else {
         ConfigSet configSet = coreConfigService.loadConfigSet(cd);
+        configSet.getSolrConfig().getResourceLoader().core = core;
         return DirectoryFactory.loadDirectoryFactory(configSet.getSolrConfig(), this, null).isSharedStorage();
       }
     }
diff --git a/solr/core/src/java/org/apache/solr/core/DirectoryFactory.java b/solr/core/src/java/org/apache/solr/core/DirectoryFactory.java
index d83f0fa..619e7c9 100644
--- a/solr/core/src/java/org/apache/solr/core/DirectoryFactory.java
+++ b/solr/core/src/java/org/apache/solr/core/DirectoryFactory.java
@@ -36,7 +36,6 @@ import org.apache.lucene.store.IOContext;
 import org.apache.lucene.store.LockFactory;
 import org.apache.solr.common.SolrException;
 import org.apache.solr.core.CachingDirectoryFactory.CloseListener;
-import org.apache.solr.pkg.CoreRefreshingPackageListener;
 import org.apache.solr.util.plugin.NamedListInitializedPlugin;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
@@ -420,7 +419,7 @@ public abstract class DirectoryFactory implements NamedListInitializedPlugin,
     final DirectoryFactory dirFactory;
     if (info != null) {
       log.debug(info.className);
-      dirFactory = CoreRefreshingPackageListener.createInst(config.getResourceLoader(), info, DirectoryFactory.class);
+      dirFactory = config.getResourceLoader().newInstance (info, DirectoryFactory.class, true);
       // allow DirectoryFactory instances to access the CoreContainer
       dirFactory.initCoreContainer(cc);
       dirFactory.init(info.initArgs);
diff --git a/solr/core/src/java/org/apache/solr/core/SolrClassLoader.java b/solr/core/src/java/org/apache/solr/core/SolrClassLoader.java
new file mode 100644
index 0000000..2e04027
--- /dev/null
+++ b/solr/core/src/java/org/apache/solr/core/SolrClassLoader.java
@@ -0,0 +1,31 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.solr.core;
+
+
+/**
+ * A generic interface to load plugin classes
+ */
+public interface SolrClassLoader {
+
+    <T> T newInstance(String cname, Class<T> expectedType, String... subpackages);
+
+    @SuppressWarnings({"rawtypes"})
+    <T> T newInstance(String cName, Class<T> expectedType, String[] subPackages, Class[] params, Object[] args);
+
+    <T> Class<? extends T> findClass(String cname, Class<T> expectedType);
+}
\ No newline at end of file
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 e8c38f1..ed64d35 100644
--- a/solr/core/src/java/org/apache/solr/core/SolrCore.java
+++ b/solr/core/src/java/org/apache/solr/core/SolrCore.java
@@ -57,6 +57,7 @@ import java.util.concurrent.Future;
 import java.util.concurrent.TimeUnit;
 import java.util.concurrent.atomic.AtomicInteger;
 import java.util.concurrent.locks.ReentrantLock;
+import java.util.function.Function;
 
 import com.codahale.metrics.Counter;
 import com.codahale.metrics.Timer;
@@ -112,6 +113,7 @@ import org.apache.solr.logging.MDCLoggingContext;
 import org.apache.solr.metrics.SolrCoreMetricManager;
 import org.apache.solr.metrics.SolrMetricProducer;
 import org.apache.solr.metrics.SolrMetricsContext;
+import org.apache.solr.pkg.MultiPackageListener;
 import org.apache.solr.pkg.PackageListeners;
 import org.apache.solr.pkg.PackageLoader;
 import org.apache.solr.pkg.PackagePluginHolder;
@@ -229,7 +231,8 @@ public final class SolrCore implements SolrInfoBean, Closeable {
   private final MemClassLoader memClassLoader;
 
   private final CircuitBreakerManager circuitBreakerManager;
-
+  //a single package listener for all cores that require core reloading
+  private final MultiPackageListener coreReloadingPackageListener;
   private final List<Runnable> confListeners = new CopyOnWriteArrayList<>();
 
   private final ReentrantLock ruleExpiryLock;
@@ -276,6 +279,9 @@ public final class SolrCore implements SolrInfoBean, Closeable {
     return restManager;
   }
 
+  public MultiPackageListener getCoreReloadingPackageListener(){
+    return coreReloadingPackageListener;
+  }
   public PackageListeners getPackageListeners() {
     return packageListeners;
   }
@@ -953,6 +959,10 @@ public final class SolrCore implements SolrInfoBean, Closeable {
       this.solrConfig = configSet.getSolrConfig();
       this.resourceLoader = configSet.getSolrConfig().getResourceLoader();
       this.resourceLoader.core = this;
+      this.coreReloadingPackageListener = new MultiPackageListener(coreContainer,
+              resourceLoader,
+              pkg -> solrConfig.maxPackageVersion(pkg),
+              () -> coreContainer.reload(name, uniqueId));
       this.configSetProperties = configSet.getProperties();
       // Initialize the metrics manager
       this.coreMetricManager = initCoreMetricManager(solrConfig);
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 8535e81..f9cd5d9 100644
--- a/solr/core/src/java/org/apache/solr/core/SolrResourceLoader.java
+++ b/solr/core/src/java/org/apache/solr/core/SolrResourceLoader.java
@@ -46,7 +46,6 @@ import org.apache.lucene.util.IOUtils;
 import org.apache.solr.common.SolrException;
 import org.apache.solr.handler.component.SearchComponent;
 import org.apache.solr.handler.component.ShardHandlerFactory;
-import org.apache.solr.pkg.CoreRefreshingPackageListener;
 import org.apache.solr.pkg.PackageLoader;
 import org.apache.solr.request.SolrRequestHandler;
 import org.apache.solr.response.QueryResponseWriter;
@@ -781,13 +780,14 @@ public class SolrResourceLoader implements ResourceLoader, Closeable {
 
   private  <T> T _classLookup(PluginInfo info, Function<PackageLoader.Package.Version, T> fun, boolean registerCoreReloadListener ) {
     PluginInfo.ClassName cName = info.cName;
-    PackageLoader.Package.Version latest = getCoreContainer().getPackageLoader().getPackage(cName.pkg)
-            .getLatest(core.getSolrConfig().maxPackageVersion(cName.pkg));
-    T result = fun.apply(latest);
-    if (registerCoreReloadListener && getCore() != null) {
-      getCore().getPackageListeners().addListener(new CoreRefreshingPackageListener(core, info, latest));
+    if (registerCoreReloadListener) {
+      if (getCore() == null) {
+        throw new SolrException(SolrException.ErrorCode.SERVER_ERROR, "SolrCore not set");
+      }
+      return fun.apply(getCore().getCoreReloadingPackageListener().findPkgVersion(cName, true));
+    } else {
+      return fun.apply(getCore().getCoreReloadingPackageListener().findPkgVersion(cName, false));
     }
-    return result;
   }
 
   /**
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 9ff0e66..b94064a 100644
--- a/solr/core/src/java/org/apache/solr/handler/SolrConfigHandler.java
+++ b/solr/core/src/java/org/apache/solr/handler/SolrConfigHandler.java
@@ -267,7 +267,7 @@ public class SolrConfigHandler extends RequestHandlerBase implements SolrCoreAwa
                       if (o instanceof Map) {
                         @SuppressWarnings({"rawtypes"})
                         Map m1 = (Map) o;
-                        m1.put("_packageinfo_", listener.getPackageVersion());
+                        m1.put("_packageinfo_", listener.getPackageVersion(info.cName));
                       }
                     }
                   }
diff --git a/solr/core/src/java/org/apache/solr/handler/component/SearchHandler.java b/solr/core/src/java/org/apache/solr/handler/component/SearchHandler.java
index 6ee180e..c2bd1b6 100644
--- a/solr/core/src/java/org/apache/solr/handler/component/SearchHandler.java
+++ b/solr/core/src/java/org/apache/solr/handler/component/SearchHandler.java
@@ -171,11 +171,6 @@ public class SearchHandler extends RequestHandlerBase implements SolrCoreAware,
           // but it is not worth optimizing as these are lightweight objects
           components = null;
         }
-
-        @Override
-        public PackageLoader.Package.Version getPackageVersion() {
-          return null;
-        }
       });
     }
 
diff --git a/solr/core/src/java/org/apache/solr/pkg/CoreRefreshingPackageListener.java b/solr/core/src/java/org/apache/solr/pkg/CoreRefreshingPackageListener.java
deleted file mode 100644
index 41e61e4..0000000
--- a/solr/core/src/java/org/apache/solr/pkg/CoreRefreshingPackageListener.java
+++ /dev/null
@@ -1,70 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.solr.pkg;
-
-import org.apache.solr.core.PluginInfo;
-import org.apache.solr.core.SolrCore;
-import org.apache.solr.core.SolrResourceLoader;
-
-/**A utility class that loads classes from packages and reloads core if any of those packages are updated
- *
- */
-public class CoreRefreshingPackageListener implements PackageListeners.Listener {
-  private final SolrCore solrCore;
-  private final PluginInfo info;
-  private final PackageLoader.Package.Version version;
-
-  public CoreRefreshingPackageListener(SolrCore solrCore, PluginInfo info, PackageLoader.Package.Version version) {
-    this.solrCore = solrCore;
-    this.info = info;
-    this.version = version;
-  }
-
-  @Override
-  public String packageName() {
-    return info.cName.pkg;
-  }
-
-  public SolrResourceLoader getLoader() {
-    return version.getLoader();
-  }
-  @Override
-  public PluginInfo pluginInfo() {
-    return info;
-  }
-
-  @Override
-  public void changed(PackageLoader.Package pkg, Ctx ctx) {
-    PackageLoader.Package.Version version = pkg.getLatest(solrCore.getSolrConfig().maxPackageVersion(info.cName.pkg));
-    if(version != this.version) {
-      ctx.runLater(CoreRefreshingPackageListener.class.getSimpleName()+"/"+ SolrCore.class.getName(),
-              () -> solrCore.getCoreContainer().reload(CoreRefreshingPackageListener.class.getName() , solrCore.uniqueId));
-    }
-  }
-
-  @Override
-  public PackageLoader.Package.Version getPackageVersion() {
-    return version;
-  }
-
-  public static <T> T createInst(SolrResourceLoader srl, PluginInfo info, Class<T> type) {
-    return srl.newInstance(info, type,true);
-    }
-
-
-}
diff --git a/solr/core/src/java/org/apache/solr/pkg/MultiPackageListener.java b/solr/core/src/java/org/apache/solr/pkg/MultiPackageListener.java
new file mode 100644
index 0000000..13dd49d
--- /dev/null
+++ b/solr/core/src/java/org/apache/solr/pkg/MultiPackageListener.java
@@ -0,0 +1,158 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.solr.pkg;
+
+import org.apache.lucene.analysis.util.ResourceLoaderAware;
+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.core.SolrClassLoader;
+import org.apache.solr.core.SolrResourceLoader;
+
+import java.io.IOException;
+import java.util.HashMap;
+import java.util.Map;
+import java.util.Objects;
+import java.util.function.Function;
+/**
+ * A {@link SolrClassLoader} that is designed to listen to a set of packages.
+ * This class would register a listener each package that is loaded through this
+ * if any of those packages are updated , the onReload runnable is executed
+ * */
+public class MultiPackageListener implements SolrClassLoader , PackageListeners.Listener {
+    private final CoreContainer coreContainer;
+    private final SolrResourceLoader fallbackResourceLoader;
+    private final Function<String, String> pkgVersionSupplier;
+    /** package name and the versions that we are tracking
+     */
+    private Map<String ,PackageAPI.PkgVersion> packageVersions =  new HashMap<>(1);
+    private final Runnable onReload;
+
+    /**
+     * @param fallbackResourceLoader The {@link SolrResourceLoader} to use if no package is specified
+     * @param pkgVersionSupplier Get the version configured for a given package
+     * @param onReload The callback function that should be run if a package is updated
+     */
+    public MultiPackageListener(CoreContainer coreContainer,
+                                SolrResourceLoader fallbackResourceLoader,
+                                Function<String, String> pkgVersionSupplier,
+                                Runnable onReload) {
+        this.coreContainer = coreContainer;
+        this.fallbackResourceLoader = fallbackResourceLoader;
+        this.pkgVersionSupplier = pkgVersionSupplier;
+        this.onReload = () -> {
+            //clear our current versions. When new classes are loaded from packages, fresh data can be populated
+            packageVersions = new HashMap<>();
+            onReload.run();
+        };
+    }
+
+
+    @Override
+    public <T> T newInstance(String cname, Class<T> expectedType, String... subpackages) {
+        PluginInfo.ClassName cName = new PluginInfo.ClassName(cname);
+        if(cName.pkg == null){
+            return fallbackResourceLoader.newInstance(cname, expectedType, subpackages);
+        } else {
+            PackageLoader.Package.Version version = findPkgVersion(cName, true);
+            return applyResourceLoaderAware(version, version.getLoader().newInstance(cName.className, expectedType, subpackages));
+
+        }
+    }
+
+    public PackageLoader.Package.Version findPkgVersion(PluginInfo.ClassName cName, boolean registerListener) {
+        PackageLoader.Package.Version theVersion = coreContainer.getPackageLoader().getPackage(cName.pkg).getLatest(pkgVersionSupplier.apply(cName.pkg));
+        if(registerListener) {
+            packageVersions.put(cName.pkg, theVersion.getPkgVersion());
+        }
+        return theVersion;
+    }
+
+    @Override
+    public MapWriter getPackageVersion(PluginInfo.ClassName cName) {
+        if (cName.pkg == null) return null;
+        PackageAPI.PkgVersion p = packageVersions.get(cName.pkg);
+        return p == null ? null : p::writeMap;
+    }
+
+    private <T> T applyResourceLoaderAware(PackageLoader.Package.Version version, T obj) {
+        if (obj instanceof ResourceLoaderAware) {
+            SolrResourceLoader.assertAwareCompatibility(ResourceLoaderAware.class, obj);
+            try {
+                ((ResourceLoaderAware) obj).inform(version.getLoader());
+                return obj;
+            } catch (IOException e) {
+                throw new SolrException(SolrException.ErrorCode.SERVER_ERROR, e);
+            }
+        }
+        return obj;
+    }
+
+    @Override
+    @SuppressWarnings({"rawtypes"})
+    public <T> T newInstance(String cname, Class<T> expectedType, String[] subPackages, Class[] params, Object[] args) {
+        PluginInfo.ClassName cName = new PluginInfo.ClassName(cname);
+        if (cName.pkg == null) {
+            return fallbackResourceLoader.newInstance(cname, expectedType, subPackages, params, args);
+        } else {
+            PackageLoader.Package.Version version = findPkgVersion(cName, true);
+            return applyResourceLoaderAware(version, version.getLoader().newInstance(cName.className, expectedType, subPackages, params, args));
+        }
+    }
+
+    @Override
+    public <T> Class<? extends T> findClass(String cname, Class<T> expectedType) {
+        PluginInfo.ClassName cName = new PluginInfo.ClassName(cname);
+        if (cName.pkg == null) {
+            return fallbackResourceLoader.findClass(cname, expectedType);
+        } else {
+            PackageLoader.Package.Version version = findPkgVersion(cName, true);
+            return version.getLoader().findClass(cName.className, expectedType);
+        }
+    }
+
+    @Override
+    public String packageName() {
+        return null;
+    }
+
+    @Override
+    public PluginInfo pluginInfo() {
+        return null;
+    }
+
+    @Override
+    public void changed(PackageLoader.Package pkg, Ctx ctx) {
+        PackageAPI.PkgVersion currVer = packageVersions.get(pkg.name);
+        if (currVer == null) {
+            //not watching this
+            return;
+        }
+        String latestSupportedVersion = pkgVersionSupplier.apply(pkg.name);
+        if (latestSupportedVersion == null) {
+            //no specific version configured. use the latest
+            latestSupportedVersion = pkg.getLatest().getVersion();
+        }
+        if (Objects.equals(currVer.version, latestSupportedVersion)) {
+            //no need to update
+            return;
+        }
+        ctx.runLater(null, onReload);
+    }
+}
\ No newline at end of file
diff --git a/solr/core/src/java/org/apache/solr/pkg/PackageAPI.java b/solr/core/src/java/org/apache/solr/pkg/PackageAPI.java
index ecc344c..5a3e29a 100644
--- a/solr/core/src/java/org/apache/solr/pkg/PackageAPI.java
+++ b/solr/core/src/java/org/apache/solr/pkg/PackageAPI.java
@@ -192,7 +192,7 @@ public class PackageAPI {
 
     public PkgVersion(Package.AddVersion addVersion) {
       this.version = addVersion.version;
-      this.files = addVersion.files;
+      this.files = addVersion.files == null? null : Collections.unmodifiableList(addVersion.files);
       this.manifest = addVersion.manifest;
       this.manifestSHA512 = addVersion.manifestSHA512;
     }
@@ -221,6 +221,15 @@ public class PackageAPI {
         throw new RuntimeException(e);
       }
     }
+
+    public PkgVersion copy() {
+      PkgVersion result = new PkgVersion();
+      result.version = this.version;
+      result.files =  this.files;
+      result.manifest =  this.manifest;
+      result.manifestSHA512 =  this.manifestSHA512;
+      return result;
+    }
   }
 
 
diff --git a/solr/core/src/java/org/apache/solr/pkg/PackageListeners.java b/solr/core/src/java/org/apache/solr/pkg/PackageListeners.java
index 3086642..2d3a5be 100644
--- a/solr/core/src/java/org/apache/solr/pkg/PackageListeners.java
+++ b/solr/core/src/java/org/apache/solr/pkg/PackageListeners.java
@@ -23,6 +23,7 @@ import java.lang.ref.SoftReference;
 import java.util.*;
 import java.util.concurrent.CopyOnWriteArrayList;
 
+import org.apache.solr.common.MapWriter;
 import org.apache.solr.core.PluginInfo;
 import org.apache.solr.core.SolrCore;
 import org.apache.solr.logging.MDCLoggingContext;
@@ -97,23 +98,36 @@ public class PackageListeners {
 
 
   public interface Listener {
-    /**Name of the package or null to listen to all package changes
-     */
+    /**Name of the package or null to listen to all package changes */
     String packageName();
 
     PluginInfo pluginInfo();
 
+    /**A callback when the package is updated */
     void changed(PackageLoader.Package pkg, Ctx ctx);
 
-    PackageLoader.Package.Version getPackageVersion();
+    default MapWriter getPackageVersion(PluginInfo.ClassName cName) {
+      return null;
+    }
     class Ctx {
-      private Map<String, Runnable > runLater;
-      public void runLater(String name,  Runnable runnable  ){
-        if(runLater == null) runLater = new LinkedHashMap<>();
+      private Map<String, Runnable> runLater;
+
+      /**
+       * If there are multiple packages to be updated and there are multiple listeners,
+       * This is executed after all of the {@link Listener#changed(PackageLoader.Package, Ctx)}
+       * calls are invoked. The name is a unique identifier that can be used by consumers to avoid duplicate
+       * If no deduplication is required, use null as the name
+       */
+      public void runLater(String name, Runnable runnable) {
+        if (runLater == null) runLater = new LinkedHashMap<>();
+        if (name == null) {
+          name = runnable.getClass().getSimpleName() + "@" + runnable.hashCode();
+        }
         runLater.put(name, runnable);
       }
-      private void runLaterTasks(){
-        if(runLater == null) return;
+
+      private void runLaterTasks() {
+        if (runLater == null) return;
         new Thread(() -> runLater.forEach((s, runnable) -> {
           try {
             runnable.run();
diff --git a/solr/core/src/java/org/apache/solr/pkg/PackageLoader.java b/solr/core/src/java/org/apache/solr/pkg/PackageLoader.java
index 5e443e5..1e2fc57 100644
--- a/solr/core/src/java/org/apache/solr/pkg/PackageLoader.java
+++ b/solr/core/src/java/org/apache/solr/pkg/PackageLoader.java
@@ -291,6 +291,9 @@ public class PackageLoader implements Closeable {
       public String getVersion() {
         return version.version;
       }
+      public PackageAPI.PkgVersion getPkgVersion(){
+        return version.copy();
+      }
 
       @SuppressWarnings({"rawtypes"})
       public Collection getFiles() {
diff --git a/solr/core/src/java/org/apache/solr/pkg/PackagePluginHolder.java b/solr/core/src/java/org/apache/solr/pkg/PackagePluginHolder.java
index cb34b81..d64ef58 100644
--- a/solr/core/src/java/org/apache/solr/pkg/PackagePluginHolder.java
+++ b/solr/core/src/java/org/apache/solr/pkg/PackagePluginHolder.java
@@ -21,6 +21,7 @@ import java.io.IOException;
 import java.lang.invoke.MethodHandles;
 
 import org.apache.lucene.analysis.util.ResourceLoaderAware;
+import org.apache.solr.common.MapWriter;
 import org.apache.solr.common.SolrException;
 import org.apache.solr.core.PluginBag;
 import org.apache.solr.core.PluginInfo;
@@ -67,7 +68,7 @@ public class PackagePluginHolder<T> extends PluginBag.PluginHolder<T> {
       }
 
       @Override
-      public PackageLoader.Package.Version getPackageVersion() {
+      public MapWriter getPackageVersion(PluginInfo.ClassName cName) {
         return pkgVersion;
       }
 


[lucene] 35/42: merging with trunk

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

dweiss pushed a commit to branch jira/solr14155-1
in repository https://gitbox.apache.org/repos/asf/lucene.git

commit d53e248a3f8636efe8bc36fc562e6635314698b5
Author: noblepaul <no...@gmail.com>
AuthorDate: Tue Jan 12 17:39:33 2021 +1100

    merging with trunk
---
 .../java/org/apache/solr/update/UpdateHandler.java | 54 +++++++++++-----------
 .../apache/solr/core/TestQuerySenderListener.java  |  3 +-
 .../apache/solr/core/TestQuerySenderNoQuery.java   |  2 +-
 3 files changed, 28 insertions(+), 31 deletions(-)

diff --git a/solr/core/src/java/org/apache/solr/update/UpdateHandler.java b/solr/core/src/java/org/apache/solr/update/UpdateHandler.java
index 6e8c3a4..319ee51 100644
--- a/solr/core/src/java/org/apache/solr/update/UpdateHandler.java
+++ b/solr/core/src/java/org/apache/solr/update/UpdateHandler.java
@@ -47,26 +47,23 @@ public abstract class UpdateHandler implements SolrInfoBean {
   protected final SchemaField idField;
   protected final FieldType idFieldType;
 
-  protected Vector<PluginHolder<SolrEventListener>> commitCallbacks = new Vector<>();
-  protected Vector<PluginHolder<SolrEventListener>> softCommitCallbacks = new Vector<>();
-  protected Vector<PluginHolder<SolrEventListener>> optimizeCallbacks = new Vector<>();
+  protected Vector<SolrEventListener> commitCallbacks = new Vector<>();
+  protected Vector<SolrEventListener> softCommitCallbacks = new Vector<>();
+  protected Vector<SolrEventListener> optimizeCallbacks = new Vector<>();
 
   protected final UpdateLog ulog;
 
   protected SolrMetricsContext solrMetricsContext;
 
-  @SuppressWarnings("unchecked")
   private void parseEventListeners() {
-    final Class<SolrEventListener> clazz = SolrEventListener.class;
-    final String label = "Event Listener";
     for (PluginInfo info : core.getSolrConfig().getPluginInfos(SolrEventListener.class.getName())) {
       String event = info.attributes.get("event");
       if ("postCommit".equals(event)) {
-        PluginHolder<SolrEventListener> obj = createHolder(info, core, SolrEventListener.class, label);
+        SolrEventListener obj = core.createEventListener(info);
         commitCallbacks.add(obj);
         log.info("added SolrEventListener for postCommit: {}", obj);
       } else if ("postOptimize".equals(event)) {
-        PluginHolder<SolrEventListener> obj = createHolder(info, core, SolrEventListener.class, label);
+        SolrEventListener obj = core.createEventListener(info);
         optimizeCallbacks.add(obj);
         log.info("added SolrEventListener for postOptimize: {}", obj);
       }
@@ -77,35 +74,33 @@ public abstract class UpdateHandler implements SolrInfoBean {
    * Call the {@link SolrCoreAware#inform(SolrCore)} on all the applicable registered listeners.
    */
   public void informEventListeners(SolrCore core) {
-    for (PluginHolder<SolrEventListener> listener : commitCallbacks) {
-      if (listener instanceof PackagePluginHolder) continue;
-      if (listener.get() instanceof SolrCoreAware) {
-        ((SolrCoreAware) listener.get()).inform(core);
+    for (SolrEventListener listener: commitCallbacks) {
+      if (listener instanceof SolrCoreAware) {
+        ((SolrCoreAware) listener).inform(core);
       }
     }
-    for (PluginHolder<SolrEventListener> listener : optimizeCallbacks) {
-      if (listener instanceof PackagePluginHolder) continue;
-      if (listener.get() instanceof SolrCoreAware) {
-        ((SolrCoreAware) listener.get()).inform(core);
+    for (SolrEventListener listener: optimizeCallbacks) {
+      if (listener instanceof SolrCoreAware) {
+        ((SolrCoreAware) listener).inform(core);
       }
     }
   }
 
   protected void callPostCommitCallbacks() {
-    for (PluginHolder<SolrEventListener> listener : commitCallbacks) {
-      listener.get(). postCommit();
+    for (SolrEventListener listener : commitCallbacks) {
+      listener.postCommit();
     }
   }
 
   protected void callPostSoftCommitCallbacks() {
-    for (PluginHolder<SolrEventListener>  listener : softCommitCallbacks) {
-      listener.get().postSoftCommit();
+    for (SolrEventListener listener : softCommitCallbacks) {
+      listener.postSoftCommit();
     }
   }
 
   protected void callPostOptimizeCallbacks() {
-    for (PluginHolder<SolrEventListener> listener : optimizeCallbacks) {
-      listener.get().postCommit();
+    for (SolrEventListener listener : optimizeCallbacks) {
+      listener.postCommit();
     }
   }
 
@@ -172,8 +167,9 @@ public abstract class UpdateHandler implements SolrInfoBean {
    *
    * @see SolrCoreAware
    */
-  public void registerCommitCallback( SolrEventListener listener) {
-    commitCallbacks.add(createHolder(listener,  SolrEventListener.class));
+  public void registerCommitCallback( SolrEventListener listener )
+  {
+    commitCallbacks.add( listener );
   }
 
   /**
@@ -183,8 +179,9 @@ public abstract class UpdateHandler implements SolrInfoBean {
    *
    * @see SolrCoreAware
    */
-  public void registerSoftCommitCallback( SolrEventListener listener ) {
-    softCommitCallbacks.add(createHolder(listener,  SolrEventListener.class));
+  public void registerSoftCommitCallback( SolrEventListener listener )
+  {
+    softCommitCallbacks.add( listener );
   }
 
   /**
@@ -194,8 +191,9 @@ public abstract class UpdateHandler implements SolrInfoBean {
    *
    * @see SolrCoreAware
    */
-  public void registerOptimizeCallback( SolrEventListener listener ) {
-    optimizeCallbacks.add(createHolder(listener,  SolrEventListener.class));
+  public void registerOptimizeCallback( SolrEventListener listener )
+  {
+    optimizeCallbacks.add( listener );
   }
 
   public abstract void split(SplitIndexCommand cmd) throws IOException;
diff --git a/solr/core/src/test/org/apache/solr/core/TestQuerySenderListener.java b/solr/core/src/test/org/apache/solr/core/TestQuerySenderListener.java
index 0d66abe..ad564c2 100644
--- a/solr/core/src/test/org/apache/solr/core/TestQuerySenderListener.java
+++ b/solr/core/src/test/org/apache/solr/core/TestQuerySenderListener.java
@@ -60,8 +60,7 @@ public class TestQuerySenderListener extends SolrTestCaseJ4 {
   @Test
   public void testSearcherEvents() throws Exception {
     SolrCore core = h.getCore();
-    SolrEventListener newSearcherListener = core.newSearcherListeners.get(0).get();
-
+    SolrEventListener newSearcherListener = core.newSearcherListeners.get(0);
     assertTrue("Not an instance of QuerySenderListener", newSearcherListener instanceof QuerySenderListener);
     QuerySenderListener qsl = (QuerySenderListener) newSearcherListener;
 
diff --git a/solr/core/src/test/org/apache/solr/core/TestQuerySenderNoQuery.java b/solr/core/src/test/org/apache/solr/core/TestQuerySenderNoQuery.java
index e113137..a44fe3c 100644
--- a/solr/core/src/test/org/apache/solr/core/TestQuerySenderNoQuery.java
+++ b/solr/core/src/test/org/apache/solr/core/TestQuerySenderNoQuery.java
@@ -61,7 +61,7 @@ public class TestQuerySenderNoQuery extends SolrTestCaseJ4 {
   @Test
   public void testSearcherEvents() throws Exception {
     SolrCore core = h.getCore();
-    SolrEventListener newSearcherListener = core.newSearcherListeners.get(0).get();
+    SolrEventListener newSearcherListener = core.newSearcherListeners.get(0);
     assertTrue("Not an instance of QuerySenderListener", newSearcherListener instanceof QuerySenderListener);
     QuerySenderListener qsl = (QuerySenderListener) newSearcherListener;
 


[lucene] 23/42: more cleanup

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

dweiss pushed a commit to branch jira/solr14155-1
in repository https://gitbox.apache.org/repos/asf/lucene.git

commit 30dd62dbd4ff0faf6e17c38b75d40046bc8e4476
Author: noblepaul <no...@gmail.com>
AuthorDate: Thu Jul 16 19:18:46 2020 +1000

    more cleanup
---
 .../src/java/org/apache/solr/core/SolrCore.java     | 11 +++++------
 .../org/apache/solr/pkg/PackagePluginHolder.java    |  7 +++++++
 .../java/org/apache/solr/update/UpdateHandler.java  | 21 ++++++++++-----------
 3 files changed, 22 insertions(+), 17 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 5a06345..19516eb 100644
--- a/solr/core/src/java/org/apache/solr/core/SolrCore.java
+++ b/solr/core/src/java/org/apache/solr/core/SolrCore.java
@@ -176,6 +176,7 @@ import org.slf4j.LoggerFactory;
 
 import static org.apache.solr.common.params.CommonParams.NAME;
 import static org.apache.solr.common.params.CommonParams.PATH;
+import static org.apache.solr.pkg.PackagePluginHolder.createHolder;
 
 /**
  * SolrCore got its name because it represents the "core" of Solr -- one index and everything needed to make it work.
@@ -645,11 +646,11 @@ public final class SolrCore implements SolrInfoBean, Closeable {
     for (PluginInfo info : solrConfig.getPluginInfos(SolrEventListener.class.getName())) {
       final String event = info.attributes.get("event");
       if ("firstSearcher".equals(event)) {
-        PluginHolder<SolrEventListener> obj = PackagePluginHolder.createHolder(info, this, SolrEventListener.class, label);
+        PluginHolder<SolrEventListener> obj = createHolder(info, this, SolrEventListener.class, label);
         firstSearcherListeners.add(obj);
         log.debug("[{}] Added SolrEventListener for firstSearcher: [{}]", logid, obj);
       } else if ("newSearcher".equals(event)) {
-        PluginHolder<SolrEventListener> obj = PackagePluginHolder.createHolder(info, this, SolrEventListener.class, label);
+        PluginHolder<SolrEventListener> obj = createHolder(info, this, SolrEventListener.class, label);
         newSearcherListeners.add(obj);
         log.debug("[{}] Added SolrEventListener for newSearcher: [{}]", logid, obj);
       }
@@ -667,8 +668,7 @@ public final class SolrCore implements SolrInfoBean, Closeable {
    * @see SolrCoreAware
    */
   public void registerFirstSearcherListener(SolrEventListener listener) {
-    firstSearcherListeners.add(new PluginHolder<>(listener,
-            SolrConfig.classVsSolrPluginInfo.get(SolrEventListener.class.getName())));
+    firstSearcherListeners.add(createHolder(listener, this, SolrEventListener.class, null));
   }
 
   /**
@@ -679,8 +679,7 @@ public final class SolrCore implements SolrInfoBean, Closeable {
    * @see SolrCoreAware
    */
   public void registerNewSearcherListener(SolrEventListener listener) {
-    newSearcherListeners.add(
-            new PluginHolder<>(listener, SolrConfig.classVsSolrPluginInfo.get(SolrEventListener.class.getName())));
+    newSearcherListeners.add(createHolder(listener, this, SolrEventListener.class, null));
   }
 
   /**
diff --git a/solr/core/src/java/org/apache/solr/pkg/PackagePluginHolder.java b/solr/core/src/java/org/apache/solr/pkg/PackagePluginHolder.java
index 0c6fd80..50afc71 100644
--- a/solr/core/src/java/org/apache/solr/pkg/PackagePluginHolder.java
+++ b/solr/core/src/java/org/apache/solr/pkg/PackagePluginHolder.java
@@ -19,6 +19,7 @@ package org.apache.solr.pkg;
 
 import java.io.IOException;
 import java.lang.invoke.MethodHandles;
+import java.util.Collections;
 
 import org.apache.lucene.analysis.util.ResourceLoaderAware;
 import org.apache.solr.common.MapWriter;
@@ -74,6 +75,12 @@ public class PackagePluginHolder<T> extends PluginBag.PluginHolder<T> {
 
     });
   }
+  public static <T> PluginBag.PluginHolder<T> createHolder(T inst, SolrCore core, Class<T> type, String msg) {
+    SolrConfig.SolrPluginInfo plugin = SolrConfig.classVsSolrPluginInfo.get(type.getName());
+    PluginInfo info = new PluginInfo(plugin.tag, Collections.singletonMap("class", inst.getClass().getName()));
+    return createHolder(info, core, type, msg);
+
+  }
 
   public static <T> PluginBag.PluginHolder<T> createHolder(PluginInfo info, SolrCore core, Class<T> type, String msg) {
     if(info.cName.pkg == null) {
diff --git a/solr/core/src/java/org/apache/solr/update/UpdateHandler.java b/solr/core/src/java/org/apache/solr/update/UpdateHandler.java
index dd275dc..16d64b2 100644
--- a/solr/core/src/java/org/apache/solr/update/UpdateHandler.java
+++ b/solr/core/src/java/org/apache/solr/update/UpdateHandler.java
@@ -30,6 +30,8 @@ import org.apache.solr.util.plugin.SolrCoreAware;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
+import static org.apache.solr.pkg.PackagePluginHolder.createHolder;
+
 /**
  * <code>UpdateHandler</code> handles requests to change the index
  * (adds, deletes, commits, optimizes, etc).
@@ -60,11 +62,11 @@ public abstract class UpdateHandler implements SolrInfoBean {
     for (PluginInfo info : core.getSolrConfig().getPluginInfos(SolrEventListener.class.getName())) {
       String event = info.attributes.get("event");
       if ("postCommit".equals(event)) {
-        PluginHolder<SolrEventListener> obj = PackagePluginHolder.createHolder(info, core, SolrEventListener.class, label);
+        PluginHolder<SolrEventListener> obj = createHolder(info, core, SolrEventListener.class, label);
         commitCallbacks.add(obj);
         log.info("added SolrEventListener for postCommit: {}", obj);
       } else if ("postOptimize".equals(event)) {
-        PluginHolder<SolrEventListener> obj = PackagePluginHolder.createHolder(info, core, SolrEventListener.class, label);
+        PluginHolder<SolrEventListener> obj = createHolder(info, core, SolrEventListener.class, label);
         optimizeCallbacks.add(obj);
         log.info("added SolrEventListener for postOptimize: {}", obj);
       }
@@ -170,9 +172,8 @@ public abstract class UpdateHandler implements SolrInfoBean {
    *
    * @see SolrCoreAware
    */
-  public void registerCommitCallback( SolrEventListener listener )
-  {
-    commitCallbacks.add( new PluginHolder<>(listener, SolrConfig.classVsSolrPluginInfo.get(SolrEventListener.class.getName())) );
+  public void registerCommitCallback( SolrEventListener listener) {
+    commitCallbacks.add(createHolder(listener, core,  SolrEventListener.class,null));
   }
 
   /**
@@ -182,9 +183,8 @@ public abstract class UpdateHandler implements SolrInfoBean {
    *
    * @see SolrCoreAware
    */
-  public void registerSoftCommitCallback( SolrEventListener listener )
-  {
-    softCommitCallbacks.add( new PluginHolder<>(listener, SolrConfig.classVsSolrPluginInfo.get(SolrEventListener.class.getName())) );
+  public void registerSoftCommitCallback( SolrEventListener listener ) {
+    softCommitCallbacks.add(createHolder(listener, core,  SolrEventListener.class,null));
   }
 
   /**
@@ -194,9 +194,8 @@ public abstract class UpdateHandler implements SolrInfoBean {
    *
    * @see SolrCoreAware
    */
-  public void registerOptimizeCallback( SolrEventListener listener )
-  {
-    optimizeCallbacks.add( new PluginHolder<>(listener, SolrConfig.classVsSolrPluginInfo.get(SolrEventListener.class.getName())) );
+  public void registerOptimizeCallback( SolrEventListener listener ) {
+    optimizeCallbacks.add(createHolder(listener, core, SolrEventListener.class, null));
   }
 
   public abstract void split(SplitIndexCommand cmd) throws IOException;


[lucene] 25/42: more cleanup

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

dweiss pushed a commit to branch jira/solr14155-1
in repository https://gitbox.apache.org/repos/asf/lucene.git

commit fb067145259f1b0da8afcdfb8e13347c20cf376f
Author: noblepaul <no...@gmail.com>
AuthorDate: Thu Jul 16 19:31:14 2020 +1000

    more cleanup
---
 solr/core/src/java/org/apache/solr/core/PluginBag.java          | 6 ------
 solr/core/src/java/org/apache/solr/pkg/PackagePluginHolder.java | 6 ++++++
 2 files changed, 6 insertions(+), 6 deletions(-)

diff --git a/solr/core/src/java/org/apache/solr/core/PluginBag.java b/solr/core/src/java/org/apache/solr/core/PluginBag.java
index 0e3069e..b7c07f7 100644
--- a/solr/core/src/java/org/apache/solr/core/PluginBag.java
+++ b/solr/core/src/java/org/apache/solr/core/PluginBag.java
@@ -413,12 +413,6 @@ public class PluginBag<T> implements AutoCloseable {
       if (pluginInfo != null) return pluginInfo.className;
       return null;
     }
-    public static <T> PluginBag.PluginHolder<T> createHolder(T inst,  Class<T> type) {
-      SolrConfig.SolrPluginInfo plugin = SolrConfig.classVsSolrPluginInfo.get(type.getName());
-      PluginInfo info = new PluginInfo(plugin.tag, Collections.singletonMap("class", inst.getClass().getName()));
-      return new PluginHolder<T> (info,inst);
-    }
-
     public PluginInfo getPluginInfo() {
       return pluginInfo;
     }
diff --git a/solr/core/src/java/org/apache/solr/pkg/PackagePluginHolder.java b/solr/core/src/java/org/apache/solr/pkg/PackagePluginHolder.java
index a49c92b..c1cd645 100644
--- a/solr/core/src/java/org/apache/solr/pkg/PackagePluginHolder.java
+++ b/solr/core/src/java/org/apache/solr/pkg/PackagePluginHolder.java
@@ -76,6 +76,12 @@ public class PackagePluginHolder<T> extends PluginBag.PluginHolder<T> {
     });
   }
 
+  public static <T> PluginBag.PluginHolder<T> createHolder(T inst,  Class<T> type) {
+    SolrConfig.SolrPluginInfo plugin = SolrConfig.classVsSolrPluginInfo.get(type.getName());
+    PluginInfo info = new PluginInfo(plugin.tag, Collections.singletonMap("class", inst.getClass().getName()));
+    return new PluginBag.PluginHolder<T>(info,inst);
+  }
+
   public static <T> PluginBag.PluginHolder<T> createHolder(PluginInfo info, SolrCore core, Class<T> type, String msg) {
     if(info.cName.pkg == null) {
       return new PluginBag.PluginHolder<T>(info, core.createInitInstance(info, type,msg, null));


[lucene] 39/42: added tests

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

dweiss pushed a commit to branch jira/solr14155-1
in repository https://gitbox.apache.org/repos/asf/lucene.git

commit bde680fe84f372eebb73b4b2bf0f23c776f2e08e
Author: noblepaul <no...@gmail.com>
AuthorDate: Wed Jan 13 22:01:02 2021 +1100

    added tests
---
 .../src/java/org/apache/solr/core/SolrCore.java    |  1 +
 .../org/apache/solr/core/SolrResourceLoader.java   | 14 ++--
 .../org/apache/solr/handler/SolrConfigHandler.java | 19 +++--
 .../solr/handler/component/SearchHandler.java      |  3 +-
 .../java/org/apache/solr/pkg/PackageListeners.java |  2 +-
 .../solr/pkg/PackageListeningClassLoader.java      | 10 ++-
 .../org/apache/solr/pkg/PackagePluginHolder.java   |  4 +-
 .../java/org/apache/solr/search/CacheConfig.java   |  6 +-
 .../solr/configsets/conf2/conf/schema.xml          | 43 ++++++++++
 .../solr/configsets/conf2/conf/solrconfig.xml      | 68 +++++++++++++++
 .../src/test/org/apache/solr/pkg/TestPackages.java | 96 +++++++++++++++++-----
 11 files changed, 224 insertions(+), 42 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 6773fb2..c01f4c4 100644
--- a/solr/core/src/java/org/apache/solr/core/SolrCore.java
+++ b/solr/core/src/java/org/apache/solr/core/SolrCore.java
@@ -955,6 +955,7 @@ public final class SolrCore implements SolrInfoBean, Closeable {
 
       this.solrConfig = configSet.getSolrConfig();
       this.resourceLoader = configSet.getSolrConfig().getResourceLoader();
+      this.resourceLoader.initCore(this);
       IndexSchema schema = configSet.getIndexSchema();
 
       this.configSetProperties = configSet.getProperties();
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 9074749..288259a 100644
--- a/solr/core/src/java/org/apache/solr/core/SolrResourceLoader.java
+++ b/solr/core/src/java/org/apache/solr/core/SolrResourceLoader.java
@@ -648,11 +648,7 @@ public class SolrResourceLoader implements ResourceLoader, Closeable, SolrClassL
     }
   }
 
-
-  /**
-   * Tell all {@link SolrCoreAware} instances about the SolrCore
-   */
-  public void inform(SolrCore core) {
+  void initCore(SolrCore core) {
     this.coreName = core.getName();
     this.config = core.getSolrConfig();
     this.coreId = core.uniqueId;
@@ -663,10 +659,18 @@ public class SolrResourceLoader implements ResourceLoader, Closeable, SolrClassL
             this, s -> config.maxPackageVersion(s), null){
       @Override
       protected void doReloadAction(Ctx ctx) {
+        log.info("Core reloading classloader issued reload for: {}/{} ", coreName, coreId);
         coreProvider.reload();
       }
     };
     core.getPackageListeners().addListener(coreReloadingClassLoader, true);
+
+  }
+
+  /**
+   * Tell all {@link SolrCoreAware} instances about the SolrCore
+   */
+  public void inform(SolrCore core) {
     if(getSchemaLoader() != null) core.getPackageListeners().addListener(schemaLoader);
 
     // make a copy to avoid potential deadlock of a callback calling newInstance and trying to
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 1356da5..44c037e 100644
--- a/solr/core/src/java/org/apache/solr/handler/SolrConfigHandler.java
+++ b/solr/core/src/java/org/apache/solr/handler/SolrConfigHandler.java
@@ -36,7 +36,6 @@ import java.util.concurrent.Future;
 import java.util.concurrent.TimeUnit;
 import java.util.concurrent.locks.Lock;
 import java.util.concurrent.locks.ReentrantLock;
-import java.util.function.BiConsumer;
 
 import com.google.common.collect.ImmutableMap;
 import com.google.common.collect.ImmutableSet;
@@ -49,7 +48,7 @@ import org.apache.solr.client.solrj.impl.HttpSolrClient;
 import org.apache.solr.client.solrj.io.stream.expr.Expressible;
 import org.apache.solr.cloud.ZkController;
 import org.apache.solr.cloud.ZkSolrResourceLoader;
-import org.apache.solr.common.MapWriter;
+import org.apache.solr.common.MapSerializable;
 import org.apache.solr.common.SolrException;
 import org.apache.solr.common.cloud.ClusterState;
 import org.apache.solr.common.cloud.DocCollection;
@@ -71,6 +70,7 @@ import org.apache.solr.core.RequestParams;
 import org.apache.solr.core.SolrConfig;
 import org.apache.solr.core.SolrCore;
 import org.apache.solr.core.SolrResourceLoader;
+import org.apache.solr.pkg.PackageAPI;
 import org.apache.solr.pkg.PackageListeners;
 import org.apache.solr.pkg.PackageLoader;
 import org.apache.solr.request.LocalSolrQueryRequest;
@@ -255,19 +255,24 @@ public class SolrConfigHandler extends RequestHandlerBase implements SolrCoreAwa
               @SuppressWarnings({"rawtypes"})
               Map pluginNameVsPluginInfo = (Map) val.get(parts.get(1));
               if (pluginNameVsPluginInfo != null) {
-                Object pluginInfo = pluginNameVsPluginInfo.get(componentName);
-                val.put(parts.get(1), makeMap(componentName, pluginInfo));
+                @SuppressWarnings({"rawtypes"})
+                Object o = pluginNameVsPluginInfo instanceof MapSerializable ?
+                       pluginNameVsPluginInfo:
+                        pluginNameVsPluginInfo.get(componentName);
+                @SuppressWarnings({"rawtypes"})
+                Map pluginInfo = o instanceof  MapSerializable? ((MapSerializable) o).toMap(new LinkedHashMap<>()): (Map) o;
+                val.put(parts.get(1),pluginNameVsPluginInfo instanceof PluginInfo? pluginInfo :  makeMap(componentName, pluginInfo));
                 if (req.getParams().getBool("meta", false)) {
                   // meta=true is asking for the package info of the plugin
                   // We go through all the listeners and see if there is one registered for this plugin
                   List<PackageListeners.Listener> listeners = req.getCore().getPackageListeners().getListeners();
                   for (PackageListeners.Listener listener :
                       listeners) {
-                    Map<String, PackageLoader.Package.Version> infos = listener.packageDetails();
+                    Map<String, PackageAPI.PkgVersion> infos = listener.packageDetails();
                     if(infos == null || infos.isEmpty()) continue;
                     infos.forEach((s, mapWriter) -> {
-                      if(s.equals(((Map) pluginInfo).get("class"))) {
-                        ((Map) pluginInfo).put("_packageinfo_", mapWriter);
+                      if(s.equals(pluginInfo.get("class"))) {
+                        (pluginInfo).put("_packageinfo_", mapWriter);
                       }
                     });
                   }
diff --git a/solr/core/src/java/org/apache/solr/handler/component/SearchHandler.java b/solr/core/src/java/org/apache/solr/handler/component/SearchHandler.java
index 94b5b3e..fc09e04 100644
--- a/solr/core/src/java/org/apache/solr/handler/component/SearchHandler.java
+++ b/solr/core/src/java/org/apache/solr/handler/component/SearchHandler.java
@@ -41,6 +41,7 @@ import org.apache.solr.core.CoreContainer;
 import org.apache.solr.core.PluginInfo;
 import org.apache.solr.core.SolrCore;
 import org.apache.solr.handler.RequestHandlerBase;
+import org.apache.solr.pkg.PackageAPI;
 import org.apache.solr.pkg.PackageListeners;
 import org.apache.solr.pkg.PackageLoader;
 import org.apache.solr.request.SolrQueryRequest;
@@ -159,7 +160,7 @@ public class SearchHandler extends RequestHandlerBase implements SolrCoreAware,
         }
 
         @Override
-        public Map<String , PackageLoader.Package.Version> packageDetails() {
+        public Map<String , PackageAPI.PkgVersion> packageDetails() {
           return Collections.emptyMap();
         }
 
diff --git a/solr/core/src/java/org/apache/solr/pkg/PackageListeners.java b/solr/core/src/java/org/apache/solr/pkg/PackageListeners.java
index 2b36b1e..1281d99 100644
--- a/solr/core/src/java/org/apache/solr/pkg/PackageListeners.java
+++ b/solr/core/src/java/org/apache/solr/pkg/PackageListeners.java
@@ -113,7 +113,7 @@ public class PackageListeners {
     /** fetch the package versions of class names
      *
      */
-    Map<String, PackageLoader.Package.Version> packageDetails();
+    Map<String, PackageAPI.PkgVersion> packageDetails();
 
     /**A callback when the package is updated */
     void changed(PackageLoader.Package pkg, Ctx ctx);
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 6e57f44..14617aa 100644
--- a/solr/core/src/java/org/apache/solr/pkg/PackageListeningClassLoader.java
+++ b/solr/core/src/java/org/apache/solr/pkg/PackageListeningClassLoader.java
@@ -85,7 +85,9 @@ public class PackageListeningClassLoader implements SolrClassLoader , PackageLis
     public PackageLoader.Package.Version findPackageVersion(PluginInfo.ClassName cName, boolean registerListener) {
         PackageLoader.Package.Version theVersion = coreContainer.getPackageLoader().getPackage(cName.pkg).getLatest(pkgVersionSupplier.apply(cName.pkg));
         if(registerListener) {
-            packageVersions.put(cName.pkg, theVersion.getPkgVersion());
+            classNameVsPackageName.put(cName.original, cName.pkg);
+            PackageAPI.PkgVersion pkgVersion = theVersion.getPkgVersion();
+            if(pkgVersion !=null) packageVersions.put(cName.pkg, pkgVersion);
         }
         return theVersion;
     }
@@ -144,8 +146,10 @@ public class PackageListeningClassLoader implements SolrClassLoader , PackageLis
     }
 
     @Override
-    public Map<String, PackageLoader.Package.Version> packageDetails() {
-        return Collections.emptyMap();
+    public Map<String, PackageAPI.PkgVersion> packageDetails() {
+        Map<String, PackageAPI.PkgVersion> result = new LinkedHashMap<>();
+        classNameVsPackageName.forEach((k, v) -> result.put(k, packageVersions.get(v)));
+        return result;
     }
 
     @Override
diff --git a/solr/core/src/java/org/apache/solr/pkg/PackagePluginHolder.java b/solr/core/src/java/org/apache/solr/pkg/PackagePluginHolder.java
index 2a07d0c..df97662 100644
--- a/solr/core/src/java/org/apache/solr/pkg/PackagePluginHolder.java
+++ b/solr/core/src/java/org/apache/solr/pkg/PackagePluginHolder.java
@@ -60,8 +60,8 @@ public class PackagePluginHolder<T> extends PluginBag.PluginHolder<T> {
       }
 
       @Override
-      public Map<String, PackageLoader.Package.Version> packageDetails() {
-        return Collections.singletonMap(info.cName.original, pkgVersion);
+      public Map<String, PackageAPI.PkgVersion> packageDetails() {
+        return Collections.singletonMap(info.cName.original, pkgVersion.getPkgVersion());
       }
 
       @Override
diff --git a/solr/core/src/java/org/apache/solr/search/CacheConfig.java b/solr/core/src/java/org/apache/solr/search/CacheConfig.java
index d747ba9..1520f80 100644
--- a/solr/core/src/java/org/apache/solr/search/CacheConfig.java
+++ b/solr/core/src/java/org/apache/solr/search/CacheConfig.java
@@ -77,6 +77,7 @@ public class CacheConfig implements MapSerializable{
     this.clazz = () -> clazz;
     this.args = args;
     this.regenerator = regenerator;
+    this.nodeName = args.get(NAME);
   }
 
   public CacheRegenerator getRegenerator() {
@@ -180,11 +181,8 @@ public class CacheConfig implements MapSerializable{
   }
 
   @Override
-  @SuppressWarnings({"unchecked"})
   public Map<String, Object> toMap(Map<String, Object> map) {
-    @SuppressWarnings({"rawtypes"})
-    Map result = Collections.unmodifiableMap(args);
-    return result;
+    return new HashMap<>(args);
   }
 
   public String getNodeName() {
diff --git a/solr/core/src/test-files/solr/configsets/conf2/conf/schema.xml b/solr/core/src/test-files/solr/configsets/conf2/conf/schema.xml
new file mode 100644
index 0000000..85f7ed3
--- /dev/null
+++ b/solr/core/src/test-files/solr/configsets/conf2/conf/schema.xml
@@ -0,0 +1,43 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<!--
+ Licensed to the Apache Software Foundation (ASF) under one or more
+ contributor license agreements.  See the NOTICE file distributed with
+ this work for additional information regarding copyright ownership.
+ The ASF licenses this file to You under the Apache License, Version 2.0
+ (the "License"); you may not use this file except in compliance with
+ the License.  You may obtain a copy of the License at
+
+     http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+-->
+<schema name="minimal" version="1.1">
+  <fieldType name="string" class="solr.StrField"/>
+  <fieldType name="int" class="${solr.tests.IntegerFieldType}" docValues="${solr.tests.numeric.dv}" precisionStep="0" omitNorms="true" positionIncrementGap="0"/>
+  <fieldType name="long" class="${solr.tests.LongFieldType}" docValues="${solr.tests.numeric.dv}" precisionStep="0" omitNorms="true" positionIncrementGap="0"/>
+  <dynamicField name="*" type="string" indexed="true" stored="true"/>
+  <!-- for versioning -->
+  <field name="_version_" type="long" indexed="true" stored="true"/>
+  <field name="_root_" type="string" indexed="true" stored="true" multiValued="false" required="false"/>
+  <field name="id" type="string" indexed="true" stored="true"/>
+  <dynamicField name="*_s"  type="string"  indexed="true"  stored="true" />
+  <uniqueKey>id</uniqueKey>
+  <query>
+    <filterCache
+            size="0"
+            initialSize="0"
+            autowarmCount="0"/>
+    <queryResultCache
+            size="0"
+            initialSize="0"
+            autowarmCount="0"/>
+    <documentCache
+            size="0"
+            initialSize="0"
+            autowarmCount="0"/>
+  </query>
+</schema>
diff --git a/solr/core/src/test-files/solr/configsets/conf2/conf/solrconfig.xml b/solr/core/src/test-files/solr/configsets/conf2/conf/solrconfig.xml
new file mode 100644
index 0000000..e69d16f
--- /dev/null
+++ b/solr/core/src/test-files/solr/configsets/conf2/conf/solrconfig.xml
@@ -0,0 +1,68 @@
+<?xml version="1.0" ?>
+
+<!--
+ Licensed to the Apache Software Foundation (ASF) under one or more
+ contributor license agreements.  See the NOTICE file distributed with
+ this work for additional information regarding copyright ownership.
+ The ASF licenses this file to You under the Apache License, Version 2.0
+ (the "License"); you may not use this file except in compliance with
+ the License.  You may obtain a copy of the License at
+
+     http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+-->
+
+<!-- Minimal solrconfig.xml with /select, /admin and /update only -->
+
+<config>
+
+  <dataDir>${solr.data.dir:}</dataDir>
+
+  <directoryFactory name="DirectoryFactory"
+                    class="${solr.directoryFactory:solr.NRTCachingDirectoryFactory}"/>
+  <schemaFactory class="ClassicIndexSchemaFactory"/>
+
+  <luceneMatchVersion>${tests.luceneMatchVersion:LATEST}</luceneMatchVersion>
+
+  <updateHandler class="solr.DirectUpdateHandler2">
+    <commitWithin>
+      <softCommit>${solr.commitwithin.softcommit:true}</softCommit>
+    </commitWithin>
+    <updateLog class="${solr.ulog:solr.UpdateLog}"></updateLog>
+  </updateHandler>
+
+  <requestHandler name="/select" class="solr.SearchHandler">
+    <lst name="defaults">
+      <str name="echoParams">explicit</str>
+      <str name="indent">true</str>
+      <str name="df">text</str>
+    </lst>
+
+  </requestHandler>
+  <query>
+    <filterCache
+            class = "mypkg:org.apache.solr.search.CaffeineCache"
+            size="512"
+            initialSize="512"
+            autowarmCount="0" />
+
+    <queryResultCache
+            size="512"
+            initialSize="512"
+            autowarmCount="0" />
+
+    <documentCache
+            size="512"
+            initialSize="512"
+            autowarmCount="0" />
+  </query>
+  <indexConfig>
+    <mergeScheduler class="${solr.mscheduler:org.apache.lucene.index.ConcurrentMergeScheduler}"/>
+  </indexConfig>
+</config>
+
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 bea5d0c..6014507 100644
--- a/solr/core/src/test/org/apache/solr/pkg/TestPackages.java
+++ b/solr/core/src/test/org/apache/solr/pkg/TestPackages.java
@@ -17,17 +17,6 @@
 
 package org.apache.solr.pkg;
 
-import java.io.FileOutputStream;
-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.concurrent.Callable;
-import java.util.zip.ZipEntry;
-import java.util.zip.ZipOutputStream;
-
 import org.apache.commons.codec.digest.DigestUtils;
 import org.apache.lucene.analysis.core.WhitespaceTokenizerFactory;
 import org.apache.lucene.analysis.pattern.PatternReplaceCharFilterFactory;
@@ -40,13 +29,10 @@ import org.apache.solr.client.solrj.SolrServerException;
 import org.apache.solr.client.solrj.embedded.JettySolrRunner;
 import org.apache.solr.client.solrj.impl.BaseHttpSolrClient;
 import org.apache.solr.client.solrj.impl.HttpSolrClient;
-import org.apache.solr.client.solrj.request.CollectionAdminRequest;
-import org.apache.solr.client.solrj.request.GenericSolrRequest;
-import org.apache.solr.client.solrj.request.RequestWriter;
-import org.apache.solr.client.solrj.request.UpdateRequest;
-import org.apache.solr.client.solrj.request.V2Request;
+import org.apache.solr.client.solrj.request.*;
 import org.apache.solr.client.solrj.request.beans.Package;
 import org.apache.solr.client.solrj.response.QueryResponse;
+import org.apache.solr.client.solrj.response.SimpleSolrResponse;
 import org.apache.solr.client.solrj.util.ClientUtils;
 import org.apache.solr.cloud.MiniSolrCloudCluster;
 import org.apache.solr.cloud.SolrCloudTestCase;
@@ -75,13 +61,22 @@ import org.junit.After;
 import org.junit.Before;
 import org.junit.Test;
 
+import java.io.FileOutputStream;
+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.concurrent.Callable;
+import java.util.zip.ZipEntry;
+import java.util.zip.ZipOutputStream;
+
 import static org.apache.solr.common.cloud.ZkStateReader.SOLR_PKGS_PATH;
 import static org.apache.solr.common.params.CommonParams.JAVABIN;
 import static org.apache.solr.common.params.CommonParams.WT;
 import static org.apache.solr.core.TestSolrConfigHandler.getFileContent;
-import static org.apache.solr.filestore.TestDistribPackageStore.checkAllNodesForFile;
-import static org.apache.solr.filestore.TestDistribPackageStore.readFile;
-import static org.apache.solr.filestore.TestDistribPackageStore.uploadKey;
+import static org.apache.solr.filestore.TestDistribPackageStore.*;
 
 @LogLevel("org.apache.solr.pkg.PackageLoader=DEBUG;org.apache.solr.pkg.PackageAPI=DEBUG")
 public class TestPackages extends SolrCloudTestCase {
@@ -102,6 +97,69 @@ public class TestPackages extends SolrCloudTestCase {
     @JsonProperty("class")
     public String klass;
   }
+
+
+  public void testCoreReloadingPlugin() throws Exception {
+    MiniSolrCloudCluster cluster =
+            configureCluster(4)
+                    .withJettyConfig(jetty -> jetty.enableV2(true))
+                    .addConfig("conf", configset("conf2"))
+                    .configure();
+    try {
+      String FILE1 = "/mypkg/runtimelibs.jar";
+      String COLLECTION_NAME = "testCoreReloadingPluginColl";
+      byte[] derFile = readFile("cryptokeys/pub_key512.der");
+      uploadKey(derFile, PackageStoreAPI.KEYS_DIR+"/pub_key512.der", cluster);
+      postFileAndWait(cluster, "runtimecode/runtimelibs.jar.bin", FILE1,
+              "L3q/qIGs4NaF6JiO0ZkMUFa88j0OmYc+I6O7BOdNuMct/xoZ4h73aZHZGc0+nmI1f/U3bOlMPINlSOM6LK3JpQ==");
+
+      Package.AddVersion add = new Package.AddVersion();
+      add.version = "1.0";
+      add.pkg = "mypkg";
+      add.files = Arrays.asList(new String[]{FILE1});
+      V2Request req = new V2Request.Builder("/cluster/package")
+              .forceV2(true)
+              .withMethod(SolrRequest.METHOD.POST)
+              .withPayload(Collections.singletonMap("add", add))
+              .build();
+
+      req.process(cluster.getSolrClient());
+      TestDistribPackageStore.assertResponseValues(10,
+              () -> new V2Request.Builder("/cluster/package").
+                      withMethod(SolrRequest.METHOD.GET)
+                      .build().process(cluster.getSolrClient()),
+              Utils.makeMap(
+                      ":result:packages:mypkg[0]:version", "1.0",
+                      ":result:packages:mypkg[0]:files[0]", FILE1
+              ));
+
+      CollectionAdminRequest
+              .createCollection(COLLECTION_NAME, "conf", 2, 2)
+              .process(cluster.getSolrClient());
+      cluster.waitForActiveCollection(COLLECTION_NAME, 2, 4);
+
+      verifyComponent(cluster.getSolrClient(), COLLECTION_NAME, "query", "filterCache", add.pkg, add.version);
+
+
+      add.version = "2.0";
+      req.process(cluster.getSolrClient());
+      TestDistribPackageStore.assertResponseValues(10,
+              () -> new V2Request.Builder("/cluster/package").
+                      withMethod(SolrRequest.METHOD.GET)
+                      .build().process(cluster.getSolrClient()),
+              Utils.makeMap(
+                      ":result:packages:mypkg[1]:version", "2.0",
+                      ":result:packages:mypkg[1]:files[0]", FILE1
+              ));
+      new UpdateRequest().commit(cluster.getSolrClient(), COLLECTION_NAME);
+
+      verifyComponent(cluster.getSolrClient(),
+              COLLECTION_NAME, "query", "filterCache",
+              "mypkg", "2.0" );
+    } finally {
+      cluster.shutdown();
+    }
+  }
   @Test
   @SuppressWarnings({"unchecked"})
   public void testPluginLoading() throws Exception {


[lucene] 37/42: unused imports

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

dweiss pushed a commit to branch jira/solr14155-1
in repository https://gitbox.apache.org/repos/asf/lucene.git

commit 6e7ffac80443adc125f7f89089bbb8522fa13f68
Author: noblepaul <no...@gmail.com>
AuthorDate: Tue Jan 12 18:04:13 2021 +1100

    unused imports
---
 solr/core/src/java/org/apache/solr/update/UpdateHandler.java | 2 --
 1 file changed, 2 deletions(-)

diff --git a/solr/core/src/java/org/apache/solr/update/UpdateHandler.java b/solr/core/src/java/org/apache/solr/update/UpdateHandler.java
index 270251d..ade9240 100644
--- a/solr/core/src/java/org/apache/solr/update/UpdateHandler.java
+++ b/solr/core/src/java/org/apache/solr/update/UpdateHandler.java
@@ -28,8 +28,6 @@ import org.apache.solr.util.plugin.SolrCoreAware;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
-import static org.apache.solr.pkg.PackagePluginHolder.createHolder;
-
 /**
  * <code>UpdateHandler</code> handles requests to change the index
  * (adds, deletes, commits, optimizes, etc).


[lucene] 42/42: CHANGES.txt

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

dweiss pushed a commit to branch jira/solr14155-1
in repository https://gitbox.apache.org/repos/asf/lucene.git

commit abd8d34ca8f2682b7608eb3a9872ae96ea91b11c
Author: noblepaul <no...@gmail.com>
AuthorDate: Wed Jan 13 22:14:19 2021 +1100

    CHANGES.txt
---
 solr/CHANGES.txt | 2 ++
 1 file changed, 2 insertions(+)

diff --git a/solr/CHANGES.txt b/solr/CHANGES.txt
index a62ca52..7c8a26f 100644
--- a/solr/CHANGES.txt
+++ b/solr/CHANGES.txt
@@ -249,6 +249,8 @@ Improvements
 
 * SOLR-15040: Improvements to postlogs timestamp handling (Joel Bernstein)
 
+* SOLR-14155: Load all other SolrCore plugins from packages (noble)
+
 Optimizations
 ---------------------
 * SOLR-14975: Optimize CoreContainer.getAllCoreNames, getLoadedCoreNames and getCoreDescriptors. (Bruno Roustant)


[lucene] 29/42: merging with master

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

dweiss pushed a commit to branch jira/solr14155-1
in repository https://gitbox.apache.org/repos/asf/lucene.git

commit 9888bc8522f1a682d5a7a114ce8fa8e6f3cce40f
Merge: 9d4946a 95ab98c
Author: noblepaul <no...@gmail.com>
AuthorDate: Tue Sep 8 13:22:14 2020 +1000

    merging with master

 .github/PULL_REQUEST_TEMPLATE.md                   |     2 +-
 .github/workflows/ant.yml                          |    22 -
 README.md                                          |    92 +-
 build.gradle                                       |    47 +-
 build.xml                                          |   697 -
 dev-tools/README.txt                               |     6 +-
 dev-tools/doap/lucene.rdf                          |    14 +
 dev-tools/doap/solr.rdf                            |    14 +
 dev-tools/idea/.idea/ant.xml                       |    57 -
 dev-tools/idea/.idea/codeStyleSettings.xml         |   102 -
 dev-tools/idea/.idea/compiler.xml                  |    13 -
 .../.idea/copyright/Apache_Software_Foundation.xml |     9 -
 .../idea/.idea/copyright/profiles_settings.xml     |    26 -
 dev-tools/idea/.idea/libraries/Derby.xml           |     9 -
 dev-tools/idea/.idea/libraries/HSQLDB.xml          |     9 -
 dev-tools/idea/.idea/libraries/ICU_library.xml     |    10 -
 dev-tools/idea/.idea/libraries/Ivy.xml             |     9 -
 dev-tools/idea/.idea/libraries/JUnit.xml           |    10 -
 .../idea/.idea/libraries/Morfologik_library.xml    |    10 -
 .../idea/.idea/libraries/Solr_DIH_core_library.xml |    10 -
 .../.idea/libraries/Solr_DIH_extras_library.xml    |    10 -
 .../idea/.idea/libraries/Solr_DIH_test_library.xml |    10 -
 .../idea/.idea/libraries/Solr_core_library.xml     |    10 -
 .../.idea/libraries/Solr_core_test_library.xml     |    10 -
 .../idea/.idea/libraries/Solr_example_library.xml  |    10 -
 .../.idea/libraries/Solr_extraction_library.xml    |    10 -
 .../Solr_jaeger_tracer_configurator_library.xml    |    10 -
 .../libraries/Solr_prometheus_exporter_library.xml |    10 -
 .../libraries/Solr_test_framework_library.xml      |    10 -
 .../idea/.idea/libraries/Solr_velocity_library.xml |    10 -
 dev-tools/idea/.idea/libraries/Solrj_library.xml   |    10 -
 dev-tools/idea/.idea/misc.xml                      |     5 -
 dev-tools/idea/.idea/modules.xml                   |    67 -
 dev-tools/idea/.idea/projectCodeStyle.xml          |    69 -
 dev-tools/idea/.idea/vcs.xml                       |    14 -
 dev-tools/idea/.idea/workspace.xml                 |   388 -
 dev-tools/idea/dev-tools/scripts/scripts.iml       |     9 -
 .../lucene/analysis/common/analysis-common.iml     |    19 -
 dev-tools/idea/lucene/analysis/icu/icu.iml         |    31 -
 .../idea/lucene/analysis/kuromoji/kuromoji.iml     |    22 -
 .../idea/lucene/analysis/morfologik/morfologik.iml |    29 -
 dev-tools/idea/lucene/analysis/nori/nori.iml       |    22 -
 dev-tools/idea/lucene/analysis/opennlp/opennlp.iml |    30 -
 .../idea/lucene/analysis/phonetic/phonetic.iml     |    29 -
 dev-tools/idea/lucene/analysis/smartcn/smartcn.iml |    19 -
 dev-tools/idea/lucene/analysis/stempel/stempel.iml |    19 -
 .../lucene/backward-codecs/backward-codecs.iml     |    18 -
 .../idea/lucene/benchmark/conf/benchmark-conf.iml  |    13 -
 dev-tools/idea/lucene/benchmark/src/benchmark.iml  |    39 -
 .../idea/lucene/classification/classification.iml  |    23 -
 dev-tools/idea/lucene/codecs/src/codecs.iml        |    14 -
 .../idea/lucene/codecs/src/test/codecs-tests.iml   |    17 -
 dev-tools/idea/lucene/core/src/lucene-core.iml     |    14 -
 .../lucene/core/src/test/lucene-core-tests.iml     |    17 -
 dev-tools/idea/lucene/demo/demo.iml                |    32 -
 dev-tools/idea/lucene/expressions/expressions.iml  |    30 -
 dev-tools/idea/lucene/facet/facet.iml              |    31 -
 dev-tools/idea/lucene/grouping/grouping.iml        |    18 -
 dev-tools/idea/lucene/highlighter/highlighter.iml  |    23 -
 dev-tools/idea/lucene/join/join.iml                |    19 -
 dev-tools/idea/lucene/luke/luke.iml                |    33 -
 dev-tools/idea/lucene/memory/memory.iml            |    19 -
 dev-tools/idea/lucene/misc/misc.iml                |    17 -
 dev-tools/idea/lucene/monitor/monitor.iml          |    32 -
 dev-tools/idea/lucene/queries/queries.iml          |    19 -
 dev-tools/idea/lucene/queryparser/queryparser.iml  |    21 -
 dev-tools/idea/lucene/replicator/replicator.iml    |    28 -
 dev-tools/idea/lucene/sandbox/sandbox.iml          |    28 -
 .../idea/lucene/spatial-extras/spatial-extras.iml  |    30 -
 dev-tools/idea/lucene/spatial3d/spatial3d.iml      |    17 -
 dev-tools/idea/lucene/suggest/suggest.iml          |    19 -
 .../test-framework/lucene-test-framework.iml       |    18 -
 dev-tools/idea/lucene/tools/tools.iml              |    24 -
 dev-tools/idea/parent.iml                          |    19 -
 .../contrib/analysis-extras/analysis-extras.iml    |    42 -
 .../idea/solr/contrib/analytics/analytics.iml      |    27 -
 .../idea/solr/contrib/clustering/clustering.iml    |    39 -
 .../dataimporthandler-extras.iml                   |    29 -
 .../dataimporthandler/dataimporthandler.iml        |    31 -
 .../idea/solr/contrib/extraction/extraction.iml    |    26 -
 .../jaegertracer-configurator.iml                  |    37 -
 dev-tools/idea/solr/contrib/langid/langid.iml      |    36 -
 dev-tools/idea/solr/contrib/ltr/ltr.iml            |    37 -
 .../prometheus-exporter/prometheus-exporter.iml    |    37 -
 dev-tools/idea/solr/contrib/velocity/velocity.iml  |    28 -
 dev-tools/idea/solr/core/src/java/solr-core.iml    |    38 -
 dev-tools/idea/solr/core/src/solr-core-tests.iml   |    37 -
 dev-tools/idea/solr/server/server.iml              |    19 -
 dev-tools/idea/solr/solrj/src/java/solrj.iml       |    16 -
 dev-tools/idea/solr/solrj/src/solrj-tests.iml      |    33 -
 .../solr/test-framework/solr-test-framework.iml    |    26 -
 dev-tools/maven/README.maven                       |   159 -
 .../maven/lucene/analysis/common/pom.xml.template  |    86 -
 .../maven/lucene/analysis/icu/pom.xml.template     |    76 -
 .../lucene/analysis/kuromoji/pom.xml.template      |    75 -
 .../lucene/analysis/morfologik/pom.xml.template    |    78 -
 .../maven/lucene/analysis/nori/pom.xml.template    |    75 -
 .../maven/lucene/analysis/opennlp/pom.xml.template |    78 -
 .../lucene/analysis/phonetic/pom.xml.template      |    75 -
 dev-tools/maven/lucene/analysis/pom.xml.template   |    55 -
 .../maven/lucene/analysis/smartcn/pom.xml.template |    73 -
 .../maven/lucene/analysis/stempel/pom.xml.template |    73 -
 .../maven/lucene/backward-codecs/pom.xml.template  |    88 -
 dev-tools/maven/lucene/benchmark/pom.xml.template  |    86 -
 .../maven/lucene/classification/pom.xml.template   |    68 -
 dev-tools/maven/lucene/codecs/pom.xml.template     |    48 -
 .../maven/lucene/codecs/src/java/pom.xml.template  |    85 -
 .../maven/lucene/codecs/src/test/pom.xml.template  |    84 -
 dev-tools/maven/lucene/core/pom.xml.template       |    48 -
 .../maven/lucene/core/src/java/pom.xml.template    |    79 -
 .../maven/lucene/core/src/test/pom.xml.template    |    84 -
 dev-tools/maven/lucene/demo/pom.xml.template       |    85 -
 .../maven/lucene/expressions/pom.xml.template      |    62 -
 dev-tools/maven/lucene/facet/pom.xml.template      |    75 -
 dev-tools/maven/lucene/grouping/pom.xml.template   |    68 -
 .../maven/lucene/highlighter/pom.xml.template      |    70 -
 dev-tools/maven/lucene/join/pom.xml.template       |    68 -
 dev-tools/maven/lucene/memory/pom.xml.template     |    70 -
 dev-tools/maven/lucene/misc/pom.xml.template       |    68 -
 dev-tools/maven/lucene/monitor/pom.xml.template    |    70 -
 dev-tools/maven/lucene/pom.xml.template            |   127 -
 dev-tools/maven/lucene/queries/pom.xml.template    |    68 -
 .../maven/lucene/queryparser/pom.xml.template      |    86 -
 dev-tools/maven/lucene/replicator/pom.xml.template |    74 -
 dev-tools/maven/lucene/sandbox/pom.xml.template    |    73 -
 .../maven/lucene/spatial-extras/pom.xml.template   |    69 -
 dev-tools/maven/lucene/spatial3d/pom.xml.template  |    70 -
 dev-tools/maven/lucene/suggest/pom.xml.template    |    73 -
 .../maven/lucene/test-framework/pom.xml.template   |   109 -
 dev-tools/maven/pom.xml.template                   |   475 -
 .../solr/contrib/analysis-extras/pom.xml.template  |    85 -
 .../maven/solr/contrib/analytics/pom.xml.template  |    80 -
 .../maven/solr/contrib/clustering/pom.xml.template |    78 -
 .../dataimporthandler-extras/pom.xml.template      |    85 -
 .../contrib/dataimporthandler/pom.xml.template     |    91 -
 .../maven/solr/contrib/extraction/pom.xml.template |    81 -
 .../jaegertracer-configurator/pom.xml.template     |    80 -
 .../maven/solr/contrib/langid/pom.xml.template     |    87 -
 dev-tools/maven/solr/contrib/ltr/pom.xml.template  |    80 -
 dev-tools/maven/solr/contrib/pom.xml.template      |    57 -
 .../contrib/prometheus-exporter/pom.xml.template   |    80 -
 .../maven/solr/contrib/velocity/pom.xml.template   |    89 -
 dev-tools/maven/solr/core/pom.xml.template         |    48 -
 .../maven/solr/core/src/java/pom.xml.template      |    84 -
 .../maven/solr/core/src/test/pom.xml.template      |   155 -
 dev-tools/maven/solr/maven.testlogging.properties  |     2 -
 dev-tools/maven/solr/pom.xml.template              |   186 -
 dev-tools/maven/solr/solrj/pom.xml.template        |    48 -
 .../maven/solr/solrj/src/java/pom.xml.template     |    78 -
 .../maven/solr/solrj/src/test/pom.xml.template     |   122 -
 .../maven/solr/test-framework/pom.xml.template     |    95 -
 dev-tools/missing-doclet/build.gradle              |    32 +
 dev-tools/missing-doclet/settings.gradle           |    17 +
 .../apache/lucene/missingdoclet/MissingDoclet.java |   435 +
 dev-tools/netbeans/nb-project.xsl                  |   165 -
 dev-tools/netbeans/nbproject/project.properties    |     9 -
 dev-tools/scripts/SOLR-2452.patch.hack.pl          |   215 -
 dev-tools/scripts/buildAndPushRelease.py           |     4 +-
 dev-tools/scripts/checkJavaDocs.py                 |   392 -
 dev-tools/scripts/jenkins.build.ref.guide.sh       |    73 -
 dev-tools/scripts/releaseWizard.py                 |     4 +
 dev-tools/scripts/releaseWizard.yaml               |    63 +-
 dev-tools/scripts/smokeTestRelease.py              |    49 +-
 .../ant-compat/forbidden-api-rules-in-sync.gradle  |    54 -
 gradle/ant-compat/jar-checks.gradle                |    26 -
 gradle/ant-compat/resolve.gradle                   |   227 -
 gradle/ant-compat/solr-forbidden-apis.gradle       |    26 -
 gradle/ant-compat/test-classes-cross-deps.gradle   |    12 +-
 gradle/defaults-java.gradle                        |    16 +-
 gradle/defaults.gradle                             |    30 +
 gradle/documentation/changes-to-html.gradle        |     2 +-
 gradle/documentation/documentation.gradle          |    24 +-
 gradle/documentation/render-javadoc.gradle         |   597 +
 .../render-javadoc}/java11/package-list            |     0
 .../render-javadoc}/junit/package-list             |     0
 .../render-javadoc}/prettify/inject-javadocs.js    |     0
 .../render-javadoc}/prettify/prettify.css          |     0
 .../render-javadoc}/prettify/prettify.js           |     0
 .../render-javadoc}/table_padding.css              |     0
 gradle/generation/jflex.gradle                     |     2 +-
 gradle/generation/kuromoji.gradle                  |     2 +-
 gradle/generation/snowball.gradle                  |     6 +
 gradle/generation/util.gradle                      |     4 +-
 gradle/hacks/findbugs.gradle                       |     5 +-
 gradle/hacks/gradle.gradle                         |    51 +
 gradle/hacks/hashmapAssertions.gradle              |    33 +
 gradle/help.gradle                                 |     5 +
 gradle/ide/eclipse.gradle                          |   105 +
 .../ide}/eclipse/dot.classpath.xsl                 |     0
 {dev-tools => gradle/ide}/eclipse/dot.project      |     0
 .../dot.settings/org.eclipse.core.resources.prefs  |     0
 .../dot.settings/org.eclipse.jdt.core.prefs        |     0
 .../eclipse/dot.settings/org.eclipse.jdt.ui.prefs  |     0
 .../ide}/eclipse/run-solr-cloud.launch             |     0
 {dev-tools => gradle/ide}/eclipse/run-solr.launch  |     0
 .../ide}/eclipse/run-test-cases.launch             |     0
 gradle/maven/defaults-maven.gradle                 |     2 -
 gradle/render-javadoc.gradle                       |   302 -
 gradle/solr/packaging.gradle                       |   200 +
 gradle/solr/solr-forbidden-apis.gradle             |    26 +
 gradle/testing/alternative-jdk-support.gradle      |    76 +
 gradle/testing/beasting.gradle                     |    92 +
 gradle/testing/defaults-tests.gradle               |    59 +-
 .../testing/defaults-tests}/logging.properties     |     0
 gradle/testing/fail-on-no-tests.gradle             |     2 +-
 gradle/testing/policies/solr-tests.policy          |   217 -
 gradle/testing/profiling.gradle                    |    50 +-
 gradle/testing/randomization.gradle                |    92 +-
 .../policies}/replicator-tests.policy              |     0
 .../randomization/policies/solr-tests.policy       |   217 +
 .../testing/randomization/policies}/tests.policy   |     0
 gradle/testing/runtime-jvm-support.gradle          |    52 -
 gradle/validation/check-broken-links.gradle        |    11 +-
 gradle/validation/config-file-sanity.gradle        |     2 +-
 gradle/validation/ecj-lint.gradle                  |    11 +-
 .../validation/ecj-lint}/ecj.javadocs.prefs        |     0
 gradle/validation/error-prone.gradle               |   149 +
 gradle/validation/forbidden-apis.gradle            |    21 +-
 gradle/validation/gradlew-scripts-tweaked.gradle   |     6 +-
 gradle/validation/jar-checks.gradle                |    11 +-
 gradle/validation/missing-docs-check.gradle        |   116 -
 gradle/validation/owasp-dependency-check.gradle    |     4 +-
 .../owasp-dependency-check/exclusions.xml          |    24 -
 gradle/validation/validate-log-calls.gradle        |    12 +-
 gradle/validation/validate-source-patterns.gradle  |   241 +-
 gradlew                                            |    13 +-
 gradlew.bat                                        |     7 +-
 help/IDEs.txt                                      |    20 +
 help/jvms.txt                                      |    18 +
 help/tests.txt                                     |    30 +-
 lucene/BUILD.md                                    |    92 +-
 lucene/CHANGES.txt                                 |    83 +-
 lucene/analysis/analysis-module-build.xml          |    44 -
 lucene/analysis/build.xml                          |   172 -
 lucene/analysis/common/build.gradle                |     1 -
 lucene/analysis/common/build.xml                   |   125 -
 lucene/analysis/common/ivy.xml                     |    21 -
 .../analysis/compound/hyphenation/TernaryTree.java |     4 +
 .../apache/lucene/analysis/sr/SerbianAnalyzer.java |   129 +
 .../org/apache/lucene/collation/package-info.java  |     2 +-
 .../org/apache/lucene/analysis/sr/stopwords.txt    |   156 +
 .../TestPatternReplaceCharFilterFactory.java       |    23 +
 .../lucene/analysis/sr/TestSerbianAnalyzer.java    |    65 +
 lucene/analysis/icu/build.xml                      |   118 -
 lucene/analysis/icu/ivy.xml                        |    28 -
 lucene/analysis/kuromoji/build.xml                 |    98 -
 lucene/analysis/kuromoji/ivy.xml                   |    37 -
 lucene/analysis/morfologik/build.xml               |    40 -
 lucene/analysis/morfologik/ivy.xml                 |    31 -
 lucene/analysis/nori/build.gradle                  |     1 +
 lucene/analysis/nori/build.xml                     |    84 -
 lucene/analysis/nori/ivy.xml                       |    33 -
 lucene/analysis/opennlp/build.xml                  |   118 -
 lucene/analysis/opennlp/ivy.xml                    |    28 -
 lucene/analysis/phonetic/build.xml                 |    35 -
 lucene/analysis/phonetic/ivy.xml                   |    28 -
 lucene/analysis/smartcn/build.xml                  |    34 -
 lucene/analysis/smartcn/ivy.xml                    |    21 -
 lucene/analysis/stempel/build.xml                  |    34 -
 lucene/analysis/stempel/ivy.xml                    |    21 -
 lucene/backward-codecs/build.xml                   |    26 -
 lucene/backward-codecs/ivy.xml                     |    21 -
 .../java/org/apache/lucene/codecs/Placeholder.java |     3 +-
 .../lucene50/Lucene50StoredFieldsFormat.java       |   152 +
 .../lucene/codecs/lucene84/Lucene84Codec.java      |     2 +-
 .../lucene/codecs/lucene86/Lucene86Codec.java      |   178 +
 .../org/apache/lucene/codecs/lucene86/package.html |    25 +
 .../services/org.apache.lucene.codecs.Codec        |     1 +
 .../lucene50/Lucene50RWStoredFieldsFormat.java     |    51 +
 .../lucene50/TestLucene50StoredFieldsFormat.java   |    29 +
 ...tLucene50StoredFieldsFormatHighCompression.java |    80 +
 ...estLucene50StoredFieldsFormatMergeInstance.java |     0
 .../lucene70/TestLucene70SegmentInfoFormat.java    |    10 +-
 .../lucene/codecs/lucene84/Lucene84RWCodec.java    |     7 +
 .../lucene/codecs/lucene86/Lucene86RWCodec.java    |    45 +
 .../lucene/index/TestBackwardsCompatibility.java   |    10 +-
 .../org/apache/lucene/index/index.8.6.1-cfs.zip    |   Bin 0 -> 16384 bytes
 .../org/apache/lucene/index/index.8.6.1-nocfs.zip  |   Bin 0 -> 16379 bytes
 .../org/apache/lucene/index/index.8.6.2-cfs.zip    |   Bin 0 -> 16338 bytes
 .../org/apache/lucene/index/index.8.6.2-nocfs.zip  |   Bin 0 -> 16341 bytes
 .../test/org/apache/lucene/index/sorted.8.6.1.zip  |   Bin 0 -> 132476 bytes
 .../test/org/apache/lucene/index/sorted.8.6.2.zip  |   Bin 0 -> 140426 bytes
 lucene/benchmark/build.gradle                      |     8 +-
 lucene/benchmark/build.xml                         |   289 -
 lucene/benchmark/ivy.xml                           |    32 -
 .../benchmark/byTask/tasks/CreateIndexTask.java    |     4 +-
 lucene/build.xml                                   |   586 -
 lucene/classification/build.xml                    |    55 -
 lucene/classification/ivy.xml                      |    21 -
 .../CachingNaiveBayesClassifier.java               |     1 +
 lucene/codecs/build.xml                            |    28 -
 lucene/codecs/ivy.xml                              |    21 -
 .../sharedterms/STUniformSplitTermsWriter.java     |     2 +-
 lucene/common-build.xml                            |  2605 ----
 lucene/core/build.xml                              |   235 -
 lucene/core/ivy.xml                                |    21 -
 .../java/org/apache/lucene/analysis/Analyzer.java  |    16 +-
 .../org/apache/lucene/analysis/CharArrayMap.java   |     1 +
 .../org/apache/lucene/analysis/package-info.java   |     8 +-
 .../src/java/org/apache/lucene/codecs/Codec.java   |     2 +-
 .../codecs/blocktree/CompressionAlgorithm.java     |     2 +-
 .../compressing/CompressingStoredFieldsReader.java |    70 +-
 .../compressing/CompressingStoredFieldsWriter.java |    33 +-
 .../compressing/CompressingTermVectorsReader.java  |    65 +-
 .../compressing/CompressingTermVectorsWriter.java  |    32 +-
 .../lucene/codecs/compressing/CompressionMode.java |     2 +-
 .../codecs/compressing/FieldsIndexReader.java      |    33 +-
 .../codecs/compressing/FieldsIndexWriter.java      |    14 +-
 .../codecs/lucene50/Lucene50FieldInfosFormat.java  |     1 -
 .../lucene50/Lucene50StoredFieldsFormat.java       |   157 -
 .../codecs/lucene50/Lucene50TermVectorsFormat.java |     3 +-
 .../codecs/lucene60/Lucene60FieldInfosFormat.java  |     1 -
 .../codecs/lucene80/Lucene80DocValuesProducer.java |     2 +-
 .../lucene/codecs/lucene86/Lucene86Codec.java      |   178 -
 .../lucene/codecs/lucene86/package-info.java       |     6 +-
 .../codecs/lucene87/BugfixDeflater_JDK8252739.java |   112 +
 .../DeflateWithPresetDictCompressionMode.java      |   224 +
 .../lucene87/LZ4WithPresetDictCompressionMode.java |   199 +
 .../lucene/codecs/lucene87/Lucene87Codec.java      |   179 +
 .../lucene87/Lucene87StoredFieldsFormat.java       |   185 +
 .../lucene/codecs/lucene87/package-info.java       |   416 +
 .../apache/lucene/index/BinaryDocValuesWriter.java |    68 +-
 .../java/org/apache/lucene/index/CheckIndex.java   |     2 +-
 .../lucene/index/DocumentsWriterDeleteQueue.java   |     8 +-
 .../lucene/index/DocumentsWriterFlushControl.java  |     6 +-
 .../lucene/index/DocumentsWriterPerThreadPool.java |    14 +-
 .../lucene/index/ExitableDirectoryReader.java      |     4 +-
 .../java/org/apache/lucene/index/FieldInfo.java    |    16 +-
 .../apache/lucene/index/FreqProxTermsWriter.java   |   521 +-
 .../java/org/apache/lucene/index/IndexWriter.java  |   313 +-
 .../org/apache/lucene/index/IndexWriterConfig.java |    15 +-
 .../apache/lucene/index/LiveIndexWriterConfig.java |    10 +-
 .../java/org/apache/lucene/index/MergePolicy.java  |    17 +-
 .../java/org/apache/lucene/index/MergeTrigger.java |     4 +
 .../org/apache/lucene/index/NormValuesWriter.java  |     4 +-
 .../lucene/index/NumericDocValuesWriter.java       |    72 +-
 .../java/org/apache/lucene/index/ReaderPool.java   |     2 +-
 .../java/org/apache/lucene/index/SegmentInfos.java |    19 +-
 .../apache/lucene/index/SortedDocValuesWriter.java |    70 +-
 .../lucene/index/SortedNumericDocValuesWriter.java |    70 +-
 .../lucene/index/SortedSetDocValuesWriter.java     |    77 +-
 .../apache/lucene/index/SortingCodecReader.java    |   513 +
 .../org/apache/lucene/index/SortingLeafReader.java |  1267 --
 .../lucene/index/StandardDirectoryReader.java      |    24 +-
 .../org/apache/lucene/search/BooleanQuery.java     |    12 +-
 .../lucene/search/DisjunctionMatchesIterator.java  |     3 +-
 .../apache/lucene/search/DoubleValuesSource.java   |    31 +-
 .../java/org/apache/lucene/search/FuzzyQuery.java  |     6 +-
 .../org/apache/lucene/search/LongValuesSource.java |     6 +-
 .../lucene/search/MultiCollectorManager.java       |     5 +
 .../search/MultiTermQueryConstantScoreWrapper.java |     3 -
 .../src/java/org/apache/lucene/search/Sort.java    |     2 +-
 .../org/apache/lucene/search/SynonymQuery.java     |     2 +-
 .../java/org/apache/lucene/search/TermQuery.java   |     3 -
 .../lucene/search/TimeLimitingCollector.java       |     2 +
 .../lucene/search/similarities/AxiomaticF1EXP.java |     2 +-
 .../lucene/search/similarities/AxiomaticF1LOG.java |     2 +-
 .../lucene/search/similarities/AxiomaticF2EXP.java |     2 +-
 .../lucene/search/similarities/AxiomaticF2LOG.java |     2 +-
 .../lucene/search/similarities/AxiomaticF3EXP.java |     2 +-
 .../lucene/search/similarities/AxiomaticF3LOG.java |     2 +-
 .../lucene/search/spans/SpanContainingQuery.java   |     6 +-
 .../apache/lucene/search/spans/SpanNearQuery.java  |     4 +
 .../apache/lucene/search/spans/SpanNotQuery.java   |     4 +
 .../apache/lucene/search/spans/SpanOrQuery.java    |     4 +
 .../search/spans/SpanPositionCheckQuery.java       |     4 +
 .../apache/lucene/search/spans/SpanTermQuery.java  |     4 +
 .../lucene/search/spans/SpanWithinQuery.java       |     6 +-
 .../org/apache/lucene/util/AttributeSource.java    |     2 +
 .../java/org/apache/lucene/util/PagedBytes.java    |     8 +
 .../src/java/org/apache/lucene/util/Version.java   |    14 +
 .../java/org/apache/lucene/util/compress/LZ4.java  |    80 +-
 lucene/core/src/java/overview.html                 |     6 +-
 .../services/org.apache.lucene.codecs.Codec        |     2 +-
 .../lucene50/TestLucene50StoredFieldsFormat.java   |    29 -
 ...tLucene50StoredFieldsFormatHighCompression.java |    80 -
 .../codecs/lucene80/TestLucene80NormsFormat.java   |     4 +-
 .../codecs/lucene86/TestLucene86PointsFormat.java  |     2 +-
 .../lucene87/TestLucene87StoredFieldsFormat.java   |    28 +
 ...tLucene87StoredFieldsFormatHighCompression.java |    84 +
 ...estLucene87StoredFieldsFormatMergeInstance.java |    29 +
 .../index/TestDocumentsWriterDeleteQueue.java      |    21 +
 .../index/TestDocumentsWriterPerThreadPool.java    |    96 +
 .../apache/lucene/index/TestForTooMuchCloning.java |     5 +-
 .../org/apache/lucene/index/TestIndexWriter.java   |     4 +-
 .../apache/lucene/index/TestIndexWriterDelete.java |     7 +-
 .../lucene/index/TestIndexWriterExceptions.java    |   104 +
 .../lucene/index/TestIndexWriterMergePolicy.java   |   232 +-
 .../lucene/index/TestIndexWriterOnVMError.java     |     4 +-
 .../apache/lucene/index/TestIndexWriterReader.java |    33 +-
 .../lucene/index/TestIndexWriterWithThreads.java   |     1 -
 .../org/apache/lucene/index/TestPointValues.java   |     4 +-
 .../index/TestSoftDeletesRetentionMergePolicy.java |     2 +-
 .../lucene/index/TestSortingCodecReader.java       |   224 +
 .../apache/lucene/index/TestTieredMergePolicy.java |     6 +-
 .../apache/lucene/search/MultiCollectorTest.java   |   338 -
 .../org/apache/lucene/search/TestBoolean2.java     |     9 +-
 .../apache/lucene/search/TestBooleanRewrites.java  |    18 +-
 .../lucene/search/TestDoubleValuesSource.java      |     5 +
 .../apache/lucene/search/TestLongValuesSource.java |     6 +
 .../apache/lucene/search/TestMatchesIterator.java  |    93 +-
 .../apache/lucene/search/TestMultiCollector.java   |   309 +
 .../test/org/apache/lucene/search/TestSort.java    |    24 +-
 .../test/org/apache/lucene/util/TestVersion.java   |     2 +-
 .../apache/lucene/util/compress/LZ4TestCase.java   |    81 +-
 lucene/default-nested-ivy-settings.xml             |    56 -
 lucene/demo/build.xml                              |    61 -
 lucene/demo/ivy.xml                                |    21 -
 lucene/demo/src/java/overview.html                 |     2 +-
 lucene/expressions/build.xml                       |   120 -
 lucene/expressions/ivy.xml                         |    30 -
 lucene/facet/build.xml                             |    47 -
 lucene/facet/ivy.xml                               |    27 -
 .../facet/taxonomy/DocValuesOrdinalsReader.java    |    15 +-
 lucene/grouping/build.gradle                       |     2 +-
 lucene/grouping/build.xml                          |    49 -
 lucene/grouping/ivy.xml                            |    21 -
 lucene/highlighter/build.gradle                    |     1 +
 lucene/highlighter/build.xml                       |    54 -
 lucene/highlighter/ivy.xml                         |    21 -
 .../BreakIteratorShrinkingAdjuster.java            |    86 +
 .../matchhighlight/CharSequenceIterator.java       |   104 +
 .../matchhighlight/MatchRegionRetriever.java       |   304 +
 .../lucene/search/matchhighlight/OffsetRange.java  |    65 +
 .../matchhighlight/OffsetsFromMatchIterator.java   |    49 +
 .../matchhighlight/OffsetsFromPositions.java       |   154 +
 .../search/matchhighlight/OffsetsFromTokens.java   |    97 +
 .../search/matchhighlight/OffsetsFromValues.java   |    74 +
 .../matchhighlight/OffsetsRetrievalStrategy.java   |    42 +
 .../OffsetsRetrievalStrategySupplier.java          |    26 +
 .../lucene/search/matchhighlight/Passage.java      |    39 +
 .../search/matchhighlight/PassageAdjuster.java     |    27 +
 .../search/matchhighlight/PassageFormatter.java    |   214 +
 .../search/matchhighlight/PassageSelector.java     |   273 +
 .../lucene/search/matchhighlight/package-info.java |    28 +
 .../search/uhighlight/UnifiedHighlighter.java      |     5 +-
 .../matchhighlight/AsciiMatchRangeHighlighter.java |    81 +
 .../search/matchhighlight/MissingAnalyzer.java     |    39 +
 .../matchhighlight/TestMatchRegionRetriever.java   |   767 ++
 .../search/matchhighlight/TestPassageSelector.java |   284 +
 .../uhighlight/TestUnifiedHighlighterMTQ.java      |    11 +-
 .../uhighlight/TestUnifiedHighlighterTermVec.java  |     1 +
 lucene/ivy-ignore-conflicts.properties             |    14 -
 lucene/ivy-versions.properties                     |   333 -
 lucene/join/build.xml                              |    27 -
 lucene/join/ivy.xml                                |    21 -
 lucene/licenses/ant-1.8.2.jar.sha1                 |     1 -
 lucene/licenses/ant-LICENSE-ASL.txt                |   272 -
 lucene/licenses/ant-NOTICE.txt                     |    26 -
 lucene/licenses/hamcrest-2.2.jar.sha1              |     1 +
 .../licenses/hamcrest-LICENSE-BSD.txt              |     0
 .../licenses/hamcrest-NOTICE.txt                   |     0
 lucene/licenses/hamcrest-core-1.3.jar.sha1         |     1 -
 lucene/licenses/hamcrest-core-NOTICE.txt           |     0
 lucene/licenses/ivy-2.4.0.jar.sha1                 |     1 -
 lucene/licenses/ivy-LICENSE-ASL.txt                |   258 -
 lucene/licenses/ivy-NOTICE.txt                     |    16 -
 lucene/luke/build.gradle                           |   132 +-
 lucene/luke/build.xml                              |    82 -
 lucene/luke/ivy.xml                                |    34 -
 lucene/luke/src/distribution/README.md             |     8 +
 .../luke/models/commits/CommitsImplTest.java       |     7 +-
 lucene/memory/build.xml                            |    34 -
 lucene/memory/ivy.xml                              |    21 -
 .../apache/lucene/index/memory/MemoryIndex.java    |     1 +
 lucene/misc/build.gradle                           |     2 +-
 lucene/misc/build.xml                              |    52 -
 lucene/misc/ivy.xml                                |    21 -
 .../org/apache/lucene/document/LazyDocument.java   |     1 +
 lucene/module-build.xml                            |   721 -
 lucene/monitor/build.xml                           |    53 -
 lucene/monitor/ivy.xml                             |    21 -
 lucene/queries/build.gradle                        |     3 +-
 lucene/queries/build.xml                           |    32 -
 lucene/queries/ivy.xml                             |    21 -
 .../queries/function/FunctionMatchQuery.java       |    19 +-
 .../lucene/queries/function/FunctionQuery.java     |     8 +
 .../function/valuesource/MultiFunction.java        |     1 +
 .../queries/function/TestFunctionMatchQuery.java   |    26 +-
 lucene/queryparser/build.gradle                    |     2 +
 lucene/queryparser/build.xml                       |   178 -
 lucene/queryparser/ivy.xml                         |    21 -
 .../precedence/processors/package-info.java        |    39 +
 .../flexible/precedence/processors/package.html    |    47 -
 lucene/queryparser/xmldtddocbuild.xml              |    53 -
 lucene/replicator/build.gradle                     |     1 +
 lucene/replicator/build.xml                        |    53 -
 lucene/replicator/ivy.xml                          |    47 -
 lucene/sandbox/build.xml                           |    26 -
 lucene/sandbox/ivy.xml                             |    21 -
 .../document/TestFloatPointNearestNeighbor.java    |     3 +-
 .../test/org/apache/lucene/search/TestNearest.java |     3 +-
 lucene/spatial-extras/build.gradle                 |     2 +
 lucene/spatial-extras/build.xml                    |    62 -
 lucene/spatial-extras/ivy.xml                      |    40 -
 .../org/apache/lucene/spatial/package-info.java    |    19 +
 .../java/org/apache/lucene/spatial/package.html    |    26 -
 .../lucene/spatial/prefix/PrefixTreeStrategy.java  |     1 +
 .../lucene/spatial/prefix/tree/QuadPrefixTree.java |     1 +
 .../apache/lucene/spatial/util/package-info.java   |    19 +
 .../org/apache/lucene/spatial/util/package.html    |    26 -
 lucene/spatial3d/build.xml                         |    30 -
 lucene/spatial3d/ivy.xml                           |    21 -
 lucene/suggest/build.xml                           |    47 -
 lucene/suggest/ivy.xml                             |    21 -
 .../apache/lucene/search/spell/SuggestWord.java    |     5 +
 .../search/suggest/document/TestSuggestField.java  |     4 +-
 lucene/test-framework/build.gradle                 |    10 +-
 lucene/test-framework/build.xml                    |    82 -
 lucene/test-framework/ivy.xml                      |    33 -
 .../codecs/asserting/AssertingDocValuesFormat.java |     4 +-
 .../codecs/compressing/CompressingCodec.java       |     6 +-
 .../DeflateWithPresetCompressingCodec.java         |    36 +
 .../compressing/LZ4WithPresetCompressingCodec.java |    36 +
 .../apache/lucene/geo/BaseGeoPointTestCase.java    |     4 +-
 .../org/apache/lucene/geo/BaseXYPointTestCase.java |     4 +-
 .../apache/lucene/index/AssertingLeafReader.java   |    32 +-
 .../index/BaseTermVectorsFormatTestCase.java       |     2 +
 .../apache/lucene/index/PointsStackTracker.java    |     1 +
 .../lucene/search/ShardSearchingTestBase.java      |     1 +
 .../apache/lucene/store/MockDirectoryWrapper.java  |     2 +-
 .../org/apache/lucene/util/LuceneTestCase.java     |     2 +-
 .../util/TestRuleSetupAndRestoreClassEnv.java      |     8 +-
 .../src/java/org/apache/lucene/util/TestUtil.java  |     4 +-
 .../services/org.apache.lucene.codecs.Codec        |     2 +
 lucene/tools/build.xml                             |    64 -
 lucene/tools/custom-tasks.xml                      |   149 -
 lucene/tools/forbiddenApis/base.txt                |    64 -
 lucene/tools/forbiddenApis/lucene.txt              |    49 -
 lucene/tools/forbiddenApis/servlet-api.txt         |    43 -
 lucene/tools/forbiddenApis/solr.txt                |    61 -
 lucene/tools/forbiddenApis/tests.txt               |    29 -
 lucene/tools/ivy.xml                               |    29 -
 lucene/tools/junit4/cached-timehints.txt           |     0
 .../tools/src/groovy/check-source-patterns.groovy  |   229 -
 lucene/tools/src/groovy/check-working-copy.groovy  |    61 -
 .../src/groovy/install-markdown-filter.groovy      |    61 -
 lucene/tools/src/groovy/run-beaster.groovy         |   121 -
 lucene/tools/src/groovy/run-maven-build.groovy     |    50 -
 lucene/tools/src/java/lucene-solr.antlib.xml       |    27 -
 .../dependencies/GetMavenDependenciesTask.java     |   920 --
 .../dependencies/InterpolatedProperties.java       |   162 -
 .../lucene/validation/LibVersionsCheckTask.java    |   903 --
 .../apache/lucene/validation/LicenseCheckTask.java |   352 -
 .../org/apache/lucene/validation/LicenseType.java  |    75 -
 .../lucene/validation/ivyde/IvyNodeElement.java    |   178 -
 .../validation/ivyde/IvyNodeElementAdapter.java    |   135 -
 lucene/top-level-ivy-settings.xml                  |    24 -
 lucene/version.properties                          |    10 -
 settings.gradle                                    |     3 +-
 solr/.gitignore                                    |     5 -
 solr/CHANGES.txt                                   |   120 +-
 solr/README.md                                     |    57 +-
 solr/bin/solr                                      |    10 +-
 solr/bin/solr.cmd                                  |    71 +-
 solr/build.gradle                                  |     4 +-
 solr/build.xml                                     |   813 --
 solr/cloud-dev/cloud.sh                            |    23 +-
 solr/common-build.xml                              |   551 -
 solr/contrib/analysis-extras/build.gradle          |     1 -
 solr/contrib/analysis-extras/build.xml             |    92 -
 solr/contrib/analysis-extras/ivy.xml               |    41 -
 ...ExtractNamedEntitiesUpdateProcessorFactory.java |     8 +-
 solr/contrib/analytics/build.xml                   |    28 -
 solr/contrib/analytics/ivy.xml                     |    29 -
 .../org/apache/solr/handler/AnalyticsHandler.java  |     7 +-
 solr/contrib/clustering/build.xml                  |    28 -
 solr/contrib/clustering/ivy.xml                    |    41 -
 solr/contrib/contrib-build.xml                     |    57 -
 solr/contrib/dataimporthandler-extras/build.gradle |    33 -
 solr/contrib/dataimporthandler-extras/build.xml    |    96 -
 solr/contrib/dataimporthandler-extras/ivy.xml      |    40 -
 .../handler/dataimport/MailEntityProcessor.java    |   901 --
 .../handler/dataimport/TikaEntityProcessor.java    |   253 -
 .../apache/solr/handler/dataimport/package.html    |    23 -
 .../src/java/overview.html                         |    21 -
 .../src/resources/solr-default-tika-config.xml     |    20 -
 .../src/test-files/dihextras/bad.doc               |   Bin 116222 -> 0 bytes
 .../src/test-files/dihextras/solr-word.pdf         |   Bin 21052 -> 0 bytes
 .../conf/dataimport-schema-no-unique-key.xml       |   205 -
 .../collection1/conf/dataimport-solrconfig.xml     |   277 -
 .../src/test-files/dihextras/structured.html       |    29 -
 .../src/test-files/dihextras/test_jpeg.jpg         |   Bin 12924 -> 0 bytes
 .../dihextras/test_recursive_embedded.docx         |   Bin 27082 -> 0 bytes
 .../src/test-files/dihextras/test_vsdx.vsdx        |   Bin 44426 -> 0 bytes
 .../dataimport/TestMailEntityProcessor.java        |   199 -
 .../dataimport/TestTikaEntityProcessor.java        |   221 -
 solr/contrib/dataimporthandler/README.md           |    26 -
 solr/contrib/dataimporthandler/build.gradle        |    34 -
 solr/contrib/dataimporthandler/build.xml           |    32 -
 solr/contrib/dataimporthandler/ivy.xml             |    34 -
 .../dataimport/BinContentStreamDataSource.java     |    70 -
 .../solr/handler/dataimport/BinFileDataSource.java |    64 -
 .../solr/handler/dataimport/BinURLDataSource.java  |   104 -
 .../solr/handler/dataimport/CachePropertyUtil.java |    48 -
 .../solr/handler/dataimport/ClobTransformer.java   |    85 -
 .../solr/handler/dataimport/ConfigParseUtil.java   |    73 -
 .../dataimport/ContentStreamDataSource.java        |    69 -
 .../apache/solr/handler/dataimport/Context.java    |   221 -
 .../solr/handler/dataimport/ContextImpl.java       |   264 -
 .../apache/solr/handler/dataimport/DIHCache.java   |   103 -
 .../solr/handler/dataimport/DIHCacheSupport.java   |   279 -
 .../solr/handler/dataimport/DIHLogLevels.java      |    21 -
 .../solr/handler/dataimport/DIHProperties.java     |    45 -
 .../apache/solr/handler/dataimport/DIHWriter.java  |    99 -
 .../solr/handler/dataimport/DIHWriterBase.java     |    44 -
 .../solr/handler/dataimport/DataImportHandler.java |   318 -
 .../dataimport/DataImportHandlerException.java     |    75 -
 .../solr/handler/dataimport/DataImporter.java      |   628 -
 .../apache/solr/handler/dataimport/DataSource.java |    65 -
 .../handler/dataimport/DateFormatEvaluator.java    |   180 -
 .../handler/dataimport/DateFormatTransformer.java  |   106 -
 .../apache/solr/handler/dataimport/DebugInfo.java  |    66 -
 .../solr/handler/dataimport/DebugLogger.java       |   295 -
 .../apache/solr/handler/dataimport/DocBuilder.java |  1004 --
 .../solr/handler/dataimport/EntityProcessor.java   |   113 -
 .../handler/dataimport/EntityProcessorBase.java    |   174 -
 .../handler/dataimport/EntityProcessorWrapper.java |   357 -
 .../apache/solr/handler/dataimport/Evaluator.java  |   140 -
 .../solr/handler/dataimport/EventListener.java     |    35 -
 .../handler/dataimport/FieldReaderDataSource.java  |   122 -
 .../handler/dataimport/FieldStreamDataSource.java  |    85 -
 .../solr/handler/dataimport/FileDataSource.java    |   155 -
 .../dataimport/FileListEntityProcessor.java        |   305 -
 .../handler/dataimport/HTMLStripTransformer.java   |    96 -
 .../solr/handler/dataimport/JdbcDataSource.java    |   583 -
 .../handler/dataimport/LineEntityProcessor.java    |   164 -
 .../solr/handler/dataimport/LogTransformer.java    |    67 -
 .../solr/handler/dataimport/MockDataSource.java    |    61 -
 .../dataimport/NumberFormatTransformer.java        |   134 -
 .../dataimport/PlainTextEntityProcessor.java       |    78 -
 .../solr/handler/dataimport/RegexTransformer.java  |   200 -
 .../solr/handler/dataimport/RequestInfo.java       |   177 -
 .../solr/handler/dataimport/ScriptTransformer.java |   131 -
 .../handler/dataimport/SimplePropertiesWriter.java |   247 -
 .../handler/dataimport/SolrEntityProcessor.java    |   321 -
 .../dataimport/SolrQueryEscapingEvaluator.java     |    35 -
 .../apache/solr/handler/dataimport/SolrWriter.java |   175 -
 .../handler/dataimport/SortedMapBackedCache.java   |   238 -
 .../handler/dataimport/SqlEntityProcessor.java     |   173 -
 .../handler/dataimport/SqlEscapingEvaluator.java   |    41 -
 .../handler/dataimport/TemplateTransformer.java    |   115 -
 .../solr/handler/dataimport/Transformer.java       |    50 -
 .../solr/handler/dataimport/URLDataSource.java     |   154 -
 .../solr/handler/dataimport/UrlEvaluator.java      |    46 -
 .../solr/handler/dataimport/VariableResolver.java  |   211 -
 .../handler/dataimport/XPathEntityProcessor.java   |   555 -
 .../solr/handler/dataimport/XPathRecordReader.java |   670 -
 .../handler/dataimport/ZKPropertiesWriter.java     |    95 -
 .../org/apache/solr/handler/dataimport/Zipper.java |   115 -
 .../dataimport/config/ConfigNameConstants.java     |    59 -
 .../handler/dataimport/config/ConfigParseUtil.java |    72 -
 .../dataimport/config/DIHConfiguration.java        |   199 -
 .../solr/handler/dataimport/config/Entity.java     |   228 -
 .../handler/dataimport/config/EntityField.java     |   102 -
 .../solr/handler/dataimport/config/Field.java      |   108 -
 .../handler/dataimport/config/PropertyWriter.java  |    38 -
 .../solr/handler/dataimport/config/Script.java     |    41 -
 .../handler/dataimport/config/package-info.java    |    24 -
 .../solr/handler/dataimport/package-info.java      |    25 -
 .../dataimporthandler/src/java/overview.html       |    21 -
 .../collection1/conf/contentstream-solrconfig.xml  |   287 -
 .../collection1/conf/data-config-end-to-end.xml    |    41 -
 .../conf/data-config-with-datasource.xml           |     9 -
 .../conf/data-config-with-transformer.xml          |    10 -
 .../collection1/conf/dataconfig-contentstream.xml  |    10 -
 .../conf/dataimport-nodatasource-solrconfig.xml    |   279 -
 .../solr/collection1/conf/dataimport-schema.xml    |    70 -
 .../collection1/conf/dataimport-solr_id-schema.xml |   313 -
 .../collection1/conf/dataimport-solrconfig.xml     |   287 -
 .../dih/solr/collection1/conf/protwords.txt        |    20 -
 .../collection1/conf/single-entity-data-config.xml |     9 -
 .../dih/solr/collection1/conf/stopwords.txt        |    16 -
 .../dih/solr/collection1/conf/synonyms.txt         |    22 -
 .../src/test-files/dih/solr/solr.xml               |    27 -
 .../dataimporthandler/src/test-files/log4j2.xml    |    42 -
 .../src/test-files/solr/collection1/README         |     1 -
 .../solr/configsets/dihconfigset/conf/README       |     2 -
 .../solr/configsets/dihconfigset/conf/schema.xml   |    70 -
 .../configsets/dihconfigset/conf/solrconfig.xml    |   287 -
 .../dataimporthandler/src/test-files/solr/solr.xml |    27 -
 .../dataimport/AbstractDIHCacheTestCase.java       |   235 -
 .../dataimport/AbstractDIHJdbcTestCase.java        |   198 -
 .../AbstractDataImportHandlerTestCase.java         |   379 -
 .../AbstractSqlEntityProcessorTestCase.java        |   848 --
 .../handler/dataimport/AddAColumnTransformer.java  |    31 -
 .../solr/handler/dataimport/DestroyCountCache.java |    37 -
 .../dataimport/MockInitialContextFactory.java      |    52 -
 .../dataimport/MockSolrEntityProcessor.java        |    76 -
 .../handler/dataimport/MockStringDataSource.java   |    54 -
 .../handler/dataimport/TestBuiltInEvaluators.java  |   188 -
 .../handler/dataimport/TestClobTransformer.java    |    64 -
 .../dataimport/TestContentStreamDataSource.java    |   196 -
 .../solr/handler/dataimport/TestContextImpl.java   |    69 -
 .../solr/handler/dataimport/TestDataConfig.java    |    77 -
 .../dataimport/TestDateFormatTransformer.java      |    89 -
 .../solr/handler/dataimport/TestDocBuilder.java    |   341 -
 .../solr/handler/dataimport/TestDocBuilder2.java   |   445 -
 .../dataimport/TestEntityProcessorBase.java        |    84 -
 .../handler/dataimport/TestEphemeralCache.java     |   143 -
 .../solr/handler/dataimport/TestErrorHandling.java |   210 -
 .../solr/handler/dataimport/TestFieldReader.java   |    66 -
 .../dataimport/TestFileListEntityProcessor.java    |   194 -
 .../TestFileListWithLineEntityProcessor.java       |    64 -
 .../dataimport/TestHierarchicalDocBuilder.java     |   483 -
 .../handler/dataimport/TestJdbcDataSource.java     |   663 -
 .../dataimport/TestJdbcDataSourceConvertType.java  |    76 -
 .../dataimport/TestLineEntityProcessor.java        |   259 -
 .../handler/dataimport/TestNestedChildren.java     |    65 -
 .../dataimport/TestNonWritablePersistFile.java     |   102 -
 .../dataimport/TestNumberFormatTransformer.java    |   160 -
 .../dataimport/TestPlainTextEntityProcessor.java   |   182 -
 .../handler/dataimport/TestRegexTransformer.java   |   213 -
 .../handler/dataimport/TestScriptTransformer.java  |   173 -
 .../dataimport/TestSimplePropertiesWriter.java     |   135 -
 .../TestSolrEntityProcessorEndToEnd.java           |   374 -
 .../dataimport/TestSolrEntityProcessorUnit.java    |   188 -
 .../dataimport/TestSortedMapBackedCache.java       |   192 -
 .../handler/dataimport/TestSqlEntityProcessor.java |   115 -
 .../dataimport/TestSqlEntityProcessorDelta.java    |   209 -
 .../dataimport/TestTemplateTransformer.java        |   115 -
 .../solr/handler/dataimport/TestURLDataSource.java |    45 -
 .../handler/dataimport/TestVariableResolver.java   |   173 -
 .../dataimport/TestVariableResolverEndToEnd.java   |   141 -
 .../solr/handler/dataimport/TestWriterImpl.java    |    83 -
 .../dataimport/TestXPathEntityProcessor.java       |   506 -
 .../handler/dataimport/TestXPathRecordReader.java  |   591 -
 .../handler/dataimport/TestZKPropertiesWriter.java |   279 -
 .../dataimport/TripleThreatTransformer.java        |    75 -
 solr/contrib/extraction/build.xml                  |    28 -
 solr/contrib/extraction/ivy.xml                    |    80 -
 solr/contrib/jaegertracer-configurator/build.xml   |    34 -
 solr/contrib/jaegertracer-configurator/ivy.xml     |    32 -
 solr/contrib/langid/build.xml                      |   102 -
 solr/contrib/langid/ivy.xml                        |    32 -
 .../LanguageIdentifierUpdateProcessor.java         |     4 +-
 solr/contrib/ltr/build.xml                         |    35 -
 solr/contrib/ltr/ivy.xml                           |    33 -
 solr/contrib/prometheus-exporter/build.xml         |    64 -
 .../conf/solr-exporter-config.xml                  |     8 +-
 solr/contrib/prometheus-exporter/ivy.xml           |    41 -
 .../collector/MetricsCollectorFactory.java         |     6 +-
 .../collector/SchedulerMetricsCollector.java       |    52 +-
 .../org/apache/solr/prometheus/scraper/Async.java  |    61 -
 .../solr/prometheus/scraper/SolrCloudScraper.java  |     4 +-
 .../solr/prometheus/scraper/SolrScraper.java       |    43 +-
 .../prometheus/scraper/SolrStandaloneScraper.java  |     4 +-
 ...theus-solr-exporter-integration-test-config.xml |     8 +-
 .../apache/solr/prometheus/scraper/AsyncTest.java  |    78 -
 solr/contrib/velocity/build.xml                    |    28 -
 solr/contrib/velocity/ivy.xml                      |    36 -
 solr/core/build.gradle                             |     1 +
 solr/core/build.xml                                |   131 -
 solr/core/ivy.xml                                  |   147 -
 .../src/java/org/apache/solr/cloud/CloudUtil.java  |     1 -
 .../src/java/org/apache/solr/cloud/Overseer.java   |    13 +-
 .../apache/solr/cloud/OverseerTaskProcessor.java   |     3 +-
 .../org/apache/solr/cloud/RecoveryStrategy.java    |    11 +-
 .../org/apache/solr/cloud/ReplicateFromLeader.java |    10 +-
 .../solr/cloud/ShardLeaderElectionContextBase.java |    13 +-
 .../java/org/apache/solr/cloud/ZkController.java   |    55 +-
 .../apache/solr/cloud/ZkSolrResourceLoader.java    |     6 +
 .../solr/cloud/api/collections/AddReplicaCmd.java  |    17 +-
 .../apache/solr/cloud/api/collections/Assign.java  |   139 +-
 .../cloud/api/collections/CreateCollectionCmd.java |    20 +-
 .../cloud/api/collections/DeleteCollectionCmd.java |    28 +
 .../cloud/api/collections/DeleteReplicaCmd.java    |     1 -
 .../OverseerCollectionMessageHandler.java          |     8 +-
 .../api/collections/ReindexCollectionCmd.java      |     5 +-
 .../solr/cloud/api/collections/ReplaceNodeCmd.java |     7 -
 .../solr/cloud/api/collections/RestoreCmd.java     |   364 +-
 .../solr/cloud/api/collections/SplitShardCmd.java  |    52 +-
 .../solr/cloud/api/collections/UtilizeNodeCmd.java |   139 -
 .../solr/cloud/autoscaling/ActionContext.java      |    68 -
 .../autoscaling/AutoAddReplicasPlanAction.java     |    40 -
 .../apache/solr/cloud/autoscaling/AutoScaling.java |   246 -
 .../solr/cloud/autoscaling/AutoScalingHandler.java |   742 --
 .../solr/cloud/autoscaling/ComputePlanAction.java  |   355 -
 .../solr/cloud/autoscaling/ExecutePlanAction.java  |   250 -
 .../cloud/autoscaling/HttpTriggerListener.java     |   164 -
 .../autoscaling/InactiveMarkersPlanAction.java     |   141 -
 .../cloud/autoscaling/InactiveShardPlanAction.java |   163 -
 .../solr/cloud/autoscaling/IndexSizeTrigger.java   |   562 -
 .../solr/cloud/autoscaling/LoggingListener.java    |    38 -
 .../solr/cloud/autoscaling/MetricTrigger.java      |   220 -
 .../solr/cloud/autoscaling/NodeAddedTrigger.java   |   250 -
 .../solr/cloud/autoscaling/NodeLostTrigger.java    |   240 -
 .../cloud/autoscaling/OverseerTriggerThread.java   |   407 -
 .../solr/cloud/autoscaling/ScheduledTrigger.java   |   227 -
 .../solr/cloud/autoscaling/ScheduledTriggers.java  |   913 --
 .../solr/cloud/autoscaling/SearchRateTrigger.java  |   805 --
 .../solr/cloud/autoscaling/SystemLogListener.java  |   221 -
 .../solr/cloud/autoscaling/TriggerAction.java      |    51 -
 .../solr/cloud/autoscaling/TriggerActionBase.java  |    87 -
 .../cloud/autoscaling/TriggerActionException.java  |    33 -
 .../apache/solr/cloud/autoscaling/TriggerBase.java |   300 -
 .../solr/cloud/autoscaling/TriggerEvent.java       |   315 -
 .../solr/cloud/autoscaling/TriggerEventQueue.java  |   121 -
 .../solr/cloud/autoscaling/TriggerListener.java    |    65 -
 .../cloud/autoscaling/TriggerListenerBase.java     |    97 -
 .../solr/cloud/autoscaling/TriggerUtils.java       |    88 -
 .../autoscaling/TriggerValidationException.java    |    74 -
 .../solr/cloud/autoscaling/package-info.java       |    21 -
 .../solr/cloud/autoscaling/sim/ActionError.java    |    24 -
 .../cloud/autoscaling/sim/FakeDocIterator.java     |    56 -
 .../autoscaling/sim/GenericDistributedQueue.java   |   601 -
 .../sim/GenericDistributedQueueFactory.java        |    45 -
 .../solr/cloud/autoscaling/sim/LiveNodesSet.java   |   113 -
 .../sim/NoopDistributedQueueFactory.java           |    94 -
 .../cloud/autoscaling/sim/SimCloudManager.java     |  1060 --
 .../autoscaling/sim/SimClusterStateProvider.java   |  2574 ----
 .../autoscaling/sim/SimDistribStateManager.java    |   649 -
 .../sim/SimDistributedQueueFactory.java            |   287 -
 .../autoscaling/sim/SimNodeStateProvider.java      |   359 -
 .../solr/cloud/autoscaling/sim/SimScenario.java    |  1129 --
 .../solr/cloud/autoscaling/sim/SimUtils.java       |   434 -
 .../autoscaling/sim/SnapshotCloudManager.java      |   260 -
 .../sim/SnapshotClusterStateProvider.java          |   152 -
 .../sim/SnapshotDistribStateManager.java           |   228 -
 .../autoscaling/sim/SnapshotNodeStateProvider.java |   203 -
 .../solr/cloud/autoscaling/sim/package-info.java   |    94 -
 .../apache/solr/cloud/overseer/ReplicaMutator.java |     2 +-
 .../org/apache/solr/core/ConfigSetService.java     |     4 +-
 .../java/org/apache/solr/core/CoreContainer.java   |    67 +-
 .../java/org/apache/solr/core/MemClassLoader.java  |   203 -
 .../src/java/org/apache/solr/core/PluginBag.java   |   208 +-
 .../org/apache/solr/core/SchemaCodecFactory.java   |     6 +-
 .../java/org/apache/solr/core/SolrClassLoader.java |    29 -
 .../src/java/org/apache/solr/core/SolrConfig.java  |    33 +-
 .../src/java/org/apache/solr/core/SolrCore.java    |    84 +-
 .../src/java/org/apache/solr/core/SolrCores.java   |     9 +-
 .../backup/repository/HdfsBackupRepository.java    |     2 +-
 .../apache/solr/filestore/DistribPackageStore.java |    68 +-
 .../org/apache/solr/filestore/PackageStore.java    |     7 +
 .../org/apache/solr/filestore/PackageStoreAPI.java |    47 +
 .../org/apache/solr/handler/CdcrBufferManager.java |    71 -
 .../solr/handler/CdcrBufferStateManager.java       |   178 -
 .../solr/handler/CdcrLeaderStateManager.java       |   162 -
 .../java/org/apache/solr/handler/CdcrParams.java   |   256 -
 .../solr/handler/CdcrProcessStateManager.java      |   178 -
 .../org/apache/solr/handler/CdcrReplicator.java    |   258 -
 .../apache/solr/handler/CdcrReplicatorManager.java |   441 -
 .../solr/handler/CdcrReplicatorScheduler.java      |   116 -
 .../apache/solr/handler/CdcrReplicatorState.java   |   299 -
 .../apache/solr/handler/CdcrRequestHandler.java    |   880 --
 .../org/apache/solr/handler/CdcrStateManager.java  |    47 -
 .../solr/handler/CdcrUpdateLogSynchronizer.java    |   192 -
 .../java/org/apache/solr/handler/IndexFetcher.java |   234 +-
 .../apache/solr/handler/MoreLikeThisHandler.java   |     5 +-
 .../apache/solr/handler/ReplicationHandler.java    |   293 +-
 .../org/apache/solr/handler/SchemaHandler.java     |     6 +-
 .../org/apache/solr/handler/SolrConfigHandler.java |    23 +-
 .../org/apache/solr/handler/StreamHandler.java     |     2 +-
 .../handler/admin/AutoscalingHistoryHandler.java   |   166 -
 .../solr/handler/admin/CollectionsHandler.java     |    17 +-
 .../solr/handler/admin/ConfigSetsHandler.java      |     3 +-
 .../solr/handler/admin/ConfigSetsHandlerApi.java   |     4 +
 .../solr/handler/admin/ContainerPluginsApi.java    |     4 +-
 .../solr/handler/admin/HealthCheckHandler.java     |     3 -
 .../org/apache/solr/handler/admin/InfoHandler.java |     5 +-
 .../solr/handler/admin/MetricsHistoryHandler.java  |    27 +-
 .../solr/handler/admin/ZookeeperStatusHandler.java |    15 +-
 .../solr/handler/component/FacetComponent.java     |     6 +-
 .../solr/handler/component/HttpShardHandler.java   |     4 +-
 .../handler/component/RealTimeGetComponent.java    |    25 +-
 .../solr/handler/component/SearchHandler.java      |     7 +-
 .../solr/handler/component/StatsValuesFactory.java |     2 +-
 .../apache/solr/metrics/SolrCoreMetricManager.java |     4 +-
 .../solr/metrics/rrd/SolrRrdBackendFactory.java    |     5 +-
 .../apache/solr/packagemanager/PackageManager.java |   118 +-
 .../solr/packagemanager/SolrPackageInstance.java   |     4 +-
 .../apache/solr/parser/SolrQueryParserBase.java    |    27 +-
 .../src/java/org/apache/solr/pkg/PackageAPI.java   |    33 +-
 .../solr/pkg/PackageListeningClassLoader.java      |     2 +-
 .../java/org/apache/solr/query/package-info.java   |    21 +
 .../src/java/org/apache/solr/query/package.html    |    27 -
 .../org/apache/solr/request/json/package-info.java |    21 +
 .../java/org/apache/solr/request/json/package.html |    27 -
 .../apache/solr/request/macro/package-info.java    |    21 +
 .../org/apache/solr/request/macro/package.html     |    27 -
 .../src/java/org/apache/solr/schema/BoolField.java |     2 +-
 .../src/java/org/apache/solr/schema/FieldType.java |     3 +
 .../apache/solr/schema/FieldTypePluginLoader.java  |     2 +-
 .../java/org/apache/solr/schema/IndexSchema.java   |     4 +-
 .../org/apache/solr/schema/ManagedIndexSchema.java |     5 +
 .../org/apache/solr/schema/PreAnalyzedField.java   |     2 +-
 .../java/org/apache/solr/schema/SchemaManager.java |     4 +-
 .../src/java/org/apache/solr/schema/StrField.java  |     2 +-
 .../src/java/org/apache/solr/schema/TextField.java |     2 +-
 .../src/java/org/apache/solr/schema/UUIDField.java |     4 +-
 .../apache/solr/search/ExtendedDismaxQParser.java  |     6 +
 .../src/java/org/apache/solr/search/Grouping.java  |     5 +-
 .../org/apache/solr/search/JoinQParserPlugin.java  |    50 +-
 .../apache/solr/search/SolrDocumentFetcher.java    |     2 +-
 .../org/apache/solr/search/SolrIndexSearcher.java  |    29 +-
 .../apache/solr/search/SolrQueryTimeoutImpl.java   |    36 +-
 .../org/apache/solr/search/TermsQParserPlugin.java |     4 +-
 .../org/apache/solr/search/facet/FacetRequest.java |    35 +-
 .../org/apache/solr/search/facet/package-info.java |    22 +
 .../java/org/apache/solr/search/facet/package.html |    28 -
 .../GroupedEndResultTransformer.java               |     5 +-
 .../solr/search/join/ScoreJoinQParserPlugin.java   |    14 +
 .../similarities/BooleanSimilarityFactory.java     |    36 +
 .../solr/search/stats/ExactSharedStatsCache.java   |     2 +-
 .../apache/solr/search/stats/ExactStatsCache.java  |     9 +-
 .../apache/solr/search/stats/LRUStatsCache.java    |     2 +-
 .../org/apache/solr/search/stats/StatsCache.java   |     2 +-
 .../solr/security/JWTVerificationkeyResolver.java  |     2 +-
 .../solr/security/PermissionNameProvider.java      |     3 -
 .../org/apache/solr/servlet/QueryRateLimiter.java  |    55 +
 .../org/apache/solr/servlet/RateLimitManager.java  |   181 +
 .../apache/solr/servlet/RequestRateLimiter.java    |   168 +
 .../apache/solr/servlet/SolrDispatchFilter.java    |    37 +-
 .../org/apache/solr/update/CdcrTransactionLog.java |   401 -
 .../java/org/apache/solr/update/CdcrUpdateLog.java |   796 --
 .../apache/solr/update/DefaultSolrCoreState.java   |    41 -
 .../src/java/org/apache/solr/update/PeerSync.java  |    68 +-
 .../org/apache/solr/update/PeerSyncWithLeader.java |    25 +-
 .../java/org/apache/solr/update/SolrCoreState.java |    17 -
 .../org/apache/solr/update/SolrIndexConfig.java    |    22 +-
 .../src/java/org/apache/solr/update/UpdateLog.java |     3 +-
 .../solr/update/processor/CdcrUpdateProcessor.java |   132 -
 .../processor/CdcrUpdateProcessorFactory.java      |    46 -
 .../src/java/org/apache/solr/util/PackageTool.java |    10 +
 .../src/java/org/apache/solr/util/SolrCLI.java     |   414 +-
 .../java/org/apache/solr/util/TestInjection.java   |    12 +-
 .../util/circuitbreaker/CPUCircuitBreaker.java     |   115 +
 .../solr/util/circuitbreaker/CircuitBreaker.java   |    55 +-
 .../util/circuitbreaker/CircuitBreakerManager.java |    68 +-
 .../util/circuitbreaker/MemoryCircuitBreaker.java  |    25 +-
 .../solr/util/circuitbreaker/package-info.java     |    21 +
 .../solr/util/plugin/AbstractPluginLoader.java     |     2 +-
 .../resources/EditableSolrConfigAttributes.json    |     5 -
 solr/core/src/resources/ImplicitPlugins.json       |     4 -
 .../collection1/conf/schema-booleansimilarity.xml  |    35 +
 .../test-files/solr/collection1/conf/schema15.xml  |     2 +
 .../solr/collection1/conf/schema_latest.xml        |     4 +
 .../solr/collection1/conf/solrconfig-cdcr.xml      |    77 -
 .../collection1/conf/solrconfig-cdcrupdatelog.xml  |    49 -
 .../solr/collection1/conf/solrconfig-follower.xml  |    59 +
 ...rconfig-slave1.xml => solrconfig-follower1.xml} |     0
 ...rottled.xml => solrconfig-leader-throttled.xml} |     0
 .../solr/collection1/conf/solrconfig-leader.xml    |    70 +
 .../conf/solrconfig-leader1-keepOneBackup.xml      |    49 +
 .../solr/collection1/conf/solrconfig-leader1.xml   |    68 +
 .../solr/collection1/conf/solrconfig-leader2.xml   |    66 +
 .../solr/collection1/conf/solrconfig-leader3.xml   |    67 +
 .../solr/collection1/conf/solrconfig-master.xml    |    70 -
 .../conf/solrconfig-master1-keepOneBackup.xml      |    49 -
 .../solr/collection1/conf/solrconfig-master1.xml   |    68 -
 .../solr/collection1/conf/solrconfig-master2.xml   |    66 -
 .../solr/collection1/conf/solrconfig-master3.xml   |    67 -
 .../conf/solrconfig-memory-circuitbreaker.xml      |    11 +-
 .../solr/collection1/conf/solrconfig-repeater.xml  |     6 +-
 .../conf/solrconfig-replication-legacy.xml         |    62 +
 .../solr/collection1/conf/solrconfig-slave.xml     |    59 -
 .../solr/collection1/conf/solrconfig-tlog.xml      |     4 -
 .../conf/solrconfig.snippet.randomindexconfig.xml  |     1 +
 .../configsets/cdcr-cluster1/conf/managed-schema   |    29 -
 .../configsets/cdcr-cluster1/conf/solrconfig.xml   |    80 -
 .../configsets/cdcr-cluster2/conf/managed-schema   |    29 -
 .../configsets/cdcr-cluster2/conf/solrconfig.xml   |    80 -
 .../cdcr-source-disabled/conf/schema.xml           |    29 -
 .../cdcr-source-disabled/conf/solrconfig.xml       |    60 -
 .../solr/configsets/cdcr-source/conf/schema.xml    |    29 -
 .../configsets/cdcr-source/conf/solrconfig.xml     |    75 -
 .../solr/configsets/cdcr-target/conf/schema.xml    |    29 -
 .../configsets/cdcr-target/conf/solrconfig.xml     |    62 -
 .../upload/dih-script-transformer/managed-schema   |    25 -
 .../upload/dih-script-transformer/solrconfig.xml   |    61 -
 .../solr/simSnapshot/autoscalingState.json         |  3923 ------
 .../test-files/solr/simSnapshot/clusterState.json  |  2838 ----
 .../test-files/solr/simSnapshot/distribState.json  |   206 -
 .../test-files/solr/simSnapshot/managerState.json  |     1 -
 .../src/test-files/solr/simSnapshot/nodeState.json |  3823 ------
 .../test-files/solr/simSnapshot/statistics.json    |  2029 ---
 .../src/test/org/apache/hadoop/fs/FileUtil.java    |     5 +-
 .../solr/analysis/TestDeprecatedFilters.java       |     2 +-
 .../TestEmbeddedSolrServerAdminHandler.java        |     5 +
 .../test/org/apache/solr/cloud/CloudTestUtils.java |   195 -
 .../apache/solr/cloud/CollectionsAPISolrJTest.java |    55 +-
 .../solr/cloud/MetricsHistoryIntegrationTest.java  |    24 +-
 .../org/apache/solr/cloud/MoveReplicaTest.java     |     2 -
 .../OverseerCollectionConfigSetProcessorTest.java  |    11 +-
 .../apache/solr/cloud/ReplaceNodeNoTargetTest.java |   127 -
 .../org/apache/solr/cloud/RollingRestartTest.java  |     2 +-
 .../test/org/apache/solr/cloud/RouteFieldTest.java |   163 +
 .../cloud/RoutingToNodesWithPropertiesTest.java    |   242 -
 .../cloud/SharedFSAutoReplicaFailoverTest.java     |    14 +-
 .../apache/solr/cloud/TestClusterProperties.java   |    12 -
 .../org/apache/solr/cloud/TestConfigSetsAPI.java   |     6 +-
 .../test/org/apache/solr/cloud/TestCryptoKeys.java |   209 -
 .../org/apache/solr/cloud/TestLazySolrCluster.java |    97 +
 .../org/apache/solr/cloud/TestTlogReplica.java     |    77 +
 .../org/apache/solr/cloud/TestUtilizeNode.java     |   184 -
 .../org/apache/solr/cloud/TestWithCollection.java  |   611 -
 .../AbstractCloudBackupRestoreTestCase.java        |     4 -
 .../solr/cloud/api/collections/AssignTest.java     |   204 -
 .../collections/CollectionTooManyReplicasTest.java |    13 +-
 .../ConcurrentCreateCollectionTest.java            |   292 -
 .../SimpleCollectionCreateDeleteTest.java          |   198 +-
 .../collections/TestLocalFSCloudBackupRestore.java |     3 +-
 .../AutoAddReplicasIntegrationTest.java            |   472 -
 .../autoscaling/AutoAddReplicasPlanActionTest.java |   263 -
 .../cloud/autoscaling/AutoScalingHandlerTest.java  |  1114 --
 .../solr/cloud/autoscaling/CapturedEvent.java      |    65 -
 .../cloud/autoscaling/ComputePlanActionTest.java   |   794 --
 .../cloud/autoscaling/ExecutePlanActionTest.java   |   381 -
 .../HdfsAutoAddReplicasIntegrationTest.java        |    61 -
 .../cloud/autoscaling/HttpTriggerListenerTest.java |   208 -
 .../IndexSizeTriggerMixedBoundsTest.java           |   374 -
 .../IndexSizeTriggerSizeEstimationTest.java        |   323 -
 .../cloud/autoscaling/IndexSizeTriggerTest.java    |   795 --
 .../autoscaling/MetricTriggerIntegrationTest.java  |   242 -
 .../solr/cloud/autoscaling/MetricTriggerTest.java  |   135 -
 .../NodeAddedTriggerIntegrationTest.java           |   320 -
 .../cloud/autoscaling/NodeAddedTriggerTest.java    |   345 -
 .../NodeLostTriggerIntegrationTest.java            |   356 -
 .../cloud/autoscaling/NodeLostTriggerTest.java     |   394 -
 .../autoscaling/NodeMarkersRegistrationTest.java   |   356 -
 .../cloud/autoscaling/RestoreTriggerStateTest.java |   168 -
 .../ScheduledMaintenanceTriggerTest.java           |   384 -
 .../ScheduledTriggerIntegrationTest.java           |   150 -
 .../cloud/autoscaling/ScheduledTriggerTest.java    |   141 -
 .../SearchRateTriggerIntegrationTest.java          |   747 --
 .../cloud/autoscaling/SearchRateTriggerTest.java   |   357 -
 .../cloud/autoscaling/SystemLogListenerTest.java   |   293 -
 .../solr/cloud/autoscaling/TestPolicyCloud.java    |   542 -
 .../TriggerCooldownIntegrationTest.java            |   228 -
 .../cloud/autoscaling/TriggerEventQueueTest.java   |    99 -
 .../cloud/autoscaling/TriggerIntegrationTest.java  |   729 -
 .../TriggerSetPropertiesIntegrationTest.java       |   275 -
 .../autoscaling/sim/SimSolrCloudTestCase.java      |   255 -
 .../sim/TestSimClusterStateProvider.java           |   227 -
 .../autoscaling/sim/TestSimComputePlanAction.java  |   401 -
 .../sim/TestSimDistribStateManager.java            |   380 -
 .../autoscaling/sim/TestSimDistributedQueue.java   |   221 -
 .../autoscaling/sim/TestSimExecutePlanAction.java  |   224 -
 .../autoscaling/sim/TestSimExtremeIndexing.java    |   147 -
 .../sim/TestSimGenericDistributedQueue.java        |    38 -
 .../cloud/autoscaling/sim/TestSimLargeCluster.java |   870 --
 .../autoscaling/sim/TestSimNodeAddedTrigger.java   |   331 -
 .../autoscaling/sim/TestSimNodeLostTrigger.java    |   350 -
 .../cloud/autoscaling/sim/TestSimPolicyCloud.java  |   379 -
 .../cloud/autoscaling/sim/TestSimScenario.java     |   173 -
 .../autoscaling/sim/TestSimTriggerIntegration.java |  1551 ---
 .../solr/cloud/autoscaling/sim/TestSimUtils.java   |    95 -
 .../autoscaling/sim/TestSnapshotCloudManager.java  |   275 -
 .../solr/cloud/cdcr/BaseCdcrDistributedZkTest.java |   906 --
 .../solr/cloud/cdcr/CdcrBidirectionalTest.java     |   244 -
 .../apache/solr/cloud/cdcr/CdcrBootstrapTest.java  |   373 -
 .../solr/cloud/cdcr/CdcrOpsAndBoundariesTest.java  |   332 -
 .../cloud/cdcr/CdcrReplicationHandlerTest.java     |   332 -
 .../solr/cloud/cdcr/CdcrRequestHandlerTest.java    |   183 -
 .../org/apache/solr/cloud/cdcr/CdcrTestsUtil.java  |   274 -
 .../cloud/cdcr/CdcrVersionReplicationTest.java     |   307 -
 .../solr/cloud/cdcr/CdcrWithNodesRestartsTest.java |   359 -
 .../org/apache/solr/cloud/rule/RuleEngineTest.java |     2 +-
 .../test/org/apache/solr/cloud/rule/RulesTest.java |    67 -
 .../solr/common/cloud/ZkDynamicConfigTest.java     |     9 +-
 .../solr/core/BlobRepositoryMockingTest.java       |     2 +-
 .../test/org/apache/solr/core/SolrCoreTest.java    |     3 -
 .../org/apache/solr/core/TestCodecSupport.java     |     8 +-
 .../src/test/org/apache/solr/core/TestConfig.java  |     2 +
 .../org/apache/solr/core/TestConfigOverlay.java    |     2 -
 .../org/apache/solr/core/TestDynamicLoading.java   |   290 -
 .../apache/solr/core/TestDynamicLoadingUrl.java    |   128 -
 .../test/org/apache/solr/core/TestDynamicURP.java  |   111 -
 .../apache/solr/core/TestSolrConfigHandler.java    |    57 +-
 .../solr/core/snapshots/TestSolrCoreSnapshots.java |    22 +-
 .../solr/filestore/TestDistribPackageStore.java    |    40 +-
 .../apache/solr/handler/BackupRestoreUtils.java    |    20 +-
 .../solr/handler/TestHdfsBackupRestoreCore.java    |    14 +-
 .../solr/handler/TestReplicationHandler.java       |  1238 +-
 .../solr/handler/TestReplicationHandlerBackup.java |    68 +-
 .../TestReplicationHandlerDiskOverFlow.java        |    76 +-
 .../org/apache/solr/handler/TestRestoreCore.java   |    78 +-
 .../apache/solr/handler/V2ApiIntegrationTest.java  |     4 +-
 .../admin/AutoscalingHistoryHandlerTest.java       |   463 -
 .../handler/admin/MetricsHistoryHandlerTest.java   |    43 +-
 .../solr/handler/admin/TestCollectionAPIs.java     |     4 +-
 .../handler/admin/ZookeeperStatusHandlerTest.java  |    35 +
 .../solr/handler/export/TestExportWriter.java      |    16 +-
 .../solr/parser/SolrQueryParserBaseTest.java       |   137 +
 .../src/test/org/apache/solr/pkg/TestPackages.java |    20 +-
 .../org/apache/solr/search/QueryEqualityTest.java  |    65 +-
 .../solr/search/TestExtendedDismaxParser.java      |   146 +-
 .../org/apache/solr/search/TestRealTimeGet.java    |    13 +-
 .../test/org/apache/solr/search/TestRecovery.java  |     1 -
 .../org/apache/solr/search/TestStressRecovery.java |     1 -
 .../apache/solr/search/TestTermsQParserPlugin.java |    18 +-
 .../search/facet/TestCloudJSONFacetJoinDomain.java |    38 +-
 .../similarities/TestBooleanSimilarityFactory.java |    39 +
 .../solr/security/BasicAuthStandaloneTest.java     |     2 +-
 .../security/JWTAuthPluginIntegrationTest.java     |     6 +-
 .../hadoop/TestSolrCloudWithHadoopAuthPlugin.java  |     6 +-
 .../solr/servlet/TestRequestRateLimiter.java       |   235 +
 .../org/apache/solr/update/CdcrUpdateLogTest.java  |   783 --
 .../solr/update/DirectUpdateHandlerTest.java       |    18 +-
 .../apache/solr/update/SolrIndexConfigTest.java    |    19 +
 .../solr/update/TestInPlaceUpdatesDistrib.java     |     2 -
 .../solr/update/TestNestedUpdateProcessor.java     |   344 +
 .../apache/solr/update/processor/RuntimeUrp.java   |    40 -
 .../processor/TestNamedUpdateProcessors.java       |   163 -
 .../org/apache/solr/util/TestCircuitBreaker.java   |   146 +-
 .../apache/solr/util/TestSolrCLIRunExample.java    |   117 -
 .../src/test/org/apache/solr/util/TestUtils.java   |     1 -
 .../solr/util/tracing/TestHttpServletCarrier.java  |     3 +-
 solr/example/README.md                             |     9 +-
 solr/example/build.gradle                          |     8 -
 solr/example/example-DIH/.gitignore                |     1 -
 solr/example/example-DIH/README.md                 |    55 -
 solr/example/example-DIH/build.xml                 |    42 -
 solr/example/example-DIH/hsqldb/.gitignore         |     5 -
 solr/example/example-DIH/hsqldb/ex.script          |   165 -
 solr/example/example-DIH/ivy.xml                   |    29 -
 .../solr/atom/conf/atom-data-config.xml            |    35 -
 .../solr/atom/conf/lang/stopwords_en.txt           |    54 -
 .../example-DIH/solr/atom/conf/managed-schema      |   106 -
 .../example-DIH/solr/atom/conf/protwords.txt       |    17 -
 .../example-DIH/solr/atom/conf/solrconfig.xml      |    64 -
 .../example-DIH/solr/atom/conf/synonyms.txt        |    29 -
 .../example-DIH/solr/atom/conf/url_types.txt       |     1 -
 solr/example/example-DIH/solr/atom/core.properties |     0
 .../conf/clustering/carrot2/kmeans-attributes.xml  |    19 -
 .../conf/clustering/carrot2/lingo-attributes.xml   |    24 -
 .../db/conf/clustering/carrot2/stc-attributes.xml  |    19 -
 solr/example/example-DIH/solr/db/conf/currency.xml |    67 -
 .../example-DIH/solr/db/conf/db-data-config.xml    |    29 -
 solr/example/example-DIH/solr/db/conf/elevate.xml  |    42 -
 .../solr/db/conf/lang/contractions_ca.txt          |     8 -
 .../solr/db/conf/lang/contractions_fr.txt          |    15 -
 .../solr/db/conf/lang/contractions_ga.txt          |     5 -
 .../solr/db/conf/lang/contractions_it.txt          |    23 -
 .../solr/db/conf/lang/hyphenations_ga.txt          |     5 -
 .../example-DIH/solr/db/conf/lang/stemdict_nl.txt  |     6 -
 .../example-DIH/solr/db/conf/lang/stoptags_ja.txt  |   420 -
 .../example-DIH/solr/db/conf/lang/stopwords_ar.txt |   125 -
 .../example-DIH/solr/db/conf/lang/stopwords_bg.txt |   193 -
 .../example-DIH/solr/db/conf/lang/stopwords_ca.txt |   220 -
 .../solr/db/conf/lang/stopwords_ckb.txt            |   136 -
 .../example-DIH/solr/db/conf/lang/stopwords_cz.txt |   172 -
 .../example-DIH/solr/db/conf/lang/stopwords_da.txt |   110 -
 .../example-DIH/solr/db/conf/lang/stopwords_de.txt |   294 -
 .../example-DIH/solr/db/conf/lang/stopwords_el.txt |    78 -
 .../example-DIH/solr/db/conf/lang/stopwords_en.txt |    54 -
 .../example-DIH/solr/db/conf/lang/stopwords_es.txt |   356 -
 .../example-DIH/solr/db/conf/lang/stopwords_eu.txt |    99 -
 .../example-DIH/solr/db/conf/lang/stopwords_fa.txt |   313 -
 .../example-DIH/solr/db/conf/lang/stopwords_fi.txt |    97 -
 .../example-DIH/solr/db/conf/lang/stopwords_fr.txt |   186 -
 .../example-DIH/solr/db/conf/lang/stopwords_ga.txt |   110 -
 .../example-DIH/solr/db/conf/lang/stopwords_gl.txt |   161 -
 .../example-DIH/solr/db/conf/lang/stopwords_hi.txt |   235 -
 .../example-DIH/solr/db/conf/lang/stopwords_hu.txt |   211 -
 .../example-DIH/solr/db/conf/lang/stopwords_hy.txt |    46 -
 .../example-DIH/solr/db/conf/lang/stopwords_id.txt |   359 -
 .../example-DIH/solr/db/conf/lang/stopwords_it.txt |   303 -
 .../example-DIH/solr/db/conf/lang/stopwords_ja.txt |   127 -
 .../example-DIH/solr/db/conf/lang/stopwords_lv.txt |   172 -
 .../example-DIH/solr/db/conf/lang/stopwords_nl.txt |   119 -
 .../example-DIH/solr/db/conf/lang/stopwords_no.txt |   194 -
 .../example-DIH/solr/db/conf/lang/stopwords_pt.txt |   253 -
 .../example-DIH/solr/db/conf/lang/stopwords_ro.txt |   233 -
 .../example-DIH/solr/db/conf/lang/stopwords_ru.txt |   243 -
 .../example-DIH/solr/db/conf/lang/stopwords_sv.txt |   133 -
 .../example-DIH/solr/db/conf/lang/stopwords_th.txt |   119 -
 .../example-DIH/solr/db/conf/lang/stopwords_tr.txt |   212 -
 .../example-DIH/solr/db/conf/lang/userdict_ja.txt  |    29 -
 .../example-DIH/solr/db/conf/managed-schema        |  1143 --
 .../solr/db/conf/mapping-FoldToASCII.txt           |  3813 ------
 .../solr/db/conf/mapping-ISOLatin1Accent.txt       |   246 -
 .../example/example-DIH/solr/db/conf/protwords.txt |    21 -
 .../example-DIH/solr/db/conf/solrconfig.xml        |  1342 --
 .../example/example-DIH/solr/db/conf/spellings.txt |     2 -
 .../example/example-DIH/solr/db/conf/stopwords.txt |    14 -
 solr/example/example-DIH/solr/db/conf/synonyms.txt |    29 -
 .../example-DIH/solr/db/conf/update-script.js      |    53 -
 .../example-DIH/solr/db/conf/xslt/example.xsl      |   132 -
 .../example-DIH/solr/db/conf/xslt/example_atom.xsl |    67 -
 .../example-DIH/solr/db/conf/xslt/example_rss.xsl  |    66 -
 .../example/example-DIH/solr/db/conf/xslt/luke.xsl |   337 -
 .../example-DIH/solr/db/conf/xslt/updateXml.xsl    |    70 -
 solr/example/example-DIH/solr/db/core.properties   |     0
 .../conf/clustering/carrot2/kmeans-attributes.xml  |    19 -
 .../conf/clustering/carrot2/lingo-attributes.xml   |    24 -
 .../conf/clustering/carrot2/stc-attributes.xml     |    19 -
 .../example-DIH/solr/mail/conf/currency.xml        |    67 -
 .../example/example-DIH/solr/mail/conf/elevate.xml |    42 -
 .../solr/mail/conf/lang/contractions_ca.txt        |     8 -
 .../solr/mail/conf/lang/contractions_fr.txt        |    15 -
 .../solr/mail/conf/lang/contractions_ga.txt        |     5 -
 .../solr/mail/conf/lang/contractions_it.txt        |    23 -
 .../solr/mail/conf/lang/hyphenations_ga.txt        |     5 -
 .../solr/mail/conf/lang/stemdict_nl.txt            |     6 -
 .../solr/mail/conf/lang/stoptags_ja.txt            |   420 -
 .../solr/mail/conf/lang/stopwords_ar.txt           |   125 -
 .../solr/mail/conf/lang/stopwords_bg.txt           |   193 -
 .../solr/mail/conf/lang/stopwords_ca.txt           |   220 -
 .../solr/mail/conf/lang/stopwords_ckb.txt          |   136 -
 .../solr/mail/conf/lang/stopwords_cz.txt           |   172 -
 .../solr/mail/conf/lang/stopwords_da.txt           |   110 -
 .../solr/mail/conf/lang/stopwords_de.txt           |   294 -
 .../solr/mail/conf/lang/stopwords_el.txt           |    78 -
 .../solr/mail/conf/lang/stopwords_en.txt           |    54 -
 .../solr/mail/conf/lang/stopwords_es.txt           |   356 -
 .../solr/mail/conf/lang/stopwords_eu.txt           |    99 -
 .../solr/mail/conf/lang/stopwords_fa.txt           |   313 -
 .../solr/mail/conf/lang/stopwords_fi.txt           |    97 -
 .../solr/mail/conf/lang/stopwords_fr.txt           |   186 -
 .../solr/mail/conf/lang/stopwords_ga.txt           |   110 -
 .../solr/mail/conf/lang/stopwords_gl.txt           |   161 -
 .../solr/mail/conf/lang/stopwords_hi.txt           |   235 -
 .../solr/mail/conf/lang/stopwords_hu.txt           |   211 -
 .../solr/mail/conf/lang/stopwords_hy.txt           |    46 -
 .../solr/mail/conf/lang/stopwords_id.txt           |   359 -
 .../solr/mail/conf/lang/stopwords_it.txt           |   303 -
 .../solr/mail/conf/lang/stopwords_ja.txt           |   127 -
 .../solr/mail/conf/lang/stopwords_lv.txt           |   172 -
 .../solr/mail/conf/lang/stopwords_nl.txt           |   119 -
 .../solr/mail/conf/lang/stopwords_no.txt           |   194 -
 .../solr/mail/conf/lang/stopwords_pt.txt           |   253 -
 .../solr/mail/conf/lang/stopwords_ro.txt           |   233 -
 .../solr/mail/conf/lang/stopwords_ru.txt           |   243 -
 .../solr/mail/conf/lang/stopwords_sv.txt           |   133 -
 .../solr/mail/conf/lang/stopwords_th.txt           |   119 -
 .../solr/mail/conf/lang/stopwords_tr.txt           |   212 -
 .../solr/mail/conf/lang/userdict_ja.txt            |    29 -
 .../solr/mail/conf/mail-data-config.xml            |    12 -
 .../example-DIH/solr/mail/conf/managed-schema      |  1062 --
 .../solr/mail/conf/mapping-FoldToASCII.txt         |  3813 ------
 .../solr/mail/conf/mapping-ISOLatin1Accent.txt     |   246 -
 .../example-DIH/solr/mail/conf/protwords.txt       |    21 -
 .../example-DIH/solr/mail/conf/solrconfig.xml      |  1345 --
 .../example-DIH/solr/mail/conf/spellings.txt       |     2 -
 .../example-DIH/solr/mail/conf/stopwords.txt       |    14 -
 .../example-DIH/solr/mail/conf/synonyms.txt        |    29 -
 .../example-DIH/solr/mail/conf/update-script.js    |    53 -
 .../example-DIH/solr/mail/conf/xslt/example.xsl    |   132 -
 .../solr/mail/conf/xslt/example_atom.xsl           |    67 -
 .../solr/mail/conf/xslt/example_rss.xsl            |    66 -
 .../example-DIH/solr/mail/conf/xslt/luke.xsl       |   337 -
 .../example-DIH/solr/mail/conf/xslt/updateXml.xsl  |    70 -
 solr/example/example-DIH/solr/mail/core.properties |     0
 solr/example/example-DIH/solr/solr.xml             |     2 -
 .../conf/clustering/carrot2/kmeans-attributes.xml  |    19 -
 .../conf/clustering/carrot2/lingo-attributes.xml   |    24 -
 .../conf/clustering/carrot2/stc-attributes.xml     |    19 -
 .../example-DIH/solr/solr/conf/currency.xml        |    67 -
 .../example/example-DIH/solr/solr/conf/elevate.xml |    42 -
 .../solr/solr/conf/lang/contractions_ca.txt        |     8 -
 .../solr/solr/conf/lang/contractions_fr.txt        |    15 -
 .../solr/solr/conf/lang/contractions_ga.txt        |     5 -
 .../solr/solr/conf/lang/contractions_it.txt        |    23 -
 .../solr/solr/conf/lang/hyphenations_ga.txt        |     5 -
 .../solr/solr/conf/lang/stemdict_nl.txt            |     6 -
 .../solr/solr/conf/lang/stoptags_ja.txt            |   420 -
 .../solr/solr/conf/lang/stopwords_ar.txt           |   125 -
 .../solr/solr/conf/lang/stopwords_bg.txt           |   193 -
 .../solr/solr/conf/lang/stopwords_ca.txt           |   220 -
 .../solr/solr/conf/lang/stopwords_ckb.txt          |   136 -
 .../solr/solr/conf/lang/stopwords_cz.txt           |   172 -
 .../solr/solr/conf/lang/stopwords_da.txt           |   110 -
 .../solr/solr/conf/lang/stopwords_de.txt           |   294 -
 .../solr/solr/conf/lang/stopwords_el.txt           |    78 -
 .../solr/solr/conf/lang/stopwords_en.txt           |    54 -
 .../solr/solr/conf/lang/stopwords_es.txt           |   356 -
 .../solr/solr/conf/lang/stopwords_eu.txt           |    99 -
 .../solr/solr/conf/lang/stopwords_fa.txt           |   313 -
 .../solr/solr/conf/lang/stopwords_fi.txt           |    97 -
 .../solr/solr/conf/lang/stopwords_fr.txt           |   186 -
 .../solr/solr/conf/lang/stopwords_ga.txt           |   110 -
 .../solr/solr/conf/lang/stopwords_gl.txt           |   161 -
 .../solr/solr/conf/lang/stopwords_hi.txt           |   235 -
 .../solr/solr/conf/lang/stopwords_hu.txt           |   211 -
 .../solr/solr/conf/lang/stopwords_hy.txt           |    46 -
 .../solr/solr/conf/lang/stopwords_id.txt           |   359 -
 .../solr/solr/conf/lang/stopwords_it.txt           |   303 -
 .../solr/solr/conf/lang/stopwords_ja.txt           |   127 -
 .../solr/solr/conf/lang/stopwords_lv.txt           |   172 -
 .../solr/solr/conf/lang/stopwords_nl.txt           |   119 -
 .../solr/solr/conf/lang/stopwords_no.txt           |   194 -
 .../solr/solr/conf/lang/stopwords_pt.txt           |   253 -
 .../solr/solr/conf/lang/stopwords_ro.txt           |   233 -
 .../solr/solr/conf/lang/stopwords_ru.txt           |   243 -
 .../solr/solr/conf/lang/stopwords_sv.txt           |   133 -
 .../solr/solr/conf/lang/stopwords_th.txt           |   119 -
 .../solr/solr/conf/lang/stopwords_tr.txt           |   212 -
 .../solr/solr/conf/lang/userdict_ja.txt            |    29 -
 .../example-DIH/solr/solr/conf/managed-schema      |  1143 --
 .../solr/solr/conf/mapping-FoldToASCII.txt         |  3813 ------
 .../solr/solr/conf/mapping-ISOLatin1Accent.txt     |   246 -
 .../example-DIH/solr/solr/conf/protwords.txt       |    21 -
 .../solr/solr/conf/solr-data-config.xml            |    25 -
 .../example-DIH/solr/solr/conf/solrconfig.xml      |  1340 --
 .../example-DIH/solr/solr/conf/spellings.txt       |     2 -
 .../example-DIH/solr/solr/conf/stopwords.txt       |    14 -
 .../example-DIH/solr/solr/conf/synonyms.txt        |    29 -
 .../example-DIH/solr/solr/conf/update-script.js    |    53 -
 .../example-DIH/solr/solr/conf/xslt/example.xsl    |   132 -
 .../solr/solr/conf/xslt/example_atom.xsl           |    67 -
 .../solr/solr/conf/xslt/example_rss.xsl            |    66 -
 .../example-DIH/solr/solr/conf/xslt/luke.xsl       |   337 -
 .../example-DIH/solr/solr/conf/xslt/updateXml.xsl  |    70 -
 solr/example/example-DIH/solr/solr/core.properties |     0
 .../example-DIH/solr/tika/conf/managed-schema      |    54 -
 .../example-DIH/solr/tika/conf/solrconfig.xml      |    61 -
 .../solr/tika/conf/tika-data-config.xml            |    26 -
 solr/example/example-DIH/solr/tika/core.properties |     0
 solr/example/files/README.md                       |    72 +-
 solr/example/files/conf/solrconfig.xml             |    24 +-
 solr/licenses/activation-1.1.1.jar.sha1            |     1 -
 solr/licenses/activation-LICENSE-CDDL.txt          |   119 -
 .../android-json-0.0.20131108.vaadin1.jar.sha1     |     1 -
 solr/licenses/android-json-LICENSE-ASL.txt         |   202 -
 solr/licenses/ant-1.8.2.jar.sha1                   |     1 -
 solr/licenses/ant-LICENSE-ASL.txt                  |   272 -
 solr/licenses/ant-NOTICE.txt                       |    26 -
 solr/licenses/asciidoctor-ant-1.6.2.jar.sha1       |     1 -
 solr/licenses/asciidoctor-ant-LICENSE-ASL.txt      |   202 -
 solr/licenses/asciidoctor-ant-NOTICE.txt           |     5 -
 solr/licenses/commons-collections4-4.2.jar.sha1    |     1 -
 solr/licenses/commons-collections4-4.4.jar.sha1    |     1 +
 solr/licenses/derby-10.9.1.0.jar.sha1              |     1 -
 solr/licenses/derby-LICENSE-ASL.txt                |   202 -
 solr/licenses/derby-NOTICE.txt                     |   182 -
 solr/licenses/gimap-1.5.1.jar.sha1                 |     1 -
 solr/licenses/gimap-LICENSE-CDDL.txt               |   135 -
 solr/licenses/hamcrest-2.2.jar.sha1                |     1 +
 .../licenses/hamcrest-LICENSE-BSD.txt              |     0
 ...android-json-NOTICE.txt => hamcrest-NOTICE.txt} |     0
 solr/licenses/hamcrest-core-1.3.jar.sha1           |     1 -
 solr/licenses/javax.mail-1.5.1.jar.sha1            |     1 -
 solr/licenses/javax.mail-LICENSE-CDDL.txt          |   135 -
 solr/licenses/jsoup-1.12.1.jar.sha1                |     1 -
 solr/licenses/jsoup-LICENSE-MIT.txt                |    21 -
 solr/licenses/junit4-ant-2.7.6.jar.sha1            |     1 -
 solr/licenses/junit4-ant-LICENSE-ASL.txt           |   202 -
 solr/licenses/junit4-ant-NOTICE.txt                |    12 -
 solr/licenses/slf4j-simple-1.7.24.jar.sha1         |     1 -
 solr/licenses/start.jar.sha1                       |     1 -
 solr/packaging/build.gradle                        |     3 +-
 solr/server/README.md                              |     4 +-
 solr/server/build.xml                              |    54 -
 solr/server/etc/security.policy                    |     2 +-
 solr/server/ivy.xml                                |    74 -
 .../solr/configsets/_default/conf/solrconfig.xml   |    40 +-
 .../conf/velocity/README.md                        |     8 +-
 solr/solr-ref-guide/README.adoc                    |    20 +-
 solr/solr-ref-guide/build.gradle                   |    13 +-
 solr/solr-ref-guide/build.xml                      |   305 -
 solr/solr-ref-guide/ivy.xml                        |    35 -
 .../adding-custom-plugins-in-solrcloud-mode.adoc   |   333 -
 solr/solr-ref-guide/src/aliases.adoc               |     2 -
 solr/solr-ref-guide/src/cdcr-api.adoc              |   321 -
 solr/solr-ref-guide/src/cdcr-architecture.adoc     |   167 -
 solr/solr-ref-guide/src/cdcr-config.adoc           |   376 -
 solr/solr-ref-guide/src/cdcr-operations.adoc       |    49 -
 solr/solr-ref-guide/src/circuit-breakers.adoc      |    61 +-
 solr/solr-ref-guide/src/cloud-screens.adoc         |     2 +-
 .../src/cluster-node-management.adoc               |    19 +-
 solr/solr-ref-guide/src/collection-management.adoc |    46 +-
 .../src/collection-specific-tools.adoc             |     5 +-
 .../solr-ref-guide/src/colocating-collections.adoc |    75 -
 .../combining-distribution-and-replication.adoc    |    12 +-
 solr/solr-ref-guide/src/config-api.adoc            |     3 -
 solr/solr-ref-guide/src/config-sets.adoc           |     2 +-
 solr/solr-ref-guide/src/configsets-api.adoc        |     3 +-
 .../src/configuring-solrconfig-xml.adoc            |    13 +-
 solr/solr-ref-guide/src/core-specific-tools.adoc   |     1 -
 solr/solr-ref-guide/src/coreadmin-api.adoc         |     2 +-
 .../src/cross-data-center-replication-cdcr.adoc    |    63 -
 solr/solr-ref-guide/src/dataimport-screen.adoc     |    28 -
 .../distributed-search-with-index-sharding.adoc    |     2 +-
 .../src/documents-fields-and-schema-design.adoc    |     2 +-
 .../src/images/dataimport-screen/dataimport.png    |   Bin 126440 -> 0 bytes
 .../src/implicit-requesthandlers.adoc              |     8 +-
 solr/solr-ref-guide/src/index-replication.adoc     |   156 +-
 solr/solr-ref-guide/src/index.adoc                 |     3 +
 .../src/indexconfig-in-solrconfig.adoc             |    10 +
 .../src/indexing-and-basic-data-operations.adoc    |     3 -
 .../src/indexing-nested-documents.adoc             |   539 +-
 solr/solr-ref-guide/src/installing-solr.adoc       |     5 +-
 .../src/json-faceting-domain-changes.adoc          |     8 +-
 solr/solr-ref-guide/src/luke-request-handler.adoc  |    77 +
 .../src/major-changes-from-solr-5-to-solr-6.adoc   |     2 +-
 .../src/major-changes-in-solr-7.adoc               |     2 -
 .../src/major-changes-in-solr-8.adoc               |    10 +-
 .../src/major-changes-in-solr-9.adoc               |    17 +
 .../src/meta-docs/asciidoc-syntax.adoc             |     2 +-
 solr/solr-ref-guide/src/meta-docs/jekyll.adoc      |     6 +-
 solr/solr-ref-guide/src/meta-docs/publish.adoc     |    27 +-
 solr/solr-ref-guide/src/metrics-history.adoc       |     2 +-
 .../solr-ref-guide/src/migrate-to-policy-rule.adoc |   198 -
 .../src/near-real-time-searching.adoc              |     2 +-
 solr/solr-ref-guide/src/other-parsers.adoc         |   118 +-
 solr/solr-ref-guide/src/package-manager.adoc       |     9 +
 .../src/query-settings-in-solrconfig.adoc          |    39 +-
 solr/solr-ref-guide/src/rate-limiters.adoc         |   131 +
 solr/solr-ref-guide/src/replica-management.adoc    |     2 -
 solr/solr-ref-guide/src/replication-screen.adoc    |     8 +-
 .../solr-ref-guide/src/request-parameters-api.adoc |     2 +-
 .../src/rule-based-authorization-plugin.adoc       |    15 -
 solr/solr-ref-guide/src/running-solr-on-hdfs.adoc  |    39 -
 solr/solr-ref-guide/src/schema-browser-screen.adoc |     2 +
 .../src/searching-nested-documents.adoc            |   419 +-
 solr/solr-ref-guide/src/shard-management.adoc      |     6 +-
 .../src/shards-and-indexing-data-in-solrcloud.adoc |     4 +-
 .../src/solr-control-script-reference.adoc         |     6 -
 solr/solr-ref-guide/src/solr-glossary.adoc         |     2 +-
 solr/solr-ref-guide/src/solr-plugins.adoc          |     9 +-
 solr/solr-ref-guide/src/solr-tutorial.adoc         |     5 -
 solr/solr-ref-guide/src/solr-upgrade-notes.adoc    |     6 +-
 .../src/solrcloud-autoscaling-api.adoc             |   808 --
 .../solrcloud-autoscaling-auto-add-replicas.adoc   |    73 -
 .../src/solrcloud-autoscaling-fault-tolerance.adoc |    59 -
 .../src/solrcloud-autoscaling-listeners.adoc       |   220 -
 .../src/solrcloud-autoscaling-overview.adoc        |   116 -
 .../solrcloud-autoscaling-policy-preferences.adoc  |   638 -
 .../src/solrcloud-autoscaling-trigger-actions.adoc |   145 -
 .../src/solrcloud-autoscaling-triggers.adoc        |   627 -
 solr/solr-ref-guide/src/solrcloud-autoscaling.adoc |    35 -
 solr/solr-ref-guide/src/solrcloud.adoc             |     9 +-
 solr/solr-ref-guide/src/suggestions-screen.adoc    |    40 -
 .../src/the-query-elevation-component.adoc         |    15 +-
 .../src/transforming-result-documents.adoc         |    43 +-
 .../src/updatehandlers-in-solrconfig.adoc          |     2 +-
 .../src/updating-parts-of-documents.adoc           |   142 +-
 .../src/uploading-data-with-index-handlers.adoc    |     2 +-
 ...ta-store-data-with-the-data-import-handler.adoc |  1077 --
 ...ing-the-solr-administration-user-interface.adoc |     4 +-
 solr/solr-ref-guide/src/v2-api.adoc                |     7 +-
 .../tools/CustomizedAsciidoctorAntTask.java        |    34 -
 solr/solr-ref-guide/tools/asciidoctor-antlib.xml   |    22 -
 solr/solrj/build.xml                               |    88 -
 solr/solrj/ivy.xml                                 |    77 -
 .../org/apache/solr/client/solrj/SolrClient.java   |     8 +
 .../org/apache/solr/client/solrj/SolrRequest.java  |    19 +
 .../client/solrj/cloud/AlreadyExistsException.java |    35 +
 .../client/solrj/cloud/BadVersionException.java    |    40 +
 .../client/solrj/cloud/DelegatingCloudManager.java |    89 +
 .../cloud/DelegatingClusterStateProvider.java      |   130 +
 .../client/solrj/cloud/DistribStateManager.java    |    11 -
 .../solr/client/solrj/cloud/NotEmptyException.java |    35 +
 .../solr/client/solrj/cloud/VersionedData.java     |    99 +
 .../cloud/autoscaling/AddReplicaSuggester.java     |    84 -
 .../cloud/autoscaling/AlreadyExistsException.java  |    35 -
 .../solrj/cloud/autoscaling/AutoScalingConfig.java |   616 -
 .../cloud/autoscaling/BadVersionException.java     |    40 -
 .../solr/client/solrj/cloud/autoscaling/Cell.java  |    74 -
 .../client/solrj/cloud/autoscaling/Clause.java     |   839 --
 .../solrj/cloud/autoscaling/ComputedType.java      |    99 -
 .../client/solrj/cloud/autoscaling/Condition.java  |   125 -
 .../solrj/cloud/autoscaling/CoresVariable.java     |   127 -
 .../cloud/autoscaling/DelegatingCloudManager.java  |    93 -
 .../DelegatingClusterStateProvider.java            |   130 -
 .../autoscaling/DelegatingDistribStateManager.java |   107 -
 .../autoscaling/DelegatingNodeStateProvider.java   |    57 -
 .../cloud/autoscaling/DeleteNodeSuggester.java     |    48 -
 .../cloud/autoscaling/DeleteReplicaSuggester.java  |    78 -
 .../solrj/cloud/autoscaling/FreeDiskVariable.java  |   176 -
 .../cloud/autoscaling/MoveReplicaSuggester.java    |   115 -
 .../solrj/cloud/autoscaling/NodeVariable.java      |    44 -
 .../solrj/cloud/autoscaling/NoneSuggester.java     |    41 -
 .../solrj/cloud/autoscaling/NotEmptyException.java |    35 -
 .../client/solrj/cloud/autoscaling/Operand.java    |   210 -
 .../client/solrj/cloud/autoscaling/Policy.java     |   792 --
 .../solrj/cloud/autoscaling/PolicyHelper.java      |   733 --
 .../client/solrj/cloud/autoscaling/Preference.java |   157 -
 .../client/solrj/cloud/autoscaling/RangeVal.java   |    61 -
 .../solrj/cloud/autoscaling/ReplicaCount.java      |   134 -
 .../solrj/cloud/autoscaling/ReplicaVariable.java   |   176 -
 .../solr/client/solrj/cloud/autoscaling/Row.java   |   402 -
 .../solrj/cloud/autoscaling/SealedClause.java      |    29 -
 .../cloud/autoscaling/SplitShardSuggester.java     |    68 -
 .../client/solrj/cloud/autoscaling/Suggester.java  |   530 -
 .../client/solrj/cloud/autoscaling/Suggestion.java |   133 -
 .../autoscaling/TriggerEventProcessorStage.java    |    30 -
 .../solrj/cloud/autoscaling/TriggerEventType.java  |    33 -
 .../cloud/autoscaling/UnsupportedSuggester.java    |    61 -
 .../client/solrj/cloud/autoscaling/Variable.java   |   410 -
 .../solrj/cloud/autoscaling/VariableBase.java      |   213 -
 .../solrj/cloud/autoscaling/VersionedData.java     |    99 -
 .../client/solrj/cloud/autoscaling/Violation.java  |   182 -
 .../cloud/autoscaling/WithCollectionVariable.java  |   170 -
 .../solrj/cloud/autoscaling/package-info.java      |    23 -
 .../client/solrj/impl/BaseCloudSolrClient.java     |    37 +-
 .../solr/client/solrj/impl/HttpSolrClient.java     |    52 +-
 .../solr/client/solrj/impl/LBHttp2SolrClient.java  |     4 +-
 .../solr/client/solrj/impl/LBHttpSolrClient.java   |     4 +-
 .../solr/client/solrj/impl/LBSolrClient.java       |     3 +-
 .../solrj/impl/SolrClientNodeStateProvider.java    |    89 +-
 .../client/solrj/impl/ZkDistribStateManager.java   |    34 +-
 .../solrj/io/eval/StandardDeviationEvaluator.java  |     2 -
 .../client/solrj/io/eval/VarianceEvaluator.java    |     2 -
 .../solrj/io/stream/SignificantTermsStream.java    |     8 +-
 .../solr/client/solrj/io/stream/TupleStream.java   |    38 +-
 .../solrj/request/AbstractUpdateRequest.java       |     5 +
 .../solrj/request/CollectionAdminRequest.java      |    69 +-
 .../client/solrj/request/CollectionApiMapping.java |     5 -
 .../solrj/request/ConfigSetAdminRequest.java       |     5 +
 .../client/solrj/request/CoreAdminRequest.java     |     5 +
 .../solrj/request/DelegationTokenRequest.java      |    15 +
 .../client/solrj/request/DirectXmlRequest.java     |     5 +
 .../solrj/request/DocumentAnalysisRequest.java     |     5 +
 .../client/solrj/request/FieldAnalysisRequest.java |     5 +
 .../client/solrj/request/GenericSolrRequest.java   |     5 +
 .../client/solrj/request/HealthCheckRequest.java   |     5 +-
 .../solr/client/solrj/request/LukeRequest.java     |     5 +
 .../solr/client/solrj/request/QueryRequest.java    |     4 +
 .../apache/solr/client/solrj/request/SolrPing.java |     5 +
 .../solr/client/solrj/request/V2Request.java       |     5 +
 .../request/schema/AbstractSchemaRequest.java      |     4 +
 .../java/org/apache/solr/cluster/api/ApiType.java  |    31 +
 .../apache/solr/cluster/api/CollectionConfig.java  |    27 +
 .../org/apache/solr/cluster/api/HashRange.java     |    42 +
 .../java/org/apache/solr/cluster/api/Resource.java |    41 +
 .../java/org/apache/solr/cluster/api/Router.java   |    25 +
 .../java/org/apache/solr/cluster/api/Shard.java    |    39 +
 .../org/apache/solr/cluster/api/ShardReplica.java  |    57 +
 .../org/apache/solr/cluster/api/SimpleMap.java     |    80 +
 .../org/apache/solr/cluster/api/SolrCluster.java   |    48 +
 .../apache/solr/cluster/api/SolrCollection.java    |    34 +
 .../java/org/apache/solr/cluster/api/SolrNode.java |    36 +
 .../org/apache/solr/cluster/api/package-info.java  |    21 +
 .../org/apache/solr/common/LazySolrCluster.java    |   446 +
 .../java/org/apache/solr/common/SimpleZkMap.java   |   139 +
 .../java/org/apache/solr/common/SolrException.java |     1 +
 .../solr/common/annotation/SolrSingleThreaded.java |    34 -
 .../solr/common/annotation/SolrThreadUnsafe.java   |    34 +
 .../java/org/apache/solr/common/cloud/Aliases.java |     8 +
 .../org/apache/solr/common/cloud/ClusterState.java |     4 +
 .../apache/solr/common/cloud/DocCollection.java    |    19 -
 .../org/apache/solr/common/cloud/DocRouter.java    |    13 +-
 .../apache/solr/common/cloud/SolrClassLoader.java  |    29 +
 .../org/apache/solr/common/cloud/SolrZkClient.java |     3 +
 .../apache/solr/common/cloud/ZkDynamicConfig.java  |     3 +-
 .../solr/common/cloud/ZkMaintenanceUtils.java      |    31 +-
 .../apache/solr/common/cloud/ZkStateReader.java    |    54 +-
 .../solr/common/params/AutoScalingParams.java      |    76 -
 .../solr/common/params/CollectionAdminParams.java  |     6 -
 .../solr/common/params/CollectionParams.java       |     1 -
 .../apache/solr/common/params/CommonParams.java    |    16 +-
 .../org/apache/solr/common/util/ExecutorUtil.java  |     8 +-
 .../solr/common/util/JsonSchemaValidator.java      |    26 +-
 .../apache/solr/common/util/JsonTextWriter.java    |     5 -
 .../solr/common/util/LinkedSimpleHashMap.java      |    34 +
 .../org/apache/solr/common/util/NamedList.java     |    39 +-
 .../java/org/apache/solr/common/util/Utils.java    |    37 +-
 .../apache/solr/common/util/WrappedSimpleMap.java  |    49 +
 .../resources/apispec/autoscaling.Commands.json    |   199 -
 .../src/resources/apispec/autoscaling.history.json |    61 -
 .../src/resources/apispec/cluster.Commands.json    |    25 -
 .../resources/apispec/collections.Commands.json    |    11 -
 .../collections.collection.Commands.modify.json    |    11 -
 solr/solrj/src/resources/apispec/node.Info.json    |     2 +-
 .../solr/autoscaling/testAddMissingReplica.json    |   122 -
 .../solr/autoscaling/testAddTooManyPerPolicy.json  |   129 -
 .../autoscaling/testAutoScalingHandlerFailure.json |   141 -
 ...testAutoscalingPreferencesUsedWithNoPolicy.json |    52 -
 .../autoscaling/testComputePlanAfterNodeAdded.json |    16 -
 .../solr/autoscaling/testCoresSuggestions.json     |    17 -
 .../testCreateCollectionWithEmptyPolicy.json       |    20 -
 .../solrj/solr/autoscaling/testDiskSpaceHint.json  |    16 -
 .../solr/autoscaling/testEmptyCollection.json      |    26 -
 .../solrj/solr/autoscaling/testEqualOnNonNode.json |    83 -
 .../solr/autoscaling/testFreeDiskDeviation.json    |    35 -
 .../solr/autoscaling/testFreeDiskSuggestions.json  |    27 -
 .../solr/autoscaling/testFreediskPercentage.json   |    25 -
 .../solrj/solr/autoscaling/testHostAttribute.json  |   119 -
 .../solrj/solr/autoscaling/testInfiniteLoop.json   | 13173 -------------------
 .../solr/autoscaling/testMoveReplicaSuggester.json |    15 -
 .../testMoveReplicasInMultipleCollections.json     |    86 -
 .../solrj/solr/autoscaling/testPolicy.json         |    41 -
 .../solr/autoscaling/testPortSuggestions.json      |    22 -
 .../autoscaling/testReplicaCountSuggestions.json   |    15 -
 .../solr/autoscaling/testReplicaPercentage.json    |    46 -
 .../autoscaling/testReplicaZonesPercentage.json    |    15 -
 .../autoscaling/testScheduledTriggerFailure.json   |    52 -
 .../solrj/solr/autoscaling/testSortError.json      |   225 -
 .../autoscaling/testSuggestionsRebalance2.json     |   131 -
 .../autoscaling/testSuggestionsRebalanceOnly.json  |   105 -
 .../solr/autoscaling/testSysPropSuggestions.json   |   127 -
 .../solr/autoscaling/testSyspropSuggestions1.json  |    24 -
 .../solr/autoscaling/testUnresolvedSuggestion.json |   211 -
 .../solr/autoscaling/testUtilizeNodeFailure.json   |    69 -
 .../solr/autoscaling/testUtilizeNodeFailure2.json  |    66 -
 .../solr/autoscaling/testViolationOutput.json      |    22 -
 .../solrj/solr/autoscaling/testWithCollection.json |    21 -
 .../autoscaling/testWithCollectionMoveReplica.json |    28 -
 .../testWithCollectionMoveVsAddSuggestions.json    |    49 -
 .../autoscaling/testWithCollectionSuggestions.json |    21 -
 ...rconfig-slave1.xml => solrconfig-follower1.xml} |     0
 .../IndexingNestedDocuments.java                   |   280 +
 .../solr/client/solrj/TestLBHttp2SolrClient.java   |     2 +-
 .../solr/client/solrj/TestLBHttpSolrClient.java    |     2 +-
 .../solrj/cloud/autoscaling/ConditionTest.java     |    80 -
 .../autoscaling/MoveReplicaSuggesterTest.java      |   104 -
 .../client/solrj/cloud/autoscaling/TestPolicy.java |  3358 -----
 .../solrj/cloud/autoscaling/TestPolicy2.java       |   540 -
 .../solrj/cloud/autoscaling/TestPolicy2Old.java    |    26 -
 .../solrj/cloud/autoscaling/TestPolicyOld.java     |    25 -
 .../solrj/impl/CloudSolrClientCacheTest.java       |     3 +-
 .../solr/client/solrj/io/stream/StreamingTest.java |     7 +
 .../io/stream/eval/ConversionEvaluatorsTest.java   |     5 +-
 .../io/stream/eval/TemporalEvaluatorsTest.java     |     5 +-
 .../solrj/io/stream/ops/ConcatOperationTest.java   |     5 +-
 .../client/solrj/io/stream/ops/OperationsTest.java |     5 +-
 .../solr/common/util/TestFastJavabinDecoder.java   |    13 +-
 .../solr/common/util/TestZkMaintenanceUtils.java   |    55 +
 solr/test-framework/build.gradle                   |     1 +
 solr/test-framework/build.xml                      |   121 -
 solr/test-framework/ivy.xml                        |    42 -
 .../src/java/org/apache/solr/SolrTestCaseJ4.java   |    16 -
 .../java/org/apache/solr/cloud/ConfigRequest.java  |     5 +
 .../src/java/org/apache/solr/util/TestHarness.java |     6 +-
 solr/webapp/build.xml                              |    69 -
 solr/webapp/web/css/angular/collections.css        |     2 +-
 solr/webapp/web/css/angular/dashboard.css          |     4 +-
 solr/webapp/web/css/angular/dataimport.css         |   371 -
 solr/webapp/web/css/angular/menu.css               |     4 +-
 solr/webapp/web/css/angular/replication.css        |    10 +-
 solr/webapp/web/css/angular/suggestions.css        |    64 -
 .../img/ico/{node-slave.png => node-follower.png}  |   Bin
 .../img/ico/{node-master.png => node-leader.png}   |   Bin
 solr/webapp/web/index.html                         |     7 -
 solr/webapp/web/js/angular/app.js                  |    20 -
 solr/webapp/web/js/angular/controllers/cloud.js    |     2 -
 .../js/angular/controllers/cluster-suggestions.js  |    62 -
 .../web/js/angular/controllers/collections.js      |     6 +-
 .../web/js/angular/controllers/core-overview.js    |     4 +-
 .../web/js/angular/controllers/dataimport.js       |   302 -
 .../web/js/angular/controllers/replication.js      |   108 +-
 solr/webapp/web/js/angular/services.js             |    15 -
 solr/webapp/web/partials/cluster_suggestions.html  |    49 -
 solr/webapp/web/partials/collection_overview.html  |     3 -
 solr/webapp/web/partials/collections.html          |    12 -
 solr/webapp/web/partials/core_overview.html        |    38 +-
 solr/webapp/web/partials/dataimport.html           |   210 -
 solr/webapp/web/partials/replication.html          |    62 +-
 versions.lock                                      |    62 +-
 versions.props                                     |     8 +-
 1642 files changed, 21241 insertions(+), 195854 deletions(-)

diff --cc solr/core/src/java/org/apache/solr/core/SolrCore.java
index 59cdbd1,f3e0408..368b9e8
--- a/solr/core/src/java/org/apache/solr/core/SolrCore.java
+++ b/solr/core/src/java/org/apache/solr/core/SolrCore.java
@@@ -225,12 -225,9 +227,11 @@@ public final class SolrCore implements 
    private final RecoveryStrategy.Builder recoveryStrategyBuilder;
    private IndexReaderFactory indexReaderFactory;
    private final Codec codec;
-   private final MemClassLoader memClassLoader;
+   private final ConfigSet configSet;
    //singleton listener for all packages used in schema
-   private final PackageListeningClassLoader schemaPluginsLoader;
  
 +  //a single package listener for all cores that require core reloading
 +  private final PackageListeningClassLoader coreReloadingClassLoader;
    private final CircuitBreakerManager circuitBreakerManager;
  
    private final List<Runnable> confListeners = new CopyOnWriteArrayList<>();
@@@ -942,30 -933,17 +937,22 @@@
  
      assert ObjectReleaseTracker.track(searcherExecutor); // ensure that in unclean shutdown tests we still close this
  
-     this.coreContainer = coreContainer;
- 
      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());
  
-       CoreDescriptor cd = Objects.requireNonNull(coreDescriptor, "coreDescriptor cannot be null");
-       coreContainer.solrCores.addCoreDescriptor(cd);
- 
-       setName(name);
        this.solrConfig = configSet.getSolrConfig();
        this.resourceLoader = configSet.getSolrConfig().getResourceLoader();
-       this.resourceLoader.core = this;
-       schemaPluginsLoader = new PackageListeningClassLoader(coreContainer, resourceLoader,
-               solrConfig::maxPackageVersion,
-               () -> setLatestSchema(configSet.getIndexSchema(true)));
-       this.packageListeners.addListener(schemaPluginsLoader);
        IndexSchema schema = configSet.getIndexSchema();
  
 +      this.coreReloadingClassLoader = new PackageListeningClassLoader(coreContainer,
 +              resourceLoader,
 +              solrConfig::maxPackageVersion,
 +              () -> coreContainer.reload(name, uniqueId));
 +      this.packageListeners.addListener(coreReloadingClassLoader);
        this.configSetProperties = configSet.getProperties();
        // Initialize the metrics manager
        this.coreMetricManager = initCoreMetricManager(solrConfig);


[lucene] 19/42: Merge branch 'master' into jira/solr14155-1

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

dweiss pushed a commit to branch jira/solr14155-1
in repository https://gitbox.apache.org/repos/asf/lucene.git

commit 6bc50e9ebfb76c291d5b369d708f93ec02355a34
Merge: eef0bf5 03d658a
Author: Noble Paul <no...@users.noreply.github.com>
AuthorDate: Thu Jul 16 16:36:52 2020 +1000

    Merge branch 'master' into jira/solr14155-1

 .gitignore                                         |   7 +-
 dev-tools/doap/lucene.rdf                          |   7 +
 dev-tools/doap/solr.rdf                            |   7 +
 lucene/CHANGES.txt                                 |  34 +++-
 .../lucene/index/TestBackwardsCompatibility.java   |   7 +-
 .../org/apache/lucene/index/index.8.6.0-cfs.zip    | Bin 0 -> 16442 bytes
 .../org/apache/lucene/index/index.8.6.0-nocfs.zip  | Bin 0 -> 16428 bytes
 .../test/org/apache/lucene/index/sorted.8.6.0.zip  | Bin 0 -> 140450 bytes
 .../lucene/queryparser/classic/FastCharStream.java |   9 +-
 .../flexible/standard/parser/FastCharStream.java   |  11 +-
 .../surround/parser/FastCharStream.java            |  11 +-
 solr/CHANGES.txt                                   |  23 ++-
 .../solr/handler/dataimport/ContextImpl.java       |   3 +-
 .../handler/dataimport/EntityProcessorWrapper.java |   4 +-
 .../handler/dataimport/XPathEntityProcessor.java   |   3 +-
 .../dataimport/TestFileListEntityProcessor.java    |   6 +-
 .../dataimport/TestLineEntityProcessor.java        |   6 +-
 .../solr/response/VelocityResponseWriter.java      |   2 -
 .../solr/cloud/ShardLeaderElectionContextBase.java |   4 +
 .../solr/cloud/api/collections/SplitShardCmd.java  |  11 +-
 .../solr/cloud/autoscaling/IndexSizeTrigger.java   |  89 ++++----
 .../solr/cloud/autoscaling/SearchRateTrigger.java  |  55 +++--
 .../cloud/autoscaling/sim/SimCloudManager.java     |   7 +-
 .../autoscaling/sim/SimClusterStateProvider.java   | 224 +++++++++++----------
 .../autoscaling/sim/SimNodeStateProvider.java      |  22 +-
 .../solr/cloud/autoscaling/sim/SimScenario.java    |   8 +-
 .../solr/cloud/autoscaling/sim/SimUtils.java       |  25 ++-
 .../autoscaling/sim/SnapshotCloudManager.java      |   4 +-
 .../autoscaling/sim/SnapshotNodeStateProvider.java |  66 +++---
 .../apache/solr/cloud/overseer/NodeMutator.java    |   4 +-
 .../apache/solr/cloud/overseer/ReplicaMutator.java |   4 +-
 .../src/java/org/apache/solr/core/SolrCore.java    |   6 +
 .../java/org/apache/solr/handler/IndexFetcher.java |  22 +-
 .../apache/solr/handler/ReplicationHandler.java    |   3 +-
 .../org/apache/solr/handler/SchemaHandler.java     |  46 ++++-
 .../solr/handler/admin/MetricsHistoryHandler.java  |   5 +-
 .../org/apache/solr/parser/FastCharStream.java     |  12 ++
 .../solr/pkg/PackageListeningClassLoader.java      |  16 +-
 .../java/org/apache/solr/response/XMLWriter.java   |  46 +++++
 .../apache/solr/schema/FieldTypePluginLoader.java  |  12 +-
 .../java/org/apache/solr/schema/IndexSchema.java   | 109 +++++-----
 .../org/apache/solr/schema/ManagedIndexSchema.java |   2 +-
 .../org/apache/solr/schema/PreAnalyzedField.java   |   2 +-
 .../solr/search/facet/FacetFieldProcessor.java     |   2 +-
 .../distance/GeoDistValueSourceParser.java         |   3 +-
 .../java/org/apache/solr/servlet/HttpSolrCall.java |   3 +-
 .../src/java/org/apache/solr/util/SolrCLI.java     |   7 +-
 .../solr/util/plugin/AbstractPluginLoader.java     |   8 +-
 .../test-files/runtimecode/schema-plugins.jar.bin  | Bin 0 -> 6814 bytes
 solr/core/src/test-files/runtimecode/sig.txt       |   5 +
 .../DistribDocExpirationUpdateProcessorTest.java   |   4 +-
 .../org/apache/solr/cloud/HttpPartitionTest.java   |   2 +-
 .../solr/cloud/MoveReplicaHDFSFailoverTest.java    |   4 +
 .../org/apache/solr/cloud/MoveReplicaHDFSTest.java |   4 +
 .../apache/solr/cloud/SaslZkACLProviderTest.java   |   4 +
 .../cloud/SharedFSAutoReplicaFailoverTest.java     |   5 +
 .../solr/cloud/TestSolrCloudWithKerberosAlt.java   |   4 +
 .../HdfsCollectionsAPIDistributedZkTest.java       |   4 +
 .../collections/TestHdfsCloudBackupRestore.java    |   5 +
 .../cloud/autoscaling/ComputePlanActionTest.java   |   3 +-
 .../HdfsAutoAddReplicasIntegrationTest.java        |   4 +
 .../SearchRateTriggerIntegrationTest.java          |   7 +-
 .../cloud/autoscaling/SearchRateTriggerTest.java   |  14 +-
 .../solr/cloud/autoscaling/TestPolicyCloud.java    |   9 +-
 .../autoscaling/sim/SimSolrCloudTestCase.java      |   9 +-
 .../sim/TestSimClusterStateProvider.java           |   3 +-
 .../cloud/autoscaling/sim/TestSimPolicyCloud.java  |   5 +-
 .../autoscaling/sim/TestSimTriggerIntegration.java |   8 +-
 .../autoscaling/sim/TestSnapshotCloudManager.java  |  19 +-
 .../solr/cloud/hdfs/HDFSCollectionsAPITest.java    |   4 +
 .../cloud/hdfs/HdfsBasicDistributedZk2Test.java    |   4 +
 .../cloud/hdfs/HdfsBasicDistributedZkTest.java     |   4 +
 .../hdfs/HdfsChaosMonkeyNothingIsSafeTest.java     |   4 +
 .../cloud/hdfs/HdfsChaosMonkeySafeLeaderTest.java  |   4 +
 .../apache/solr/cloud/hdfs/HdfsNNFailoverTest.java |   4 +
 .../solr/cloud/hdfs/HdfsRecoverLeaseTest.java      |   4 +
 .../apache/solr/cloud/hdfs/HdfsRecoveryZkTest.java |   4 +
 .../cloud/hdfs/HdfsRestartWhileUpdatingTest.java   |   4 +
 .../apache/solr/cloud/hdfs/HdfsSyncSliceTest.java  |   4 +
 .../apache/solr/cloud/hdfs/HdfsThreadLeakTest.java |   4 +
 .../HdfsTlogReplayBufferedWhileIndexingTest.java   |   4 +
 .../cloud/hdfs/HdfsUnloadDistributedZkTest.java    |   4 +
 .../hdfs/HdfsWriteToMultipleCollectionsTest.java   |   4 +
 .../org/apache/solr/cloud/hdfs/StressHdfsTest.java |   4 +
 .../org/apache/solr/cloud/rule/RuleEngineTest.java |   4 +-
 .../test/org/apache/solr/core/CoreSorterTest.java  |   2 +-
 .../apache/solr/core/HdfsDirectoryFactoryTest.java |   4 +
 .../solr/handler/TestHdfsBackupRestoreCore.java    |   4 +
 .../TestReplicationHandlerDiskOverFlow.java        |   2 +-
 .../handler/admin/MetricsHistoryHandlerTest.java   |   2 +-
 .../solr/handler/admin/ThreadDumpHandlerTest.java  | 169 ++++++++++++----
 .../apache/solr/index/hdfs/CheckHdfsIndexTest.java |   4 +
 .../src/test/org/apache/solr/pkg/TestPackages.java | 140 ++++++++++++-
 .../org/apache/solr/response/TestPushWriter.java   |  66 ++++--
 .../org/apache/solr/search/TestRecoveryHdfs.java   |   4 +
 .../solr/store/blockcache/BlockCacheTest.java      |  12 --
 .../apache/solr/store/hdfs/HdfsDirectoryTest.java  |   4 +
 .../solr/store/hdfs/HdfsLockFactoryTest.java       |   4 +
 .../org/apache/solr/update/TestHdfsUpdateLog.java  |   4 +
 .../org/apache/solr/util/TestCircuitBreaker.java   |  31 ++-
 solr/solr-ref-guide/src/_config.yml.template       |   1 +
 .../src/_includes/mathjax-support.html             |  22 ++
 solr/solr-ref-guide/src/_layouts/default.html      |   2 +
 solr/solr-ref-guide/src/aliases.adoc               |   9 +-
 solr/solr-ref-guide/src/enabling-ssl.adoc          |   2 +-
 .../src/kerberos-authentication-plugin.adoc        |   3 +-
 .../src/meta-docs/asciidoc-syntax.adoc             |  45 +++++
 .../src/the-query-elevation-component.adoc         |   2 +-
 solr/solr-ref-guide/src/using-solrj.adoc           |  23 +++
 .../solr/client/solrj/cloud/NodeStateProvider.java |   5 +-
 .../client/solrj/cloud/autoscaling/Clause.java     |   2 +-
 .../solrj/cloud/autoscaling/CoresVariable.java     |   6 +-
 .../autoscaling/DelegatingNodeStateProvider.java   |   3 +-
 .../solrj/cloud/autoscaling/FreeDiskVariable.java  |  31 +--
 .../cloud/autoscaling/MoveReplicaSuggester.java    |  13 +-
 .../solrj/cloud/autoscaling/PolicyHelper.java      |   9 +-
 .../solrj/cloud/autoscaling/ReplicaCount.java      |   6 +-
 .../solrj/cloud/autoscaling/ReplicaInfo.java       | 224 ---------------------
 .../solr/client/solrj/cloud/autoscaling/Row.java   |  47 +++--
 .../client/solrj/cloud/autoscaling/Suggester.java  |  14 +-
 .../client/solrj/cloud/autoscaling/Suggestion.java |   2 +-
 .../client/solrj/cloud/autoscaling/Variable.java   |   9 +-
 .../client/solrj/cloud/autoscaling/Violation.java  |   5 +-
 .../cloud/autoscaling/WithCollectionVariable.java  |   6 +-
 .../solrj/impl/SolrClientNodeStateProvider.java    |  30 +--
 .../solrj/request/JavaBinUpdateRequestCodec.java   |   2 +-
 .../java/org/apache/solr/common/SolrDocument.java  |   2 +
 .../org/apache/solr/common/SolrInputDocument.java  |   1 +
 .../solr/common/cloud/CompositeIdRouter.java       |   3 +-
 .../org/apache/solr/common/cloud/DocRouter.java    |   3 +-
 .../java/org/apache/solr/common/cloud/Replica.java | 189 ++++++++++++++---
 .../org/apache/solr/common/util/TextWriter.java    |  13 +-
 .../UsingSolrJRefGuideExamplesTest.java            |  54 ++++-
 .../solr/client/solrj/TestLBHttp2SolrClient.java   |   7 -
 .../solr/client/solrj/TestLBHttpSolrClient.java    |   7 -
 .../autoscaling/MoveReplicaSuggesterTest.java      |  32 +--
 .../client/solrj/cloud/autoscaling/TestPolicy.java |  98 ++++-----
 .../solrj/cloud/autoscaling/TestPolicy2.java       |  19 +-
 .../solr/client/solrj/request/TestCoreAdmin.java   |   8 -
 .../org/apache/solr/common/SolrDocumentTest.java   |   2 +-
 .../org/apache/solr/SolrIgnoredThreadsFilter.java  |   5 +
 .../src/java/org/apache/solr/SolrTestCase.java     |  10 +
 .../src/java/org/apache/solr/SolrTestCaseJ4.java   |   9 +-
 143 files changed, 1590 insertions(+), 1000 deletions(-)

diff --cc solr/core/src/java/org/apache/solr/core/SolrCore.java
index 714af89,4c9fae6..fb8a84f
--- a/solr/core/src/java/org/apache/solr/core/SolrCore.java
+++ b/solr/core/src/java/org/apache/solr/core/SolrCore.java
@@@ -225,12 -224,11 +225,14 @@@ public final class SolrCore implements 
    private IndexReaderFactory indexReaderFactory;
    private final Codec codec;
    private final MemClassLoader memClassLoader;
+   //singleton listener for all packages used in schema
+   private final PackageListeningClassLoader schemaPluginsLoader;
  
 +  //a single package listener for all cores that require core reloading
 +  private final PackageListeningClassLoader coreReloadingClassLoader;
 +  //singleton listener for all packages used in schema
 +  private final PackageListeningClassLoader schemaPluginsLoader;
    private final CircuitBreakerManager circuitBreakerManager;
 -
    private final List<Runnable> confListeners = new CopyOnWriteArrayList<>();
  
    private final ReentrantLock ruleExpiryLock;
@@@ -957,11 -956,7 +962,12 @@@
                () -> setLatestSchema(configSet.getIndexSchema(true)));
        this.packageListeners.addListener(schemaPluginsLoader);
        IndexSchema schema = configSet.getIndexSchema();
+ 
 +      this.coreReloadingClassLoader = new PackageListeningClassLoader(coreContainer,
 +              resourceLoader,
 +              solrConfig::maxPackageVersion,
 +              () -> coreContainer.reload(name, uniqueId));
 +      this.packageListeners.addListener(coreReloadingClassLoader);
        this.configSetProperties = configSet.getProperties();
        // Initialize the metrics manager
        this.coreMetricManager = initCoreMetricManager(solrConfig);
diff --cc solr/core/src/java/org/apache/solr/pkg/PackageListeningClassLoader.java
index 6b66d84,ced4bd0..5e8bf69
--- a/solr/core/src/java/org/apache/solr/pkg/PackageListeningClassLoader.java
+++ b/solr/core/src/java/org/apache/solr/pkg/PackageListeningClassLoader.java
@@@ -37,54 -37,42 +37,52 @@@ import java.util.function.Function
   * */
  public class PackageListeningClassLoader implements SolrClassLoader , PackageListeners.Listener {
      private final CoreContainer coreContainer;
 -    private final SolrResourceLoader coreResourceLoader;
++
 +    private final SolrResourceLoader fallbackResourceLoader;
      private final Function<String, String> pkgVersionSupplier;
      /** package name and the versions that we are tracking
       */
      private Map<String ,PackageAPI.PkgVersion> packageVersions =  new HashMap<>(1);
      private final Runnable onReload;
  
++
 +    /**
 +     * @param fallbackResourceLoader The {@link SolrResourceLoader} to use if no package is specified
 +     * @param pkgVersionSupplier Get the version configured for a given package
 +     * @param onReload The callback function that should be run if a package is updated
 +     */
      public PackageListeningClassLoader(CoreContainer coreContainer,
 -                                       SolrResourceLoader coreResourceLoader,
 +                                       SolrResourceLoader fallbackResourceLoader,
                                         Function<String, String> pkgVersionSupplier,
                                         Runnable onReload) {
          this.coreContainer = coreContainer;
 -        this.coreResourceLoader = coreResourceLoader;
 +        this.fallbackResourceLoader = fallbackResourceLoader;
          this.pkgVersionSupplier = pkgVersionSupplier;
          this.onReload = () -> {
 -            packageVersions = new HashMap<>();
 -            onReload.run();
 -        };
 -    }
 +            //clear our current versions. When new classes are loaded from packages, fresh data can be populated
-             packageVersions = new HashMap<>();
-             onReload.run();
-         };
-     }
++
  
  
      @Override
      public <T> T newInstance(String cname, Class<T> expectedType, String... subpackages) {
          PluginInfo.ClassName cName = new PluginInfo.ClassName(cname);
--        if(cName.pkg == null){
 -            return coreResourceLoader.newInstance(cname, expectedType, subpackages);
++        if(cName.pkg == null) {
 +            return fallbackResourceLoader.newInstance(cname, expectedType, subpackages);
          } else {
-             PackageLoader.Package.Version version = findPackageVersion(cName, true);
 -            PackageLoader.Package.Version version = findPkgVersion(cName);
--            return applyResourceLoaderAware(version, version.getLoader().newInstance(cName.className, expectedType, subpackages));
++            PackageLoader.Package.Version version = findPackageVersion(cName, true);            return applyResourceLoaderAware(version, version.getLoader().newInstance(cName.className, expectedType, subpackages));
  
          }
      }
  
 -    private PackageLoader.Package.Version findPkgVersion(PluginInfo.ClassName cName) {
++
 +    /**
 +     * This looks up for package and also listens for that package if required
 +     * @param cName The class name
 +     */
 +    public PackageLoader.Package.Version findPackageVersion(PluginInfo.ClassName cName, boolean registerListener) {
          PackageLoader.Package.Version theVersion = coreContainer.getPackageLoader().getPackage(cName.pkg).getLatest(pkgVersionSupplier.apply(cName.pkg));
 -        packageVersions.put(cName.pkg, theVersion.getPkgVersion());
 +        if(registerListener) {
 +            packageVersions.put(cName.pkg, theVersion.getPkgVersion());
-         }
          return theVersion;
      }
  
@@@ -113,9 -101,9 +111,10 @@@
      public <T> T newInstance(String cname, Class<T> expectedType, String[] subPackages, Class[] params, Object[] args) {
          PluginInfo.ClassName cName = new PluginInfo.ClassName(cname);
          if (cName.pkg == null) {
 -            return coreResourceLoader.newInstance(cname, expectedType, subPackages, params, args);
 +            return fallbackResourceLoader.newInstance(cname, expectedType, subPackages, params, args);
          } else {
 -            PackageLoader.Package.Version version = findPkgVersion(cName);
 +            PackageLoader.Package.Version version = findPackageVersion(cName, true);
++
              return applyResourceLoaderAware(version, version.getLoader().newInstance(cName.className, expectedType, subPackages, params, args));
          }
      }
@@@ -124,11 -112,11 +123,10 @@@
      public <T> Class<? extends T> findClass(String cname, Class<T> expectedType) {
          PluginInfo.ClassName cName = new PluginInfo.ClassName(cname);
          if (cName.pkg == null) {
 -            return coreResourceLoader.findClass(cname, expectedType);
 +            return fallbackResourceLoader.findClass(cname, expectedType);
          } else {
 -            PackageLoader.Package.Version version = findPkgVersion(cName);
 +            PackageLoader.Package.Version version = findPackageVersion(cName, true);
              return version.getLoader().findClass(cName.className, expectedType);
--
          }
      }
  


[lucene] 02/42: more review commnets incorporated

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

dweiss pushed a commit to branch jira/solr14155-1
in repository https://gitbox.apache.org/repos/asf/lucene.git

commit ae2dfc69303191a0d030770eaa39a0a6f4b62f13
Author: noblepaul <no...@gmail.com>
AuthorDate: Sun Jul 12 20:01:37 2020 +1000

    more review commnets incorporated
---
 .../apache/solr/api/CustomContainerPlugins.java    |  2 +-
 .../apache/solr/cloud/ZkSolrResourceLoader.java    |  6 ++++++
 .../org/apache/solr/core/ConfigSetService.java     |  4 +++-
 .../java/org/apache/solr/core/CoreContainer.java   |  5 +++++
 .../org/apache/solr/core/DirectoryFactory.java     |  3 ++-
 .../src/java/org/apache/solr/core/PluginInfo.java  | 10 ++++-----
 .../src/java/org/apache/solr/core/SolrConfig.java  |  6 +++---
 .../src/java/org/apache/solr/core/SolrCore.java    | 20 ++++++++++-------
 .../org/apache/solr/core/SolrResourceLoader.java   |  6 ++++++
 .../apache/solr/packagemanager/PackageManager.java | 10 ++++-----
 .../solr/packagemanager/RepositoryManager.java     |  6 +++---
 .../apache/solr/pkg/CoreRefreshingClassLoader.java | 25 ++++++++++++++--------
 .../java/org/apache/solr/pkg/PackageLoader.java    |  2 ++
 .../java/org/apache/solr/search/CacheConfig.java   | 10 +++------
 .../java/org/apache/solr/update/UpdateHandler.java | 10 ++++-----
 15 files changed, 77 insertions(+), 48 deletions(-)

diff --git a/solr/core/src/java/org/apache/solr/api/CustomContainerPlugins.java b/solr/core/src/java/org/apache/solr/api/CustomContainerPlugins.java
index 80b570d..f24626b 100644
--- a/solr/core/src/java/org/apache/solr/api/CustomContainerPlugins.java
+++ b/solr/core/src/java/org/apache/solr/api/CustomContainerPlugins.java
@@ -225,7 +225,7 @@ public class CustomContainerPlugins implements ClusterPropertiesListener, MapWri
     @SuppressWarnings({"unchecked","rawtypes"})
     public ApiInfo(PluginMeta info, List<String> errs) {
       this.info = info;
-      PluginInfo.CName klassInfo = new PluginInfo.CName(info.klass);
+      PluginInfo.ClassName klassInfo = new PluginInfo.ClassName(info.klass);
       pkg = klassInfo.pkg;
       if (pkg != null) {
         PackageLoader.Package p = coreContainer.getPackageLoader().getPackage(pkg);
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 4d9d910..dead107 100644
--- a/solr/core/src/java/org/apache/solr/cloud/ZkSolrResourceLoader.java
+++ b/solr/core/src/java/org/apache/solr/cloud/ZkSolrResourceLoader.java
@@ -26,6 +26,7 @@ import java.nio.file.Path;
 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;
@@ -156,5 +157,10 @@ public class ZkSolrResourceLoader extends SolrResourceLoader {
     this.zkIndexSchemaReader = zkIndexSchemaReader;
   }
 
+  @Override
+  public CoreContainer getCoreContainer() {
+    return zkController.getCoreContainer();
+  }
+
   public ZkIndexSchemaReader getZkIndexSchemaReader() { return zkIndexSchemaReader; }
 }
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 84f94d5..dd87fcd 100644
--- a/solr/core/src/java/org/apache/solr/core/ConfigSetService.java
+++ b/solr/core/src/java/org/apache/solr/core/ConfigSetService.java
@@ -207,7 +207,9 @@ public abstract class ConfigSetService {
     @Override
     public SolrResourceLoader createCoreResourceLoader(CoreDescriptor cd) {
       Path instanceDir = locateInstanceDir(cd);
-      return new SolrResourceLoader(instanceDir, parentLoader.getClassLoader());
+      SolrResourceLoader solrResourceLoader = new SolrResourceLoader(instanceDir, parentLoader.getClassLoader());
+      solrResourceLoader.coreContainer = parentLoader.coreContainer;
+      return solrResourceLoader;
     }
 
     @Override
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 ca74829..82cb11f 100644
--- a/solr/core/src/java/org/apache/solr/core/CoreContainer.java
+++ b/solr/core/src/java/org/apache/solr/core/CoreContainer.java
@@ -321,6 +321,7 @@ public class CoreContainer {
 
   public CoreContainer(NodeConfig config, CoresLocator locator, boolean asyncSolrCoreLoad) {
     this.loader = config.getSolrResourceLoader();
+    this.loader.coreContainer = this;
     this.solrHome = config.getSolrHome();
     this.cfg = requireNonNull(config);
     try {
@@ -1576,6 +1577,10 @@ public class CoreContainer {
     return ret;
   }
 
+  /**
+   * reloads a core
+   * refer {@link CoreContainer#reload(String, UUID)} for details
+   */
   public void reload(String name) {
     reload(name, null);
   }
diff --git a/solr/core/src/java/org/apache/solr/core/DirectoryFactory.java b/solr/core/src/java/org/apache/solr/core/DirectoryFactory.java
index 5736692..d8e1728 100644
--- a/solr/core/src/java/org/apache/solr/core/DirectoryFactory.java
+++ b/solr/core/src/java/org/apache/solr/core/DirectoryFactory.java
@@ -36,6 +36,7 @@ import org.apache.lucene.store.IOContext;
 import org.apache.lucene.store.LockFactory;
 import org.apache.solr.common.SolrException;
 import org.apache.solr.core.CachingDirectoryFactory.CloseListener;
+import org.apache.solr.pkg.CoreRefreshingClassLoader;
 import org.apache.solr.util.plugin.NamedListInitializedPlugin;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
@@ -419,7 +420,7 @@ public abstract class DirectoryFactory implements NamedListInitializedPlugin,
     final DirectoryFactory dirFactory;
     if (info != null) {
       log.debug(info.className);
-      dirFactory = config.getResourceLoader().newInstance(info.className, DirectoryFactory.class);
+      dirFactory = CoreRefreshingClassLoader.createInst(config.getResourceLoader(), info, DirectoryFactory.class);
       // allow DirectoryFactory instances to access the CoreContainer
       dirFactory.initCoreContainer(cc);
       dirFactory.init(info.initArgs);
diff --git a/solr/core/src/java/org/apache/solr/core/PluginInfo.java b/solr/core/src/java/org/apache/solr/core/PluginInfo.java
index 58fa73d..3a0de71 100644
--- a/solr/core/src/java/org/apache/solr/core/PluginInfo.java
+++ b/solr/core/src/java/org/apache/solr/core/PluginInfo.java
@@ -41,7 +41,7 @@ import static org.apache.solr.schema.FieldType.CLASS_NAME;
  */
 public class PluginInfo implements MapSerializable {
   public final String name, className, type, pkgName;
-  public final CName cName;
+  public final ClassName cName;
   @SuppressWarnings({"rawtypes"})
   public final NamedList initArgs;
   public final Map<String, String> attributes;
@@ -66,15 +66,15 @@ public class PluginInfo implements MapSerializable {
    * This checks if it is a package name prefixed classname.
    * the return value has first = package name and second = class name
    */
-  public static CName parseClassName(String name) {
-    return new CName(name);
+  public static ClassName parseClassName(String name) {
+    return new ClassName(name);
   }
 
-  public static class CName {
+  public static class ClassName {
     public final String pkg;
     public final String className;
 
-    public CName(String name) {
+    public ClassName(String name) {
       if (name == null) {
         pkg = null;
         className = null;
diff --git a/solr/core/src/java/org/apache/solr/core/SolrConfig.java b/solr/core/src/java/org/apache/solr/core/SolrConfig.java
index c189eb4..8861799 100644
--- a/solr/core/src/java/org/apache/solr/core/SolrConfig.java
+++ b/solr/core/src/java/org/apache/solr/core/SolrConfig.java
@@ -58,6 +58,7 @@ import org.apache.solr.common.SolrException.ErrorCode;
 import org.apache.solr.common.util.IOUtils;
 import org.apache.solr.handler.component.SearchComponent;
 import org.apache.solr.pkg.PackageListeners;
+import org.apache.solr.pkg.PackageLoader;
 import org.apache.solr.request.SolrRequestHandler;
 import org.apache.solr.response.QueryResponseWriter;
 import org.apache.solr.response.transform.TransformerFactory;
@@ -106,7 +107,6 @@ public class SolrConfig extends XmlConfigFile implements MapSerializable {
   private static final Logger log = LoggerFactory.getLogger(MethodHandles.lookup().lookupClass());
 
   public static final String DEFAULT_CONF_FILE = "solrconfig.xml";
-  public static final String LATEST = "$LATEST";
 
 
   private RequestParams requestParams;
@@ -978,7 +978,7 @@ public class SolrConfig extends XmlConfigFile implements MapSerializable {
    * The version of package that should be loaded for a given package name
    * This information is stored in the params.json in the same configset
    * If params.json is absent or there is no corresponding version specified for a given package,
-   * the latest is used
+   * this returns a null and the latest is used by the caller
    */
   public String maxPackageVersion(String pkg) {
     RequestParams.ParamSet p = getRequestParams().getParams(PackageListeners.PACKAGE_VERSIONS);
@@ -986,7 +986,7 @@ public class SolrConfig extends XmlConfigFile implements MapSerializable {
       return null;
     }
     Object o = p.get().get(pkg);
-    if (o == null || LATEST.equals(o)) return null;
+    if (o == null || PackageLoader.LATEST.equals(o)) return null;
     return o.toString();
   }
 
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 83526da..3c6fd2a 100644
--- a/solr/core/src/java/org/apache/solr/core/SolrCore.java
+++ b/solr/core/src/java/org/apache/solr/core/SolrCore.java
@@ -96,6 +96,7 @@ import org.apache.solr.logging.MDCLoggingContext;
 import org.apache.solr.metrics.SolrCoreMetricManager;
 import org.apache.solr.metrics.SolrMetricProducer;
 import org.apache.solr.metrics.SolrMetricsContext;
+import org.apache.solr.pkg.CoreRefreshingClassLoader;
 import org.apache.solr.pkg.PackageListeners;
 import org.apache.solr.pkg.PackageLoader;
 import org.apache.solr.pkg.PackagePluginHolder;
@@ -617,18 +618,17 @@ public final class SolrCore implements SolrInfoBean, Closeable {
 
   @SuppressWarnings("unchecked")
   private void initListeners() {
-    final Class<SolrEventListener> clazz = SolrEventListener.class;
     final String label = "Event Listener";
     for (PluginInfo info : solrConfig.getPluginInfos(SolrEventListener.class.getName())) {
       final String event = info.attributes.get("event");
       if ("firstSearcher".equals(event)) {
         PluginHolder<SolrEventListener> obj = (PluginHolder<SolrEventListener>)PackagePluginHolder.createHolder(info, this, SolrEventListener.class, label);
         firstSearcherListeners.add(obj);
-        log.debug("[{}] Added SolrEventListener for firstSearcher: [{}]", logid, obj.get());
+        log.debug("[{}] Added SolrEventListener for firstSearcher: [{}]", logid, obj);
       } else if ("newSearcher".equals(event)) {
         PluginHolder<SolrEventListener> obj = (PluginHolder<SolrEventListener>)PackagePluginHolder.createHolder(info, this, SolrEventListener.class, label);
         newSearcherListeners.add(obj);
-        log.debug("[{}] Added SolrEventListener for newSearcher: [{}]", logid, obj.get());
+        log.debug("[{}] Added SolrEventListener for newSearcher: [{}]", logid, obj);
       }
     }
   }
@@ -715,7 +715,7 @@ public final class SolrCore implements SolrInfoBean, Closeable {
     final RecoveryStrategy.Builder rsBuilder;
     if (info != null && info.className != null) {
       log.info(info.className);
-      rsBuilder = getResourceLoader().newInstance(info.className, RecoveryStrategy.Builder.class);
+      rsBuilder = CoreRefreshingClassLoader.createInst(getResourceLoader(), info, RecoveryStrategy.Builder.class);
     } else {
       log.debug("solr.RecoveryStrategy.Builder");
       rsBuilder = new RecoveryStrategy.Builder();
@@ -730,7 +730,7 @@ public final class SolrCore implements SolrInfoBean, Closeable {
     IndexReaderFactory indexReaderFactory;
     PluginInfo info = solrConfig.getPluginInfo(IndexReaderFactory.class.getName());
     if (info != null) {
-      indexReaderFactory = resourceLoader.newInstance(info.className, IndexReaderFactory.class);
+      indexReaderFactory = CoreRefreshingClassLoader.createInst(resourceLoader, info, IndexReaderFactory.class);
       indexReaderFactory.init(info.initArgs);
     } else {
       indexReaderFactory = new StandardIndexReaderFactory();
@@ -877,6 +877,10 @@ public final class SolrCore implements SolrInfoBean, Closeable {
   public <T extends Object> T createInitInstance(PluginInfo info, Class<T> cast, String msg, String defClassName) {
     if (info == null) return null;
     T o = createInstance(info.className == null ? defClassName : info.className, cast, msg, this, getResourceLoader(info.pkgName));
+    return initPlugin(info, o);
+  }
+
+  public static  <T extends Object> T initPlugin(PluginInfo info, T o) {
     if (o instanceof PluginInfoInitialized) {
       ((PluginInfoInitialized) o).init(info);
     } else if (o instanceof NamedListInitializedPlugin) {
@@ -1393,7 +1397,7 @@ public final class SolrCore implements SolrInfoBean, Closeable {
     final PluginInfo info = solrConfig.getPluginInfo(CodecFactory.class.getName());
     final CodecFactory factory;
     if (info != null) {
-      factory = resourceLoader.newInstance(info.className, CodecFactory.class);
+      factory = CoreRefreshingClassLoader.createInst(resourceLoader,  info, CodecFactory.class);
       factory.init(info.initArgs);
     } else {
       factory = new CodecFactory() {
@@ -1431,8 +1435,8 @@ public final class SolrCore implements SolrInfoBean, Closeable {
     final StatsCache cache;
     PluginInfo pluginInfo = solrConfig.getPluginInfo(StatsCache.class.getName());
     if (pluginInfo != null && pluginInfo.className != null && pluginInfo.className.length() > 0) {
-      cache = createInitInstance(pluginInfo, StatsCache.class, null,
-          LocalStatsCache.class.getName());
+      cache = CoreRefreshingClassLoader.createInst(resourceLoader, pluginInfo, StatsCache.class);
+      initPlugin(pluginInfo ,cache);
       if (log.isDebugEnabled()) {
         log.debug("Using statsCache impl: {}", cache.getClass().getName());
       }
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 3ab1ba1..6eb6944 100644
--- a/solr/core/src/java/org/apache/solr/core/SolrResourceLoader.java
+++ b/solr/core/src/java/org/apache/solr/core/SolrResourceLoader.java
@@ -35,6 +35,8 @@ import java.util.concurrent.ConcurrentHashMap;
 import java.util.regex.Matcher;
 import java.util.regex.Pattern;
 import java.util.stream.Collectors;
+
+import org.apache.logging.log4j.core.Core;
 import org.apache.lucene.analysis.WordlistLoader;
 import org.apache.lucene.analysis.util.*;
 import org.apache.lucene.codecs.Codec;
@@ -81,6 +83,7 @@ public class SolrResourceLoader implements ResourceLoader, Closeable {
    * This could be null if the core is not yet initialized
    */
   SolrCore core;
+  CoreContainer coreContainer;
 
   private final List<SolrCoreAware> waitingForCore = Collections.synchronizedList(new ArrayList<SolrCoreAware>());
   private final List<SolrInfoBean> infoMBeans = Collections.synchronizedList(new ArrayList<SolrInfoBean>());
@@ -763,6 +766,9 @@ public class SolrResourceLoader implements ResourceLoader, Closeable {
   }
 
 
+  public CoreContainer getCoreContainer(){
+    return coreContainer;
+  }
   public static void persistConfLocally(SolrResourceLoader loader, String resourceName, byte[] content) {
     // Persist locally
     File confFile = new File(loader.getConfigDir(), resourceName);
diff --git a/solr/core/src/java/org/apache/solr/packagemanager/PackageManager.java b/solr/core/src/java/org/apache/solr/packagemanager/PackageManager.java
index f9b746a..854bab1 100644
--- a/solr/core/src/java/org/apache/solr/packagemanager/PackageManager.java
+++ b/solr/core/src/java/org/apache/solr/packagemanager/PackageManager.java
@@ -43,10 +43,10 @@ import org.apache.solr.common.cloud.SolrZkClient;
 import org.apache.solr.common.cloud.ZkStateReader;
 import org.apache.solr.common.util.Pair;
 import org.apache.solr.common.util.Utils;
-import org.apache.solr.core.SolrConfig;
 import org.apache.solr.packagemanager.SolrPackage.Command;
 import org.apache.solr.packagemanager.SolrPackage.Manifest;
 import org.apache.solr.packagemanager.SolrPackage.Plugin;
+import org.apache.solr.pkg.PackageLoader;
 import org.apache.solr.util.SolrCLI;
 import org.apache.zookeeper.KeeperException;
 import org.slf4j.Logger;
@@ -250,7 +250,7 @@ public class PackageManager implements Closeable {
       // Set the package version in the collection's parameters
       try {
         SolrCLI.postJsonToSolr(solrClient, PackageUtils.getCollectionParamsPath(collection),
-            "{set:{PKG_VERSIONS:{" + packageInstance.name+": '" + (pegToLatest? SolrConfig.LATEST: packageInstance.version)+"'}}}");
+            "{set:{PKG_VERSIONS:{" + packageInstance.name+": '" + (pegToLatest? PackageLoader.LATEST: packageInstance.version)+"'}}}");
       } catch (Exception ex) {
         throw new SolrException(ErrorCode.SERVER_ERROR, ex);
       }
@@ -296,7 +296,7 @@ public class PackageManager implements Closeable {
       // Set the package version in the collection's parameters
       try {
         SolrCLI.postJsonToSolr(solrClient, PackageUtils.getCollectionParamsPath(collection),
-            "{update:{PKG_VERSIONS:{'" + packageInstance.name + "' : '" + (pegToLatest? SolrConfig.LATEST: packageInstance.version) + "'}}}");
+            "{update:{PKG_VERSIONS:{'" + packageInstance.name + "' : '" + (pegToLatest? PackageLoader.LATEST: packageInstance.version) + "'}}}");
       } catch (Exception ex) {
         throw new SolrException(ErrorCode.SERVER_ERROR, ex);
       }
@@ -550,7 +550,7 @@ public class PackageManager implements Closeable {
         }
       }
     }
-    if (version == null || version.equalsIgnoreCase(PackageUtils.LATEST) || version.equalsIgnoreCase(SolrConfig.LATEST)) {
+    if (version == null || version.equalsIgnoreCase(PackageUtils.LATEST) || version.equalsIgnoreCase(PackageLoader.LATEST)) {
       return latest;
     } else return null;
   }
@@ -671,7 +671,7 @@ public class PackageManager implements Closeable {
 
   /**
    * Given a package, return a map of collections where this package is
-   * installed to the installed version (which can be {@link org.apache.solr.core.SolrConfig#LATEST})
+   * installed to the installed version (which can be {@link PackageLoader#LATEST})
    */
   public Map<String, String> getDeployedCollections(String packageName) {
     List<String> allCollections;
diff --git a/solr/core/src/java/org/apache/solr/packagemanager/RepositoryManager.java b/solr/core/src/java/org/apache/solr/packagemanager/RepositoryManager.java
index e961a37..b5c371e 100644
--- a/solr/core/src/java/org/apache/solr/packagemanager/RepositoryManager.java
+++ b/solr/core/src/java/org/apache/solr/packagemanager/RepositoryManager.java
@@ -48,11 +48,11 @@ import org.apache.solr.common.SolrException;
 import org.apache.solr.common.SolrException.ErrorCode;
 import org.apache.solr.common.cloud.SolrZkClient;
 import org.apache.solr.core.BlobRepository;
-import org.apache.solr.core.SolrConfig;
 import org.apache.solr.filestore.PackageStoreAPI;
 import org.apache.solr.packagemanager.SolrPackage.Artifact;
 import org.apache.solr.packagemanager.SolrPackage.SolrPackageRelease;
 import org.apache.solr.pkg.PackageAPI;
+import org.apache.solr.pkg.PackageLoader;
 import org.apache.solr.util.SolrCLI;
 import org.apache.zookeeper.CreateMode;
 import org.apache.zookeeper.KeeperException;
@@ -300,7 +300,7 @@ public class RepositoryManager {
 
   /**
    * Install a version of the package. Also, run verify commands in case some
-   * collection was using {@link org.apache.solr.core.SolrConfig#LATEST} version of this package and got auto-updated.
+   * collection was using {@link PackageLoader#LATEST} version of this package and got auto-updated.
    */
   public boolean install(String packageName, String version) throws SolrException {
     SolrPackageRelease pkg = getLastPackageRelease(packageName);
@@ -312,7 +312,7 @@ public class RepositoryManager {
 
     Map<String, String> collectionsDeployedIn = packageManager.getDeployedCollections(packageName);
     List<String> collectionsPeggedToLatest = collectionsDeployedIn.keySet().stream().
-        filter(collection -> collectionsDeployedIn.get(collection).equals(SolrConfig.LATEST)).collect(Collectors.toList());
+        filter(collection -> collectionsDeployedIn.get(collection).equals(PackageLoader.LATEST)).collect(Collectors.toList());
     if (!collectionsPeggedToLatest.isEmpty()) {
       PackageUtils.printGreen("Collections that will be affected (since they are configured to use $LATEST): "+collectionsPeggedToLatest);
     }
diff --git a/solr/core/src/java/org/apache/solr/pkg/CoreRefreshingClassLoader.java b/solr/core/src/java/org/apache/solr/pkg/CoreRefreshingClassLoader.java
index efad846..7b3882d 100644
--- a/solr/core/src/java/org/apache/solr/pkg/CoreRefreshingClassLoader.java
+++ b/solr/core/src/java/org/apache/solr/pkg/CoreRefreshingClassLoader.java
@@ -64,25 +64,32 @@ public class CoreRefreshingClassLoader implements PackageListeners.Listener {
   }
 
   @SuppressWarnings({"rawtypes","unchecked"})
-  public static Class loadClass(SolrCore core, PluginInfo info, Class type) {
-    return _get(core, info, version -> version.getLoader().findClass(info.cName.className, type));
+  public static Class loadClass(SolrResourceLoader srl, PluginInfo info, Class type) {
+    if(info.cName.pkg == null) return srl.findClass(info.className, type);
+    return _get(srl, info, version -> version.getLoader().findClass(info.cName.className, type));
 
   }
 
-  private static  <T> T _get(SolrCore core, PluginInfo info, Function<PackageLoader.Package.Version, T> fun){
-    PluginInfo.CName cName = info.cName;
-    PackageLoader.Package.Version latest = core.getCoreContainer().getPackageLoader().getPackage(cName.pkg)
+  private static  <T> T _get(SolrResourceLoader srl, PluginInfo info, Function<PackageLoader.Package.Version, T> fun) {
+    PluginInfo.ClassName cName = info.cName;
+    SolrCore core = srl.getCore();
+    PackageLoader.Package.Version latest = srl.getCoreContainer().getPackageLoader().getPackage(cName.pkg)
             .getLatest(core.getSolrConfig().maxPackageVersion(cName.pkg));
     T result = fun.apply(latest);
-    core.getPackageListeners().addListener(new CoreRefreshingClassLoader(core, info, latest));
+    if(srl.getCore() !=null) {
+      srl.getCore().getPackageListeners().addListener(new CoreRefreshingClassLoader(core, info, latest));
+    }
     return result;
   }
 
-  public static <T> T createInst(SolrCore core, PluginInfo info, Class<T> type) {
+  public static <T> T createInst(SolrResourceLoader srl, PluginInfo info, Class<T> type) {
     if(info.cName.pkg == null) {
-      return core.getResourceLoader().newInstance(info.cName.className== null? type.getName(): info.cName.className , type);
+        return srl.newInstance(info.cName.className == null?
+                type.getName():
+                info.cName.className ,
+                type);
     }
-    return _get(core, info, version -> version.getLoader().newInstance(info.cName.className, type));
+    return _get(srl, info, version -> version.getLoader().newInstance(info.cName.className, type));
   }
 
 }
diff --git a/solr/core/src/java/org/apache/solr/pkg/PackageLoader.java b/solr/core/src/java/org/apache/solr/pkg/PackageLoader.java
index 562f8a0..5e443e5 100644
--- a/solr/core/src/java/org/apache/solr/pkg/PackageLoader.java
+++ b/solr/core/src/java/org/apache/solr/pkg/PackageLoader.java
@@ -50,6 +50,8 @@ import static org.apache.lucene.util.IOUtils.closeWhileHandlingException;
  */
 public class PackageLoader implements Closeable {
   private static final Logger log = LoggerFactory.getLogger(MethodHandles.lookup().lookupClass());
+  public static final String LATEST = "$LATEST";
+
 
   private final CoreContainer coreContainer;
   private final Map<String, Package> packageClassLoaders = new ConcurrentHashMap<>();
diff --git a/solr/core/src/java/org/apache/solr/search/CacheConfig.java b/solr/core/src/java/org/apache/solr/search/CacheConfig.java
index 8b9a458..e47aed4 100644
--- a/solr/core/src/java/org/apache/solr/search/CacheConfig.java
+++ b/solr/core/src/java/org/apache/solr/search/CacheConfig.java
@@ -137,13 +137,9 @@ public class CacheConfig implements MapSerializable{
     SolrResourceLoader loader = solrConfig.getResourceLoader();
     config.cacheImpl = config.args.get("class");
     if(config.cacheImpl == null) config.cacheImpl = "solr.CaffeineCache";
-    config.clazz = () -> {
-      PluginInfo.CName cName = new PluginInfo.CName(config.cacheImpl);
-      if(cName.pkg == null) return loader.findClass(cName.className, SolrCache.class);
-      return CoreRefreshingClassLoader.loadClass(loader.getCore(),
-              new PluginInfo("cache", Collections.singletonMap("class", config.cacheImpl)),
-              SolrCache.class);
-    };
+    config.clazz = () -> CoreRefreshingClassLoader.loadClass(loader,
+            new PluginInfo("cache", Collections.singletonMap("class", config.cacheImpl)),
+            SolrCache.class);
     config.regenImpl = config.args.get("regenerator");
     if (config.regenImpl != null) {
       config.regenerator = loader.newInstance(config.regenImpl, CacheRegenerator.class);
diff --git a/solr/core/src/java/org/apache/solr/update/UpdateHandler.java b/solr/core/src/java/org/apache/solr/update/UpdateHandler.java
index 6a5eb18..f82effc 100644
--- a/solr/core/src/java/org/apache/solr/update/UpdateHandler.java
+++ b/solr/core/src/java/org/apache/solr/update/UpdateHandler.java
@@ -76,14 +76,14 @@ public abstract class UpdateHandler implements SolrInfoBean {
    * Call the {@link SolrCoreAware#inform(SolrCore)} on all the applicable registered listeners.
    */
   public void informEventListeners(SolrCore core) {
-    for (PluginHolder<SolrEventListener>  listener: commitCallbacks) {
-      if(listener instanceof PackagePluginHolder)continue;
+    for (PluginHolder<SolrEventListener> listener : commitCallbacks) {
+      if (listener instanceof PackagePluginHolder) continue;
       if (listener.get() instanceof SolrCoreAware) {
         ((SolrCoreAware) listener.get()).inform(core);
       }
     }
-    for (PluginHolder<SolrEventListener> listener: optimizeCallbacks) {
-      if(listener instanceof PackagePluginHolder)continue;
+    for (PluginHolder<SolrEventListener> listener : optimizeCallbacks) {
+      if (listener instanceof PackagePluginHolder) continue;
       if (listener.get() instanceof SolrCoreAware) {
         ((SolrCoreAware) listener.get()).inform(core);
       }
@@ -127,7 +127,7 @@ public abstract class UpdateHandler implements SolrInfoBean {
         ulog = new HdfsUpdateLog(((HdfsDirectoryFactory)dirFactory).getConfDir());
       } else {
         ulog = ulogPluginInfo.className == null ? new UpdateLog():
-                CoreRefreshingClassLoader.createInst(core, ulogPluginInfo, UpdateLog.class);
+                CoreRefreshingClassLoader.createInst(core.getResourceLoader(), ulogPluginInfo, UpdateLog.class);
       }
 
       if (!core.isReloaded() && !dirFactory.isPersistent()) {


[lucene] 20/42: merge errs

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

dweiss pushed a commit to branch jira/solr14155-1
in repository https://gitbox.apache.org/repos/asf/lucene.git

commit 67ebf1a1fed35247836b872877a4e04f3f11f2c1
Author: noblepaul <no...@gmail.com>
AuthorDate: Thu Jul 16 19:04:08 2020 +1000

    merge errs
---
 .../apache/solr/pkg/PackageListeningClassLoader.java  | 19 ++++++++-----------
 1 file changed, 8 insertions(+), 11 deletions(-)

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 5e8bf69..bcec38c 100644
--- a/solr/core/src/java/org/apache/solr/pkg/PackageListeningClassLoader.java
+++ b/solr/core/src/java/org/apache/solr/pkg/PackageListeningClassLoader.java
@@ -37,7 +37,6 @@ import java.util.function.Function;
  * */
 public class PackageListeningClassLoader implements SolrClassLoader , PackageListeners.Listener {
     private final CoreContainer coreContainer;
-
     private final SolrResourceLoader fallbackResourceLoader;
     private final Function<String, String> pkgVersionSupplier;
     /** package name and the versions that we are tracking
@@ -45,12 +44,6 @@ public class PackageListeningClassLoader implements SolrClassLoader , PackageLis
     private Map<String ,PackageAPI.PkgVersion> packageVersions =  new HashMap<>(1);
     private final Runnable onReload;
 
-
-    /**
-     * @param fallbackResourceLoader The {@link SolrResourceLoader} to use if no package is specified
-     * @param pkgVersionSupplier Get the version configured for a given package
-     * @param onReload The callback function that should be run if a package is updated
-     */
     public PackageListeningClassLoader(CoreContainer coreContainer,
                                        SolrResourceLoader fallbackResourceLoader,
                                        Function<String, String> pkgVersionSupplier,
@@ -59,8 +52,10 @@ public class PackageListeningClassLoader implements SolrClassLoader , PackageLis
         this.fallbackResourceLoader = fallbackResourceLoader;
         this.pkgVersionSupplier = pkgVersionSupplier;
         this.onReload = () -> {
-            //clear our current versions. When new classes are loaded from packages, fresh data can be populated
-
+            packageVersions = new HashMap<>();
+            onReload.run();
+        };
+    }
 
 
     @Override
@@ -69,7 +64,8 @@ public class PackageListeningClassLoader implements SolrClassLoader , PackageLis
         if(cName.pkg == null) {
             return fallbackResourceLoader.newInstance(cname, expectedType, subpackages);
         } else {
-            PackageLoader.Package.Version version = findPackageVersion(cName, true);            return applyResourceLoaderAware(version, version.getLoader().newInstance(cName.className, expectedType, subpackages));
+            PackageLoader.Package.Version version = findPackageVersion(cName, true);
+            return applyResourceLoaderAware(version, version.getLoader().newInstance(cName.className, expectedType, subpackages));
 
         }
     }
@@ -83,6 +79,7 @@ public class PackageListeningClassLoader implements SolrClassLoader , PackageLis
         PackageLoader.Package.Version theVersion = coreContainer.getPackageLoader().getPackage(cName.pkg).getLatest(pkgVersionSupplier.apply(cName.pkg));
         if(registerListener) {
             packageVersions.put(cName.pkg, theVersion.getPkgVersion());
+        }
         return theVersion;
     }
 
@@ -114,7 +111,6 @@ public class PackageListeningClassLoader implements SolrClassLoader , PackageLis
             return fallbackResourceLoader.newInstance(cname, expectedType, subPackages, params, args);
         } else {
             PackageLoader.Package.Version version = findPackageVersion(cName, true);
-
             return applyResourceLoaderAware(version, version.getLoader().newInstance(cName.className, expectedType, subPackages, params, args));
         }
     }
@@ -127,6 +123,7 @@ public class PackageListeningClassLoader implements SolrClassLoader , PackageLis
         } else {
             PackageLoader.Package.Version version = findPackageVersion(cName, true);
             return version.getLoader().findClass(cName.className, expectedType);
+
         }
     }
 


[lucene] 34/42: merging with trunk

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

dweiss pushed a commit to branch jira/solr14155-1
in repository https://gitbox.apache.org/repos/asf/lucene.git

commit 8c292557b38718c3524e4edda67fd82937a9fdb0
Author: noblepaul <no...@gmail.com>
AuthorDate: Tue Jan 12 17:34:42 2021 +1100

    merging with trunk
---
 .../org/apache/solr/core/SolrResourceLoader.java   | 86 +++++++++++-----------
 1 file changed, 43 insertions(+), 43 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 c02bd42..9074749 100644
--- a/solr/core/src/java/org/apache/solr/core/SolrResourceLoader.java
+++ b/solr/core/src/java/org/apache/solr/core/SolrResourceLoader.java
@@ -86,9 +86,9 @@ public class SolrResourceLoader implements ResourceLoader, Closeable, SolrClassL
 
   private static final String base = "org.apache.solr";
   private static final String[] packages = {
-          "", "analysis.", "schema.", "handler.", "handler.tagger.", "search.", "update.", "core.", "response.", "request.",
-          "update.processor.", "util.", "spelling.", "handler.component.",
-          "spelling.suggest.", "spelling.suggest.fst.", "rest.schema.analysis.", "security.", "handler.admin."
+      "", "analysis.", "schema.", "handler.", "handler.tagger.", "search.", "update.", "core.", "response.", "request.",
+      "update.processor.", "util.", "spelling.", "handler.component.",
+      "spelling.suggest.", "spelling.suggest.fst.", "rest.schema.analysis.", "security.", "handler.admin."
   };
   private static final Charset UTF_8 = StandardCharsets.UTF_8;
 
@@ -197,11 +197,11 @@ public class SolrResourceLoader implements ResourceLoader, Closeable, SolrClassL
 
     if (log.isInfoEnabled()) {
       log.info("Added {} libs to classloader, from paths: {}",
-              urls.size(), urls.stream()
-                      .map(u -> u.getPath().substring(0, u.getPath().lastIndexOf("/")))
-                      .sorted()
-                      .distinct()
-                      .collect(Collectors.toList()));
+          urls.size(), urls.stream()
+              .map(u -> u.getPath().substring(0, u.getPath().lastIndexOf("/")))
+              .sorted()
+              .distinct()
+              .collect(Collectors.toList()));
     }
   }
 
@@ -320,7 +320,7 @@ public class SolrResourceLoader implements ResourceLoader, Closeable, SolrClassL
     if (pathToCheck.startsWith(instanceDir))
       return pathToCheck;
     throw new IOException("File " + pathToCheck + " is outside resource loader dir " + instanceDir +
-            "; set -Dsolr.allow.unsafe.resourceloading=true to allow unsafe loading");
+        "; set -Dsolr.allow.unsafe.resourceloading=true to allow unsafe loading");
   }
 
   /**
@@ -423,7 +423,7 @@ public class SolrResourceLoader implements ResourceLoader, Closeable, SolrClassL
       return WordlistLoader.getLines(openResource(resource), charset);
     } catch (CharacterCodingException ex) {
       throw new SolrException(SolrException.ErrorCode.SERVER_ERROR,
-              "Error loading resource (wrong encoding?): " + resource, ex);
+          "Error loading resource (wrong encoding?): " + resource, ex);
     }
   }
 
@@ -439,7 +439,7 @@ public class SolrResourceLoader implements ResourceLoader, Closeable, SolrClassL
 
   // Using this pattern, legacy analysis components from previous Solr versions are identified and delegated to SPI loader:
   private static final Pattern legacyAnalysisPattern =
-          Pattern.compile("((\\Q" + base + ".analysis.\\E)|(\\Qsolr.\\E))([\\p{L}_$][\\p{L}\\p{N}_$]+?)(TokenFilter|Filter|Tokenizer|CharFilter)Factory");
+      Pattern.compile("((\\Q" + base + ".analysis.\\E)|(\\Qsolr.\\E))([\\p{L}_$][\\p{L}\\p{N}_$]+?)(TokenFilter|Filter|Tokenizer|CharFilter)Factory");
 
   @Override
   public <T> Class<? extends T> findClass(String cname, Class<T> expectedType) {
@@ -521,8 +521,8 @@ public class SolrResourceLoader implements ResourceLoader, Closeable, SolrClassL
         //cache the shortname vs FQN if it is loaded by the webapp classloader  and it is loaded
         // using a shortname
         if (clazz.getClassLoader() == SolrResourceLoader.class.getClassLoader() &&
-                !cname.equals(clazz.getName()) &&
-                (subpackages.length == 0 || subpackages == packages)) {
+            !cname.equals(clazz.getName()) &&
+            (subpackages.length == 0 || subpackages == packages)) {
           //store in the cache
           classNameCache.put(cname, clazz.getName());
         }
@@ -530,7 +530,7 @@ public class SolrResourceLoader implements ResourceLoader, Closeable, SolrClassL
         // print warning if class is deprecated
         if (clazz.isAnnotationPresent(Deprecated.class)) {
           DeprecationLog.log(cname,
-                  "Solr loaded a deprecated plugin/analysis class [" + cname + "]. Please consult documentation how to replace it accordingly.");
+            "Solr loaded a deprecated plugin/analysis class [" + cname + "]. Please consult documentation how to replace it accordingly.");
         }
       }
     }
@@ -596,7 +596,7 @@ public class SolrResourceLoader implements ResourceLoader, Closeable, SolrClassL
 
     } catch (Error err) {
       log.error("Loading Class {} ({}) triggered serious java error: {}", cName, clazz.getName(),
-              err.getClass().getName(), err);
+          err.getClass().getName(), err);
 
       throw err;
 
@@ -767,32 +767,32 @@ public class SolrResourceLoader implements ResourceLoader, Closeable, SolrClassL
   static {
     awareCompatibility = new HashMap<>();
     awareCompatibility.put(
-            SolrCoreAware.class, new Class<?>[]{
-                    // DO NOT ADD THINGS TO THIS LIST -- ESPECIALLY THINGS THAT CAN BE CREATED DYNAMICALLY
-                    // VIA RUNTIME APIS -- UNTILL CAREFULLY CONSIDERING THE ISSUES MENTIONED IN SOLR-8311
-                    CodecFactory.class,
-                    DirectoryFactory.class,
-                    ManagedIndexSchemaFactory.class,
-                    QueryResponseWriter.class,
-                    SearchComponent.class,
-                    ShardHandlerFactory.class,
-                    SimilarityFactory.class,
-                    SolrRequestHandler.class,
-                    UpdateRequestProcessorFactory.class
-            }
+        SolrCoreAware.class, new Class<?>[]{
+            // DO NOT ADD THINGS TO THIS LIST -- ESPECIALLY THINGS THAT CAN BE CREATED DYNAMICALLY
+            // VIA RUNTIME APIS -- UNTILL CAREFULLY CONSIDERING THE ISSUES MENTIONED IN SOLR-8311
+            CodecFactory.class,
+            DirectoryFactory.class,
+            ManagedIndexSchemaFactory.class,
+            QueryResponseWriter.class,
+            SearchComponent.class,
+            ShardHandlerFactory.class,
+            SimilarityFactory.class,
+            SolrRequestHandler.class,
+            UpdateRequestProcessorFactory.class
+        }
     );
 
     awareCompatibility.put(
-            ResourceLoaderAware.class, new Class<?>[]{
-                    // DO NOT ADD THINGS TO THIS LIST -- ESPECIALLY THINGS THAT CAN BE CREATED DYNAMICALLY
-                    // VIA RUNTIME APIS -- UNTILL CAREFULLY CONSIDERING THE ISSUES MENTIONED IN SOLR-8311
-                    // evaluate if this must go into schemaResourceLoaderComponents
-                    CharFilterFactory.class,
-                    TokenFilterFactory.class,
-                    TokenizerFactory.class,
-                    QParserPlugin.class,
-                    FieldType.class
-            }
+        ResourceLoaderAware.class, new Class<?>[]{
+            // DO NOT ADD THINGS TO THIS LIST -- ESPECIALLY THINGS THAT CAN BE CREATED DYNAMICALLY
+            // VIA RUNTIME APIS -- UNTILL CAREFULLY CONSIDERING THE ISSUES MENTIONED IN SOLR-8311
+            // evaluate if this must go into schemaResourceLoaderComponents
+            CharFilterFactory.class,
+            TokenFilterFactory.class,
+            TokenizerFactory.class,
+            QParserPlugin.class,
+            FieldType.class
+        }
     );
   }
 
@@ -801,10 +801,10 @@ public class SolrResourceLoader implements ResourceLoader, Closeable, SolrClassL
    */
   @SuppressWarnings("rawtypes")
   private static final ImmutableSet<Class> schemaResourceLoaderComponents = ImmutableSet.of(
-          CharFilterFactory.class,
-          TokenFilterFactory.class,
-          TokenizerFactory.class,
-          FieldType.class);
+      CharFilterFactory.class,
+      TokenFilterFactory.class,
+      TokenizerFactory.class,
+      FieldType.class);
 
   /**
    * Utility function to throw an exception if the class is invalid
@@ -814,7 +814,7 @@ public class SolrResourceLoader implements ResourceLoader, Closeable, SolrClassL
     Class[] valid = awareCompatibility.get(aware);
     if (valid == null) {
       throw new SolrException(SolrException.ErrorCode.SERVER_ERROR,
-              "Unknown Aware interface: " + aware);
+          "Unknown Aware interface: " + aware);
     }
     for (Class v : valid) {
       if (v.isInstance(obj)) {


[lucene] 40/42: unused imports

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

dweiss pushed a commit to branch jira/solr14155-1
in repository https://gitbox.apache.org/repos/asf/lucene.git

commit 693cedd14087660251ded93f042b759c79e860cf
Author: noblepaul <no...@gmail.com>
AuthorDate: Wed Jan 13 22:06:02 2021 +1100

    unused imports
---
 .../org/apache/solr/handler/SolrConfigHandler.java     |  1 -
 .../apache/solr/handler/component/SearchHandler.java   | 18 +++++++-----------
 .../java/org/apache/solr/pkg/PackagePluginHolder.java  |  1 -
 3 files changed, 7 insertions(+), 13 deletions(-)

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 44c037e..db8ec17 100644
--- a/solr/core/src/java/org/apache/solr/handler/SolrConfigHandler.java
+++ b/solr/core/src/java/org/apache/solr/handler/SolrConfigHandler.java
@@ -72,7 +72,6 @@ import org.apache.solr.core.SolrCore;
 import org.apache.solr.core.SolrResourceLoader;
 import org.apache.solr.pkg.PackageAPI;
 import org.apache.solr.pkg.PackageListeners;
-import org.apache.solr.pkg.PackageLoader;
 import org.apache.solr.request.LocalSolrQueryRequest;
 import org.apache.solr.request.SolrQueryRequest;
 import org.apache.solr.request.SolrRequestHandler;
diff --git a/solr/core/src/java/org/apache/solr/handler/component/SearchHandler.java b/solr/core/src/java/org/apache/solr/handler/component/SearchHandler.java
index fc09e04..c0c536f 100644
--- a/solr/core/src/java/org/apache/solr/handler/component/SearchHandler.java
+++ b/solr/core/src/java/org/apache/solr/handler/component/SearchHandler.java
@@ -16,18 +16,11 @@
  */
 package org.apache.solr.handler.component;
 
-import java.io.PrintWriter;
-import java.io.StringWriter;
-import java.lang.invoke.MethodHandles;
-import java.util.*;
-import java.util.concurrent.atomic.AtomicLong;
-
 import org.apache.commons.lang3.StringUtils;
 import org.apache.lucene.index.ExitableDirectoryReader;
 import org.apache.lucene.search.TotalHits;
 import org.apache.solr.client.solrj.SolrServerException;
 import org.apache.solr.cloud.ZkController;
-import org.apache.solr.common.MapWriter;
 import org.apache.solr.common.SolrDocumentList;
 import org.apache.solr.common.SolrException;
 import org.apache.solr.common.params.CommonParams;
@@ -59,10 +52,13 @@ import org.apache.solr.util.plugin.SolrCoreAware;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
-import static org.apache.solr.common.params.CommonParams.DISTRIB;
-import static org.apache.solr.common.params.CommonParams.FAILURE;
-import static org.apache.solr.common.params.CommonParams.PATH;
-import static org.apache.solr.common.params.CommonParams.STATUS;
+import java.io.PrintWriter;
+import java.io.StringWriter;
+import java.lang.invoke.MethodHandles;
+import java.util.*;
+import java.util.concurrent.atomic.AtomicLong;
+
+import static org.apache.solr.common.params.CommonParams.*;
 
 
 /**
diff --git a/solr/core/src/java/org/apache/solr/pkg/PackagePluginHolder.java b/solr/core/src/java/org/apache/solr/pkg/PackagePluginHolder.java
index df97662..79626de 100644
--- a/solr/core/src/java/org/apache/solr/pkg/PackagePluginHolder.java
+++ b/solr/core/src/java/org/apache/solr/pkg/PackagePluginHolder.java
@@ -20,7 +20,6 @@ package org.apache.solr.pkg;
 import java.io.IOException;
 import java.lang.invoke.MethodHandles;
 import java.util.Collections;
-import java.util.List;
 import java.util.Map;
 
 import org.apache.lucene.util.ResourceLoaderAware;


[lucene] 03/42: precommit errs

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

dweiss pushed a commit to branch jira/solr14155-1
in repository https://gitbox.apache.org/repos/asf/lucene.git

commit fc3599b15ad1545a8801c12ed13b2c8480f99fb3
Author: noblepaul <no...@gmail.com>
AuthorDate: Sun Jul 12 22:04:22 2020 +1000

    precommit errs
---
 solr/core/src/java/org/apache/solr/core/SolrResourceLoader.java | 1 -
 1 file changed, 1 deletion(-)

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 6eb6944..354a8b0 100644
--- a/solr/core/src/java/org/apache/solr/core/SolrResourceLoader.java
+++ b/solr/core/src/java/org/apache/solr/core/SolrResourceLoader.java
@@ -36,7 +36,6 @@ import java.util.regex.Matcher;
 import java.util.regex.Pattern;
 import java.util.stream.Collectors;
 
-import org.apache.logging.log4j.core.Core;
 import org.apache.lucene.analysis.WordlistLoader;
 import org.apache.lucene.analysis.util.*;
 import org.apache.lucene.codecs.Codec;


[lucene] 16/42: merging w/ master

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

dweiss pushed a commit to branch jira/solr14155-1
in repository https://gitbox.apache.org/repos/asf/lucene.git

commit 871acb6f791bf78f1772a020bd41e015775f8489
Author: noblepaul <no...@gmail.com>
AuthorDate: Thu Jul 16 16:27:02 2020 +1000

    merging w/ master
---
 .../src/java/org/apache/solr/core/ConfigSet.java   | 26 ++++++++++++++++---
 .../java/org/apache/solr/core/CoreContainer.java   |  3 ++-
 .../src/java/org/apache/solr/core/PluginInfo.java  |  6 +++++
 .../java/org/apache/solr/core/SolrClassLoader.java |  4 +--
 .../src/java/org/apache/solr/core/SolrCore.java    | 30 ++++++++++++----------
 .../org/apache/solr/core/SolrResourceLoader.java   |  5 ++--
 .../java/org/apache/solr/pkg/PackageListeners.java | 17 +++++-------
 .../solr/pkg/PackageListeningClassLoader.java      |  8 +++---
 .../org/apache/solr/pkg/PackagePluginHolder.java   |  2 +-
 9 files changed, 62 insertions(+), 39 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 d6cb31d..8112477 100644
--- a/solr/core/src/java/org/apache/solr/core/ConfigSet.java
+++ b/solr/core/src/java/org/apache/solr/core/ConfigSet.java
@@ -19,6 +19,7 @@ package org.apache.solr.core;
 import org.apache.solr.common.util.NamedList;
 import org.apache.solr.schema.IndexSchema;
 
+
 /**
  * Stores a core's configuration in the form of a SolrConfig and IndexSchema.
  * Immutable.
@@ -30,7 +31,7 @@ public class ConfigSet {
 
   private final SolrConfig solrconfig;
 
-  private final IndexSchema indexSchema;
+  private final SchemaSupplier schemaSupplier;
 
   @SuppressWarnings({"rawtypes"})
   private final NamedList properties;
@@ -38,11 +39,11 @@ public class ConfigSet {
   private final boolean trusted;
 
   @SuppressWarnings({"rawtypes"})
-  public ConfigSet(String name, SolrConfig solrConfig, IndexSchema indexSchema,
+  public ConfigSet(String name, SolrConfig solrConfig, SchemaSupplier indexSchemaSupplier,
       NamedList properties, boolean trusted) {
     this.name = name;
     this.solrconfig = solrConfig;
-    this.indexSchema = indexSchema;
+    this.schemaSupplier = indexSchemaSupplier;
     this.properties = properties;
     this.trusted = trusted;
   }
@@ -55,8 +56,15 @@ public class ConfigSet {
     return solrconfig;
   }
 
+  /**
+   *
+   * @param forceFetch get a fresh value and not cached value
+   */
+  public IndexSchema getIndexSchema(boolean forceFetch) {
+    return schemaSupplier.get(forceFetch);
+  }
   public IndexSchema getIndexSchema() {
-    return indexSchema;
+    return schemaSupplier.get(false);
   }
 
   @SuppressWarnings({"rawtypes"})
@@ -67,4 +75,14 @@ public class ConfigSet {
   public boolean isTrusted() {
     return trusted;
   }
+
+  /**Provide a Schema object on demand
+   * We want IndexSchema Objects to be lazily instantiated because when a configset is
+   * created the {@link SolrResourceLoader} associated with it is not associated with a core
+   * So, we may not be able to update the core if we the schema classes are updated
+   * */
+  interface SchemaSupplier {
+     IndexSchema get(boolean forceFetch);
+
+  }
 }
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 c01e021..4e9078d 100644
--- a/solr/core/src/java/org/apache/solr/core/CoreContainer.java
+++ b/solr/core/src/java/org/apache/solr/core/CoreContainer.java
@@ -1603,7 +1603,8 @@ public class CoreContainer {
    * and processed by the old core
    *
    * @param name the name of the SolrCore to reload
-   * @param coreId The unique Id of the core
+   * @param coreId The unique Id of the core {@link SolrCore#uniqueId}. If this is null, it's reloaded anyway. If the current
+   *               core has a different id, this is a no-op
    */
   public void reload(String name, UUID coreId) {
     if (isShutDown) {
diff --git a/solr/core/src/java/org/apache/solr/core/PluginInfo.java b/solr/core/src/java/org/apache/solr/core/PluginInfo.java
index 3a0de71..ae13fca 100644
--- a/solr/core/src/java/org/apache/solr/core/PluginInfo.java
+++ b/solr/core/src/java/org/apache/solr/core/PluginInfo.java
@@ -73,8 +73,10 @@ public class PluginInfo implements MapSerializable {
   public static class ClassName {
     public final String pkg;
     public final String className;
+    public final String original;
 
     public ClassName(String name) {
+      this.original = name;
       if (name == null) {
         pkg = null;
         className = null;
@@ -90,6 +92,10 @@ public class PluginInfo implements MapSerializable {
       }
     }
 
+    @Override
+    public String toString() {
+      return original;
+    }
   }
 
 
diff --git a/solr/core/src/java/org/apache/solr/core/SolrClassLoader.java b/solr/core/src/java/org/apache/solr/core/SolrClassLoader.java
index 2e04027..7973b63 100644
--- a/solr/core/src/java/org/apache/solr/core/SolrClassLoader.java
+++ b/solr/core/src/java/org/apache/solr/core/SolrClassLoader.java
@@ -17,9 +17,7 @@
 package org.apache.solr.core;
 
 
-/**
- * A generic interface to load plugin classes
- */
+/** A generic interface to load plugin classes */
 public interface SolrClassLoader {
 
     <T> T newInstance(String cname, Class<T> expectedType, String... subpackages);
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 77cb091..714af89 100644
--- a/solr/core/src/java/org/apache/solr/core/SolrCore.java
+++ b/solr/core/src/java/org/apache/solr/core/SolrCore.java
@@ -112,10 +112,7 @@ import org.apache.solr.logging.MDCLoggingContext;
 import org.apache.solr.metrics.SolrCoreMetricManager;
 import org.apache.solr.metrics.SolrMetricProducer;
 import org.apache.solr.metrics.SolrMetricsContext;
-import org.apache.solr.pkg.PackageListeningClassLoader;
-import org.apache.solr.pkg.PackageListeners;
-import org.apache.solr.pkg.PackageLoader;
-import org.apache.solr.pkg.PackagePluginHolder;
+import org.apache.solr.pkg.*;
 import org.apache.solr.request.SolrQueryRequest;
 import org.apache.solr.request.SolrRequestHandler;
 import org.apache.solr.response.BinaryResponseWriter;
@@ -229,9 +226,11 @@ public final class SolrCore implements SolrInfoBean, Closeable {
   private final Codec codec;
   private final MemClassLoader memClassLoader;
 
-  private final CircuitBreakerManager circuitBreakerManager;
   //a single package listener for all cores that require core reloading
-  private final PackageListeningClassLoader coreReloadingPackageListener;
+  private final PackageListeningClassLoader coreReloadingClassLoader;
+  //singleton listener for all packages used in schema
+  private final PackageListeningClassLoader schemaPluginsLoader;
+  private final CircuitBreakerManager circuitBreakerManager;
   private final List<Runnable> confListeners = new CopyOnWriteArrayList<>();
 
   private final ReentrantLock ruleExpiryLock;
@@ -278,9 +277,6 @@ public final class SolrCore implements SolrInfoBean, Closeable {
     return restManager;
   }
 
-  public PackageListeningClassLoader getCoreReloadingPackageListener(){
-    return coreReloadingPackageListener;
-  }
   public PackageListeners getPackageListeners() {
     return packageListeners;
   }
@@ -738,7 +734,7 @@ public final class SolrCore implements SolrInfoBean, Closeable {
     final RecoveryStrategy.Builder rsBuilder;
     if (info != null && info.className != null) {
       log.info(info.className);
-      rsBuilder = getResourceLoader().newInstance( info, RecoveryStrategy.Builder.class, true);
+      rsBuilder = getResourceLoader().newInstance(info, RecoveryStrategy.Builder.class, true);
     } else {
       log.debug("solr.RecoveryStrategy.Builder");
       rsBuilder = new RecoveryStrategy.Builder();
@@ -948,20 +944,24 @@ public final class SolrCore implements SolrInfoBean, Closeable {
     final CountDownLatch latch = new CountDownLatch(1);
 
     try {
-      IndexSchema schema = configSet.getIndexSchema();
 
       CoreDescriptor cd = Objects.requireNonNull(coreDescriptor, "coreDescriptor cannot be null");
       coreContainer.solrCores.addCoreDescriptor(cd);
 
       setName(name);
-
       this.solrConfig = configSet.getSolrConfig();
       this.resourceLoader = configSet.getSolrConfig().getResourceLoader();
       this.resourceLoader.core = this;
-      this.coreReloadingPackageListener = new PackageListeningClassLoader(coreContainer,
+      schemaPluginsLoader = new PackageListeningClassLoader(coreContainer, resourceLoader,
+              solrConfig::maxPackageVersion,
+              () -> setLatestSchema(configSet.getIndexSchema(true)));
+      this.packageListeners.addListener(schemaPluginsLoader);
+      IndexSchema schema = configSet.getIndexSchema();
+      this.coreReloadingClassLoader = new PackageListeningClassLoader(coreContainer,
               resourceLoader,
               solrConfig::maxPackageVersion,
               () -> coreContainer.reload(name, uniqueId));
+      this.packageListeners.addListener(coreReloadingClassLoader);
       this.configSetProperties = configSet.getProperties();
       // Initialize the metrics manager
       this.coreMetricManager = initCoreMetricManager(solrConfig);
@@ -3255,6 +3255,9 @@ public final class SolrCore implements SolrInfoBean, Closeable {
     return blobRef;
   }
 
+  public PackageListeningClassLoader getCoreReloadingClassLoader(){
+    return coreReloadingClassLoader;
+  }
   /**
    * Run an arbitrary task in it's own thread. This is an expert option and is
    * a method you should use with great care. It would be bad to run something that never stopped
@@ -3276,5 +3279,4 @@ public final class SolrCore implements SolrInfoBean, Closeable {
   public void runAsync(Runnable r) {
     coreAsyncTaskExecutor.submit(r);
   }
-
 }
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 83b905f..082fe2a 100644
--- a/solr/core/src/java/org/apache/solr/core/SolrResourceLoader.java
+++ b/solr/core/src/java/org/apache/solr/core/SolrResourceLoader.java
@@ -84,7 +84,6 @@ public class SolrResourceLoader implements ResourceLoader, Closeable, SolrClassL
    * This could be null if the core is not yet initialized
    */
   SolrCore core;
-  CoreContainer coreContainer;
 
   private final List<SolrCoreAware> waitingForCore = Collections.synchronizedList(new ArrayList<SolrCoreAware>());
   private final List<SolrInfoBean> infoMBeans = Collections.synchronizedList(new ArrayList<SolrInfoBean>());
@@ -784,9 +783,9 @@ public class SolrResourceLoader implements ResourceLoader, Closeable, SolrClassL
       if (getCore() == null) {
         throw new SolrException(SolrException.ErrorCode.SERVER_ERROR, "SolrCore not set");
       }
-      return fun.apply(getCore().getCoreReloadingPackageListener().findPackageVersion(cName, true));
+      return fun.apply(getCore().getCoreReloadingClassLoader().findPackageVersion(cName, true));
     } else {
-      return fun.apply(getCore().getCoreReloadingPackageListener().findPackageVersion(cName, false));
+      return fun.apply(getCore().getCoreReloadingClassLoader().findPackageVersion(cName, false));
     }
   }
 
diff --git a/solr/core/src/java/org/apache/solr/pkg/PackageListeners.java b/solr/core/src/java/org/apache/solr/pkg/PackageListeners.java
index 2d3a5be..1895b6d 100644
--- a/solr/core/src/java/org/apache/solr/pkg/PackageListeners.java
+++ b/solr/core/src/java/org/apache/solr/pkg/PackageListeners.java
@@ -22,6 +22,7 @@ import java.lang.ref.Reference;
 import java.lang.ref.SoftReference;
 import java.util.*;
 import java.util.concurrent.CopyOnWriteArrayList;
+import java.util.function.Consumer;
 
 import org.apache.solr.common.MapWriter;
 import org.apache.solr.core.PluginInfo;
@@ -34,7 +35,7 @@ public class PackageListeners {
   private static final Logger log = LoggerFactory.getLogger(MethodHandles.lookup().lookupClass());
 
   public static final String PACKAGE_VERSIONS = "PKG_VERSIONS";
-  private SolrCore core;
+  private final SolrCore core;
 
   public PackageListeners(SolrCore core) {
     this.core = core;
@@ -70,7 +71,7 @@ public class PackageListeners {
         invokeListeners(pkgInfo, ctx);
       }
     } finally {
-      ctx.runLaterTasks();
+      ctx.runLaterTasks(core::runAsync);
       MDCLoggingContext.clear();
     }
   }
@@ -126,15 +127,11 @@ public class PackageListeners {
         runLater.put(name, runnable);
       }
 
-      private void runLaterTasks() {
+      private void runLaterTasks(Consumer<Runnable> runnableExecutor) {
         if (runLater == null) return;
-        new Thread(() -> runLater.forEach((s, runnable) -> {
-          try {
-            runnable.run();
-          } catch (Exception e) {
-            log.error("Unknown error", e);
-          }
-        })).start();
+        for (Runnable r : runLater.values()) {
+          runnableExecutor.accept(r);
+        }
       }
     }
 
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 66b4c6f..6b66d84 100644
--- a/solr/core/src/java/org/apache/solr/pkg/PackageListeningClassLoader.java
+++ b/solr/core/src/java/org/apache/solr/pkg/PackageListeningClassLoader.java
@@ -32,8 +32,8 @@ import java.util.Objects;
 import java.util.function.Function;
 /**
  * A {@link SolrClassLoader} that is designed to listen to a set of packages.
- * This class would register a listener each package that is loaded through this
- * if any of those packages are updated , the onReload runnable is executed
+ * This class registers a listener for each package that is loaded through this.
+ * If any of those packages are updated, the onReload runnable is run
  * */
 public class PackageListeningClassLoader implements SolrClassLoader , PackageListeners.Listener {
     private final CoreContainer coreContainer;
@@ -72,6 +72,7 @@ public class PackageListeningClassLoader implements SolrClassLoader , PackageLis
         } else {
             PackageLoader.Package.Version version = findPackageVersion(cName, true);
             return applyResourceLoaderAware(version, version.getLoader().newInstance(cName.className, expectedType, subpackages));
+
         }
     }
 
@@ -127,6 +128,7 @@ public class PackageListeningClassLoader implements SolrClassLoader , PackageLis
         } else {
             PackageLoader.Package.Version version = findPackageVersion(cName, true);
             return version.getLoader().findClass(cName.className, expectedType);
+
         }
     }
 
@@ -158,4 +160,4 @@ public class PackageListeningClassLoader implements SolrClassLoader , PackageLis
         }
         ctx.runLater(null, onReload);
     }
-}
\ No newline at end of file
+}
diff --git a/solr/core/src/java/org/apache/solr/pkg/PackagePluginHolder.java b/solr/core/src/java/org/apache/solr/pkg/PackagePluginHolder.java
index d64ef58..0c6fd80 100644
--- a/solr/core/src/java/org/apache/solr/pkg/PackagePluginHolder.java
+++ b/solr/core/src/java/org/apache/solr/pkg/PackagePluginHolder.java
@@ -69,7 +69,7 @@ public class PackagePluginHolder<T> extends PluginBag.PluginHolder<T> {
 
       @Override
       public MapWriter getPackageVersion(PluginInfo.ClassName cName) {
-        return pkgVersion;
+        return pkgVersion == null ? null : ew -> pkgVersion.writeMap(ew);
       }
 
     });


[lucene] 07/42: cleanup

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

dweiss pushed a commit to branch jira/solr14155-1
in repository https://gitbox.apache.org/repos/asf/lucene.git

commit 3f764ca9af0fd1b98c059db5b13467517b2d4848
Author: noble <no...@apache.org>
AuthorDate: Mon Jul 13 11:58:19 2020 +1000

    cleanup
---
 solr/core/src/java/org/apache/solr/core/PluginBag.java    |  4 ++++
 solr/core/src/java/org/apache/solr/core/SolrCore.java     |  4 ++--
 .../src/java/org/apache/solr/pkg/PackagePluginHolder.java | 15 ++++++++++-----
 3 files changed, 16 insertions(+), 7 deletions(-)

diff --git a/solr/core/src/java/org/apache/solr/core/PluginBag.java b/solr/core/src/java/org/apache/solr/core/PluginBag.java
index 37a3450..d2442a1 100644
--- a/solr/core/src/java/org/apache/solr/core/PluginBag.java
+++ b/solr/core/src/java/org/apache/solr/core/PluginBag.java
@@ -417,6 +417,10 @@ public class PluginBag<T> implements AutoCloseable {
     public PluginInfo getPluginInfo() {
       return pluginInfo;
     }
+
+    public String toString() {
+      return String.valueOf(inst);
+    }
   }
 
   /**
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 cce19dd..2964cb6 100644
--- a/solr/core/src/java/org/apache/solr/core/SolrCore.java
+++ b/solr/core/src/java/org/apache/solr/core/SolrCore.java
@@ -635,11 +635,11 @@ public final class SolrCore implements SolrInfoBean, Closeable {
     for (PluginInfo info : solrConfig.getPluginInfos(SolrEventListener.class.getName())) {
       final String event = info.attributes.get("event");
       if ("firstSearcher".equals(event)) {
-        PluginHolder<SolrEventListener> obj = (PluginHolder<SolrEventListener>)PackagePluginHolder.createHolder(info, this, SolrEventListener.class, label);
+        PluginHolder<SolrEventListener> obj = PackagePluginHolder.createHolder(info, this, SolrEventListener.class, label);
         firstSearcherListeners.add(obj);
         log.debug("[{}] Added SolrEventListener for firstSearcher: [{}]", logid, obj);
       } else if ("newSearcher".equals(event)) {
-        PluginHolder<SolrEventListener> obj = (PluginHolder<SolrEventListener>)PackagePluginHolder.createHolder(info, this, SolrEventListener.class, label);
+        PluginHolder<SolrEventListener> obj = PackagePluginHolder.createHolder(info, this, SolrEventListener.class, label);
         newSearcherListeners.add(obj);
         log.debug("[{}] Added SolrEventListener for newSearcher: [{}]", logid, obj);
       }
diff --git a/solr/core/src/java/org/apache/solr/pkg/PackagePluginHolder.java b/solr/core/src/java/org/apache/solr/pkg/PackagePluginHolder.java
index 9df1ec3..cb34b81 100644
--- a/solr/core/src/java/org/apache/solr/pkg/PackagePluginHolder.java
+++ b/solr/core/src/java/org/apache/solr/pkg/PackagePluginHolder.java
@@ -19,9 +19,15 @@ package org.apache.solr.pkg;
 
 import java.io.IOException;
 import java.lang.invoke.MethodHandles;
+
 import org.apache.lucene.analysis.util.ResourceLoaderAware;
 import org.apache.solr.common.SolrException;
-import org.apache.solr.core.*;
+import org.apache.solr.core.PluginBag;
+import org.apache.solr.core.PluginInfo;
+import org.apache.solr.core.SolrConfig;
+import org.apache.solr.core.SolrCore;
+import org.apache.solr.core.SolrInfoBean;
+import org.apache.solr.core.SolrResourceLoader;
 import org.apache.solr.util.plugin.SolrCoreAware;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
@@ -68,12 +74,11 @@ public class PackagePluginHolder<T> extends PluginBag.PluginHolder<T> {
     });
   }
 
-  @SuppressWarnings({"rawtypes", "unchecked"})
-  public static PluginBag.PluginHolder createHolder(PluginInfo info, SolrCore core, Class type, String msg) {
+  public static <T> PluginBag.PluginHolder<T> createHolder(PluginInfo info, SolrCore core, Class<T> type, String msg) {
     if(info.cName.pkg == null) {
-      return new PluginBag.PluginHolder(info, core.createInitInstance(info, type,msg, null));
+      return new PluginBag.PluginHolder<T>(info, core.createInitInstance(info, type,msg, null));
     } else {
-      return new PackagePluginHolder(info, core, SolrConfig.classVsSolrPluginInfo.get(type.getName()));
+      return new PackagePluginHolder<T>(info, core, SolrConfig.classVsSolrPluginInfo.get(type.getName()));
     }
   }
 


[lucene] 21/42: javadocs

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

dweiss pushed a commit to branch jira/solr14155-1
in repository https://gitbox.apache.org/repos/asf/lucene.git

commit a1be6c6c340420d9dd340d0fb1f7a56984805305
Author: noblepaul <no...@gmail.com>
AuthorDate: Thu Jul 16 19:05:16 2020 +1000

    javadocs
---
 .../src/java/org/apache/solr/pkg/PackageListeningClassLoader.java    | 5 +++++
 1 file changed, 5 insertions(+)

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 bcec38c..8dae3f0 100644
--- a/solr/core/src/java/org/apache/solr/pkg/PackageListeningClassLoader.java
+++ b/solr/core/src/java/org/apache/solr/pkg/PackageListeningClassLoader.java
@@ -44,6 +44,11 @@ public class PackageListeningClassLoader implements SolrClassLoader , PackageLis
     private Map<String ,PackageAPI.PkgVersion> packageVersions =  new HashMap<>(1);
     private final Runnable onReload;
 
+    /**
+     * @param fallbackResourceLoader The {@link SolrResourceLoader} to use if no package is specified
+     * @param pkgVersionSupplier Get the version configured for a given package
+     * @param onReload The callback function that should be run if a package is updated
+     */
     public PackageListeningClassLoader(CoreContainer coreContainer,
                                        SolrResourceLoader fallbackResourceLoader,
                                        Function<String, String> pkgVersionSupplier,