diff --git a/CHANGES.txt b/CHANGES.txt index 9cdb02a138..61bcf603aa 100644 --- a/CHANGES.txt +++ b/CHANGES.txt @@ -1,6 +1,7 @@ 1.1.10 * fix saved key cache not loading at startup (CASSANDRA-5166) * fix ConcurrentModificationException in getBootstrapSource (CASSANDRA-5170) + * fix sstable maxtimestamp for row deletes and pre-1.1.1 sstables (CASSANDRA-5153) 1.1.9 diff --git a/src/java/org/apache/cassandra/db/compaction/LazilyCompactedRow.java b/src/java/org/apache/cassandra/db/compaction/LazilyCompactedRow.java index d82abf8e68..37de137386 100644 --- a/src/java/org/apache/cassandra/db/compaction/LazilyCompactedRow.java +++ b/src/java/org/apache/cassandra/db/compaction/LazilyCompactedRow.java @@ -91,7 +91,8 @@ public class LazilyCompactedRow extends AbstractCompactedRow implements IIterabl // (however, if there are zero columns, iterator() will not be called by ColumnIndexer and reducer will be null) columnCount = reducer == null ? 0 : reducer.size; columnSerializedSize = reducer == null ? 0 : reducer.serializedSize; - maxTimestamp = reducer == null ? Long.MIN_VALUE : reducer.maxTimestampSeen; + long rowTombstone = emptyColumnFamily.getMarkedForDeleteAt(); + maxTimestamp = reducer == null ? rowTombstone : Math.max(rowTombstone, reducer.maxTimestampSeen); reducer = null; } diff --git a/src/java/org/apache/cassandra/io/sstable/SSTableMetadata.java b/src/java/org/apache/cassandra/io/sstable/SSTableMetadata.java index 302fb50cba..99ced30196 100644 --- a/src/java/org/apache/cassandra/io/sstable/SSTableMetadata.java +++ b/src/java/org/apache/cassandra/io/sstable/SSTableMetadata.java @@ -225,7 +225,7 @@ public class SSTableMetadata } long maxTimestamp = desc.containsTimestamp() ? dis.readLong() : Long.MIN_VALUE; if (!desc.tracksMaxTimestamp) // see javadoc to Descriptor.containsTimestamp - maxTimestamp = Long.MIN_VALUE; + maxTimestamp = Long.MAX_VALUE; double compressionRatio = desc.hasCompressionRatio ? dis.readDouble() : Double.MIN_VALUE;