You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cassandra.apache.org by sl...@apache.org on 2012/07/23 19:17:45 UTC
git commit: Fix assertion error in getOverlappingSSTable during repair
Updated Branches:
refs/heads/cassandra-1.1 29379a525 -> aba1f16be
Fix assertion error in getOverlappingSSTable during repair
patch by slebresne; reviewed by jbellis for CASSANDRA-4456
Project: http://git-wip-us.apache.org/repos/asf/cassandra/repo
Commit: http://git-wip-us.apache.org/repos/asf/cassandra/commit/aba1f16b
Tree: http://git-wip-us.apache.org/repos/asf/cassandra/tree/aba1f16b
Diff: http://git-wip-us.apache.org/repos/asf/cassandra/diff/aba1f16b
Branch: refs/heads/cassandra-1.1
Commit: aba1f16be8bf45b3efefe4a42d604dea155b2595
Parents: 29379a5
Author: Sylvain Lebresne <sy...@datastax.com>
Authored: Mon Jul 23 17:25:49 2012 +0200
Committer: Sylvain Lebresne <sy...@datastax.com>
Committed: Mon Jul 23 19:17:36 2012 +0200
----------------------------------------------------------------------
CHANGES.txt | 1 +
.../cassandra/db/compaction/CompactionManager.java | 27 ++++++++++++++-
2 files changed, 27 insertions(+), 1 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/cassandra/blob/aba1f16b/CHANGES.txt
----------------------------------------------------------------------
diff --git a/CHANGES.txt b/CHANGES.txt
index b2a9faf..0885387 100644
--- a/CHANGES.txt
+++ b/CHANGES.txt
@@ -15,6 +15,7 @@
* add a token generation tool (CASSANDRA-3709)
* Fix LCS bug with sstable containing only 1 row (CASSANDRA-4411)
* fix "Can't Modify Index Name" problem on CF update (CASSANDRA-4439)
+ * Fix assertion error in getOverlappingSSTables during repair (CASSANDRA-4456)
Merged from 1.0:
* allow dropping columns shadowed by not-yet-expired supercolumn or row
tombstones in PrecompactedRow (CASSANDRA-4396)
http://git-wip-us.apache.org/repos/asf/cassandra/blob/aba1f16b/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 3c50a09..4b39280 100644
--- a/src/java/org/apache/cassandra/db/compaction/CompactionManager.java
+++ b/src/java/org/apache/cassandra/db/compaction/CompactionManager.java
@@ -55,6 +55,7 @@ import org.slf4j.LoggerFactory;
import com.google.common.base.Predicates;
import com.google.common.collect.Iterators;
+import com.google.common.collect.ImmutableSet;
/**
* A singleton which manages a private executor of ongoing compactions. A readwrite lock
@@ -833,7 +834,31 @@ public class CompactionManager implements CompactionManagerMBean
{
super(OperationType.VALIDATION,
cfs.getCompactionStrategy().getScanners(sstables, range),
- new CompactionController(cfs, sstables, getDefaultGcBefore(cfs), true));
+ new ValidationCompactionController(cfs, sstables));
+ }
+ }
+
+ /*
+ * Controller for validation compaction that never purges.
+ * Note that we should not call cfs.getOverlappingSSTables on the provided
+ * sstables because those sstables are not guaranteed to be active sstables
+ * (since we can run repair on a snapshot).
+ */
+ private static class ValidationCompactionController extends CompactionController
+ {
+ public ValidationCompactionController(ColumnFamilyStore cfs, Collection<SSTableReader> sstables)
+ {
+ super(cfs,
+ Integer.MAX_VALUE,
+ true,
+ null,
+ cfs.getCompactionStrategy().isKeyExistenceExpensive(ImmutableSet.copyOf(sstables)));
+ }
+
+ @Override
+ public boolean shouldPurge(DecoratedKey key)
+ {
+ return false;
}
}