You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cassandra.apache.org by yu...@apache.org on 2015/05/19 16:00:54 UTC
[03/16] cassandra git commit: Add option to not validate atoms during
scrub
Add option to not validate atoms during scrub
patch by Jordan West; reviewed by yukim for CASSANDRA-9406
Project: http://git-wip-us.apache.org/repos/asf/cassandra/repo
Commit: http://git-wip-us.apache.org/repos/asf/cassandra/commit/be9eff57
Tree: http://git-wip-us.apache.org/repos/asf/cassandra/tree/be9eff57
Diff: http://git-wip-us.apache.org/repos/asf/cassandra/diff/be9eff57
Branch: refs/heads/cassandra-2.2
Commit: be9eff573342cd4993eb4fc8ee694dc885e8a8e4
Parents: 37d81b9
Author: Jordan West <jo...@gmail.com>
Authored: Tue May 19 08:26:27 2015 -0500
Committer: Yuki Morishita <yu...@apache.org>
Committed: Tue May 19 08:26:27 2015 -0500
----------------------------------------------------------------------
CHANGES.txt | 1 +
.../apache/cassandra/db/ColumnFamilyStore.java | 4 +--
.../db/compaction/CompactionManager.java | 12 +++----
.../cassandra/db/compaction/Scrubber.java | 12 ++++---
.../cassandra/service/StorageService.java | 7 +++-
.../cassandra/service/StorageServiceMBean.java | 2 ++
.../org/apache/cassandra/tools/NodeCmd.java | 5 ++-
.../org/apache/cassandra/tools/NodeProbe.java | 4 +--
.../cassandra/tools/StandaloneScrubber.java | 6 +++-
.../unit/org/apache/cassandra/db/ScrubTest.java | 37 +++++++++++++-------
10 files changed, 60 insertions(+), 30 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/cassandra/blob/be9eff57/CHANGES.txt
----------------------------------------------------------------------
diff --git a/CHANGES.txt b/CHANGES.txt
index a9d04d6..cf124b4 100644
--- a/CHANGES.txt
+++ b/CHANGES.txt
@@ -3,6 +3,7 @@
* Clone SliceQueryFilter in AbstractReadCommand implementations (CASSANDRA-8940)
* Push correct protocol notification for DROP INDEX (CASSANDRA-9310)
* token-generator - generated tokens too long (CASSANDRA-9300)
+ * Add option not to validate atoms during scrub (CASSANDRA-9406)
2.0.15:
http://git-wip-us.apache.org/repos/asf/cassandra/blob/be9eff57/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 5ea1287..eec4044 100644
--- a/src/java/org/apache/cassandra/db/ColumnFamilyStore.java
+++ b/src/java/org/apache/cassandra/db/ColumnFamilyStore.java
@@ -1122,12 +1122,12 @@ public class ColumnFamilyStore implements ColumnFamilyStoreMBean
CompactionManager.instance.performCleanup(ColumnFamilyStore.this, renewer);
}
- public void scrub(boolean disableSnapshot, boolean skipCorrupted) throws ExecutionException, InterruptedException
+ public void scrub(boolean disableSnapshot, boolean skipCorrupted, boolean checkData) throws ExecutionException, InterruptedException
{
// skip snapshot creation during scrub, SEE JIRA 5891
if(!disableSnapshot)
snapshotWithoutFlush("pre-scrub-" + System.currentTimeMillis());
- CompactionManager.instance.performScrub(ColumnFamilyStore.this, skipCorrupted);
+ CompactionManager.instance.performScrub(ColumnFamilyStore.this, skipCorrupted, checkData);
}
public void sstablesRewrite(boolean excludeCurrentVersion) throws ExecutionException, InterruptedException
http://git-wip-us.apache.org/repos/asf/cassandra/blob/be9eff57/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 0978ae6..207b90d 100644
--- a/src/java/org/apache/cassandra/db/compaction/CompactionManager.java
+++ b/src/java/org/apache/cassandra/db/compaction/CompactionManager.java
@@ -234,13 +234,13 @@ public class CompactionManager implements CompactionManagerMBean
executor.submit(runnable).get();
}
- public void performScrub(ColumnFamilyStore cfStore, final boolean skipCorrupted) throws InterruptedException, ExecutionException
+ public void performScrub(ColumnFamilyStore cfStore, final boolean skipCorrupted, final boolean checkData) throws InterruptedException, ExecutionException
{
performAllSSTableOperation(cfStore, new AllSSTablesOperation()
{
public void perform(ColumnFamilyStore store, Iterable<SSTableReader> sstables) throws IOException
{
- doScrub(store, sstables, skipCorrupted);
+ doScrub(store, sstables, skipCorrupted, checkData);
}
});
}
@@ -432,16 +432,16 @@ public class CompactionManager implements CompactionManagerMBean
*
* @throws IOException
*/
- private void doScrub(ColumnFamilyStore cfs, Iterable<SSTableReader> sstables, boolean skipCorrupted) throws IOException
+ private void doScrub(ColumnFamilyStore cfs, Iterable<SSTableReader> sstables, boolean skipCorrupted, boolean checkData) throws IOException
{
assert !cfs.isIndex();
for (final SSTableReader sstable : sstables)
- scrubOne(cfs, sstable, skipCorrupted);
+ scrubOne(cfs, sstable, skipCorrupted, checkData);
}
- private void scrubOne(ColumnFamilyStore cfs, SSTableReader sstable, boolean skipCorrupted) throws IOException
+ private void scrubOne(ColumnFamilyStore cfs, SSTableReader sstable, boolean skipCorrupted, boolean checkData) throws IOException
{
- Scrubber scrubber = new Scrubber(cfs, sstable, skipCorrupted);
+ Scrubber scrubber = new Scrubber(cfs, sstable, skipCorrupted, checkData);
CompactionInfo.Holder scrubInfo = scrubber.getScrubInfo();
metrics.beginCompaction(scrubInfo);
http://git-wip-us.apache.org/repos/asf/cassandra/blob/be9eff57/src/java/org/apache/cassandra/db/compaction/Scrubber.java
----------------------------------------------------------------------
diff --git a/src/java/org/apache/cassandra/db/compaction/Scrubber.java b/src/java/org/apache/cassandra/db/compaction/Scrubber.java
index f04df27..e5bcd25 100644
--- a/src/java/org/apache/cassandra/db/compaction/Scrubber.java
+++ b/src/java/org/apache/cassandra/db/compaction/Scrubber.java
@@ -37,6 +37,7 @@ public class Scrubber implements Closeable
public final SSTableReader sstable;
public final File destination;
public final boolean skipCorrupted;
+ public final boolean validateColumns;
private final CompactionController controller;
private final boolean isCommutative;
@@ -70,17 +71,18 @@ public class Scrubber implements Closeable
};
private final SortedSet<Row> outOfOrderRows = new TreeSet<>(rowComparator);
- public Scrubber(ColumnFamilyStore cfs, SSTableReader sstable, boolean skipCorrupted) throws IOException
+ public Scrubber(ColumnFamilyStore cfs, SSTableReader sstable, boolean skipCorrupted, boolean checkData) throws IOException
{
- this(cfs, sstable, skipCorrupted, new OutputHandler.LogOutput(), false);
+ this(cfs, sstable, skipCorrupted, checkData, new OutputHandler.LogOutput(), false);
}
- public Scrubber(ColumnFamilyStore cfs, SSTableReader sstable, boolean skipCorrupted, OutputHandler outputHandler, boolean isOffline) throws IOException
+ public Scrubber(ColumnFamilyStore cfs, SSTableReader sstable, boolean skipCorrupted, boolean checkData, OutputHandler outputHandler, boolean isOffline) throws IOException
{
this.cfs = cfs;
this.sstable = sstable;
this.outputHandler = outputHandler;
this.skipCorrupted = skipCorrupted;
+ this.validateColumns = checkData;
List<SSTableReader> toScrub = Collections.singletonList(sstable);
@@ -202,7 +204,7 @@ public class Scrubber implements Closeable
if (dataSize != dataSizeFromIndex)
outputHandler.warn(String.format("Data file row size %d differs from index file row size %d", dataSize, dataSizeFromIndex));
- SSTableIdentityIterator atoms = new SSTableIdentityIterator(sstable, dataFile, key, dataSize, true);
+ SSTableIdentityIterator atoms = new SSTableIdentityIterator(sstable, dataFile, key, dataSize, validateColumns);
if (prevKey != null && prevKey.compareTo(key) > 0)
{
saveOutOfOrderRow(prevKey, key, atoms);
@@ -233,7 +235,7 @@ public class Scrubber implements Closeable
{
dataFile.seek(dataStartFromIndex);
- SSTableIdentityIterator atoms = new SSTableIdentityIterator(sstable, dataFile, key, dataSize, true);
+ SSTableIdentityIterator atoms = new SSTableIdentityIterator(sstable, dataFile, key, dataSize, validateColumns);
if (prevKey != null && prevKey.compareTo(key) > 0)
{
saveOutOfOrderRow(prevKey, key, atoms);
http://git-wip-us.apache.org/repos/asf/cassandra/blob/be9eff57/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 077413f..62b0c75 100644
--- a/src/java/org/apache/cassandra/service/StorageService.java
+++ b/src/java/org/apache/cassandra/service/StorageService.java
@@ -2188,8 +2188,13 @@ public class StorageService extends NotificationBroadcasterSupport implements IE
public void scrub(boolean disableSnapshot, boolean skipCorrupted, String keyspaceName, String... columnFamilies) throws IOException, ExecutionException, InterruptedException
{
+ scrub(disableSnapshot, skipCorrupted, true, keyspaceName, columnFamilies);
+ }
+
+ public void scrub(boolean disableSnapshot, boolean skipCorrupted, boolean checkData, String keyspaceName, String... columnFamilies) throws IOException, ExecutionException, InterruptedException
+ {
for (ColumnFamilyStore cfStore : getValidColumnFamilies(false, false, keyspaceName, columnFamilies))
- cfStore.scrub(disableSnapshot, skipCorrupted);
+ cfStore.scrub(disableSnapshot, skipCorrupted, checkData);
}
public void upgradeSSTables(String keyspaceName, boolean excludeCurrentVersion, String... columnFamilies) throws IOException, ExecutionException, InterruptedException
http://git-wip-us.apache.org/repos/asf/cassandra/blob/be9eff57/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 10d17fd..57780a3 100644
--- a/src/java/org/apache/cassandra/service/StorageServiceMBean.java
+++ b/src/java/org/apache/cassandra/service/StorageServiceMBean.java
@@ -231,7 +231,9 @@ public interface StorageServiceMBean extends NotificationEmitter
*
* Scrubbed CFs will be snapshotted first, if disableSnapshot is false
*/
+ @Deprecated
public void scrub(boolean disableSnapshot, boolean skipCorrupted, String keyspaceName, String... columnFamilies) throws IOException, ExecutionException, InterruptedException;
+ public void scrub(boolean disableSnapshot, boolean skipCorrupted, boolean checkData, String keyspaceName, String... columnFamilies) throws IOException, ExecutionException, InterruptedException;
/**
* Rewrite all sstables to the latest version.
http://git-wip-us.apache.org/repos/asf/cassandra/blob/be9eff57/src/java/org/apache/cassandra/tools/NodeCmd.java
----------------------------------------------------------------------
diff --git a/src/java/org/apache/cassandra/tools/NodeCmd.java b/src/java/org/apache/cassandra/tools/NodeCmd.java
index bc5410f..b006d69 100644
--- a/src/java/org/apache/cassandra/tools/NodeCmd.java
+++ b/src/java/org/apache/cassandra/tools/NodeCmd.java
@@ -83,6 +83,7 @@ public class NodeCmd
private static final Pair<String, String> CFSTATS_IGNORE_OPT = Pair.create("i", "ignore");
private static final Pair<String, String> RESOLVE_IP = Pair.create("r", "resolve-ip");
private static final Pair<String, String> SCRUB_SKIP_CORRUPTED_OPT = Pair.create("s", "skip-corrupted");
+ private static final Pair<String, String> SCRUB_NO_VALIDATE = Pair.create("nv", "no-validate");
private static final Pair<String, String> COMPACT_OPT = Pair.create("c", "compact");
private static final String DEFAULT_HOST = "127.0.0.1";
@@ -114,6 +115,7 @@ public class NodeCmd
options.addOption(CFSTATS_IGNORE_OPT, false, "ignore the supplied list of keyspace.columnfamiles in statistics");
options.addOption(RESOLVE_IP, false, "show node domain names instead of IPs");
options.addOption(SCRUB_SKIP_CORRUPTED_OPT, false, "when scrubbing counter tables, skip corrupted rows");
+ options.addOption(SCRUB_NO_VALIDATE, false, "when scrubbing do not validate columns using column validator");
options.addOption(COMPACT_OPT, false, "print histograms in a more compact format");
}
@@ -1788,7 +1790,8 @@ public class NodeCmd
case SCRUB :
boolean disableSnapshot = cmd.hasOption(NO_SNAPSHOT.left);
boolean skipCorrupted = cmd.hasOption(SCRUB_SKIP_CORRUPTED_OPT.left);
- try { probe.scrub(disableSnapshot, skipCorrupted, keyspace, columnFamilies); }
+ boolean checkData = !cmd.hasOption(SCRUB_NO_VALIDATE.left);
+ try { probe.scrub(disableSnapshot, skipCorrupted, checkData, keyspace, columnFamilies); }
catch (ExecutionException ee) { err(ee, "Error occurred while scrubbing keyspace " + keyspace); }
break;
case UPGRADESSTABLES :
http://git-wip-us.apache.org/repos/asf/cassandra/blob/be9eff57/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 d66d12d..e8e087f 100644
--- a/src/java/org/apache/cassandra/tools/NodeProbe.java
+++ b/src/java/org/apache/cassandra/tools/NodeProbe.java
@@ -191,9 +191,9 @@ public class NodeProbe
ssProxy.forceKeyspaceCleanup(keyspaceName, columnFamilies);
}
- public void scrub(boolean disableSnapshot, boolean skipCorrupted, String keyspaceName, String... columnFamilies) throws IOException, ExecutionException, InterruptedException
+ public void scrub(boolean disableSnapshot, boolean skipCorrupted, boolean checkData, String keyspaceName, String... columnFamilies) throws IOException, ExecutionException, InterruptedException
{
- ssProxy.scrub(disableSnapshot, skipCorrupted, keyspaceName, columnFamilies);
+ ssProxy.scrub(disableSnapshot, skipCorrupted, checkData, keyspaceName, columnFamilies);
}
public void upgradeSSTables(String keyspaceName, boolean excludeCurrentVersion, String... columnFamilies) throws IOException, ExecutionException, InterruptedException
http://git-wip-us.apache.org/repos/asf/cassandra/blob/be9eff57/src/java/org/apache/cassandra/tools/StandaloneScrubber.java
----------------------------------------------------------------------
diff --git a/src/java/org/apache/cassandra/tools/StandaloneScrubber.java b/src/java/org/apache/cassandra/tools/StandaloneScrubber.java
index 81dfdc3..26768f3 100644
--- a/src/java/org/apache/cassandra/tools/StandaloneScrubber.java
+++ b/src/java/org/apache/cassandra/tools/StandaloneScrubber.java
@@ -50,6 +50,7 @@ public class StandaloneScrubber
private static final String HELP_OPTION = "help";
private static final String MANIFEST_CHECK_OPTION = "manifest-check";
private static final String SKIP_CORRUPTED_OPTION = "skip-corrupted";
+ private static final String NO_VALIDATE_OPTION = "no-validate";
public static void main(String args[])
{
@@ -120,7 +121,7 @@ public class StandaloneScrubber
{
try
{
- Scrubber scrubber = new Scrubber(cfs, sstable, options.skipCorrupted, handler, true);
+ Scrubber scrubber = new Scrubber(cfs, sstable, options.skipCorrupted, !options.noValidate, handler, true);
try
{
scrubber.scrub();
@@ -185,6 +186,7 @@ public class StandaloneScrubber
public boolean verbose;
public boolean manifestCheckOnly;
public boolean skipCorrupted;
+ public boolean noValidate;
private Options(String keyspaceName, String cfName)
{
@@ -224,6 +226,7 @@ public class StandaloneScrubber
opts.verbose = cmd.hasOption(VERBOSE_OPTION);
opts.manifestCheckOnly = cmd.hasOption(MANIFEST_CHECK_OPTION);
opts.skipCorrupted = cmd.hasOption(SKIP_CORRUPTED_OPTION);
+ opts.noValidate = cmd.hasOption(NO_VALIDATE_OPTION);
return opts;
}
@@ -249,6 +252,7 @@ public class StandaloneScrubber
options.addOption("h", HELP_OPTION, "display this help message");
options.addOption("m", MANIFEST_CHECK_OPTION, "only check and repair the leveled manifest, without actually scrubbing the sstables");
options.addOption("s", SKIP_CORRUPTED_OPTION, "skip corrupt rows in counter tables");
+ options.addOption("n", NO_VALIDATE_OPTION, "do not validate columns using column validator");
return options;
}
http://git-wip-us.apache.org/repos/asf/cassandra/blob/be9eff57/test/unit/org/apache/cassandra/db/ScrubTest.java
----------------------------------------------------------------------
diff --git a/test/unit/org/apache/cassandra/db/ScrubTest.java b/test/unit/org/apache/cassandra/db/ScrubTest.java
index 08237a4..94c7e34 100644
--- a/test/unit/org/apache/cassandra/db/ScrubTest.java
+++ b/test/unit/org/apache/cassandra/db/ScrubTest.java
@@ -31,6 +31,9 @@ import java.util.concurrent.ExecutionException;
import org.apache.cassandra.cql3.QueryProcessor;
import org.apache.cassandra.db.compaction.OperationType;
+import org.apache.cassandra.db.marshal.CompositeType;
+import org.apache.cassandra.db.marshal.LongType;
+import org.apache.cassandra.db.marshal.UTF8Type;
import org.apache.cassandra.exceptions.RequestExecutionException;
import org.apache.cassandra.io.compress.CompressionMetadata;
import org.apache.cassandra.utils.UUIDGen;
@@ -89,7 +92,7 @@ public class ScrubTest extends SchemaLoader
rows = cfs.getRangeSlice(Util.range("", ""), null, new IdentityQueryFilter(), 1000);
assertEquals(1, rows.size());
- CompactionManager.instance.performScrub(cfs, false);
+ CompactionManager.instance.performScrub(cfs, false, true);
// check data is still there
rows = cfs.getRangeSlice(Util.range("", ""), null, new IdentityQueryFilter(), 1000);
@@ -120,7 +123,7 @@ public class ScrubTest extends SchemaLoader
overrideWithGarbage(sstable, ByteBufferUtil.bytes("0"), ByteBufferUtil.bytes("1"));
// with skipCorrupted == false, the scrub is expected to fail
- Scrubber scrubber = new Scrubber(cfs, sstable, false);
+ Scrubber scrubber = new Scrubber(cfs, sstable, false, true);
try
{
scrubber.scrub();
@@ -130,7 +133,7 @@ public class ScrubTest extends SchemaLoader
// with skipCorrupted == true, the corrupt row will be skipped
Scrubber.ScrubResult scrubResult;
- scrubber = new Scrubber(cfs, sstable, true);
+ scrubber = new Scrubber(cfs, sstable, true, true);
scrubResult = scrubber.scrubWithResult();
scrubber.close();
cfs.replaceCompactedSSTables(Collections.singletonList(sstable), Collections.singletonList(scrubber.getNewSSTable()), OperationType.SCRUB);
@@ -178,7 +181,7 @@ public class ScrubTest extends SchemaLoader
overrideWithGarbage(sstable, ByteBufferUtil.bytes("0"), ByteBufferUtil.bytes("1"));
// with skipCorrupted == false, the scrub is expected to fail
- Scrubber scrubber = new Scrubber(cfs, sstable, false);
+ Scrubber scrubber = new Scrubber(cfs, sstable, false, true);
try
{
scrubber.scrub();
@@ -187,7 +190,7 @@ public class ScrubTest extends SchemaLoader
catch (IOError err) {}
// with skipCorrupted == true, the corrupt row will be skipped
- scrubber = new Scrubber(cfs, sstable, true);
+ scrubber = new Scrubber(cfs, sstable, true, true);
scrubber.scrub();
scrubber.close();
cfs.replaceCompactedSSTables(Collections.singletonList(sstable), Collections.singletonList(scrubber.getNewSSTable()), OperationType.SCRUB);
@@ -219,7 +222,7 @@ public class ScrubTest extends SchemaLoader
SSTableReader sstable = cfs.getSSTables().iterator().next();
overrideWithGarbage(sstable, 0, 2);
- CompactionManager.instance.performScrub(cfs, false);
+ CompactionManager.instance.performScrub(cfs, false, true);
// check data is still there
rows = cfs.getRangeSlice(Util.range("", ""), null, new IdentityQueryFilter(), 1000);
@@ -240,7 +243,7 @@ public class ScrubTest extends SchemaLoader
rm.applyUnsafe();
cfs.forceBlockingFlush();
- CompactionManager.instance.performScrub(cfs, false);
+ CompactionManager.instance.performScrub(cfs, false, true);
assert cfs.getSSTables().isEmpty();
}
@@ -259,7 +262,7 @@ public class ScrubTest extends SchemaLoader
rows = cfs.getRangeSlice(Util.range("", ""), null, new IdentityQueryFilter(), 1000);
assertEquals(10, rows.size());
- CompactionManager.instance.performScrub(cfs, false);
+ CompactionManager.instance.performScrub(cfs, false, true);
// check data is still there
rows = cfs.getRangeSlice(Util.range("", ""), null, new IdentityQueryFilter(), 1000);
@@ -321,7 +324,7 @@ public class ScrubTest extends SchemaLoader
components.add(Component.TOC);
SSTableReader sstable = SSTableReader.openNoValidation(desc, components, metadata);
- Scrubber scrubber = new Scrubber(cfs, sstable, false);
+ Scrubber scrubber = new Scrubber(cfs, sstable, false, true);
scrubber.scrub();
cfs.loadNewSSTables();
@@ -419,7 +422,17 @@ public class ScrubTest extends SchemaLoader
QueryProcessor.processInternal("INSERT INTO \"Keyspace1\".test_compact_static_columns (a, b, c, d) VALUES (123, c3db07e8-b602-11e3-bc6b-e0b9a54a6d93, true, 'foobar')");
cfs.forceBlockingFlush();
- CompactionManager.instance.performScrub(cfs, false);
+ CompactionManager.instance.performScrub(cfs, false, true);
+
+ QueryProcessor.process("CREATE TABLE \"Keyspace1\".test_scrub_validation (a text primary key, b int)", ConsistencyLevel.ONE);
+ ColumnFamilyStore cfs2 = keyspace.getColumnFamilyStore("test_scrub_validation");
+ RowMutation mutation = new RowMutation("Keyspace1", UTF8Type.instance.decompose("key"));
+ CompositeType ct = (CompositeType) cfs2.getComparator();
+ mutation.add("test_scrub_validation", ct.decompose("b"), LongType.instance.decompose(1L), System.currentTimeMillis());
+ mutation.apply();
+ cfs2.forceBlockingFlush();
+
+ CompactionManager.instance.performScrub(cfs2, false, false);
}
/**
@@ -436,7 +449,7 @@ public class ScrubTest extends SchemaLoader
RowMutation rm = new RowMutation("Keyspace1", ByteBufferUtil.bytes(UUIDGen.getTimeUUID()), cf);
rm.applyUnsafe();
cfs.forceBlockingFlush();
- CompactionManager.instance.performScrub(cfs, false);
+ CompactionManager.instance.performScrub(cfs, false, true);
assertEquals(1, cfs.getSSTables().size());
}
@@ -457,7 +470,7 @@ public class ScrubTest extends SchemaLoader
QueryProcessor.processInternal("INSERT INTO \"Keyspace1\".test_compact_dynamic_columns (a, b, c) VALUES (0, 'b', 'bar')");
QueryProcessor.processInternal("INSERT INTO \"Keyspace1\".test_compact_dynamic_columns (a, b, c) VALUES (0, 'c', 'boo')");
cfs.forceBlockingFlush();
- CompactionManager.instance.performScrub(cfs, true);
+ CompactionManager.instance.performScrub(cfs, true, true);
// Scrub is silent, but it will remove broken records. So reading everything back to make sure nothing to "scrubbed away"
UntypedResultSet rs = QueryProcessor.processInternal("SELECT * FROM \"Keyspace1\".test_compact_dynamic_columns");