You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cassandra.apache.org by jm...@apache.org on 2014/12/15 18:35:58 UTC
[1/3] cassandra git commit: Clean up IsWindows check,
add hasProc check
Repository: cassandra
Updated Branches:
refs/heads/trunk 9acf97a89 -> 574e2652e
Clean up IsWindows check, add hasProc check
Patch by Blake Eggleston; reviewed by jmckenzie for CASSANDRA-8452
Project: http://git-wip-us.apache.org/repos/asf/cassandra/repo
Commit: http://git-wip-us.apache.org/repos/asf/cassandra/commit/6d8862b0
Tree: http://git-wip-us.apache.org/repos/asf/cassandra/tree/6d8862b0
Diff: http://git-wip-us.apache.org/repos/asf/cassandra/diff/6d8862b0
Branch: refs/heads/trunk
Commit: 6d8862b00ed60a24387beb642609c03fcee095e9
Parents: f0767fd
Author: Blake Eggleston <bd...@gmail.com>
Authored: Mon Dec 15 11:10:17 2014 -0600
Committer: Joshua McKenzie <jm...@apache.org>
Committed: Mon Dec 15 11:10:17 2014 -0600
----------------------------------------------------------------------
.../apache/cassandra/io/sstable/SSTableRewriter.java | 2 +-
.../io/sstable/metadata/MetadataSerializer.java | 2 +-
.../org/apache/cassandra/service/CassandraDaemon.java | 2 +-
.../org/apache/cassandra/service/StorageService.java | 4 ++--
.../cassandra/utils/BackgroundActivityMonitor.java | 4 ++--
src/java/org/apache/cassandra/utils/FBUtilities.java | 13 +++++++++++--
6 files changed, 18 insertions(+), 9 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/cassandra/blob/6d8862b0/src/java/org/apache/cassandra/io/sstable/SSTableRewriter.java
----------------------------------------------------------------------
diff --git a/src/java/org/apache/cassandra/io/sstable/SSTableRewriter.java b/src/java/org/apache/cassandra/io/sstable/SSTableRewriter.java
index f9d2fe4..cd9435d 100644
--- a/src/java/org/apache/cassandra/io/sstable/SSTableRewriter.java
+++ b/src/java/org/apache/cassandra/io/sstable/SSTableRewriter.java
@@ -156,7 +156,7 @@ public class SSTableRewriter
private void maybeReopenEarly(DecoratedKey key)
{
- if (FBUtilities.isUnix() && writer.getFilePointer() - currentlyOpenedEarlyAt > preemptiveOpenInterval)
+ if (!FBUtilities.isWindows() && writer.getFilePointer() - currentlyOpenedEarlyAt > preemptiveOpenInterval)
{
if (isOffline)
{
http://git-wip-us.apache.org/repos/asf/cassandra/blob/6d8862b0/src/java/org/apache/cassandra/io/sstable/metadata/MetadataSerializer.java
----------------------------------------------------------------------
diff --git a/src/java/org/apache/cassandra/io/sstable/metadata/MetadataSerializer.java b/src/java/org/apache/cassandra/io/sstable/metadata/MetadataSerializer.java
index 7414208..0dcd981 100644
--- a/src/java/org/apache/cassandra/io/sstable/metadata/MetadataSerializer.java
+++ b/src/java/org/apache/cassandra/io/sstable/metadata/MetadataSerializer.java
@@ -154,7 +154,7 @@ public class MetadataSerializer implements IMetadataSerializer
out.flush();
}
// we cant move a file on top of another file in windows:
- if (!FBUtilities.isUnix())
+ if (FBUtilities.isWindows())
FileUtils.delete(descriptor.filenameFor(Component.STATS));
FileUtils.renameWithConfirm(tmpDescriptor.filenameFor(Component.STATS), descriptor.filenameFor(Component.STATS));
http://git-wip-us.apache.org/repos/asf/cassandra/blob/6d8862b0/src/java/org/apache/cassandra/service/CassandraDaemon.java
----------------------------------------------------------------------
diff --git a/src/java/org/apache/cassandra/service/CassandraDaemon.java b/src/java/org/apache/cassandra/service/CassandraDaemon.java
index 1c99348..c2b7b7d 100644
--- a/src/java/org/apache/cassandra/service/CassandraDaemon.java
+++ b/src/java/org/apache/cassandra/service/CassandraDaemon.java
@@ -430,7 +430,7 @@ public class CassandraDaemon
// On windows, we need to stop the entire system as prunsrv doesn't have the jsvc hooks
// We rely on the shutdown hook to drain the node
- if (!FBUtilities.isUnix())
+ if (FBUtilities.isWindows())
System.exit(0);
}
http://git-wip-us.apache.org/repos/asf/cassandra/blob/6d8862b0/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 332fbe5..36fe377 100644
--- a/src/java/org/apache/cassandra/service/StorageService.java
+++ b/src/java/org/apache/cassandra/service/StorageService.java
@@ -2534,7 +2534,7 @@ public class StorageService extends NotificationBroadcasterSupport implements IE
int cmd = nextRepairCommand.incrementAndGet();
if (ranges.size() > 0)
{
- if (!FBUtilities.isUnix() && parallelismDegree != RepairParallelism.PARALLEL)
+ if (FBUtilities.isWindows() && parallelismDegree != RepairParallelism.PARALLEL)
{
logger.warn("Snapshot-based repair is not yet supported on Windows. Reverting to parallel repair.");
parallelismDegree = RepairParallelism.PARALLEL;
@@ -2570,7 +2570,7 @@ public class StorageService extends NotificationBroadcasterSupport implements IE
return 0;
int cmd = nextRepairCommand.incrementAndGet();
- if (!FBUtilities.isUnix() && parallelismDegree != RepairParallelism.PARALLEL)
+ if (FBUtilities.isWindows() && parallelismDegree != RepairParallelism.PARALLEL)
{
logger.warn("Snapshot-based repair is not yet supported on Windows. Reverting to parallel repair.");
parallelismDegree = RepairParallelism.PARALLEL;
http://git-wip-us.apache.org/repos/asf/cassandra/blob/6d8862b0/src/java/org/apache/cassandra/utils/BackgroundActivityMonitor.java
----------------------------------------------------------------------
diff --git a/src/java/org/apache/cassandra/utils/BackgroundActivityMonitor.java b/src/java/org/apache/cassandra/utils/BackgroundActivityMonitor.java
index 43113fc..1799d10 100644
--- a/src/java/org/apache/cassandra/utils/BackgroundActivityMonitor.java
+++ b/src/java/org/apache/cassandra/utils/BackgroundActivityMonitor.java
@@ -71,7 +71,7 @@ public class BackgroundActivityMonitor
}
catch (IOException ex)
{
- if (FBUtilities.isUnix())
+ if (FBUtilities.hasProcFS())
logger.warn("Couldn't open /proc/stats");
statsFile = null;
}
@@ -155,7 +155,7 @@ public class BackgroundActivityMonitor
catch (IOException e)
{
// ignore;
- if (FBUtilities.isUnix())
+ if (FBUtilities.hasProcFS())
logger.warn("Couldn't read /proc/stats");
}
if (report == -1d)
http://git-wip-us.apache.org/repos/asf/cassandra/blob/6d8862b0/src/java/org/apache/cassandra/utils/FBUtilities.java
----------------------------------------------------------------------
diff --git a/src/java/org/apache/cassandra/utils/FBUtilities.java b/src/java/org/apache/cassandra/utils/FBUtilities.java
index 01b7923..4c81b2a 100644
--- a/src/java/org/apache/cassandra/utils/FBUtilities.java
+++ b/src/java/org/apache/cassandra/utils/FBUtilities.java
@@ -72,6 +72,10 @@ public class FBUtilities
private static final String OPERATING_SYSTEM = System.getProperty("os.name").toLowerCase();
+ private static final boolean IS_WINDOWS = OPERATING_SYSTEM.contains("windows");
+
+ private static final boolean HAS_PROCFS = !IS_WINDOWS && (new File(File.separator + "proc")).exists();
+
private static volatile InetAddress localInetAddress;
private static volatile InetAddress broadcastInetAddress;
@@ -676,9 +680,14 @@ public class FBUtilities
return historyDir;
}
- public static boolean isUnix()
+ public static boolean isWindows()
+ {
+ return IS_WINDOWS;
+ }
+
+ public static boolean hasProcFS()
{
- return OPERATING_SYSTEM.contains("nix") || OPERATING_SYSTEM.contains("nux") || OPERATING_SYSTEM.contains("aix");
+ return HAS_PROCFS;
}
public static void updateWithShort(MessageDigest digest, int val)
[3/3] cassandra git commit: merge fixes for CASSANDRA-8452
Posted by jm...@apache.org.
merge fixes for CASSANDRA-8452
Project: http://git-wip-us.apache.org/repos/asf/cassandra/repo
Commit: http://git-wip-us.apache.org/repos/asf/cassandra/commit/574e2652
Tree: http://git-wip-us.apache.org/repos/asf/cassandra/tree/574e2652
Diff: http://git-wip-us.apache.org/repos/asf/cassandra/diff/574e2652
Branch: refs/heads/trunk
Commit: 574e2652ef1c5bc8813ae48ebfe785424795e7b5
Parents: 3a0dc2c
Author: Joshua McKenzie <jm...@apache.org>
Authored: Mon Dec 15 11:33:18 2014 -0600
Committer: Joshua McKenzie <jm...@apache.org>
Committed: Mon Dec 15 11:33:18 2014 -0600
----------------------------------------------------------------------
.../cassandra/config/DatabaseDescriptor.java | 18 +++++++++---------
.../apache/cassandra/service/StorageService.java | 1 +
.../org/apache/cassandra/utils/FBUtilities.java | 2 +-
.../org/apache/cassandra/utils/SigarLibrary.java | 2 +-
test/pig/org/apache/pig/test/MiniCluster.java | 2 +-
5 files changed, 13 insertions(+), 12 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/cassandra/blob/574e2652/src/java/org/apache/cassandra/config/DatabaseDescriptor.java
----------------------------------------------------------------------
diff --git a/src/java/org/apache/cassandra/config/DatabaseDescriptor.java b/src/java/org/apache/cassandra/config/DatabaseDescriptor.java
index c34c6ea..958cf8c 100644
--- a/src/java/org/apache/cassandra/config/DatabaseDescriptor.java
+++ b/src/java/org/apache/cassandra/config/DatabaseDescriptor.java
@@ -177,7 +177,15 @@ public class DatabaseDescriptor
if (conf.commitlog_total_space_in_mb == null)
conf.commitlog_total_space_in_mb = hasLargeAddressSpace() ? 8192 : 32;
- if (FBUtilities.isUnix())
+ // Always force standard mode access on Windows - CASSANDRA-6993. Windows won't allow deletion of hard-links to files that
+ // are memory-mapped which causes trouble with snapshots.
+ if (FBUtilities.isWindows())
+ {
+ conf.disk_access_mode = Config.DiskAccessMode.standard;
+ indexAccessMode = conf.disk_access_mode;
+ logger.info("Non-unix environment detected. DiskAccessMode set to {}, indexAccessMode {}", conf.disk_access_mode, indexAccessMode);
+ }
+ else
{
/* evaluate the DiskAccessMode Config directive, which also affects indexAccessMode selection */
if (conf.disk_access_mode == Config.DiskAccessMode.auto)
@@ -198,14 +206,6 @@ public class DatabaseDescriptor
logger.info("DiskAccessMode is {}, indexAccessMode is {}", conf.disk_access_mode, indexAccessMode);
}
}
- // Always force standard mode access on Windows - CASSANDRA-6993. Windows won't allow deletion of hard-links to files that
- // are memory-mapped which causes trouble with snapshots.
- else
- {
- conf.disk_access_mode = Config.DiskAccessMode.standard;
- indexAccessMode = conf.disk_access_mode;
- logger.info("Non-unix environment detected. DiskAccessMode set to {}, indexAccessMode {}", conf.disk_access_mode, indexAccessMode);
- }
/* Authentication and authorization backend, implementing IAuthenticator and IAuthorizer */
if (conf.authenticator != null)
http://git-wip-us.apache.org/repos/asf/cassandra/blob/574e2652/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 f646d87..999d6b6 100644
--- a/src/java/org/apache/cassandra/service/StorageService.java
+++ b/src/java/org/apache/cassandra/service/StorageService.java
@@ -2536,6 +2536,7 @@ public class StorageService extends NotificationBroadcasterSupport implements IE
boolean fullRepair,
String... columnFamilies)
{
+ if (FBUtilities.isWindows() && parallelismDegree != RepairParallelism.PARALLEL)
{
logger.warn("Snapshot-based repair is not yet supported on Windows. Reverting to parallel repair.");
parallelismDegree = RepairParallelism.PARALLEL;
http://git-wip-us.apache.org/repos/asf/cassandra/blob/574e2652/src/java/org/apache/cassandra/utils/FBUtilities.java
----------------------------------------------------------------------
diff --git a/src/java/org/apache/cassandra/utils/FBUtilities.java b/src/java/org/apache/cassandra/utils/FBUtilities.java
index c41a6c0..8077df8 100644
--- a/src/java/org/apache/cassandra/utils/FBUtilities.java
+++ b/src/java/org/apache/cassandra/utils/FBUtilities.java
@@ -70,8 +70,8 @@ public class FBUtilities
public static final BigInteger TWO = new BigInteger("2");
private static final String DEFAULT_TRIGGER_DIR = "triggers";
+ private static final String OPERATING_SYSTEM = System.getProperty("os.name").toLowerCase();
private static final boolean IS_WINDOWS = OPERATING_SYSTEM.contains("windows");
-
private static final boolean HAS_PROCFS = !IS_WINDOWS && (new File(File.separator + "proc")).exists();
private static volatile InetAddress localInetAddress;
http://git-wip-us.apache.org/repos/asf/cassandra/blob/574e2652/src/java/org/apache/cassandra/utils/SigarLibrary.java
----------------------------------------------------------------------
diff --git a/src/java/org/apache/cassandra/utils/SigarLibrary.java b/src/java/org/apache/cassandra/utils/SigarLibrary.java
index bcfa58e..fb3d3ae 100644
--- a/src/java/org/apache/cassandra/utils/SigarLibrary.java
+++ b/src/java/org/apache/cassandra/utils/SigarLibrary.java
@@ -110,7 +110,7 @@ public class SigarLibrary
private boolean hasAcceptableAddressSpace()
{
// Check is invalid on Windows
- if (!FBUtilities.isUnix())
+ if (FBUtilities.isWindows())
return true;
try
http://git-wip-us.apache.org/repos/asf/cassandra/blob/574e2652/test/pig/org/apache/pig/test/MiniCluster.java
----------------------------------------------------------------------
diff --git a/test/pig/org/apache/pig/test/MiniCluster.java b/test/pig/org/apache/pig/test/MiniCluster.java
index ad50f69..aa03861 100644
--- a/test/pig/org/apache/pig/test/MiniCluster.java
+++ b/test/pig/org/apache/pig/test/MiniCluster.java
@@ -50,7 +50,7 @@ public class MiniCluster extends MiniGenericCluster {
// Builds and starts the mini dfs and mapreduce clusters
Configuration config = new Configuration();
- if (!FBUtilities.isUnix())
+ if (FBUtilities.isWindows())
config.set("fs.file.impl", WindowsLocalFileSystem.class.getName());
m_dfs = new MiniDFSCluster(config, dataNodes, true, null);
m_fileSys = m_dfs.getFileSystem();
[2/3] cassandra git commit: Merge branch 'cassandra-2.1' into trunk
Posted by jm...@apache.org.
Merge branch 'cassandra-2.1' into trunk
Conflicts:
src/java/org/apache/cassandra/service/StorageService.java
src/java/org/apache/cassandra/utils/FBUtilities.java
Project: http://git-wip-us.apache.org/repos/asf/cassandra/repo
Commit: http://git-wip-us.apache.org/repos/asf/cassandra/commit/3a0dc2c0
Tree: http://git-wip-us.apache.org/repos/asf/cassandra/tree/3a0dc2c0
Diff: http://git-wip-us.apache.org/repos/asf/cassandra/diff/3a0dc2c0
Branch: refs/heads/trunk
Commit: 3a0dc2c0f7bbbbbb7c4976b8b99903149f3202e9
Parents: 9acf97a 6d8862b
Author: Joshua McKenzie <jm...@apache.org>
Authored: Mon Dec 15 11:31:48 2014 -0600
Committer: Joshua McKenzie <jm...@apache.org>
Committed: Mon Dec 15 11:31:48 2014 -0600
----------------------------------------------------------------------
.../apache/cassandra/io/sstable/SSTableRewriter.java | 2 +-
.../io/sstable/metadata/MetadataSerializer.java | 2 +-
.../apache/cassandra/service/CassandraDaemon.java | 2 +-
.../org/apache/cassandra/service/StorageService.java | 3 +--
.../cassandra/utils/BackgroundActivityMonitor.java | 4 ++--
src/java/org/apache/cassandra/utils/FBUtilities.java | 15 +++++++++++----
6 files changed, 17 insertions(+), 11 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/cassandra/blob/3a0dc2c0/src/java/org/apache/cassandra/io/sstable/SSTableRewriter.java
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/cassandra/blob/3a0dc2c0/src/java/org/apache/cassandra/service/CassandraDaemon.java
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/cassandra/blob/3a0dc2c0/src/java/org/apache/cassandra/service/StorageService.java
----------------------------------------------------------------------
diff --cc src/java/org/apache/cassandra/service/StorageService.java
index 4ec23a6,36fe377..f646d87
--- a/src/java/org/apache/cassandra/service/StorageService.java
+++ b/src/java/org/apache/cassandra/service/StorageService.java
@@@ -2429,114 -2494,83 +2429,113 @@@ public class StorageService extends Not
sendNotification(jmxNotification);
}
- public int forceRepairAsync(String keyspace, boolean isSequential, Collection<String> dataCenters, Collection<String> hosts, boolean primaryRange, boolean fullRepair, String... columnFamilies) throws IOException
- {
- return forceRepairAsync(keyspace, isSequential ? RepairParallelism.SEQUENTIAL : RepairParallelism.PARALLEL, dataCenters, hosts, primaryRange, fullRepair, columnFamilies);
- }
-
- public int forceRepairAsync(String keyspace, RepairParallelism parallelismDegree, Collection<String> dataCenters, Collection<String> hosts, boolean primaryRange, boolean fullRepair, String... columnFamilies)
+ public int repairAsync(String keyspace, Map<String, String> repairSpec)
{
- Collection<Range<Token>> ranges;
- if (primaryRange)
+ RepairOption option = RepairOption.parse(repairSpec, getPartitioner());
+ // if ranges are not specified
+ if (option.getRanges().isEmpty())
{
- // when repairing only primary range, neither dataCenters nor hosts can be set
- if (dataCenters == null && hosts == null)
- ranges = getPrimaryRanges(keyspace);
- // except dataCenters only contain local DC (i.e. -local)
- else if (dataCenters != null && dataCenters.size() == 1 && dataCenters.contains(DatabaseDescriptor.getLocalDataCenter()))
- ranges = getPrimaryRangesWithinDC(keyspace);
+ if (option.isPrimaryRange())
+ {
+ // when repairing only primary range, neither dataCenters nor hosts can be set
+ if (option.getDataCenters().isEmpty() && option.getHosts().isEmpty())
+ option.getRanges().addAll(getPrimaryRanges(keyspace));
+ // except dataCenters only contain local DC (i.e. -local)
+ else if (option.getDataCenters().size() == 1 && option.getDataCenters().contains(DatabaseDescriptor.getLocalDataCenter()))
+ option.getRanges().addAll(getPrimaryRangesWithinDC(keyspace));
+ else
+ throw new IllegalArgumentException("You need to run primary range repair on all nodes in the cluster.");
+ }
else
- throw new IllegalArgumentException("You need to run primary range repair on all nodes in the cluster.");
- }
- else
- {
- ranges = getLocalRanges(keyspace);
+ {
+ option.getRanges().addAll(getLocalRanges(keyspace));
+ }
}
-
- return forceRepairAsync(keyspace, parallelismDegree, dataCenters, hosts, ranges, fullRepair, columnFamilies);
+ return forceRepairAsync(keyspace, option);
}
- public int forceRepairAsync(String keyspace, boolean isSequential, Collection<String> dataCenters, Collection<String> hosts, Collection<Range<Token>> ranges, boolean fullRepair, String... columnFamilies)
+ @Deprecated
+ public int forceRepairAsync(String keyspace,
+ boolean isSequential,
+ Collection<String> dataCenters,
+ Collection<String> hosts,
+ boolean primaryRange,
+ boolean fullRepair,
+ String... columnFamilies)
{
- return forceRepairAsync(keyspace, isSequential ? RepairParallelism.SEQUENTIAL : RepairParallelism.PARALLEL, dataCenters, hosts, ranges, fullRepair, columnFamilies);
+ return forceRepairAsync(keyspace, isSequential ? RepairParallelism.SEQUENTIAL : RepairParallelism.PARALLEL, dataCenters, hosts, primaryRange, fullRepair, columnFamilies);
}
- public int forceRepairAsync(String keyspace, RepairParallelism parallelismDegree, Collection<String> dataCenters, Collection<String> hosts, Collection<Range<Token>> ranges, boolean fullRepair, String... columnFamilies)
+ @Deprecated
+ public int forceRepairAsync(String keyspace,
+ RepairParallelism parallelismDegree,
+ Collection<String> dataCenters,
+ Collection<String> hosts,
+ boolean primaryRange,
+ boolean fullRepair,
+ String... columnFamilies)
{
- if (!FBUtilities.isUnix() && parallelismDegree != RepairParallelism.PARALLEL)
- if (ranges.isEmpty() || Keyspace.open(keyspace).getReplicationStrategy().getReplicationFactor() < 2)
- return 0;
++ if (FBUtilities.isWindows() && parallelismDegree != RepairParallelism.PARALLEL)
+ {
+ logger.warn("Snapshot-based repair is not yet supported on Windows. Reverting to parallel repair.");
+ parallelismDegree = RepairParallelism.PARALLEL;
+ }
- int cmd = nextRepairCommand.incrementAndGet();
- if (ranges.size() > 0)
+ RepairOption options = new RepairOption(parallelismDegree, primaryRange, !fullRepair, false, 1, Collections.<Range<Token>>emptyList());
+ if (dataCenters != null)
{
- if (FBUtilities.isWindows() && parallelismDegree != RepairParallelism.PARALLEL)
+ options.getDataCenters().addAll(dataCenters);
+ }
+ if (hosts != null)
+ {
+ options.getHosts().addAll(hosts);
+ }
+ if (columnFamilies != null)
+ {
+ for (String columnFamily : columnFamilies)
{
- logger.warn("Snapshot-based repair is not yet supported on Windows. Reverting to parallel repair.");
- parallelismDegree = RepairParallelism.PARALLEL;
+ options.getColumnFamilies().add(columnFamily);
}
- new Thread(createRepairTask(cmd, keyspace, ranges, parallelismDegree, dataCenters, hosts, fullRepair, columnFamilies)).start();
}
- return cmd;
+ return forceRepairAsync(keyspace, options);
}
- public int forceRepairAsync(String keyspace, boolean isSequential, boolean isLocal, boolean primaryRange, boolean fullRepair, String... columnFamilies)
+ public int forceRepairAsync(String keyspace,
+ boolean isSequential,
+ boolean isLocal,
+ boolean primaryRange,
+ boolean fullRepair,
+ String... columnFamilies)
{
- Collection<Range<Token>> ranges;
- if (primaryRange)
- {
- ranges = isLocal ? getPrimaryRangesWithinDC(keyspace) : getPrimaryRanges(keyspace);
- }
- else
+ Set<String> dataCenters = null;
+ if (isLocal)
{
- ranges = getLocalRanges(keyspace);
+ dataCenters = Sets.newHashSet(DatabaseDescriptor.getLocalDataCenter());
}
-
- return forceRepairAsync(keyspace, isSequential, isLocal, ranges, fullRepair, columnFamilies);
+ return forceRepairAsync(keyspace, isSequential, dataCenters, null, primaryRange, fullRepair, columnFamilies);
}
- public int forceRepairAsync(String keyspace, boolean isSequential, boolean isLocal, Collection<Range<Token>> ranges, boolean fullRepair, String... columnFamilies)
+ public int forceRepairRangeAsync(String beginToken,
+ String endToken,
+ String keyspaceName,
+ boolean isSequential,
+ Collection<String> dataCenters,
+ Collection<String> hosts,
+ boolean fullRepair,
+ String... columnFamilies)
{
- return forceRepairAsync(keyspace, isSequential ? RepairParallelism.SEQUENTIAL : RepairParallelism.PARALLEL, isLocal, ranges, fullRepair, columnFamilies);
+ return forceRepairRangeAsync(beginToken, endToken, keyspaceName, isSequential ? RepairParallelism.SEQUENTIAL : RepairParallelism.PARALLEL, dataCenters, hosts, fullRepair, columnFamilies);
}
- public int forceRepairAsync(String keyspace, RepairParallelism parallelismDegree, boolean isLocal, Collection<Range<Token>> ranges, boolean fullRepair, String... columnFamilies)
+ public int forceRepairRangeAsync(String beginToken,
+ String endToken,
+ String keyspaceName,
+ RepairParallelism parallelismDegree,
+ Collection<String> dataCenters,
+ Collection<String> hosts,
+ boolean fullRepair,
+ String... columnFamilies)
{
- if (!FBUtilities.isUnix() && parallelismDegree != RepairParallelism.PARALLEL)
- if (ranges.isEmpty() || Keyspace.open(keyspace).getReplicationStrategy().getReplicationFactor() < 2)
- return 0;
-
- int cmd = nextRepairCommand.incrementAndGet();
- if (FBUtilities.isWindows() && parallelismDegree != RepairParallelism.PARALLEL)
{
logger.warn("Snapshot-based repair is not yet supported on Windows. Reverting to parallel repair.");
parallelismDegree = RepairParallelism.PARALLEL;
http://git-wip-us.apache.org/repos/asf/cassandra/blob/3a0dc2c0/src/java/org/apache/cassandra/utils/FBUtilities.java
----------------------------------------------------------------------
diff --cc src/java/org/apache/cassandra/utils/FBUtilities.java
index acd19ad,4c81b2a..c41a6c0
--- a/src/java/org/apache/cassandra/utils/FBUtilities.java
+++ b/src/java/org/apache/cassandra/utils/FBUtilities.java
@@@ -70,6 -70,12 +70,10 @@@ public class FBUtilitie
public static final BigInteger TWO = new BigInteger("2");
private static final String DEFAULT_TRIGGER_DIR = "triggers";
- private static final String OPERATING_SYSTEM = System.getProperty("os.name").toLowerCase();
-
+ private static final boolean IS_WINDOWS = OPERATING_SYSTEM.contains("windows");
+
+ private static final boolean HAS_PROCFS = !IS_WINDOWS && (new File(File.separator + "proc")).exists();
+
private static volatile InetAddress localInetAddress;
private static volatile InetAddress broadcastInetAddress;