You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@lucene.apache.org by ge...@apache.org on 2018/12/14 17:22:21 UTC
[1/3] lucene-solr:master: Indicate collection in `clusterShape` log
messages
Repository: lucene-solr
Updated Branches:
refs/heads/master 3ca7e6538 -> 1d601ed64
Indicate collection in `clusterShape` log messages
Many of Solr's tests use CloudTestUtils' `waitForState` and
`clusterShape` methods to wait until a SolrCloud cluster matches a
particular expected shape. The code periodically checks on the cluster
state, and logs a message if a collection doesn't match the state we
expect of it. Prior to this commit, these log messages omitted the
collection name though, which makes things a little confusing when a
test is checking on the state of multiple collections simultaneously (as
can happen when Triggers fire in the background).
Project: http://git-wip-us.apache.org/repos/asf/lucene-solr/repo
Commit: http://git-wip-us.apache.org/repos/asf/lucene-solr/commit/dd910d1a
Tree: http://git-wip-us.apache.org/repos/asf/lucene-solr/tree/dd910d1a
Diff: http://git-wip-us.apache.org/repos/asf/lucene-solr/diff/dd910d1a
Branch: refs/heads/master
Commit: dd910d1a06455032a9a18e5f0de3ca45e065ceef
Parents: 3ca7e65
Author: Jason Gerlowski <ge...@apache.org>
Authored: Fri Dec 14 10:57:20 2018 -0500
Committer: Jason Gerlowski <ge...@apache.org>
Committed: Fri Dec 14 12:21:19 2018 -0500
----------------------------------------------------------------------
solr/core/src/test/org/apache/solr/cloud/CloudTestUtils.java | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/dd910d1a/solr/core/src/test/org/apache/solr/cloud/CloudTestUtils.java
----------------------------------------------------------------------
diff --git a/solr/core/src/test/org/apache/solr/cloud/CloudTestUtils.java b/solr/core/src/test/org/apache/solr/cloud/CloudTestUtils.java
index a1fccd2..bb74967 100644
--- a/solr/core/src/test/org/apache/solr/cloud/CloudTestUtils.java
+++ b/solr/core/src/test/org/apache/solr/cloud/CloudTestUtils.java
@@ -141,7 +141,7 @@ public class CloudTestUtils {
}
Collection<Slice> slices = withInactive ? collectionState.getSlices() : collectionState.getActiveSlices();
if (slices.size() != expectedShards) {
- log.info("-- wrong number of slices, expected={}, found={}: {}", expectedShards, collectionState.getSlices().size(), collectionState.getSlices());
+ log.info("-- wrong number of slices for collection {}, expected={}, found={}: {}", collectionState.getName(), expectedShards, collectionState.getSlices().size(), collectionState.getSlices());
return false;
}
Set<String> leaderless = new HashSet<>();
@@ -160,7 +160,7 @@ public class CloudTestUtils {
activeReplicas++;
}
if (activeReplicas != expectedReplicas) {
- log.info("-- wrong number of active replicas in slice {}, expected={}, found={}", slice.getName(), expectedReplicas, activeReplicas);
+ log.info("-- wrong number of active replicas for collection {} in slice {}, expected={}, found={}", collectionState.getName(), slice.getName(), expectedReplicas, activeReplicas);
return false;
}
}
[3/3] lucene-solr:master: SOLR-13065: Harden TestSimExecutePlanAction
Posted by ge...@apache.org.
SOLR-13065: Harden TestSimExecutePlanAction
Project: http://git-wip-us.apache.org/repos/asf/lucene-solr/repo
Commit: http://git-wip-us.apache.org/repos/asf/lucene-solr/commit/1d601ed6
Tree: http://git-wip-us.apache.org/repos/asf/lucene-solr/tree/1d601ed6
Diff: http://git-wip-us.apache.org/repos/asf/lucene-solr/diff/1d601ed6
Branch: refs/heads/master
Commit: 1d601ed6460c9041faabeec7f5491ef21a052a00
Parents: 655e9ec
Author: Jason Gerlowski <ge...@apache.org>
Authored: Fri Dec 14 11:09:43 2018 -0500
Committer: Jason Gerlowski <ge...@apache.org>
Committed: Fri Dec 14 12:22:09 2018 -0500
----------------------------------------------------------------------
.../sim/SimClusterStateProvider.java | 35 ++++++++++++++------
.../sim/TestSimExecutePlanAction.java | 2 --
2 files changed, 25 insertions(+), 12 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/1d601ed6/solr/core/src/test/org/apache/solr/cloud/autoscaling/sim/SimClusterStateProvider.java
----------------------------------------------------------------------
diff --git a/solr/core/src/test/org/apache/solr/cloud/autoscaling/sim/SimClusterStateProvider.java b/solr/core/src/test/org/apache/solr/cloud/autoscaling/sim/SimClusterStateProvider.java
index c411b21..fd6c955 100644
--- a/solr/core/src/test/org/apache/solr/cloud/autoscaling/sim/SimClusterStateProvider.java
+++ b/solr/core/src/test/org/apache/solr/cloud/autoscaling/sim/SimClusterStateProvider.java
@@ -411,16 +411,16 @@ public class SimClusterStateProvider implements ClusterStateProvider {
lock.lockInterruptibly();
try {
setReplicaStates(nodeId, Replica.State.ACTIVE, collections);
+ if (!collections.isEmpty()) {
+ collectionsStatesRef.set(null);
+ simRunLeaderElection(collections, true);
+ return true;
+ } else {
+ return false;
+ }
} finally {
lock.unlock();
}
- if (!collections.isEmpty()) {
- collectionsStatesRef.set(null);
- simRunLeaderElection(collections, true);
- return true;
- } else {
- return false;
- }
}
/**
@@ -657,7 +657,12 @@ public class SimClusterStateProvider implements ClusterStateProvider {
private void simRunLeaderElection(Collection<String> collections, boolean saveClusterState) throws Exception {
ensureNotClosed();
if (saveClusterState) {
- collectionsStatesRef.set(null);
+ lock.lockInterruptibly();
+ try {
+ collectionsStatesRef.set(null);
+ } finally {
+ lock.unlock();
+ }
}
ClusterState state = getClusterState();
state.forEachCollection(dc -> {
@@ -798,7 +803,12 @@ public class SimClusterStateProvider implements ClusterStateProvider {
CreateCollectionCmd.checkReplicaTypes(props);
// always force getting fresh state
- collectionsStatesRef.set(null);
+ lock.lockInterruptibly();
+ try {
+ collectionsStatesRef.set(null);
+ } finally {
+ lock.unlock();
+ }
final ClusterState clusterState = getClusterState();
String withCollection = props.getStr(CollectionAdminParams.WITH_COLLECTION);
@@ -928,7 +938,12 @@ public class SimClusterStateProvider implements ClusterStateProvider {
});
// force recreation of collection states
- collectionsStatesRef.set(null);
+ lock.lockInterruptibly();
+ try {
+ collectionsStatesRef.set(null);
+ } finally {
+ lock.unlock();
+ }
//simRunLeaderElection(Collections.singleton(collectionName), true);
if (waitForFinalState) {
boolean finished = finalStateLatch.await(cloudManager.getTimeSource().convertDelay(TimeUnit.SECONDS, 60, TimeUnit.MILLISECONDS),
http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/1d601ed6/solr/core/src/test/org/apache/solr/cloud/autoscaling/sim/TestSimExecutePlanAction.java
----------------------------------------------------------------------
diff --git a/solr/core/src/test/org/apache/solr/cloud/autoscaling/sim/TestSimExecutePlanAction.java b/solr/core/src/test/org/apache/solr/cloud/autoscaling/sim/TestSimExecutePlanAction.java
index 1d36f14..8f95288 100644
--- a/solr/core/src/test/org/apache/solr/cloud/autoscaling/sim/TestSimExecutePlanAction.java
+++ b/solr/core/src/test/org/apache/solr/cloud/autoscaling/sim/TestSimExecutePlanAction.java
@@ -83,7 +83,6 @@ public class TestSimExecutePlanAction extends SimSolrCloudTestCase {
@Test
@LuceneTestCase.BadApple(bugUrl="https://issues.apache.org/jira/browse/SOLR-12028") // 28-June-2018
- @AwaitsFix(bugUrl="https://issues.apache.org/jira/browse/SOLR-12028")
public void testExecute() throws Exception {
SolrClient solrClient = cluster.simGetSolrClient();
String collectionName = "testExecute";
@@ -159,7 +158,6 @@ public class TestSimExecutePlanAction extends SimSolrCloudTestCase {
}
@Test
- @AwaitsFix(bugUrl="https://issues.apache.org/jira/browse/SOLR-12028") // this test can fail to elect a leader, seems to be common among sim tests
public void testIntegration() throws Exception {
SolrClient solrClient = cluster.simGetSolrClient();
[2/3] lucene-solr:master: Fix active replica count reporting in
SimClusterStateProvider
Posted by ge...@apache.org.
Fix active replica count reporting in SimClusterStateProvider
One codepath assumed all replicas were active, instead of checking the
state of each individually.
Project: http://git-wip-us.apache.org/repos/asf/lucene-solr/repo
Commit: http://git-wip-us.apache.org/repos/asf/lucene-solr/commit/655e9ecf
Tree: http://git-wip-us.apache.org/repos/asf/lucene-solr/tree/655e9ecf
Diff: http://git-wip-us.apache.org/repos/asf/lucene-solr/diff/655e9ecf
Branch: refs/heads/master
Commit: 655e9ecf7cbd03c301620abfba04b172f96946c2
Parents: dd910d1
Author: Jason Gerlowski <ge...@apache.org>
Authored: Fri Dec 14 11:07:10 2018 -0500
Committer: Jason Gerlowski <ge...@apache.org>
Committed: Fri Dec 14 12:21:47 2018 -0500
----------------------------------------------------------------------
.../solr/cloud/autoscaling/sim/SimClusterStateProvider.java | 7 ++++++-
1 file changed, 6 insertions(+), 1 deletion(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/655e9ecf/solr/core/src/test/org/apache/solr/cloud/autoscaling/sim/SimClusterStateProvider.java
----------------------------------------------------------------------
diff --git a/solr/core/src/test/org/apache/solr/cloud/autoscaling/sim/SimClusterStateProvider.java b/solr/core/src/test/org/apache/solr/cloud/autoscaling/sim/SimClusterStateProvider.java
index 6197c41..c411b21 100644
--- a/solr/core/src/test/org/apache/solr/cloud/autoscaling/sim/SimClusterStateProvider.java
+++ b/solr/core/src/test/org/apache/solr/cloud/autoscaling/sim/SimClusterStateProvider.java
@@ -1998,7 +1998,12 @@ public class SimClusterStateProvider implements ClusterStateProvider {
if (buffered != null) {
bufferedDocs += buffered.get();
}
- activeReplicas += s.getReplicas().size();
+
+ for (Replica r : s.getReplicas()) {
+ if (r.getState() == Replica.State.ACTIVE) {
+ activeReplicas++;
+ }
+ }
Replica leader = s.getLeader();
if (leader == null) {
noLeader++;