Merge branch 'cassandra-5.0' into cassandra-6.0

This commit is contained in:
Stefan Miklosovic 2026-06-08 11:11:55 +02:00
commit 57ecd4c101
No known key found for this signature in database
GPG Key ID: 32F35CB2F546D93E
2 changed files with 26 additions and 6 deletions

View File

@ -46,6 +46,7 @@ Merged from 4.1:
* Add Paxos v2 option and informatin in cassandra.yaml (CASSANDRA-21316) * Add Paxos v2 option and informatin in cassandra.yaml (CASSANDRA-21316)
* Harden data resurrection startup check with atomic heartbeat file write with fallback (CASSANDRA-21290) * Harden data resurrection startup check with atomic heartbeat file write with fallback (CASSANDRA-21290)
Merged from 4.0: Merged from 4.0:
* Remove inFlightEcho entry on ECHO_REQ failure (CASSANDRA-21428)
* Validate snapshot names (CASSANDRA-21389) * Validate snapshot names (CASSANDRA-21389)
* BTree.FastBuilder.reset() fails to clear savedBuffer and savedNextKey, causing ClassCastException and SSTable header corruption during schema disagreement (CASSANDRA-21216, CASSANDRA-21260) * BTree.FastBuilder.reset() fails to clear savedBuffer and savedNextKey, causing ClassCastException and SSTable header corruption during schema disagreement (CASSANDRA-21216, CASSANDRA-21260)
* Backport CASSANDRA-17810 fix and improve RTBoundValidator error messages (CASSANDRA-18282) * Backport CASSANDRA-17810 fix and improve RTBoundValidator error messages (CASSANDRA-18282)

View File

@ -69,6 +69,7 @@ import org.apache.cassandra.config.DatabaseDescriptor;
import org.apache.cassandra.db.SystemKeyspace; import org.apache.cassandra.db.SystemKeyspace;
import org.apache.cassandra.dht.IPartitioner; import org.apache.cassandra.dht.IPartitioner;
import org.apache.cassandra.dht.Token; import org.apache.cassandra.dht.Token;
import org.apache.cassandra.exceptions.RequestFailure;
import org.apache.cassandra.locator.InetAddressAndPort; import org.apache.cassandra.locator.InetAddressAndPort;
import org.apache.cassandra.net.Message; import org.apache.cassandra.net.Message;
import org.apache.cassandra.net.MessagingService; import org.apache.cassandra.net.MessagingService;
@ -659,6 +660,7 @@ public class Gossiper implements IFailureDetectionEventListener, GossiperMBean,
public void evictFromMembership(InetAddressAndPort endpoint) public void evictFromMembership(InetAddressAndPort endpoint)
{ {
checkProperThreadForStateMutation(); checkProperThreadForStateMutation();
inflightEcho.remove(endpoint);
unreachableEndpoints.remove(endpoint); unreachableEndpoints.remove(endpoint);
endpointStateMap.remove(endpoint); endpointStateMap.remove(endpoint);
expireTimeEndpointMap.remove(endpoint); expireTimeEndpointMap.remove(endpoint);
@ -1201,13 +1203,30 @@ public class Gossiper implements IFailureDetectionEventListener, GossiperMBean,
{ {
Message<NoPayload> echoMessage = Message.out(ECHO_REQ, noPayload); Message<NoPayload> echoMessage = Message.out(ECHO_REQ, noPayload);
logger.trace("Sending ECHO_REQ to {}", addr); logger.trace("Sending ECHO_REQ to {}", addr);
RequestCallback echoHandler = msg -> RequestCallback echoHandler = new RequestCallback()
{ {
runInGossipStageBlocking(() -> { @Override
EndpointState epState = inflightEcho.remove(addr); public void onResponse(Message msg)
if (epState != null) {
realMarkAlive(addr, epState); runInGossipStageBlocking(() -> {
}); EndpointState epState = inflightEcho.remove(addr);
if (epState != null)
realMarkAlive(addr, epState);
});
}
@Override
public boolean invokeOnFailure()
{
return true;
}
@Override
public void onFailure(InetAddressAndPort from, RequestFailure failure)
{
logger.trace("ECHO_REQ to {} failed ({})", addr, failure);
inflightEcho.remove(addr);
}
}; };
MessagingService.instance().sendWithCallback(echoMessage, addr, echoHandler); MessagingService.instance().sendWithCallback(echoMessage, addr, echoHandler);
} }