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 2020/05/14 08:54:30 UTC

[lucene-solr] branch jira/solr-14470 updated (3dd5f7d -> 2b90568)

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

ab pushed a change to branch jira/solr-14470
in repository https://gitbox.apache.org/repos/asf/lucene-solr.git.


    from 3dd5f7d  SOLR-14470: Initial version.
     new 3d6b039  SOLR-14470: Cleanup, reduce object allocations.
     add bd004d2  Fix test to check for close / closing and wait for merge threads to close the writer if concurrency strikes
     add 7c350d2  LUCENE-7889: Allow grouping on Double/LongValuesSource (#1484)
     add 0d20c7b  LUCENE-9358: remove unnecessary tree rotation for the one dimensional case (#1481)
     add a0e158c3 SOLR-14266: Fix or suppress 14 resource leak warnings in apache/solr/core
     add 6971244  SOLR-14463: Solr Admin ZkStatus page now works with ZK 3.6 (#1499)
     add 4680e92  SOLR-14423: Move static SolrClientCache from StreamHandler to CoreContainer for wider reuse and better life-cycle management.
     add adddab9d SOLR-14456: Fix Content-Type header forwarding on compressed requests (#1480)
     add e4dc9e9  SOLR-11934: Visit Solr logging, it's too noisy. (added collection to log messages 'Registered new searcher...'
     add dd4fa8f  SOLR-14423: Additional fixes for object caching and incorrect test assumptions.
     new 3392215  Merge branch 'master' into jira/solr-14470
     new 2b90568  SOLR-14470: Remove left-over from merge.

The 3 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.


Summary of changes:
 lucene/CHANGES.txt                                 |   7 +-
 .../java/org/apache/lucene/util/bkd/BKDWriter.java | 307 ++++++++++++---------
 .../lucene/index/TestConcurrentMergeScheduler.java |   6 +-
 .../lucene/search/grouping/DoubleRange.java}       |  50 ++--
 .../lucene/search/grouping/DoubleRangeFactory.java |  67 +++++
 .../search/grouping/DoubleRangeGroupSelector.java  | 100 +++++++
 .../grouping/FirstPassGroupingCollector.java       |   1 +
 .../lucene/search/grouping/GroupSelector.java      |  10 +-
 .../lucene/search/grouping/GroupingSearch.java     |   4 +
 .../apache/lucene/search/grouping/LongRange.java}  |  49 ++--
 .../lucene/search/grouping/LongRangeFactory.java   |  67 +++++
 .../search/grouping/LongRangeGroupSelector.java    | 101 +++++++
 .../grouping/SecondPassGroupingCollector.java      |   1 +
 .../lucene/search/grouping/TermGroupSelector.java  |   4 +
 .../search/grouping/ValueSourceGroupSelector.java  |   6 +-
 .../lucene/search/grouping/package-info.java       |  23 +-
 ...Test.java => DoubleRangeGroupSelectorTest.java} |  29 +-
 ...orTest.java => LongRangeGroupSelectorTest.java} |  31 +--
 .../search/grouping/TestDoubleRangeFactory.java}   |  33 +--
 .../search/grouping/TestLongRangeFactory.java}     |  40 +--
 solr/CHANGES.txt                                   |  10 +
 .../java/org/apache/solr/core/CoreContainer.java   |   8 +-
 .../src/java/org/apache/solr/core/SolrCore.java    |   4 +-
 .../org/apache/solr/handler/StreamHandler.java     |  38 +--
 .../solr/handler/admin/ZookeeperStatusHandler.java |   5 +-
 .../apache/solr/handler/export/ExportWriter.java   |  35 ++-
 .../apache/solr/handler/sql/CalciteSolrDriver.java |  22 +-
 .../org/apache/solr/handler/sql/SolrSchema.java    |   6 +-
 .../solr/metrics/reporters/solr/SolrReporter.java  |  37 ++-
 .../solr/response/GraphMLResponseWriter.java       |   4 +-
 .../java/org/apache/solr/servlet/HttpSolrCall.java |   2 +-
 .../org/apache/solr/core/ResourceLoaderTest.java   |   3 +-
 .../test/org/apache/solr/core/TestLazyCores.java   |  71 ++---
 .../repository/HdfsBackupRepositoryTest.java       |  94 ++++---
 .../handler/admin/ZookeeperStatusHandlerTest.java  |  35 +++
 .../handler/sql/TestFilterCalciteConnection.java   |  93 -------
 .../solr/client/solrj/impl/Http2SolrClient.java    |  67 ++---
 .../solr/client/solrj/impl/HttpSolrClient.java     |  46 ++-
 .../org/apache/solr/client/solrj/io/Tuple.java     |  48 +++-
 .../client/solrj/io/stream/ExecutorStream.java     |   1 +
 .../solr/client/solrj/io/stream/FetchStream.java   |   1 +
 .../solr/client/solrj/io/stream/TopicStream.java   |   1 +
 .../apache/solr/common/params/StreamParams.java    |   2 +
 .../client/solrj/impl/BasicHttpSolrClientTest.java |  45 ++-
 .../impl/Http2SolrClientCompatibilityTest.java     |   7 +-
 .../client/solrj/impl/Http2SolrClientTest.java     |  41 ++-
 .../client/solrj/io/stream/MathExpressionTest.java |  24 +-
 .../solrj/io/stream/StreamDecoratorTest.java       |  17 +-
 48 files changed, 1077 insertions(+), 626 deletions(-)
 copy lucene/{core/src/java/org/apache/lucene/index/Impact.java => grouping/src/java/org/apache/lucene/search/grouping/DoubleRange.java} (51%)
 create mode 100644 lucene/grouping/src/java/org/apache/lucene/search/grouping/DoubleRangeFactory.java
 create mode 100644 lucene/grouping/src/java/org/apache/lucene/search/grouping/DoubleRangeGroupSelector.java
 copy lucene/{core/src/java/org/apache/lucene/index/Impact.java => grouping/src/java/org/apache/lucene/search/grouping/LongRange.java} (53%)
 create mode 100644 lucene/grouping/src/java/org/apache/lucene/search/grouping/LongRangeFactory.java
 create mode 100644 lucene/grouping/src/java/org/apache/lucene/search/grouping/LongRangeGroupSelector.java
 copy lucene/grouping/src/test/org/apache/lucene/search/grouping/{TermGroupSelectorTest.java => DoubleRangeGroupSelectorTest.java} (61%)
 copy lucene/grouping/src/test/org/apache/lucene/search/grouping/{TermGroupSelectorTest.java => LongRangeGroupSelectorTest.java} (61%)
 copy lucene/{demo/src/test/org/apache/lucene/demo/facet/TestDistanceFacetsExample.java => grouping/src/test/org/apache/lucene/search/grouping/TestDoubleRangeFactory.java} (51%)
 copy lucene/{queryparser/src/java/org/apache/lucene/queryparser/flexible/standard/package-info.java => grouping/src/test/org/apache/lucene/search/grouping/TestLongRangeFactory.java} (52%)
 delete mode 100644 solr/core/src/test/org/apache/solr/handler/sql/TestFilterCalciteConnection.java


[lucene-solr] 03/03: SOLR-14470: Remove left-over from merge.

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

ab pushed a commit to branch jira/solr-14470
in repository https://gitbox.apache.org/repos/asf/lucene-solr.git

commit 2b90568e61a3d206dc66d60ce4912097e6f208f5
Author: Andrzej Bialecki <ab...@apache.org>
AuthorDate: Thu May 14 10:53:54 2020 +0200

    SOLR-14470: Remove left-over from merge.
---
 .../handler/sql/TestFilterCalciteConnection.java   | 93 ----------------------
 1 file changed, 93 deletions(-)

diff --git a/solr/core/src/test/org/apache/solr/handler/sql/TestFilterCalciteConnection.java b/solr/core/src/test/org/apache/solr/handler/sql/TestFilterCalciteConnection.java
deleted file mode 100644
index 180817f..0000000
--- a/solr/core/src/test/org/apache/solr/handler/sql/TestFilterCalciteConnection.java
+++ /dev/null
@@ -1,93 +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.handler.sql;
-
-import java.lang.reflect.Method;
-import java.lang.reflect.Modifier;
-import java.sql.Connection;
-import java.sql.DriverManager;
-import java.util.Properties;
-
-import org.apache.calcite.jdbc.CalciteConnection;
-import org.apache.calcite.schema.SchemaPlus;
-import org.apache.solr.cloud.SolrCloudTestCase;
-import org.junit.BeforeClass;
-import org.junit.Test;
-
-/**
- *
- */
-public class TestFilterCalciteConnection extends SolrCloudTestCase {
-
-  @BeforeClass
-  public static void setupCluster() throws Exception {
-    configureCluster(1)
-        .addConfig("conf", configset("cloud-minimal"))
-        .configure();
-  }
-
-  @Test
-  public void testConnectionClosesSchema() throws Exception {
-    String zkHost = cluster.getSolrClient().getZkHost();
-    Properties props = new Properties();
-    props.setProperty("zk", zkHost);
-    Connection conn = null;
-    try {
-      // load the driver
-      Class.forName(CalciteSolrDriver.class.getName());
-      conn = DriverManager.getConnection("jdbc:calcitesolr:test", props);
-      assertTrue("unexpected connection impl: " + conn.getClass().getName(),
-          conn instanceof FilterCalciteConnection);
-      SchemaPlus rootSchema = ((FilterCalciteConnection)conn).getRootSchema();
-      SchemaPlus subSchema = rootSchema.getSubSchema(zkHost);
-      assertNotNull("missing SolrSchema", subSchema);
-      SolrSchema solrSchema = subSchema.unwrap(SolrSchema.class);
-      // test that conn.close() propagates to the schema
-      conn.close();
-      assertTrue("SolrSchema not closed after connection close!", solrSchema.isClosed());
-    } finally {
-      if (conn != null && !conn.isClosed()) {
-        conn.close();
-      }
-    }
-  }
-
-  @Test
-  public void testMethodsOverriden() throws Exception {
-    implTestDeclaredMethodsOverridden(CalciteConnection.class, FilterCalciteConnection.class);
-  }
-
-  private void implTestDeclaredMethodsOverridden(Class<?> superClass, Class<?> subClass) throws Exception {
-    for (final Method superClassMethod : superClass.getDeclaredMethods()) {
-      final int modifiers = superClassMethod.getModifiers();
-      if (Modifier.isPrivate(modifiers)) continue;
-      if (Modifier.isFinal(modifiers)) continue;
-      if (Modifier.isStatic(modifiers)) continue;
-      try {
-        final Method subClassMethod = subClass.getDeclaredMethod(
-            superClassMethod.getName(),
-            superClassMethod.getParameterTypes());
-        assertEquals("getReturnType() difference",
-            superClassMethod.getReturnType(),
-            subClassMethod.getReturnType());
-      } catch (NoSuchMethodException e) {
-        fail(subClass + " needs to override '" + superClassMethod + "'");
-      }
-    }
-  }
-}


[lucene-solr] 01/03: SOLR-14470: Cleanup, reduce object allocations.

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

ab pushed a commit to branch jira/solr-14470
in repository https://gitbox.apache.org/repos/asf/lucene-solr.git

commit 3d6b0393570f5193c53b97c3d3c060003c08dbdb
Author: Andrzej Bialecki <ab...@apache.org>
AuthorDate: Tue May 12 17:34:15 2020 +0200

    SOLR-14470: Cleanup, reduce object allocations.
---
 .../org/apache/solr/handler/StreamHandler.java     | 20 +++------
 .../apache/solr/handler/export/ExportWriter.java   | 35 ++++++++++------
 .../solr/response/GraphMLResponseWriter.java       |  4 +-
 .../org/apache/solr/client/solrj/io/Tuple.java     | 48 +++++++++++++++++-----
 .../apache/solr/common/params/StreamParams.java    |  2 +
 5 files changed, 68 insertions(+), 41 deletions(-)

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 bc57247..184a737 100644
--- a/solr/core/src/java/org/apache/solr/handler/StreamHandler.java
+++ b/solr/core/src/java/org/apache/solr/handler/StreamHandler.java
@@ -347,11 +347,7 @@ public class StreamHandler extends RequestHandlerBase implements SolrCoreAware,
         msg = t.getMessage();
         t = t.getCause();
       }
-
-      Map m = new HashMap();
-      m.put(StreamParams.EOF, true);
-      m.put(StreamParams.EXCEPTION, msg);
-      return new Tuple(m);
+      return Tuple.EXCEPTION(msg, true);
     }
   }
 
@@ -393,9 +389,7 @@ public class StreamHandler extends RequestHandlerBase implements SolrCoreAware,
       if (it.hasNext()) {
         return it.next().getInfo();
       } else {
-        Map m = new HashMap();
-        m.put(StreamParams.EOF, true);
-        return new Tuple(m);
+        return Tuple.EOF();
       }
     }
   }
@@ -437,14 +431,10 @@ public class StreamHandler extends RequestHandlerBase implements SolrCoreAware,
 
     public Tuple read() {
       if (sendEOF) {
-        Map m = new HashMap();
-        m.put(StreamParams.EOF, true);
-        return new Tuple(m);
+        return Tuple.EOF();
       } else {
         sendEOF = true;
-        Map m = new HashMap();
-        m.put("DaemonOp", message);
-        return new Tuple(m);
+        return new Tuple("DaemonOp", message);
       }
     }
   }
@@ -493,7 +483,7 @@ public class StreamHandler extends RequestHandlerBase implements SolrCoreAware,
       Tuple tuple = this.tupleStream.read();
       if (tuple.EOF) {
         long totalTime = (System.nanoTime() - begin) / 1000000;
-        tuple.fields.put("RESPONSE_TIME", totalTime);
+        tuple.fields.put(StreamParams.RESPONSE_TIME, totalTime);
       }
       return tuple;
     }
diff --git a/solr/core/src/java/org/apache/solr/handler/export/ExportWriter.java b/solr/core/src/java/org/apache/solr/handler/export/ExportWriter.java
index 696b71b..b386136 100644
--- a/solr/core/src/java/org/apache/solr/handler/export/ExportWriter.java
+++ b/solr/core/src/java/org/apache/solr/handler/export/ExportWriter.java
@@ -24,9 +24,7 @@ import java.io.OutputStreamWriter;
 import java.io.PrintWriter;
 import java.lang.invoke.MethodHandles;
 import java.nio.charset.StandardCharsets;
-import java.util.HashMap;
 import java.util.List;
-import java.util.Map;
 
 import org.apache.lucene.index.LeafReader;
 import org.apache.lucene.index.LeafReaderContext;
@@ -102,6 +100,7 @@ public class ExportWriter implements SolrCore.RawWriter, Closeable {
   private static final Logger log = LoggerFactory.getLogger(MethodHandles.lookup().lookupClass());
 
   private static final int DOCUMENT_BATCH_SIZE = 30000;
+
   private static final String EXPORT_WRITER_KEY = "__ew__";
   private static final String DOCS_KEY = "_ew_docs_";
   private static final String DOCS_INDEX_KEY = "_ew_docs_idx_";
@@ -119,12 +118,27 @@ public class ExportWriter implements SolrCore.RawWriter, Closeable {
   PushWriter writer;
   private String wt;
 
+  private static class TupleEntryWriter implements EntryWriter {
+    Tuple tuple;
+
+    void setTuple(Tuple tuple) {
+      this.tuple = tuple;
+    }
+
+    @Override
+    public EntryWriter put(CharSequence k, Object v) throws IOException {
+      tuple.put(k, v);
+      return this;
+    }
+  }
+
   public static class ExportWriterStream extends TupleStream implements Expressible {
     StreamContext context;
     int pos;
     SortDoc[] docs;
     ExportWriter exportWriter;
     List<LeafReaderContext> leaves;
+    TupleEntryWriter entryWriter = new TupleEntryWriter();
 
     public ExportWriterStream(StreamExpression expression, StreamFactory factory) throws IOException {
 
@@ -159,27 +173,22 @@ public class ExportWriter implements SolrCore.RawWriter, Closeable {
     @Override
     public void close() throws IOException {
       docs = null;
+      exportWriter = null;
+      leaves = null;
     }
 
     @Override
     public Tuple read() throws IOException {
       Tuple tuple;
       if (pos >= 0) {
+        tuple = new Tuple();
+        entryWriter.setTuple(tuple);
         SortDoc s = docs[pos];
-        Map<String, Object>  map = new HashMap<>();
-        exportWriter.writeDoc(s, leaves, new EntryWriter() {
-          @Override
-          public EntryWriter put(CharSequence k, Object v) throws IOException {
-            map.put(k.toString(), v);
-            return this;
-          }
-        });
+        exportWriter.writeDoc(s, leaves, entryWriter);
         s.reset();
-        tuple = new Tuple(map);
         pos--;
       } else {
-        tuple = new Tuple();
-        tuple.EOF = true;
+        tuple = Tuple.EOF();
       }
       return tuple;
     }
diff --git a/solr/core/src/java/org/apache/solr/response/GraphMLResponseWriter.java b/solr/core/src/java/org/apache/solr/response/GraphMLResponseWriter.java
index 9bb7403..85346be 100644
--- a/solr/core/src/java/org/apache/solr/response/GraphMLResponseWriter.java
+++ b/solr/core/src/java/org/apache/solr/response/GraphMLResponseWriter.java
@@ -95,9 +95,9 @@ public class GraphMLResponseWriter implements QueryResponseWriter {
         printWriter.write("<node id=\""+ xmlEscape(id)+"\"");
 
         List<String> outfields = new ArrayList();
-        Iterator<String> keys = tuple.fields.keySet().iterator();
+        Iterator<Object> keys = tuple.fields.keySet().iterator();
         while(keys.hasNext()) {
-          String key = keys.next();
+          String key = String.valueOf(keys.next());
           if(key.equals("node") || key.equals("ancestors") || key.equals("collection")) {
             continue;
           } else {
diff --git a/solr/solrj/src/java/org/apache/solr/client/solrj/io/Tuple.java b/solr/solrj/src/java/org/apache/solr/client/solrj/io/Tuple.java
index c2545cd..39c6ad9 100644
--- a/solr/solrj/src/java/org/apache/solr/client/solrj/io/Tuple.java
+++ b/solr/solrj/src/java/org/apache/solr/client/solrj/io/Tuple.java
@@ -23,6 +23,7 @@ import java.util.Date;
 import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
+import java.util.Objects;
 
 import org.apache.solr.common.MapWriter;
 import org.apache.solr.common.params.StreamParams;
@@ -45,7 +46,7 @@ public class Tuple implements Cloneable, MapWriter {
   public boolean EOF;
   public boolean EXCEPTION;
 
-  public Map fields = new HashMap();
+  public Map<Object, Object> fields = new HashMap<>();
   public List<String> fieldNames;
   public Map<String, String> fieldLabels;
 
@@ -53,16 +54,20 @@ public class Tuple implements Cloneable, MapWriter {
     // just an empty tuple
   }
   
-  public Tuple(Map fields) {
-    if (fields.containsKey(StreamParams.EOF)) {
-      EOF = true;
+  public Tuple(Map<?, ?> fields) {
+    for (Map.Entry<?, ?> entry : fields.entrySet()) {
+      put(entry.getKey(), entry.getValue());
     }
+  }
 
-    if (fields.containsKey(StreamParams.EXCEPTION)) {
-      EXCEPTION = true;
+  public Tuple(Object... fields) {
+    Objects.requireNonNull(fields);
+    if ((fields.length % 2) != 0) {
+      throw new RuntimeException("must have a matching number of key-value pairs");
+    }
+    for (int i = 0; i < fields.length; i += 2) {
+      put(fields[i], fields[i + 1]);
     }
-
-    this.fields.putAll(fields);
   }
 
   public Object get(Object key) {
@@ -71,9 +76,15 @@ public class Tuple implements Cloneable, MapWriter {
 
   public void put(Object key, Object value) {
     this.fields.put(key, value);
+    if (key.equals(StreamParams.EOF)) {
+      EOF = true;
+    } else if (key.equals(StreamParams.EXCEPTION)) {
+      EXCEPTION = true;
+    }
+
   }
   
-  public void remove(Object key){
+  public void remove(Object key) {
     this.fields.remove(key);
   }
 
@@ -195,8 +206,8 @@ public class Tuple implements Cloneable, MapWriter {
   }
 
   public Tuple clone() {
-    HashMap m = new HashMap(fields);
-    Tuple clone = new Tuple(m);
+    Tuple clone = new Tuple();
+    clone.fields.putAll(fields);
     return clone;
   }
   
@@ -221,4 +232,19 @@ public class Tuple implements Cloneable, MapWriter {
       }
     }
   }
+
+  public static Tuple EOF() {
+    Tuple tuple = new Tuple();
+    tuple.put((Object) StreamParams.EOF, true);
+    return tuple;
+  }
+
+  public static Tuple EXCEPTION(String msg, boolean eof) {
+    Tuple tuple = new Tuple();
+    tuple.put((Object) StreamParams.EXCEPTION, msg);
+    if (eof) {
+      tuple.put((Object) StreamParams.EOF, true);
+    }
+    return tuple;
+  }
 }
diff --git a/solr/solrj/src/java/org/apache/solr/common/params/StreamParams.java b/solr/solrj/src/java/org/apache/solr/common/params/StreamParams.java
index c26db5e..88654f9 100644
--- a/solr/solrj/src/java/org/apache/solr/common/params/StreamParams.java
+++ b/solr/solrj/src/java/org/apache/solr/common/params/StreamParams.java
@@ -29,6 +29,8 @@ public interface StreamParams {
   String DOCS = "docs";
   String RETURN_VALUE = "return-value";
   String RESULT_SET = "result-set";
+
+  String RESPONSE_TIME = "RESPONSE_TIME";
   String EOF = "EOF";
   String EXCEPTION = "EXCEPTION";
   String METRICS = "_METRICS_";


[lucene-solr] 02/03: Merge branch 'master' into jira/solr-14470

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

ab pushed a commit to branch jira/solr-14470
in repository https://gitbox.apache.org/repos/asf/lucene-solr.git

commit 339221553d3a5d79cfb237b04afca18db0f23cf8
Merge: 3d6b039 dd4fa8f
Author: Andrzej Bialecki <ab...@apache.org>
AuthorDate: Thu May 14 09:26:51 2020 +0200

    Merge branch 'master' into jira/solr-14470

 lucene/CHANGES.txt                                 |   7 +-
 .../java/org/apache/lucene/util/bkd/BKDWriter.java | 307 ++++++++++++---------
 .../lucene/index/TestConcurrentMergeScheduler.java |   6 +-
 .../apache/lucene/search/grouping/DoubleRange.java |  59 ++++
 .../lucene/search/grouping/DoubleRangeFactory.java |  67 +++++
 .../search/grouping/DoubleRangeGroupSelector.java  | 100 +++++++
 .../grouping/FirstPassGroupingCollector.java       |   1 +
 .../lucene/search/grouping/GroupSelector.java      |  10 +-
 .../lucene/search/grouping/GroupingSearch.java     |   4 +
 .../apache/lucene/search/grouping/LongRange.java   |  58 ++++
 .../lucene/search/grouping/LongRangeFactory.java   |  67 +++++
 .../search/grouping/LongRangeGroupSelector.java    | 101 +++++++
 .../grouping/SecondPassGroupingCollector.java      |   1 +
 .../lucene/search/grouping/TermGroupSelector.java  |   4 +
 .../search/grouping/ValueSourceGroupSelector.java  |   6 +-
 .../lucene/search/grouping/package-info.java       |  23 +-
 .../grouping/DoubleRangeGroupSelectorTest.java     |  59 ++++
 .../grouping/LongRangeGroupSelectorTest.java       |  59 ++++
 .../search/grouping/TestDoubleRangeFactory.java    |  39 +++
 .../search/grouping/TestLongRangeFactory.java      |  39 +++
 solr/CHANGES.txt                                   |  10 +
 .../java/org/apache/solr/core/CoreContainer.java   |   8 +-
 .../src/java/org/apache/solr/core/SolrCore.java    |   4 +-
 .../org/apache/solr/handler/StreamHandler.java     |  18 +-
 .../solr/handler/admin/ZookeeperStatusHandler.java |   5 +-
 .../apache/solr/handler/sql/CalciteSolrDriver.java |  22 +-
 .../org/apache/solr/handler/sql/SolrSchema.java    |   6 +-
 .../solr/metrics/reporters/solr/SolrReporter.java  |  37 ++-
 .../java/org/apache/solr/servlet/HttpSolrCall.java |   2 +-
 .../org/apache/solr/core/ResourceLoaderTest.java   |   3 +-
 .../test/org/apache/solr/core/TestLazyCores.java   |  71 ++---
 .../repository/HdfsBackupRepositoryTest.java       |  94 ++++---
 .../handler/admin/ZookeeperStatusHandlerTest.java  |  35 +++
 .../solr/client/solrj/impl/Http2SolrClient.java    |  67 ++---
 .../solr/client/solrj/impl/HttpSolrClient.java     |  46 ++-
 .../client/solrj/io/stream/ExecutorStream.java     |   1 +
 .../solr/client/solrj/io/stream/FetchStream.java   |   1 +
 .../solr/client/solrj/io/stream/TopicStream.java   |   1 +
 .../client/solrj/impl/BasicHttpSolrClientTest.java |  45 ++-
 .../impl/Http2SolrClientCompatibilityTest.java     |   7 +-
 .../client/solrj/impl/Http2SolrClientTest.java     |  41 ++-
 .../client/solrj/io/stream/MathExpressionTest.java |  24 +-
 .../solrj/io/stream/StreamDecoratorTest.java       |  17 +-
 43 files changed, 1209 insertions(+), 373 deletions(-)