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]

Reply via email to