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:51:07 UTC

[1/5] git commit: Don't allow marking already compacted sstables as compacting.

Repository: cassandra
Updated Branches:
  refs/heads/trunk 1bc8ffdae -> eeb150e9e


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/trunk
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())


[5/5] git commit: Merge branch 'cassandra-2.1' into trunk

Posted by ma...@apache.org.
Merge branch 'cassandra-2.1' into trunk


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

Branch: refs/heads/trunk
Commit: eeb150e9e318460e906ffc1a1d0b485cd00100f8
Parents: 1bc8ffd 4018232
Author: Marcus Eriksson <ma...@apache.org>
Authored: Mon Sep 1 15:49:43 2014 +0200
Committer: Marcus Eriksson <ma...@apache.org>
Committed: Mon Sep 1 15:49:43 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/eeb150e9/CHANGES.txt
----------------------------------------------------------------------

http://git-wip-us.apache.org/repos/asf/cassandra/blob/eeb150e9/src/java/org/apache/cassandra/db/compaction/LeveledManifest.java
----------------------------------------------------------------------

http://git-wip-us.apache.org/repos/asf/cassandra/blob/eeb150e9/src/java/org/apache/cassandra/io/sstable/SSTableReader.java
----------------------------------------------------------------------


[4/5] git commit: Merge branch 'cassandra-2.1.0' into cassandra-2.1

Posted by ma...@apache.org.
Merge branch 'cassandra-2.1.0' into cassandra-2.1


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

Branch: refs/heads/trunk
Commit: 40182323f5b052cca3e8d2bea6b808a6f85c1241
Parents: bff7572 ef89045
Author: Marcus Eriksson <ma...@apache.org>
Authored: Mon Sep 1 15:46:48 2014 +0200
Committer: Marcus Eriksson <ma...@apache.org>
Committed: Mon Sep 1 15:46:48 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/40182323/CHANGES.txt
----------------------------------------------------------------------

http://git-wip-us.apache.org/repos/asf/cassandra/blob/40182323/src/java/org/apache/cassandra/db/compaction/LeveledManifest.java
----------------------------------------------------------------------


[3/5] git commit: Merge branch 'cassandra-2.0' into cassandra-2.1.0

Posted by ma...@apache.org.
Merge branch 'cassandra-2.0' into cassandra-2.1.0

Conflicts:
	CHANGES.txt
	src/java/org/apache/cassandra/db/DataTracker.java
	src/java/org/apache/cassandra/db/compaction/LeveledManifest.java


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

Branch: refs/heads/trunk
Commit: ef890455061dcbbda5d9d1cad187fc43a664f4d4
Parents: de62175 968ffd8
Author: Marcus Eriksson <ma...@apache.org>
Authored: Mon Sep 1 15:41:57 2014 +0200
Committer: Marcus Eriksson <ma...@apache.org>
Committed: Mon Sep 1 15:41:57 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/ef890455/CHANGES.txt
----------------------------------------------------------------------
diff --cc CHANGES.txt
index c202586,6d77f3c..477a332
--- a/CHANGES.txt
+++ b/CHANGES.txt
@@@ -20,39 -14,24 +20,40 @@@ Merged from 2.0
   * 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)
 + * Make StreamReceiveTask thread safe and gc friendly (CASSANDRA-7795)
 + * Validate empty cell names from counter updates (CASSANDRA-7798)
 +Merged from 1.2:
++ * Don't allow compacted sstables to be marked as compacting (CASSANDRA-7145)
 + * Track expired tombstones (CASSANDRA-7810)
 +
 +
 +2.1.0-rc6
 + * Fix OOM issue from netty caching over time (CASSANDRA-7743)
 + * json2sstable couldn't import JSON for CQL table (CASSANDRA-7477)
 + * Invalidate all caches on table drop (CASSANDRA-7561)
 + * Skip strict endpoint selection for ranges if RF == nodes (CASSANRA-7765)
 + * Fix Thrift range filtering without 2ary index lookups (CASSANDRA-7741)
 + * Add tracing entries about concurrent range requests (CASSANDRA-7599)
 + * (cqlsh) Fix DESCRIBE for NTS keyspaces (CASSANDRA-7729)
 + * Remove netty buffer ref-counting (CASSANDRA-7735)
 + * Pass mutated cf to index updater for use by PRSI (CASSANDRA-7742)
 + * Include stress yaml example in release and deb (CASSANDRA-7717)
 + * workaround for netty issue causing corrupted data off the wire (CASSANDRA-7695)
 + * cqlsh DESC CLUSTER fails retrieving ring information (CASSANDRA-7687)
 + * Fix binding null values inside UDT (CASSANDRA-7685)
 + * Fix UDT field selection with empty fields (CASSANDRA-7670)
 + * Bogus deserialization of static cells from sstable (CASSANDRA-7684)
 + * Fix NPE on compaction leftover cleanup for dropped table (CASSANDRA-7770)
 +Merged from 2.0:
   * (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)
 + * Remove duplicates from StorageService.getJoiningNodes (CASSANDRA-7478)
 + * Clone token map outside of hot gossip loops (CASSANDRA-7758)
   * 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)

http://git-wip-us.apache.org/repos/asf/cassandra/blob/ef890455/src/java/org/apache/cassandra/db/DataTracker.java
----------------------------------------------------------------------
diff --cc src/java/org/apache/cassandra/db/DataTracker.java
index 097d8cc,d41181b..857e8bd
--- a/src/java/org/apache/cassandra/db/DataTracker.java
+++ b/src/java/org/apache/cassandra/db/DataTracker.java
@@@ -192,18 -199,26 +192,30 @@@ public class DataTracke
      public boolean markCompacting(Iterable<SSTableReader> sstables)
      {
          assert sstables != null && !Iterables.isEmpty(sstables);
 -
 -        View currentView = view.get();
 -        Set<SSTableReader> inactive = Sets.difference(ImmutableSet.copyOf(sstables), currentView.compacting);
 -        if (inactive.size() < Iterables.size(sstables))
 -            return false;
 -
 -        if (Iterables.any(sstables, new Predicate<SSTableReader>()
 +        while (true)
          {
 -            @Override
 -            public boolean apply(SSTableReader sstable)
 +            View currentView = view.get();
 +            Set<SSTableReader> set = ImmutableSet.copyOf(sstables);
 +            Set<SSTableReader> inactive = Sets.difference(set, currentView.compacting);
 +            if (inactive.size() < set.size())
 +                return false;
 +
++            if (Iterables.any(set, new Predicate<SSTableReader>()
++            {
++                @Override
++                public boolean apply(SSTableReader sstable)
++                {
++                    return sstable.isMarkedCompacted();
++                }
++            }))
+             {
 -                return sstable.isMarkedCompacted();
++                return false;
+             }
 -        }))
 -        {
 -            return false;
 -        }
+ 
 -        View newView = currentView.markCompacting(inactive);
 -        return view.compareAndSet(currentView, newView);
 +            View newView = currentView.markCompacting(set);
 +            if (view.compareAndSet(currentView, newView))
 +                return true;
 +        }
      }
  
      /**

http://git-wip-us.apache.org/repos/asf/cassandra/blob/ef890455/src/java/org/apache/cassandra/db/compaction/LeveledManifest.java
----------------------------------------------------------------------
diff --cc src/java/org/apache/cassandra/db/compaction/LeveledManifest.java
index 6f2098c,b704523..deb1380
--- a/src/java/org/apache/cassandra/db/compaction/LeveledManifest.java
+++ b/src/java/org/apache/cassandra/db/compaction/LeveledManifest.java
@@@ -644,7 -534,10 +644,10 @@@ 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, getLevel(1)));
 -                Set<SSTableReader> l1overlapping = overlapping(candidates, generations[1]);
++                Set<SSTableReader> l1overlapping = overlapping(candidates, getLevel(1));
+                 if (Sets.intersection(l1overlapping, compacting).size() > 0)
+                     return Collections.emptyList();
+                 candidates = Sets.union(candidates, l1overlapping);
              }
              if (candidates.size() < 2)
                  return Collections.emptyList();

http://git-wip-us.apache.org/repos/asf/cassandra/blob/ef890455/src/java/org/apache/cassandra/io/sstable/SSTableReader.java
----------------------------------------------------------------------


[2/5] 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/trunk
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
----------------------------------------------------------------------