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/5a356a70 Tree: http://git-wip-us.apache.org/repos/asf/cassandra/tree/5a356a70 Diff: http://git-wip-us.apache.org/repos/asf/cassandra/diff/5a356a70 Branch: refs/heads/cassandra-2.2 Commit: 5a356a70631d50cbab0f01dbfea868f26af66582 Parents: 40cef77 cedcf07 Author: Marcus Eriksson <marc...@apache.org> Authored: Wed Oct 28 08:43:10 2015 +0100 Committer: Marcus Eriksson <marc...@apache.org> Committed: Wed Oct 28 08:50:44 2015 +0100 ---------------------------------------------------------------------- CHANGES.txt | 1 + .../DateTieredCompactionStrategy.java | 46 ++++++++++------ .../DateTieredCompactionStrategyTest.java | 57 ++++++++++++++------ 3 files changed, 72 insertions(+), 32 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/cassandra/blob/5a356a70/CHANGES.txt ---------------------------------------------------------------------- diff --cc CHANGES.txt index 24862b0,5b46eac..9021e9d --- a/CHANGES.txt +++ b/CHANGES.txt @@@ -1,10 -1,5 +1,11 @@@ -2.1.12 +2.2.4 + * 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: + * Do STCS in DTCS windows (CASSANDRA-10276) * Don't try to get ancestors from half-renamed sstables (CASSANDRA-10501) * Avoid repetition of JVM_OPTS in debian package (CASSANDRA-10251) * Fix potential NPE from handling result of SIM.highestSelectivityIndex (CASSANDRA-10550) http://git-wip-us.apache.org/repos/asf/cassandra/blob/5a356a70/src/java/org/apache/cassandra/db/compaction/DateTieredCompactionStrategy.java ---------------------------------------------------------------------- diff --cc src/java/org/apache/cassandra/db/compaction/DateTieredCompactionStrategy.java index da2d35d,ece596f..fe8f135 --- a/src/java/org/apache/cassandra/db/compaction/DateTieredCompactionStrategy.java +++ b/src/java/org/apache/cassandra/db/compaction/DateTieredCompactionStrategy.java @@@ -50,11 -49,12 +50,12 @@@ public class DateTieredCompactionStrate if (!options.containsKey(AbstractCompactionStrategy.TOMBSTONE_COMPACTION_INTERVAL_OPTION) && !options.containsKey(AbstractCompactionStrategy.TOMBSTONE_THRESHOLD_OPTION)) { disableTombstoneCompactions = true; - logger.debug("Disabling tombstone compactions for DTCS"); + logger.trace("Disabling tombstone compactions for DTCS"); } else - logger.debug("Enabling tombstone compactions for DTCS"); + logger.trace("Enabling tombstone compactions for DTCS"); + this.stcsOptions = new SizeTieredCompactionStrategyOptions(options); } @Override @@@ -372,14 -379,13 +382,14 @@@ } @Override - public synchronized Collection<AbstractCompactionTask> getMaximalTask(int gcBefore) + @SuppressWarnings("resource") + public synchronized Collection<AbstractCompactionTask> getMaximalTask(int gcBefore, boolean splitOutput) { - Iterable<SSTableReader> sstables = cfs.markAllCompacting(); - if (sstables == null) + LifecycleTransaction modifier = cfs.markAllCompacting(OperationType.COMPACTION); + if (modifier == null) return null; - return Arrays.<AbstractCompactionTask>asList(new CompactionTask(cfs, modifier, gcBefore, false)); - return Collections.<AbstractCompactionTask>singleton(new CompactionTask(cfs, sstables, gcBefore, false)); ++ return Collections.<AbstractCompactionTask>singleton(new CompactionTask(cfs, modifier, gcBefore, false)); } @Override http://git-wip-us.apache.org/repos/asf/cassandra/blob/5a356a70/test/unit/org/apache/cassandra/db/compaction/DateTieredCompactionStrategyTest.java ---------------------------------------------------------------------- diff --cc test/unit/org/apache/cassandra/db/compaction/DateTieredCompactionStrategyTest.java index 0159c83,368101d..2824d3a --- a/test/unit/org/apache/cassandra/db/compaction/DateTieredCompactionStrategyTest.java +++ b/test/unit/org/apache/cassandra/db/compaction/DateTieredCompactionStrategyTest.java @@@ -325,10 -301,50 +312,50 @@@ public class DateTieredCompactionStrate Thread.sleep(2000); AbstractCompactionTask t = dtcs.getNextBackgroundTask((int) (System.currentTimeMillis()/1000)); assertNotNull(t); - assertEquals(1, Iterables.size(t.sstables)); - SSTableReader sstable = t.sstables.iterator().next(); + assertEquals(1, Iterables.size(t.transaction.originals())); + SSTableReader sstable = t.transaction.originals().iterator().next(); assertEquals(sstable, expiredSSTable); - cfs.getDataTracker().unmarkCompacting(cfs.getSSTables()); + t.transaction.abort(); } + @Test + public void testSTCSBigWindow() + { + Keyspace keyspace = Keyspace.open(KEYSPACE1); + ColumnFamilyStore cfs = keyspace.getColumnFamilyStore(CF_STANDARD1); + cfs.truncateBlocking(); + cfs.disableAutoCompaction(); + ByteBuffer bigValue = ByteBuffer.wrap(new byte[10000]); + ByteBuffer value = ByteBuffer.wrap(new byte[100]); + int numSSTables = 40; + // create big sstabels out of half: + long timestamp = System.currentTimeMillis(); + for (int r = 0; r < numSSTables / 2; r++) + { + for (int i = 0; i < 10; i++) + { + DecoratedKey key = Util.dk(String.valueOf(r)); + Mutation rm = new Mutation(KEYSPACE1, key.getKey()); + rm.add(CF_STANDARD1, Util.cellname("column"), bigValue, timestamp); + rm.apply(); + } + cfs.forceBlockingFlush(); + } + // and small ones: + for (int r = 0; r < numSSTables / 2; r++) + { + DecoratedKey key = Util.dk(String.valueOf(r)); + Mutation rm = new Mutation(KEYSPACE1, key.getKey()); + rm.add(CF_STANDARD1, Util.cellname("column"), value, timestamp); + rm.apply(); + cfs.forceBlockingFlush(); + } + Map<String, String> options = new HashMap<>(); + options.put(SizeTieredCompactionStrategyOptions.MIN_SSTABLE_SIZE_KEY, "1"); + DateTieredCompactionStrategy dtcs = new DateTieredCompactionStrategy(cfs, options); + for (SSTableReader sstable : cfs.getSSTables()) + dtcs.addSSTable(sstable); - assertEquals(20, dtcs.getNextBackgroundTask(0).sstables.size()); ++ assertEquals(20, dtcs.getNextBackgroundTask(0).transaction.originals().size()); + } + }