From 860ec627a14068f5180c44b7cf47dd264978a328 Mon Sep 17 00:00:00 2001 From: Ekaterina Dimitrova Date: Fri, 15 Jul 2022 17:25:01 -0400 Subject: [PATCH] Fix issues with index_summary_resize_interval and index_summary_capacity patch by Ekaterina Dimitrova; reviewed by Andres de la Pena for CASSANDRA-17735 --- CHANGES.txt | 1 + .../org/apache/cassandra/config/DatabaseDescriptor.java | 5 +++++ .../apache/cassandra/io/sstable/IndexSummaryManager.java | 9 ++++----- .../cassandra/io/sstable/IndexSummaryManagerTest.java | 4 ++++ 4 files changed, 14 insertions(+), 5 deletions(-) diff --git a/CHANGES.txt b/CHANGES.txt index fc14c36402..181e0b4c85 100644 --- a/CHANGES.txt +++ b/CHANGES.txt @@ -1,4 +1,5 @@ 4.0.6 + * Fix Settings Virtual Table - index_summary_resize_interval and index_summary_capacity were not updated after startup (CASSANDRA-17735) * Clean up ScheduledExecutors, CommitLog, and MessagingService shutdown for in-JVM dtests (CASSANDRA-17731) diff --git a/src/java/org/apache/cassandra/config/DatabaseDescriptor.java b/src/java/org/apache/cassandra/config/DatabaseDescriptor.java index 0bfb18e3e8..f1dc6ef5c5 100644 --- a/src/java/org/apache/cassandra/config/DatabaseDescriptor.java +++ b/src/java/org/apache/cassandra/config/DatabaseDescriptor.java @@ -2868,6 +2868,11 @@ public class DatabaseDescriptor return conf.index_summary_resize_interval_in_minutes; } + public static void setIndexSummaryResizeIntervalInMinutes(int value) + { + conf.index_summary_resize_interval_in_minutes = value; + } + public static boolean hasLargeAddressSpace() { // currently we just check if it's a 64bit arch, but any we only really care if the address space is large diff --git a/src/java/org/apache/cassandra/io/sstable/IndexSummaryManager.java b/src/java/org/apache/cassandra/io/sstable/IndexSummaryManager.java index 4147ce5c26..396801a8cd 100644 --- a/src/java/org/apache/cassandra/io/sstable/IndexSummaryManager.java +++ b/src/java/org/apache/cassandra/io/sstable/IndexSummaryManager.java @@ -61,7 +61,6 @@ public class IndexSummaryManager implements IndexSummaryManagerMBean public static final String MBEAN_NAME = "org.apache.cassandra.db:type=IndexSummaries"; public static final IndexSummaryManager instance; - private int resizeIntervalInMinutes = 0; private long memoryPoolBytes; private final DebuggableScheduledThreadPoolExecutor executor; @@ -90,13 +89,13 @@ public class IndexSummaryManager implements IndexSummaryManagerMBean public int getResizeIntervalInMinutes() { - return resizeIntervalInMinutes; + return DatabaseDescriptor.getIndexSummaryResizeIntervalInMinutes(); } public void setResizeIntervalInMinutes(int resizeIntervalInMinutes) { - int oldInterval = this.resizeIntervalInMinutes; - this.resizeIntervalInMinutes = resizeIntervalInMinutes; + int oldInterval = getResizeIntervalInMinutes(); + DatabaseDescriptor.setIndexSummaryResizeIntervalInMinutes(resizeIntervalInMinutes); long initialDelay; if (future != null) @@ -111,7 +110,7 @@ public class IndexSummaryManager implements IndexSummaryManagerMBean initialDelay = resizeIntervalInMinutes; } - if (this.resizeIntervalInMinutes < 0) + if (resizeIntervalInMinutes < 0) { future = null; return; diff --git a/test/unit/org/apache/cassandra/io/sstable/IndexSummaryManagerTest.java b/test/unit/org/apache/cassandra/io/sstable/IndexSummaryManagerTest.java index 08bd67cc18..05cbb0b8b2 100644 --- a/test/unit/org/apache/cassandra/io/sstable/IndexSummaryManagerTest.java +++ b/test/unit/org/apache/cassandra/io/sstable/IndexSummaryManagerTest.java @@ -36,6 +36,7 @@ import org.slf4j.LoggerFactory; import org.apache.cassandra.SchemaLoader; import org.apache.cassandra.Util; import org.apache.cassandra.concurrent.NamedThreadFactory; +import org.apache.cassandra.config.DatabaseDescriptor; import org.apache.cassandra.db.ColumnFamilyStore; import org.apache.cassandra.db.Keyspace; import org.apache.cassandra.db.RowUpdateBuilder; @@ -544,13 +545,16 @@ public class IndexSummaryManagerTest // resize interval manager.setResizeIntervalInMinutes(-1); + assertEquals(-1, DatabaseDescriptor.getIndexSummaryResizeIntervalInMinutes()); assertNull(manager.getTimeToNextResize(TimeUnit.MINUTES)); manager.setResizeIntervalInMinutes(10); assertEquals(10, manager.getResizeIntervalInMinutes()); + assertEquals(10, DatabaseDescriptor.getIndexSummaryResizeIntervalInMinutes()); assertEquals(10, manager.getTimeToNextResize(TimeUnit.MINUTES), 1); manager.setResizeIntervalInMinutes(15); assertEquals(15, manager.getResizeIntervalInMinutes()); + assertEquals(15, DatabaseDescriptor.getIndexSummaryResizeIntervalInMinutes()); assertEquals(15, manager.getTimeToNextResize(TimeUnit.MINUTES), 2); // memory pool capacity