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 ;-(