Repository: cassandra Updated Branches: refs/heads/cassandra-2.1 5c5c5b44c -> 209ebd380 refs/heads/cassandra-2.2 77ab77328 -> 97a43ffff refs/heads/cassandra-3.0 7f4b5e305 -> f85a20f79 refs/heads/trunk a17120adf -> 391cae615
Replace sstables on DataTracker before marking them as non-compacting during anti-compaction Patch by Ruoran Wang; reviewed by Paulo Motta for CASSANDRA-11548 Project: http://git-wip-us.apache.org/repos/asf/cassandra/repo Commit: http://git-wip-us.apache.org/repos/asf/cassandra/commit/d200d137 Tree: http://git-wip-us.apache.org/repos/asf/cassandra/tree/d200d137 Diff: http://git-wip-us.apache.org/repos/asf/cassandra/diff/d200d137 Branch: refs/heads/cassandra-2.1 Commit: d200d137823d5b250406bccb35473a8fc2f14faf Parents: 5c5c5b4 Author: Ruoran Wang <ruoranw...@gmail.com> Authored: Mon Apr 18 19:49:30 2016 -0300 Committer: Paulo Motta <pauloricard...@gmail.com> Committed: Tue Apr 19 08:00:09 2016 -0300 ---------------------------------------------------------------------- CHANGES.txt | 3 +++ .../cassandra/db/compaction/CompactionManager.java | 15 ++++++++------- 2 files changed, 11 insertions(+), 7 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/cassandra/blob/d200d137/CHANGES.txt ---------------------------------------------------------------------- diff --git a/CHANGES.txt b/CHANGES.txt index 6385509..90a4f23 100644 --- a/CHANGES.txt +++ b/CHANGES.txt @@ -1,3 +1,6 @@ +2.1.15 + * Replace sstables on DataTracker before marking them as non-compacting during anti-compaction (CASSANDRA-11548) + 2.1.14 * Checking if an unlogged batch is local is inefficient (CASSANDRA-11529) * Fix paging for COMPACT tables without clustering columns (CASSANDRA-11467) http://git-wip-us.apache.org/repos/asf/cassandra/blob/d200d137/src/java/org/apache/cassandra/db/compaction/CompactionManager.java ---------------------------------------------------------------------- diff --git a/src/java/org/apache/cassandra/db/compaction/CompactionManager.java b/src/java/org/apache/cassandra/db/compaction/CompactionManager.java index e382cab..96d873f 100644 --- a/src/java/org/apache/cassandra/db/compaction/CompactionManager.java +++ b/src/java/org/apache/cassandra/db/compaction/CompactionManager.java @@ -1125,7 +1125,6 @@ public class CompactionManager implements CompactionManagerMBean int unrepairedKeyCount = 0; logger.info("Performing anticompaction on {} sstables", repairedSSTables.size()); // iterate over sstables to check if the repaired / unrepaired ranges intersect them. - Set<SSTableReader> successfullyAntiCompactedSSTables = new HashSet<>(); for (SSTableReader sstable : repairedSSTables) { // check that compaction hasn't stolen any sstables used in previous repair sessions @@ -1137,8 +1136,7 @@ public class CompactionManager implements CompactionManagerMBean } logger.info("Anticompacting {}", sstable); - Set<SSTableReader> sstableAsSet = new HashSet<>(); - sstableAsSet.add(sstable); + Set<SSTableReader> sstableAsSet = Sets.newHashSet(sstable); File destination = cfs.directories.getWriteableLocationAsFile(cfs.getExpectedCompactedFileSize(sstableAsSet, OperationType.ANTICOMPACTION)); SSTableRewriter repairedSSTableWriter = new SSTableRewriter(cfs, sstableAsSet, sstable.maxDataAge, false, false); @@ -1177,9 +1175,13 @@ public class CompactionManager implements CompactionManagerMBean { metrics.finishCompaction(ci); } - anticompactedSSTables.addAll(repairedSSTableWriter.finish(repairedAt)); - anticompactedSSTables.addAll(unRepairedSSTableWriter.finish(ActiveRepairService.UNREPAIRED_SSTABLE)); - successfullyAntiCompactedSSTables.add(sstable); + + List<SSTableReader> anticompacted = new ArrayList<>(); + anticompacted.addAll(repairedSSTableWriter.finish(repairedAt)); + anticompacted.addAll(unRepairedSSTableWriter.finish(ActiveRepairService.UNREPAIRED_SSTABLE)); + anticompactedSSTables.addAll(anticompacted); + + cfs.getDataTracker().markCompactedSSTablesReplaced(sstableAsSet, anticompacted, OperationType.ANTICOMPACTION); cfs.getDataTracker().unmarkCompacting(sstableAsSet); } catch (Throwable e) @@ -1190,7 +1192,6 @@ public class CompactionManager implements CompactionManagerMBean unRepairedSSTableWriter.abort(); } } - cfs.getDataTracker().markCompactedSSTablesReplaced(successfullyAntiCompactedSSTables, anticompactedSSTables, OperationType.ANTICOMPACTION); String format = "Repaired {} keys of {} for {}/{}"; logger.debug(format, repairedKeyCount, (repairedKeyCount + unrepairedKeyCount), cfs.keyspace, cfs.getColumnFamilyName()); String format2 = "Anticompaction completed successfully, anticompacted from {} to {} sstable(s).";