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

houston pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/solr.git


The following commit(s) were added to refs/heads/main by this push:
     new 746e6bb9705 Make test connectionLoss logic the same and always wait 
for loss (#3225)
746e6bb9705 is described below

commit 746e6bb970589017aa5c3243e62d290c0fa10043
Author: Houston Putman <[email protected]>
AuthorDate: Mon Mar 10 11:42:40 2025 -0500

    Make test connectionLoss logic the same and always wait for loss (#3225)
---
 .../src/java/org/apache/solr/cloud/ChaosMonkey.java    | 18 +++++++++++++++---
 .../org/apache/solr/cloud/MiniSolrCloudCluster.java    | 17 +----------------
 2 files changed, 16 insertions(+), 19 deletions(-)

diff --git 
a/solr/test-framework/src/java/org/apache/solr/cloud/ChaosMonkey.java 
b/solr/test-framework/src/java/org/apache/solr/cloud/ChaosMonkey.java
index 805866dc855..7aba886eeb6 100644
--- a/solr/test-framework/src/java/org/apache/solr/cloud/ChaosMonkey.java
+++ b/solr/test-framework/src/java/org/apache/solr/cloud/ChaosMonkey.java
@@ -146,12 +146,24 @@ public class ChaosMonkey {
 
   // TODO: expire all clients at once?
   public void expireSession(final JettySolrRunner jetty) {
+    expireSession(jetty, zkServer);
+  }
+
+  public static void expireSession(final JettySolrRunner jetty, final 
ZkTestServer zkServer) {
     CoreContainer cores = jetty.getCoreContainer();
     if (cores != null) {
-      monkeyLog("expire session for " + jetty.getLocalPort() + " !");
-      long sessionId = cores.getZkController().getZkClient().getZkSessionId();
+      monkeyLog("expire session for node " + jetty.getBaseUrl() + " !");
+      SolrZkClient zkClient = cores.getZkController().getZkClient();
+      long sessionId = zkClient.getZkSessionId();
       zkServer.expire(sessionId);
       causeConnectionLoss(jetty);
+      // Loop until either the Zookeeper Client is no longer connected, or the 
zkSessionID changes
+      // (which means the connection was lost in the client)
+      while 
(zkClient.getCuratorFramework().getZookeeperClient().isConnected()) {
+        if (zkClient.getZkSessionId() != sessionId) {
+          break;
+        }
+      }
     }
   }
 
@@ -179,7 +191,7 @@ public class ChaosMonkey {
   public static void causeConnectionLoss(JettySolrRunner jetty) {
     CoreContainer cores = jetty.getCoreContainer();
     if (cores != null) {
-      monkeyLog("Will cause connection loss on " + jetty.getLocalPort());
+      monkeyLog("Will cause connection loss on node " + jetty.getBaseUrl());
       SolrZkClient zkClient = cores.getZkController().getZkClient();
       try {
         
KillSession.kill(zkClient.getCuratorFramework().getZookeeperClient().getZooKeeper());
diff --git 
a/solr/test-framework/src/java/org/apache/solr/cloud/MiniSolrCloudCluster.java 
b/solr/test-framework/src/java/org/apache/solr/cloud/MiniSolrCloudCluster.java
index 1eeb25914ce..fd61ae2c9c1 100644
--- 
a/solr/test-framework/src/java/org/apache/solr/cloud/MiniSolrCloudCluster.java
+++ 
b/solr/test-framework/src/java/org/apache/solr/cloud/MiniSolrCloudCluster.java
@@ -54,7 +54,6 @@ import java.util.concurrent.atomic.AtomicInteger;
 import java.util.concurrent.atomic.AtomicReference;
 import java.util.function.Consumer;
 import javax.servlet.Filter;
-import org.apache.curator.test.KillSession;
 import org.apache.lucene.tests.util.LuceneTestCase;
 import org.apache.solr.SolrTestCaseJ4;
 import org.apache.solr.client.solrj.embedded.SSLConfig;
@@ -799,21 +798,7 @@ public class MiniSolrCloudCluster {
 
   /** Make the zookeeper session on a particular jetty lose connection and 
expire */
   public void expireZkSession(JettySolrRunner jetty) {
-    CoreContainer cores = jetty.getCoreContainer();
-    if (cores != null) {
-      ChaosMonkey.causeConnectionLoss(jetty);
-      SolrZkClient zkClient = cores.getZkController().getZkClient();
-      long sessionId = zkClient.getZkSessionId();
-      zkServer.expire(sessionId);
-      try {
-        
KillSession.kill(zkClient.getCuratorFramework().getZookeeperClient().getZooKeeper());
-      } catch (Exception e) {
-        log.error("Exception killing session", e);
-      }
-      if (log.isInfoEnabled()) {
-        log.info("Expired zookeeper session from node {}", jetty.getBaseUrl());
-      }
-    }
+    ChaosMonkey.expireSession(jetty, zkServer);
   }
 
   // Currently not used ;-(

Reply via email to