Fix replace_address after CASSANDRA-7356 broke it
Patch by Tyler Hobbs and Marcus Eriksson; reviewed by Brandon Williams for CASSANDRA-7356
diff --git a/src/java/org/apache/cassandra/config/DatabaseDescriptor.java b/src/java/org/apache/cassandra/config/DatabaseDescriptor.java
index 3c58b57..1e534f9 100644
--- a/src/java/org/apache/cassandra/config/DatabaseDescriptor.java
+++ b/src/java/org/apache/cassandra/config/DatabaseDescriptor.java
@@ -777,8 +777,6 @@
logger.info("Replace address on first boot requested; this node is already bootstrapped");
return false;
}
- if (getReplaceAddress() != null && SystemTable.bootstrapComplete())
- throw new RuntimeException("Cannot replace address with a node that is already bootstrapped");
return getReplaceAddress() != null;
}
diff --git a/src/java/org/apache/cassandra/service/StorageService.java b/src/java/org/apache/cassandra/service/StorageService.java
index 449a371..1f3d1e1 100644
--- a/src/java/org/apache/cassandra/service/StorageService.java
+++ b/src/java/org/apache/cassandra/service/StorageService.java
@@ -608,6 +608,8 @@
throw new RuntimeException("Replace method removed; use cassandra.replace_address instead");
if (DatabaseDescriptor.isReplacing())
{
+ if (SystemTable.bootstrapComplete())
+ throw new RuntimeException("Cannot replace address with a node that is already bootstrapped");
if (!DatabaseDescriptor.isAutoBootstrap())
throw new RuntimeException("Trying to replace_address with auto_bootstrap disabled will not work, check your configuration");
tokens = prepareReplacementInfo();