Merge branch 'cassandra-2.0' into cassandra-2.1 Conflicts: src/java/org/apache/cassandra/service/StorageService.java
Project: http://git-wip-us.apache.org/repos/asf/cassandra/repo Commit: http://git-wip-us.apache.org/repos/asf/cassandra/commit/dea5fa78 Tree: http://git-wip-us.apache.org/repos/asf/cassandra/tree/dea5fa78 Diff: http://git-wip-us.apache.org/repos/asf/cassandra/diff/dea5fa78 Branch: refs/heads/cassandra-2.1 Commit: dea5fa78a0ca94626656bbfbf101e4b152e8d6ed Parents: c6b509d 46ef962 Author: Yuki Morishita <yu...@apache.org> Authored: Fri Sep 5 10:28:07 2014 -0500 Committer: Yuki Morishita <yu...@apache.org> Committed: Fri Sep 5 10:28:07 2014 -0500 ---------------------------------------------------------------------- CHANGES.txt | 1 + src/java/org/apache/cassandra/service/StorageService.java | 4 ++-- 2 files changed, 3 insertions(+), 2 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/cassandra/blob/dea5fa78/CHANGES.txt ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/cassandra/blob/dea5fa78/src/java/org/apache/cassandra/service/StorageService.java ---------------------------------------------------------------------- diff --cc src/java/org/apache/cassandra/service/StorageService.java index 5c6dbd6,12d6420..fb4e6e6 --- a/src/java/org/apache/cassandra/service/StorageService.java +++ b/src/java/org/apache/cassandra/service/StorageService.java @@@ -2462,25 -2398,19 +2462,25 @@@ public class StorageService extends Not { throw new IllegalArgumentException("You need to run primary range repair on all nodes in the cluster."); } - final Collection<Range<Token>> ranges = primaryRange ? getLocalPrimaryRanges(keyspace) : getLocalRanges(keyspace); - return forceRepairAsync(keyspace, isSequential, dataCenters, hosts, ranges, columnFamilies); + Collection<Range<Token>> ranges = primaryRange ? getLocalPrimaryRanges(keyspace) : getLocalRanges(keyspace); + + return forceRepairAsync(keyspace, isSequential, dataCenters, hosts, ranges, fullRepair, columnFamilies); } - public int forceRepairAsync(final String keyspace, final boolean isSequential, final Collection<String> dataCenters, final Collection<String> hosts, final Collection<Range<Token>> ranges, final String... columnFamilies) + public int forceRepairAsync(String keyspace, boolean isSequential, Collection<String> dataCenters, Collection<String> hosts, Collection<Range<Token>> ranges, boolean fullRepair, 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(); + int cmd = nextRepairCommand.incrementAndGet(); if (ranges.size() > 0) { - new Thread(createRepairTask(cmd, keyspace, ranges, isSequential, dataCenters, hosts, columnFamilies)).start(); + if (!FBUtilities.isUnix() && isSequential) + { + logger.warn("Snapshot-based repair is not yet supported on Windows. Reverting to parallel repair."); + isSequential = false; + } + new Thread(createRepairTask(cmd, keyspace, ranges, isSequential, dataCenters, hosts, fullRepair, columnFamilies)).start(); } return cmd; } @@@ -2492,16 -2422,16 +2492,16 @@@ { throw new IllegalArgumentException("You need to run primary range repair on all nodes in the cluster."); } - final Collection<Range<Token>> ranges = primaryRange ? getLocalPrimaryRanges(keyspace) : getLocalRanges(keyspace); - return forceRepairAsync(keyspace, isSequential, isLocal, ranges, columnFamilies); + Collection<Range<Token>> ranges = primaryRange ? getLocalPrimaryRanges(keyspace) : getLocalRanges(keyspace); + return forceRepairAsync(keyspace, isSequential, isLocal, ranges, fullRepair, columnFamilies); } - public int forceRepairAsync(String keyspace, boolean isSequential, boolean isLocal, Collection<Range<Token>> ranges, String... columnFamilies) + public int forceRepairAsync(String keyspace, boolean isSequential, boolean isLocal, Collection<Range<Token>> ranges, boolean fullRepair, 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(); + int cmd = nextRepairCommand.incrementAndGet(); if (!FBUtilities.isUnix() && isSequential) { logger.warn("Snapshot-based repair is not yet supported on Windows. Reverting to parallel repair.");