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 2014/09/01 15:50:22 UTC
[1/2] git commit: Don't allow marking already compacted sstables as
compacting.
Repository: cassandra
Updated Branches:
refs/heads/cassandra-2.0 e48e6f33a -> 968ffd8dd
Don't allow marking already compacted sstables as compacting.
Patch by marcuse; reviewed by yukim for CASSANDRA-7145
Project: http://git-wip-us.apache.org/repos/asf/cassandra/repo
Commit: http://git-wip-us.apache.org/repos/asf/cassandra/commit/8bef2609
Tree: http://git-wip-us.apache.org/repos/asf/cassandra/tree/8bef2609
Diff: http://git-wip-us.apache.org/repos/asf/cassandra/diff/8bef2609
Branch: refs/heads/cassandra-2.0
Commit: 8bef2609abf32e9524c3aa6c89e5f2d5b381efb6
Parents: 7f9e9a8
Author: Marcus Eriksson <ma...@apache.org>
Authored: Mon Sep 1 15:11:38 2014 +0200
Committer: Marcus Eriksson <ma...@apache.org>
Committed: Mon Sep 1 15:11:38 2014 +0200
----------------------------------------------------------------------
CHANGES.txt | 1 +
src/java/org/apache/cassandra/db/DataTracker.java | 13 +++++++++++++
.../cassandra/db/compaction/LeveledManifest.java | 5 ++++-
.../org/apache/cassandra/io/sstable/SSTableReader.java | 5 +++++
4 files changed, 23 insertions(+), 1 deletion(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/cassandra/blob/8bef2609/CHANGES.txt
----------------------------------------------------------------------
diff --git a/CHANGES.txt b/CHANGES.txt
index d27be1f..6c601e5 100644
--- a/CHANGES.txt
+++ b/CHANGES.txt
@@ -1,4 +1,5 @@
1.2.19
+ * Don't allow compacted sstables to be marked as compacting (CASSANDRA-7145)
* Track expired tombstones (CASSANDRA-7810)
* Validate empty cell names from counter updates (CASSANDRA-7798)
* Improve PasswordAuthenticator default super user setup (CASSANDRA-7788)
http://git-wip-us.apache.org/repos/asf/cassandra/blob/8bef2609/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 3e271d3..a1092fa 100644
--- a/src/java/org/apache/cassandra/db/DataTracker.java
+++ b/src/java/org/apache/cassandra/db/DataTracker.java
@@ -22,6 +22,7 @@ import java.util.*;
import java.util.concurrent.CopyOnWriteArrayList;
import java.util.concurrent.atomic.AtomicReference;
+import com.google.common.base.Predicate;
import com.google.common.collect.*;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -183,6 +184,18 @@ public class DataTracker
if (inactive.size() < sstables.size())
return false;
+ if (Iterables.any(sstables, new Predicate<SSTableReader>()
+ {
+ @Override
+ public boolean apply(SSTableReader sstable)
+ {
+ return sstable.isMarkedCompacted();
+ }
+ }))
+ {
+ return false;
+ }
+
View newView = currentView.markCompacting(inactive);
return view.compareAndSet(currentView, newView);
}
http://git-wip-us.apache.org/repos/asf/cassandra/blob/8bef2609/src/java/org/apache/cassandra/db/compaction/LeveledManifest.java
----------------------------------------------------------------------
diff --git a/src/java/org/apache/cassandra/db/compaction/LeveledManifest.java b/src/java/org/apache/cassandra/db/compaction/LeveledManifest.java
index fc10883..796eb90 100644
--- a/src/java/org/apache/cassandra/db/compaction/LeveledManifest.java
+++ b/src/java/org/apache/cassandra/db/compaction/LeveledManifest.java
@@ -529,7 +529,10 @@ public class LeveledManifest
// add sstables from L1 that overlap candidates
// if the overlapping ones are already busy in a compaction, leave it out.
// TODO try to find a set of L0 sstables that only overlaps with non-busy L1 sstables
- candidates = Sets.union(candidates, overlapping(candidates, generations[1]));
+ Set<SSTableReader> l1overlapping = overlapping(candidates, generations[1]);
+ if (Sets.intersection(l1overlapping, compacting).size() > 0)
+ return Collections.emptyList();
+ candidates = Sets.union(candidates, l1overlapping);
}
// check overlap with L0 compacting sstables to make sure we are not generating overlap in L1.
Iterable<SSTableReader> compactingL0 = Iterables.filter(generations[0], Predicates.in(compacting));
http://git-wip-us.apache.org/repos/asf/cassandra/blob/8bef2609/src/java/org/apache/cassandra/io/sstable/SSTableReader.java
----------------------------------------------------------------------
diff --git a/src/java/org/apache/cassandra/io/sstable/SSTableReader.java b/src/java/org/apache/cassandra/io/sstable/SSTableReader.java
index 4af1cdc..ba7093c 100644
--- a/src/java/org/apache/cassandra/io/sstable/SSTableReader.java
+++ b/src/java/org/apache/cassandra/io/sstable/SSTableReader.java
@@ -994,6 +994,11 @@ public class SSTableReader extends SSTable implements Closeable
return !isCompacted.getAndSet(true);
}
+ public boolean isMarkedCompacted()
+ {
+ return isCompacted.get();
+ }
+
public void markSuspect()
{
if (logger.isDebugEnabled())
[2/2] git commit: Merge branch 'cassandra-1.2' into cassandra-2.0
Posted by ma...@apache.org.
Merge branch 'cassandra-1.2' into cassandra-2.0
Conflicts:
CHANGES.txt
Project: http://git-wip-us.apache.org/repos/asf/cassandra/repo
Commit: http://git-wip-us.apache.org/repos/asf/cassandra/commit/968ffd8d
Tree: http://git-wip-us.apache.org/repos/asf/cassandra/tree/968ffd8d
Diff: http://git-wip-us.apache.org/repos/asf/cassandra/diff/968ffd8d
Branch: refs/heads/cassandra-2.0
Commit: 968ffd8dd33a315e687208a6ab8e0d8b83e68603
Parents: e48e6f3 8bef260
Author: Marcus Eriksson <ma...@apache.org>
Authored: Mon Sep 1 15:37:23 2014 +0200
Committer: Marcus Eriksson <ma...@apache.org>
Committed: Mon Sep 1 15:37:23 2014 +0200
----------------------------------------------------------------------
CHANGES.txt | 1 +
src/java/org/apache/cassandra/db/DataTracker.java | 12 ++++++++++++
.../apache/cassandra/db/compaction/LeveledManifest.java | 5 ++++-
.../org/apache/cassandra/io/sstable/SSTableReader.java | 5 +++++
4 files changed, 22 insertions(+), 1 deletion(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/cassandra/blob/968ffd8d/CHANGES.txt
----------------------------------------------------------------------
diff --cc CHANGES.txt
index 5b52471,6c601e5..6d77f3c
--- a/CHANGES.txt
+++ b/CHANGES.txt
@@@ -1,82 -1,5 +1,83 @@@
-1.2.19
+2.0.11:
+ * Better error message when condition is set on PK column (CASSANDRA-7804)
+ * Forbid re-adding dropped counter columns (CASSANDRA-7831)
+ * Fix CFMetaData#isThriftCompatible() for PK-only tables (CASSANDRA-7832)
+ * Always reject inequality on the partition key without token()
+ (CASSANDRA-7722)
+ * Always send Paxos commit to all replicas (CASSANDRA-7479)
+
+
+2.0.10
+ * Don't send schema change responses and events for no-op DDL
+ statements (CASSANDRA-7600)
+ * (Hadoop) fix cluster initialisation for a split fetching (CASSANDRA-7774)
+ * Configure system.paxos with LeveledCompactionStrategy (CASSANDRA-7753)
+ * Fix ALTER clustering column type from DateType to TimestampType when
+ using DESC clustering order (CASSANRDA-7797)
+ * Stop inheriting liveRatio and liveRatioComputedAt from previous
+ memtables (CASSANDRA-7796)
+ * Throw EOFException if we run out of chunks in compressed datafile
+ (CASSANDRA-7664)
+ * Throw InvalidRequestException when queries contain relations on entire
+ collection columns (CASSANDRA-7506)
+ * Fix PRSI handling of CQL3 row markers for row cleanup (CASSANDRA-7787)
+ * (cqlsh) enable CTRL-R history search with libedit (CASSANDRA-7577)
+ * Fix dropping collection when it's the last regular column (CASSANDRA-7744)
+ * Properly reject operations on list index with conditions (CASSANDRA-7499)
+ * (Hadoop) allow ACFRW to limit nodes to local DC (CASSANDRA-7252)
+ * (cqlsh) Wait up to 10 sec for a tracing session (CASSANDRA-7222)
+ * Fix NPE in FileCacheService.sizeInBytes (CASSANDRA-7756)
+ * (cqlsh) cqlsh should automatically disable tracing when selecting
+ from system_traces (CASSANDRA-7641)
+ * (Hadoop) Add CqlOutputFormat (CASSANDRA-6927)
+ * Don't depend on cassandra config for nodetool ring (CASSANDRA-7508)
+ * (cqlsh) Fix failing cqlsh formatting tests (CASSANDRA-7703)
+ * Fix MS expiring map timeout for Paxos messages (CASSANDRA-7752)
+ * Do not flush on truncate if durable_writes is false (CASSANDRA-7750)
+ * Give CRR a default input_cql Statement (CASSANDRA-7226)
+ * Better error message when adding a collection with the same name
+ than a previously dropped one (CASSANDRA-6276)
+ * Fix validation when adding static columns (CASSANDRA-7730)
+ * (Thrift) fix range deletion of supercolumns (CASSANDRA-7733)
+ * Fix potential AssertionError in RangeTombstoneList (CASSANDRA-7700)
+ * Validate arguments of blobAs* functions (CASSANDRA-7707)
+ * Fix potential AssertionError with 2ndary indexes (CASSANDRA-6612)
+ * Avoid logging CompactionInterrupted at ERROR (CASSANDRA-7694)
+ * Minor leak in sstable2jon (CASSANDRA-7709)
+ * Add cassandra.auto_bootstrap system property (CASSANDRA-7650)
+ * Remove CqlPagingRecordReader/CqlPagingInputFormat (CASSANDRA-7570)
+ * Fix IncompatibleClassChangeError from hadoop2 (CASSANDRA-7229)
+ * Add 'nodetool sethintedhandoffthrottlekb' (CASSANDRA-7635)
+ * Update java driver (for hadoop) (CASSANDRA-7618)
+ * Fix truncate to always flush (CASSANDRA-7511)
+ * Remove shuffle and taketoken (CASSANDRA-7601)
+ * Switch liveRatio-related log messages to DEBUG (CASSANDRA-7467)
+ * (cqlsh) Add tab-completion for CREATE/DROP USER IF [NOT] EXISTS (CASSANDRA-7611)
+ * Always merge ranges owned by a single node (CASSANDRA-6930)
+ * Pig support for hadoop CqlInputFormat (CASSANDRA-6454)
+ * Fix ReversedType(DateType) mapping to native protocol (CASSANDRA-7576)
+ * (Windows) force range-based repair to non-sequential mode (CASSANDRA-7541)
+ * Fix range merging when DES scores are zero (CASSANDRA-7535)
+ * Warn when SSL certificates have expired (CASSANDRA-7528)
+ * Workaround JVM NPE on JMX bind failure (CASSANDRA-7254)
+ * Fix race in FileCacheService RemovalListener (CASSANDRA-7278)
+ * Fix inconsistent use of consistencyForCommit that allowed LOCAL_QUORUM
+ operations to incorrect become full QUORUM (CASSANDRA-7345)
+ * Properly handle unrecognized opcodes and flags (CASSANDRA-7440)
+ * (Hadoop) close CqlRecordWriter clients when finished (CASSANDRA-7459)
+ * Make sure high level sstables get compacted (CASSANDRA-7414)
+ * Fix AssertionError when using empty clustering columns and static columns
+ (CASSANDRA-7455)
+ * Add inter_dc_stream_throughput_outbound_megabits_per_sec (CASSANDRA-6596)
+ * Add option to disable STCS in L0 (CASSANDRA-6621)
+ * Fix error when doing reversed queries with static columns (CASSANDRA-7490)
+ * Backport CASSNADRA-3569/CASSANDRA-6747 (CASSANDRA-7560)
+ * Track max/min timestamps for range tombstones (CASSANDRA-7647)
+ * Fix NPE when listing saved caches dir (CASSANDRA-7632)
+ * Fix sstableloader unable to connect encrypted node (CASSANDRA-7585)
+ * Make StreamReceiveTask thread safe and gc friendly (CASSANDRA-7795)
+Merged from 1.2:
+ * Don't allow compacted sstables to be marked as compacting (CASSANDRA-7145)
* Track expired tombstones (CASSANDRA-7810)
* Validate empty cell names from counter updates (CASSANDRA-7798)
* Improve PasswordAuthenticator default super user setup (CASSANDRA-7788)
http://git-wip-us.apache.org/repos/asf/cassandra/blob/968ffd8d/src/java/org/apache/cassandra/db/DataTracker.java
----------------------------------------------------------------------
diff --cc src/java/org/apache/cassandra/db/DataTracker.java
index 05ee13e,a1092fa..d41181b
--- a/src/java/org/apache/cassandra/db/DataTracker.java
+++ b/src/java/org/apache/cassandra/db/DataTracker.java
@@@ -202,9 -181,21 +202,21 @@@ public class DataTracke
View currentView = view.get();
Set<SSTableReader> inactive = Sets.difference(ImmutableSet.copyOf(sstables), currentView.compacting);
- if (inactive.size() < sstables.size())
+ if (inactive.size() < Iterables.size(sstables))
return false;
+ if (Iterables.any(sstables, new Predicate<SSTableReader>()
+ {
+ @Override
+ public boolean apply(SSTableReader sstable)
+ {
+ return sstable.isMarkedCompacted();
+ }
+ }))
+ {
+ return false;
+ }
+
View newView = currentView.markCompacting(inactive);
return view.compareAndSet(currentView, newView);
}
http://git-wip-us.apache.org/repos/asf/cassandra/blob/968ffd8d/src/java/org/apache/cassandra/db/compaction/LeveledManifest.java
----------------------------------------------------------------------
diff --cc src/java/org/apache/cassandra/db/compaction/LeveledManifest.java
index 70e5cae,796eb90..b704523
--- a/src/java/org/apache/cassandra/db/compaction/LeveledManifest.java
+++ b/src/java/org/apache/cassandra/db/compaction/LeveledManifest.java
@@@ -534,9 -529,14 +534,12 @@@ public class LeveledManifes
// add sstables from L1 that overlap candidates
// if the overlapping ones are already busy in a compaction, leave it out.
// TODO try to find a set of L0 sstables that only overlaps with non-busy L1 sstables
- candidates = Sets.union(candidates, overlapping(candidates, generations[1]));
+ Set<SSTableReader> l1overlapping = overlapping(candidates, generations[1]);
+ if (Sets.intersection(l1overlapping, compacting).size() > 0)
+ return Collections.emptyList();
+ candidates = Sets.union(candidates, l1overlapping);
}
- // check overlap with L0 compacting sstables to make sure we are not generating overlap in L1.
- Iterable<SSTableReader> compactingL0 = Iterables.filter(generations[0], Predicates.in(compacting));
- if (candidates.size() < 2 || !Sets.intersection(candidates, compacting).isEmpty() || !overlapping(candidates, compactingL0).isEmpty())
+ if (candidates.size() < 2)
return Collections.emptyList();
else
return candidates;
http://git-wip-us.apache.org/repos/asf/cassandra/blob/968ffd8d/src/java/org/apache/cassandra/io/sstable/SSTableReader.java
----------------------------------------------------------------------