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