diff --git a/CHANGES.txt b/CHANGES.txt index 6b93631c78..94bea7b989 100644 --- a/CHANGES.txt +++ b/CHANGES.txt @@ -8,6 +8,7 @@ * Fix AssertionError when using empty clustering columns and static columns (CASSANDRA-7455) * Add inter_dc_stream_throughput_outbound_megabits_per_sec (CASSANDRA-6596) + * Add option to disable STCS in L0 (CASSANDRA-6621) Merged from 1.2: diff --git a/NEWS.txt b/NEWS.txt index 0fbc20f2ce..ea085ae71b 100644 --- a/NEWS.txt +++ b/NEWS.txt @@ -13,6 +13,15 @@ restore snapshots created with the previous major version using the 'sstableloader' tool. You can upgrade the file format of your snapshots using the provided 'sstableupgrade' tool. +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 badd975e16..bf0307b6c6 100644 --- a/src/java/org/apache/cassandra/config/DatabaseDescriptor.java +++ b/src/java/org/apache/cassandra/config/DatabaseDescriptor.java @@ -904,6 +904,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 1118ddc00c..70e5cae88d 100644 --- a/src/java/org/apache/cassandra/db/compaction/LeveledManifest.java +++ b/src/java/org/apache/cassandra/db/compaction/LeveledManifest.java @@ -34,6 +34,7 @@ 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; @@ -267,7 +268,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 (generations[0].size() > MAX_COMPACTING_L0) + if (!DatabaseDescriptor.getDisableSTCSInL0() && generations[0].size() > MAX_COMPACTING_L0) { Iterable candidates = cfs.getDataTracker().getUncompactingSSTables(generations[0]); List> pairs = SizeTieredCompactionStrategy.createSSTableAndLengthPairs(AbstractCompactionStrategy.filterSuspectSSTables(candidates));