You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cassandra.apache.org by al...@apache.org on 2014/04/22 18:11:40 UTC

git commit: Ensure that batchlog and hint timeouts do not produce hints

Repository: cassandra
Updated Branches:
  refs/heads/cassandra-1.2 0547d16d5 -> 2890cc5be


Ensure that batchlog and hint timeouts do not produce hints

patch by Aleksey Yeschenko; reviewed by Jonathan Ellis for
CASSANDRA-7058


Project: http://git-wip-us.apache.org/repos/asf/cassandra/repo
Commit: http://git-wip-us.apache.org/repos/asf/cassandra/commit/2890cc5b
Tree: http://git-wip-us.apache.org/repos/asf/cassandra/tree/2890cc5b
Diff: http://git-wip-us.apache.org/repos/asf/cassandra/diff/2890cc5b

Branch: refs/heads/cassandra-1.2
Commit: 2890cc5be986740cadf491bb5efbb49af2b11c57
Parents: 0547d16
Author: Aleksey Yeschenko <al...@apache.org>
Authored: Tue Apr 22 19:10:51 2014 +0300
Committer: Aleksey Yeschenko <al...@apache.org>
Committed: Tue Apr 22 19:10:51 2014 +0300

----------------------------------------------------------------------
 CHANGES.txt                                             |  1 +
 src/java/org/apache/cassandra/db/BatchlogManager.java   |  2 +-
 .../org/apache/cassandra/db/HintedHandOffManager.java   |  8 +++-----
 src/java/org/apache/cassandra/net/MessagingService.java | 12 +++++++++++-
 4 files changed, 16 insertions(+), 7 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/cassandra/blob/2890cc5b/CHANGES.txt
----------------------------------------------------------------------
diff --git a/CHANGES.txt b/CHANGES.txt
index dc48131..74ddcfd 100644
--- a/CHANGES.txt
+++ b/CHANGES.txt
@@ -9,6 +9,7 @@
  * Fix batchlog to account for CF truncation records (CASSANDRA-6999)
  * Fix CQLSH parsing of functions and BLOB literals (CASSANDRA-7018)
  * Require nodetool rebuild_index to specify index names (CASSANDRA-7038)
+ * Ensure that batchlog and hint timeouts do not produce hints (CASSANDRA-7058)
 
 
 1.2.16

http://git-wip-us.apache.org/repos/asf/cassandra/blob/2890cc5b/src/java/org/apache/cassandra/db/BatchlogManager.java
----------------------------------------------------------------------
diff --git a/src/java/org/apache/cassandra/db/BatchlogManager.java b/src/java/org/apache/cassandra/db/BatchlogManager.java
index ea32e9d..02af9d3 100644
--- a/src/java/org/apache/cassandra/db/BatchlogManager.java
+++ b/src/java/org/apache/cassandra/db/BatchlogManager.java
@@ -328,7 +328,7 @@ public class BatchlogManager implements BatchlogManagerMBean
                 }
             };
             WriteResponseHandler handler = new WriteResponseHandler(ep, WriteType.UNLOGGED_BATCH, callback);
-            MessagingService.instance().sendRR(mutation.createMessage(), ep, handler);
+            MessagingService.instance().sendUnhintableMutation(mutation, ep, handler);
             handlers.add(handler);
         }
 

http://git-wip-us.apache.org/repos/asf/cassandra/blob/2890cc5b/src/java/org/apache/cassandra/db/HintedHandOffManager.java
----------------------------------------------------------------------
diff --git a/src/java/org/apache/cassandra/db/HintedHandOffManager.java b/src/java/org/apache/cassandra/db/HintedHandOffManager.java
index 427bbf2..a7a3e06 100644
--- a/src/java/org/apache/cassandra/db/HintedHandOffManager.java
+++ b/src/java/org/apache/cassandra/db/HintedHandOffManager.java
@@ -55,7 +55,6 @@ import org.apache.cassandra.gms.Gossiper;
 import org.apache.cassandra.io.sstable.Descriptor;
 import org.apache.cassandra.io.sstable.SSTable;
 import org.apache.cassandra.metrics.HintedHandoffMetrics;
-import org.apache.cassandra.net.MessageOut;
 import org.apache.cassandra.net.MessagingService;
 import org.apache.cassandra.service.*;
 import org.apache.cassandra.thrift.*;
@@ -391,8 +390,7 @@ public class HintedHandOffManager implements HintedHandOffManagerMBean
                     continue;
                 }
 
-                MessageOut<RowMutation> message = rm.createMessage();
-                rateLimiter.acquire(message.serializedSize(MessagingService.current_version));
+                rateLimiter.acquire((int) RowMutation.serializer.serializedSize(rm, MessagingService.current_version));
                 Runnable callback = new Runnable()
                 {
                     public void run()
@@ -401,8 +399,8 @@ public class HintedHandOffManager implements HintedHandOffManagerMBean
                         deleteHint(hostIdBytes, hint.name(), hint.maxTimestamp());
                     }
                 };
-                WriteResponseHandler responseHandler = new WriteResponseHandler(endpoint, WriteType.UNLOGGED_BATCH, callback);
-                MessagingService.instance().sendRR(message, endpoint, responseHandler);
+                WriteResponseHandler responseHandler = new WriteResponseHandler(endpoint, WriteType.SIMPLE, callback);
+                MessagingService.instance().sendUnhintableMutation(rm, endpoint, responseHandler);
                 responseHandlers.add(responseHandler);
             }
 

http://git-wip-us.apache.org/repos/asf/cassandra/blob/2890cc5b/src/java/org/apache/cassandra/net/MessagingService.java
----------------------------------------------------------------------
diff --git a/src/java/org/apache/cassandra/net/MessagingService.java b/src/java/org/apache/cassandra/net/MessagingService.java
index 09fa272..3f90d7f 100644
--- a/src/java/org/apache/cassandra/net/MessagingService.java
+++ b/src/java/org/apache/cassandra/net/MessagingService.java
@@ -559,6 +559,17 @@ public final class MessagingService implements MessagingServiceMBean
     }
 
     /**
+     * A special version of sendRR that doesn't trigger a hint for the mutation on a timeout.
+     * Used by BatchlogManager and HintedHandOffManager.
+     */
+    public void sendUnhintableMutation(RowMutation mutation, InetAddress to, IMessageCallback cb)
+    {
+        String id = nextId();
+        callbacks.put(id, new CallbackInfo(to, cb, WriteResponse.serializer), DatabaseDescriptor.getWriteRpcTimeout());
+        sendOneWay(mutation.createMessage(), id, to);
+    }
+
+    /**
      * Send a message to a given endpoint. This method specifies a callback
      * which is invoked with the actual response.
      * Also holds the message (only mutation messages) to determine if it
@@ -568,7 +579,6 @@ public final class MessagingService implements MessagingServiceMBean
      * @param to      endpoint to which the message needs to be sent
      * @param cb      callback interface which is used to pass the responses or
      *                suggest that a timeout occurred to the invoker of the send().
-     *                suggest that a timeout occurred to the invoker of the send().
      * @param timeout the timeout used for expiration
      * @return an reference to message id used to match with the result
      */