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