Merge branch 'cassandra-1.2' into cassandra-2.0 Conflicts: CHANGES.txt src/java/org/apache/cassandra/db/ColumnIndex.java
Project: http://git-wip-us.apache.org/repos/asf/cassandra/repo Commit: http://git-wip-us.apache.org/repos/asf/cassandra/commit/29befa18 Tree: http://git-wip-us.apache.org/repos/asf/cassandra/tree/29befa18 Diff: http://git-wip-us.apache.org/repos/asf/cassandra/diff/29befa18 Branch: refs/heads/cassandra-2.1.0 Commit: 29befa180be1b20ff404c29108f9bf3385f51855 Parents: 9219361 7f9e9a8 Author: Marcus Eriksson <marc...@apache.org> Authored: Wed Aug 27 13:00:55 2014 +0200 Committer: Marcus Eriksson <marc...@apache.org> Committed: Wed Aug 27 13:00:55 2014 +0200 ---------------------------------------------------------------------- CHANGES.txt | 1 + .../org/apache/cassandra/db/ColumnIndex.java | 2 +- .../org/apache/cassandra/db/RangeTombstone.java | 8 +++++- .../db/compaction/LazilyCompactedRow.java | 3 ++- .../apache/cassandra/db/RangeTombstoneTest.java | 27 ++++++++++++++++++++ 5 files changed, 38 insertions(+), 3 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/cassandra/blob/29befa18/CHANGES.txt ---------------------------------------------------------------------- diff --cc CHANGES.txt index 9c6bd61,d27be1f..abdd561 --- a/CHANGES.txt +++ b/CHANGES.txt @@@ -1,80 -1,5 +1,81 @@@ -1.2.19 +2.0.11: + * 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: + * Track expired tombstones (CASSANDRA-7810) * Validate empty cell names from counter updates (CASSANDRA-7798) * Improve PasswordAuthenticator default super user setup (CASSANDRA-7788) * Remove duplicates from StorageService.getJoiningNodes (CASSANDRA-7478) http://git-wip-us.apache.org/repos/asf/cassandra/blob/29befa18/src/java/org/apache/cassandra/db/ColumnIndex.java ---------------------------------------------------------------------- diff --cc src/java/org/apache/cassandra/db/ColumnIndex.java index f6b38b2,284def5..eda275d --- a/src/java/org/apache/cassandra/db/ColumnIndex.java +++ b/src/java/org/apache/cassandra/db/ColumnIndex.java @@@ -185,11 -182,12 +185,11 @@@ public class ColumnInde lastBlockClosing = column; } - if (output != null) - atomSerializer.serializeForSSTable(column, output); + maybeWriteRowHeader(); + atomSerializer.serializeForSSTable(column, output); // TODO: Should deal with removing unneeded tombstones - tombstoneTracker.update(column); - if (tombstoneTracker != null) - tombstoneTracker.update(column, false); ++ tombstoneTracker.update(column, false); lastColumn = column; } http://git-wip-us.apache.org/repos/asf/cassandra/blob/29befa18/src/java/org/apache/cassandra/db/RangeTombstone.java ---------------------------------------------------------------------- diff --cc src/java/org/apache/cassandra/db/RangeTombstone.java index c943ad7,90b72b7..16fc27a --- a/src/java/org/apache/cassandra/db/RangeTombstone.java +++ b/src/java/org/apache/cassandra/db/RangeTombstone.java @@@ -189,10 -195,10 +193,10 @@@ public class RangeTombstone extends Int /** * Update this tracker given an {@code atom}. - * If column is a IColumn, check if any tracked range is useless and + * If column is a Column, check if any tracked range is useless and * can be removed. If it is a RangeTombstone, add it to this tracker. */ - public void update(OnDiskAtom atom) + public void update(OnDiskAtom atom, boolean isExpired) { if (atom instanceof RangeTombstone) { http://git-wip-us.apache.org/repos/asf/cassandra/blob/29befa18/src/java/org/apache/cassandra/db/compaction/LazilyCompactedRow.java ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/cassandra/blob/29befa18/test/unit/org/apache/cassandra/db/RangeTombstoneTest.java ---------------------------------------------------------------------- diff --cc test/unit/org/apache/cassandra/db/RangeTombstoneTest.java index 80982cd,15db2f6..7f1238f --- a/test/unit/org/apache/cassandra/db/RangeTombstoneTest.java +++ b/test/unit/org/apache/cassandra/db/RangeTombstoneTest.java @@@ -110,6 -101,33 +110,33 @@@ public class RangeTombstoneTest extend assert !isLive(cf, cf.getColumn(b(i))) : "Column " + i + " shouldn't be live"; } + + @Test + public void test7810() throws ExecutionException, InterruptedException, IOException + { + DatabaseDescriptor.setInMemoryCompactionLimit(0); - Table table = Table.open(KSNAME); - ColumnFamilyStore cfs = table.getColumnFamilyStore(CFNAME); ++ Keyspace ks = Keyspace.open(KSNAME); ++ ColumnFamilyStore cfs = ks.getColumnFamilyStore(CFNAME); + cfs.metadata.gcGraceSeconds(2); + + String key = "7810"; + RowMutation rm; + rm = new RowMutation(KSNAME, ByteBufferUtil.bytes(key)); + for (int i = 10; i < 20; i++) + add(rm, i, 0); + rm.apply(); + cfs.forceBlockingFlush(); + + rm = new RowMutation(KSNAME, ByteBufferUtil.bytes(key)); + ColumnFamily cf = rm.addOrGet(CFNAME); + cf.delete(new DeletionInfo(b(10),b(11), cfs.getComparator(), 1, 1)); + rm.apply(); + cfs.forceBlockingFlush(); + Thread.sleep(5); + cfs.forceMajorCompaction(); - assertEquals(8, Util.getColumnFamily(table, Util.dk(key), CFNAME).getColumnCount()); ++ assertEquals(8, Util.getColumnFamily(ks, Util.dk(key), CFNAME).getColumnCount()); + } + @Test public void test7808_1() throws ExecutionException, InterruptedException {