From 9c8d949301f1f082362225934cfeddd0d2cbe982 Mon Sep 17 00:00:00 2001 From: Jonathan Ellis Date: Wed, 23 Jan 2013 19:52:05 -0600 Subject: [PATCH] fix sstable maxtimestamp forrow deletes andpre-1.1.1 sstables patch by jbellis; reviewed by slebresne for CASSANDRA-5153 --- CHANGES.txt | 1 + .../org/apache/cassandra/db/compaction/LazilyCompactedRow.java | 3 ++- src/java/org/apache/cassandra/io/sstable/SSTableMetadata.java | 2 +- 3 files changed, 4 insertions(+), 2 deletions(-) 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;