Merge branch cassandra-3.0 into cassandra-3.11
Project: http://git-wip-us.apache.org/repos/asf/cassandra/repo Commit: http://git-wip-us.apache.org/repos/asf/cassandra/commit/6b87e49c Tree: http://git-wip-us.apache.org/repos/asf/cassandra/tree/6b87e49c Diff: http://git-wip-us.apache.org/repos/asf/cassandra/diff/6b87e49c Branch: refs/heads/cassandra-3.11 Commit: 6b87e49c377731b0347ce2a0fb2db3da2a13ec3f Parents: 420c91c 462b9cf Author: Benjamin Lerer <b.le...@gmail.com> Authored: Tue Apr 4 12:01:07 2017 +0200 Committer: Benjamin Lerer <b.le...@gmail.com> Committed: Tue Apr 4 12:01:07 2017 +0200 ---------------------------------------------------------------------- CHANGES.txt | 1 + src/java/org/apache/cassandra/db/LegacyLayout.java | 12 ++++++++++-- 2 files changed, 11 insertions(+), 2 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/cassandra/blob/6b87e49c/CHANGES.txt ---------------------------------------------------------------------- diff --cc CHANGES.txt index fc7a2bb,4126b07..e63e266 --- a/CHANGES.txt +++ b/CHANGES.txt @@@ -1,24 -1,5 +1,25 @@@ -3.0.13 +3.11.0 + * Fix testLimitSSTables flake caused by concurrent flush (CASSANDRA-12820) + * cdc column addition strikes again (CASSANDRA-13382) + * Fix static column indexes (CASSANDRA-13277) + * DataOutputBuffer.asNewBuffer broken (CASSANDRA-13298) + * unittest CipherFactoryTest failed on MacOS (CASSANDRA-13370) + * Forbid SELECT restrictions and CREATE INDEX over non-frozen UDT columns (CASSANDRA-13247) + * Default logging we ship will incorrectly print "?:?" for "%F:%L" pattern (CASSANDRA-13317) + * Possible AssertionError in UnfilteredRowIteratorWithLowerBound (CASSANDRA-13366) + * Support unaligned memory access for AArch64 (CASSANDRA-13326) + * Improve SASI range iterator efficiency on intersection with an empty range (CASSANDRA-12915). + * Fix equality comparisons of columns using the duration type (CASSANDRA-13174) + * Obfuscate password in stress-graphs (CASSANDRA-12233) + * Move to FastThreadLocalThread and FastThreadLocal (CASSANDRA-13034) + * nodetool stopdaemon errors out (CASSANDRA-13030) + * Tables in system_distributed should not use gcgs of 0 (CASSANDRA-12954) + * Fix primary index calculation for SASI (CASSANDRA-12910) + * More fixes to the TokenAllocator (CASSANDRA-12990) + * NoReplicationTokenAllocator should work with zero replication factor (CASSANDRA-12983) + * Address message coalescing regression (CASSANDRA-12676) +Merged from 3.0: + * Fix the conversion of 2.X expired rows without regular column data (CASSANDRA-13395) * Fix hint delivery when using ext+internal IPs with prefer_local enabled (CASSANDRA-13020) * Fix possible NPE on upgrade to 3.0/3.X in case of IO errors (CASSANDRA-13389) * Legacy deserializer can create empty range tombstones (CASSANDRA-13341) http://git-wip-us.apache.org/repos/asf/cassandra/blob/6b87e49c/src/java/org/apache/cassandra/db/LegacyLayout.java ---------------------------------------------------------------------- diff --cc src/java/org/apache/cassandra/db/LegacyLayout.java index e218fd1,669fb1c..9a7131e --- a/src/java/org/apache/cassandra/db/LegacyLayout.java +++ b/src/java/org/apache/cassandra/db/LegacyLayout.java @@@ -1195,15 -1199,17 +1200,18 @@@ public abstract class LegacyLayou { // It's the row marker assert !cell.value.hasRemaining(); + - // In 2.1, the row marker expired cell might have been converted into a deleted one by compaction. So, - // we need to set the primary key liveness info only if the cell is not a deleted one. + // In 2.1, the row marker expired cell might have been converted into a deleted one by compaction. + // If we do not set the primary key liveness info for this row and it does not contains any regular columns + // the row will be empty. To avoid that, we reuse the localDeletionTime but use a fake TTL. // The only time in 2.x that we actually delete a row marker is in 2i tables, so in that case we do // want to actually propagate the row deletion. (CASSANDRA-13320) if (!cell.isTombstone()) - builder.addPrimaryKeyLivenessInfo(LivenessInfo.create(cell.timestamp, cell.ttl, cell.localDeletionTime)); + builder.addPrimaryKeyLivenessInfo(LivenessInfo.withExpirationTime(cell.timestamp, cell.ttl, cell.localDeletionTime)); else if (metadata.isIndex()) builder.addRowDeletion(Row.Deletion.regular(new DeletionTime(cell.timestamp, cell.localDeletionTime))); + else + builder.addPrimaryKeyLivenessInfo(LivenessInfo.create(cell.timestamp, FAKE_TTL, cell.localDeletionTime)); } else {