diff --git a/CHANGES.txt b/CHANGES.txt index 22c4123a29..75a1786909 100644 --- a/CHANGES.txt +++ b/CHANGES.txt @@ -15,6 +15,7 @@ Merged from 2.0: * Make sure high level sstables get compacted (CASSANDRA-7414) * Fix AssertionError when using empty clustering columns and static columns (CASSANDRA-7455) + * Add option to disable STCS in L0 (CASSANDRA-6621) * Upgrade to snappy-java 1.0.5.2 (CASSANDRA-7476) diff --git a/NEWS.txt b/NEWS.txt index 2cbd96340f..c35bc11dc9 100644 --- a/NEWS.txt +++ b/NEWS.txt @@ -71,6 +71,15 @@ Upgrading - support for supercolumns has been removed from json2sstable +2.0.10 +==== +New features +------------ + - If you are using Leveled Compaction, you can now disable doing size-tiered + compaction in L0 by starting Cassandra with -Dcassandra.disable_stcs_in_l0 + (see CASSANDRA-6621 for details). + + 2.0.9 ===== diff --git a/src/java/org/apache/cassandra/config/DatabaseDescriptor.java b/src/java/org/apache/cassandra/config/DatabaseDescriptor.java index e8ce9df13e..5a2f26f004 100644 --- a/src/java/org/apache/cassandra/config/DatabaseDescriptor.java +++ b/src/java/org/apache/cassandra/config/DatabaseDescriptor.java @@ -984,6 +984,11 @@ public class DatabaseDescriptor conf.compaction_throughput_mb_per_sec = value; } + public static boolean getDisableSTCSInL0() + { + return Boolean.getBoolean("cassandra.disable_stcs_in_l0"); + } + public static int getStreamThroughputOutboundMegabitsPerSec() { return conf.stream_throughput_outbound_megabits_per_sec; diff --git a/src/java/org/apache/cassandra/db/compaction/LeveledManifest.java b/src/java/org/apache/cassandra/db/compaction/LeveledManifest.java index 47eb683325..6f2098c814 100644 --- a/src/java/org/apache/cassandra/db/compaction/LeveledManifest.java +++ b/src/java/org/apache/cassandra/db/compaction/LeveledManifest.java @@ -31,6 +31,9 @@ import com.google.common.primitives.Ints; import org.slf4j.Logger; import org.slf4j.LoggerFactory; +import org.apache.cassandra.config.CFMetaData; +import org.apache.cassandra.config.DatabaseDescriptor; +import org.apache.cassandra.config.Schema; import org.apache.cassandra.db.ColumnFamilyStore; import org.apache.cassandra.db.RowPosition; import org.apache.cassandra.dht.Bounds; @@ -370,7 +373,7 @@ public class LeveledManifest if (score > 1.001) { // before proceeding with a higher level, let's see if L0 is far enough behind to warrant STCS - if (getLevel(0).size() > MAX_COMPACTING_L0) + if (!DatabaseDescriptor.getDisableSTCSInL0() && getLevel(0).size() > MAX_COMPACTING_L0) { List mostInteresting = getSSTablesForSTCS(getLevel(0)); if (!mostInteresting.isEmpty())