You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cassandra.apache.org by jb...@apache.org on 2013/09/01 21:34:55 UTC

[3/6] git commit: Allow local batchlog writes for CL.ANY patch by jbellis; reviewed by Aleksey for CASSANDRA-5967

Allow local batchlog writes for CL.ANY
patch by jbellis; reviewed by Aleksey for CASSANDRA-5967


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

Branch: refs/heads/trunk
Commit: 3380fa7baf76998b7c2fdbcb85b23fa3f0099f7c
Parents: b14273b
Author: Jonathan Ellis <jb...@apache.org>
Authored: Sun Sep 1 14:34:11 2013 -0500
Committer: Jonathan Ellis <jb...@apache.org>
Committed: Sun Sep 1 14:34:11 2013 -0500

----------------------------------------------------------------------
 CHANGES.txt                                             | 1 +
 src/java/org/apache/cassandra/service/StorageProxy.java | 9 +++++++--
 2 files changed, 8 insertions(+), 2 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/cassandra/blob/3380fa7b/CHANGES.txt
----------------------------------------------------------------------
diff --git a/CHANGES.txt b/CHANGES.txt
index 1943217..89f66a8 100644
--- a/CHANGES.txt
+++ b/CHANGES.txt
@@ -1,4 +1,5 @@
 1.2.10
+ * Allow local batchlog writes for CL.ANY (CASSANDRA-5967)
  * Optimize name query performance in wide rows (CASSANDRA-5966)
  * Upgrade metrics-core to version 2.2.0 (CASSANDRA-5947)
  * Add snitch, schema version, cluster, partitioner to JMX (CASSANDRA-5881)

http://git-wip-us.apache.org/repos/asf/cassandra/blob/3380fa7b/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 ec27891..94db26d 100644
--- a/src/java/org/apache/cassandra/service/StorageProxy.java
+++ b/src/java/org/apache/cassandra/service/StorageProxy.java
@@ -261,7 +261,7 @@ public class StorageProxy implements StorageProxyMBean
             }
 
             // write to the batchlog
-            Collection<InetAddress> batchlogEndpoints = getBatchlogEndpoints(localDataCenter);
+            Collection<InetAddress> batchlogEndpoints = getBatchlogEndpoints(localDataCenter, consistency_level);
             UUID batchUUID = UUID.randomUUID();
             syncWriteToBatchlog(mutations, batchlogEndpoints, batchUUID);
 
@@ -418,7 +418,7 @@ public class StorageProxy implements StorageProxyMBean
      * - choose min(2, number of qualifying candiates above)
      * - allow the local node to be the only replica only if it's a single-node cluster
      */
-    private static Collection<InetAddress> getBatchlogEndpoints(String localDataCenter) throws UnavailableException
+    private static Collection<InetAddress> getBatchlogEndpoints(String localDataCenter, ConsistencyLevel consistencyLevel) throws UnavailableException
     {
         // will include every known node in the DC, including localhost.
         TokenMetadata.Topology topology = StorageService.instance.getTokenMetadata().cloneOnlyTokenMap().getTopology();
@@ -440,7 +440,12 @@ public class StorageProxy implements StorageProxyMBean
         }
 
         if (candidates.isEmpty())
+        {
+            if (consistencyLevel == ConsistencyLevel.ANY)
+                return Collections.singleton(FBUtilities.getBroadcastAddress());
+
             throw new UnavailableException(ConsistencyLevel.ONE, 1, 0);
+        }
 
         if (candidates.size() > 2)
         {