You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@lucene.apache.org by no...@apache.org on 2016/03/04 11:54:58 UTC
[1/2] lucene-solr git commit: SOLR-8728: ReplicaAssigner throws NPE
when a partial list of nodes are only participating in replica placement.
splitshard should preassign nodes using rules, if rules are present
Repository: lucene-solr
Updated Branches:
refs/heads/master a78ef1584 -> 517acece6
SOLR-8728: ReplicaAssigner throws NPE when a partial list of nodes are only participating in replica
placement. splitshard should preassign nodes using rules, if rules are present
Project: http://git-wip-us.apache.org/repos/asf/lucene-solr/repo
Commit: http://git-wip-us.apache.org/repos/asf/lucene-solr/commit/0cd24c5d
Tree: http://git-wip-us.apache.org/repos/asf/lucene-solr/tree/0cd24c5d
Diff: http://git-wip-us.apache.org/repos/asf/lucene-solr/diff/0cd24c5d
Branch: refs/heads/master
Commit: 0cd24c5d08678a4cc883381d54089f62d0978b4d
Parents: e44eebf
Author: Noble Paul <no...@apache.org>
Authored: Fri Mar 4 16:22:37 2016 +0530
Committer: Noble Paul <no...@apache.org>
Committed: Fri Mar 4 16:22:37 2016 +0530
----------------------------------------------------------------------
solr/CHANGES.txt | 3 ++
.../cloud/OverseerCollectionMessageHandler.java | 30 ++++++++++++--------
.../apache/solr/cloud/rule/ReplicaAssigner.java | 14 ++++-----
.../java/org/apache/solr/cloud/rule/Rule.java | 4 ++-
.../org/apache/solr/cloud/ShardSplitTest.java | 27 ++++++++++++++++++
5 files changed, 58 insertions(+), 20 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/0cd24c5d/solr/CHANGES.txt
----------------------------------------------------------------------
diff --git a/solr/CHANGES.txt b/solr/CHANGES.txt
index fb64188..ddb1171 100644
--- a/solr/CHANGES.txt
+++ b/solr/CHANGES.txt
@@ -228,6 +228,9 @@ Bug Fixes
* SOLR-8375: ReplicaAssigner rejects valid nodes (Kelvin Tan, noble)
+* SOLR-8728: ReplicaAssigner throws NPE when a partial list of nodes are only participating in replica
+ placement. splitshard should preassign nodes using rules, if rules are present (noble, Shai Erera)
+
Optimizations
----------------------
* SOLR-7876: Speed up queries and operations that use many terms when timeAllowed has not been
http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/0cd24c5d/solr/core/src/java/org/apache/solr/cloud/OverseerCollectionMessageHandler.java
----------------------------------------------------------------------
diff --git a/solr/core/src/java/org/apache/solr/cloud/OverseerCollectionMessageHandler.java b/solr/core/src/java/org/apache/solr/cloud/OverseerCollectionMessageHandler.java
index 401409a..c2b7c90 100644
--- a/solr/core/src/java/org/apache/solr/cloud/OverseerCollectionMessageHandler.java
+++ b/solr/core/src/java/org/apache/solr/cloud/OverseerCollectionMessageHandler.java
@@ -1308,13 +1308,18 @@ public class OverseerCollectionMessageHandler implements OverseerMessageHandler
// TODO: change this to handle sharding a slice into > 2 sub-shards.
+
+ Map<Position, String> nodeMap = identifyNodes(clusterState,
+ new ArrayList<>(clusterState.getLiveNodes()),
+ new ZkNodeProps(collection.getProperties()),
+ subSlices, repFactor - 1);
+
List<Map<String, Object>> replicas = new ArrayList<>((repFactor - 1) * 2);
- for (int i = 1; i <= subSlices.size(); i++) {
- Collections.shuffle(nodeList, RANDOM);
- String sliceName = subSlices.get(i - 1);
- for (int j = 2; j <= repFactor; j++) {
- String subShardNodeName = nodeList.get((repFactor * (i - 1) + (j - 2)) % nodeList.size());
- String shardName = collectionName + "_" + sliceName + "_replica" + (j);
+
+ for (Map.Entry<Position, String> entry : nodeMap.entrySet()) {
+ String sliceName = entry.getKey().shard;
+ String subShardNodeName = entry.getValue();
+ String shardName = collectionName + "_" + sliceName + "_replica" + (entry.getKey().index);
log.info("Creating replica shard " + shardName + " as part of slice " + sliceName + " of collection "
+ collectionName + " on " + subShardNodeName);
@@ -1349,7 +1354,6 @@ public class OverseerCollectionMessageHandler implements OverseerMessageHandler
replicas.add(propMap);
}
- }
// we must set the slice state into recovery before actually creating the replica cores
// this ensures that the logic inside Overseer to update sub-shard state to 'active'
@@ -2078,8 +2082,8 @@ public class OverseerCollectionMessageHandler implements OverseerMessageHandler
ZkNodeProps message,
List<String> shardNames,
int repFactor) throws IOException {
- List<Map> maps = (List) message.get("rule");
- if (maps == null) {
+ List<Map> rulesMap = (List) message.get("rule");
+ if (rulesMap == null) {
int i = 0;
Map<Position, String> result = new HashMap<>();
for (String aShard : shardNames) {
@@ -2092,7 +2096,7 @@ public class OverseerCollectionMessageHandler implements OverseerMessageHandler
}
List<Rule> rules = new ArrayList<>();
- for (Object map : maps) rules.add(new Rule((Map) map));
+ for (Object map : rulesMap) rules.add(new Rule((Map) map));
Map<String, Integer> sharVsReplicaCount = new HashMap<>();
@@ -2159,8 +2163,10 @@ public class OverseerCollectionMessageHandler implements OverseerMessageHandler
ShardHandler shardHandler = shardHandlerFactory.getShardHandler();
// Kind of unnecessary, but it does put the logic of whether to override maxShardsPerNode in one place.
- node = getNodesForNewReplicas(clusterState, collection, shard, 1, node,
- overseer.getZkController().getCoreContainer()).get(0).nodeName;
+ if(node == null) {
+ node = getNodesForNewReplicas(clusterState, collection, shard, 1, node,
+ overseer.getZkController().getCoreContainer()).get(0).nodeName;
+ }
log.info("Node not provided, Identified {} for creating new replica", node);
if (!clusterState.liveNodesContain(node)) {
http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/0cd24c5d/solr/core/src/java/org/apache/solr/cloud/rule/ReplicaAssigner.java
----------------------------------------------------------------------
diff --git a/solr/core/src/java/org/apache/solr/cloud/rule/ReplicaAssigner.java b/solr/core/src/java/org/apache/solr/cloud/rule/ReplicaAssigner.java
index c9f774f..b0249fe 100644
--- a/solr/core/src/java/org/apache/solr/cloud/rule/ReplicaAssigner.java
+++ b/solr/core/src/java/org/apache/solr/cloud/rule/ReplicaAssigner.java
@@ -55,7 +55,7 @@ public class ReplicaAssigner {
Map<String, Integer> shardVsReplicaCount;
Map<String, Map<String, Object>> nodeVsTags;
Map<String, HashMap<String, Integer>> shardVsNodes;
- List<String> liveNodes;
+ List<String> participatingLiveNodes;
Set<String> tagNames = new HashSet<>();
private Map<String, AtomicInteger> nodeVsCores = new HashMap<>();
@@ -93,12 +93,12 @@ public class ReplicaAssigner {
Map<String, Integer> shardVsReplicaCount,
List snitches,
Map<String, Map<String, Integer>> shardVsNodes,
- List<String> liveNodes,
+ List<String> participatingLiveNodes,
CoreContainer cc, ClusterState clusterState) {
this.rules = rules;
for (Rule rule : rules) tagNames.add(rule.tag.name);
this.shardVsReplicaCount = shardVsReplicaCount;
- this.liveNodes = new ArrayList<>(liveNodes);
+ this.participatingLiveNodes = new ArrayList<>(participatingLiveNodes);
this.nodeVsTags = getTagsForNodes(cc, snitches);
this.shardVsNodes = getDeepCopy(shardVsNodes, 2);
validateTags(nodeVsTags);
@@ -209,7 +209,7 @@ public class ReplicaAssigner {
Map<Position, String> result = new LinkedHashMap<>();
int startPosition = 0;
Map<String, Map<String, Integer>> copyOfCurrentState = getDeepCopy(shardVsNodes, 2);
- List<String> sortedLiveNodes = new ArrayList<>(this.liveNodes);
+ List<String> sortedLiveNodes = new ArrayList<>(this.participatingLiveNodes);
Collections.sort(sortedLiveNodes, new Comparator<String>() {
@Override
public int compare(String n1, String n2) {
@@ -397,7 +397,7 @@ public class ReplicaAssigner {
}
- for (String node : liveNodes) {
+ for (String node : participatingLiveNodes) {
//now use the Snitch to get the tags
for (SnitchInfoImpl info : snitches.values()) {
if (!info.myTags.isEmpty()) {
@@ -419,7 +419,7 @@ public class ReplicaAssigner {
String node = e.getKey();
if (context.exception != null) {
failedNodes.put(node, context);
- liveNodes.remove(node);
+ participatingLiveNodes.remove(node);
log.warn("Not all tags were obtained from node " + node);
context.exception = new SolrException(SolrException.ErrorCode.SERVER_ERROR,
"Not all tags were obtained from node " + node);
@@ -436,7 +436,7 @@ public class ReplicaAssigner {
}
}
- if (liveNodes.isEmpty()) {
+ if (participatingLiveNodes.isEmpty()) {
throw new SolrException(SolrException.ErrorCode.BAD_REQUEST, "Could not get all tags for any nodes");
}
http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/0cd24c5d/solr/core/src/java/org/apache/solr/cloud/rule/Rule.java
----------------------------------------------------------------------
diff --git a/solr/core/src/java/org/apache/solr/cloud/rule/Rule.java b/solr/core/src/java/org/apache/solr/cloud/rule/Rule.java
index d73a9bf..209b755 100644
--- a/solr/core/src/java/org/apache/solr/cloud/rule/Rule.java
+++ b/solr/core/src/java/org/apache/solr/cloud/rule/Rule.java
@@ -163,7 +163,9 @@ public class Rule {
Map<String,Integer> nodesInThisShard = shardVsNodeSet.get(shardCondition.val.equals(WILD_WILD_CARD) ? entry.getKey() : shardName);
if (nodesInThisShard != null) {
for (Map.Entry<String,Integer> aNode : nodesInThisShard.entrySet()) {
- Object obj = nodeVsTags.get(aNode.getKey()).get(tag.name);
+ Map<String, Object> tagValues = nodeVsTags.get(aNode.getKey());
+ if(tagValues == null) continue;
+ Object obj = tagValues.get(tag.name);
if (tagCondition.canMatch(obj, phase)) countMatchingThisTagValue += aNode.getValue();
}
}
http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/0cd24c5d/solr/core/src/test/org/apache/solr/cloud/ShardSplitTest.java
----------------------------------------------------------------------
diff --git a/solr/core/src/test/org/apache/solr/cloud/ShardSplitTest.java b/solr/core/src/test/org/apache/solr/cloud/ShardSplitTest.java
index bbcae33..22735ab 100644
--- a/solr/core/src/test/org/apache/solr/cloud/ShardSplitTest.java
+++ b/solr/core/src/test/org/apache/solr/cloud/ShardSplitTest.java
@@ -24,7 +24,9 @@ import org.apache.solr.client.solrj.SolrRequest;
import org.apache.solr.client.solrj.SolrServerException;
import org.apache.solr.client.solrj.impl.CloudSolrClient;
import org.apache.solr.client.solrj.impl.HttpSolrClient;
+import org.apache.solr.client.solrj.request.CollectionAdminRequest;
import org.apache.solr.client.solrj.request.QueryRequest;
+import org.apache.solr.client.solrj.response.CollectionAdminResponse;
import org.apache.solr.client.solrj.response.QueryResponse;
import org.apache.solr.common.SolrDocument;
import org.apache.solr.common.cloud.ClusterState;
@@ -86,7 +88,32 @@ public class ShardSplitTest extends BasicDistributedZkTest {
// and the new sub-shards don't have any.
waitForRecoveriesToFinish(true);
//waitForThingsToLevelOut(15);
+ }
+
+ @Test
+ public void testSplitShardWithRule() throws Exception {
+ waitForThingsToLevelOut(15);
+
+ if (usually()) {
+ log.info("Using legacyCloud=false for cluster");
+ CollectionsAPIDistributedZkTest.setClusterProp(cloudClient, "legacyCloud", "false");
+ }
+ log.info("Starting testSplitShardWithRule");
+ String collectionName = "shardSplitWithRule";
+ CollectionAdminRequest.Create createRequest = new CollectionAdminRequest.Create()
+ .setCollectionName(collectionName)
+ .setNumShards(1)
+ .setReplicationFactor(2)
+ .setRule("shard:*,replica:<2,node:*");
+ CollectionAdminResponse response = createRequest.process(cloudClient);
+ assertEquals(0, response.getStatus());
+
+ CollectionAdminRequest.SplitShard splitShardRequest = new CollectionAdminRequest.SplitShard()
+ .setCollectionName(collectionName)
+ .setShardName("shard1");
+ response = splitShardRequest.process(cloudClient);
+ assertEquals(String.valueOf(response.getErrorMessages()), 0, response.getStatus());
}
private void incompleteOrOverlappingCustomRangeTest() throws Exception {
[2/2] lucene-solr git commit: Merge remote-tracking branch
'origin/master'
Posted by no...@apache.org.
Merge remote-tracking branch 'origin/master'
Conflicts:
solr/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/517acece
Tree: http://git-wip-us.apache.org/repos/asf/lucene-solr/tree/517acece
Diff: http://git-wip-us.apache.org/repos/asf/lucene-solr/diff/517acece
Branch: refs/heads/master
Commit: 517acece6a210b2d1baf75a39fe3b77ea59926b2
Parents: 0cd24c5 a78ef15
Author: Noble Paul <no...@apache.org>
Authored: Fri Mar 4 16:24:10 2016 +0530
Committer: Noble Paul <no...@apache.org>
Committed: Fri Mar 4 16:24:10 2016 +0530
----------------------------------------------------------------------
lucene/CHANGES.txt | 15 +
.../lucene/analysis/ar/ArabicAnalyzer.java | 4 +-
.../lucene/analysis/ckb/SoraniAnalyzer.java | 4 +-
.../lucene/analysis/fa/PersianAnalyzer.java | 4 +-
.../lucene/analysis/hi/HindiAnalyzer.java | 4 +-
.../apache/lucene/analysis/th/ThaiAnalyzer.java | 5 +-
.../lucene/analysis/ar/TestArabicAnalyzer.java | 12 -
.../lucene/analysis/ckb/TestSoraniAnalyzer.java | 12 -
.../analysis/custom/TestCustomAnalyzer.java | 8 +-
.../lucene/analysis/fa/TestPersianAnalyzer.java | 12 -
.../lucene/analysis/hi/TestHindiAnalyzer.java | 12 -
.../lucene/analysis/th/TestThaiAnalyzer.java | 12 -
.../index/TestBackwardsCompatibility.java | 75 +--
.../lucene/index/TestMaxPositionInOldIndex.java | 107 ----
.../org/apache/lucene/index/dvupdates.5.0.0.zip | Bin 13376 -> 0 bytes
.../org/apache/lucene/index/dvupdates.6.0.0.zip | Bin 0 -> 3420 bytes
.../org/apache/lucene/index/empty.5.0.0.zip | Bin 225 -> 0 bytes
.../org/apache/lucene/index/empty.6.0.0.zip | Bin 0 -> 225 bytes
.../org/apache/lucene/index/index.5.0.0-cfs.zip | Bin 13503 -> 0 bytes
.../apache/lucene/index/index.5.0.0-nocfs.zip | Bin 13485 -> 0 bytes
.../index/index.5.0.0.singlesegment-cfs.zip | Bin 4028 -> 0 bytes
.../index/index.5.0.0.singlesegment-nocfs.zip | Bin 6418 -> 0 bytes
.../org/apache/lucene/index/index.5.1.0-cfs.zip | Bin 13523 -> 0 bytes
.../apache/lucene/index/index.5.1.0-nocfs.zip | Bin 13530 -> 0 bytes
.../org/apache/lucene/index/index.5.2.0-cfs.zip | Bin 13528 -> 0 bytes
.../apache/lucene/index/index.5.2.0-nocfs.zip | Bin 13539 -> 0 bytes
.../org/apache/lucene/index/index.5.2.1-cfs.zip | Bin 13568 -> 0 bytes
.../apache/lucene/index/index.5.2.1-nocfs.zip | Bin 13566 -> 0 bytes
.../org/apache/lucene/index/index.5.3.0-cfs.zip | Bin 13747 -> 0 bytes
.../apache/lucene/index/index.5.3.0-nocfs.zip | Bin 13731 -> 0 bytes
.../org/apache/lucene/index/index.5.3.1-cfs.zip | Bin 13701 -> 0 bytes
.../apache/lucene/index/index.5.3.1-nocfs.zip | Bin 13703 -> 0 bytes
.../org/apache/lucene/index/index.5.3.2-cfs.zip | Bin 13724 -> 0 bytes
.../apache/lucene/index/index.5.3.2-nocfs.zip | Bin 13708 -> 0 bytes
.../org/apache/lucene/index/index.5.4.0-cfs.zip | Bin 13738 -> 0 bytes
.../apache/lucene/index/index.5.4.0-nocfs.zip | Bin 13730 -> 0 bytes
.../org/apache/lucene/index/index.5.4.1-cfs.zip | Bin 13761 -> 0 bytes
.../apache/lucene/index/index.5.4.1-nocfs.zip | Bin 13766 -> 0 bytes
.../org/apache/lucene/index/index.5.5.0-cfs.zip | Bin 24776 -> 0 bytes
.../apache/lucene/index/index.5.5.0-nocfs.zip | Bin 13756 -> 0 bytes
.../org/apache/lucene/index/moreterms.4.0.0.zip | Bin 78661 -> 0 bytes
.../org/apache/lucene/index/moreterms.5.0.0.zip | Bin 78653 -> 0 bytes
.../org/apache/lucene/index/moreterms.6.0.0.zip | Bin 0 -> 157215 bytes
.../lucene/index/unsupported.5.0.0-cfs.zip | Bin 0 -> 13503 bytes
.../lucene/index/unsupported.5.0.0-nocfs.zip | Bin 0 -> 13485 bytes
.../unsupported.5.0.0.singlesegment-cfs.zip | Bin 0 -> 4028 bytes
.../unsupported.5.0.0.singlesegment-nocfs.zip | Bin 0 -> 6418 bytes
.../lucene/index/unsupported.5.1.0-cfs.zip | Bin 0 -> 13523 bytes
.../lucene/index/unsupported.5.1.0-nocfs.zip | Bin 0 -> 13530 bytes
.../lucene/index/unsupported.5.2.0-cfs.zip | Bin 0 -> 13528 bytes
.../lucene/index/unsupported.5.2.0-nocfs.zip | Bin 0 -> 13539 bytes
.../lucene/index/unsupported.5.2.1-cfs.zip | Bin 0 -> 13568 bytes
.../lucene/index/unsupported.5.2.1-nocfs.zip | Bin 0 -> 13566 bytes
.../lucene/index/unsupported.5.3.0-cfs.zip | Bin 0 -> 13747 bytes
.../lucene/index/unsupported.5.3.0-nocfs.zip | Bin 0 -> 13731 bytes
.../lucene/index/unsupported.5.3.1-cfs.zip | Bin 0 -> 13701 bytes
.../lucene/index/unsupported.5.3.1-nocfs.zip | Bin 0 -> 13703 bytes
.../lucene/index/unsupported.5.3.2-cfs.zip | Bin 0 -> 13724 bytes
.../lucene/index/unsupported.5.3.2-nocfs.zip | Bin 0 -> 13708 bytes
.../lucene/index/unsupported.5.4.0-cfs.zip | Bin 0 -> 13738 bytes
.../lucene/index/unsupported.5.4.0-nocfs.zip | Bin 0 -> 13730 bytes
.../lucene/index/unsupported.5.4.1-cfs.zip | Bin 0 -> 13761 bytes
.../lucene/index/unsupported.5.4.1-nocfs.zip | Bin 0 -> 13766 bytes
.../lucene/index/unsupported.5.5.0-cfs.zip | Bin 0 -> 24776 bytes
.../lucene/index/unsupported.5.5.0-nocfs.zip | Bin 0 -> 13756 bytes
lucene/benchmark/conf/spatial.alg | 2 +-
lucene/benchmark/ivy.xml | 2 +-
.../benchmark/byTask/feeds/SpatialDocMaker.java | 8 +-
.../byTask/feeds/SpatialFileQueryMaker.java | 4 +-
.../codecs/simpletext/SimpleTextBKDReader.java | 4 +-
.../simpletext/SimpleTextPointReader.java | 34 +-
.../simpletext/SimpleTextPointWriter.java | 23 +-
.../analysis/LegacyNumericTokenStream.java | 5 +-
.../org/apache/lucene/codecs/PointFormat.java | 10 +
.../org/apache/lucene/codecs/PointWriter.java | 10 +
.../codecs/lucene60/Lucene60PointReader.java | 22 +
.../codecs/lucene60/Lucene60PointWriter.java | 6 +-
.../org/apache/lucene/document/BinaryPoint.java | 82 ++--
.../org/apache/lucene/document/DoublePoint.java | 88 ++--
.../org/apache/lucene/document/FloatPoint.java | 88 ++--
.../org/apache/lucene/document/IntPoint.java | 88 ++--
.../org/apache/lucene/document/LongPoint.java | 88 ++--
.../org/apache/lucene/index/CheckIndex.java | 117 ++++-
.../index/IndexFormatTooOldException.java | 4 +-
.../org/apache/lucene/index/IndexUpgrader.java | 2 +-
.../apache/lucene/index/MultiPointValues.java | 172 -------
.../apache/lucene/index/ParallelLeafReader.java | 26 +
.../org/apache/lucene/index/PointValues.java | 14 +-
.../apache/lucene/index/PointValuesWriter.java | 11 +
.../org/apache/lucene/index/SegmentInfos.java | 28 +-
.../lucene/index/SlowCodecReaderWrapper.java | 10 +
.../index/SlowCompositeReaderWrapper.java | 2 +-
.../apache/lucene/search/FieldValueQuery.java | 4 +
.../lucene/search/LegacyNumericRangeQuery.java | 17 +-
.../apache/lucene/search/MultiPhraseQuery.java | 273 ++++++-----
.../MultiTermQueryConstantScoreWrapper.java | 3 +
.../apache/lucene/search/NGramPhraseQuery.java | 5 +
.../apache/lucene/search/PointInSetQuery.java | 24 +-
.../apache/lucene/search/PointRangeQuery.java | 170 ++-----
.../org/apache/lucene/search/RegexpQuery.java | 7 +-
.../lucene/search/SortedNumericSelector.java | 6 +-
.../org/apache/lucene/search/SynonymQuery.java | 5 +
.../lucene/search/spans/SpanContainQuery.java | 8 +
.../apache/lucene/util/LegacyNumericUtils.java | 59 ---
.../org/apache/lucene/util/NumericUtils.java | 172 ++++---
.../org/apache/lucene/util/OfflineSorter.java | 2 +-
.../org/apache/lucene/util/QueryBuilder.java | 18 +-
.../apache/lucene/util/RamUsageEstimator.java | 49 ++
.../org/apache/lucene/util/StringHelper.java | 1 +
.../java/org/apache/lucene/util/Version.java | 78 +--
.../org/apache/lucene/util/bkd/BKDReader.java | 26 +-
.../org/apache/lucene/util/bkd/BKDWriter.java | 94 ++--
.../index/TestDemoParallelLeafReader.java | 2 +-
.../apache/lucene/index/TestDuelingCodecs.java | 4 +-
.../apache/lucene/index/TestPointValues.java | 85 ++++
.../apache/lucene/index/TestSegmentInfos.java | 10 +-
.../test/org/apache/lucene/index/TestTerms.java | 10 +-
.../lucene/search/TestComplexExplanations.java | 10 +-
.../lucene/search/TestMultiPhraseQuery.java | 190 +++----
.../lucene/search/TestNumericRangeQuery32.java | 3 +-
.../lucene/search/TestNumericRangeQuery64.java | 3 +-
.../lucene/search/TestPhrasePrefixQuery.java | 16 +-
.../apache/lucene/search/TestPointQueries.java | 459 +++++++++--------
.../lucene/search/TestPositionIncrement.java | 6 +-
.../lucene/search/TestSimpleExplanations.java | 52 +-
.../search/TestSimpleSearchEquivalence.java | 16 +-
.../lucene/search/TestSloppyPhraseQuery2.java | 10 +-
.../search/TestSortedNumericSortField.java | 15 +-
.../TestUsageTrackingFilterCachingPolicy.java | 2 +-
.../lucene/util/TestLegacyNumericUtils.java | 16 +-
.../apache/lucene/util/TestNumericUtils.java | 491 +++++++++++++++++++
.../apache/lucene/util/TestQueryBuilder.java | 20 +-
.../org/apache/lucene/util/TestVersion.java | 18 +-
.../org/apache/lucene/util/bkd/TestBKD.java | 139 ++----
.../demo/facet/DistanceFacetsExample.java | 8 +-
.../lucene/demo/facet/RangeFacetsExample.java | 3 +-
.../apache/lucene/facet/range/DoubleRange.java | 34 +-
.../facet/range/DoubleRangeFacetCounts.java | 8 +-
.../apache/lucene/facet/range/LongRange.java | 25 +-
.../lucene/facet/range/LongRangeCounter.java | 14 +-
.../facet/range/TestRangeFacetCounts.java | 28 +-
.../highlight/WeightedSpanTermExtractor.java | 6 +-
.../search/highlight/HighlighterTest.java | 18 +-
lucene/ivy-versions.properties | 3 +-
.../search/join/ToParentBlockJoinSortField.java | 6 +-
lucene/licenses/spatial4j-0.5-tests.jar.sha1 | 1 -
lucene/licenses/spatial4j-0.5.jar.sha1 | 1 -
lucene/licenses/spatial4j-0.6-tests.jar.sha1 | 1 +
lucene/licenses/spatial4j-0.6.jar.sha1 | 1 +
lucene/licenses/spatial4j-NOTICE.txt | 136 ++++-
.../apache/lucene/index/SortingLeafReader.java | 10 +
.../org/apache/lucene/index/SorterTestBase.java | 8 +-
.../apache/lucene/queries/BoostingQuery.java | 12 +
.../apache/lucene/queries/CommonTermsQuery.java | 44 ++
.../org/apache/lucene/queries/TermsQuery.java | 5 +
.../queries/function/FunctionRangeQuery.java | 20 +
.../classic/MultiFieldQueryParser.java | 6 +-
.../queryparser/classic/QueryParserBase.java | 9 +-
.../builders/MultiPhraseQueryNodeBuilder.java | 6 +-
.../standard/builders/SlopQueryNodeBuilder.java | 8 +-
.../classic/TestMultiPhraseQueryParsing.java | 10 +-
.../queryparser/classic/TestQueryParser.java | 28 +-
.../apache/lucene/document/BigIntegerPoint.java | 101 ++--
.../lucene/document/InetAddressPoint.java | 66 ++-
.../org/apache/lucene/document/LatLonPoint.java | 223 ++++++---
.../document/LatLonPointDistanceQuery.java | 209 ++++++++
.../document/LatLonPointInPolygonQuery.java | 254 ++++++++++
.../org/apache/lucene/document/package.html | 7 +-
.../apache/lucene/payloads/PayloadSpanUtil.java | 6 +-
.../lucene/search/DocValuesNumbersQuery.java | 8 +
.../lucene/search/DocValuesRangeQuery.java | 20 +
.../lucene/search/PointDistanceQuery.java | 179 -------
.../lucene/search/PointInPolygonQuery.java | 207 --------
.../lucene/document/TestBigIntegerPoint.java | 16 +-
.../lucene/document/TestInetAddressPoint.java | 8 +-
.../apache/lucene/document/TestLatLonPoint.java | 201 ++++----
.../document/TestLatLonPointDistanceQuery.java | 190 +++++++
.../lucene/search/TestDocValuesRangeQuery.java | 32 +-
.../lucene/search/TestLatLonPointQueries.java | 70 +--
.../lucene/search/TestTermAutomatonQuery.java | 8 +-
lucene/spatial-extras/ivy.xml | 4 +-
.../apache/lucene/spatial/SpatialStrategy.java | 12 +-
.../bbox/BBoxOverlapRatioValueSource.java | 2 +-
.../spatial/bbox/BBoxSimilarityValueSource.java | 4 +-
.../lucene/spatial/bbox/BBoxStrategy.java | 13 +-
.../lucene/spatial/bbox/BBoxValueSource.java | 2 +-
.../composite/CompositeSpatialStrategy.java | 4 +-
.../composite/IntersectsRPTVerifyQuery.java | 4 +-
.../spatial/prefix/AbstractPrefixTreeQuery.java | 2 +-
.../prefix/AbstractVisitingPrefixTreeQuery.java | 4 +-
.../spatial/prefix/ContainsPrefixTreeQuery.java | 4 +-
.../spatial/prefix/HeatmapFacetCounter.java | 10 +-
.../prefix/IntersectsPrefixTreeQuery.java | 4 +-
.../prefix/NumberRangePrefixTreeStrategy.java | 4 +-
.../PointPrefixTreeFieldCacheProvider.java | 2 +-
.../spatial/prefix/PrefixTreeFacetCounter.java | 6 +-
.../spatial/prefix/PrefixTreeStrategy.java | 10 +-
.../prefix/RecursivePrefixTreeStrategy.java | 4 +-
.../prefix/TermQueryPrefixTreeStrategy.java | 6 +-
.../spatial/prefix/WithinPrefixTreeQuery.java | 16 +-
.../apache/lucene/spatial/prefix/tree/Cell.java | 6 +-
.../prefix/tree/DateRangePrefixTree.java | 2 +-
.../spatial/prefix/tree/FilterCellIterator.java | 4 +-
.../spatial/prefix/tree/GeohashPrefixTree.java | 10 +-
.../lucene/spatial/prefix/tree/LegacyCell.java | 6 +-
.../spatial/prefix/tree/LegacyPrefixTree.java | 8 +-
.../prefix/tree/NumberRangePrefixTree.java | 16 +-
.../prefix/tree/PackedQuadPrefixTree.java | 12 +-
.../spatial/prefix/tree/QuadPrefixTree.java | 10 +-
.../spatial/prefix/tree/SpatialPrefixTree.java | 4 +-
.../prefix/tree/SpatialPrefixTreeFactory.java | 4 +-
.../spatial/prefix/tree/TreeCellIterator.java | 4 +-
.../lucene/spatial/query/SpatialArgs.java | 12 +-
.../lucene/spatial/query/SpatialArgsParser.java | 10 +-
.../lucene/spatial/query/SpatialOperation.java | 8 +-
.../serialized/SerializedDVStrategy.java | 10 +-
.../lucene/spatial/spatial4j/Geo3dShape.java | 14 +-
.../util/DistanceToShapeValueSource.java | 10 +-
.../spatial/util/ShapeAreaValueSource.java | 6 +-
.../lucene/spatial/util/ShapeFieldCache.java | 2 +-
.../ShapeFieldCacheDistanceValueSource.java | 6 +-
.../spatial/util/ShapeFieldCacheProvider.java | 2 +-
.../spatial/util/ShapePredicateValueSource.java | 2 +-
.../spatial/vector/DistanceValueSource.java | 4 +-
.../spatial/vector/PointVectorStrategy.java | 16 +-
.../lucene/spatial/DistanceStrategyTest.java | 6 +-
.../apache/lucene/spatial/PortedSolr3Test.java | 8 +-
.../lucene/spatial/QueryEqualsHashCodeTest.java | 4 +-
.../apache/lucene/spatial/SpatialArgsTest.java | 4 +-
.../apache/lucene/spatial/SpatialExample.java | 8 +-
.../apache/lucene/spatial/SpatialTestCase.java | 8 +-
.../apache/lucene/spatial/SpatialTestData.java | 4 +-
.../apache/lucene/spatial/SpatialTestQuery.java | 2 +-
.../apache/lucene/spatial/StrategyTestCase.java | 4 +-
.../lucene/spatial/TestTestFramework.java | 4 +-
.../lucene/spatial/bbox/TestBBoxStrategy.java | 12 +-
.../composite/CompositeStrategyTest.java | 12 +-
.../spatial/prefix/DateNRStrategyTest.java | 2 +-
.../spatial/prefix/HeatmapFacetCounterTest.java | 18 +-
.../lucene/spatial/prefix/JtsPolygonTest.java | 8 +-
.../spatial/prefix/NumberRangeFacetsTest.java | 2 +-
.../RandomSpatialOpFuzzyPrefixTreeTest.java | 24 +-
.../prefix/RandomSpatialOpStrategyTestCase.java | 2 +-
.../prefix/TestRecursivePrefixTreeStrategy.java | 8 +-
.../prefix/TestTermQueryPrefixGridStrategy.java | 4 +-
.../prefix/tree/DateRangePrefixTreeTest.java | 4 +-
.../prefix/tree/SpatialPrefixTreeTest.java | 8 +-
.../spatial/query/SpatialArgsParserTest.java | 4 +-
.../serialized/SerializedStrategyTest.java | 2 +-
.../lucene/spatial/spatial4j/Geo3dRptTest.java | 10 +-
.../Geo3dShapeRectRelationTestCase.java | 18 +-
.../Geo3dShapeSphereModelRectRelationTest.java | 2 +-
.../spatial4j/RandomizedShapeTestCase.java | 22 +-
.../spatial/spatial4j/geo3d/GeoPointTest.java | 2 +-
.../spatial/vector/TestPointVectorStrategy.java | 6 +-
.../GeoPointTermQueryConstantScoreWrapper.java | 7 +
.../spatial/util/BaseGeoPointTestCase.java | 74 ++-
.../org/apache/lucene/geo3d/Geo3DPoint.java | 4 +-
.../lucene/geo3d/PointInGeo3DShapeQuery.java | 24 +-
.../suggest/document/FuzzyCompletionQuery.java | 42 ++
.../suggest/document/PrefixCompletionQuery.java | 7 +
.../suggest/document/RegexCompletionQuery.java | 15 +
.../lucene/search/suggest/tst/TSTLookup.java | 7 +-
.../suggest/document/TestSuggestField.java | 2 +-
.../codecs/asserting/AssertingPointFormat.java | 118 ++++-
.../lucene/codecs/cranky/CrankyPointFormat.java | 10 +
.../lucene/index/BasePointFormatTestCase.java | 280 ++++++-----
.../apache/lucene/search/AssertingQuery.java | 8 +
.../org/apache/lucene/util/LuceneTestCase.java | 111 +++--
.../java/org/apache/lucene/util/TestUtil.java | 11 +
lucene/version.properties | 2 +-
solr/CHANGES.txt | 34 ++
solr/bin/solr | 5 +-
.../solr/analytics/util/AnalyticsParsers.java | 9 +-
.../clustering/carrot2/CarrotParams.java | 10 +-
.../clustering/carrot2/SolrResourceLocator.java | 4 +-
.../solr/collection1/conf/solrconfig.xml | 5 -
.../carrot2/CarrotClusteringEngineTest.java | 6 -
.../dataimport/EntityProcessorWrapper.java | 12 -
.../dataimport/TestContentStreamDataSource.java | 6 +-
.../TestSolrEntityProcessorEndToEnd.java | 6 +-
.../UIMAUpdateRequestProcessorTest.java | 6 +-
solr/core/ivy.xml | 2 +-
.../client/solrj/embedded/JettySolrRunner.java | 120 +----
.../cloud/OverseerCollectionMessageHandler.java | 123 +----
.../org/apache/solr/core/CoreContainer.java | 9 +-
.../java/org/apache/solr/core/NodeConfig.java | 20 -
.../java/org/apache/solr/core/SolrConfig.java | 8 +-
.../src/java/org/apache/solr/core/SolrCore.java | 48 --
.../java/org/apache/solr/core/SolrCores.java | 14 +-
.../solr/handler/MoreLikeThisHandler.java | 17 -
.../solr/handler/admin/AdminHandlers.java | 151 ------
.../solr/handler/admin/CollectionsHandler.java | 33 +-
.../solr/handler/admin/LukeRequestHandler.java | 7 -
.../handler/component/DateFacetProcessor.java | 255 ----------
.../solr/handler/component/FacetComponent.java | 56 ---
.../solr/handler/component/SearchHandler.java | 13 +-
.../handler/component/SpatialHeatmapFacets.java | 4 +-
.../solr/handler/loader/CSVLoaderBase.java | 5 +-
.../org/apache/solr/internal/csv/CSVParser.java | 34 +-
.../apache/solr/internal/csv/CSVStrategy.java | 338 ++++++++-----
.../java/org/apache/solr/parser/CharStream.java | 16 -
.../org/apache/solr/parser/FastCharStream.java | 8 -
.../apache/solr/parser/SolrQueryParserBase.java | 11 +-
.../org/apache/solr/request/IntervalFacets.java | 14 +-
.../org/apache/solr/request/SimpleFacets.java | 12 -
.../apache/solr/response/CSVResponseWriter.java | 6 +-
.../solr/schema/AbstractSpatialFieldType.java | 35 +-
.../AbstractSpatialPrefixTreeFieldType.java | 2 +-
.../java/org/apache/solr/schema/BBoxField.java | 2 +-
.../org/apache/solr/schema/DateRangeField.java | 2 +-
.../org/apache/solr/schema/GeoHashField.java | 8 +-
.../java/org/apache/solr/schema/LatLonType.java | 8 +-
.../java/org/apache/solr/schema/PointType.java | 2 +-
.../schema/RptWithGeometrySpatialField.java | 7 +-
.../org/apache/solr/schema/TrieDoubleField.java | 5 +-
.../java/org/apache/solr/schema/TrieField.java | 95 +---
.../org/apache/solr/schema/TrieFloatField.java | 5 +-
.../java/org/apache/solr/search/CursorMark.java | 11 +-
.../solr/search/ExtendedDismaxQParser.java | 8 +-
.../apache/solr/search/SolrIndexSearcher.java | 5 -
.../apache/solr/search/ValueSourceParser.java | 2 +-
.../apache/solr/search/facet/FacetRange.java | 6 +-
.../distance/GeoDistValueSourceParser.java | 10 +-
.../function/distance/GeohashFunction.java | 2 +-
.../distance/GeohashHaversineFunction.java | 10 +-
.../distance/HaversineConstFunction.java | 4 +-
.../function/distance/HaversineFunction.java | 2 +-
.../apache/solr/search/mlt/CloudMLTQParser.java | 2 +-
.../apache/solr/update/UpdateShardHandler.java | 5 -
.../processor/DistributedUpdateProcessor.java | 2 +-
.../processor/UpdateRequestProcessorChain.java | 6 -
.../org/apache/solr/util/DistanceUnits.java | 6 +-
.../java/org/apache/solr/util/FileUtils.java | 3 +
.../java/org/apache/solr/util/SpatialUtils.java | 18 +-
.../solr/collection1/conf/schema_latest.xml | 2 +-
.../solr/collection1/conf/solrconfig-sql.xml | 1 -
.../org/apache/solr/TestDistributedSearch.java | 21 -
.../org/apache/solr/TestGroupingSearch.java | 2 +-
.../org/apache/solr/TestSolrCoreProperties.java | 5 +-
.../core/src/test/org/apache/solr/TestTrie.java | 14 +-
.../solr/cloud/BaseCdcrDistributedZkTest.java | 9 +-
.../apache/solr/cloud/DeleteReplicaTest.java | 60 ++-
.../org/apache/solr/cloud/DeleteShardTest.java | 78 ++-
.../solr/cloud/TestCloudDeleteByQuery.java | 245 +++++++++
.../apache/solr/cloud/TestCollectionAPI.java | 8 +-
.../test/org/apache/solr/core/TestSolrXml.java | 4 -
.../apache/solr/core/TestXIncludeConfig.java | 4 +-
.../solr/handler/TestReplicationHandler.java | 7 +-
.../handler/TestReplicationHandlerBackup.java | 8 +-
.../apache/solr/handler/TestRestoreCore.java | 8 +-
.../apache/solr/internal/csv/CSVParserTest.java | 10 +-
.../solr/internal/csv/CSVPrinterTest.java | 3 +-
.../apache/solr/request/SimpleFacetsTest.java | 122 ++---
.../org/apache/solr/request/TestFaceting.java | 97 ----
.../solr/schema/SpatialRPTFieldTypeTest.java | 56 +--
.../apache/solr/search/TestSolr4Spatial.java | 8 +-
.../function/distance/DistanceFunctionTest.java | 4 +-
.../similarities/TestPerFieldSimilarity.java | 1 -
.../TestPerFieldSimilarityClassic.java | 86 ----
...DocExpirationUpdateProcessorFactoryTest.java | 11 +-
.../SignatureUpdateProcessorFactoryTest.java | 12 +-
...atelessScriptUpdateProcessorFactoryTest.java | 4 +-
.../UniqFieldsUpdateProcessorFactoryTest.java | 3 +-
.../UpdateRequestProcessorFactoryTest.java | 8 +-
.../org/apache/solr/util/DistanceUnitsTest.java | 2 +-
.../example-DIH/solr/db/conf/solrconfig.xml | 2 +-
.../example-DIH/solr/mail/conf/solrconfig.xml | 2 +-
.../example-DIH/solr/rss/conf/solrconfig.xml | 2 +-
.../example-DIH/solr/solr/conf/solrconfig.xml | 2 +-
.../example-DIH/solr/tika/conf/solrconfig.xml | 2 +-
solr/example/files/conf/solrconfig.xml | 2 +-
solr/licenses/spatial4j-0.5.jar.sha1 | 1 -
solr/licenses/spatial4j-0.6.jar.sha1 | 1 +
solr/licenses/spatial4j-NOTICE.txt | 136 ++++-
.../basic_configs/conf/solrconfig.xml | 2 +-
.../conf/solrconfig.xml | 2 +-
.../conf/solrconfig.xml | 2 +-
solr/site/quickstart.mdtext | 2 -
.../solr/client/solrj/impl/HttpSolrClient.java | 5 -
.../solrj/request/CollectionAdminRequest.java | 101 +++-
.../client/solrj/request/CoreAdminRequest.java | 8 +-
.../solr/client/solrj/response/FacetField.java | 26 -
.../solr/client/solrj/response/PivotField.java | 8 -
.../client/solrj/response/QueryResponse.java | 24 -
.../solr/client/solrj/util/ClientUtils.java | 36 --
.../solrj/util/SolrIdentifierValidator.java | 25 +-
.../solr/common/cloud/ClosableThread.java | 26 -
.../apache/solr/common/cloud/ZkCmdExecutor.java | 5 -
.../apache/solr/common/cloud/ZkStateReader.java | 6 +-
.../apache/solr/common/util/IteratorChain.java | 86 ----
.../apache/solr/common/util/JavaBinCodec.java | 40 +-
.../solrj/sampleDateFacetResponse.xml | 81 ---
.../solrj/sampleRangeFacetResponse.xml | 44 ++
.../solr/collection1/conf/solrconfig-sql.xml | 1 -
.../solrj/beans/TestDocumentObjectBinder.java | 101 ++--
.../request/TestCollectionAdminRequest.java | 8 +-
.../client/solrj/request/TestCoreAdmin.java | 4 +-
.../solrj/response/NoOpResponseParserTest.java | 2 +-
.../solrj/response/QueryResponseTest.java | 26 +-
.../solr/common/util/IteratorChainTest.java | 104 ----
.../solr/common/util/TestJavaBinCodec.java | 5 +-
.../java/org/apache/solr/SolrTestCaseHS.java | 13 +-
solr/webapp/web/js/angular/app.js | 11 -
solr/webapp/web/js/scripts/app.js | 11 -
405 files changed, 5525 insertions(+), 5390 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/517acece/solr/CHANGES.txt
----------------------------------------------------------------------
diff --cc solr/CHANGES.txt
index ddb1171,13e89c2..b8f4294
--- a/solr/CHANGES.txt
+++ b/solr/CHANGES.txt
@@@ -228,9 -251,17 +251,20 @@@ Bug Fixe
* SOLR-8375: ReplicaAssigner rejects valid nodes (Kelvin Tan, noble)
+ * SOLR-8738: Fixed false success response when invalid deleteByQuery requests intially hit non-leader
+ cloud nodes (hossman)
+
+ * SOLR-8771: Multi-threaded core shutdown creates executor per core. (Mike Drob via Mark Miller)
+
+ * SOLR-8145: Fix position of OOM killer script when starting Solr in the background (Jurian Broertjes via
+ Timothy Potter)
+
+ * SOLR-8769: Fix document exclusion in mlt query parser in Cloud mode for schemas that have non-"id"
+ unique field (Erik Hatcher, Anshum Gupta)
+
+* SOLR-8728: ReplicaAssigner throws NPE when a partial list of nodes are only participating in replica
+ placement. splitshard should preassign nodes using rules, if rules are present (noble, Shai Erera)
+
Optimizations
----------------------
* SOLR-7876: Speed up queries and operations that use many terms when timeAllowed has not been
http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/517acece/solr/core/src/java/org/apache/solr/cloud/OverseerCollectionMessageHandler.java
----------------------------------------------------------------------