Avoid potential overlap in LCS with single-partition sstables
Patch by marcuse; reviewed by yukim for CASSANDRA-9322
diff --git a/CHANGES.txt b/CHANGES.txt
index 8473777..1540d28 100644
--- a/CHANGES.txt
+++ b/CHANGES.txt
@@ -1,4 +1,5 @@
2.0.15:
+ * Avoid potential overlap in LCS with single-partition sstables (CASSANDRA-9322)
* Log warning message when a table is queried before the schema has fully
propagated (CASSANDRA-9136)
* Overload SecondaryIndex#indexes to accept the column definition (CASSANDRA-9314)
diff --git a/src/java/org/apache/cassandra/db/compaction/LeveledManifest.java b/src/java/org/apache/cassandra/db/compaction/LeveledManifest.java
index 867b5ce..81c65e4 100644
--- a/src/java/org/apache/cassandra/db/compaction/LeveledManifest.java
+++ b/src/java/org/apache/cassandra/db/compaction/LeveledManifest.java
@@ -353,6 +353,8 @@
if (max == null || candidate.last.compareTo(max) > 0)
max = candidate.last;
}
+ if (min == null || max == null || min.equals(max)) // single partition sstables - we cannot include a high level sstable.
+ return candidates;
Set<SSTableReader> compacting = cfs.getDataTracker().getCompacting();
Range<RowPosition> boundaries = new Range<>(min, max);
for (SSTableReader sstable : getLevel(i))