You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cassandra.apache.org by ma...@apache.org on 2014/03/18 09:48:07 UTC
[1/2] git commit: Improve nodetool cleanup/scrub/upgradesstables
failure handling.
Repository: cassandra
Updated Branches:
refs/heads/trunk 6e66cf5f2 -> 5b88a0f62
Improve nodetool cleanup/scrub/upgradesstables failure handling.
Patch by marcuse, reviewed by jbellis for CASSANDRA-6774
Project: http://git-wip-us.apache.org/repos/asf/cassandra/repo
Commit: http://git-wip-us.apache.org/repos/asf/cassandra/commit/17945ab0
Tree: http://git-wip-us.apache.org/repos/asf/cassandra/tree/17945ab0
Diff: http://git-wip-us.apache.org/repos/asf/cassandra/diff/17945ab0
Branch: refs/heads/trunk
Commit: 17945ab0d0bd65d35f99e4577f5c516aa60423f1
Parents: 35b2151
Author: Marcus Eriksson <ma...@apache.org>
Authored: Tue Mar 18 09:38:14 2014 +0100
Committer: Marcus Eriksson <ma...@apache.org>
Committed: Tue Mar 18 09:46:26 2014 +0100
----------------------------------------------------------------------
CHANGES.txt | 1 +
.../apache/cassandra/db/ColumnFamilyStore.java | 17 +--
.../db/compaction/CompactionManager.java | 105 ++++++++++++++-----
.../SizeTieredCompactionStrategy.java | 2 +-
.../cassandra/service/StorageService.java | 30 ++++--
.../cassandra/service/StorageServiceMBean.java | 8 +-
.../org/apache/cassandra/tools/NodeProbe.java | 46 ++++++--
.../org/apache/cassandra/tools/NodeTool.java | 6 +-
8 files changed, 161 insertions(+), 54 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/cassandra/blob/17945ab0/CHANGES.txt
----------------------------------------------------------------------
diff --git a/CHANGES.txt b/CHANGES.txt
index 04e16a0..384d995 100644
--- a/CHANGES.txt
+++ b/CHANGES.txt
@@ -22,6 +22,7 @@
* Fix stress smart Thrift client to pick servers correctly (CASSANDRA-6848)
* Add logging levels (minimal, normal or verbose) to stress tool (CASSANDRA-6849)
* Fix race condition in Batch CLE (CASSANDRA-6860)
+ * Improve cleanup/scrub/upgradesstables failure handling (CASSANDRA-6774)
Merged from 2.0:
* Update hadoop_cql3_word_count example (CASSANDRA-6793)
* Fix handling of RejectedExecution in sync Thrift server (CASSANDRA-6788)
http://git-wip-us.apache.org/repos/asf/cassandra/blob/17945ab0/src/java/org/apache/cassandra/db/ColumnFamilyStore.java
----------------------------------------------------------------------
diff --git a/src/java/org/apache/cassandra/db/ColumnFamilyStore.java b/src/java/org/apache/cassandra/db/ColumnFamilyStore.java
index 40632b2..e116574 100644
--- a/src/java/org/apache/cassandra/db/ColumnFamilyStore.java
+++ b/src/java/org/apache/cassandra/db/ColumnFamilyStore.java
@@ -1294,22 +1294,22 @@ public class ColumnFamilyStore implements ColumnFamilyStoreMBean
return maxFile;
}
- public void forceCleanup() throws ExecutionException, InterruptedException
+ public CompactionManager.AllSSTableOpStatus forceCleanup() throws ExecutionException, InterruptedException
{
- CompactionManager.instance.performCleanup(ColumnFamilyStore.this);
+ return CompactionManager.instance.performCleanup(ColumnFamilyStore.this);
}
- public void scrub(boolean disableSnapshot, boolean skipCorrupted) throws ExecutionException, InterruptedException
+ public CompactionManager.AllSSTableOpStatus scrub(boolean disableSnapshot, boolean skipCorrupted) throws ExecutionException, InterruptedException
{
// skip snapshot creation during scrub, SEE JIRA 5891
if(!disableSnapshot)
snapshotWithoutFlush("pre-scrub-" + System.currentTimeMillis());
- CompactionManager.instance.performScrub(ColumnFamilyStore.this, skipCorrupted);
+ return CompactionManager.instance.performScrub(ColumnFamilyStore.this, skipCorrupted);
}
- public void sstablesRewrite(boolean excludeCurrentVersion) throws ExecutionException, InterruptedException
+ public CompactionManager.AllSSTableOpStatus sstablesRewrite(boolean excludeCurrentVersion) throws ExecutionException, InterruptedException
{
- CompactionManager.instance.performSSTableRewrite(ColumnFamilyStore.this, excludeCurrentVersion);
+ return CompactionManager.instance.performSSTableRewrite(ColumnFamilyStore.this, excludeCurrentVersion);
}
public void markObsolete(Collection<SSTableReader> sstables, OperationType compactionType)
@@ -2414,7 +2414,8 @@ public class ColumnFamilyStore implements ColumnFamilyStoreMBean
{
if (!cfs.getDataTracker().getCompacting().isEmpty())
{
- logger.warn("Unable to cancel in-progress compactions for {}. Probably there is an unusually large row in progress somewhere. It is also possible that buggy code left some sstables compacting after it was done with them", metadata.cfName);
+ logger.warn("Unable to cancel in-progress compactions for {}. Perhaps there is an unusually large row in progress somewhere, or the system is simply overloaded.", metadata.cfName);
+ return null;
}
}
logger.debug("Compactions successfully cancelled");
@@ -2446,7 +2447,7 @@ public class ColumnFamilyStore implements ColumnFamilyStoreMBean
assert data.getCompacting().isEmpty() : data.getCompacting();
Iterable<SSTableReader> sstables = Lists.newArrayList(AbstractCompactionStrategy.filterSuspectSSTables(getSSTables()));
if (Iterables.isEmpty(sstables))
- return null;
+ return Collections.emptyList();
boolean success = data.markCompacting(sstables);
assert success : "something marked things compacting while compactions are disabled";
return sstables;
http://git-wip-us.apache.org/repos/asf/cassandra/blob/17945ab0/src/java/org/apache/cassandra/db/compaction/CompactionManager.java
----------------------------------------------------------------------
diff --git a/src/java/org/apache/cassandra/db/compaction/CompactionManager.java b/src/java/org/apache/cassandra/db/compaction/CompactionManager.java
index d44ff46..e28cfef 100644
--- a/src/java/org/apache/cassandra/db/compaction/CompactionManager.java
+++ b/src/java/org/apache/cassandra/db/compaction/CompactionManager.java
@@ -209,45 +209,80 @@ public class CompactionManager implements CompactionManagerMBean
}
}
- private static interface AllSSTablesOperation
+ private abstract static class UnmarkingRunnable implements Runnable
{
- public void perform(ColumnFamilyStore store, Iterable<SSTableReader> sstables) throws IOException;
+ private final ColumnFamilyStore cfs;
+ private final Iterable<SSTableReader> sstables;
+
+ private UnmarkingRunnable(ColumnFamilyStore cfs, Iterable<SSTableReader> sstables)
+ {
+ this.cfs = cfs;
+ this.sstables = sstables;
+ }
+
+ protected abstract void runMayThrow() throws IOException;
+
+ public final void run()
+ {
+ try
+ {
+ runMayThrow();
+ }
+ catch (Exception e)
+ {
+ throw Throwables.propagate(e);
+ }
+ finally
+ {
+ cfs.getDataTracker().unmarkCompacting(sstables);
+ }
+ }
}
- private void performAllSSTableOperation(final ColumnFamilyStore cfs, final AllSSTablesOperation operation) throws InterruptedException, ExecutionException
+ public enum AllSSTableOpStatus { ABORTED, SUCCESSFUL }
+
+ public AllSSTableOpStatus performScrub(final ColumnFamilyStore cfs, final boolean skipCorrupted) throws InterruptedException, ExecutionException
{
final Iterable<SSTableReader> sstables = cfs.markAllCompacting();
if (sstables == null)
- return;
+ {
+ logger.info("Aborting scrub of {}.{} after failing to interrupt other compaction operations", cfs.keyspace.getName(), cfs.name);
+ return AllSSTableOpStatus.ABORTED;
+ }
+ if (Iterables.isEmpty(sstables))
+ {
+ logger.info("No sstables to scrub for {}.{}", cfs.keyspace.getName(), cfs.name);
+ return AllSSTableOpStatus.SUCCESSFUL;
+ }
- Callable<Object> runnable = new Callable<Object>()
+ Runnable runnable = new UnmarkingRunnable(cfs, sstables)
{
- public Object call() throws IOException
+ protected void runMayThrow() throws IOException
{
- operation.perform(cfs, sstables);
- cfs.getDataTracker().unmarkCompacting(sstables);
- return this;
+ doScrub(cfs, sstables, skipCorrupted);
}
};
executor.submit(runnable).get();
+ return AllSSTableOpStatus.SUCCESSFUL;
}
- public void performScrub(ColumnFamilyStore cfStore, final boolean skipCorrupted) throws InterruptedException, ExecutionException
+ public AllSSTableOpStatus performSSTableRewrite(final ColumnFamilyStore cfs, final boolean excludeCurrentVersion) throws InterruptedException, ExecutionException
{
- performAllSSTableOperation(cfStore, new AllSSTablesOperation()
+ final Iterable<SSTableReader> sstables = cfs.markAllCompacting();
+ if (sstables == null)
{
- public void perform(ColumnFamilyStore store, Iterable<SSTableReader> sstables) throws IOException
- {
- doScrub(store, sstables, skipCorrupted);
- }
- });
- }
+ logger.info("Aborting sstable format upgrade of {}.{} after failing to interrupt other compaction operations", cfs.keyspace.getName(), cfs.name);
+ return AllSSTableOpStatus.ABORTED;
+ }
+ if (Iterables.isEmpty(sstables))
+ {
+ logger.info("No sstables to upgrade for {}.{}", cfs.keyspace.getName(), cfs.name);
+ return AllSSTableOpStatus.SUCCESSFUL;
+ }
- public void performSSTableRewrite(ColumnFamilyStore cfStore, final boolean excludeCurrentVersion) throws InterruptedException, ExecutionException
- {
- performAllSSTableOperation(cfStore, new AllSSTablesOperation()
+ Runnable runnable = new UnmarkingRunnable(cfs, sstables)
{
- public void perform(ColumnFamilyStore cfs, Iterable<SSTableReader> sstables)
+ protected void runMayThrow() throws IOException
{
for (final SSTableReader sstable : sstables)
{
@@ -262,23 +297,39 @@ public class CompactionManager implements CompactionManagerMBean
task.execute(metrics);
}
}
- });
+ };
+ executor.submit(runnable).get();
+ return AllSSTableOpStatus.SUCCESSFUL;
}
- public void performCleanup(ColumnFamilyStore cfStore) throws InterruptedException, ExecutionException
+ public AllSSTableOpStatus performCleanup(final ColumnFamilyStore cfStore) throws InterruptedException, ExecutionException
{
- performAllSSTableOperation(cfStore, new AllSSTablesOperation()
+ final Iterable<SSTableReader> sstables = cfStore.markAllCompacting();
+ if (sstables == null)
+ {
+ logger.info("Aborting cleanup of {}.{} after failing to interrupt other compaction operations", cfStore.keyspace.getName(), cfStore.name);
+ return AllSSTableOpStatus.ABORTED;
+ }
+ if (Iterables.isEmpty(sstables))
{
- public void perform(ColumnFamilyStore store, Iterable<SSTableReader> sstables) throws IOException
+ logger.info("No sstables to cleanup for {}.{}", cfStore.keyspace.getName(), cfStore.name);
+ return AllSSTableOpStatus.SUCCESSFUL;
+ }
+
+ Runnable runnable = new UnmarkingRunnable(cfStore, sstables)
+ {
+ protected void runMayThrow() throws IOException
{
// Sort the column families in order of SSTable size, so cleanup of smaller CFs
// can free up space for larger ones
List<SSTableReader> sortedSSTables = Lists.newArrayList(sstables);
Collections.sort(sortedSSTables, new SSTableReader.SizeComparator());
- doCleanupCompaction(store, sortedSSTables);
+ doCleanupCompaction(cfStore, sortedSSTables);
}
- });
+ };
+ executor.submit(runnable).get();
+ return AllSSTableOpStatus.SUCCESSFUL;
}
public Future<?> submitAntiCompaction(final ColumnFamilyStore cfs,
http://git-wip-us.apache.org/repos/asf/cassandra/blob/17945ab0/src/java/org/apache/cassandra/db/compaction/SizeTieredCompactionStrategy.java
----------------------------------------------------------------------
diff --git a/src/java/org/apache/cassandra/db/compaction/SizeTieredCompactionStrategy.java b/src/java/org/apache/cassandra/db/compaction/SizeTieredCompactionStrategy.java
index 63d983c..763d20b 100644
--- a/src/java/org/apache/cassandra/db/compaction/SizeTieredCompactionStrategy.java
+++ b/src/java/org/apache/cassandra/db/compaction/SizeTieredCompactionStrategy.java
@@ -277,7 +277,7 @@ public class SizeTieredCompactionStrategy extends AbstractCompactionStrategy
public Collection<AbstractCompactionTask> getMaximalTask(final int gcBefore)
{
Iterable<SSTableReader> allSSTables = cfs.markAllCompacting();
- if (allSSTables == null)
+ if (allSSTables == null || Iterables.isEmpty(allSSTables))
return null;
Set<SSTableReader> sstables = Sets.newHashSet(allSSTables);
Set<SSTableReader> repaired = new HashSet<>();
http://git-wip-us.apache.org/repos/asf/cassandra/blob/17945ab0/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 d9026d0..6d49a8f 100644
--- a/src/java/org/apache/cassandra/service/StorageService.java
+++ b/src/java/org/apache/cassandra/service/StorageService.java
@@ -46,6 +46,7 @@ import com.google.common.util.concurrent.FutureCallback;
import com.google.common.util.concurrent.Futures;
import com.google.common.util.concurrent.Uninterruptibles;
import org.apache.commons.lang3.StringUtils;
+
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -59,6 +60,7 @@ import org.apache.cassandra.config.KSMetaData;
import org.apache.cassandra.config.Schema;
import org.apache.cassandra.db.*;
import org.apache.cassandra.db.commitlog.CommitLog;
+import org.apache.cassandra.db.compaction.CompactionManager;
import org.apache.cassandra.db.index.SecondaryIndex;
import org.apache.cassandra.dht.*;
import org.apache.cassandra.dht.Range;
@@ -2166,27 +2168,43 @@ public class StorageService extends NotificationBroadcasterSupport implements IE
return Gossiper.instance.getCurrentGenerationNumber(FBUtilities.getBroadcastAddress());
}
- public void forceKeyspaceCleanup(String keyspaceName, String... columnFamilies) throws IOException, ExecutionException, InterruptedException
+ public CompactionManager.AllSSTableOpStatus forceKeyspaceCleanup(String keyspaceName, String... columnFamilies) throws IOException, ExecutionException, InterruptedException
{
if (keyspaceName.equals(Keyspace.SYSTEM_KS))
throw new RuntimeException("Cleanup of the system keyspace is neither necessary nor wise");
+ CompactionManager.AllSSTableOpStatus status = CompactionManager.AllSSTableOpStatus.SUCCESSFUL;
for (ColumnFamilyStore cfStore : getValidColumnFamilies(false, false, keyspaceName, columnFamilies))
{
- cfStore.forceCleanup();
+ CompactionManager.AllSSTableOpStatus oneStatus = cfStore.forceCleanup();
+ if (oneStatus != CompactionManager.AllSSTableOpStatus.SUCCESSFUL)
+ status = oneStatus;
}
+ return status;
}
- public void scrub(boolean disableSnapshot, boolean skipCorrupted, String keyspaceName, String... columnFamilies) throws IOException, ExecutionException, InterruptedException
+ public CompactionManager.AllSSTableOpStatus scrub(boolean disableSnapshot, boolean skipCorrupted, String keyspaceName, String... columnFamilies) throws IOException, ExecutionException, InterruptedException
{
+ CompactionManager.AllSSTableOpStatus status = CompactionManager.AllSSTableOpStatus.SUCCESSFUL;
for (ColumnFamilyStore cfStore : getValidColumnFamilies(false, false, keyspaceName, columnFamilies))
- cfStore.scrub(disableSnapshot, skipCorrupted);
+ {
+ CompactionManager.AllSSTableOpStatus oneStatus = cfStore.scrub(disableSnapshot, skipCorrupted);
+ if (oneStatus != CompactionManager.AllSSTableOpStatus.SUCCESSFUL)
+ status = oneStatus;
+ }
+ return status;
}
- public void upgradeSSTables(String keyspaceName, boolean excludeCurrentVersion, String... columnFamilies) throws IOException, ExecutionException, InterruptedException
+ public CompactionManager.AllSSTableOpStatus upgradeSSTables(String keyspaceName, boolean excludeCurrentVersion, String... columnFamilies) throws IOException, ExecutionException, InterruptedException
{
+ CompactionManager.AllSSTableOpStatus status = CompactionManager.AllSSTableOpStatus.SUCCESSFUL;
for (ColumnFamilyStore cfStore : getValidColumnFamilies(true, true, keyspaceName, columnFamilies))
- cfStore.sstablesRewrite(excludeCurrentVersion);
+ {
+ CompactionManager.AllSSTableOpStatus oneStatus = cfStore.sstablesRewrite(excludeCurrentVersion);
+ if (oneStatus != CompactionManager.AllSSTableOpStatus.SUCCESSFUL)
+ status = oneStatus;
+ }
+ return status;
}
public void forceKeyspaceCompaction(String keyspaceName, String... columnFamilies) throws IOException, ExecutionException, InterruptedException
http://git-wip-us.apache.org/repos/asf/cassandra/blob/17945ab0/src/java/org/apache/cassandra/service/StorageServiceMBean.java
----------------------------------------------------------------------
diff --git a/src/java/org/apache/cassandra/service/StorageServiceMBean.java b/src/java/org/apache/cassandra/service/StorageServiceMBean.java
index a036ba7..efe7b06 100644
--- a/src/java/org/apache/cassandra/service/StorageServiceMBean.java
+++ b/src/java/org/apache/cassandra/service/StorageServiceMBean.java
@@ -30,6 +30,8 @@ import java.util.concurrent.TimeoutException;
import javax.management.NotificationEmitter;
import javax.management.openmbean.TabularData;
+import org.apache.cassandra.db.compaction.CompactionManager;
+
public interface StorageServiceMBean extends NotificationEmitter
{
/**
@@ -236,7 +238,7 @@ public interface StorageServiceMBean extends NotificationEmitter
/**
* Trigger a cleanup of keys on a single keyspace
*/
- public void forceKeyspaceCleanup(String keyspaceName, String... columnFamilies) throws IOException, ExecutionException, InterruptedException;
+ public CompactionManager.AllSSTableOpStatus forceKeyspaceCleanup(String keyspaceName, String... columnFamilies) throws IOException, ExecutionException, InterruptedException;
/**
* Scrub (deserialize + reserialize at the latest version, skipping bad rows if any) the given keyspace.
@@ -244,13 +246,13 @@ public interface StorageServiceMBean extends NotificationEmitter
*
* Scrubbed CFs will be snapshotted first, if disableSnapshot is false
*/
- public void scrub(boolean disableSnapshot, boolean skipCorrupted, String keyspaceName, String... columnFamilies) throws IOException, ExecutionException, InterruptedException;
+ public CompactionManager.AllSSTableOpStatus scrub(boolean disableSnapshot, boolean skipCorrupted, String keyspaceName, String... columnFamilies) throws IOException, ExecutionException, InterruptedException;
/**
* Rewrite all sstables to the latest version.
* Unlike scrub, it doesn't skip bad rows and do not snapshot sstables first.
*/
- public void upgradeSSTables(String keyspaceName, boolean excludeCurrentVersion, String... columnFamilies) throws IOException, ExecutionException, InterruptedException;
+ public CompactionManager.AllSSTableOpStatus upgradeSSTables(String keyspaceName, boolean excludeCurrentVersion, String... columnFamilies) throws IOException, ExecutionException, InterruptedException;
/**
* Flush all memtables for the given column families, or all columnfamilies for the given keyspace
http://git-wip-us.apache.org/repos/asf/cassandra/blob/17945ab0/src/java/org/apache/cassandra/tools/NodeProbe.java
----------------------------------------------------------------------
diff --git a/src/java/org/apache/cassandra/tools/NodeProbe.java b/src/java/org/apache/cassandra/tools/NodeProbe.java
index 477c333..5cca56e 100644
--- a/src/java/org/apache/cassandra/tools/NodeProbe.java
+++ b/src/java/org/apache/cassandra/tools/NodeProbe.java
@@ -186,21 +186,55 @@ public class NodeProbe implements AutoCloseable
jmxc.close();
}
- public void forceKeyspaceCleanup(String keyspaceName, String... columnFamilies) throws IOException, ExecutionException, InterruptedException
+ public CompactionManager.AllSSTableOpStatus forceKeyspaceCleanup(String keyspaceName, String... columnFamilies) throws IOException, ExecutionException, InterruptedException
{
- ssProxy.forceKeyspaceCleanup(keyspaceName, columnFamilies);
+ return ssProxy.forceKeyspaceCleanup(keyspaceName, columnFamilies);
}
- public void scrub(boolean disableSnapshot, boolean skipCorrupted, String keyspaceName, String... columnFamilies) throws IOException, ExecutionException, InterruptedException
+ public CompactionManager.AllSSTableOpStatus scrub(boolean disableSnapshot, boolean skipCorrupted, String keyspaceName, String... columnFamilies) throws IOException, ExecutionException, InterruptedException
{
- ssProxy.scrub(disableSnapshot, skipCorrupted, keyspaceName, columnFamilies);
+ return ssProxy.scrub(disableSnapshot, skipCorrupted, keyspaceName, columnFamilies);
}
- public void upgradeSSTables(String keyspaceName, boolean excludeCurrentVersion, String... columnFamilies) throws IOException, ExecutionException, InterruptedException
+ public CompactionManager.AllSSTableOpStatus upgradeSSTables(String keyspaceName, boolean excludeCurrentVersion, String... columnFamilies) throws IOException, ExecutionException, InterruptedException
{
- ssProxy.upgradeSSTables(keyspaceName, excludeCurrentVersion, columnFamilies);
+ return ssProxy.upgradeSSTables(keyspaceName, excludeCurrentVersion, columnFamilies);
}
+ public void forceKeyspaceCleanup(PrintStream out, String keyspaceName, String... columnFamilies) throws IOException, ExecutionException, InterruptedException
+ {
+ switch (forceKeyspaceCleanup(keyspaceName, columnFamilies))
+ {
+ case ABORTED:
+ failed = true;
+ out.println("Aborted cleaning up atleast one column family in keyspace "+keyspaceName+", check server logs for more information.");
+ break;
+ }
+ }
+
+ public void scrub(PrintStream out, boolean disableSnapshot, boolean skipCorrupted, String keyspaceName, String... columnFamilies) throws IOException, ExecutionException, InterruptedException
+ {
+ switch (scrub(disableSnapshot, skipCorrupted, keyspaceName, columnFamilies))
+ {
+ case ABORTED:
+ failed = true;
+ out.println("Aborted scrubbing atleast one column family in keyspace "+keyspaceName+", check server logs for more information.");
+ break;
+ }
+ }
+
+ public void upgradeSSTables(PrintStream out, String keyspaceName, boolean excludeCurrentVersion, String... columnFamilies) throws IOException, ExecutionException, InterruptedException
+ {
+ switch (upgradeSSTables(keyspaceName, excludeCurrentVersion, columnFamilies))
+ {
+ case ABORTED:
+ failed = true;
+ out.println("Aborted upgrading sstables for atleast one column family in keyspace "+keyspaceName+", check server logs for more information.");
+ break;
+ }
+ }
+
+
public void forceKeyspaceCompaction(String keyspaceName, String... columnFamilies) throws IOException, ExecutionException, InterruptedException
{
ssProxy.forceKeyspaceCompaction(keyspaceName, columnFamilies);
http://git-wip-us.apache.org/repos/asf/cassandra/blob/17945ab0/src/java/org/apache/cassandra/tools/NodeTool.java
----------------------------------------------------------------------
diff --git a/src/java/org/apache/cassandra/tools/NodeTool.java b/src/java/org/apache/cassandra/tools/NodeTool.java
index f387134..0bfac94 100644
--- a/src/java/org/apache/cassandra/tools/NodeTool.java
+++ b/src/java/org/apache/cassandra/tools/NodeTool.java
@@ -904,7 +904,7 @@ public class NodeTool
try
{
- probe.forceKeyspaceCleanup(keyspace, cfnames);
+ probe.forceKeyspaceCleanup(System.out, keyspace, cfnames);
} catch (Exception e)
{
throw new RuntimeException("Error occurred during cleanup", e);
@@ -1025,7 +1025,7 @@ public class NodeTool
{
try
{
- probe.scrub(disableSnapshot, skipCorrupted, keyspace, cfnames);
+ probe.scrub(System.out, disableSnapshot, skipCorrupted, keyspace, cfnames);
} catch (Exception e)
{
throw new RuntimeException("Error occurred during flushing", e);
@@ -1103,7 +1103,7 @@ public class NodeTool
{
try
{
- probe.upgradeSSTables(keyspace, !includeAll, cfnames);
+ probe.upgradeSSTables(System.out, keyspace, !includeAll, cfnames);
} catch (Exception e)
{
throw new RuntimeException("Error occurred during enabling auto-compaction", e);
[2/2] git commit: Merge branch 'cassandra-2.1' into trunk
Posted by ma...@apache.org.
Merge branch 'cassandra-2.1' into trunk
Project: http://git-wip-us.apache.org/repos/asf/cassandra/repo
Commit: http://git-wip-us.apache.org/repos/asf/cassandra/commit/5b88a0f6
Tree: http://git-wip-us.apache.org/repos/asf/cassandra/tree/5b88a0f6
Diff: http://git-wip-us.apache.org/repos/asf/cassandra/diff/5b88a0f6
Branch: refs/heads/trunk
Commit: 5b88a0f6281668bad154e5c91accdab34d10dddb
Parents: 6e66cf5 17945ab
Author: Marcus Eriksson <ma...@apache.org>
Authored: Tue Mar 18 09:47:50 2014 +0100
Committer: Marcus Eriksson <ma...@apache.org>
Committed: Tue Mar 18 09:47:50 2014 +0100
----------------------------------------------------------------------
CHANGES.txt | 1 +
.../apache/cassandra/db/ColumnFamilyStore.java | 17 +--
.../db/compaction/CompactionManager.java | 105 ++++++++++++++-----
.../SizeTieredCompactionStrategy.java | 2 +-
.../cassandra/service/StorageService.java | 30 ++++--
.../cassandra/service/StorageServiceMBean.java | 8 +-
.../org/apache/cassandra/tools/NodeProbe.java | 46 ++++++--
.../org/apache/cassandra/tools/NodeTool.java | 6 +-
8 files changed, 161 insertions(+), 54 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/cassandra/blob/5b88a0f6/CHANGES.txt
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/cassandra/blob/5b88a0f6/src/java/org/apache/cassandra/db/compaction/SizeTieredCompactionStrategy.java
----------------------------------------------------------------------