diff --git a/solr/CHANGES.txt b/solr/CHANGES.txt index 1e3bfd129c7..38194623836 100644 --- a/solr/CHANGES.txt +++ b/solr/CHANGES.txt @@ -527,6 +527,8 @@ Other Changes * SOLR-8290: remove SchemaField.checkFieldCacheSource's unused QParser argument (Christine Poerschke) +* SOLR-8300: Use constants for the /overseer_elect znode (Varun Thacker) + ================== 5.3.1 ================== Bug Fixes diff --git a/solr/core/src/java/org/apache/solr/cloud/ElectionContext.java b/solr/core/src/java/org/apache/solr/cloud/ElectionContext.java index 941353ea9e3..f0859b7fb75 100644 --- a/solr/core/src/java/org/apache/solr/cloud/ElectionContext.java +++ b/solr/core/src/java/org/apache/solr/cloud/ElectionContext.java @@ -652,14 +652,14 @@ final class OverseerElectionContext extends ElectionContext { private static Logger log = LoggerFactory.getLogger(OverseerElectionContext.class); private final SolrZkClient zkClient; private Overseer overseer; - public static final String PATH = "/overseer_elect"; + public static final String OVERSEER_ELECT = "/overseer_elect"; public OverseerElectionContext(SolrZkClient zkClient, Overseer overseer, final String zkNodeName) { - super(zkNodeName,PATH , PATH+"/leader", null, zkClient); + super(zkNodeName, OVERSEER_ELECT, OVERSEER_ELECT + "/leader", null, zkClient); this.overseer = overseer; this.zkClient = zkClient; try { - new ZkCmdExecutor(zkClient.getZkClientTimeout()).ensureExists("/overseer_elect", zkClient); + new ZkCmdExecutor(zkClient.getZkClientTimeout()).ensureExists(OVERSEER_ELECT, zkClient); } catch (KeeperException e) { throw new SolrException(ErrorCode.SERVER_ERROR, e); } catch (InterruptedException e) { diff --git a/solr/core/src/java/org/apache/solr/cloud/Overseer.java b/solr/core/src/java/org/apache/solr/cloud/Overseer.java index 5805335c125..3cdbe09219b 100644 --- a/solr/core/src/java/org/apache/solr/cloud/Overseer.java +++ b/solr/core/src/java/org/apache/solr/cloud/Overseer.java @@ -298,8 +298,8 @@ public class Overseer implements Closeable { private void checkIfIamStillLeader() { if (zkController != null && zkController.getCoreContainer().isShutDown()) return;//shutting down no need to go further org.apache.zookeeper.data.Stat stat = new org.apache.zookeeper.data.Stat(); - String path = "/overseer_elect/leader"; - byte[] data = null; + String path = OverseerElectionContext.OVERSEER_ELECT + "/leader"; + byte[] data; try { data = zkClient.getData(path, null, stat, true); } catch (Exception e) { @@ -409,7 +409,7 @@ public class Overseer implements Closeable { boolean success = true; try { ZkNodeProps props = ZkNodeProps.load(zkClient.getData( - "/overseer_elect/leader", null, null, true)); + OverseerElectionContext.OVERSEER_ELECT + "/leader", null, null, true)); if (myId.equals(props.getStr("id"))) { return LeaderStatus.YES; } diff --git a/solr/core/src/java/org/apache/solr/cloud/OverseerNodePrioritizer.java b/solr/core/src/java/org/apache/solr/cloud/OverseerNodePrioritizer.java index 7cd7129c8f6..dd27025e316 100644 --- a/solr/core/src/java/org/apache/solr/cloud/OverseerNodePrioritizer.java +++ b/solr/core/src/java/org/apache/solr/cloud/OverseerNodePrioritizer.java @@ -64,7 +64,7 @@ public class OverseerNodePrioritizer { String ldr = OverseerTaskProcessor.getLeaderNode(zk); if(overseerDesignates.contains(ldr)) return; log.info("prioritizing overseer nodes at {} overseer designates are {}", overseerId, overseerDesignates); - List electionNodes = OverseerTaskProcessor.getSortedElectionNodes(zk, OverseerElectionContext.PATH + LeaderElector.ELECTION_NODE); + List electionNodes = OverseerTaskProcessor.getSortedElectionNodes(zk, OverseerElectionContext.OVERSEER_ELECT + LeaderElector.ELECTION_NODE); if(electionNodes.size()<2) return; log.info("sorted nodes {}", electionNodes); diff --git a/solr/core/src/java/org/apache/solr/cloud/OverseerTaskProcessor.java b/solr/core/src/java/org/apache/solr/cloud/OverseerTaskProcessor.java index 138d696d3b7..e3793c17d67 100644 --- a/solr/core/src/java/org/apache/solr/cloud/OverseerTaskProcessor.java +++ b/solr/core/src/java/org/apache/solr/cloud/OverseerTaskProcessor.java @@ -306,7 +306,7 @@ public class OverseerTaskProcessor implements Runnable, Closeable { public static List getSortedOverseerNodeNames(SolrZkClient zk) throws KeeperException, InterruptedException { List children = null; try { - children = zk.getChildren(OverseerElectionContext.PATH + LeaderElector.ELECTION_NODE, null, true); + children = zk.getChildren(OverseerElectionContext.OVERSEER_ELECT + LeaderElector.ELECTION_NODE, null, true); } catch (Exception e) { log.warn("error ", e); return new ArrayList<>(); @@ -339,7 +339,7 @@ public class OverseerTaskProcessor implements Runnable, Closeable { public static String getLeaderId(SolrZkClient zkClient) throws KeeperException,InterruptedException{ byte[] data = null; try { - data = zkClient.getData("/overseer_elect/leader", null, new Stat(), true); + data = zkClient.getData(OverseerElectionContext.OVERSEER_ELECT + "/leader", null, new Stat(), true); } catch (KeeperException.NoNodeException e) { return null; } @@ -353,7 +353,7 @@ public class OverseerTaskProcessor implements Runnable, Closeable { boolean success = true; try { ZkNodeProps props = ZkNodeProps.load(zkStateReader.getZkClient().getData( - "/overseer_elect/leader", null, null, true)); + OverseerElectionContext.OVERSEER_ELECT + "/leader", null, null, true)); if (myId.equals(props.getStr("id"))) { return LeaderStatus.YES; } diff --git a/solr/core/src/java/org/apache/solr/cloud/ZkController.java b/solr/core/src/java/org/apache/solr/cloud/ZkController.java index c2b5fe28c7b..2507d751027 100644 --- a/solr/core/src/java/org/apache/solr/cloud/ZkController.java +++ b/solr/core/src/java/org/apache/solr/cloud/ZkController.java @@ -1890,7 +1890,7 @@ public final class ZkController { //however delete it . This is possible when the last attempt at deleting the election node failed. if (electionNode.startsWith(getNodeName())) { try { - zkClient.delete(OverseerElectionContext.PATH + LeaderElector.ELECTION_NODE + "/" + electionNode, -1, true); + zkClient.delete(OverseerElectionContext.OVERSEER_ELECT + LeaderElector.ELECTION_NODE + "/" + electionNode, -1, true); } catch (NoNodeException e) { //no problem } catch (InterruptedException e) { diff --git a/solr/core/src/test/org/apache/solr/cloud/OverseerRolesTest.java b/solr/core/src/test/org/apache/solr/cloud/OverseerRolesTest.java index 43531bd3340..d8f4829f06a 100644 --- a/solr/core/src/test/org/apache/solr/cloud/OverseerRolesTest.java +++ b/solr/core/src/test/org/apache/solr/cloud/OverseerRolesTest.java @@ -177,7 +177,7 @@ public class OverseerRolesTest extends AbstractFullDistribZkTestBase{ log.info("leader node {}", leaderJetty.getBaseUrl()); log.info ("current election Queue", OverseerCollectionConfigSetProcessor.getSortedElectionNodes(client.getZkStateReader().getZkClient(), - OverseerElectionContext.PATH + LeaderElector.ELECTION_NODE)); + "/overseer_elect/election")); ChaosMonkey.stop(leaderJetty); timeout = new TimeOut(10, TimeUnit.SECONDS); leaderchanged = false; diff --git a/solr/core/src/test/org/apache/solr/cloud/RollingRestartTest.java b/solr/core/src/test/org/apache/solr/cloud/RollingRestartTest.java index dbdf0f3f36a..aad1bdcb9f0 100644 --- a/solr/core/src/test/org/apache/solr/cloud/RollingRestartTest.java +++ b/solr/core/src/test/org/apache/solr/cloud/RollingRestartTest.java @@ -20,7 +20,6 @@ package org.apache.solr.cloud; import org.apache.commons.collections.CollectionUtils; import org.apache.solr.client.solrj.request.CollectionAdminRequest; import org.apache.solr.common.cloud.SolrZkClient; -import org.apache.solr.common.params.CollectionParams; import org.apache.zookeeper.KeeperException; import org.junit.Test; import org.slf4j.Logger; @@ -97,7 +96,7 @@ public class RollingRestartTest extends AbstractFullDistribZkTestBase { if (leader == null) log.error("NOOVERSEER election queue is :" + OverseerCollectionConfigSetProcessor.getSortedElectionNodes(cloudClient.getZkStateReader().getZkClient(), - OverseerElectionContext.PATH + LeaderElector.ELECTION_NODE)); + "/overseer_elect/election")); fail("No overseer designate as leader found after restart #" + (i + 1) + ": " + leader); } } @@ -108,7 +107,7 @@ public class RollingRestartTest extends AbstractFullDistribZkTestBase { if (leader == null) log.error("NOOVERSEER election queue is :" + OverseerCollectionConfigSetProcessor.getSortedElectionNodes(cloudClient.getZkStateReader().getZkClient(), - OverseerElectionContext.PATH + LeaderElector.ELECTION_NODE)); + "/overseer_elect/election")); fail("No overseer leader found after restart #" + (i + 1) + ": " + leader); }