From 6d13ce69b68a0f88fc2b13b2302c70294e078223 Mon Sep 17 00:00:00 2001 From: Jonathan Ellis Date: Mon, 8 Oct 2012 22:43:41 -0500 Subject: [PATCH] LCS will merge up to 32 L0 sstables as intended patch by jbellis; reviewed by yukim for CASSANDRA-4778 --- CHANGES.txt | 1 + .../db/compaction/LeveledManifest.java | 20 +++++++------------ 2 files changed, 8 insertions(+), 13 deletions(-) diff --git a/CHANGES.txt b/CHANGES.txt index c680f03597..a40420e543 100644 --- a/CHANGES.txt +++ b/CHANGES.txt @@ -1,4 +1,5 @@ 1.1.6 + * LCS will merge up to 32 L0 sstables as intended (CASSANDRA-4778) * NTS will default unconfigured DC replicas to zero (CASSANDRA-4675) * use default consistency level in counter validation if none is explicitly provide (CASSANDRA-4700) diff --git a/src/java/org/apache/cassandra/db/compaction/LeveledManifest.java b/src/java/org/apache/cassandra/db/compaction/LeveledManifest.java index dcff79a9c7..fcbd5cb4a2 100644 --- a/src/java/org/apache/cassandra/db/compaction/LeveledManifest.java +++ b/src/java/org/apache/cassandra/db/compaction/LeveledManifest.java @@ -59,7 +59,7 @@ public class LeveledManifest * uses a pessimistic estimate of how many keys overlap (none), so we risk wasting memory * or even OOMing when compacting highly overlapping sstables */ - static int MAX_COMPACTING_L0 = 32; + private static final int MAX_COMPACTING_L0 = 32; private final ColumnFamilyStore cfs; private final List[] generations; @@ -469,22 +469,16 @@ public class LeveledManifest List ageSortedCandidates = new ArrayList(candidates); Collections.sort(ageSortedCandidates, SSTable.maxTimestampComparator); candidates = new HashSet(ageSortedCandidates.subList(0, MAX_COMPACTING_L0)); - if (SSTable.getTotalBytes(candidates) > maxSSTableSizeInBytes) - { - // add sstables from L1 that overlap candidates - candidates.addAll(overlapping(candidates, generations[1])); - } - return candidates; - } - - if (SSTable.getTotalBytes(candidates) > maxSSTableSizeInBytes) - { - // add sstables from L1 that overlap candidates - candidates.addAll(overlapping(candidates, generations[1])); break; } } + if (SSTable.getTotalBytes(candidates) > maxSSTableSizeInBytes) + { + // add sstables from L1 that overlap candidates + candidates.addAll(overlapping(candidates, generations[1])); + } + return candidates; }