[ 
https://issues.apache.org/jira/browse/CASSANDRA-9194?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14507133#comment-14507133
 ] 

Benedict commented on CASSANDRA-9194:
-------------------------------------

[~jbellis]: I was referring to the behaviour in 2.1, in which we still track 
the live size from 2.0, but only for informational purposes. It's kind of 
arbitrary and definitely storage layer dependent (so subject to change), 
whereas in 2.0 I wanted to affect existing behaviour minimally. I'm a little 
tempted to suggest we drop the live size tracking entirely in 3.0. In the 
meantime we could just always count 8 bytes for the row marker, although 
arguably we should really be counting the partition key bytes as well. I have 
literally no opinion for once.

> Delete-only workloads crash Cassandra
> -------------------------------------
>
>                 Key: CASSANDRA-9194
>                 URL: https://issues.apache.org/jira/browse/CASSANDRA-9194
>             Project: Cassandra
>          Issue Type: Bug
>         Environment: 2.0.14
>            Reporter: Robert Wille
>            Assignee: Benedict
>             Fix For: 2.0.15
>
>         Attachments: 9194.txt
>
>
> The size of a tombstone is not properly accounted for in the memtable. A 
> memtable which has only tombstones will never get flushed. It will grow until 
> the JVM runs out of memory. The following program easily demonstrates the 
> problem.
> {code}
>               Cluster.Builder builder = Cluster.builder();
>               
>               Cluster c = 
> builder.addContactPoints("cas121.devf3.com").build();
>               
>               Session s = c.connect();
>                       
>               s.execute("CREATE KEYSPACE IF NOT EXISTS test WITH replication 
> = { 'class' : 'SimpleStrategy', 'replication_factor' : 1 }");
>               s.execute("CREATE TABLE IF NOT EXISTS test.test(id INT PRIMARY 
> KEY)");
>               PreparedStatement stmt = s.prepare("DELETE FROM test.test WHERE 
> id = :id");
>               int id = 0;
>               
>               while (true)
>               {
>                       s.execute(stmt.bind(id));
>                       
>                       id++;
>               }{code}
> This program should run forever, but eventually Cassandra runs out of heap 
> and craps out. You needn't wait for Cassandra to crash. If you run "nodetool 
> cfstats test.test" while it is running, you'll see Memtable cell count grow, 
> but Memtable data size will remain 0.
> This issue was fixed once before. I received a patch for version 2.0.5 (I 
> believe), which contained the fix, but the fix has apparently been lost, 
> because it is clearly broken, and I don't see the fix in the change logs.



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

Reply via email to