This is an automated email from the ASF dual-hosted git repository.

maedhroz pushed a commit to branch cep-15-accord
in repository https://gitbox.apache.org/repos/asf/cassandra.git

commit 3d93925ed460f1b18b0c30da7b7a370712341c37
Author: ci worker <dcapw...@apache.org>
AuthorDate: Thu Mar 28 20:03:39 2024 -0700

    Ninja for CASSANDRA-19305: Disable EphemeralRead by default to get 
benchmarks stable
---
 src/java/org/apache/cassandra/config/AccordSpec.java                | 1 +
 src/java/org/apache/cassandra/config/DatabaseDescriptor.java        | 5 +++++
 .../org/apache/cassandra/cql3/statements/TransactionStatement.java  | 6 ++++--
 src/java/org/apache/cassandra/service/StorageProxy.java             | 2 +-
 4 files changed, 11 insertions(+), 3 deletions(-)

diff --git a/src/java/org/apache/cassandra/config/AccordSpec.java 
b/src/java/org/apache/cassandra/config/AccordSpec.java
index e76745a233..ab80ec4b32 100644
--- a/src/java/org/apache/cassandra/config/AccordSpec.java
+++ b/src/java/org/apache/cassandra/config/AccordSpec.java
@@ -69,4 +69,5 @@ public class AccordSpec
      * default transactional mode for tables created by this node when no 
transactional mode has been specified in the DDL
      */
     public TransactionalMode default_transactional_mode = 
TransactionalMode.off;
+    public boolean ephemeralReadEnabled = false;
 }
diff --git a/src/java/org/apache/cassandra/config/DatabaseDescriptor.java 
b/src/java/org/apache/cassandra/config/DatabaseDescriptor.java
index e91f1f833c..952e10ef1e 100644
--- a/src/java/org/apache/cassandra/config/DatabaseDescriptor.java
+++ b/src/java/org/apache/cassandra/config/DatabaseDescriptor.java
@@ -5396,4 +5396,9 @@ public class DatabaseDescriptor
     {
         return conf.triggers_policy;
     }
+
+    public static boolean getAccordEphemeralReadEnabledEnabled()
+    {
+        return conf.accord.ephemeralReadEnabled;
+    }
 }
diff --git 
a/src/java/org/apache/cassandra/cql3/statements/TransactionStatement.java 
b/src/java/org/apache/cassandra/cql3/statements/TransactionStatement.java
index fa09b8ec7e..68a8fd13f2 100644
--- a/src/java/org/apache/cassandra/cql3/statements/TransactionStatement.java
+++ b/src/java/org/apache/cassandra/cql3/statements/TransactionStatement.java
@@ -331,8 +331,10 @@ public class TransactionStatement implements 
CQLStatement.CompositeCQLStatement,
             List<TxnNamedRead> reads = createNamedReads(options, state, 
ImmutableMap.of(), keySet::add);
             Keys txnKeys = toKeys(keySet);
             TxnRead read = createTxnRead(reads, txnKeys, null);
-            Txn.Kind kind = txnKeys.size() == 1 && 
transactionalModeForSingleKey(txnKeys) == TransactionalMode.full
-                            ? EphemeralRead : Read;
+            Txn.Kind kind = txnKeys.size() == 1
+                    && transactionalModeForSingleKey(txnKeys) == 
TransactionalMode.full
+                    && 
DatabaseDescriptor.getAccordEphemeralReadEnabledEnabled()
+                    ? EphemeralRead : Read;
             return new Txn.InMemory(kind, txnKeys, read, TxnQuery.ALL, null);
         }
         else
diff --git a/src/java/org/apache/cassandra/service/StorageProxy.java 
b/src/java/org/apache/cassandra/service/StorageProxy.java
index 198d963057..cbf51037ca 100644
--- a/src/java/org/apache/cassandra/service/StorageProxy.java
+++ b/src/java/org/apache/cassandra/service/StorageProxy.java
@@ -2028,7 +2028,7 @@ public class StorageProxy implements StorageProxyMBean
         consistencyLevel = 
transactionalMode.readCLForStrategy(consistencyLevel);
         TxnRead read = TxnRead.createSerialRead(readCommand, consistencyLevel);
         Invariants.checkState(read.keys().size() == 1, "Ephemeral reads are 
only strict-serializable for single partition reads");
-        Txn txn = new Txn.InMemory(transactionalMode == TransactionalMode.full 
? EphemeralRead : Read, read.keys(), read, TxnQuery.ALL, null);
+        Txn txn = new Txn.InMemory(transactionalMode == TransactionalMode.full 
&& DatabaseDescriptor.getAccordEphemeralReadEnabledEnabled() ? EphemeralRead : 
Read, read.keys(), read, TxnQuery.ALL, null);
         IAccordService accordService = AccordService.instance();
         TxnResult txnResult = accordService.coordinate(txn, consistencyLevel, 
queryStartNanoTime);
         if (txnResult.kind() == retry_new_protocol)


---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscr...@cassandra.apache.org
For additional commands, e-mail: commits-h...@cassandra.apache.org

Reply via email to