Ivan Senic created CASSANDRA-17202:
--------------------------------------

             Summary: Avoid unnecessary String.format in QueryProcessor when 
getting stored prepared statement 
                 Key: CASSANDRA-17202
                 URL: https://issues.apache.org/jira/browse/CASSANDRA-17202
             Project: Cassandra
          Issue Type: Improvement
            Reporter: Ivan Senic
            Assignee: Ivan Senic


In the _QueryProcessor#getStoredPreparedStatement_ if the statement is found in 
the prepared statements cache, there is always unnecessary string creation 
using String.format in order to execute the _checkTrue_ assertion. The string 
construction is necessary only when the queries are not equal.


{code:java}
public static ResultMessage.Prepared getStoredPreparedStatement(String 
queryString, String clientKeyspace)
throws InvalidRequestException
{
    MD5Digest statementId = computeId(queryString, clientKeyspace);
    Prepared existing = preparedStatements.getIfPresent(statementId);
    if (existing == null)
        return null;

    checkTrue(queryString.equals(existing.rawCQLStatement),
            String.format("MD5 hash collision: query with the same MD5 hash was 
already prepared. \n Existing: '%s'", existing.rawCQLStatement));
 {code}
Hopefully the JIT can optimize this once the _checkTrue_ is inlined, but it's 
getting in my nerves as it's popping up on my flame graphs all the time.

 



--
This message was sent by Atlassian Jira
(v8.20.1#820001)

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

Reply via email to