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