You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@lucene.apache.org by is...@apache.org on 2023/10/30 02:01:29 UTC

(lucene-solr) branch branch_8_11 updated: Revert "SOLR-15694, 15715: Create ephemeral roles properly (missed backporting these changes last time)"

This is an automated email from the ASF dual-hosted git repository.

ishan pushed a commit to branch branch_8_11
in repository https://gitbox.apache.org/repos/asf/lucene-solr.git


The following commit(s) were added to refs/heads/branch_8_11 by this push:
     new 002b3ce67be Revert "SOLR-15694, 15715: Create ephemeral roles properly (missed backporting these changes last time)"
002b3ce67be is described below

commit 002b3ce67bea7dfe114c3b7dfdceb00b8777363c
Author: Ishan Chattopadhyaya <is...@searchscale.com>
AuthorDate: Mon Oct 30 07:31:13 2023 +0530

    Revert "SOLR-15694, 15715: Create ephemeral roles properly (missed backporting these changes last time)"
    
    This reverts commit b54a788fe71c7f87a8b8564461cb196c138fc7ce.
---
 .../java/org/apache/solr/cloud/ZkController.java   | 44 ++++++----------------
 1 file changed, 12 insertions(+), 32 deletions(-)

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 5eb77715373..6f6bcbf24dc 100644
--- a/solr/core/src/java/org/apache/solr/cloud/ZkController.java
+++ b/solr/core/src/java/org/apache/solr/cloud/ZkController.java
@@ -106,10 +106,8 @@ import org.apache.solr.core.CloseHook;
 import org.apache.solr.core.CloudConfig;
 import org.apache.solr.core.CoreContainer;
 import org.apache.solr.core.CoreDescriptor;
-import org.apache.solr.core.NodeRoles;
 import org.apache.solr.core.SolrCore;
 import org.apache.solr.core.SolrCoreInitializationException;
-import org.apache.solr.handler.ClusterAPI;
 import org.apache.solr.handler.admin.ConfigSetsHandler;
 import org.apache.solr.handler.component.HttpShardHandler;
 import org.apache.solr.logging.MDCLoggingContext;
@@ -702,7 +700,7 @@ public class ZkController implements Closeable {
 
     // if this replica is not a leader, it will be put in recovery state by the leader
     String leader = cd.getCloudDescriptor().getCoreNodeName();
-    if (!Objects.equals(shard.getReplica(leader), shard.getLeader())) return;
+    if (shard.getReplica(leader) != shard.getLeader()) return;
 
     Set<String> liveNodes = getClusterState().getLiveNodes();
     int numActiveReplicas = shard.getReplicas(
@@ -860,14 +858,6 @@ public class ZkController implements Closeable {
       throws KeeperException, InterruptedException, IOException {
     ZkCmdExecutor cmdExecutor = new ZkCmdExecutor(zkClient.getZkClientTimeout());
     cmdExecutor.ensureExists(ZkStateReader.LIVE_NODES_ZKNODE, zkClient);
-    cmdExecutor.ensureExists(ZkStateReader.NODE_ROLES, zkClient);
-    for (NodeRoles.Role role : NodeRoles.Role.values()) {
-      cmdExecutor.ensureExists(NodeRoles.getZNodeForRole(role), zkClient);
-      for (String mode : role.supportedModes()) {
-        cmdExecutor.ensureExists(NodeRoles.getZNodeForRoleMode(role, mode), zkClient);
-      }
-    }
-
     cmdExecutor.ensureExists(ZkStateReader.COLLECTIONS_ZKNODE, zkClient);
     cmdExecutor.ensureExists(ZkStateReader.ALIASES, zkClient);
     cmdExecutor.ensureExists(ZkStateReader.SOLR_AUTOSCALING_EVENTS_PATH, zkClient);
@@ -1170,27 +1160,17 @@ public class ZkController implements Closeable {
     String nodePath = ZkStateReader.LIVE_NODES_ZKNODE + "/" + nodeName;
     String nodeAddedPath = ZkStateReader.SOLR_AUTOSCALING_NODE_ADDED_PATH + "/" + nodeName;
     log.info("Register node as live in ZooKeeper:{}", nodePath);
-    Map<NodeRoles.Role, String> roles = cc.nodeRoles.getRoles();
-
-    try {
-      zkClient.create(nodePath, null, CreateMode.EPHEMERAL, true);
-    } catch (KeeperException.NodeExistsException e) {
-      // ignore , it's already there
-    }
-
-    for (Map.Entry<NodeRoles.Role, String> e : roles.entrySet()) {
-      try {
-        zkClient.create(
-            NodeRoles.getZNodeForRoleMode(e.getKey(), e.getValue()) + "/" + nodeName,
-            null,
-            CreateMode.EPHEMERAL,
-            true);
-      } catch (KeeperException.NodeExistsException ex) {
-        // ignore , it already exists
-      }
-    }
-
-    log.info("non-data nodes now {}",  zkClient.getChildren("/node_roles/data/off", null,true));
+    List<Op> ops = new ArrayList<>(2);
+    ops.add(Op.create(nodePath, null, zkClient.getZkACLProvider().getACLsToAdd(nodePath), CreateMode.EPHEMERAL));
+    // if there are nodeAdded triggers don't create nodeAdded markers
+    boolean createMarkerNode = zkStateReader.getAutoScalingConfig().hasTriggerForEvents(TriggerEventType.NODEADDED);
+    if (createMarkerNode && !zkClient.exists(nodeAddedPath, true)) {
+      // use EPHEMERAL so that it disappears if this node goes down
+      // and no other action is taken
+      byte[] json = Utils.toJSON(Collections.singletonMap("timestamp", TimeSource.NANO_TIME.getEpochTimeNs()));
+      ops.add(Op.create(nodeAddedPath, json, zkClient.getZkACLProvider().getACLsToAdd(nodeAddedPath), CreateMode.EPHEMERAL));
+    }
+    zkClient.multi(ops, true);
   }
 
   public void removeEphemeralLiveNode() throws KeeperException, InterruptedException {