You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cassandra.apache.org by ma...@apache.org on 2024/05/10 17:37:18 UTC
(cassandra) 03/16: Ninja for CASSANDRA-19305: Disable EphemeralRead by default to get benchmarks stable
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 <dc...@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-unsubscribe@cassandra.apache.org
For additional commands, e-mail: commits-help@cassandra.apache.org