This is an automated email from the ASF dual-hosted git repository. adelapena pushed a commit to branch cassandra-3.11 in repository https://gitbox.apache.org/repos/asf/cassandra.git
commit c76a939c3eb9aa68abd0b892ab09bcbf09157e10 Merge: fa532a6 7f54fe0 Author: Andrés de la Peña <a.penya.gar...@gmail.com> AuthorDate: Tue Oct 26 18:18:01 2021 +0100 Merge branch 'cassandra-3.0' into cassandra-3.11 CHANGES.txt | 1 + .../org/apache/cassandra/db/MutationVerbHandler.java | 3 ++- .../org/apache/cassandra/net/MessageDeliveryTask.java | 19 ++++++++++++++++--- .../service/AbstractWriteResponseHandler.java | 3 +++ .../org/apache/cassandra/service/StorageProxy.java | 2 +- 5 files changed, 23 insertions(+), 5 deletions(-) diff --cc CHANGES.txt index 8460705,7dd58ff..0f8b5de --- a/CHANGES.txt +++ b/CHANGES.txt @@@ -1,16 -1,5 +1,17 @@@ -3.0.26: +3.11.12 + * Upgrade snakeyaml to 1.26 in 3.11 (CASSANDRA=17028) + * Add key validation to ssstablescrub (CASSANDRA-16969) + * Update Jackson from 2.9.10 to 2.12.5 (CASSANDRA-16851) + * Include SASI components to snapshots (CASSANDRA-15134) + * Make assassinate more resilient to missing tokens (CASSANDRA-16847) + * Exclude Jackson 1.x transitive dependency of hadoop* provided dependencies (CASSANDRA-16854) + * Validate SASI tokenizer options before adding index to schema (CASSANDRA-15135) + * Fixup scrub output when no data post-scrub and clear up old use of row, which really means partition (CASSANDRA-16835) + * Fix ant-junit dependency issue (CASSANDRA-16827) + * Reduce thread contention in CommitLogSegment and HintsBuffer (CASSANDRA-16072) + * Avoid sending CDC column if not enabled (CASSANDRA-16770) +Merged from 3.0: + * Fix failure handling in inter-node communication (CASSANDRA-16334) * Log more information when a node runs out of commitlog space (CASSANDRA-11323) * Don't take snapshots when truncating system tables (CASSANDRA-16839) * Make -Dtest.methods consistently optional in all Ant test targets (CASSANDRA-17014) diff --cc src/java/org/apache/cassandra/net/MessageDeliveryTask.java index c91e9da,26e780f..3de84d8 --- a/src/java/org/apache/cassandra/net/MessageDeliveryTask.java +++ b/src/java/org/apache/cassandra/net/MessageDeliveryTask.java @@@ -23,20 -25,21 +25,21 @@@ import java.util.EnumSet import org.slf4j.Logger; import org.slf4j.LoggerFactory; + import org.apache.cassandra.db.Mutation; import org.apache.cassandra.db.filter.TombstoneOverwhelmingException; +import org.apache.cassandra.exceptions.RequestFailureReason; import org.apache.cassandra.gms.Gossiper; import org.apache.cassandra.index.IndexNotAvailableException; +import org.apache.cassandra.io.util.DataOutputBuffer; public class MessageDeliveryTask implements Runnable { private static final Logger logger = LoggerFactory.getLogger(MessageDeliveryTask.class); - private final MessageIn message; + private final MessageIn<?> message; private final int id; - private final long constructionTime; - private final boolean isCrossNodeTimestamp; - public MessageDeliveryTask(MessageIn message, int id) - public MessageDeliveryTask(MessageIn<?> message, int id, long timestamp, boolean isCrossNodeTimestamp) ++ public MessageDeliveryTask(MessageIn<?> message, int id) { assert message != null; this.message = message; @@@ -89,23 -93,20 +92,33 @@@ { if (message.doCallbackOnFailure()) { - MessageOut<?> response = new MessageOut<>(MessagingService.Verb.INTERNAL_RESPONSE) + MessageOut response = new MessageOut(MessagingService.Verb.INTERNAL_RESPONSE) .withParameter(MessagingService.FAILURE_RESPONSE_PARAM, MessagingService.ONE_BYTE); + if (t instanceof TombstoneOverwhelmingException) + { + try (DataOutputBuffer out = new DataOutputBuffer()) + { + out.writeShort(RequestFailureReason.READ_TOO_MANY_TOMBSTONES.code); + response = response.withParameter(MessagingService.FAILURE_REASON_PARAM, out.getData()); + } + catch (IOException ex) + { + throw new RuntimeException(ex); + } + } + - MessagingService.instance().sendReply(response, id, message.from); + InetAddress from; + byte[] fromBytes = message.parameters.get(Mutation.FORWARD_FROM); + try + { + from = fromBytes != null ? InetAddress.getByAddress(fromBytes) : message.from; + } + catch (UnknownHostException e) + { + throw new RuntimeException(e); + } + MessagingService.instance().sendReply(response, id, from); } } diff --cc src/java/org/apache/cassandra/service/StorageProxy.java index dc1db09,89f93f6..763b1d7 --- a/src/java/org/apache/cassandra/service/StorageProxy.java +++ b/src/java/org/apache/cassandra/service/StorageProxy.java @@@ -1522,8 -1445,8 +1522,8 @@@ public class StorageProxy implements St catch (Exception ex) { if (!(ex instanceof WriteTimeoutException)) - logger.error("Failed to apply mutation locally : {}", ex); + logger.error("Failed to apply mutation locally : ", ex); - handler.onFailure(FBUtilities.getBroadcastAddress()); + handler.onFailure(FBUtilities.getBroadcastAddress(), RequestFailureReason.UNKNOWN); } } --------------------------------------------------------------------- To unsubscribe, e-mail: commits-unsubscr...@cassandra.apache.org For additional commands, e-mail: commits-h...@cassandra.apache.org