From 2248780eae46d98be8a9414d3e833fb6c16c7137 Mon Sep 17 00:00:00 2001 From: blerer Date: Tue, 19 May 2015 16:12:53 +0200 Subject: [PATCH] Optimize range tombstone memory footprint patch by Benjamin Lerer; reviewed by Aleksey Yeschenko for CASSANDRA-8603 --- CHANGES.txt | 1 + src/java/org/apache/cassandra/db/RangeTombstone.java | 4 ++++ 2 files changed, 5 insertions(+) diff --git a/CHANGES.txt b/CHANGES.txt index 6fc1c9cb29..92d4d54706 100644 --- a/CHANGES.txt +++ b/CHANGES.txt @@ -1,4 +1,5 @@ 2.1.6 + * Optimize range tombstone memory footprint (CASSANDRA-8603) * Use configured gcgs in anticompaction (CASSANDRA-9397) * Warn on misuse of unlogged batches (CASSANDRA-9282) * Failure detector detects and ignores local pauses (CASSANDRA-9183) diff --git a/src/java/org/apache/cassandra/db/RangeTombstone.java b/src/java/org/apache/cassandra/db/RangeTombstone.java index 3f3d6754e1..feeadbb74a 100644 --- a/src/java/org/apache/cassandra/db/RangeTombstone.java +++ b/src/java/org/apache/cassandra/db/RangeTombstone.java @@ -273,6 +273,10 @@ public class RangeTombstone extends Interval implements { Composite max = type.serializer().deserialize(in); DeletionTime dt = DeletionTime.serializer.deserialize(in); + // If the max equals the min.end(), we can avoid keeping an extra ByteBuffer in memory by using + // min.end() instead of max + Composite minEnd = min.end(); + max = minEnd.equals(max) ? minEnd : max; return new RangeTombstone(min, max, dt); }