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 2025/04/16 04:08:36 UTC
(cassandra) branch cassandra-4.0 updated: Avoid computing prepared statement size for unprepared batches
This is an automated email from the ASF dual-hosted git repository.
maedhroz pushed a commit to branch cassandra-4.0
in repository https://gitbox.apache.org/repos/asf/cassandra.git
The following commit(s) were added to refs/heads/cassandra-4.0 by this push:
new 78290bed45 Avoid computing prepared statement size for unprepared batches
78290bed45 is described below
commit 78290bed4518d403407398331673bf35a37c5011
Author: Caleb Rackliffe <ca...@gmail.com>
AuthorDate: Tue Apr 15 10:11:45 2025 -0500
Avoid computing prepared statement size for unprepared batches
patch by Caleb Rackliffe; reviewed by Berenguer Blasi and Marcus Eriksson for CASSANDRA-20556
---
CHANGES.txt | 1 +
src/java/org/apache/cassandra/cql3/QueryProcessor.java | 10 +++++++++-
.../org/apache/cassandra/transport/messages/BatchMessage.java | 2 +-
3 files changed, 11 insertions(+), 2 deletions(-)
diff --git a/CHANGES.txt b/CHANGES.txt
index 25aea7b20a..67672cd0c5 100644
--- a/CHANGES.txt
+++ b/CHANGES.txt
@@ -1,4 +1,5 @@
4.0.18
+ * Avoid computing prepared statement size for unprepared batches (CASSANDRA-20556)
* Fix Dropwizard Meter causes timeouts when infrequently used (CASSANDRA-19332)
* Update OWASP dependency checker to version 12.1.0 (CASSANDRA-20501)
* Suppress CVE-2025-25193 (CASSANDRA-20504)
diff --git a/src/java/org/apache/cassandra/cql3/QueryProcessor.java b/src/java/org/apache/cassandra/cql3/QueryProcessor.java
index 910f8c79f8..c1045548b8 100644
--- a/src/java/org/apache/cassandra/cql3/QueryProcessor.java
+++ b/src/java/org/apache/cassandra/cql3/QueryProcessor.java
@@ -392,6 +392,11 @@ public class QueryProcessor implements QueryHandler
}
public static Prepared parseAndPrepare(String query, ClientState clientState, boolean isInternal) throws RequestValidationException
+ {
+ return parseAndPrepare(query, clientState, isInternal, true);
+ }
+
+ public static Prepared parseAndPrepare(String query, ClientState clientState, boolean isInternal, boolean measure) throws RequestValidationException
{
CQLStatement.Raw raw = parseStatement(query);
@@ -416,7 +421,10 @@ public class QueryProcessor implements QueryHandler
res = new Prepared(statement, "", fullyQualified, keyspace);
else
res = new Prepared(statement, query, fullyQualified, keyspace);
- res.pstmntSize = measurePstmnt(res);
+
+ // Some prepared statements will not be cached and therefore do not require a pre-computed size.
+ if (measure)
+ res.pstmntSize = measurePstmnt(res);
return res;
}
diff --git a/src/java/org/apache/cassandra/transport/messages/BatchMessage.java b/src/java/org/apache/cassandra/transport/messages/BatchMessage.java
index afc308aee4..071741509e 100644
--- a/src/java/org/apache/cassandra/transport/messages/BatchMessage.java
+++ b/src/java/org/apache/cassandra/transport/messages/BatchMessage.java
@@ -184,7 +184,7 @@ public class BatchMessage extends Message.Request
{
p = QueryProcessor.parseAndPrepare((String) query,
state.getClientState().cloneWithKeyspaceIfSet(options.getKeyspace()),
- false);
+ false, false);
}
else
{
---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@cassandra.apache.org
For additional commands, e-mail: commits-help@cassandra.apache.org