You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cassandra.apache.org by jb...@apache.org on 2012/07/03 19:01:35 UTC

[3/5] git commit: avoid using global partitioner to estimate ranges in index sstables patch by jbellis; reviewed by yukim for CASSANDRA-4403

avoid using global partitioner to estimate ranges in index sstables
patch by jbellis; reviewed by yukim for CASSANDRA-4403


Project: http://git-wip-us.apache.org/repos/asf/cassandra/repo
Commit: http://git-wip-us.apache.org/repos/asf/cassandra/commit/be969899
Tree: http://git-wip-us.apache.org/repos/asf/cassandra/tree/be969899
Diff: http://git-wip-us.apache.org/repos/asf/cassandra/diff/be969899

Branch: refs/heads/trunk
Commit: be969899c954751f861b3861b3b709be56270ccd
Parents: 67dec69
Author: Jonathan Ellis <jb...@apache.org>
Authored: Mon Jul 2 17:08:36 2012 -0500
Committer: Jonathan Ellis <jb...@apache.org>
Committed: Tue Jul 3 12:01:10 2012 -0500

----------------------------------------------------------------------
 CHANGES.txt                                        |    2 +
 .../org/apache/cassandra/db/ColumnFamilyStore.java |   28 +++++++--------
 2 files changed, 15 insertions(+), 15 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/cassandra/blob/be969899/CHANGES.txt
----------------------------------------------------------------------
diff --git a/CHANGES.txt b/CHANGES.txt
index 72991f1..7cd12a5 100644
--- a/CHANGES.txt
+++ b/CHANGES.txt
@@ -1,4 +1,6 @@
 1.1.3
+ * avoid using global partitioner to estimate ranges in index sstables
+   (CASSANDRA-4403)
  * restore pre-CASSANDRA-3862 approach to removing expired tombstones
    from row cache during compaction (CASSANDRA-4364)
  * (stress) support for CQL prepared statements (CASSANDRA-3633)

http://git-wip-us.apache.org/repos/asf/cassandra/blob/be969899/src/java/org/apache/cassandra/db/ColumnFamilyStore.java
----------------------------------------------------------------------
diff --git a/src/java/org/apache/cassandra/db/ColumnFamilyStore.java b/src/java/org/apache/cassandra/db/ColumnFamilyStore.java
index 93f022d..0b66020 100644
--- a/src/java/org/apache/cassandra/db/ColumnFamilyStore.java
+++ b/src/java/org/apache/cassandra/db/ColumnFamilyStore.java
@@ -904,9 +904,10 @@ public class ColumnFamilyStore implements ColumnFamilyStoreMBean
     /**
      * Calculate expected file size of SSTable after compaction.
      *
-     * If operation type is {@code CLEANUP}, then we calculate expected file size
-     * with checking token range to be eliminated.
-     * Other than that, we just add up all the files' size, which is the worst case file
+     * If operation type is {@code CLEANUP} and we're not dealing with an index sstable,
+     * then we calculate expected file size with checking token range to be eliminated.
+     *
+     * Otherwise, we just add up all the files' size, which is the worst case file
      * size for compaction of all the list of files given.
      *
      * @param sstables SSTables to calculate expected compacted file size
@@ -915,21 +916,18 @@ public class ColumnFamilyStore implements ColumnFamilyStoreMBean
      */
     public long getExpectedCompactedFileSize(Iterable<SSTableReader> sstables, OperationType operation)
     {
-        long expectedFileSize = 0;
-        if (operation == OperationType.CLEANUP)
+        if (operation != OperationType.CLEANUP || isIndex())
         {
-            Collection<Range<Token>> ranges = StorageService.instance.getLocalRanges(table.name);
-            for (SSTableReader sstable : sstables)
-            {
-                List<Pair<Long, Long>> positions = sstable.getPositionsForRanges(ranges);
-                for (Pair<Long, Long> position : positions)
-                    expectedFileSize += position.right - position.left;
-            }
+            return SSTable.getTotalBytes(sstables);
         }
-        else
+
+        long expectedFileSize = 0;
+        Collection<Range<Token>> ranges = StorageService.instance.getLocalRanges(table.name);
+        for (SSTableReader sstable : sstables)
         {
-            for (SSTableReader sstable : sstables)
-                expectedFileSize += sstable.onDiskLength();
+            List<Pair<Long, Long>> positions = sstable.getPositionsForRanges(ranges);
+            for (Pair<Long, Long> position : positions)
+                expectedFileSize += position.right - position.left;
         }
         return expectedFileSize;
     }