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

Reply via email to