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 2015/08/09 22:03:56 UTC

[1/3] cassandra git commit: Write hints for paxos commits

Repository: cassandra
Updated Branches:
  refs/heads/cassandra-3.0 8984ca79f -> f568a5d8a


Write hints for paxos commits

patch by Sankalp Kohli and Aleksey Yeschenko for CASSANDRA-7342


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

Branch: refs/heads/cassandra-3.0
Commit: 07a7e80c321b6667cc44a236f999c7837fe48e20
Parents: 3b7934f
Author: sankalp kohli <ko...@gmail.com>
Authored: Thu Aug 6 18:56:37 2015 +0300
Committer: Aleksey Yeschenko <al...@apache.org>
Committed: Sun Aug 9 22:52:03 2015 +0300

----------------------------------------------------------------------
 CHANGES.txt                                             |  1 +
 src/java/org/apache/cassandra/net/MessagingService.java | 11 +++++------
 .../org/apache/cassandra/net/WriteCallbackInfo.java     | 11 ++++++++++-
 src/java/org/apache/cassandra/service/StorageProxy.java | 12 ++++++++----
 4 files changed, 24 insertions(+), 11 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/cassandra/blob/07a7e80c/CHANGES.txt
----------------------------------------------------------------------
diff --git a/CHANGES.txt b/CHANGES.txt
index 3b0241c..7151883 100644
--- a/CHANGES.txt
+++ b/CHANGES.txt
@@ -1,4 +1,5 @@
 2.1.9
+ * Write hints for paxos commits (CASSANDRA-7342)
  * (cqlsh) Fix timestamps before 1970 on Windows, always
    use UTC for timestamp display (CASSANDRA-10000)
  * (cqlsh) Avoid overwriting new config file with old config

http://git-wip-us.apache.org/repos/asf/cassandra/blob/07a7e80c/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 1ad0e7c..d7825d4 100644
--- a/src/java/org/apache/cassandra/net/MessagingService.java
+++ b/src/java/org/apache/cassandra/net/MessagingService.java
@@ -379,8 +379,7 @@ public final class MessagingService implements MessagingServiceMBean
 
                 if (expiredCallbackInfo.shouldHint())
                 {
-                    Mutation mutation = (Mutation) ((WriteCallbackInfo) expiredCallbackInfo).sentMessage.payload;
-
+                    Mutation mutation = ((WriteCallbackInfo) expiredCallbackInfo).mutation();
                     return StorageProxy.submitHint(mutation, expiredCallbackInfo.target, null);
                 }
 
@@ -594,13 +593,13 @@ public final class MessagingService implements MessagingServiceMBean
     }
 
     public int addCallback(IAsyncCallback cb,
-                           MessageOut<? extends IMutation> message,
+                           MessageOut<?> message,
                            InetAddress to,
                            long timeout,
                            ConsistencyLevel consistencyLevel,
                            boolean allowHints)
     {
-        assert message.verb == Verb.MUTATION || message.verb == Verb.COUNTER_MUTATION;
+        assert message.verb == Verb.MUTATION || message.verb == Verb.COUNTER_MUTATION || message.verb == Verb.PAXOS_COMMIT;
         int messageId = nextId();
 
         CallbackInfo previous = callbacks.put(messageId,
@@ -651,7 +650,7 @@ public final class MessagingService implements MessagingServiceMBean
     }
 
     /**
-     * Send a mutation message to a given endpoint. This method specifies a callback
+     * Send a mutation message or a Paxos Commit 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
      * needs to trigger a hint (uses StorageProxy for that).
@@ -662,7 +661,7 @@ public final class MessagingService implements MessagingServiceMBean
      *                suggest that a timeout occurred to the invoker of the send().
      * @return an reference to message id used to match with the result
      */
-    public int sendRR(MessageOut<? extends IMutation> message,
+    public int sendRR(MessageOut<?> message,
                       InetAddress to,
                       AbstractWriteResponseHandler handler,
                       boolean allowHints)

http://git-wip-us.apache.org/repos/asf/cassandra/blob/07a7e80c/src/java/org/apache/cassandra/net/WriteCallbackInfo.java
----------------------------------------------------------------------
diff --git a/src/java/org/apache/cassandra/net/WriteCallbackInfo.java b/src/java/org/apache/cassandra/net/WriteCallbackInfo.java
index 987ec15..0cf126f 100644
--- a/src/java/org/apache/cassandra/net/WriteCallbackInfo.java
+++ b/src/java/org/apache/cassandra/net/WriteCallbackInfo.java
@@ -21,12 +21,14 @@ package org.apache.cassandra.net;
 import java.net.InetAddress;
 
 import org.apache.cassandra.db.ConsistencyLevel;
+import org.apache.cassandra.db.Mutation;
 import org.apache.cassandra.io.IVersionedSerializer;
 import org.apache.cassandra.service.StorageProxy;
+import org.apache.cassandra.service.paxos.Commit;
 
 public class WriteCallbackInfo extends CallbackInfo
 {
-    public final MessageOut sentMessage;
+    private final MessageOut sentMessage;
     private final ConsistencyLevel consistencyLevel;
     private final boolean allowHints;
 
@@ -44,6 +46,13 @@ public class WriteCallbackInfo extends CallbackInfo
         this.allowHints = allowHints;
     }
 
+    Mutation mutation()
+    {
+        return sentMessage.verb == MessagingService.Verb.PAXOS_COMMIT
+             ? ((Commit) sentMessage.payload).makeMutation()
+             : (Mutation) sentMessage.payload;
+    }
+
     public boolean shouldHint()
     {
         return allowHints

http://git-wip-us.apache.org/repos/asf/cassandra/blob/07a7e80c/src/java/org/apache/cassandra/service/StorageProxy.java
----------------------------------------------------------------------
diff --git a/src/java/org/apache/cassandra/service/StorageProxy.java b/src/java/org/apache/cassandra/service/StorageProxy.java
index 0045006..1536427 100644
--- a/src/java/org/apache/cassandra/service/StorageProxy.java
+++ b/src/java/org/apache/cassandra/service/StorageProxy.java
@@ -258,7 +258,7 @@ public class StorageProxy implements StorageProxyMBean
                 Tracing.trace("CAS precondition is met; proposing client-requested updates for {}", ballot);
                 if (proposePaxos(proposal, liveEndpoints, requiredParticipants, true, consistencyForPaxos))
                 {
-                    commitPaxos(proposal, consistencyForCommit);
+                    commitPaxos(proposal, consistencyForCommit, true);
                     Tracing.trace("CAS successful");
                     return null;
                 }
@@ -394,7 +394,7 @@ public class StorageProxy implements StorageProxyMBean
                 {
                     try
                     {
-                        commitPaxos(refreshedInProgress, consistencyForCommit);
+                        commitPaxos(refreshedInProgress, consistencyForCommit, false);
                     }
                     catch (WriteTimeoutException e)
                     {
@@ -474,7 +474,7 @@ public class StorageProxy implements StorageProxyMBean
         return false;
     }
 
-    private static void commitPaxos(Commit proposal, ConsistencyLevel consistencyLevel) throws WriteTimeoutException
+    private static void commitPaxos(Commit proposal, ConsistencyLevel consistencyLevel, boolean shouldHint) throws WriteTimeoutException
     {
         boolean shouldBlock = consistencyLevel != ConsistencyLevel.ANY;
         Keyspace keyspace = Keyspace.open(proposal.update.metadata().ksName);
@@ -496,10 +496,14 @@ public class StorageProxy implements StorageProxyMBean
             if (FailureDetector.instance.isAlive(destination))
             {
                 if (shouldBlock)
-                    MessagingService.instance().sendRR(message, destination, responseHandler);
+                    MessagingService.instance().sendRR(message, destination, responseHandler, shouldHint);
                 else
                     MessagingService.instance().sendOneWay(message, destination);
             }
+            else if (shouldHint)
+            {
+                submitHint(proposal.makeMutation(), destination, null);
+            }
         }
 
         if (shouldBlock)


[2/3] cassandra git commit: Merge branch 'cassandra-2.1' into cassandra-2.2

Posted by al...@apache.org.
Merge branch 'cassandra-2.1' into cassandra-2.2


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

Branch: refs/heads/cassandra-3.0
Commit: 0b99d33eec5e703b6643aafc3a40a54f3fb088a0
Parents: a5297f1 07a7e80
Author: Aleksey Yeschenko <al...@apache.org>
Authored: Sun Aug 9 23:01:06 2015 +0300
Committer: Aleksey Yeschenko <al...@apache.org>
Committed: Sun Aug 9 23:01:06 2015 +0300

----------------------------------------------------------------------
 CHANGES.txt                                            |  1 +
 .../org/apache/cassandra/net/MessagingService.java     | 13 ++++++-------
 .../org/apache/cassandra/net/WriteCallbackInfo.java    | 11 ++++++++++-
 .../org/apache/cassandra/service/StorageProxy.java     | 12 ++++++++----
 4 files changed, 25 insertions(+), 12 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/cassandra/blob/0b99d33e/CHANGES.txt
----------------------------------------------------------------------
diff --cc CHANGES.txt
index 705e560,7151883..a913fe7
--- a/CHANGES.txt
+++ b/CHANGES.txt
@@@ -1,10 -1,5 +1,11 @@@
 -2.1.9
 +2.2.1
 + * Add checksum to saved cache files (CASSANDRA-9265)
 + * Log warning when using an aggregate without partition key (CASSANDRA-9737)
 + * Avoid grouping sstables for anticompaction with DTCS (CASSANDRA-9900)
 + * UDF / UDA execution time in trace (CASSANDRA-9723)
 + * Fix broken internode SSL (CASSANDRA-9884)
 +Merged from 2.1:
+  * Write hints for paxos commits (CASSANDRA-7342)
   * (cqlsh) Fix timestamps before 1970 on Windows, always
     use UTC for timestamp display (CASSANDRA-10000)
   * (cqlsh) Avoid overwriting new config file with old config

http://git-wip-us.apache.org/repos/asf/cassandra/blob/0b99d33e/src/java/org/apache/cassandra/net/MessagingService.java
----------------------------------------------------------------------
diff --cc src/java/org/apache/cassandra/net/MessagingService.java
index bb46bbf,d7825d4..f8fd6fd
--- a/src/java/org/apache/cassandra/net/MessagingService.java
+++ b/src/java/org/apache/cassandra/net/MessagingService.java
@@@ -680,9 -661,9 +679,9 @@@ public final class MessagingService imp
       *                suggest that a timeout occurred to the invoker of the send().
       * @return an reference to message id used to match with the result
       */
-     public int sendRR(MessageOut<? extends IMutation> message,
+     public int sendRR(MessageOut<?> message,
                        InetAddress to,
-                       AbstractWriteResponseHandler<? extends IMutation> handler,
 -                      AbstractWriteResponseHandler handler,
++                      AbstractWriteResponseHandler<?> handler,
                        boolean allowHints)
      {
          int id = addCallback(handler, message, to, message.getTimeout(), handler.consistencyLevel, allowHints);

http://git-wip-us.apache.org/repos/asf/cassandra/blob/0b99d33e/src/java/org/apache/cassandra/net/WriteCallbackInfo.java
----------------------------------------------------------------------

http://git-wip-us.apache.org/repos/asf/cassandra/blob/0b99d33e/src/java/org/apache/cassandra/service/StorageProxy.java
----------------------------------------------------------------------


[3/3] cassandra git commit: Merge branch 'cassandra-2.2' into cassandra-3.0

Posted by al...@apache.org.
Merge branch 'cassandra-2.2' into cassandra-3.0


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

Branch: refs/heads/cassandra-3.0
Commit: f568a5d8a8fc2d165801e792f1133ac111c4df27
Parents: 8984ca7 0b99d33
Author: Aleksey Yeschenko <al...@apache.org>
Authored: Sun Aug 9 23:04:01 2015 +0300
Committer: Aleksey Yeschenko <al...@apache.org>
Committed: Sun Aug 9 23:04:01 2015 +0300

----------------------------------------------------------------------
 CHANGES.txt                                         |  1 +
 .../org/apache/cassandra/net/MessagingService.java  | 16 ++++++++--------
 .../org/apache/cassandra/net/WriteCallbackInfo.java | 11 ++++++++++-
 .../org/apache/cassandra/service/StorageProxy.java  | 12 ++++++++----
 4 files changed, 27 insertions(+), 13 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/cassandra/blob/f568a5d8/CHANGES.txt
----------------------------------------------------------------------
diff --cc CHANGES.txt
index 0ba7b4e,a913fe7..7cb9f16
--- a/CHANGES.txt
+++ b/CHANGES.txt
@@@ -1,17 -1,11 +1,18 @@@
 -2.2.1
 +3.0.0-beta1
 + * Support mixed-version clusters with Cassandra 2.1 and 2.2 (CASSANDRA-9704)
 + * Fix multiple slices on RowSearchers (CASSANDRA-10002)
 + * Fix bug in merging of collections (CASSANDRA-10001)
 + * Optimize batchlog replay to avoid full scans (CASSANDRA-7237)
 + * Repair improvements when using vnodes (CASSANDRA-5220)
 + * Disable scripted UDFs by default (CASSANDRA-9889)
 + * Add transparent data encryption core classes (CASSANDRA-9945)
 + * Bytecode inspection for Java-UDFs (CASSANDRA-9890)
 + * Use byte to serialize MT hash length (CASSANDRA-9792)
 +Merged from 2.2:
   * Add checksum to saved cache files (CASSANDRA-9265)
   * Log warning when using an aggregate without partition key (CASSANDRA-9737)
 - * Avoid grouping sstables for anticompaction with DTCS (CASSANDRA-9900)
 - * UDF / UDA execution time in trace (CASSANDRA-9723)
 - * Fix broken internode SSL (CASSANDRA-9884)
  Merged from 2.1:
+  * Write hints for paxos commits (CASSANDRA-7342)
   * (cqlsh) Fix timestamps before 1970 on Windows, always
     use UTC for timestamp display (CASSANDRA-10000)
   * (cqlsh) Avoid overwriting new config file with old config

http://git-wip-us.apache.org/repos/asf/cassandra/blob/f568a5d8/src/java/org/apache/cassandra/net/MessagingService.java
----------------------------------------------------------------------
diff --cc src/java/org/apache/cassandra/net/MessagingService.java
index 25eb0d0,f8fd6fd..0505445
--- a/src/java/org/apache/cassandra/net/MessagingService.java
+++ b/src/java/org/apache/cassandra/net/MessagingService.java
@@@ -625,9 -617,7 +624,10 @@@ public final class MessagingService imp
                             ConsistencyLevel consistencyLevel,
                             boolean allowHints)
      {
 -        assert message.verb == Verb.MUTATION || message.verb == Verb.COUNTER_MUTATION || message.verb == Verb.PAXOS_COMMIT;
 +        assert message.verb == Verb.MUTATION
-                || message.verb == Verb.BATCHLOG_MUTATION
-                || message.verb == Verb.COUNTER_MUTATION;
++            || message.verb == Verb.BATCHLOG_MUTATION
++            || message.verb == Verb.COUNTER_MUTATION
++            || message.verb == Verb.PAXOS_COMMIT;
          int messageId = nextId();
  
          CallbackInfo previous = callbacks.put(messageId,

http://git-wip-us.apache.org/repos/asf/cassandra/blob/f568a5d8/src/java/org/apache/cassandra/service/StorageProxy.java
----------------------------------------------------------------------