diff --git a/CHANGES.txt b/CHANGES.txt index 08ee99b2a7..ecc330bf8b 100644 --- a/CHANGES.txt +++ b/CHANGES.txt @@ -5,6 +5,7 @@ * Add the ability to disable bulk loading of SSTables (CASSANDRA-18781) * Clean up obsolete functions and simplify cql_version handling in cqlsh (CASSANDRA-18787) Merged from 5.0: + * Clone EndpointState before sending GossipShutdown message (CASSANDRA-19115) * SAI indexes are marked queryable during truncation (CASSANDRA-19032) * Enable Direct-IO feature for CommitLog files using Java native API's. (CASSANDRA-18464) * SAI fixes for composite partitions, and static and non-static rows intersections (CASSANDRA-19034) diff --git a/src/java/org/apache/cassandra/gms/Gossiper.java b/src/java/org/apache/cassandra/gms/Gossiper.java index 5ffa2d7bdb..7bdc9c2fe7 100644 --- a/src/java/org/apache/cassandra/gms/Gossiper.java +++ b/src/java/org/apache/cassandra/gms/Gossiper.java @@ -1800,7 +1800,9 @@ public class Gossiper implements IFailureDetectionEventListener, GossiperMBean, addLocalApplicationState(ApplicationState.STATUS_WITH_PORT, StorageService.instance.valueFactory.shutdown(true)); addLocalApplicationState(ApplicationState.STATUS, StorageService.instance.valueFactory.shutdown(true)); - Message message = Message.out(Verb.GOSSIP_SHUTDOWN, new GossipShutdown(mystate)); + // clone endpointstate to avoid it changing between serializedSize and serialize calls + EndpointState clone = new EndpointState(mystate); + Message message = Message.out(Verb.GOSSIP_SHUTDOWN, new GossipShutdown(clone)); for (InetAddressAndPort ep : liveEndpoints) MessagingService.instance().send(message, ep); Uninterruptibles.sleepUninterruptibly(SHUTDOWN_ANNOUNCE_DELAY_IN_MS.getInt(), TimeUnit.MILLISECONDS);