From 90a4412106c2a95478c6aed4c4154d79f29b7fca Mon Sep 17 00:00:00 2001 From: Sam Tunnicliffe Date: Mon, 26 Jan 2026 13:16:37 +0000 Subject: [PATCH] Make shadow gossip round parameters configurable for testing --- .../cassandra/config/CassandraRelevantProperties.java | 2 ++ src/java/org/apache/cassandra/gms/NewGossiper.java | 7 +++++-- 2 files changed, 7 insertions(+), 2 deletions(-) diff --git a/src/java/org/apache/cassandra/config/CassandraRelevantProperties.java b/src/java/org/apache/cassandra/config/CassandraRelevantProperties.java index cf514b7dfce1..b883b3c19df1 100644 --- a/src/java/org/apache/cassandra/config/CassandraRelevantProperties.java +++ b/src/java/org/apache/cassandra/config/CassandraRelevantProperties.java @@ -584,6 +584,8 @@ public enum CassandraRelevantProperties // transactional cluster metadata relevant properties // TODO: not a fan of being forced to prefix these to satisfy the alphabetic ordering constraint // but it makes sense to group logically related properties together + TCM_SHADOW_ROUND_MAX_ATTEMPTS("cassandra.shadow_round_max_attempts", "3"), + TCM_SHADOW_ROUND_TIMEOUT("cassandra.shadow_round_timeout_millis", "15000"), /** * for testing purposes disable the automatic CMS reconfiguration after a bootstrap/replace/move operation */ diff --git a/src/java/org/apache/cassandra/gms/NewGossiper.java b/src/java/org/apache/cassandra/gms/NewGossiper.java index 4bb8b7596865..073943fddc33 100644 --- a/src/java/org/apache/cassandra/gms/NewGossiper.java +++ b/src/java/org/apache/cassandra/gms/NewGossiper.java @@ -32,6 +32,7 @@ import org.slf4j.Logger; import org.slf4j.LoggerFactory; +import org.apache.cassandra.config.CassandraRelevantProperties; import org.apache.cassandra.config.DatabaseDescriptor; import org.apache.cassandra.db.SystemKeyspace; import org.apache.cassandra.locator.InetAddressAndPort; @@ -68,15 +69,17 @@ public Map doShadowRound() handler = shadowRoundHandler; int tries = 0; + int maxTries = CassandraRelevantProperties.TCM_SHADOW_ROUND_MAX_ATTEMPTS.getInt(); + long timeout = CassandraRelevantProperties.TCM_SHADOW_ROUND_TIMEOUT.getLong(); while (true) { try { - return shadowRoundHandler.doShadowRound().get(15, TimeUnit.SECONDS); + return shadowRoundHandler.doShadowRound().get(timeout, TimeUnit.MILLISECONDS); } catch (InterruptedException | ExecutionException | TimeoutException e) { - if (++tries > 3) + if (++tries >= maxTries) break; logger.warn("Got no response for shadow round"); }