[ https://issues.apache.org/jira/browse/CASSANDRA-6369?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13825381#comment-13825381 ]
Lyuben Todorov commented on CASSANDRA-6369: ------------------------------------------- LGTM. > Fix prepared statement size computation > --------------------------------------- > > Key: CASSANDRA-6369 > URL: https://issues.apache.org/jira/browse/CASSANDRA-6369 > Project: Cassandra > Issue Type: Bug > Reporter: Sylvain Lebresne > Assignee: Sylvain Lebresne > Fix For: 1.2.12, 2.0.3 > > Attachments: 6369.txt > > > When computed the size of CQLStatement to limit the prepared statement cache > (CASSANDRA-6107), we overestimate the actual memory used because the > statement include a reference to the table CFMetaData which measureDeep > counts. And as it happens, that reference is big: on a simple test preparing > a very trivial select statement, I was able to only prepare 87 statements > before some started to be evicted because each statement was more than 93K > big and more than 92K of that was the CFMetaData object. As it happens there > is no reason to account the CFMetaData object at all since it's in memory > anyway whether or not there is prepared statements or not. > Attaching a simple (if not extremely elegant) patch to remove what we don't > care about of the computation. Another solution would be to use the > MemoryMeter.withTrackerProvider option as we do in Memtable, but in the > QueryProcessor case we currently use only one MemoryMeter, not one per CF, so > it didn't felt necessarilly cleaner. We could create one-shot MemoryMeter > object each time we need to measure a CQLStatement but that doesn't feel a > lot simpler/cleaner either. But if someone feels religious about some other > solution, I don't care. -- This message was sent by Atlassian JIRA (v6.1#6144)