From ae418d2a1cb89f38eaa375bd067108e50b58e08a Mon Sep 17 00:00:00 2001 From: Dmitry Konstantinov Date: Thu, 16 Apr 2026 17:53:19 +0100 Subject: [PATCH] Avoid CompactionOptions parsing for every read by WithoutPurgeableTombstones patch by Dmitry Konstantinov; reviewed by Francisco Guerrero for CASSANDRA-21294 --- CHANGES.txt | 1 + .../cassandra/db/compaction/CompactionStrategyManager.java | 2 +- src/java/org/apache/cassandra/schema/CompactionParams.java | 7 +++++++ 3 files changed, 9 insertions(+), 1 deletion(-) diff --git a/CHANGES.txt b/CHANGES.txt index 467e1975b1..b8157abc0c 100644 --- a/CHANGES.txt +++ b/CHANGES.txt @@ -1,4 +1,5 @@ 6.0-alpha2 + * Avoid CompactionOptions parsing for every read by WithoutPurgeableTombstones (CASSANDRA-21294) * Ensure schema created before 2.1 without tableId in folder name can be loaded in SnapshotLoader (CASSANDRA-21246) * Differentiate between legitimate cases where the first entry is the same as the last entry and empty bounds in SSTableCursorWriter#addIndexBlock() (CASSANDRA-21255) * Introduce minimum_threshold for data resurrection startup check (CASSANDRA-21293) diff --git a/src/java/org/apache/cassandra/db/compaction/CompactionStrategyManager.java b/src/java/org/apache/cassandra/db/compaction/CompactionStrategyManager.java index d73a3ee6e7..27bc9c117f 100644 --- a/src/java/org/apache/cassandra/db/compaction/CompactionStrategyManager.java +++ b/src/java/org/apache/cassandra/db/compaction/CompactionStrategyManager.java @@ -1403,7 +1403,7 @@ public class CompactionStrategyManager implements INotificationConsumer public boolean onlyPurgeRepairedTombstones() { - return Boolean.parseBoolean(params.options().get(AbstractCompactionStrategy.ONLY_PURGE_REPAIRED_TOMBSTONES)); + return params.onlyPurgeRepairedTombstones(); } public SSTableMultiWriter createSSTableMultiWriter(Descriptor descriptor, diff --git a/src/java/org/apache/cassandra/schema/CompactionParams.java b/src/java/org/apache/cassandra/schema/CompactionParams.java index 259c2a2d8f..9217a36376 100644 --- a/src/java/org/apache/cassandra/schema/CompactionParams.java +++ b/src/java/org/apache/cassandra/schema/CompactionParams.java @@ -112,6 +112,7 @@ public final class CompactionParams private final ImmutableMap options; private final boolean isEnabled; private final TombstoneOption tombstoneOption; + private final boolean onlyPurgeRepairedTombstones; private CompactionParams(Class klass, Map options, boolean isEnabled, TombstoneOption tombstoneOption) { @@ -119,6 +120,7 @@ public final class CompactionParams this.options = ImmutableMap.copyOf(options); this.isEnabled = isEnabled; this.tombstoneOption = tombstoneOption; + this.onlyPurgeRepairedTombstones = Boolean.parseBoolean(options.get(AbstractCompactionStrategy.ONLY_PURGE_REPAIRED_TOMBSTONES)); } public static CompactionParams create(Class klass, Map options) @@ -279,6 +281,11 @@ public final class CompactionParams return options; } + public boolean onlyPurgeRepairedTombstones() + { + return onlyPurgeRepairedTombstones; + } + public boolean isEnabled() { return isEnabled;