You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cassandra.apache.org by be...@apache.org on 2015/07/02 20:04:42 UTC

[2/4] cassandra git commit: Ensure StreamSession uses canonical sstable instances

Ensure StreamSession uses canonical sstable instances

patch by benedict; reviewed by yukim for CASSANDRA-9700


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

Branch: refs/heads/cassandra-2.2
Commit: 98ac45a8a43566311bb760f1275f2a7b2bbe0766
Parents: 7473877
Author: Benedict Elliott Smith <be...@apache.org>
Authored: Thu Jul 2 18:05:09 2015 +0100
Committer: Benedict Elliott Smith <be...@apache.org>
Committed: Thu Jul 2 18:05:09 2015 +0100

----------------------------------------------------------------------
 .../cassandra/streaming/StreamSession.java      | 21 +++++++++++---------
 1 file changed, 12 insertions(+), 9 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/cassandra/blob/98ac45a8/src/java/org/apache/cassandra/streaming/StreamSession.java
----------------------------------------------------------------------
diff --git a/src/java/org/apache/cassandra/streaming/StreamSession.java b/src/java/org/apache/cassandra/streaming/StreamSession.java
index a316d12..1edfedb 100644
--- a/src/java/org/apache/cassandra/streaming/StreamSession.java
+++ b/src/java/org/apache/cassandra/streaming/StreamSession.java
@@ -308,18 +308,21 @@ public class StreamSession implements IEndpointStateChangeSubscriber
                 {
                     public List<SSTableReader> apply(DataTracker.View view)
                     {
-                        List<SSTableReader> filteredSSTables = ColumnFamilyStore.CANONICAL_SSTABLES.apply(view);
+                        Map<SSTableReader, SSTableReader> permittedInstances = new HashMap<>();
+                        for (SSTableReader reader : ColumnFamilyStore.CANONICAL_SSTABLES.apply(view))
+                            permittedInstances.put(reader, reader);
+
                         Set<SSTableReader> sstables = Sets.newHashSet();
-                        if (filteredSSTables != null)
+                        for (AbstractBounds<RowPosition> rowBounds : rowBoundsList)
                         {
-                            for (AbstractBounds<RowPosition> rowBounds : rowBoundsList)
+                            // sstableInBounds may contain early opened sstables
+                            for (SSTableReader sstable : view.sstablesInBounds(rowBounds))
                             {
-                                // sstableInBounds may contain early opened sstables
-                                for (SSTableReader sstable : view.sstablesInBounds(rowBounds))
-                                {
-                                    if (filteredSSTables.contains(sstable) && (!isIncremental || !sstable.isRepaired()))
-                                        sstables.add(sstable);
-                                }
+                                if (isIncremental && sstable.isRepaired())
+                                    continue;
+                                sstable = permittedInstances.get(sstable);
+                                if (sstable != null)
+                                    sstables.add(sstable);
                             }
                         }