This is an automated email from the ASF dual-hosted git repository.
mck pushed a commit to branch cassandra-4.1
in repository https://gitbox.apache.org/repos/asf/cassandra.git
The following commit(s) were added to refs/heads/cassandra-4.1 by this push:
new bb2c16c677 EndpointState is mutable, so we must copy it before trying
to serialize
bb2c16c677 is described below
commit bb2c16c677b0f5ace6f6721069e8c21a584e33f9
Author: Benedict Elliott Smith <[email protected]>
AuthorDate: Sun Jan 15 12:20:12 2023 +0000
EndpointState is mutable, so we must copy it before trying to serialize
patch by Benedict Elliott Smith; reviewed by Mick Semb Wever for
CASSANDRA-18164
---
CHANGES.txt | 1 +
src/java/org/apache/cassandra/gms/Gossiper.java | 8 ++++++++
src/java/org/apache/cassandra/service/paxos/Paxos.java | 4 ++--
3 files changed, 11 insertions(+), 2 deletions(-)
diff --git a/CHANGES.txt b/CHANGES.txt
index 3c63353f72..1352d00b26 100644
--- a/CHANGES.txt
+++ b/CHANGES.txt
@@ -1,4 +1,5 @@
4.1.1
+ * Fix PAXOS2_COMMIT_AND_PREPARE_RSP serialisation AssertionError
(CASSANDRA-18164)
* Streaming progress virtual table lock contention can trigger
TCP_USER_TIMEOUT and fail streaming (CASSANDRA-18110)
* Fix perpetual load of denylist on read in cases where denylist can never be
loaded (CASSANDRA-18116)
Merged from 4.0:
diff --git a/src/java/org/apache/cassandra/gms/Gossiper.java
b/src/java/org/apache/cassandra/gms/Gossiper.java
index 4a46ca3040..d43cf115f8 100644
--- a/src/java/org/apache/cassandra/gms/Gossiper.java
+++ b/src/java/org/apache/cassandra/gms/Gossiper.java
@@ -1139,6 +1139,14 @@ public class Gossiper implements
IFailureDetectionEventListener, GossiperMBean
return endpointStateMap.get(ep);
}
+ public EndpointState copyEndpointStateForEndpoint(InetAddressAndPort ep)
+ {
+ EndpointState epState = endpointStateMap.get(ep);
+ if (epState == null)
+ return null;
+ return new EndpointState(epState);
+ }
+
public ImmutableSet<InetAddressAndPort> getEndpoints()
{
return ImmutableSet.copyOf(endpointStateMap.keySet());
diff --git a/src/java/org/apache/cassandra/service/paxos/Paxos.java
b/src/java/org/apache/cassandra/service/paxos/Paxos.java
index ee5b27e407..5bdb75c78f 100644
--- a/src/java/org/apache/cassandra/service/paxos/Paxos.java
+++ b/src/java/org/apache/cassandra/service/paxos/Paxos.java
@@ -1156,8 +1156,8 @@ public class Paxos
return emptyMap();
Map<InetAddressAndPort, EndpointState> endpoints =
Maps.newHashMapWithExpectedSize(remoteElectorate.size() +
localElectorate.size());
- remoteElectorate.forEach(host -> endpoints.put(host,
Gossiper.instance.getEndpointStateForEndpoint(host)));
- localElectorate.forEach(host -> endpoints.putIfAbsent(host,
Gossiper.instance.getEndpointStateForEndpoint(host)));
+ remoteElectorate.forEach(host -> endpoints.put(host,
Gossiper.instance.copyEndpointStateForEndpoint(host)));
+ localElectorate.forEach(host -> endpoints.putIfAbsent(host,
Gossiper.instance.copyEndpointStateForEndpoint(host)));
return endpoints;
}
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]