You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@lucene.apache.org by sh...@apache.org on 2017/03/06 11:02:05 UTC

[01/15] lucene-solr:feature/autoscaling: SOLR-10155: For numeric types facet.contains= and facet.prefix= are now rejected. (Gus Heck, Christine Poerschke)

Repository: lucene-solr
Updated Branches:
  refs/heads/feature/autoscaling da113fde7 -> acb185b2d


SOLR-10155: For numeric types facet.contains= and facet.prefix= are now rejected.
(Gus Heck, Christine Poerschke)


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

Branch: refs/heads/feature/autoscaling
Commit: 43474312eb2b66df4102bd653b9546e7eff47363
Parents: da113fd
Author: Christine Poerschke <cp...@apache.org>
Authored: Fri Mar 3 12:03:41 2017 +0000
Committer: Christine Poerschke <cp...@apache.org>
Committed: Fri Mar 3 12:03:41 2017 +0000

----------------------------------------------------------------------
 solr/CHANGES.txt                                          |  2 ++
 .../src/java/org/apache/solr/request/SimpleFacets.java    | 10 ++++------
 2 files changed, 6 insertions(+), 6 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/43474312/solr/CHANGES.txt
----------------------------------------------------------------------
diff --git a/solr/CHANGES.txt b/solr/CHANGES.txt
index 09912ee..fa4d33b 100644
--- a/solr/CHANGES.txt
+++ b/solr/CHANGES.txt
@@ -271,6 +271,8 @@ Other Changes
 
 * SOLR-10219: re-enable HDFS tests under JDK9 (hossman, Uwe Schindler)
 
+* SOLR-10155: For numeric types facet.contains= and facet.prefix= are now rejected.
+  (Gus Heck, Christine Poerschke)
 
 ==================  6.4.2 ==================
 

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/43474312/solr/core/src/java/org/apache/solr/request/SimpleFacets.java
----------------------------------------------------------------------
diff --git a/solr/core/src/java/org/apache/solr/request/SimpleFacets.java b/solr/core/src/java/org/apache/solr/request/SimpleFacets.java
index 4190958..5370dd9 100644
--- a/solr/core/src/java/org/apache/solr/request/SimpleFacets.java
+++ b/solr/core/src/java/org/apache/solr/request/SimpleFacets.java
@@ -484,15 +484,13 @@ public class SimpleFacets {
         case FCS:
           assert ft.isPointField() || !multiToken;
           if (ft.isPointField() || (ft.getNumberType() != null && !sf.multiValued())) {
-            // force numeric faceting
-            if (prefix != null && !prefix.isEmpty()) {
+            if (prefix != null) {
               throw new SolrException(ErrorCode.BAD_REQUEST, FacetParams.FACET_PREFIX + " is not supported on numeric types");
             }
             if (termFilter != null) {
-              final boolean supportedOperation = (termFilter instanceof SubstringBytesRefFilter) && ((SubstringBytesRefFilter) termFilter).substring().isEmpty();
-              if (!supportedOperation) {
-                throw new SolrException(ErrorCode.BAD_REQUEST, FacetParams.FACET_CONTAINS + " is not supported on numeric types");
-              }
+              throw new SolrException(ErrorCode.BAD_REQUEST, "BytesRef term filters ("
+                      + FacetParams.FACET_CONTAINS + ", "
+                      + FacetParams.FACET_EXCLUDETERMS + ") are not supported on numeric types");
             }
 //            We should do this, but mincount=0 is currently the default
 //            if (ft.isPointField() && mincount <= 0) {


[03/15] lucene-solr:feature/autoscaling: LUCENE-7410: Fix test bug.

Posted by sh...@apache.org.
LUCENE-7410: Fix test bug.


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

Branch: refs/heads/feature/autoscaling
Commit: fbc844d33439efc1c5c6fee5547715d1a1b0db83
Parents: d947f53
Author: Adrien Grand <jp...@gmail.com>
Authored: Fri Mar 3 17:39:48 2017 +0100
Committer: Adrien Grand <jp...@gmail.com>
Committed: Fri Mar 3 17:41:04 2017 +0100

----------------------------------------------------------------------
 .../org/apache/solr/index/TestSlowCompositeReaderWrapper.java     | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/fbc844d3/solr/core/src/test/org/apache/solr/index/TestSlowCompositeReaderWrapper.java
----------------------------------------------------------------------
diff --git a/solr/core/src/test/org/apache/solr/index/TestSlowCompositeReaderWrapper.java b/solr/core/src/test/org/apache/solr/index/TestSlowCompositeReaderWrapper.java
index 195aae5..9907d59 100644
--- a/solr/core/src/test/org/apache/solr/index/TestSlowCompositeReaderWrapper.java
+++ b/solr/core/src/test/org/apache/solr/index/TestSlowCompositeReaderWrapper.java
@@ -30,6 +30,7 @@ import org.apache.lucene.index.LeafReader;
 import org.apache.lucene.index.RandomIndexWriter;
 import org.apache.lucene.index.MultiDocValues.MultiSortedDocValues;
 import org.apache.lucene.index.MultiDocValues.MultiSortedSetDocValues;
+import org.apache.lucene.index.NoMergePolicy;
 import org.apache.lucene.store.Directory;
 import org.apache.lucene.util.BytesRef;
 import org.apache.lucene.util.LuceneTestCase;
@@ -95,7 +96,7 @@ public class TestSlowCompositeReaderWrapper extends LuceneTestCase {
 
   public void testOrdMapsAreCached() throws Exception {
     Directory dir = newDirectory();
-    RandomIndexWriter w = new RandomIndexWriter(random(), dir);
+    RandomIndexWriter w = new RandomIndexWriter(random(), dir, newIndexWriterConfig().setMergePolicy(NoMergePolicy.INSTANCE));
     Document doc = new Document();
     doc.add(new SortedDocValuesField("sorted", new BytesRef("a")));
     doc.add(new SortedSetDocValuesField("sorted_set", new BytesRef("b")));


[10/15] lucene-solr:feature/autoscaling: SOLR-10088: Installer script does not put zoo.cfg in SOLR_HOME

Posted by sh...@apache.org.
SOLR-10088: Installer script does not put zoo.cfg in SOLR_HOME


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

Branch: refs/heads/feature/autoscaling
Commit: 59433bb460c2e55756cb3cea2aecd264e48e3b3a
Parents: 5ccc8e7
Author: Jan H�ydahl <ja...@apache.org>
Authored: Sat Mar 4 23:19:06 2017 +0100
Committer: Jan H�ydahl <ja...@apache.org>
Committed: Sat Mar 4 23:19:06 2017 +0100

----------------------------------------------------------------------
 solr/CHANGES.txt                 | 18 ++++++++++--------
 solr/bin/install_solr_service.sh |  2 +-
 2 files changed, 11 insertions(+), 9 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/59433bb4/solr/CHANGES.txt
----------------------------------------------------------------------
diff --git a/solr/CHANGES.txt b/solr/CHANGES.txt
index 2ffcc46..ea56cbb 100644
--- a/solr/CHANGES.txt
+++ b/solr/CHANGES.txt
@@ -128,7 +128,7 @@ New Features
   numeric, and conditional evaluators. BooleanOperations have been removed in preference of
   BooleanEvaluators. (Dennis Gove)
 
-* SOLR-9903: Stop interrupting the update executor on shutdown, it can cause graceful shutdowns to put replicas into Leader 
+* SOLR-9903: Stop interrupting the update executor on shutdown, it can cause graceful shutdowns to put replicas into Leader
   Initiated Recovery among other undesirable things. (Mark Miller)
 
 * SOLR-8396: Add support for PointFields in Solr (Ishan Chattopadhyaya, Tom�s Fern�ndez L�bbe)
@@ -203,6 +203,8 @@ Bug Fixes
 * SOLR-10225: Fix HDFS BlockCache evictions metric to not count explicit removal
   due to a directory close. (yonik)
 
+* SOLR-10088: Installer script does not put zoo.cfg in SOLR_HOME (janhoy)
+
 Optimizations
 ----------------------
 
@@ -232,9 +234,9 @@ Other Changes
 
 * SOLR-10018: Increase the default hl.maxAnalyzedChars to 51200 for the Unified & Postings Highlighter so that all
   highlighters now have this same default. (David Smiley)
-  
-* SOLR-6246: Added tests to check that the changes in LUCENE-7564 and LUCENE-7670 
-  enable AnalyzingInfixSuggester and BlendedInfixSuggester to play nicely with core reload.  
+
+* SOLR-6246: Added tests to check that the changes in LUCENE-7564 and LUCENE-7670
+  enable AnalyzingInfixSuggester and BlendedInfixSuggester to play nicely with core reload.
   SolrSuggester.build() now throws SolrCoreState.CoreIsClosedException when interrupted
   by a core reload/shutdown. (Steve Rowe)
 
@@ -261,8 +263,8 @@ Other Changes
 * SOLR-9842: UpdateRequestProcessors have no way to guarantee the closing of resources used for a request.
   (Mark Miller)
 
-* SOLR-9848: Lower solr.cloud.wait-for-updates-with-stale-state-pause back down from 7 seconds. 
-  (Mark Miller) 
+* SOLR-9848: Lower solr.cloud.wait-for-updates-with-stale-state-pause back down from 7 seconds.
+  (Mark Miller)
 
 * SOLR-10020: Cannot reload a core if it fails initialization. (Mike Drob via Erick Erickson)
 
@@ -273,8 +275,8 @@ Other Changes
 
 * SOLR-10214: Remove unused HDFS BlockCache metrics and add storeFails, as well as adding total
   counts for lookups, hits, and evictions. (yonik)
-  
-* SOLR-10134: EmbeddedSolrServer responds on Schema API requests (Robert Alexandersson via Mikhail Khludnev)  
+
+* SOLR-10134: EmbeddedSolrServer responds on Schema API requests (Robert Alexandersson via Mikhail Khludnev)
 
 * SOLR-10219: re-enable HDFS tests under JDK9 (hossman, Uwe Schindler)
 

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/59433bb4/solr/bin/install_solr_service.sh
----------------------------------------------------------------------
diff --git a/solr/bin/install_solr_service.sh b/solr/bin/install_solr_service.sh
index b331870..f42dd5a 100755
--- a/solr/bin/install_solr_service.sh
+++ b/solr/bin/install_solr_service.sh
@@ -340,7 +340,7 @@ mkdir -p "$SOLR_VAR_DIR/logs"
 if [ -f "$SOLR_VAR_DIR/data/solr.xml" ]; then
   echo -e "\n$SOLR_VAR_DIR/data/solr.xml already exists. Skipping install ...\n"
 else
-  cp "$SOLR_INSTALL_DIR/server/solr/solr.xml" "$SOLR_VAR_DIR/data/solr.xml"
+  cp "$SOLR_INSTALL_DIR/server/solr/"{solr.xml,zoo.cfg} "$SOLR_VAR_DIR/data/"
 fi
 if [ -f "$SOLR_VAR_DIR/log4j.properties" ]; then
   echo -e "\n$SOLR_VAR_DIR/log4j.properties already exists. Skipping install ...\n"


[13/15] lucene-solr:feature/autoscaling: SOLR-10146: fixing tabs

Posted by sh...@apache.org.
SOLR-10146: fixing tabs


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

Branch: refs/heads/feature/autoscaling
Commit: f49bd79ec14f58361320a0931a936840cb15df86
Parents: 686fbd3
Author: Mikhail Khludnev <mk...@apache.org>
Authored: Sun Mar 5 12:30:36 2017 +0300
Committer: Mikhail Khludnev <mk...@apache.org>
Committed: Sun Mar 5 12:30:36 2017 +0300

----------------------------------------------------------------------
 solr/webapp/web/partials/collections.html | 28 +++++++++++++-------------
 1 file changed, 14 insertions(+), 14 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/f49bd79e/solr/webapp/web/partials/collections.html
----------------------------------------------------------------------
diff --git a/solr/webapp/web/partials/collections.html b/solr/webapp/web/partials/collections.html
index 2ac12de..f958e14 100644
--- a/solr/webapp/web/partials/collections.html
+++ b/solr/webapp/web/partials/collections.html
@@ -216,22 +216,22 @@ limitations under the License.
       <div class="block" id="shard-data">
         <div class="content shard" ng-repeat="shard in collection.shards">
           <a ng-click="toggleShard(shard)">
-          	<h2>
-          		<span ng-class="{open:shard.show}"><b>Shard: {{shard.name}}</b></span>
-          		<div style="float:right" ng-show="!shard.range || shard.state == 'inactive'"><a ng-click="toggleRemoveShard(shard)"><span class="rem"></span></a></div>
-          	</h2>
+            <h2>
+                  <span ng-class="{open:shard.show}"><b>Shard: {{shard.name}}</b></span>
+                  <div style="float:right" ng-show="!shard.range || shard.state == 'inactive'"><a ng-click="toggleRemoveShard(shard)"><span class="rem"></span></a></div>
+              </h2>
           </a>
           <ul ng-show="shard.showRemove">
-  			<li>
-    			<form class="delete-shard">
-      				<p class="clearfix"><em>Are you sure you want to delete this shard?</em></p>
-      				<p class="clearfix buttons">
-        				<button class="submit" ng-class="{success: shard.deleted}" ng-click="deleteShard(shard)"><span>Delete Shard</span></button>
-        				<button type="reset" class="reset" ng-click="toggleRemoveShard(shard)"><span>Cancel</span></button>
-      				</p>
-      			</form>
-    		</li>
-  		  </ul>
+              <li>
+                <form class="delete-shard">
+                      <p class="clearfix"><em>Are you sure you want to delete this shard?</em></p>
+                      <p class="clearfix buttons">
+                        <button class="submit" ng-class="{success: shard.deleted}" ng-click="deleteShard(shard)"><span>Delete Shard</span></button>
+                        <button type="reset" class="reset" ng-click="toggleRemoveShard(shard)"><span>Cancel</span></button>
+                      </p>
+                  </form>
+            </li>
+            </ul>
           <ul ng-show="shard.show">
               <li>
                   <ul>


[12/15] lucene-solr:feature/autoscaling: SOLR-10171: Add Constant Reduction Rules to Calcite Planner

Posted by sh...@apache.org.
SOLR-10171: Add Constant Reduction Rules to Calcite Planner


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

Branch: refs/heads/feature/autoscaling
Commit: 686fbd3ba294e7a71f08b2821b5c3ce50235c78b
Parents: b2dcb47
Author: Kevin Risden <kr...@apache.org>
Authored: Sun Feb 19 21:34:40 2017 -0600
Committer: Kevin Risden <kr...@apache.org>
Committed: Sat Mar 4 19:22:34 2017 -0600

----------------------------------------------------------------------
 solr/CHANGES.txt                                 |  2 ++
 .../org/apache/solr/handler/sql/SolrRules.java   | 14 ++++++++++++++
 .../apache/solr/handler/sql/SolrTableScan.java   |  4 ++++
 .../org/apache/solr/handler/TestSQLHandler.java  |  8 ++++++++
 .../solr/client/solrj/io/sql/JdbcTest.java       | 19 +++++++++++++++++++
 5 files changed, 47 insertions(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/686fbd3b/solr/CHANGES.txt
----------------------------------------------------------------------
diff --git a/solr/CHANGES.txt b/solr/CHANGES.txt
index bb5a784..5b7eac5 100644
--- a/solr/CHANGES.txt
+++ b/solr/CHANGES.txt
@@ -285,6 +285,8 @@ Other Changes
 * SOLR-10155: For numeric types facet.contains= and facet.prefix= are now rejected.
   (Gus Heck, Christine Poerschke)
 
+* SOLR-10171 Add Constant Reduction Rules to Calcite Planner (Kevin Risden)
+
 ==================  6.4.2 ==================
 
 Consult the LUCENE_CHANGES.txt file for additional, low level, changes in this release.

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/686fbd3b/solr/core/src/java/org/apache/solr/handler/sql/SolrRules.java
----------------------------------------------------------------------
diff --git a/solr/core/src/java/org/apache/solr/handler/sql/SolrRules.java b/solr/core/src/java/org/apache/solr/handler/sql/SolrRules.java
index 4cbadda..bbc4eb7 100644
--- a/solr/core/src/java/org/apache/solr/handler/sql/SolrRules.java
+++ b/solr/core/src/java/org/apache/solr/handler/sql/SolrRules.java
@@ -26,6 +26,9 @@ import org.apache.calcite.rel.logical.LogicalAggregate;
 import org.apache.calcite.rel.logical.LogicalFilter;
 import org.apache.calcite.rel.logical.LogicalProject;
 import org.apache.calcite.rel.logical.LogicalSort;
+import org.apache.calcite.rel.rules.AggregateValuesRule;
+import org.apache.calcite.rel.rules.ReduceExpressionsRule;
+import org.apache.calcite.rel.rules.ValuesReduceRule;
 import org.apache.calcite.rel.type.RelDataType;
 import org.apache.calcite.rex.RexCall;
 import org.apache.calcite.rex.RexInputRef;
@@ -52,6 +55,17 @@ class SolrRules {
       SolrAggregateRule.AGGREGATE_RULE,
   };
 
+  static final RelOptRule[] CONSTANT_REDUCTION_RULES = {
+      ReduceExpressionsRule.PROJECT_INSTANCE,
+      ReduceExpressionsRule.FILTER_INSTANCE,
+      ReduceExpressionsRule.CALC_INSTANCE,
+      ReduceExpressionsRule.JOIN_INSTANCE,
+      ValuesReduceRule.FILTER_INSTANCE,
+      ValuesReduceRule.PROJECT_FILTER_INSTANCE,
+      ValuesReduceRule.PROJECT_INSTANCE,
+      AggregateValuesRule.INSTANCE
+  };
+
   static List<String> solrFieldNames(final RelDataType rowType) {
     return SqlValidatorUtil.uniquify(
         new AbstractList<String>() {

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/686fbd3b/solr/core/src/java/org/apache/solr/handler/sql/SolrTableScan.java
----------------------------------------------------------------------
diff --git a/solr/core/src/java/org/apache/solr/handler/sql/SolrTableScan.java b/solr/core/src/java/org/apache/solr/handler/sql/SolrTableScan.java
index 88c53ac..5363d59 100644
--- a/solr/core/src/java/org/apache/solr/handler/sql/SolrTableScan.java
+++ b/solr/core/src/java/org/apache/solr/handler/sql/SolrTableScan.java
@@ -72,6 +72,10 @@ class SolrTableScan extends TableScan implements SolrRel {
     for (RelOptRule rule : SolrRules.RULES) {
       planner.addRule(rule);
     }
+
+    for (RelOptRule rule : SolrRules.CONSTANT_REDUCTION_RULES) {
+      planner.addRule(rule);
+    }
   }
 
   public void implement(Implementor implementor) {

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/686fbd3b/solr/core/src/test/org/apache/solr/handler/TestSQLHandler.java
----------------------------------------------------------------------
diff --git a/solr/core/src/test/org/apache/solr/handler/TestSQLHandler.java b/solr/core/src/test/org/apache/solr/handler/TestSQLHandler.java
index 35f7ad0..d724fbd 100644
--- a/solr/core/src/test/org/apache/solr/handler/TestSQLHandler.java
+++ b/solr/core/src/test/org/apache/solr/handler/TestSQLHandler.java
@@ -317,6 +317,14 @@ public class TestSQLHandler extends AbstractFullDistribZkTestBase {
       assert(tuple.getLong("myInt") == 7);
       assert(tuple.get("myString").equals("a"));
 
+      // SOLR-8845 - Test to make sure that 1 = 0 works for things like Spark SQL
+      sParams = mapParams(CommonParams.QT, "/sql",
+          "stmt", "select id, field_i, str_s from collection1 where 1 = 0");
+
+      solrStream = new SolrStream(jetty.url, sParams);
+      tuples = getTuples(solrStream);
+
+      assertEquals(0, tuples.size());
     } finally {
       delete();
     }

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/686fbd3b/solr/solrj/src/test/org/apache/solr/client/solrj/io/sql/JdbcTest.java
----------------------------------------------------------------------
diff --git a/solr/solrj/src/test/org/apache/solr/client/solrj/io/sql/JdbcTest.java b/solr/solrj/src/test/org/apache/solr/client/solrj/io/sql/JdbcTest.java
index 927856a..ce14907 100644
--- a/solr/solrj/src/test/org/apache/solr/client/solrj/io/sql/JdbcTest.java
+++ b/solr/solrj/src/test/org/apache/solr/client/solrj/io/sql/JdbcTest.java
@@ -450,6 +450,25 @@ public class JdbcTest extends SolrCloudTestCase {
   }
 
   @Test
+  public void testOneEqualZeroMetadata() throws Exception {
+    // SOLR-8845 - Make sure that 1 = 1 (literal comparison literal) works
+    try (Connection con = DriverManager.getConnection("jdbc:solr://" + zkHost +
+        "?collection=" + COLLECTIONORALIAS)) {
+
+      try (Statement stmt = con.createStatement()) {
+        try (ResultSet rs = stmt.executeQuery("select a_s from " + COLLECTIONORALIAS + " where 1 = 0")) {
+          assertFalse(rs.next());
+
+          ResultSetMetaData resultSetMetaData = rs.getMetaData();
+          assertNotNull(resultSetMetaData);
+          assertEquals(1, resultSetMetaData.getColumnCount());
+          assertEquals("a_s", resultSetMetaData.getColumnName(1));
+        }
+      }
+    }
+  }
+
+  @Test
   public void testDriverMetadata() throws Exception {
     String collection = COLLECTIONORALIAS;
 


[06/15] lucene-solr:feature/autoscaling: LUCENE-6819: Make ExtractingRequestHandlerTest not rely on index-time boosts.

Posted by sh...@apache.org.
LUCENE-6819: Make ExtractingRequestHandlerTest not rely on index-time boosts.


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

Branch: refs/heads/feature/autoscaling
Commit: 7453f78b3539c7f4f5fa6e5324b251467ca50644
Parents: efbabf8
Author: Adrien Grand <jp...@gmail.com>
Authored: Fri Mar 3 21:43:50 2017 +0100
Committer: Adrien Grand <jp...@gmail.com>
Committed: Fri Mar 3 21:43:50 2017 +0100

----------------------------------------------------------------------
 .../solr/handler/extraction/ExtractingRequestHandlerTest.java    | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/7453f78b/solr/contrib/extraction/src/test/org/apache/solr/handler/extraction/ExtractingRequestHandlerTest.java
----------------------------------------------------------------------
diff --git a/solr/contrib/extraction/src/test/org/apache/solr/handler/extraction/ExtractingRequestHandlerTest.java b/solr/contrib/extraction/src/test/org/apache/solr/handler/extraction/ExtractingRequestHandlerTest.java
index a53bcd9..dc84b51 100644
--- a/solr/contrib/extraction/src/test/org/apache/solr/handler/extraction/ExtractingRequestHandlerTest.java
+++ b/solr/contrib/extraction/src/test/org/apache/solr/handler/extraction/ExtractingRequestHandlerTest.java
@@ -113,7 +113,7 @@ public class ExtractingRequestHandlerTest extends SolrTestCaseJ4 {
     assertQ(req("+id:simple2 +t_content:serif"), "//*[@numFound='0']"); // make sure <style> content is excluded
     assertQ(req("+id:simple2 +t_content:blur"), "//*[@numFound='0']"); // make sure <script> content is excluded
 
-    // load again in the exact same way, but boost one field
+    // make sure the fact there is an index-time boost does not fail the parsing
     loadLocal("extraction/simple.html",
       "literal.id","simple3",
       "uprefix", "t_",
@@ -125,7 +125,7 @@ public class ExtractingRequestHandlerTest extends SolrTestCaseJ4 {
     );
 
     assertQ(req("t_href:http"), "//*[@numFound='2']");
-    assertQ(req("t_href:http"), "//doc[1]/str[.='simple3']");
+    assertQ(req("t_href:http"), "//doc[2]/str[.='simple3']");
     assertQ(req("+id:simple3 +t_content_type:[* TO *]"), "//*[@numFound='1']");//test lowercase and then uprefix
 
     loadLocal("extraction/version_control.xml", "fmap.created", "extractedDate", "fmap.producer", "extractedProducer",


[11/15] lucene-solr:feature/autoscaling: SOLR-10146: Added button to the Admin UI 'Collection' tab for deleting an inactive shard

Posted by sh...@apache.org.
SOLR-10146: Added button to the Admin UI 'Collection' tab for deleting an inactive shard


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

Branch: refs/heads/feature/autoscaling
Commit: b2dcb47ef44a814c670b5cf2a53c0d6c52810d84
Parents: 59433bb
Author: Jan H�ydahl <ja...@apache.org>
Authored: Sun Mar 5 00:04:49 2017 +0100
Committer: Jan H�ydahl <ja...@apache.org>
Committed: Sun Mar 5 00:04:49 2017 +0100

----------------------------------------------------------------------
 solr/CHANGES.txt                                  |  2 ++
 solr/webapp/web/css/angular/collections.css       | 17 +++++++++++++++++
 .../web/js/angular/controllers/collections.js     | 14 ++++++++++++++
 solr/webapp/web/js/angular/services.js            |  1 +
 solr/webapp/web/partials/collections.html         | 18 +++++++++++++++++-
 5 files changed, 51 insertions(+), 1 deletion(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/b2dcb47e/solr/CHANGES.txt
----------------------------------------------------------------------
diff --git a/solr/CHANGES.txt b/solr/CHANGES.txt
index ea56cbb..bb5a784 100644
--- a/solr/CHANGES.txt
+++ b/solr/CHANGES.txt
@@ -149,6 +149,8 @@ New Features
 
 * SOLR-8593: Integrate Apache Calcite into the SQLHandler (Kevin Risden, Cao Manh Dat, Joel Bernstein)
 
+* SOLR-10146: Added button to the Admin UI 'Collection' tab for deleting an inactive shard (Amrit Sarkar, janhoy)
+
 Bug Fixes
 ----------------------
 

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/b2dcb47e/solr/webapp/web/css/angular/collections.css
----------------------------------------------------------------------
diff --git a/solr/webapp/web/css/angular/collections.css b/solr/webapp/web/css/angular/collections.css
index 7c2e0a6..e4b61bc 100644
--- a/solr/webapp/web/css/angular/collections.css
+++ b/solr/webapp/web/css/angular/collections.css
@@ -311,6 +311,14 @@ limitations under the License.
   right:10px;
 }
 
+#content #collections .shard h2 span.rem {
+  background-image: url( ../../img/ico/cross.png );
+  background-position: 100% 50%;
+  cursor: pointer;
+  padding-right: 21px;
+  right:10px;
+}
+
 #content #collections .replica h2 span .open {
   background-image: url( ../../img/ico/chevron-small.png );
 }
@@ -337,6 +345,15 @@ limitations under the License.
   background-image: url( ../../img/ico/tick.png );
 }
 
+#content #collections .delete-shard span
+{
+  background-image: url( ../../img/ico/cross.png );
+}
+#content #collections .delete-shard button.submit span
+{
+  background-image: url( ../../img/ico/tick.png );
+}
+
 #content #collections #node-name .chosen-container
 {
     width: 100% !important;

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/b2dcb47e/solr/webapp/web/js/angular/controllers/collections.js
----------------------------------------------------------------------
diff --git a/solr/webapp/web/js/angular/controllers/collections.js b/solr/webapp/web/js/angular/controllers/collections.js
index 2bd6ab6..22c5e7f 100644
--- a/solr/webapp/web/js/angular/controllers/collections.js
+++ b/solr/webapp/web/js/angular/controllers/collections.js
@@ -210,6 +210,20 @@ solrAdminApp.controller('CollectionsController',
           $scope.hideAll();
           replica.showRemove = !replica.showRemove;
       };
+      
+      $scope.toggleRemoveShard = function(shard) {
+          $scope.hideAll();
+          shard.showRemove = !shard.showRemove;
+      };
+
+      $scope.deleteShard = function(shard) {
+          Collections.deleteShard({collection: shard.collection, shard:shard.name}, function(data) {
+            shard.deleted = true;
+            $timeout(function() {
+              $scope.refresh();
+            }, 2000);
+          });
+        }
 
       $scope.deleteReplica = function(replica) {
         Collections.deleteReplica({collection: replica.collection, shard:replica.shard, replica:replica.name}, function(data) {

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/b2dcb47e/solr/webapp/web/js/angular/services.js
----------------------------------------------------------------------
diff --git a/solr/webapp/web/js/angular/services.js b/solr/webapp/web/js/angular/services.js
index 07043c3..a1df37e 100644
--- a/solr/webapp/web/js/angular/services.js
+++ b/solr/webapp/web/js/angular/services.js
@@ -34,6 +34,7 @@ solrAdminServices.factory('System',
     "deleteAlias": {params:{action: "DELETEALIAS"}},
     "deleteReplica": {params:{action: "DELETEREPLICA"}},
     "addReplica": {params:{action: "ADDREPLICA"}},
+    "deleteShard": {params:{action: "DELETESHARD"}},
     "reload": {method: "GET", params:{action:"RELOAD", core: "@core"}},
     "optimize": {params:{}}
     });

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/b2dcb47e/solr/webapp/web/partials/collections.html
----------------------------------------------------------------------
diff --git a/solr/webapp/web/partials/collections.html b/solr/webapp/web/partials/collections.html
index 9797b90..2ac12de 100644
--- a/solr/webapp/web/partials/collections.html
+++ b/solr/webapp/web/partials/collections.html
@@ -215,7 +215,23 @@ limitations under the License.
 
       <div class="block" id="shard-data">
         <div class="content shard" ng-repeat="shard in collection.shards">
-          <a ng-click="toggleShard(shard)"><h2><span ng-class="{open:shard.show}">Shard: {{shard.name}}</span></h2></a>
+          <a ng-click="toggleShard(shard)">
+          	<h2>
+          		<span ng-class="{open:shard.show}"><b>Shard: {{shard.name}}</b></span>
+          		<div style="float:right" ng-show="!shard.range || shard.state == 'inactive'"><a ng-click="toggleRemoveShard(shard)"><span class="rem"></span></a></div>
+          	</h2>
+          </a>
+          <ul ng-show="shard.showRemove">
+  			<li>
+    			<form class="delete-shard">
+      				<p class="clearfix"><em>Are you sure you want to delete this shard?</em></p>
+      				<p class="clearfix buttons">
+        				<button class="submit" ng-class="{success: shard.deleted}" ng-click="deleteShard(shard)"><span>Delete Shard</span></button>
+        				<button type="reset" class="reset" ng-click="toggleRemoveShard(shard)"><span>Cancel</span></button>
+      				</p>
+      			</form>
+    		</li>
+  		  </ul>
           <ul ng-show="shard.show">
               <li>
                   <ul>


[02/15] lucene-solr:feature/autoscaling: LUCENE-7731: fix typo in search/package-summary.html#scoring javadocs. (chillon.m via Christine Poerschke)

Posted by sh...@apache.org.
LUCENE-7731: fix typo in search/package-summary.html#scoring javadocs. (chillon.m via Christine Poerschke)


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

Branch: refs/heads/feature/autoscaling
Commit: d947f53ef0de8c0b5fef2757f1f6c8d0874df8a4
Parents: 4347431
Author: Christine Poerschke <cp...@apache.org>
Authored: Fri Mar 3 13:13:26 2017 +0000
Committer: Christine Poerschke <cp...@apache.org>
Committed: Fri Mar 3 13:13:26 2017 +0000

----------------------------------------------------------------------
 lucene/core/src/java/org/apache/lucene/search/package-info.java | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/d947f53e/lucene/core/src/java/org/apache/lucene/search/package-info.java
----------------------------------------------------------------------
diff --git a/lucene/core/src/java/org/apache/lucene/search/package-info.java b/lucene/core/src/java/org/apache/lucene/search/package-info.java
index c9d8e26..2201be0 100644
--- a/lucene/core/src/java/org/apache/lucene/search/package-info.java
+++ b/lucene/core/src/java/org/apache/lucene/search/package-info.java
@@ -226,7 +226,7 @@
  *    <a href="http://en.wikipedia.org/wiki/Information_retrieval#Model_types">models</a>, including:
  *    <ul>
  *      <li><a href="http://en.wikipedia.org/wiki/Vector_Space_Model">Vector Space Model (VSM)</a></li>
- *      <li><a href="http://en.wikipedia.org/wiki/Probabilistic_relevance_model">Probablistic Models</a> such as 
+ *      <li><a href="http://en.wikipedia.org/wiki/Probabilistic_relevance_model">Probabilistic Models</a> such as 
  *          <a href="http://en.wikipedia.org/wiki/Probabilistic_relevance_model_(BM25)">Okapi BM25</a> and
  *          <a href="http://en.wikipedia.org/wiki/Divergence-from-randomness_model">DFR</a></li>
  *      <li><a href="http://en.wikipedia.org/wiki/Language_model">Language models</a></li>


[14/15] lucene-solr:feature/autoscaling: SOLR-10230: default TTL of PKIAuthenticationPlugin increased to 10secs

Posted by sh...@apache.org.
SOLR-10230: default TTL of PKIAuthenticationPlugin increased to 10secs


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

Branch: refs/heads/feature/autoscaling
Commit: fb1d2d1ae21f04be355637cfc3b096b090583378
Parents: f49bd79
Author: Noble Paul <no...@apache.org>
Authored: Mon Mar 6 10:09:01 2017 +1030
Committer: Noble Paul <no...@apache.org>
Committed: Mon Mar 6 10:09:01 2017 +1030

----------------------------------------------------------------------
 solr/CHANGES.txt                                                 | 4 +++-
 .../java/org/apache/solr/security/PKIAuthenticationPlugin.java   | 2 +-
 2 files changed, 4 insertions(+), 2 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/fb1d2d1a/solr/CHANGES.txt
----------------------------------------------------------------------
diff --git a/solr/CHANGES.txt b/solr/CHANGES.txt
index 5b7eac5..0b05749 100644
--- a/solr/CHANGES.txt
+++ b/solr/CHANGES.txt
@@ -285,7 +285,9 @@ Other Changes
 * SOLR-10155: For numeric types facet.contains= and facet.prefix= are now rejected.
   (Gus Heck, Christine Poerschke)
 
-* SOLR-10171 Add Constant Reduction Rules to Calcite Planner (Kevin Risden)
+* SOLR-10171: Add Constant Reduction Rules to Calcite Planner (Kevin Risden)
+
+* SOLR-10230: default TTL of PKIAuthenticationPlugin increased to 10secs (noble)
 
 ==================  6.4.2 ==================
 

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/fb1d2d1a/solr/core/src/java/org/apache/solr/security/PKIAuthenticationPlugin.java
----------------------------------------------------------------------
diff --git a/solr/core/src/java/org/apache/solr/security/PKIAuthenticationPlugin.java b/solr/core/src/java/org/apache/solr/security/PKIAuthenticationPlugin.java
index fdd4408..fcc0560 100644
--- a/solr/core/src/java/org/apache/solr/security/PKIAuthenticationPlugin.java
+++ b/solr/core/src/java/org/apache/solr/security/PKIAuthenticationPlugin.java
@@ -63,7 +63,7 @@ public class PKIAuthenticationPlugin extends AuthenticationPlugin implements Htt
   private final Map<String, PublicKey> keyCache = new ConcurrentHashMap<>();
   private final CryptoKeys.RSAKeyPair keyPair = new CryptoKeys.RSAKeyPair();
   private final CoreContainer cores;
-  private final int MAX_VALIDITY = Integer.parseInt(System.getProperty("pkiauth.ttl", "5000"));
+  private final int MAX_VALIDITY = Integer.parseInt(System.getProperty("pkiauth.ttl", "10000"));
   private final String myNodeName;
   private final HttpHeaderClientInterceptor interceptor = new HttpHeaderClientInterceptor();
   private boolean interceptorRegistered = false;


[15/15] lucene-solr:feature/autoscaling: SOLR-9999: Instrument DirectUpdateHandler2.

Posted by sh...@apache.org.
SOLR-9999: Instrument DirectUpdateHandler2.


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

Branch: refs/heads/feature/autoscaling
Commit: acb185b2dc7522e6a4fa55d54e82910736668f8d
Parents: fb1d2d1
Author: Andrzej Bialecki <ab...@apache.org>
Authored: Mon Mar 6 11:09:59 2017 +0100
Committer: Andrzej Bialecki <ab...@apache.org>
Committed: Mon Mar 6 11:10:43 2017 +0100

----------------------------------------------------------------------
 solr/CHANGES.txt                                |   3 +
 .../src/java/org/apache/solr/core/SolrCore.java |   3 +
 .../solr/update/DirectUpdateHandler2.java       | 128 +++++++++++++------
 .../solr/update/DirectUpdateHandlerTest.java    | 108 +++++++++++++---
 4 files changed, 185 insertions(+), 57 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/acb185b2/solr/CHANGES.txt
----------------------------------------------------------------------
diff --git a/solr/CHANGES.txt b/solr/CHANGES.txt
index 0b05749..4cfcb72 100644
--- a/solr/CHANGES.txt
+++ b/solr/CHANGES.txt
@@ -151,6 +151,9 @@ New Features
 
 * SOLR-10146: Added button to the Admin UI 'Collection' tab for deleting an inactive shard (Amrit Sarkar, janhoy)
 
+* SOLR-9999: Instrument DirectUpdateHandler2. This registers existing statistics under metrics API and adds
+  more metrics to track the rates of update and delete commands. (ab)
+
 Bug Fixes
 ----------------------
 

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/acb185b2/solr/core/src/java/org/apache/solr/core/SolrCore.java
----------------------------------------------------------------------
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 1c30e4c..f22c472 100644
--- a/solr/core/src/java/org/apache/solr/core/SolrCore.java
+++ b/solr/core/src/java/org/apache/solr/core/SolrCore.java
@@ -1072,6 +1072,9 @@ public final class SolrCore implements SolrInfoMBean, Closeable {
     } else {
       newUpdateHandler = createUpdateHandler(updateHandlerClass, updateHandler);
     }
+    if (newUpdateHandler instanceof SolrMetricProducer) {
+      coreMetricManager.registerMetricProducer("updateHandler", (SolrMetricProducer)newUpdateHandler);
+    }
     infoRegistry.put("updateHandler", newUpdateHandler);
     return newUpdateHandler;
   }

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/acb185b2/solr/core/src/java/org/apache/solr/update/DirectUpdateHandler2.java
----------------------------------------------------------------------
diff --git a/solr/core/src/java/org/apache/solr/update/DirectUpdateHandler2.java b/solr/core/src/java/org/apache/solr/update/DirectUpdateHandler2.java
index ebff564..4592bcf 100644
--- a/solr/core/src/java/org/apache/solr/update/DirectUpdateHandler2.java
+++ b/solr/core/src/java/org/apache/solr/update/DirectUpdateHandler2.java
@@ -26,6 +26,8 @@ import java.util.concurrent.ExecutionException;
 import java.util.concurrent.Future;
 import java.util.concurrent.atomic.LongAdder;
 
+import com.codahale.metrics.Gauge;
+import com.codahale.metrics.Meter;
 import org.apache.lucene.document.Document;
 import org.apache.lucene.document.Field;
 import org.apache.lucene.index.CodecReader;
@@ -49,6 +51,8 @@ import org.apache.solr.common.util.NamedList;
 import org.apache.solr.common.util.SimpleOrderedMap;
 import org.apache.solr.core.SolrConfig.UpdateHandlerInfo;
 import org.apache.solr.core.SolrCore;
+import org.apache.solr.metrics.SolrMetricManager;
+import org.apache.solr.metrics.SolrMetricProducer;
 import org.apache.solr.request.LocalSolrQueryRequest;
 import org.apache.solr.request.SolrQueryRequest;
 import org.apache.solr.request.SolrRequestInfo;
@@ -71,24 +75,25 @@ import org.slf4j.LoggerFactory;
  * <p>
  * TODO: add soft commitWithin support
  */
-public class DirectUpdateHandler2 extends UpdateHandler implements SolrCoreState.IndexWriterCloser {
+public class DirectUpdateHandler2 extends UpdateHandler implements SolrCoreState.IndexWriterCloser, SolrMetricProducer {
   protected final SolrCoreState solrCoreState;
 
   // stats
   LongAdder addCommands = new LongAdder();
-  LongAdder addCommandsCumulative = new LongAdder();
+  Meter addCommandsCumulative;
   LongAdder deleteByIdCommands= new LongAdder();
-  LongAdder deleteByIdCommandsCumulative= new LongAdder();
-  LongAdder deleteByQueryCommands= new LongAdder();
-  LongAdder deleteByQueryCommandsCumulative= new LongAdder();
-  LongAdder expungeDeleteCommands = new LongAdder();
-  LongAdder mergeIndexesCommands = new LongAdder();
-  LongAdder commitCommands= new LongAdder();
-  LongAdder optimizeCommands= new LongAdder();
-  LongAdder rollbackCommands= new LongAdder();
-  LongAdder numDocsPending= new LongAdder();
+  Meter deleteByIdCommandsCumulative;
+  LongAdder deleteByQueryCommands = new LongAdder();
+  Meter deleteByQueryCommandsCumulative;
+  Meter expungeDeleteCommands;
+  Meter mergeIndexesCommands;
+  Meter commitCommands;
+  Meter splitCommands;
+  Meter optimizeCommands;
+  Meter rollbackCommands;
+  LongAdder numDocsPending = new LongAdder();
   LongAdder numErrors = new LongAdder();
-  LongAdder numErrorsCumulative = new LongAdder();
+  Meter numErrorsCumulative;
 
   // tracks when auto-commit should occur
   protected final CommitTracker commitTracker;
@@ -146,6 +151,35 @@ public class DirectUpdateHandler2 extends UpdateHandler implements SolrCoreState
     }
   }
 
+  @Override
+  public void initializeMetrics(SolrMetricManager manager, String registry, String scope) {
+    commitCommands = manager.meter(registry, "commits", getCategory().toString(), scope);
+    Gauge<Integer> autoCommits = () -> commitTracker.getCommitCount();
+    manager.register(registry, autoCommits, true, "autoCommits", getCategory().toString(), scope);
+    Gauge<Integer> softAutoCommits = () -> softCommitTracker.getCommitCount();
+    manager.register(registry, softAutoCommits, true, "softAutoCommits", getCategory().toString(), scope);
+    optimizeCommands = manager.meter(registry, "optimizes", getCategory().toString(), scope);
+    rollbackCommands = manager.meter(registry, "rollbacks", getCategory().toString(), scope);
+    splitCommands = manager.meter(registry, "splits", getCategory().toString(), scope);
+    mergeIndexesCommands = manager.meter(registry, "merges", getCategory().toString(), scope);
+    expungeDeleteCommands = manager.meter(registry, "expungeDeletes", getCategory().toString(), scope);
+    Gauge<Long> docsPending = () -> numDocsPending.longValue();
+    manager.register(registry, docsPending, true, "docsPending", getCategory().toString(), scope);
+    Gauge<Long> adds = () -> addCommands.longValue();
+    manager.register(registry, adds, true, "adds", getCategory().toString(), scope);
+    Gauge<Long> deletesById = () -> deleteByIdCommands.longValue();
+    manager.register(registry, deletesById, true, "deletesById", getCategory().toString(), scope);
+    Gauge<Long> deletesByQuery = () -> deleteByQueryCommands.longValue();
+    manager.register(registry, deletesByQuery, true, "deletesByQuery", getCategory().toString(), scope);
+    Gauge<Long> errors = () -> numErrors.longValue();
+    manager.register(registry, errors, true, "errors", getCategory().toString(), scope);
+
+    addCommandsCumulative = manager.meter(registry, "cumulativeAdds", getCategory().toString(), scope);
+    deleteByIdCommandsCumulative = manager.meter(registry, "cumulativeDeletesById", getCategory().toString(), scope);
+    deleteByQueryCommandsCumulative = manager.meter(registry, "cumulativeDeletesByQuery", getCategory().toString(), scope);
+    numErrorsCumulative = manager.meter(registry, "cumulativeErrors", getCategory().toString(), scope);
+  }
+
   private void deleteAll() throws IOException {
     log.info(core.getLogId() + "REMOVING ALL DOCUMENTS FROM INDEX");
     RefCounted<IndexWriter> iw = solrCoreState.getIndexWriter(core);
@@ -192,7 +226,7 @@ public class DirectUpdateHandler2 extends UpdateHandler implements SolrCoreState
     int rc = -1;
 
     addCommands.increment();
-    addCommandsCumulative.increment();
+    addCommandsCumulative.mark();
 
     // if there is no ID field, don't overwrite
     if (idField == null) {
@@ -230,7 +264,7 @@ public class DirectUpdateHandler2 extends UpdateHandler implements SolrCoreState
     } finally {
       if (rc != 1) {
         numErrors.increment();
-        numErrorsCumulative.increment();
+        numErrorsCumulative.mark();
       } else {
         numDocsPending.increment();
       }
@@ -368,7 +402,7 @@ public class DirectUpdateHandler2 extends UpdateHandler implements SolrCoreState
   @Override
   public void delete(DeleteUpdateCommand cmd) throws IOException {
     deleteByIdCommands.increment();
-    deleteByIdCommandsCumulative.increment();
+    deleteByIdCommandsCumulative.mark();
 
     Term deleteTerm = new Term(idField.getName(), cmd.getIndexedId());
     // SolrCore.verbose("deleteDocuments",deleteTerm,writer);
@@ -426,7 +460,7 @@ public class DirectUpdateHandler2 extends UpdateHandler implements SolrCoreState
   @Override
   public void deleteByQuery(DeleteUpdateCommand cmd) throws IOException {
     deleteByQueryCommands.increment();
-    deleteByQueryCommandsCumulative.increment();
+    deleteByQueryCommandsCumulative.mark();
     boolean madeIt=false;
     try {
       Query q = getQuery(cmd);
@@ -478,7 +512,7 @@ public class DirectUpdateHandler2 extends UpdateHandler implements SolrCoreState
     } finally {
       if (!madeIt) {
         numErrors.increment();
-        numErrorsCumulative.increment();
+        numErrorsCumulative.mark();
       }
     }
   }
@@ -486,7 +520,7 @@ public class DirectUpdateHandler2 extends UpdateHandler implements SolrCoreState
 
   @Override
   public int mergeIndexes(MergeIndexesCommand cmd) throws IOException {
-    mergeIndexesCommands.increment();
+    mergeIndexesCommands.mark();
     int rc;
 
     log.info("start " + cmd);
@@ -540,7 +574,10 @@ public class DirectUpdateHandler2 extends UpdateHandler implements SolrCoreState
       error=false;
     }
     finally {
-      if (error) numErrors.increment();
+      if (error) {
+        numErrors.increment();
+        numErrorsCumulative.mark();
+      }
     }
   }
 
@@ -552,10 +589,10 @@ public class DirectUpdateHandler2 extends UpdateHandler implements SolrCoreState
     }
 
     if (cmd.optimize) {
-      optimizeCommands.increment();
+      optimizeCommands.mark();
     } else {
-      commitCommands.increment();
-      if (cmd.expungeDeletes) expungeDeleteCommands.increment();
+      commitCommands.mark();
+      if (cmd.expungeDeletes) expungeDeleteCommands.mark();
     }
 
     Future[] waitSearcher = null;
@@ -674,7 +711,10 @@ public class DirectUpdateHandler2 extends UpdateHandler implements SolrCoreState
       addCommands.reset();
       deleteByIdCommands.reset();
       deleteByQueryCommands.reset();
-      if (error) numErrors.increment();
+      if (error) {
+        numErrors.increment();
+        numErrorsCumulative.mark();
+      }
     }
 
     // if we are supposed to wait for the searcher to be registered, then we should do it
@@ -702,7 +742,7 @@ public class DirectUpdateHandler2 extends UpdateHandler implements SolrCoreState
       throw new UnsupportedOperationException("Rollback is currently not supported in SolrCloud mode. (SOLR-4895)");
     }
 
-    rollbackCommands.increment();
+    rollbackCommands.mark();
 
     boolean error=true;
 
@@ -722,10 +762,13 @@ public class DirectUpdateHandler2 extends UpdateHandler implements SolrCoreState
       error=false;
     }
     finally {
-      addCommandsCumulative.add(-addCommands.sumThenReset());
-      deleteByIdCommandsCumulative.add(-deleteByIdCommands.sumThenReset());
-      deleteByQueryCommandsCumulative.add(-deleteByQueryCommands.sumThenReset());
-      if (error) numErrors.increment();
+      addCommandsCumulative.mark(-addCommands.sumThenReset());
+      deleteByIdCommandsCumulative.mark(-deleteByIdCommands.sumThenReset());
+      deleteByQueryCommandsCumulative.mark(-deleteByQueryCommands.sumThenReset());
+      if (error) {
+        numErrors.increment();
+        numErrorsCumulative.mark();
+      }
     }
   }
 
@@ -834,7 +877,13 @@ public class DirectUpdateHandler2 extends UpdateHandler implements SolrCoreState
   public void split(SplitIndexCommand cmd) throws IOException {
     commit(new CommitUpdateCommand(cmd.req, false));
     SolrIndexSplitter splitter = new SolrIndexSplitter(cmd);
-    splitter.split();
+    splitCommands.mark();
+    try {
+      splitter.split();
+    } catch (IOException e) {
+      numErrors.increment();
+      numErrorsCumulative.mark();
+    }
   }
 
   /**
@@ -873,10 +922,10 @@ public class DirectUpdateHandler2 extends UpdateHandler implements SolrCoreState
   }
 
   private void updateDocument(AddUpdateCommand cmd, IndexWriter writer, Term updateTerm) throws IOException {
-    if(cmd.isBlock()){
+    if (cmd.isBlock()) {
       log.debug("updateDocuments({})", cmd);
       writer.updateDocuments(updateTerm, cmd);
-    }else{
+    } else {
       Document luceneDocument = cmd.getLuceneDocument(false);
       log.debug("updateDocument({})", cmd);
       writer.updateDocument(updateTerm, luceneDocument);
@@ -916,7 +965,7 @@ public class DirectUpdateHandler2 extends UpdateHandler implements SolrCoreState
   @Override
   public NamedList getStatistics() {
     NamedList lst = new SimpleOrderedMap();
-    lst.add("commits", commitCommands.longValue());
+    lst.add("commits", commitCommands.getCount());
     if (commitTracker.getDocsUpperBound() > 0) {
       lst.add("autocommit maxDocs", commitTracker.getDocsUpperBound());
     }
@@ -931,9 +980,9 @@ public class DirectUpdateHandler2 extends UpdateHandler implements SolrCoreState
       lst.add("soft autocommit maxTime", "" + softCommitTracker.getTimeUpperBound() + "ms");
     }
     lst.add("soft autocommits", softCommitTracker.getCommitCount());
-    lst.add("optimizes", optimizeCommands.longValue());
-    lst.add("rollbacks", rollbackCommands.longValue());
-    lst.add("expungeDeletes", expungeDeleteCommands.longValue());
+    lst.add("optimizes", optimizeCommands.getCount());
+    lst.add("rollbacks", rollbackCommands.getCount());
+    lst.add("expungeDeletes", expungeDeleteCommands.getCount());
     lst.add("docsPending", numDocsPending.longValue());
     // pset.size() not synchronized, but it should be fine to access.
     // lst.add("deletesPending", pset.size());
@@ -941,10 +990,10 @@ public class DirectUpdateHandler2 extends UpdateHandler implements SolrCoreState
     lst.add("deletesById", deleteByIdCommands.longValue());
     lst.add("deletesByQuery", deleteByQueryCommands.longValue());
     lst.add("errors", numErrors.longValue());
-    lst.add("cumulative_adds", addCommandsCumulative.longValue());
-    lst.add("cumulative_deletesById", deleteByIdCommandsCumulative.longValue());
-    lst.add("cumulative_deletesByQuery", deleteByQueryCommandsCumulative.longValue());
-    lst.add("cumulative_errors", numErrorsCumulative.longValue());
+    lst.add("cumulative_adds", addCommandsCumulative.getCount());
+    lst.add("cumulative_deletesById", deleteByIdCommandsCumulative.getCount());
+    lst.add("cumulative_deletesByQuery", deleteByQueryCommandsCumulative.getCount());
+    lst.add("cumulative_errors", numErrorsCumulative.getCount());
     if (this.ulog != null) {
       lst.add("transaction_logs_total_size", ulog.getTotalLogsSize());
       lst.add("transaction_logs_total_number", ulog.getTotalLogsNumber());
@@ -971,4 +1020,5 @@ public class DirectUpdateHandler2 extends UpdateHandler implements SolrCoreState
   public CommitTracker getSoftCommitTracker() {
     return softCommitTracker;
   }
+
 }

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/acb185b2/solr/core/src/test/org/apache/solr/update/DirectUpdateHandlerTest.java
----------------------------------------------------------------------
diff --git a/solr/core/src/test/org/apache/solr/update/DirectUpdateHandlerTest.java b/solr/core/src/test/org/apache/solr/update/DirectUpdateHandlerTest.java
index ca604fe..2816354 100644
--- a/solr/core/src/test/org/apache/solr/update/DirectUpdateHandlerTest.java
+++ b/solr/core/src/test/org/apache/solr/update/DirectUpdateHandlerTest.java
@@ -23,6 +23,9 @@ import java.util.Map;
 import java.util.concurrent.atomic.AtomicInteger;
 import java.util.concurrent.atomic.AtomicLong;
 
+import com.codahale.metrics.Gauge;
+import com.codahale.metrics.Meter;
+import com.codahale.metrics.Metric;
 import org.apache.lucene.index.TieredMergePolicy;
 import org.apache.lucene.index.DirectoryReader;
 import org.apache.lucene.store.Directory;
@@ -99,7 +102,29 @@ public class DirectUpdateHandlerTest extends SolrTestCaseJ4 {
 
   @Test
   public void testBasics() throws Exception {
-    
+
+    // get initial metrics
+    Map<String, Metric> metrics = h.getCoreContainer().getMetricManager()
+        .registry(h.getCore().getCoreMetricManager().getRegistryName()).getMetrics();
+
+    String PREFIX = "UPDATE.updateHandler.";
+
+    String commitsName = PREFIX + "commits";
+    assertTrue(metrics.containsKey(commitsName));
+    String addsName = PREFIX + "adds";
+    assertTrue(metrics.containsKey(addsName));
+    String cumulativeAddsName = PREFIX + "cumulativeAdds";
+    String delsIName = PREFIX + "deletesById";
+    String cumulativeDelsIName = PREFIX + "cumulativeDeletesById";
+    String delsQName = PREFIX + "deletesByQuery";
+    String cumulativeDelsQName = PREFIX + "cumulativeDeletesByQuery";
+    long commits = ((Meter) metrics.get(commitsName)).getCount();
+    long adds = ((Gauge<Long>) metrics.get(addsName)).getValue();
+    long cumulativeAdds = ((Meter) metrics.get(cumulativeAddsName)).getCount();
+    long cumulativeDelsI = ((Meter) metrics.get(cumulativeDelsIName)).getCount();
+    long cumulativeDelsQ = ((Meter) metrics.get(cumulativeDelsQName)).getCount();
+
+
     assertNull("This test requires a schema that has no version field, " +
                "it appears the schema file in use has been edited to violate " +
                "this requirement",
@@ -112,8 +137,23 @@ public class DirectUpdateHandlerTest extends SolrTestCaseJ4 {
     assertQ(req("q","id:5"), "//*[@numFound='0']");
     assertQ(req("q","id:6"), "//*[@numFound='0']");
 
+    long newAdds = ((Gauge<Long>) metrics.get(addsName)).getValue();
+    long newCumulativeAdds = ((Meter) metrics.get(cumulativeAddsName)).getCount();
+    assertEquals("new adds", 2, newAdds - adds);
+    assertEquals("new cumulative adds", 2, newCumulativeAdds - cumulativeAdds);
+
     assertU(commit());
 
+    long newCommits = ((Meter) metrics.get(commitsName)).getCount();
+    assertEquals("new commits", 1, newCommits - commits);
+
+    newAdds = ((Gauge<Long>) metrics.get(addsName)).getValue();
+    newCumulativeAdds = ((Meter) metrics.get(cumulativeAddsName)).getCount();
+    // adds should be reset to 0 after commit
+    assertEquals("new adds after commit", 0, newAdds);
+    // not so with cumulative ones!
+    assertEquals("new cumulative adds after commit", 2, newCumulativeAdds - cumulativeAdds);
+
     // now they should be there
     assertQ(req("q","id:5"), "//*[@numFound='1']");
     assertQ(req("q","id:6"), "//*[@numFound='1']");
@@ -121,11 +161,21 @@ public class DirectUpdateHandlerTest extends SolrTestCaseJ4 {
     // now delete one
     assertU(delI("5"));
 
+    long newDelsI = ((Gauge<Long>) metrics.get(delsIName)).getValue();
+    long newCumulativeDelsI = ((Meter) metrics.get(cumulativeDelsIName)).getCount();
+    assertEquals("new delsI", 1, newDelsI);
+    assertEquals("new cumulative delsI", 1, newCumulativeDelsI - cumulativeDelsI);
+
     // not committed yet
     assertQ(req("q","id:5"), "//*[@numFound='1']");
 
     assertU(commit());
-    
+    // delsI should be reset to 0 after commit
+    newDelsI = ((Gauge<Long>) metrics.get(delsIName)).getValue();
+    newCumulativeDelsI = ((Meter) metrics.get(cumulativeDelsIName)).getCount();
+    assertEquals("new delsI after commit", 0, newDelsI);
+    assertEquals("new cumulative delsI after commit", 1, newCumulativeDelsI - cumulativeDelsI);
+
     // 5 should be gone
     assertQ(req("q","id:5"), "//*[@numFound='0']");
     assertQ(req("q","id:6"), "//*[@numFound='1']");
@@ -133,14 +183,36 @@ public class DirectUpdateHandlerTest extends SolrTestCaseJ4 {
     // now delete all
     assertU(delQ("*:*"));
 
+    long newDelsQ = ((Gauge<Long>) metrics.get(delsQName)).getValue();
+    long newCumulativeDelsQ = ((Meter) metrics.get(cumulativeDelsQName)).getCount();
+    assertEquals("new delsQ", 1, newDelsQ);
+    assertEquals("new cumulative delsQ", 1, newCumulativeDelsQ - cumulativeDelsQ);
+
     // not committed yet
     assertQ(req("q","id:6"), "//*[@numFound='1']");
 
     assertU(commit());
 
+    newDelsQ = ((Gauge<Long>) metrics.get(delsQName)).getValue();
+    newCumulativeDelsQ = ((Meter) metrics.get(cumulativeDelsQName)).getCount();
+    assertEquals("new delsQ after commit", 0, newDelsQ);
+    assertEquals("new cumulative delsQ after commit", 1, newCumulativeDelsQ - cumulativeDelsQ);
+
     // 6 should be gone
     assertQ(req("q","id:6"), "//*[@numFound='0']");
 
+    // verify final metrics
+    newCommits = ((Meter) metrics.get(commitsName)).getCount();
+    assertEquals("new commits", 3, newCommits - commits);
+    newAdds = ((Gauge<Long>) metrics.get(addsName)).getValue();
+    assertEquals("new adds", 0, newAdds);
+    newCumulativeAdds = ((Meter) metrics.get(cumulativeAddsName)).getCount();
+    assertEquals("new cumulative adds", 2, newCumulativeAdds - cumulativeAdds);
+    newDelsI = ((Gauge<Long>) metrics.get(delsIName)).getValue();
+    assertEquals("new delsI", 0, newDelsI);
+    newCumulativeDelsI = ((Meter) metrics.get(cumulativeDelsIName)).getCount();
+    assertEquals("new cumulative delsI", 1, newCumulativeDelsI - cumulativeDelsI);
+
   }
 
 
@@ -161,12 +233,12 @@ public class DirectUpdateHandlerTest extends SolrTestCaseJ4 {
     CommitUpdateCommand cmtCmd = new CommitUpdateCommand(ureq, false);
     cmtCmd.waitSearcher = true;
     assertEquals( 1, duh2.addCommands.longValue() );
-    assertEquals( 1, duh2.addCommandsCumulative.longValue() );
-    assertEquals( 0, duh2.commitCommands.longValue() );
+    assertEquals( 1, duh2.addCommandsCumulative.getCount() );
+    assertEquals( 0, duh2.commitCommands.getCount() );
     updater.commit(cmtCmd);
     assertEquals( 0, duh2.addCommands.longValue() );
-    assertEquals( 1, duh2.addCommandsCumulative.longValue() );
-    assertEquals( 1, duh2.commitCommands.longValue() );
+    assertEquals( 1, duh2.addCommandsCumulative.getCount() );
+    assertEquals( 1, duh2.commitCommands.getCount() );
     ureq.close();
 
     assertU(adoc("id","B"));
@@ -175,12 +247,12 @@ public class DirectUpdateHandlerTest extends SolrTestCaseJ4 {
     ureq = req();
     RollbackUpdateCommand rbkCmd = new RollbackUpdateCommand(ureq);
     assertEquals( 1, duh2.addCommands.longValue() );
-    assertEquals( 2, duh2.addCommandsCumulative.longValue() );
-    assertEquals( 0, duh2.rollbackCommands.longValue() );
+    assertEquals( 2, duh2.addCommandsCumulative.getCount() );
+    assertEquals( 0, duh2.rollbackCommands.getCount() );
     updater.rollback(rbkCmd);
     assertEquals( 0, duh2.addCommands.longValue() );
-    assertEquals( 1, duh2.addCommandsCumulative.longValue() );
-    assertEquals( 1, duh2.rollbackCommands.longValue() );
+    assertEquals( 1, duh2.addCommandsCumulative.getCount() );
+    assertEquals( 1, duh2.rollbackCommands.getCount() );
     ureq.close();
     
     // search - "B" should not be found.
@@ -221,12 +293,12 @@ public class DirectUpdateHandlerTest extends SolrTestCaseJ4 {
     CommitUpdateCommand cmtCmd = new CommitUpdateCommand(ureq, false);
     cmtCmd.waitSearcher = true;
     assertEquals( 2, duh2.addCommands.longValue() );
-    assertEquals( 2, duh2.addCommandsCumulative.longValue() );
-    assertEquals( 0, duh2.commitCommands.longValue() );
+    assertEquals( 2, duh2.addCommandsCumulative.getCount() );
+    assertEquals( 0, duh2.commitCommands.getCount() );
     updater.commit(cmtCmd);
     assertEquals( 0, duh2.addCommands.longValue() );
-    assertEquals( 2, duh2.addCommandsCumulative.longValue() );
-    assertEquals( 1, duh2.commitCommands.longValue() );
+    assertEquals( 2, duh2.addCommandsCumulative.getCount() );
+    assertEquals( 1, duh2.commitCommands.getCount() );
     ureq.close();
 
     // search - "A","B" should be found.
@@ -254,13 +326,13 @@ public class DirectUpdateHandlerTest extends SolrTestCaseJ4 {
     ureq = req();
     RollbackUpdateCommand rbkCmd = new RollbackUpdateCommand(ureq);
     assertEquals( 1, duh2.deleteByIdCommands.longValue() );
-    assertEquals( 1, duh2.deleteByIdCommandsCumulative.longValue() );
-    assertEquals( 0, duh2.rollbackCommands.longValue() );
+    assertEquals( 1, duh2.deleteByIdCommandsCumulative.getCount() );
+    assertEquals( 0, duh2.rollbackCommands.getCount() );
     updater.rollback(rbkCmd);
     ureq.close();
     assertEquals( 0, duh2.deleteByIdCommands.longValue() );
-    assertEquals( 0, duh2.deleteByIdCommandsCumulative.longValue() );
-    assertEquals( 1, duh2.rollbackCommands.longValue() );
+    assertEquals( 0, duh2.deleteByIdCommandsCumulative.getCount() );
+    assertEquals( 1, duh2.rollbackCommands.getCount() );
     
     // search - "B" should be found.
     assertQ("\"B\" should be found.", req


[07/15] lucene-solr:feature/autoscaling: SOLR-8593: Update CHANGES.txt

Posted by sh...@apache.org.
SOLR-8593: Update CHANGES.txt


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

Branch: refs/heads/feature/autoscaling
Commit: 5ae51d4ddf5e1a27b8f1741910a32697f952f482
Parents: 7453f78
Author: Joel Bernstein <jb...@apache.org>
Authored: Fri Mar 3 20:59:36 2017 -0500
Committer: Joel Bernstein <jb...@apache.org>
Committed: Fri Mar 3 20:59:36 2017 -0500

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


http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/5ae51d4d/solr/CHANGES.txt
----------------------------------------------------------------------
diff --git a/solr/CHANGES.txt b/solr/CHANGES.txt
index 7ea6226..2ffcc46 100644
--- a/solr/CHANGES.txt
+++ b/solr/CHANGES.txt
@@ -147,6 +147,8 @@ New Features
 
 * SOLR-10156: Add significantTerms Streaming Expression (Joel Bernstein)
 
+* SOLR-8593: Integrate Apache Calcite into the SQLHandler (Kevin Risden, Cao Manh Dat, Joel Bernstein)
+
 Bug Fixes
 ----------------------
 


[04/15] lucene-solr:feature/autoscaling: SOLR-10225: fix BlockCache evictions metric to not count explicit removal

Posted by sh...@apache.org.
SOLR-10225: fix BlockCache evictions metric to not count explicit removal


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

Branch: refs/heads/feature/autoscaling
Commit: 4990eed1b3aef3fb8bf98fa5427f12a96c029d03
Parents: fbc844d
Author: yonik <yo...@apache.org>
Authored: Fri Mar 3 12:39:33 2017 -0500
Committer: yonik <yo...@apache.org>
Committed: Fri Mar 3 12:39:33 2017 -0500

----------------------------------------------------------------------
 solr/CHANGES.txt                                            | 3 +++
 .../java/org/apache/solr/store/blockcache/BlockCache.java   | 9 ++++++---
 2 files changed, 9 insertions(+), 3 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/4990eed1/solr/CHANGES.txt
----------------------------------------------------------------------
diff --git a/solr/CHANGES.txt b/solr/CHANGES.txt
index fa4d33b..2659155 100644
--- a/solr/CHANGES.txt
+++ b/solr/CHANGES.txt
@@ -196,6 +196,9 @@ Bug Fixes
 
 * SOLR-10196: ElectionContext#runLeaderProcess can hit NPE on core close. (Mark Miller)
 
+* SOLR-10225: Fix HDFS BlockCache evictions metric to not count explicit removal
+  due to a directory close. (yonik)
+
 Optimizations
 ----------------------
 

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/4990eed1/solr/core/src/java/org/apache/solr/store/blockcache/BlockCache.java
----------------------------------------------------------------------
diff --git a/solr/core/src/java/org/apache/solr/store/blockcache/BlockCache.java b/solr/core/src/java/org/apache/solr/store/blockcache/BlockCache.java
index ad5b2f4..9deef6c 100644
--- a/solr/core/src/java/org/apache/solr/store/blockcache/BlockCache.java
+++ b/solr/core/src/java/org/apache/solr/store/blockcache/BlockCache.java
@@ -23,6 +23,7 @@ import java.util.concurrent.atomic.AtomicInteger;
 
 import com.github.benmanes.caffeine.cache.Cache;
 import com.github.benmanes.caffeine.cache.Caffeine;
+import com.github.benmanes.caffeine.cache.RemovalCause;
 import com.github.benmanes.caffeine.cache.RemovalListener;
 
 /**
@@ -75,7 +76,7 @@ public class BlockCache {
       lockCounters[i] = new AtomicInteger();
     }
 
-    RemovalListener<BlockCacheKey,BlockCacheLocation> listener = (blockCacheKey, blockCacheLocation, removalCause) -> releaseLocation(blockCacheKey, blockCacheLocation);
+    RemovalListener<BlockCacheKey,BlockCacheLocation> listener = (blockCacheKey, blockCacheLocation, removalCause) -> releaseLocation(blockCacheKey, blockCacheLocation, removalCause);
 
     cache = Caffeine.newBuilder()
         .removalListener(listener)
@@ -88,7 +89,7 @@ public class BlockCache {
     cache.invalidate(key);
   }
   
-  private void releaseLocation(BlockCacheKey blockCacheKey, BlockCacheLocation location) {
+  private void releaseLocation(BlockCacheKey blockCacheKey, BlockCacheLocation location, RemovalCause removalCause) {
     if (location == null) {
       return;
     }
@@ -103,7 +104,9 @@ public class BlockCache {
     for (OnRelease onRelease : onReleases) {
       onRelease.release(blockCacheKey);
     }
-    metrics.blockCacheEviction.incrementAndGet();
+    if (removalCause.wasEvicted()) {
+      metrics.blockCacheEviction.incrementAndGet();
+    }
     metrics.blockCacheSize.decrementAndGet();
   }
 


[09/15] lucene-solr:feature/autoscaling: SOLR-10227 Fix a test failure.

Posted by sh...@apache.org.
SOLR-10227 Fix a test failure.


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

Branch: refs/heads/feature/autoscaling
Commit: 5ccc8e7ae9419ec8077f6fa6c3a2972edb9e393d
Parents: b66d133
Author: Andrzej Bialecki <ab...@apache.org>
Authored: Sat Mar 4 09:31:26 2017 +0100
Committer: Andrzej Bialecki <ab...@apache.org>
Committed: Sat Mar 4 09:31:26 2017 +0100

----------------------------------------------------------------------
 .../src/test/org/apache/solr/metrics/SolrMetricManagerTest.java  | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/5ccc8e7a/solr/core/src/test/org/apache/solr/metrics/SolrMetricManagerTest.java
----------------------------------------------------------------------
diff --git a/solr/core/src/test/org/apache/solr/metrics/SolrMetricManagerTest.java b/solr/core/src/test/org/apache/solr/metrics/SolrMetricManagerTest.java
index 3813488..ee2acd3 100644
--- a/solr/core/src/test/org/apache/solr/metrics/SolrMetricManagerTest.java
+++ b/solr/core/src/test/org/apache/solr/metrics/SolrMetricManagerTest.java
@@ -58,8 +58,8 @@ public class SolrMetricManagerTest extends SolrTestCaseJ4 {
 
     Map<String, Counter> metrics1 = SolrMetricTestUtils.getRandomMetrics(r, true);
     Map<String, Counter> metrics2 = SolrMetricTestUtils.getRandomMetrics(r, true);
-    String fromName = TestUtil.randomSimpleString(r, 1, 10);
-    String toName = TestUtil.randomSimpleString(r, 1, 10);
+    String fromName = "from-" + TestUtil.randomSimpleString(r, 1, 10);
+    String toName = "to-" + TestUtil.randomSimpleString(r, 1, 10);
     // register test metrics
     for (Map.Entry<String, Counter> entry : metrics1.entrySet()) {
       metricManager.register(fromName, entry.getValue(), false, entry.getKey(), "metrics1");


[08/15] lucene-solr:feature/autoscaling: SOLR-9401: TestPKIAuthenticationPlugin NPE. do the time consuming pub key creation before header is set

Posted by sh...@apache.org.
SOLR-9401: TestPKIAuthenticationPlugin NPE. do the time consuming pub key creation before header is set


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

Branch: refs/heads/feature/autoscaling
Commit: b66d13398aef416ec6b64dd5d3e5c00219ae5ce4
Parents: 5ae51d4
Author: Noble Paul <no...@apache.org>
Authored: Sat Mar 4 16:12:57 2017 +1030
Committer: Noble Paul <no...@apache.org>
Committed: Sat Mar 4 16:12:57 2017 +1030

----------------------------------------------------------------------
 .../security/TestPKIAuthenticationPlugin.java   | 131 +++++++------------
 1 file changed, 47 insertions(+), 84 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/b66d1339/solr/core/src/test/org/apache/solr/security/TestPKIAuthenticationPlugin.java
----------------------------------------------------------------------
diff --git a/solr/core/src/test/org/apache/solr/security/TestPKIAuthenticationPlugin.java b/solr/core/src/test/org/apache/solr/security/TestPKIAuthenticationPlugin.java
index 4eb0a80..2595277 100644
--- a/solr/core/src/test/org/apache/solr/security/TestPKIAuthenticationPlugin.java
+++ b/solr/core/src/test/org/apache/solr/security/TestPKIAuthenticationPlugin.java
@@ -38,18 +38,10 @@ import org.apache.solr.util.CryptoKeys;
 import static org.mockito.Mockito.*;
 
 public class TestPKIAuthenticationPlugin extends SolrTestCaseJ4 {
-  HttpServletRequest mockReq;
-  FilterChain filterChain;
-  final AtomicReference<ServletRequest> wrappedRequestByFilter = new AtomicReference<>();
-  final AtomicReference<Header> header = new AtomicReference<>();
-  AtomicReference<Principal> principal = new AtomicReference<>();
-  BasicHttpRequest request;
-
 
   static class MockPKIAuthenticationPlugin extends PKIAuthenticationPlugin {
     SolrRequestInfo solrRequestInfo;
 
-
     Map<String, PublicKey> remoteKeys = new HashMap<>();
 
     public MockPKIAuthenticationPlugin(CoreContainer cores, String node) {
@@ -78,6 +70,7 @@ public class TestPKIAuthenticationPlugin extends SolrTestCaseJ4 {
   }
 
   public void test() throws Exception {
+    AtomicReference<Principal> principal = new AtomicReference<>();
     String nodeName = "node_x_233";
 
     final MockPKIAuthenticationPlugin mock = new MockPKIAuthenticationPlugin(null, nodeName);
@@ -92,96 +85,66 @@ public class TestPKIAuthenticationPlugin extends SolrTestCaseJ4 {
 
     principal.set(new BasicUserPrincipal("solr"));
     mock.solrRequestInfo = new SolrRequestInfo(localSolrQueryRequest, new SolrQueryResponse());
-    request = new BasicHttpRequest("GET", "http://localhost:56565");
+    BasicHttpRequest request = new BasicHttpRequest("GET", "http://localhost:56565");
     mock.setHeader(request);
+    final AtomicReference<Header> header = new AtomicReference<>();
     header.set(request.getFirstHeader(PKIAuthenticationPlugin.HEADER));
     assertNotNull(header.get());
     assertTrue(header.get().getValue().startsWith(nodeName));
-    mockReq = createMockRequest(header);
-    filterChain = (servletRequest, servletResponse) -> wrappedRequestByFilter.set(servletRequest);
-
-
-    run("solr", () -> {
-      mock.doAuthenticate(mockReq, null, filterChain);
-    });
+    final AtomicReference<ServletRequest> wrappedRequestByFilter = new AtomicReference<>();
+    HttpServletRequest mockReq = createMockRequest(header);
+    FilterChain filterChain = (servletRequest, servletResponse) -> wrappedRequestByFilter.set(servletRequest);
+    mock.doAuthenticate(mockReq, null, filterChain);
 
+    assertNotNull(wrappedRequestByFilter.get());
+    assertEquals("solr", ((HttpServletRequest) wrappedRequestByFilter.get()).getUserPrincipal().getName());
 
     //test 2
-
-    run(null, () -> {
-      principal.set(null); // no user
-      header.set(null);
-      wrappedRequestByFilter.set(null);//
-      request = new BasicHttpRequest("GET", "http://localhost:56565");
-      mock.setHeader(request);
-      assertNull(request.getFirstHeader(PKIAuthenticationPlugin.HEADER));
-      mock.doAuthenticate(mockReq, null, filterChain);
-    });
+    principal.set(null); // no user
+    header.set(null);
+    wrappedRequestByFilter.set(null);//
+    request = new BasicHttpRequest("GET", "http://localhost:56565");
+    mock.setHeader(request);
+    assertNull(request.getFirstHeader(PKIAuthenticationPlugin.HEADER));
+    mock.doAuthenticate(mockReq, null, filterChain);
+    assertNotNull(wrappedRequestByFilter.get());
+    assertNull(((HttpServletRequest) wrappedRequestByFilter.get()).getUserPrincipal());
 
     //test 3 . No user request . Request originated from Solr
-    run("$", () -> {
-      mock.solrRequestInfo = null;
-      header.set(null);
-      wrappedRequestByFilter.set(null);
-      request = new BasicHttpRequest("GET", "http://localhost:56565");
-      mock.setHeader(request);
-      header.set(request.getFirstHeader(PKIAuthenticationPlugin.HEADER));
-      assertNotNull(header.get());
-      assertTrue(header.get().getValue().startsWith(nodeName));
-      mock.doAuthenticate(mockReq, null, filterChain);
-    });
-
-    run("$", () -> {
-      mock.solrRequestInfo = null;
-      header.set(null);
-      wrappedRequestByFilter.set(null);
-      request = new BasicHttpRequest("GET", "http://localhost:56565");
-      mock.setHeader(request);
-      header.set(request.getFirstHeader(PKIAuthenticationPlugin.HEADER));
-      assertNotNull(header.get());
-      assertTrue(header.get().getValue().startsWith(nodeName));
-      MockPKIAuthenticationPlugin mock1 = new MockPKIAuthenticationPlugin(null, nodeName) {
-        int called = 0;
-
-        @Override
-        PublicKey getRemotePublicKey(String nodename) {
-          try {
-            return called == 0 ? new CryptoKeys.RSAKeyPair().getPublicKey() : correctKey;
-          } finally {
-            called++;
-          }
-        }
-      };
-
-      mock1.doAuthenticate(mockReq, null, filterChain);
-
-    });
-
-  }
+    //create pub key in advance because it can take time and it should be
+    //created before the header is set
+    PublicKey key = new CryptoKeys.RSAKeyPair().getPublicKey();
+    mock.solrRequestInfo = null;
+    header.set(null);
+    wrappedRequestByFilter.set(null);
+    request = new BasicHttpRequest("GET", "http://localhost:56565");
+    mock.setHeader(request);
+    header.set(request.getFirstHeader(PKIAuthenticationPlugin.HEADER));
+    assertNotNull(header.get());
+    assertTrue(header.get().getValue().startsWith(nodeName));
 
-  interface Runnable {
-    void run() throws Exception;
-  }
+    mock.doAuthenticate(mockReq, null, filterChain);
+    assertNotNull(wrappedRequestByFilter.get());
+    assertEquals("$", ((HttpServletRequest) wrappedRequestByFilter.get()).getUserPrincipal().getName());
 
-  private void run(String expected, Runnable r) throws Exception {
-    int failures = 0;
-    for (; ; ) {
-      r.run();
-      if (expected == null) {
-        assertTrue(wrappedRequestByFilter.get() == null || ((HttpServletRequest) wrappedRequestByFilter.get()).getUserPrincipal() == null);
-      } else {
-        assertNotNull(wrappedRequestByFilter.get());
-        if (((HttpServletRequest) wrappedRequestByFilter.get()).getUserPrincipal() == null) {
-          //may be timed out
-          if (++failures < 3) continue;
-          else
-            fail("No principal obtained");
+    /*test4 mock the restart of a node*/
+    MockPKIAuthenticationPlugin mock1 = new MockPKIAuthenticationPlugin(null, nodeName) {
+      int called = 0;
+      @Override
+      PublicKey getRemotePublicKey(String nodename) {
+        try {
+          return called == 0 ? key : correctKey;
+        } finally {
+          called++;
         }
-        assertEquals(expected, ((HttpServletRequest) wrappedRequestByFilter.get()).getUserPrincipal().getName());
       }
-      return;
+    };
+
+    mock1.doAuthenticate(mockReq, null,filterChain );
+    assertNotNull(wrappedRequestByFilter.get());
+    assertEquals("$", ((HttpServletRequest) wrappedRequestByFilter.get()).getUserPrincipal().getName());
+
 
-    }
   }
 
   private HttpServletRequest createMockRequest(final AtomicReference<Header> header) {


[05/15] lucene-solr:feature/autoscaling: SOLR-10156: Update CHANGES.txt

Posted by sh...@apache.org.
SOLR-10156: Update CHANGES.txt


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

Branch: refs/heads/feature/autoscaling
Commit: efbabf8e2cf770c3dd19fb3faf2e34b8885381ea
Parents: 4990eed
Author: Joel Bernstein <jb...@apache.org>
Authored: Fri Mar 3 15:07:37 2017 -0500
Committer: Joel Bernstein <jb...@apache.org>
Committed: Fri Mar 3 15:07:37 2017 -0500

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


http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/efbabf8e/solr/CHANGES.txt
----------------------------------------------------------------------
diff --git a/solr/CHANGES.txt b/solr/CHANGES.txt
index 2659155..7ea6226 100644
--- a/solr/CHANGES.txt
+++ b/solr/CHANGES.txt
@@ -145,6 +145,8 @@ New Features
 * SOLR-10153 & SOLR-10152: The Unified and Postings based highlighters: Add hl.bs.type=SEPARATOR along with new param
   hl.bs.separator to break passages by a provided single character. (Amrit Sarkar, David Smiley)
 
+* SOLR-10156: Add significantTerms Streaming Expression (Joel Bernstein)
+
 Bug Fixes
 ----------------------