You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cassandra.apache.org by ja...@apache.org on 2017/01/03 18:05:50 UTC

[05/15] cassandra git commit: Don't return early from DynamicEndpointSnitch when null scores are encountered

Don't return early from DynamicEndpointSnitch when null scores are encountered

Patch by Joel Knighton; reviewed by tjake for CASSANDRA-13074


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

Branch: refs/heads/cassandra-3.X
Commit: e4f732536af9d81dd012d7d498b884cd7c8c0b48
Parents: f4fd092
Author: Joel Knighton <jo...@datastax.com>
Authored: Wed Dec 21 15:15:40 2016 -0600
Committer: T Jake Luciani <ja...@apache.org>
Committed: Tue Jan 3 12:50:18 2017 -0500

----------------------------------------------------------------------
 CHANGES.txt                                                 | 1 +
 .../org/apache/cassandra/locator/DynamicEndpointSnitch.java | 4 +---
 .../apache/cassandra/locator/DynamicEndpointSnitchTest.java | 9 ++++++++-
 3 files changed, 10 insertions(+), 4 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/cassandra/blob/e4f73253/CHANGES.txt
----------------------------------------------------------------------
diff --git a/CHANGES.txt b/CHANGES.txt
index 8a7ae42..d31ffc8 100644
--- a/CHANGES.txt
+++ b/CHANGES.txt
@@ -1,4 +1,5 @@
 2.2.9
+ * Fix DynamicEndpointSnitch noop in multi-datacenter situations (CASSANDRA-13074)
  * cqlsh copy-from: encode column names to avoid primary key parsing errors (CASSANDRA-12909)
  * Temporarily fix bug that creates commit log when running offline tools (CASSANDRA-8616)
  * Reduce granuality of OpOrder.Group during index build (CASSANDRA-12796)

http://git-wip-us.apache.org/repos/asf/cassandra/blob/e4f73253/src/java/org/apache/cassandra/locator/DynamicEndpointSnitch.java
----------------------------------------------------------------------
diff --git a/src/java/org/apache/cassandra/locator/DynamicEndpointSnitch.java b/src/java/org/apache/cassandra/locator/DynamicEndpointSnitch.java
index 6280dc2..9c0c57e 100644
--- a/src/java/org/apache/cassandra/locator/DynamicEndpointSnitch.java
+++ b/src/java/org/apache/cassandra/locator/DynamicEndpointSnitch.java
@@ -185,7 +185,7 @@ public class DynamicEndpointSnitch extends AbstractEndpointSnitch implements ILa
         {
             Double score = scores.get(inet);
             if (score == null)
-                return;
+                continue;
             subsnitchOrderedScores.add(score);
         }
 
@@ -215,13 +215,11 @@ public class DynamicEndpointSnitch extends AbstractEndpointSnitch implements ILa
         if (scored1 == null)
         {
             scored1 = 0.0;
-            receiveTiming(a1, 0);
         }
 
         if (scored2 == null)
         {
             scored2 = 0.0;
-            receiveTiming(a2, 0);
         }
 
         if (scored1.equals(scored2))

http://git-wip-us.apache.org/repos/asf/cassandra/blob/e4f73253/test/unit/org/apache/cassandra/locator/DynamicEndpointSnitchTest.java
----------------------------------------------------------------------
diff --git a/test/unit/org/apache/cassandra/locator/DynamicEndpointSnitchTest.java b/test/unit/org/apache/cassandra/locator/DynamicEndpointSnitchTest.java
index 100cd25..d27edbf 100644
--- a/test/unit/org/apache/cassandra/locator/DynamicEndpointSnitchTest.java
+++ b/test/unit/org/apache/cassandra/locator/DynamicEndpointSnitchTest.java
@@ -33,7 +33,6 @@ import static org.junit.Assert.assertEquals;
 
 public class DynamicEndpointSnitchTest
 {
-
     private static void setScores(DynamicEndpointSnitch dsnitch,  int rounds, List<InetAddress> hosts, Integer... scores) throws InterruptedException
     {
         for (int round = 0; round < rounds; round++)
@@ -55,6 +54,7 @@ public class DynamicEndpointSnitchTest
         InetAddress host1 = InetAddress.getByName("127.0.0.2");
         InetAddress host2 = InetAddress.getByName("127.0.0.3");
         InetAddress host3 = InetAddress.getByName("127.0.0.4");
+        InetAddress host4 = InetAddress.getByName("127.0.0.5");
         List<InetAddress> hosts = Arrays.asList(host1, host2, host3);
 
         // first, make all hosts equal
@@ -88,5 +88,12 @@ public class DynamicEndpointSnitchTest
         setScores(dsnitch, 20, hosts, 10, 70, 20);
         order = Arrays.asList(host1, host3, host2);
         assertEquals(order, dsnitch.getSortedListByProximity(self, Arrays.asList(host1, host2, host3)));
+
+        order = Arrays.asList(host4, host1, host3, host2);
+        assertEquals(order, dsnitch.getSortedListByProximity(self, Arrays.asList(host1, host2, host3, host4)));
+
+        setScores(dsnitch, 20, hosts, 10, 10, 10);
+        order = Arrays.asList(host1, host2, host3, host4);
+        assertEquals(order, dsnitch.getSortedListByProximity(self, Arrays.asList(host1, host2, host3, host4)));
     }
 }