From 8e60f60a3c88a2b28a5b3b4a60af8ecb42752a0e Mon Sep 17 00:00:00 2001 From: Sam Tunnicliffe Date: Wed, 28 Jan 2026 15:42:47 +0000 Subject: [PATCH] Remove potential gossip deadlock during decommission Remove unnecessary updating of local app state when leaving --- src/java/org/apache/cassandra/gms/Gossiper.java | 10 ---------- 1 file changed, 10 deletions(-) diff --git a/src/java/org/apache/cassandra/gms/Gossiper.java b/src/java/org/apache/cassandra/gms/Gossiper.java index fa88f227dfa..675974c10ee 100644 --- a/src/java/org/apache/cassandra/gms/Gossiper.java +++ b/src/java/org/apache/cassandra/gms/Gossiper.java @@ -2178,16 +2178,6 @@ public void unsafeBroadcastLeftStatus(InetAddressAndPort left, toSend.forceNewerGenerationUnsafe(); toSend.markDead(); VersionedValue value = StorageService.instance.valueFactory.left(tokens, computeExpireTime()); - - if (left.equals(getBroadcastAddressAndPort())) - { - // Adding local state bumps the value's version. To keep this consistent across - // the cluster, re-fetch it before broadcasting. - Gossiper.instance.addLocalApplicationState(ApplicationState.STATUS_WITH_PORT, value); - value = Gossiper.instance.endpointStateMap.get(getBroadcastAddressAndPort()) - .getApplicationState(ApplicationState.STATUS_WITH_PORT); - } - toSend.addApplicationState(ApplicationState.STATUS_WITH_PORT, value); GossipDigestAck2 payload = new GossipDigestAck2(Collections.singletonMap(left, toSend)); logger.info("Sending app state with status {} to {}", value.value, sendTo);