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/1e25d198
Tree: http://git-wip-us.apache.org/repos/asf/cassandra/tree/1e25d198
Diff: http://git-wip-us.apache.org/repos/asf/cassandra/diff/1e25d198

Branch: refs/heads/cassandra-3.0
Commit: 1e25d198343d23dfe98663dabba19dc2219ca7ba
Parents: a20b6ef 38dde32
Author: Marcus Eriksson <marc...@apache.org>
Authored: Fri Jan 22 07:26:34 2016 +0100
Committer: Marcus Eriksson <marc...@apache.org>
Committed: Fri Jan 22 07:26:34 2016 +0100

----------------------------------------------------------------------
 CHANGES.txt                                     |  2 ++
 .../db/compaction/LeveledManifest.java          | 34 ++++++++++++++------
 2 files changed, 26 insertions(+), 10 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/cassandra/blob/1e25d198/CHANGES.txt
----------------------------------------------------------------------
diff --cc CHANGES.txt
index 89d34ec,751267e..1c2f2e2
--- a/CHANGES.txt
+++ b/CHANGES.txt
@@@ -1,27 -1,6 +1,29 @@@
 -2.2.5
 +3.0.3
 + * Update CQL documentation (CASSANDRA-10899)
 + * Check the column name, not cell name, for dropped columns when reading
 +   legacy sstables (CASSANDRA-11018)
 + * Don't attempt to index clustering values of static rows (CASSANDRA-11021)
 + * Remove checksum files after replaying hints (CASSANDRA-10947)
 + * Support passing base table metadata to custom 2i validation 
(CASSANDRA-10924)
 + * Ensure stale index entries are purged during reads (CASSANDRA-11013)
 + * Fix AssertionError when removing from list using UPDATE (CASSANDRA-10954)
 + * Fix UnsupportedOperationException when reading old sstable with range
 +   tombstone (CASSANDRA-10743)
 + * MV should use the maximum timestamp of the primary key (CASSANDRA-10910)
 + * Fix potential assertion error during compaction (CASSANDRA-10944)
 + * Fix counting of received sstables in streaming (CASSANDRA-10949)
 + * Implement hints compression (CASSANDRA-9428)
 + * Fix potential assertion error when reading static columns (CASSANDRA-10903)
 + * Avoid NoSuchElementException when executing empty batch (CASSANDRA-10711)
 + * Avoid building PartitionUpdate in toString (CASSANDRA-10897)
 + * Reduce heap spent when receiving many SSTables (CASSANDRA-10797)
 + * Add back support for 3rd party auth providers to bulk loader 
(CASSANDRA-10873)
 + * Eliminate the dependency on jgrapht for UDT resolution (CASSANDRA-10653)
 + * (Hadoop) Close Clusters and Sessions in Hadoop Input/Output classes 
(CASSANDRA-10837)
 + * Fix sstableloader not working with upper case keyspace name 
(CASSANDRA-10806)
 +Merged from 2.2:
+  * Start L0 STCS-compactions even if there is a L0 -> L1 compaction
+    going (CASSANDRA-10979)
   * Make UUID LSB unique per process (CASSANDRA-7925)
   * Avoid NPE when performing sstable tasks (scrub etc.) (CASSANDRA-10980)
   * Make sure client gets tombstone overwhelmed warning (CASSANDRA-9465)

http://git-wip-us.apache.org/repos/asf/cassandra/blob/1e25d198/src/java/org/apache/cassandra/db/compaction/LeveledManifest.java
----------------------------------------------------------------------
diff --cc src/java/org/apache/cassandra/db/compaction/LeveledManifest.java
index b7bf83f,544b0a8..b0cd077
--- a/src/java/org/apache/cassandra/db/compaction/LeveledManifest.java
+++ b/src/java/org/apache/cassandra/db/compaction/LeveledManifest.java
@@@ -354,10 -348,30 +348,30 @@@ public class LeveledManifes
              return null;
          Collection<SSTableReader> candidates = getCandidatesFor(0);
          if (candidates.isEmpty())
-             return null;
+         {
+             // Since we don't have any other compactions to do, see if there 
is a STCS compaction to perform in L0; if
+             // there is a long running compaction, we want to make sure that 
we continue to keep the number of SSTables
+             // small in L0.
+             return getSTCSInL0CompactionCandidate();
+         }
 -        return new CompactionCandidate(candidates, getNextLevel(candidates), 
cfs.getCompactionStrategy().getMaxSSTableBytes());
 +        return new CompactionCandidate(candidates, getNextLevel(candidates), 
cfs.getCompactionStrategyManager().getMaxSSTableBytes());
      }
  
+     private CompactionCandidate getSTCSInL0CompactionCandidate()
+     {
+         if (!DatabaseDescriptor.getDisableSTCSInL0() && getLevel(0).size() > 
MAX_COMPACTING_L0)
+         {
+             List<SSTableReader> mostInteresting = 
getSSTablesForSTCS(getLevel(0));
+             if (!mostInteresting.isEmpty())
+             {
+                 logger.debug("L0 is too far behind, performing size-tiering 
there first");
+                 return new CompactionCandidate(mostInteresting, 0, 
Long.MAX_VALUE);
+             }
+         }
+ 
+         return null;
+     }
+ 
      private List<SSTableReader> getSSTablesForSTCS(Collection<SSTableReader> 
sstables)
      {
          Iterable<SSTableReader> candidates = 
cfs.getTracker().getUncompacting(sstables);

Reply via email to