You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@lucene.apache.org by ab...@apache.org on 2019/01/02 15:56:51 UTC
lucene-solr:master: SOLR-13050: Fix another test that could
accidentally kill the .system leader node. Improve fallback in
SystemLogListener when target collection is not present.
Repository: lucene-solr
Updated Branches:
refs/heads/master 302184dd7 -> b9457b78d
SOLR-13050: Fix another test that could accidentally kill the .system leader node.
Improve fallback in SystemLogListener when target collection is not 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/b9457b78
Tree: http://git-wip-us.apache.org/repos/asf/lucene-solr/tree/b9457b78
Diff: http://git-wip-us.apache.org/repos/asf/lucene-solr/diff/b9457b78
Branch: refs/heads/master
Commit: b9457b78d573c133e1beeb50cdf1fc786ae0c0f4
Parents: 302184d
Author: Andrzej Bialecki <ab...@apache.org>
Authored: Wed Jan 2 16:55:16 2019 +0100
Committer: Andrzej Bialecki <ab...@apache.org>
Committed: Wed Jan 2 16:55:16 2019 +0100
----------------------------------------------------------------------
.../solr/cloud/autoscaling/SystemLogListener.java | 15 +++++++++++----
.../handler/admin/AutoscalingHistoryHandlerTest.java | 15 +++++++++++++++
2 files changed, 26 insertions(+), 4 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/b9457b78/solr/core/src/java/org/apache/solr/cloud/autoscaling/SystemLogListener.java
----------------------------------------------------------------------
diff --git a/solr/core/src/java/org/apache/solr/cloud/autoscaling/SystemLogListener.java b/solr/core/src/java/org/apache/solr/cloud/autoscaling/SystemLogListener.java
index c6f0e68..09b0865 100644
--- a/solr/core/src/java/org/apache/solr/cloud/autoscaling/SystemLogListener.java
+++ b/solr/core/src/java/org/apache/solr/cloud/autoscaling/SystemLogListener.java
@@ -36,6 +36,8 @@ import org.apache.solr.client.solrj.cloud.autoscaling.TriggerEventProcessorStage
import org.apache.solr.client.solrj.request.UpdateRequest;
import org.apache.solr.common.SolrException;
import org.apache.solr.common.SolrInputDocument;
+import org.apache.solr.common.cloud.ClusterState;
+import org.apache.solr.common.cloud.DocCollection;
import org.apache.solr.common.params.CollectionAdminParams;
import org.apache.solr.common.params.CommonParams;
import org.apache.solr.common.params.SolrParams;
@@ -81,6 +83,12 @@ public class SystemLogListener extends TriggerListenerBase {
public void onEvent(TriggerEvent event, TriggerEventProcessorStage stage, String actionName, ActionContext context,
Throwable error, String message) throws Exception {
try {
+ ClusterState clusterState = cloudManager.getClusterStateProvider().getClusterState();
+ DocCollection coll = clusterState.getCollectionOrNull(collection);
+ if (coll == null) {
+ log.debug("Collection {} missing, skip sending event {}", collection, event);
+ return;
+ }
SolrInputDocument doc = new SolrInputDocument();
doc.addField(CommonParams.TYPE, DOC_TYPE);
doc.addField(SOURCE_FIELD, SOURCE);
@@ -118,11 +126,10 @@ public class SystemLogListener extends TriggerListenerBase {
cloudManager.request(req);
} catch (Exception e) {
if ((e instanceof SolrException) && e.getMessage().contains("Collection not found")) {
- // relatively benign
- log.info("Collection " + collection + " does not exist, disabling logging.");
- enabled = false;
+ // relatively benign but log this - collection still existed when we started
+ log.info("Collection {} missing, skip sending event {}", collection, event);
} else {
- log.warn("Exception sending event to collection " + collection, e);
+ log.warn("Exception sending event. Collection: {}, event: {}, exception: {}", collection, event, e);
}
}
}
http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/b9457b78/solr/core/src/test/org/apache/solr/handler/admin/AutoscalingHistoryHandlerTest.java
----------------------------------------------------------------------
diff --git a/solr/core/src/test/org/apache/solr/handler/admin/AutoscalingHistoryHandlerTest.java b/solr/core/src/test/org/apache/solr/handler/admin/AutoscalingHistoryHandlerTest.java
index ddc6f38..2a44f46 100644
--- a/solr/core/src/test/org/apache/solr/handler/admin/AutoscalingHistoryHandlerTest.java
+++ b/solr/core/src/test/org/apache/solr/handler/admin/AutoscalingHistoryHandlerTest.java
@@ -18,6 +18,7 @@ package org.apache.solr.handler.admin;
import java.lang.invoke.MethodHandles;
import java.util.Collection;
+import java.util.Collections;
import java.util.Set;
import java.util.concurrent.CountDownLatch;
import java.util.concurrent.TimeUnit;
@@ -336,10 +337,24 @@ public class AutoscalingHistoryHandlerTest extends SolrCloudTestCase {
String overseerLeader = (String) overSeerStatus.get("leader");
ClusterState state = cluster.getSolrClient().getZkStateReader().getClusterState();
DocCollection coll = state.getCollection(COLL_NAME);
+ DocCollection system = state.getCollectionOrNull(CollectionAdminParams.SYSTEM_COLL);
+ Set<String> systemLeaderNodes;
+ if (system != null) {
+ systemLeaderNodes = system.getReplicas().stream()
+ .filter(r -> r.getBool("leader", false))
+ .map(r -> r.getNodeName())
+ .collect(Collectors.toSet());
+ } else {
+ systemLeaderNodes = Collections.emptySet();
+ }
String nodeToKill = null;
for (Replica r : coll.getReplicas()) {
if (r.isActive(state.getLiveNodes()) &&
!r.getNodeName().equals(overseerLeader)) {
+ if (systemLeaderNodes.contains(r.getNodeName())) {
+ log.info("--skipping .system leader replica {}", r);
+ continue;
+ }
nodeToKill = r.getNodeName();
break;
}