You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@lucene.apache.org by ab...@apache.org on 2017/04/04 16:27:27 UTC

[14/14] lucene-solr:jira/solr-9959: Merge branch 'master' into jira/solr-9959

Merge branch 'master' into jira/solr-9959


Project: http://git-wip-us.apache.org/repos/asf/lucene-solr/repo
Commit: http://git-wip-us.apache.org/repos/asf/lucene-solr/commit/b9b707cc
Tree: http://git-wip-us.apache.org/repos/asf/lucene-solr/tree/b9b707cc
Diff: http://git-wip-us.apache.org/repos/asf/lucene-solr/diff/b9b707cc

Branch: refs/heads/jira/solr-9959
Commit: b9b707cce66c27953bea03b35ba61795c8252d35
Parents: 4249c8a 05749d0
Author: Andrzej Bialecki <ab...@apache.org>
Authored: Tue Apr 4 18:18:06 2017 +0200
Committer: Andrzej Bialecki <ab...@apache.org>
Committed: Tue Apr 4 18:18:06 2017 +0200

----------------------------------------------------------------------
 dev-tools/idea/.idea/workspace.xml              |   2 +-
 dev-tools/maven/pom.xml.template                |   1 -
 lucene/CHANGES.txt                              |  10 +-
 .../lucene50/Lucene50SegmentInfoFormat.java     |   2 +-
 .../lucene/codecs/lucene62/Lucene62Codec.java   |   2 +-
 .../apache/lucene/index/FixBrokenOffsets.java   |   3 +
 .../lucene50/Lucene50RWSegmentInfoFormat.java   |   2 +-
 .../lucene50/TestLucene50SegmentInfoFormat.java |  10 +
 .../lucene53/TestLucene53NormsFormat.java       |   6 +
 .../lucene/codecs/lucene62/Lucene62RWCodec.java |  12 +
 .../lucene62/Lucene62RWSegmentInfoFormat.java   | 193 ++++++++
 .../lucene62/TestLucene62SegmentInfoFormat.java |  48 ++
 .../index/TestBackwardsCompatibility.java       |  69 ++-
 .../lucene/index/TestFixBrokenOffsets.java      |  10 +-
 .../lucene/index/TestIndexWriterOnOldIndex.java |   6 +-
 .../simpletext/SimpleTextSegmentInfoFormat.java |  29 +-
 lucene/common-build.xml                         |   3 -
 .../lucene62/Lucene62SegmentInfoFormat.java     | 152 +------
 .../lucene/codecs/lucene70/Lucene70Codec.java   |   3 +-
 .../lucene70/Lucene70SegmentInfoFormat.java     | 439 +++++++++++++++++++
 .../org/apache/lucene/index/CheckIndex.java     |   2 +-
 .../lucene/index/DocumentsWriterPerThread.java  |   2 +-
 .../apache/lucene/index/FilterCodecReader.java  |   5 +-
 .../apache/lucene/index/FilterLeafReader.java   |   5 +-
 .../org/apache/lucene/index/IndexWriter.java    |  54 ++-
 .../org/apache/lucene/index/LeafMetaData.java   |  74 ++++
 .../org/apache/lucene/index/LeafReader.java     |   7 +-
 .../apache/lucene/index/MergeReaderWrapper.java |   5 +-
 .../org/apache/lucene/index/MergeState.java     |   2 +-
 .../apache/lucene/index/ParallelLeafReader.java |  36 +-
 .../apache/lucene/index/ReadersAndUpdates.java  |   4 +-
 .../org/apache/lucene/index/SegmentInfo.java    |  19 +-
 .../org/apache/lucene/index/SegmentInfos.java   |  77 ++--
 .../org/apache/lucene/index/SegmentMerger.java  |  14 +
 .../org/apache/lucene/index/SegmentReader.java  |  10 +-
 .../lucene/index/SlowCodecReaderWrapper.java    |   5 +-
 .../lucene/index/StandardDirectoryReader.java   |   4 +-
 .../EarlyTerminatingSortingCollector.java       |   2 +-
 .../org/apache/lucene/search/LRUQueryCache.java |  32 +-
 .../lucene62/TestLucene62SegmentInfoFormat.java |  39 --
 .../lucene70/TestLucene70SegmentInfoFormat.java |  35 ++
 .../org/apache/lucene/index/TestCodecs.java     |   4 +-
 .../index/TestDemoParallelLeafReader.java       |   3 +-
 .../test/org/apache/lucene/index/TestDoc.java   |   8 +-
 .../apache/lucene/index/TestDocumentWriter.java |   9 +-
 .../apache/lucene/index/TestIndexSorting.java   |   2 +-
 .../apache/lucene/index/TestIndexWriter.java    |   2 +-
 .../index/TestIndexWriterThreadsToSegments.java |   3 +-
 .../index/TestOneMergeWrappingMergePolicy.java  |   1 +
 .../apache/lucene/index/TestSegmentInfos.java   |  22 +-
 .../apache/lucene/index/TestSegmentMerger.java  |   7 +-
 .../apache/lucene/index/TestSegmentReader.java  |   3 +-
 .../lucene/index/TestSegmentTermDocs.java       |   7 +-
 .../apache/lucene/search/TestLRUQueryCache.java |  76 ++++
 .../search/highlight/TermVectorLeafReader.java  |   7 +-
 .../apache/lucene/index/memory/MemoryIndex.java |   6 +-
 .../org/apache/lucene/index/IndexSplitter.java  |   4 +-
 .../lucene/replicator/nrt/ReplicaNode.java      |   2 +-
 .../index/BaseCompoundFormatTestCase.java       |   3 +-
 .../index/BaseFieldInfoFormatTestCase.java      |   3 +-
 .../index/BaseIndexFileFormatTestCase.java      |  28 +-
 .../lucene/index/BaseNormsFormatTestCase.java   |   6 +-
 .../index/BaseSegmentInfoFormatTestCase.java    |  54 ++-
 .../lucene/index/RandomPostingsTester.java      |   2 +-
 .../org/apache/lucene/search/QueryUtils.java    |   6 +-
 solr/CHANGES.txt                                |  20 +-
 .../solr/ltr/feature/OriginalScoreFeature.java  |   2 +-
 .../ltr/feature/TestOriginalScoreFeature.java   | 120 ++---
 .../org/apache/solr/core/CoreContainer.java     |  25 +-
 .../java/org/apache/solr/core/NodeConfig.java   |  25 +-
 .../java/org/apache/solr/core/SolrCores.java    | 166 ++++---
 .../org/apache/solr/core/SolrXmlConfig.java     |   5 +
 .../solr/core/TransientSolrCoreCache.java       | 127 ++++++
 .../core/TransientSolrCoreCacheDefault.java     | 198 +++++++++
 .../core/TransientSolrCoreCacheFactory.java     |  85 ++++
 .../TransientSolrCoreCacheFactoryDefault.java   |  31 ++
 .../apache/solr/handler/AnalyzeEvaluator.java   |  17 +-
 .../solr/handler/admin/MetricsHandler.java      |   3 +-
 .../solr/index/SlowCompositeReaderWrapper.java  |  19 +-
 .../apache/solr/search/grouping/Command.java    |   2 +-
 .../solr/search/grouping/CommandHandler.java    |   4 +-
 .../distributed/command/QueryCommand.java       |   2 +-
 .../command/SearchGroupsFieldCommand.java       |   2 +-
 .../command/TopGroupsFieldCommand.java          |   2 +-
 .../src/java/org/apache/solr/util/SolrCLI.java  |  18 +-
 solr/core/src/test-files/solr/solr.xml          |   5 +
 .../test/SecureRandomAlgorithmTesterApp.java    |  41 --
 .../org/apache/solr/cloud/ZkControllerTest.java |   9 +-
 .../org/apache/solr/core/TestCoreDiscovery.java |   7 +-
 .../org/apache/solr/core/TestLazyCores.java     |  53 ++-
 .../solr/handler/admin/MetricsHandlerTest.java  |   7 +-
 .../test/org/apache/solr/search/TestDocSet.java |   7 +-
 .../apache/solr/util/TestSolrCLIRunExample.java |  38 ++
 .../java/org/apache/solr/SolrTestCaseJ4.java    |  22 +-
 94 files changed, 2127 insertions(+), 638 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/b9b707cc/solr/core/src/java/org/apache/solr/core/CoreContainer.java
----------------------------------------------------------------------
diff --cc solr/core/src/java/org/apache/solr/core/CoreContainer.java
index ea792c5,1ef036a..f1e28dd
--- a/solr/core/src/java/org/apache/solr/core/CoreContainer.java
+++ b/solr/core/src/java/org/apache/solr/core/CoreContainer.java
@@@ -491,9 -493,9 +494,9 @@@ public class CoreContainer 
      }
  
      updateShardHandler = new UpdateShardHandler(cfg.getUpdateShardHandlerConfig());
 -    updateShardHandler.initializeMetrics(metricManager, SolrInfoMBean.Group.node.toString(), "updateShardHandler");
 +    updateShardHandler.initializeMetrics(metricManager, SolrInfoBean.Group.node.toString(), "updateShardHandler");
  
-     solrCores.allocateLazyCores(cfg.getTransientCacheSize(), loader);
+     transientCoreCache = TransientSolrCoreCacheFactory.newInstance(loader, this);
  
      logging = LogWatcher.newRegisteredLogWatcher(cfg.getLogWatcherConfig(), loader);
  
@@@ -533,25 -535,17 +536,25 @@@
  
      // initialize gauges for reporting the number of cores and disk total/free
  
 -    String registryName = SolrMetricManager.getRegistryName(SolrInfoMBean.Group.node);
 -    metricManager.registerGauge(registryName, () -> solrCores.getCores().size(),
 -        true, "loaded", SolrInfoMBean.Category.CONTAINER.toString(), "cores");
 -    metricManager.registerGauge(registryName, () -> solrCores.getLoadedCoreNames().size() - solrCores.getCores().size(),
 -        true, "lazy",SolrInfoMBean.Category.CONTAINER.toString(), "cores");
 -    metricManager.registerGauge(registryName, () -> solrCores.getAllCoreNames().size() - solrCores.getLoadedCoreNames().size(),
 -        true, "unloaded",SolrInfoMBean.Category.CONTAINER.toString(), "cores");
 -    metricManager.registerGauge(registryName, () -> cfg.getCoreRootDirectory().toFile().getTotalSpace(),
 -        true, "totalSpace", SolrInfoMBean.Category.CONTAINER.toString(), "fs");
 -    metricManager.registerGauge(registryName, () -> cfg.getCoreRootDirectory().toFile().getUsableSpace(),
 -        true, "usableSpace", SolrInfoMBean.Category.CONTAINER.toString(), "fs");
 +    String registryName = SolrMetricManager.getRegistryName(SolrInfoBean.Group.node);
 +    metricManager.registerGauge(null, registryName, () -> solrCores.getCores().size(),
 +        true, "loaded", SolrInfoBean.Category.CONTAINER.toString(), "cores");
-     metricManager.registerGauge(null, registryName, () -> solrCores.getCoreNames().size() - solrCores.getCores().size(),
++    metricManager.registerGauge(null, registryName, () -> solrCores.getLoadedCoreNames().size() - solrCores.getCores().size(),
 +        true, "lazy", SolrInfoBean.Category.CONTAINER.toString(), "cores");
-     metricManager.registerGauge(null, registryName, () -> solrCores.getAllCoreNames().size() - solrCores.getCoreNames().size(),
++    metricManager.registerGauge(null, registryName, () -> solrCores.getAllCoreNames().size() - solrCores.getLoadedCoreNames().size(),
 +        true, "unloaded", SolrInfoBean.Category.CONTAINER.toString(), "cores");
 +    metricManager.registerGauge(null, registryName, () -> cfg.getCoreRootDirectory().toFile().getTotalSpace(),
 +        true, "totalSpace", SolrInfoBean.Category.CONTAINER.toString(), "fs");
 +    metricManager.registerGauge(null, registryName, () -> cfg.getCoreRootDirectory().toFile().getUsableSpace(),
 +        true, "usableSpace", SolrInfoBean.Category.CONTAINER.toString(), "fs");
 +    // add version information
 +    metricManager.registerGauge(null, registryName, () -> this.getClass().getPackage().getSpecificationVersion(),
 +        true, "specification", SolrInfoBean.Category.CONTAINER.toString(), "version");
 +    metricManager.registerGauge(null, registryName, () -> this.getClass().getPackage().getImplementationVersion(),
 +        true, "implementation", SolrInfoBean.Category.CONTAINER.toString(), "version");
 +
 +    SolrFieldCacheBean fieldCacheBean = new SolrFieldCacheBean();
 +    fieldCacheBean.initializeMetrics(metricManager, registryName, null);
  
      if (isZooKeeperAware()) {
        metricManager.loadClusterReporters(cfg.getMetricReporterPlugins(), this);

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/b9b707cc/solr/core/src/java/org/apache/solr/core/SolrXmlConfig.java
----------------------------------------------------------------------
diff --cc solr/core/src/java/org/apache/solr/core/SolrXmlConfig.java
index 144dc1a,b37bd52..c6fe2ae
--- a/solr/core/src/java/org/apache/solr/core/SolrXmlConfig.java
+++ b/solr/core/src/java/org/apache/solr/core/SolrXmlConfig.java
@@@ -453,30 -448,18 +454,34 @@@ public class SolrXmlConfig 
  
    private static PluginInfo[] getMetricReporterPluginInfos(Config config) {
      NodeList nodes = (NodeList) config.evaluate("solr/metrics/reporter", XPathConstants.NODESET);
 -    if (nodes == null || nodes.getLength() == 0)
 -      return new PluginInfo[0];
 -    PluginInfo[] configs = new PluginInfo[nodes.getLength()];
 -    for (int i = 0; i < nodes.getLength(); i++) {
 -      // we don't require class in order to support predefined replica and node reporter classes
 -      configs[i] = new PluginInfo(nodes.item(i), "SolrMetricReporter", true, false);
 +    List<PluginInfo> configs = new ArrayList<>();
 +    boolean hasJmxReporter = false;
 +    if (nodes != null && nodes.getLength() > 0) {
 +      for (int i = 0; i < nodes.getLength(); i++) {
 +        // we don't require class in order to support predefined replica and node reporter classes
 +        PluginInfo info = new PluginInfo(nodes.item(i), "SolrMetricReporter", true, false);
 +        String clazz = info.className;
 +        if (clazz != null && clazz.equals(SolrJmxReporter.class.getName())) {
 +          hasJmxReporter = true;
 +        }
 +        configs.add(info);
 +      }
      }
 -    return configs;
 +    // if there's an MBean server running but there was no JMX reporter then add a default one
 +    MBeanServer mBeanServer = JmxUtil.findFirstMBeanServer();
 +    if (mBeanServer != null && !hasJmxReporter) {
 +      log.info("MBean server found: " + mBeanServer + ", but no JMX reporters were configured - adding default JMX reporter.");
 +      Map<String,String> attributes = new HashMap<>();
 +      attributes.put("name", "default");
 +      attributes.put("class", SolrJmxReporter.class.getName());
 +      PluginInfo defaultPlugin = new PluginInfo("reporter", attributes, null, null);
 +      configs.add(defaultPlugin);
 +    }
 +    return configs.toArray(new PluginInfo[configs.size()]);
    }
+   private static PluginInfo getTransientCoreCacheFactoryPluginInfo(Config config) {
+     Node node = config.getNode("solr/transientCoreCacheFactory", false);
+     return (node == null) ? null : new PluginInfo(node, "transientCoreCacheFactory", false, true);
+   }
  }
  

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/b9b707cc/solr/core/src/java/org/apache/solr/handler/AnalyzeEvaluator.java
----------------------------------------------------------------------

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/b9b707cc/solr/core/src/java/org/apache/solr/handler/admin/MetricsHandler.java
----------------------------------------------------------------------

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/b9b707cc/solr/core/src/test/org/apache/solr/handler/admin/MetricsHandlerTest.java
----------------------------------------------------------------------