From 46ef9628fa4035c26d81c4a070ebd270e59e5520 Mon Sep 17 00:00:00 2001 From: Yuki Morishita Date: Fri, 5 Sep 2014 10:22:33 -0500 Subject: [PATCH] Make repair no-op when RF=1 patch by yukim; reviewed by krummas for CASSANDRA-7864 --- CHANGES.txt | 1 + src/java/org/apache/cassandra/service/StorageService.java | 6 +++--- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/CHANGES.txt b/CHANGES.txt index 7be8979b79..54fcc4ff49 100644 --- a/CHANGES.txt +++ b/CHANGES.txt @@ -8,6 +8,7 @@ (CASSANDRA-7722) * Always send Paxos commit to all replicas (CASSANDRA-7479) * Make disruptor_thrift_server invocation pool configurable (CASSANDRA-7594) + * Make repair no-op when RF=1 (CASSANDRA-7864) 2.0.10 diff --git a/src/java/org/apache/cassandra/service/StorageService.java b/src/java/org/apache/cassandra/service/StorageService.java index f16e187492..12d64201c1 100644 --- a/src/java/org/apache/cassandra/service/StorageService.java +++ b/src/java/org/apache/cassandra/service/StorageService.java @@ -2404,7 +2404,7 @@ public class StorageService extends NotificationBroadcasterSupport implements IE public int forceRepairAsync(final String keyspace, final boolean isSequential, final Collection dataCenters, final Collection hosts, final Collection> ranges, final String... columnFamilies) { - if (Keyspace.SYSTEM_KS.equals(keyspace) || ranges.isEmpty()) + if (ranges.isEmpty() || Keyspace.open(keyspace).getReplicationStrategy().getReplicationFactor() < 2) return 0; final int cmd = nextRepairCommand.incrementAndGet(); @@ -2428,7 +2428,7 @@ public class StorageService extends NotificationBroadcasterSupport implements IE public int forceRepairAsync(String keyspace, boolean isSequential, boolean isLocal, Collection> ranges, String... columnFamilies) { - if (Keyspace.SYSTEM_KS.equals(keyspace) || ranges.isEmpty()) + if (ranges.isEmpty() || Keyspace.open(keyspace).getReplicationStrategy().getReplicationFactor() < 2) return 0; final int cmd = nextRepairCommand.incrementAndGet(); @@ -2497,7 +2497,7 @@ public class StorageService extends NotificationBroadcasterSupport implements IE public void forceKeyspaceRepairRange(final String keyspaceName, final Collection> ranges, boolean isSequential, boolean isLocal, final String... columnFamilies) throws IOException { - if (Keyspace.SYSTEM_KS.equalsIgnoreCase(keyspaceName)) + if (ranges.isEmpty() || Keyspace.open(keyspaceName).getReplicationStrategy().getReplicationFactor() < 2) return; createRepairTask(nextRepairCommand.incrementAndGet(), keyspaceName, ranges, isSequential, isLocal, columnFamilies).run(); }