bereng commented on code in PR #3917:
URL: https://github.com/apache/cassandra/pull/3917#discussion_r2043828277


##########
src/java/org/apache/cassandra/db/SystemKeyspace.java:
##########
@@ -1863,16 +1864,38 @@ public static void resetPreparedStatements()
     }
 
     public static int loadPreparedStatements(TriFunction<MD5Digest, String, 
String, Boolean> onLoaded)
+    {
+        return loadPreparedStatements(onLoaded, 
QueryProcessor.PRELOAD_PREPARED_STATEMENTS_FETCH_SIZE);
+    }
+
+    public static int loadPreparedStatements(TriFunction<MD5Digest, String, 
String, Boolean> onLoaded, int pageSize)
     {
         String query = String.format("SELECT prepared_id, logged_keyspace, 
query_string FROM %s.%s", SchemaConstants.SYSTEM_KEYSPACE_NAME, 
PREPARED_STATEMENTS);
-        UntypedResultSet resultSet = executeOnceInternal(query);
+        UntypedResultSet resultSet = executeOnceInternalWithPaging(query, 
pageSize);
         int counter = 0;
+        long initialStatementsEvicted = 
QueryProcessor.metrics.preparedStatementsEvicted.getCount();
         for (UntypedResultSet.Row row : resultSet)
         {
             if 
(onLoaded.accept(MD5Digest.wrap(row.getByteArray("prepared_id")),
                                 row.getString("query_string"),
                                 row.has("logged_keyspace") ? 
row.getString("logged_keyspace") : null))
                 counter++;
+
+            if (counter % pageSize == 0
+                && QueryProcessor.metrics.preparedStatementsEvicted.getCount() 
- initialStatementsEvicted > 0)

Review Comment:
   We can't rely on the evictions counter imo. We have code in QueryProcessor 
invalidating entries, other proceses could be invalidating stuff, also iirc on 
collisions evictions where triggered inside caffeine, etc. Why not just check 
the size?
    ```
   eviction = cache.policy().eviction().orElseThrow()
   long currentWeight = eviction.weightedSize().orElseThrow()
   ```
   Give it an extra 5% (?) to accommodate for Caffeine async evictions that may 
occasionally go over the limit and we should be ok



-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: pr-unsubscr...@cassandra.apache.org

For queries about this service, please contact Infrastructure at:
us...@infra.apache.org


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

Reply via email to