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 {