Fix imbalanced disks when replacing node with same address with JBOD

Patch by Paulo Motta; Reviewed by Marcus Eriksson for CASSANDRA-14084


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

Branch: refs/heads/trunk
Commit: 50e6e721b2a81da7f11f60a2fa405fd46e5415d4
Parents: 817f3c2
Author: Paulo Motta <pauloricard...@gmail.com>
Authored: Fri Dec 1 03:39:14 2017 +1100
Committer: Paulo Motta <pa...@apache.org>
Committed: Tue Dec 12 07:17:49 2017 +1100

----------------------------------------------------------------------
 CHANGES.txt                                               | 1 +
 src/java/org/apache/cassandra/db/DiskBoundaryManager.java | 3 ++-
 src/java/org/apache/cassandra/service/StorageService.java | 3 ++-
 3 files changed, 5 insertions(+), 2 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/cassandra/blob/50e6e721/CHANGES.txt
----------------------------------------------------------------------
diff --git a/CHANGES.txt b/CHANGES.txt
index 5faede2..6e9a0bd 100644
--- a/CHANGES.txt
+++ b/CHANGES.txt
@@ -1,4 +1,5 @@
 3.11.2
+ * Fix imbalanced disks when replacing node with same address with JBOD 
(CASSANDRA-14084)
  * Reload compaction strategies when disk boundaries are invalidated 
(CASSANDRA-13948)
  * Remove OpenJDK log warning (CASSANDRA-13916)
  * Prevent compaction strategies from looping indefinitely (CASSANDRA-14079)

http://git-wip-us.apache.org/repos/asf/cassandra/blob/50e6e721/src/java/org/apache/cassandra/db/DiskBoundaryManager.java
----------------------------------------------------------------------
diff --git a/src/java/org/apache/cassandra/db/DiskBoundaryManager.java 
b/src/java/org/apache/cassandra/db/DiskBoundaryManager.java
index 14d3983..ad6a67e 100644
--- a/src/java/org/apache/cassandra/db/DiskBoundaryManager.java
+++ b/src/java/org/apache/cassandra/db/DiskBoundaryManager.java
@@ -75,7 +75,8 @@ public class DiskBoundaryManager
         {
             tmd = StorageService.instance.getTokenMetadata();
             ringVersion = tmd.getRingVersion();
-            if (StorageService.instance.isBootstrapMode())
+            if (StorageService.instance.isBootstrapMode()
+                && !StorageService.isReplacingSameAddress()) // When replacing 
same address, the node marks itself as UN locally
             {
                 localRanges = tmd.getPendingRanges(cfs.keyspace.getName(), 
FBUtilities.getBroadcastAddress());
             }

http://git-wip-us.apache.org/repos/asf/cassandra/blob/50e6e721/src/java/org/apache/cassandra/service/StorageService.java
----------------------------------------------------------------------
diff --git a/src/java/org/apache/cassandra/service/StorageService.java 
b/src/java/org/apache/cassandra/service/StorageService.java
index fafe8e8..15027b2 100644
--- a/src/java/org/apache/cassandra/service/StorageService.java
+++ b/src/java/org/apache/cassandra/service/StorageService.java
@@ -1026,7 +1026,8 @@ public class StorageService extends 
NotificationBroadcasterSupport implements IE
 
     public static boolean isReplacingSameAddress()
     {
-        return 
DatabaseDescriptor.getReplaceAddress().equals(FBUtilities.getBroadcastAddress());
+        InetAddress replaceAddress = DatabaseDescriptor.getReplaceAddress();
+        return replaceAddress != null && 
replaceAddress.equals(FBUtilities.getBroadcastAddress());
     }
 
     public void gossipSnitchInfo()


---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscr...@cassandra.apache.org
For additional commands, e-mail: commits-h...@cassandra.apache.org

Reply via email to