You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@lucene.apache.org by ho...@apache.org on 2018/12/11 02:48:44 UTC
lucene-solr:master: SOLR-13050: add workaround for issue to
SystemLogListenerTest
Repository: lucene-solr
Updated Branches:
refs/heads/master f89f109ec -> a2199c72d
SOLR-13050: add workaround for issue to SystemLogListenerTest
make sure the node we kill isn't the .system collection leader
Project: http://git-wip-us.apache.org/repos/asf/lucene-solr/repo
Commit: http://git-wip-us.apache.org/repos/asf/lucene-solr/commit/a2199c72
Tree: http://git-wip-us.apache.org/repos/asf/lucene-solr/tree/a2199c72
Diff: http://git-wip-us.apache.org/repos/asf/lucene-solr/diff/a2199c72
Branch: refs/heads/master
Commit: a2199c72d40c8aaf55dd9ca20816c2aa1ee805ea
Parents: f89f109
Author: Chris Hostetter <ho...@apache.org>
Authored: Mon Dec 10 19:06:42 2018 -0700
Committer: Chris Hostetter <ho...@apache.org>
Committed: Mon Dec 10 19:06:42 2018 -0700
----------------------------------------------------------------------
.../autoscaling/SystemLogListenerTest.java | 46 +++++++++++++-------
1 file changed, 30 insertions(+), 16 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/a2199c72/solr/core/src/test/org/apache/solr/cloud/autoscaling/SystemLogListenerTest.java
----------------------------------------------------------------------
diff --git a/solr/core/src/test/org/apache/solr/cloud/autoscaling/SystemLogListenerTest.java b/solr/core/src/test/org/apache/solr/cloud/autoscaling/SystemLogListenerTest.java
index 040a26f..6a84a6f 100644
--- a/solr/core/src/test/org/apache/solr/cloud/autoscaling/SystemLogListenerTest.java
+++ b/solr/core/src/test/org/apache/solr/cloud/autoscaling/SystemLogListenerTest.java
@@ -38,6 +38,7 @@ import org.apache.solr.client.solrj.response.QueryResponse;
import org.apache.solr.cloud.SolrCloudTestCase;
import org.apache.solr.common.SolrDocument;
import org.apache.solr.common.SolrDocumentList;
+import org.apache.solr.common.cloud.Replica;
import org.apache.solr.common.params.CollectionAdminParams;
import org.apache.solr.common.params.CommonParams;
import org.apache.solr.common.params.ModifiableSolrParams;
@@ -148,25 +149,16 @@ public class SystemLogListenerTest extends SolrCloudTestCase {
response = solrClient.request(req);
assertEquals(response.get("result").toString(), "success");
- // stop non-overseer node
- NamedList<Object> overSeerStatus = cluster.getSolrClient().request(CollectionAdminRequest.getOverseerStatus());
- String overseerLeader = (String) overSeerStatus.get("leader");
- int nonOverseerLeaderIndex = 0;
- for (int i = 0; i < cluster.getJettySolrRunners().size(); i++) {
- JettySolrRunner jetty = cluster.getJettySolrRunner(i);
- if (!jetty.getNodeName().equals(overseerLeader)) {
- nonOverseerLeaderIndex = i;
- }
- }
- log.info("Stopping node " + cluster.getJettySolrRunner(nonOverseerLeaderIndex).getNodeName());
- JettySolrRunner j = cluster.stopJettySolrRunner(nonOverseerLeaderIndex);
- cluster.waitForJettyToStop(j);
+ // Stop a node (that's safe to stop for the purposes of this test)
+ final JettySolrRunner stoppedJetty = pickNodeToStop();
+ log.info("Stopping node " + stoppedJetty.getNodeName());
+ cluster.stopJettySolrRunner(stoppedJetty);
+ cluster.waitForJettyToStop(stoppedJetty);
+
assertTrue("Trigger was not fired ", triggerFiredLatch.await(60, TimeUnit.SECONDS));
assertTrue(fired.get());
Map context = actionContextPropsRef.get();
assertNotNull(context);
-
-
TimeOut timeout = new TimeOut(30, TimeUnit.SECONDS, TimeSource.NANO_TIME);
@@ -199,7 +191,8 @@ public class SystemLogListenerTest extends SolrCloudTestCase {
QueryResponse resp = cluster.getSolrClient().query(CollectionAdminParams.SYSTEM_COLL, query);
SolrDocumentList docs = resp.getResults();
assertNotNull(docs);
- assertEquals("wrong number of events added to .system", 9, docs.size());
+ assertEquals("wrong number of events added to .system: " + docs.toString(),
+ 9, docs.size());
docs.forEach(doc -> assertCommonFields(doc));
// STARTED
@@ -273,4 +266,25 @@ public class SystemLogListenerTest extends SolrCloudTestCase {
assertNotNull(doc.getFieldValue("event_str"));
assertEquals("NODELOST", doc.getFieldValue("event.type_s"));
}
+
+ /**
+ * Helper method for picking a node that can safely be stoped
+ * @see <a href="https://issues.apache.org/jira/browse/SOLR-13050">SOLR-13050</a>
+ */
+ private JettySolrRunner pickNodeToStop() throws Exception {
+ // first get the nodeName of the overser.
+ // stopping the overseer is not something we want to hassle with in this test
+ final String overseerNodeName = (String) cluster.getSolrClient().request
+ (CollectionAdminRequest.getOverseerStatus()).get("leader");
+
+ // now find a node that is *NOT* the overseer or the leader of a .system collection shard
+ for (Replica r : getCollectionState(CollectionAdminParams.SYSTEM_COLL).getReplicas()) {
+ if ( ! (r.getBool("leader", false) || r.getNodeName().equals(overseerNodeName) ) ) {
+ return cluster.getReplicaJetty(r);
+ }
+ }
+ fail("Couldn't find non-leader, non-overseer, replica of .system collection to kill");
+ return null;
+ }
+
}