Fix deprecated repair JMX API

patch by yukim; reviewed by marcuse for CASSANDRA-9570


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

Branch: refs/heads/trunk
Commit: cab33a60957525854238c61f9360ba58d04d318b
Parents: 3ee27fb
Author: Yuki Morishita <yu...@apache.org>
Authored: Tue Jun 9 16:20:54 2015 -0500
Committer: Yuki Morishita <yu...@apache.org>
Committed: Thu Jun 11 09:52:58 2015 -0500

----------------------------------------------------------------------
 CHANGES.txt                                          |  1 +
 .../org/apache/cassandra/service/StorageService.java | 15 +++++++++++++++
 2 files changed, 16 insertions(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/cassandra/blob/cab33a60/CHANGES.txt
----------------------------------------------------------------------
diff --git a/CHANGES.txt b/CHANGES.txt
index 3163351..72da59f 100644
--- a/CHANGES.txt
+++ b/CHANGES.txt
@@ -1,6 +1,7 @@
 2.2
  * Add functions to convert timeuuid to date or time, deprecate dateOf and 
unixTimestampOf (CASSANDRA-9229)
  * Make sure we cancel non-compacting sstables from LifecycleTransaction 
(CASSANDRA-9566)
+ * Fix deprecated repair JMX API (CASSANDRA-9570)
 
 
 2.2.0-rc1

http://git-wip-us.apache.org/repos/asf/cassandra/blob/cab33a60/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 e059348..2dd56b5 100644
--- a/src/java/org/apache/cassandra/service/StorageService.java
+++ b/src/java/org/apache/cassandra/service/StorageService.java
@@ -2807,6 +2807,21 @@ public class StorageService extends 
NotificationBroadcasterSupport implements IE
         {
             options.getHosts().addAll(hosts);
         }
+        if (primaryRange)
+        {
+            // when repairing only primary range, neither dataCenters nor 
hosts can be set
+            if (options.getDataCenters().isEmpty() && 
options.getHosts().isEmpty())
+                options.getRanges().addAll(getPrimaryRanges(keyspace));
+                // except dataCenters only contain local DC (i.e. -local)
+            else if (options.getDataCenters().size() == 1 && 
options.getDataCenters().contains(DatabaseDescriptor.getLocalDataCenter()))
+                options.getRanges().addAll(getPrimaryRangesWithinDC(keyspace));
+            else
+                throw new IllegalArgumentException("You need to run primary 
range repair on all nodes in the cluster.");
+        }
+        else
+        {
+            options.getRanges().addAll(getLocalRanges(keyspace));
+        }
         if (columnFamilies != null)
         {
             for (String columnFamily : columnFamilies)

Reply via email to