This is an automated email from the ASF dual-hosted git repository.
maedhroz pushed a commit to branch cassandra-5.0
in repository https://gitbox.apache.org/repos/asf/cassandra.git
The following commit(s) were added to refs/heads/cassandra-5.0 by this push:
new 32154eebcd Optionally force IndexStatusManager to use the optimized
index status format
32154eebcd is described below
commit 32154eebcd2e62c73f3d3a8edf62284000c742c7
Author: Caleb Rackliffe <[email protected]>
AuthorDate: Mon Feb 16 17:39:37 2026 -0600
Optionally force IndexStatusManager to use the optimized index status format
patch by Caleb Rackliffe; reviewed by Jon Meredith for CASSANDRA-21132
---
CHANGES.txt | 1 +
src/java/org/apache/cassandra/config/Config.java | 7 +++++++
src/java/org/apache/cassandra/config/DatabaseDescriptor.java | 10 ++++++++++
src/java/org/apache/cassandra/index/IndexStatusManager.java | 4 ++++
src/java/org/apache/cassandra/service/StorageService.java | 12 ++++++++++++
.../org/apache/cassandra/service/StorageServiceMBean.java | 3 +++
6 files changed, 37 insertions(+)
diff --git a/CHANGES.txt b/CHANGES.txt
index 99eb2871a9..201b3d9664 100644
--- a/CHANGES.txt
+++ b/CHANGES.txt
@@ -1,4 +1,5 @@
5.0.7
+ * Optionally force IndexStatusManager to use the optimized index status
format (CASSANDRA-21132)
* No need to evict already prepared statements, as it creates a race
condition between multiple threads (CASSANDRA-17401)
* Upgrade logback version to 1.5.18 and slf4j dependencies to 2.0.17
(CASSANDRA-21137)
* Automatically disable zero-copy streaming for legacy sstables with old
bloom filter format (CASSANDRA-21092)
diff --git a/src/java/org/apache/cassandra/config/Config.java
b/src/java/org/apache/cassandra/config/Config.java
index 2c3d79183d..9b16609154 100644
--- a/src/java/org/apache/cassandra/config/Config.java
+++ b/src/java/org/apache/cassandra/config/Config.java
@@ -883,6 +883,13 @@ public class Config
public volatile boolean drop_keyspace_enabled = true;
public volatile boolean secondary_indexes_enabled = true;
+ /**
+ * If we encounter a Gossip bug where {@link
org.apache.cassandra.gms.Gossiper#getMinVersion} is
+ * unable to accurately report a minimum version for the cluster,
optionally force the optimized
+ * index status format added in CASSANDRA-20058.
+ */
+ public volatile boolean force_optimized_index_status_format = false;
+
public volatile String default_secondary_index = CassandraIndex.NAME;
public volatile boolean default_secondary_index_enabled = true;
diff --git a/src/java/org/apache/cassandra/config/DatabaseDescriptor.java
b/src/java/org/apache/cassandra/config/DatabaseDescriptor.java
index 68be14cd8f..3361385083 100644
--- a/src/java/org/apache/cassandra/config/DatabaseDescriptor.java
+++ b/src/java/org/apache/cassandra/config/DatabaseDescriptor.java
@@ -5264,6 +5264,16 @@ public class DatabaseDescriptor
conf.sai_options.prioritize_over_legacy_index = value;
}
+ public static boolean getForceOptimizedIndexStatusFormat()
+ {
+ return conf.force_optimized_index_status_format;
+ }
+
+ public static void setForceOptimizedIndexStatusFormat(boolean value)
+ {
+ conf.force_optimized_index_status_format = value;
+ }
+
public static RepairRetrySpec getRepairRetrySpec()
{
return conf == null ? new RepairRetrySpec() : conf.repair.retries;
diff --git a/src/java/org/apache/cassandra/index/IndexStatusManager.java
b/src/java/org/apache/cassandra/index/IndexStatusManager.java
index 6ba91beb7b..31036f2ec6 100644
--- a/src/java/org/apache/cassandra/index/IndexStatusManager.java
+++ b/src/java/org/apache/cassandra/index/IndexStatusManager.java
@@ -34,6 +34,7 @@ import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.apache.cassandra.concurrent.ExecutorPlus;
+import org.apache.cassandra.config.DatabaseDescriptor;
import org.apache.cassandra.db.ConsistencyLevel;
import org.apache.cassandra.db.Keyspace;
import org.apache.cassandra.exceptions.ReadFailureException;
@@ -249,6 +250,9 @@ public class IndexStatusManager
private static boolean shouldWriteLegacyStatusFormat(CassandraVersion
minVersion)
{
+ if (DatabaseDescriptor.getForceOptimizedIndexStatusFormat())
+ return false;
+
return minVersion == null || (minVersion.major == 5 &&
minVersion.minor == 0 && minVersion.patch < 3);
}
diff --git a/src/java/org/apache/cassandra/service/StorageService.java
b/src/java/org/apache/cassandra/service/StorageService.java
index a284fa2738..0f178b00f0 100644
--- a/src/java/org/apache/cassandra/service/StorageService.java
+++ b/src/java/org/apache/cassandra/service/StorageService.java
@@ -7675,6 +7675,18 @@ public class StorageService extends
NotificationBroadcasterSupport implements IE
DatabaseDescriptor.setPrioritizeSAIOverLegacyIndex(value);
}
+ @Override
+ public boolean getForceOptimizedIndexStatusFormat()
+ {
+ return DatabaseDescriptor.getForceOptimizedIndexStatusFormat();
+ }
+
+ @Override
+ public void setForceOptimizedIndexStatusFormat(boolean value)
+ {
+ DatabaseDescriptor.setForceOptimizedIndexStatusFormat(value);
+ }
+
@Override
public void setPaxosRepairRaceWait(boolean paxosRepairRaceWait)
{
diff --git a/src/java/org/apache/cassandra/service/StorageServiceMBean.java
b/src/java/org/apache/cassandra/service/StorageServiceMBean.java
index b30929d180..875df36942 100644
--- a/src/java/org/apache/cassandra/service/StorageServiceMBean.java
+++ b/src/java/org/apache/cassandra/service/StorageServiceMBean.java
@@ -1322,6 +1322,9 @@ public interface StorageServiceMBean extends
NotificationEmitter
boolean getPrioritizeSAIOverLegacyIndex();
void setPrioritizeSAIOverLegacyIndex(boolean value);
+ boolean getForceOptimizedIndexStatusFormat();
+ void setForceOptimizedIndexStatusFormat(boolean value);
+
void setPaxosRepairRaceWait(boolean paxosRepairCoordinatorWait);
boolean getPaxosRepairRaceWait();
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]