You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cassandra.apache.org by ca...@apache.org on 2016/07/26 14:00:48 UTC

[1/6] cassandra git commit: Disable RR and speculative retry with EACH_QUORUM reads

Repository: cassandra
Updated Branches:
  refs/heads/cassandra-3.0 0bb133e39 -> 6105da3f5
  refs/heads/cassandra-3.9 79fbdbe6c -> 67909ea84
  refs/heads/trunk d8ca69c01 -> accf7a472


Disable RR and speculative retry with EACH_QUORUM reads

Patch by Carl Yeksigian; reviewed by Aleksey Yeschenko for CASSANDRA-11980


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

Branch: refs/heads/cassandra-3.0
Commit: 6105da3f5875bee3d8d7ca9db21348ad20cdeaba
Parents: 0bb133e
Author: Carl Yeksigian <ca...@apache.org>
Authored: Tue Jul 26 09:58:06 2016 -0400
Committer: Carl Yeksigian <ca...@apache.org>
Committed: Tue Jul 26 09:58:06 2016 -0400

----------------------------------------------------------------------
 CHANGES.txt                                               |  1 +
 .../apache/cassandra/service/AbstractReadExecutor.java    | 10 ++++++++--
 2 files changed, 9 insertions(+), 2 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/cassandra/blob/6105da3f/CHANGES.txt
----------------------------------------------------------------------
diff --git a/CHANGES.txt b/CHANGES.txt
index 342382e..3c485dd 100644
--- a/CHANGES.txt
+++ b/CHANGES.txt
@@ -1,4 +1,5 @@
 3.0.9
+ * Disable RR and speculative retry with EACH_QUORUM reads (CASSANDRA-11980)
  * Add option to override compaction space check (CASSANDRA-12180)
  * Faster startup by only scanning each directory for temporary files once (CASSANDRA-12114)
  * Respond with v1/v2 protocol header when responding to driver that attempts

http://git-wip-us.apache.org/repos/asf/cassandra/blob/6105da3f/src/java/org/apache/cassandra/service/AbstractReadExecutor.java
----------------------------------------------------------------------
diff --git a/src/java/org/apache/cassandra/service/AbstractReadExecutor.java b/src/java/org/apache/cassandra/service/AbstractReadExecutor.java
index 05fa437..cae1f1a 100644
--- a/src/java/org/apache/cassandra/service/AbstractReadExecutor.java
+++ b/src/java/org/apache/cassandra/service/AbstractReadExecutor.java
@@ -152,7 +152,10 @@ public abstract class AbstractReadExecutor
     {
         Keyspace keyspace = Keyspace.open(command.metadata().ksName);
         List<InetAddress> allReplicas = StorageProxy.getLiveSortedEndpoints(keyspace, command.partitionKey());
-        ReadRepairDecision repairDecision = command.metadata().newReadRepairDecision();
+        // 11980: Excluding EACH_QUORUM reads from potential RR, so that we do not miscount DC responses
+        ReadRepairDecision repairDecision = consistencyLevel == ConsistencyLevel.EACH_QUORUM
+                                            ? ReadRepairDecision.NONE
+                                            : command.metadata().newReadRepairDecision();
         List<InetAddress> targetReplicas = consistencyLevel.filterForQuery(keyspace, allReplicas, repairDecision);
 
         // Throw UAE early if we don't have enough replicas.
@@ -168,7 +171,10 @@ public abstract class AbstractReadExecutor
         SpeculativeRetryParam retry = cfs.metadata.params.speculativeRetry;
 
         // Speculative retry is disabled *OR* there are simply no extra replicas to speculate.
-        if (retry.equals(SpeculativeRetryParam.NONE) || consistencyLevel.blockFor(keyspace) == allReplicas.size())
+        // 11980: Disable speculative retry if using EACH_QUORUM in order to prevent miscounting DC responses
+        if (retry.equals(SpeculativeRetryParam.NONE)
+            || consistencyLevel == ConsistencyLevel.EACH_QUORUM
+            || consistencyLevel.blockFor(keyspace) == allReplicas.size())
             return new NeverSpeculatingReadExecutor(keyspace, command, consistencyLevel, targetReplicas);
 
         if (targetReplicas.size() == allReplicas.size())


[5/6] cassandra git commit: Merge branch 'cassandra-3.0' into cassandra-3.9

Posted by ca...@apache.org.
Merge branch 'cassandra-3.0' into cassandra-3.9


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

Branch: refs/heads/cassandra-3.9
Commit: 67909ea84caf296a24a183d3fb86f9131ccef3d0
Parents: 79fbdbe 6105da3
Author: Carl Yeksigian <ca...@apache.org>
Authored: Tue Jul 26 09:59:15 2016 -0400
Committer: Carl Yeksigian <ca...@apache.org>
Committed: Tue Jul 26 09:59:15 2016 -0400

----------------------------------------------------------------------
 CHANGES.txt                                               |  1 +
 .../apache/cassandra/service/AbstractReadExecutor.java    | 10 ++++++++--
 2 files changed, 9 insertions(+), 2 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/cassandra/blob/67909ea8/CHANGES.txt
----------------------------------------------------------------------
diff --cc CHANGES.txt
index 2f7d2d3,3c485dd..50f7a6d
--- a/CHANGES.txt
+++ b/CHANGES.txt
@@@ -1,7 -1,5 +1,8 @@@
 -3.0.9
 +3.9
 + * cqlsh: Fix handling of $$-escaped strings (CASSANDRA-12189)
 + * Fix SSL JMX requiring truststore containing server cert (CASSANDRA-12109)
 +Merged from 3.0:
+  * Disable RR and speculative retry with EACH_QUORUM reads (CASSANDRA-11980)
   * Add option to override compaction space check (CASSANDRA-12180)
   * Faster startup by only scanning each directory for temporary files once (CASSANDRA-12114)
   * Respond with v1/v2 protocol header when responding to driver that attempts


[4/6] cassandra git commit: Merge branch 'cassandra-3.0' into cassandra-3.9

Posted by ca...@apache.org.
Merge branch 'cassandra-3.0' into cassandra-3.9


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

Branch: refs/heads/trunk
Commit: 67909ea84caf296a24a183d3fb86f9131ccef3d0
Parents: 79fbdbe 6105da3
Author: Carl Yeksigian <ca...@apache.org>
Authored: Tue Jul 26 09:59:15 2016 -0400
Committer: Carl Yeksigian <ca...@apache.org>
Committed: Tue Jul 26 09:59:15 2016 -0400

----------------------------------------------------------------------
 CHANGES.txt                                               |  1 +
 .../apache/cassandra/service/AbstractReadExecutor.java    | 10 ++++++++--
 2 files changed, 9 insertions(+), 2 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/cassandra/blob/67909ea8/CHANGES.txt
----------------------------------------------------------------------
diff --cc CHANGES.txt
index 2f7d2d3,3c485dd..50f7a6d
--- a/CHANGES.txt
+++ b/CHANGES.txt
@@@ -1,7 -1,5 +1,8 @@@
 -3.0.9
 +3.9
 + * cqlsh: Fix handling of $$-escaped strings (CASSANDRA-12189)
 + * Fix SSL JMX requiring truststore containing server cert (CASSANDRA-12109)
 +Merged from 3.0:
+  * Disable RR and speculative retry with EACH_QUORUM reads (CASSANDRA-11980)
   * Add option to override compaction space check (CASSANDRA-12180)
   * Faster startup by only scanning each directory for temporary files once (CASSANDRA-12114)
   * Respond with v1/v2 protocol header when responding to driver that attempts


[6/6] cassandra git commit: Merge branch 'cassandra-3.9' into trunk

Posted by ca...@apache.org.
Merge branch 'cassandra-3.9' into trunk


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

Branch: refs/heads/trunk
Commit: accf7a4724e244d6f1ba921cb11d2554dbb54a76
Parents: d8ca69c 67909ea
Author: Carl Yeksigian <ca...@apache.org>
Authored: Tue Jul 26 09:59:43 2016 -0400
Committer: Carl Yeksigian <ca...@apache.org>
Committed: Tue Jul 26 10:00:04 2016 -0400

----------------------------------------------------------------------
 CHANGES.txt                                               |  2 +-
 .../apache/cassandra/service/AbstractReadExecutor.java    | 10 ++++++++--
 2 files changed, 9 insertions(+), 3 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/cassandra/blob/accf7a47/CHANGES.txt
----------------------------------------------------------------------
diff --cc CHANGES.txt
index ed165e2,50f7a6d..c586d10
--- a/CHANGES.txt
+++ b/CHANGES.txt
@@@ -1,21 -1,3 +1,20 @@@
 +3.10
 + * Option to leave omitted columns in INSERT JSON unset (CASSANDRA-11424)
 + * Support json/yaml output in nodetool tpstats (CASSANDRA-12035)
 + * Expose metrics for successful/failed authentication attempts (CASSANDRA-10635)
 + * Prepend snapshot name with "truncated" or "dropped" when a snapshot
 +   is taken before truncating or dropping a table (CASSANDRA-12178)
 + * Optimize RestrictionSet (CASSANDRA-12153)
 + * cqlsh does not automatically downgrade CQL version (CASSANDRA-12150)
 + * Omit (de)serialization of state variable in UDAs (CASSANDRA-9613)
 + * Create a system table to expose prepared statements (CASSANDRA-8831)
 + * Reuse DataOutputBuffer from ColumnIndex (CASSANDRA-11970)
 + * Remove DatabaseDescriptor dependency from SegmentedFile (CASSANDRA-11580)
 + * Add supplied username to authentication error messages (CASSANDRA-12076)
 + * Remove pre-startup check for open JMX port (CASSANDRA-12074)
 + * Remove compaction Severity from DynamicEndpointSnitch (CASSANDRA-11738)
 +
 +
- 
  3.9
   * cqlsh: Fix handling of $$-escaped strings (CASSANDRA-12189)
   * Fix SSL JMX requiring truststore containing server cert (CASSANDRA-12109)


[2/6] cassandra git commit: Disable RR and speculative retry with EACH_QUORUM reads

Posted by ca...@apache.org.
Disable RR and speculative retry with EACH_QUORUM reads

Patch by Carl Yeksigian; reviewed by Aleksey Yeschenko for CASSANDRA-11980


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

Branch: refs/heads/cassandra-3.9
Commit: 6105da3f5875bee3d8d7ca9db21348ad20cdeaba
Parents: 0bb133e
Author: Carl Yeksigian <ca...@apache.org>
Authored: Tue Jul 26 09:58:06 2016 -0400
Committer: Carl Yeksigian <ca...@apache.org>
Committed: Tue Jul 26 09:58:06 2016 -0400

----------------------------------------------------------------------
 CHANGES.txt                                               |  1 +
 .../apache/cassandra/service/AbstractReadExecutor.java    | 10 ++++++++--
 2 files changed, 9 insertions(+), 2 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/cassandra/blob/6105da3f/CHANGES.txt
----------------------------------------------------------------------
diff --git a/CHANGES.txt b/CHANGES.txt
index 342382e..3c485dd 100644
--- a/CHANGES.txt
+++ b/CHANGES.txt
@@ -1,4 +1,5 @@
 3.0.9
+ * Disable RR and speculative retry with EACH_QUORUM reads (CASSANDRA-11980)
  * Add option to override compaction space check (CASSANDRA-12180)
  * Faster startup by only scanning each directory for temporary files once (CASSANDRA-12114)
  * Respond with v1/v2 protocol header when responding to driver that attempts

http://git-wip-us.apache.org/repos/asf/cassandra/blob/6105da3f/src/java/org/apache/cassandra/service/AbstractReadExecutor.java
----------------------------------------------------------------------
diff --git a/src/java/org/apache/cassandra/service/AbstractReadExecutor.java b/src/java/org/apache/cassandra/service/AbstractReadExecutor.java
index 05fa437..cae1f1a 100644
--- a/src/java/org/apache/cassandra/service/AbstractReadExecutor.java
+++ b/src/java/org/apache/cassandra/service/AbstractReadExecutor.java
@@ -152,7 +152,10 @@ public abstract class AbstractReadExecutor
     {
         Keyspace keyspace = Keyspace.open(command.metadata().ksName);
         List<InetAddress> allReplicas = StorageProxy.getLiveSortedEndpoints(keyspace, command.partitionKey());
-        ReadRepairDecision repairDecision = command.metadata().newReadRepairDecision();
+        // 11980: Excluding EACH_QUORUM reads from potential RR, so that we do not miscount DC responses
+        ReadRepairDecision repairDecision = consistencyLevel == ConsistencyLevel.EACH_QUORUM
+                                            ? ReadRepairDecision.NONE
+                                            : command.metadata().newReadRepairDecision();
         List<InetAddress> targetReplicas = consistencyLevel.filterForQuery(keyspace, allReplicas, repairDecision);
 
         // Throw UAE early if we don't have enough replicas.
@@ -168,7 +171,10 @@ public abstract class AbstractReadExecutor
         SpeculativeRetryParam retry = cfs.metadata.params.speculativeRetry;
 
         // Speculative retry is disabled *OR* there are simply no extra replicas to speculate.
-        if (retry.equals(SpeculativeRetryParam.NONE) || consistencyLevel.blockFor(keyspace) == allReplicas.size())
+        // 11980: Disable speculative retry if using EACH_QUORUM in order to prevent miscounting DC responses
+        if (retry.equals(SpeculativeRetryParam.NONE)
+            || consistencyLevel == ConsistencyLevel.EACH_QUORUM
+            || consistencyLevel.blockFor(keyspace) == allReplicas.size())
             return new NeverSpeculatingReadExecutor(keyspace, command, consistencyLevel, targetReplicas);
 
         if (targetReplicas.size() == allReplicas.size())


[3/6] cassandra git commit: Disable RR and speculative retry with EACH_QUORUM reads

Posted by ca...@apache.org.
Disable RR and speculative retry with EACH_QUORUM reads

Patch by Carl Yeksigian; reviewed by Aleksey Yeschenko for CASSANDRA-11980


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

Branch: refs/heads/trunk
Commit: 6105da3f5875bee3d8d7ca9db21348ad20cdeaba
Parents: 0bb133e
Author: Carl Yeksigian <ca...@apache.org>
Authored: Tue Jul 26 09:58:06 2016 -0400
Committer: Carl Yeksigian <ca...@apache.org>
Committed: Tue Jul 26 09:58:06 2016 -0400

----------------------------------------------------------------------
 CHANGES.txt                                               |  1 +
 .../apache/cassandra/service/AbstractReadExecutor.java    | 10 ++++++++--
 2 files changed, 9 insertions(+), 2 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/cassandra/blob/6105da3f/CHANGES.txt
----------------------------------------------------------------------
diff --git a/CHANGES.txt b/CHANGES.txt
index 342382e..3c485dd 100644
--- a/CHANGES.txt
+++ b/CHANGES.txt
@@ -1,4 +1,5 @@
 3.0.9
+ * Disable RR and speculative retry with EACH_QUORUM reads (CASSANDRA-11980)
  * Add option to override compaction space check (CASSANDRA-12180)
  * Faster startup by only scanning each directory for temporary files once (CASSANDRA-12114)
  * Respond with v1/v2 protocol header when responding to driver that attempts

http://git-wip-us.apache.org/repos/asf/cassandra/blob/6105da3f/src/java/org/apache/cassandra/service/AbstractReadExecutor.java
----------------------------------------------------------------------
diff --git a/src/java/org/apache/cassandra/service/AbstractReadExecutor.java b/src/java/org/apache/cassandra/service/AbstractReadExecutor.java
index 05fa437..cae1f1a 100644
--- a/src/java/org/apache/cassandra/service/AbstractReadExecutor.java
+++ b/src/java/org/apache/cassandra/service/AbstractReadExecutor.java
@@ -152,7 +152,10 @@ public abstract class AbstractReadExecutor
     {
         Keyspace keyspace = Keyspace.open(command.metadata().ksName);
         List<InetAddress> allReplicas = StorageProxy.getLiveSortedEndpoints(keyspace, command.partitionKey());
-        ReadRepairDecision repairDecision = command.metadata().newReadRepairDecision();
+        // 11980: Excluding EACH_QUORUM reads from potential RR, so that we do not miscount DC responses
+        ReadRepairDecision repairDecision = consistencyLevel == ConsistencyLevel.EACH_QUORUM
+                                            ? ReadRepairDecision.NONE
+                                            : command.metadata().newReadRepairDecision();
         List<InetAddress> targetReplicas = consistencyLevel.filterForQuery(keyspace, allReplicas, repairDecision);
 
         // Throw UAE early if we don't have enough replicas.
@@ -168,7 +171,10 @@ public abstract class AbstractReadExecutor
         SpeculativeRetryParam retry = cfs.metadata.params.speculativeRetry;
 
         // Speculative retry is disabled *OR* there are simply no extra replicas to speculate.
-        if (retry.equals(SpeculativeRetryParam.NONE) || consistencyLevel.blockFor(keyspace) == allReplicas.size())
+        // 11980: Disable speculative retry if using EACH_QUORUM in order to prevent miscounting DC responses
+        if (retry.equals(SpeculativeRetryParam.NONE)
+            || consistencyLevel == ConsistencyLevel.EACH_QUORUM
+            || consistencyLevel.blockFor(keyspace) == allReplicas.size())
             return new NeverSpeculatingReadExecutor(keyspace, command, consistencyLevel, targetReplicas);
 
         if (targetReplicas.size() == allReplicas.size())