You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cassandra.apache.org by ma...@apache.org on 2016/03/02 14:11:11 UTC

[5/9] cassandra git commit: Merge branch 'cassandra-2.2' into cassandra-3.0

Merge branch 'cassandra-2.2' into cassandra-3.0


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

Branch: refs/heads/trunk
Commit: 841a80311c95b05b69e57971deff9aba03c5f5d2
Parents: 6328590 477014b
Author: Marcus Eriksson <ma...@apache.org>
Authored: Wed Mar 2 14:07:36 2016 +0100
Committer: Marcus Eriksson <ma...@apache.org>
Committed: Wed Mar 2 14:07:57 2016 +0100

----------------------------------------------------------------------
 CHANGES.txt                                     |  1 +
 .../db/compaction/CompactionManager.java        | 69 ++++++++++++--------
 2 files changed, 42 insertions(+), 28 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/cassandra/blob/841a8031/CHANGES.txt
----------------------------------------------------------------------
diff --cc CHANGES.txt
index a7b5c8a,a50f256..425cc58
--- a/CHANGES.txt
+++ b/CHANGES.txt
@@@ -1,26 -1,6 +1,27 @@@
 -2.2.6
 +3.0.4
   * Preserve order for preferred SSL cipher suites (CASSANDRA-11164)
 + * MV should only query complex columns included in the view (CASSANDRA-11069)
 + * Failed aggregate creation breaks server permanently (CASSANDRA-11064)
 + * Add sstabledump tool (CASSANDRA-7464)
 + * Introduce backpressure for hints (CASSANDRA-10972)
 + * Fix ClusteringPrefix not being able to read tombstone range boundaries (CASSANDRA-11158)
 + * Prevent logging in sandboxed state (CASSANDRA-11033)
 + * Disallow drop/alter operations of UDTs used by UDAs (CASSANDRA-10721)
 + * Add query time validation method on Index (CASSANDRA-11043)
 + * Avoid potential AssertionError in mixed version cluster (CASSANDRA-11128)
 + * Properly handle hinted handoff after topology changes (CASSANDRA-5902)
 + * AssertionError when listing sstable files on inconsistent disk state (CASSANDRA-11156)
 + * Fix wrong rack counting and invalid conditions check for TokenAllocation
 +   (CASSANDRA-11139)
 + * Avoid creating empty hint files (CASSANDRA-11090)
 + * Fix leak detection strong reference loop using weak reference (CASSANDRA-11120)
 + * Configurie BatchlogManager to stop delayed tasks on shutdown (CASSANDRA-11062)
 + * Hadoop integration is incompatible with Cassandra Driver 3.0.0 (CASSANDRA-11001)
 + * Add dropped_columns to the list of schema table so it gets handled
 +   properly (CASSANDRA-11050)
 + * Fix NPE when using forceRepairRangeAsync without DC (CASSANDRA-11239)
 +Merged from 2.2:
+  * Reference leak with parallel repairs on the same table (CASSANDRA-11215)
   * Range.compareTo() violates the contract of Comparable (CASSANDRA-11216)
   * Avoid NPE when serializing ErrorMessage with null message (CASSANDRA-11167)
   * Replacing an aggregate with a new version doesn't reset INITCOND (CASSANDRA-10840)

http://git-wip-us.apache.org/repos/asf/cassandra/blob/841a8031/src/java/org/apache/cassandra/db/compaction/CompactionManager.java
----------------------------------------------------------------------
diff --cc src/java/org/apache/cassandra/db/compaction/CompactionManager.java
index c269f7f,b015bcd..891f976
--- a/src/java/org/apache/cassandra/db/compaction/CompactionManager.java
+++ b/src/java/org/apache/cassandra/db/compaction/CompactionManager.java
@@@ -1159,6 -1144,45 +1133,45 @@@ public class CompactionManager implemen
          }
      }
  
+     private synchronized Refs<SSTableReader> getSSTablesToValidate(ColumnFamilyStore cfs, Validator validator)
+     {
+         Refs<SSTableReader> sstables;
+ 
+         ActiveRepairService.ParentRepairSession prs = ActiveRepairService.instance.getParentRepairSession(validator.desc.parentSessionId);
+         if (prs == null)
+             return null;
+         Set<SSTableReader> sstablesToValidate = new HashSet<>();
 -        try (ColumnFamilyStore.RefViewFragment sstableCandidates = cfs.selectAndReference(prs.isIncremental ? ColumnFamilyStore.UNREPAIRED_SSTABLES : ColumnFamilyStore.CANONICAL_SSTABLES))
++        try (ColumnFamilyStore.RefViewFragment sstableCandidates = cfs.selectAndReference(View.select(SSTableSet.CANONICAL, (s) -> !prs.isIncremental || !s.isRepaired())))
+         {
+             for (SSTableReader sstable : sstableCandidates.sstables)
+             {
 -                if (new Bounds<>(sstable.first.getToken(), sstable.last.getToken()).intersects(Collections.singletonList(validator.desc.range)))
++                if (new Bounds<>(sstable.first.getToken(), sstable.last.getToken()).intersects(validator.desc.ranges))
+                 {
+                     sstablesToValidate.add(sstable);
+                 }
+             }
+ 
+             Set<SSTableReader> currentlyRepairing = ActiveRepairService.instance.currentlyRepairing(cfs.metadata.cfId, validator.desc.parentSessionId);
+ 
+             if (!Sets.intersection(currentlyRepairing, sstablesToValidate).isEmpty())
+             {
+                 logger.error("Cannot start multiple repair sessions over the same sstables");
+                 throw new RuntimeException("Cannot start multiple repair sessions over the same sstables");
+             }
+ 
+             sstables = Refs.tryRef(sstablesToValidate);
+             if (sstables == null)
+             {
+                 logger.error("Could not reference sstables");
+                 throw new RuntimeException("Could not reference sstables");
+             }
+         }
+ 
+         prs.addSSTables(cfs.metadata.cfId, sstablesToValidate);
+ 
+         return sstables;
+     }
+ 
      /**
       * Splits up an sstable into two new sstables. The first of the new tables will store repaired ranges, the second
       * will store the non-repaired ranges. Once anticompation is completed, the original sstable is marked as compacted