LCS will merge up to 32 L0 sstables as intended patch by jbellis; reviewed by yukim for CASSANDRA-4778
Project: http://git-wip-us.apache.org/repos/asf/cassandra/repo Commit: http://git-wip-us.apache.org/repos/asf/cassandra/commit/6d13ce69 Tree: http://git-wip-us.apache.org/repos/asf/cassandra/tree/6d13ce69 Diff: http://git-wip-us.apache.org/repos/asf/cassandra/diff/6d13ce69 Branch: refs/heads/trunk Commit: 6d13ce69b68a0f88fc2b13b2302c70294e078223 Parents: 5b5b20a Author: Jonathan Ellis <[email protected]> Authored: Mon Oct 8 22:43:41 2012 -0500 Committer: Jonathan Ellis <[email protected]> Committed: Mon Oct 8 22:43:41 2012 -0500 ---------------------------------------------------------------------- CHANGES.txt | 1 + .../cassandra/db/compaction/LeveledManifest.java | 20 +++++--------- 2 files changed, 8 insertions(+), 13 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/cassandra/blob/6d13ce69/CHANGES.txt ---------------------------------------------------------------------- diff --git a/CHANGES.txt b/CHANGES.txt index c680f03..a40420e 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) http://git-wip-us.apache.org/repos/asf/cassandra/blob/6d13ce69/src/java/org/apache/cassandra/db/compaction/LeveledManifest.java ---------------------------------------------------------------------- diff --git a/src/java/org/apache/cassandra/db/compaction/LeveledManifest.java b/src/java/org/apache/cassandra/db/compaction/LeveledManifest.java index dcff79a..fcbd5cb 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<SSTableReader>[] generations; @@ -469,22 +469,16 @@ public class LeveledManifest List<SSTableReader> ageSortedCandidates = new ArrayList<SSTableReader>(candidates); Collections.sort(ageSortedCandidates, SSTable.maxTimestampComparator); candidates = new HashSet<SSTableReader>(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; }
