Merge branch 'cassandra-2.1' into cassandra-2.2

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

Branch: refs/heads/cassandra-2.2
Commit: d09b6c69e0e0c6adff8e679f2286a335d883f1bd
Parents: 077f9bf 246cb88
Author: Marcus Eriksson <marc...@apache.org>
Authored: Wed Nov 18 13:59:09 2015 +0100
Committer: Marcus Eriksson <marc...@apache.org>
Committed: Wed Nov 18 13:59:09 2015 +0100

----------------------------------------------------------------------
 CHANGES.txt                                     |  1 +
 .../compaction/WrappingCompactionStrategy.java  | 16 +++++++++
 .../LeveledCompactionStrategyTest.java          | 35 ++++++++++++++++++++
 3 files changed, 52 insertions(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/cassandra/blob/d09b6c69/CHANGES.txt
----------------------------------------------------------------------
diff --cc CHANGES.txt
index 572afc2,6ccde28..c3dacc2
--- a/CHANGES.txt
+++ b/CHANGES.txt
@@@ -1,17 -1,5 +1,18 @@@
 -2.1.12
 +2.2.4
 + * Don't do anticompaction after subrange repair (CASSANDRA-10422)
 + * Fix SimpleDateType type compatibility (CASSANDRA-10027)
 + * (Hadoop) fix splits calculation (CASSANDRA-10640)
 + * (Hadoop) ensure that Cluster instances are always closed (CASSANDRA-10058)
 + * (cqlsh) show partial trace if incomplete after max_trace_wait 
(CASSANDRA-7645)
 + * Use most up-to-date version of schema for system tables (CASSANDRA-10652)
 + * Deprecate memory_allocator in cassandra.yaml (CASSANDRA-10581,10628)
 + * Expose phi values from failure detector via JMX and tweak debug
 +   and trace logging (CASSANDRA-9526)
 + * Fix RangeNamesQueryPager (CASSANDRA-10509)
 + * Deprecate Pig support (CASSANDRA-10542)
 + * Reduce contention getting instances of CompositeType (CASSANDRA-10433)
 +Merged from 2.1:
+  * Don't remove level info when running upgradesstables (CASSANDRA-10692)
   * Create compression chunk for sending file only (CASSANDRA-10680)
   * Make buffered read size configurable (CASSANDRA-10249)
   * Forbid compact clustering column type changes in ALTER TABLE 
(CASSANDRA-8879)

http://git-wip-us.apache.org/repos/asf/cassandra/blob/d09b6c69/src/java/org/apache/cassandra/db/compaction/WrappingCompactionStrategy.java
----------------------------------------------------------------------
diff --cc 
src/java/org/apache/cassandra/db/compaction/WrappingCompactionStrategy.java
index 9daa0c5,71a6bc1..8555432
--- 
a/src/java/org/apache/cassandra/db/compaction/WrappingCompactionStrategy.java
+++ 
b/src/java/org/apache/cassandra/db/compaction/WrappingCompactionStrategy.java
@@@ -32,10 -32,10 +32,11 @@@ import org.slf4j.LoggerFactory
  
  import org.apache.cassandra.config.CFMetaData;
  import org.apache.cassandra.db.ColumnFamilyStore;
++import org.apache.cassandra.db.lifecycle.LifecycleTransaction;
  import org.apache.cassandra.dht.Range;
  import org.apache.cassandra.dht.Token;
 +import org.apache.cassandra.io.sstable.format.SSTableReader;
  import org.apache.cassandra.io.sstable.ISSTableScanner;
 -import org.apache.cassandra.io.sstable.SSTableReader;
  import org.apache.cassandra.notifications.INotification;
  import org.apache.cassandra.notifications.INotificationConsumer;
  import org.apache.cassandra.notifications.SSTableAddedNotification;
@@@ -123,6 -123,21 +124,21 @@@ public final class WrappingCompactionSt
      }
  
      @Override
 -    public AbstractCompactionTask getCompactionTask(Collection<SSTableReader> 
sstables, final int gcBefore, long maxSSTableBytes)
++    public AbstractCompactionTask getCompactionTask(LifecycleTransaction txn, 
final int gcBefore, long maxSSTableBytes)
+     {
 -        assert sstables.size() > 0;
 -        boolean repairedSSTables = sstables.iterator().next().isRepaired();
 -        for (SSTableReader sstable : sstables)
++        assert txn.originals().size() > 0;
++        boolean repairedSSTables = 
txn.originals().iterator().next().isRepaired();
++        for (SSTableReader sstable : txn.originals())
+             if (repairedSSTables != sstable.isRepaired())
+                 throw new RuntimeException("Can't mix repaired and unrepaired 
sstables in a compaction");
+ 
+         if (repairedSSTables)
 -            return repaired.getCompactionTask(sstables, gcBefore, 
maxSSTableBytes);
++            return repaired.getCompactionTask(txn, gcBefore, maxSSTableBytes);
+         else
 -            return unrepaired.getCompactionTask(sstables, gcBefore, 
maxSSTableBytes);
++            return unrepaired.getCompactionTask(txn, gcBefore, 
maxSSTableBytes);
+     }
+ 
+     @Override
      public synchronized AbstractCompactionTask 
getUserDefinedTask(Collection<SSTableReader> sstables, int gcBefore)
      {
          assert !sstables.isEmpty();

http://git-wip-us.apache.org/repos/asf/cassandra/blob/d09b6c69/test/unit/org/apache/cassandra/db/compaction/LeveledCompactionStrategyTest.java
----------------------------------------------------------------------
diff --cc 
test/unit/org/apache/cassandra/db/compaction/LeveledCompactionStrategyTest.java
index 6b3383e,cb9cbb4..510ed97
--- 
a/test/unit/org/apache/cassandra/db/compaction/LeveledCompactionStrategyTest.java
+++ 
b/test/unit/org/apache/cassandra/db/compaction/LeveledCompactionStrategyTest.java
@@@ -20,18 -20,13 +20,19 @@@ package org.apache.cassandra.db.compact
  import java.nio.ByteBuffer;
  import java.util.Arrays;
  import java.util.Collection;
 +import java.util.HashMap;
 +import java.util.Iterator;
  import java.util.List;
 +import java.util.Map;
  import java.util.Random;
  import java.util.UUID;
+ import java.util.concurrent.ExecutionException;
  
 +import org.apache.cassandra.io.sstable.format.SSTableReader;
 +import junit.framework.Assert;
  import org.junit.After;
  import org.junit.Before;
 +import org.junit.BeforeClass;
  import org.junit.Test;
  import org.junit.runner.RunWith;
  
@@@ -365,4 -279,38 +366,38 @@@ public class LeveledCompactionStrategyT
          assertTrue(unrepaired.manifest.getLevel(1).contains(sstable2));
          assertFalse(repaired.manifest.getLevel(1).contains(sstable2));
      }
+ 
+     @Test
+     public void testDontRemoveLevelInfoUpgradeSSTables() throws 
InterruptedException, ExecutionException
+     {
+         byte [] b = new byte[100 * 1024];
+         new Random().nextBytes(b);
+         ByteBuffer value = ByteBuffer.wrap(b); // 100 KB value, make it easy 
to have multiple files
+ 
+         // Enough data to have a level 1 and 2
+         int rows = 20;
+         int columns = 10;
+ 
+         // Adds enough data to trigger multiple sstable per level
+         for (int r = 0; r < rows; r++)
+         {
+             DecoratedKey key = Util.dk(String.valueOf(r));
 -            Mutation rm = new Mutation(ksname, key.getKey());
++            Mutation rm = new Mutation(KEYSPACE1, key.getKey());
+             for (int c = 0; c < columns; c++)
+             {
 -                rm.add(cfname, Util.cellname("column" + c), value, 0);
++                rm.add(CF_STANDARDDLEVELED, Util.cellname("column" + c), 
value, 0);
+             }
+             rm.apply();
+             cfs.forceBlockingFlush();
+         }
+         waitForLeveling(cfs);
+         cfs.forceBlockingFlush();
+         LeveledCompactionStrategy strategy = (LeveledCompactionStrategy) 
((WrappingCompactionStrategy) 
cfs.getCompactionStrategy()).getWrappedStrategies().get(1);
+         assertTrue(strategy.getAllLevelSize()[1] > 0);
+ 
+         cfs.disableAutoCompaction();
+         cfs.sstablesRewrite(false);
+         assertTrue(strategy.getAllLevelSize()[1] > 0);
+ 
+     }
  }

Reply via email to