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 2014/02/19 17:01:33 UTC

[09/12] git commit: Use correct partitioner in AbstractViewSSTableFinder patch by jbellis; reviewed by yukim for CASSANDRA-6734

Use correct partitioner in AbstractViewSSTableFinder
patch by jbellis; reviewed by yukim for CASSANDRA-6734


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

Branch: refs/heads/trunk
Commit: 84103bbe2894706d224dc5975ca6bdaaa6f7f6c4
Parents: 55d8da4
Author: Jonathan Ellis <jb...@apache.org>
Authored: Wed Feb 19 09:58:28 2014 -0600
Committer: Jonathan Ellis <jb...@apache.org>
Committed: Wed Feb 19 09:58:28 2014 -0600

----------------------------------------------------------------------
 .../apache/cassandra/db/ColumnFamilyStore.java  | 30 +++++++-------------
 .../org/apache/cassandra/db/DataTracker.java    |  7 +++++
 2 files changed, 17 insertions(+), 20 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/cassandra/blob/84103bbe/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 38d87db..f25f934 100644
--- a/src/java/org/apache/cassandra/db/ColumnFamilyStore.java
+++ b/src/java/org/apache/cassandra/db/ColumnFamilyStore.java
@@ -1448,17 +1448,7 @@ public class ColumnFamilyStore implements ColumnFamilyStoreMBean
         return markCurrentViewReferenced().sstables;
     }
 
-    abstract class AbstractViewSSTableFinder
-    {
-        abstract List<SSTableReader> findSSTables(DataTracker.View view);
-        protected List<SSTableReader> sstablesForRowBounds(AbstractBounds<RowPosition> rowBounds, DataTracker.View view)
-        {
-            RowPosition stopInTree = rowBounds.right.isMinimum() ? view.intervalTree.max() : rowBounds.right;
-            return view.intervalTree.search(Interval.<RowPosition, SSTableReader>create(rowBounds.left, stopInTree));
-        }
-    }
-
-    private ViewFragment markReferenced(AbstractViewSSTableFinder finder)
+    private ViewFragment markReferenced(Function<DataTracker.View, List<SSTableReader>> filter)
     {
         List<SSTableReader> sstables;
         DataTracker.View view;
@@ -1473,7 +1463,7 @@ public class ColumnFamilyStore implements ColumnFamilyStoreMBean
                 break;
             }
 
-            sstables = finder.findSSTables(view);
+            sstables = filter.apply(view);
             if (SSTableReader.acquireReferences(sstables))
                 break;
             // retry w/ new view
@@ -1489,9 +1479,9 @@ public class ColumnFamilyStore implements ColumnFamilyStoreMBean
     public ViewFragment markReferenced(final DecoratedKey key)
     {
         assert !key.isMinimum();
-        return markReferenced(new AbstractViewSSTableFinder()
+        return markReferenced(new Function<DataTracker.View, List<SSTableReader>>()
         {
-            List<SSTableReader> findSSTables(DataTracker.View view)
+            public List<SSTableReader> apply(DataTracker.View view)
             {
                 return compactionStrategy.filterSSTablesForReads(view.intervalTree.search(key));
             }
@@ -1504,11 +1494,11 @@ public class ColumnFamilyStore implements ColumnFamilyStoreMBean
      */
     public ViewFragment markReferenced(final AbstractBounds<RowPosition> rowBounds)
     {
-        return markReferenced(new AbstractViewSSTableFinder()
+        return markReferenced(new Function<DataTracker.View, List<SSTableReader>>()
         {
-            List<SSTableReader> findSSTables(DataTracker.View view)
+            public List<SSTableReader> apply(DataTracker.View view)
             {
-                return compactionStrategy.filterSSTablesForReads(sstablesForRowBounds(rowBounds, view));
+                return compactionStrategy.filterSSTablesForReads(view.sstablesInBounds(rowBounds));
             }
         });
     }
@@ -1519,13 +1509,13 @@ public class ColumnFamilyStore implements ColumnFamilyStoreMBean
      */
     public ViewFragment markReferenced(final Collection<AbstractBounds<RowPosition>> rowBoundsCollection)
     {
-        return markReferenced(new AbstractViewSSTableFinder()
+        return markReferenced(new Function<DataTracker.View, List<SSTableReader>>()
         {
-            List<SSTableReader> findSSTables(DataTracker.View view)
+            public List<SSTableReader> apply(DataTracker.View view)
             {
                 Set<SSTableReader> sstables = Sets.newHashSet();
                 for (AbstractBounds<RowPosition> rowBounds : rowBoundsCollection)
-                    sstables.addAll(sstablesForRowBounds(rowBounds, view));
+                    sstables.addAll(view.sstablesInBounds(rowBounds));
 
                 return ImmutableList.copyOf(sstables);
             }

http://git-wip-us.apache.org/repos/asf/cassandra/blob/84103bbe/src/java/org/apache/cassandra/db/DataTracker.java
----------------------------------------------------------------------
diff --git a/src/java/org/apache/cassandra/db/DataTracker.java b/src/java/org/apache/cassandra/db/DataTracker.java
index 8886c39..c1ae00f 100644
--- a/src/java/org/apache/cassandra/db/DataTracker.java
+++ b/src/java/org/apache/cassandra/db/DataTracker.java
@@ -29,6 +29,7 @@ import org.slf4j.LoggerFactory;
 
 import org.apache.cassandra.config.DatabaseDescriptor;
 import org.apache.cassandra.db.compaction.OperationType;
+import org.apache.cassandra.dht.AbstractBounds;
 import org.apache.cassandra.io.sstable.Descriptor;
 import org.apache.cassandra.io.sstable.SSTableReader;
 import org.apache.cassandra.io.util.FileUtils;
@@ -594,5 +595,11 @@ public class DataTracker
         {
             return String.format("View(pending_count=%d, sstables=%s, compacting=%s)", memtablesPendingFlush.size(), sstables, compacting);
         }
+
+        public List<SSTableReader> sstablesInBounds(AbstractBounds<RowPosition> rowBounds)
+        {
+            RowPosition stopInTree = rowBounds.right.isMinimum(memtable.cfs.partitioner) ? intervalTree.max() : rowBounds.right;
+            return intervalTree.search(Interval.<RowPosition, SSTableReader>create(rowBounds.left, stopInTree));
+        }
     }
 }