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;
         }
 

Reply via email to