[ https://issues.apache.org/jira/browse/CASSANDRA-9194?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14503090#comment-14503090 ]
Jim Witschey edited comment on CASSANDRA-9194 at 4/20/15 4:07 PM: ------------------------------------------------------------------ I'm afraid I don't follow. bq. This is already behaving properly in 2.1 [The results of the dtest|https://github.com/riptano/cassandra-dtest/blob/master/deletion_test.py#L44] show that the tracked memtable size is 0 in 2.1 after performing 100 deletions -- {{MemtableLiveDataSize}} is reported as 0 over JMX even when {{MemtableColumnsCount}} is 100. Is that behavior correct? I may not have been clear, but that test fails on all released 2.0 and 2.1 versions. Also, I don't understand why the amount of memory to track for tombstones is arbitrary in 2.0. was (Author: mambocab): I'm afraid I don't follow. .bq This is already behaving properly in 2.1 [The results of the dtest|https://github.com/riptano/cassandra-dtest/blob/master/deletion_test.py#L44] show that the tracked memtable size is 0 in 2.1 after performing 100 deletions -- {{MemtableLiveDataSize}} is reported as 0 over JMX even when {{MemtableColumnsCount}} is 100. Is that behavior correct? I may not have been clear, but that test fails on all released 2.0 and 2.1 versions. Also, I don't understand why the amount of memory to track for tombstones is arbitrary in 2.0. > 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)