[ https://issues.apache.org/jira/browse/CASSANDRA-8631?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14280444#comment-14280444 ]
Benedict commented on CASSANDRA-8631: ------------------------------------- Do we need this test, or want to fix it? The problem is almost certainly that 1s is not frequent enough to keep anywhere near our goal memory limit when running on a local only spam test. Since we only enforce memory constraints in 2.0 by the flush queue length (by default, iirc, this is 4, so 4s have to elapse before we actually start _blocking_ writes) this happily allows us to go well over limit. It's generally a known problem in 2.0. To make it work we need to artificially run MeteredFlusher (MUCH) more frequently, at which point we aren't testing C* as it actually runs. Alternatively, we could fix a rate of work production that should guarantee 1s is often enough to keep us within our limits, but this doesn't really perform much of use that a simple unit test couldn't - it just checks metered flusher runs, not that it enforces anything much. Personally I think we should just drop this test from 2.0, since we know 2.0's metered flusher approach is a bit broken. The test functions as it was originally designed in 2.1, because memory limits are directly enforced, whereas designing a _useful_ test that also works with 2.0's semantics seems nontrivial. However making either of the two suggested modifications so it at least _appears_ to do something useful _is_ pretty trivial. So if somebody has a strong opinion on this (I don't really), please chime in! > long-test MeteredFlusherTest fails with heap OOM > ------------------------------------------------ > > Key: CASSANDRA-8631 > URL: https://issues.apache.org/jira/browse/CASSANDRA-8631 > Project: Cassandra > Issue Type: Test > Components: Tests > Environment: cassandra-2.0 commit 90780b5 > Reporter: Michael Shuler > Assignee: Benedict > Priority: Minor > Labels: unit-test > > I attempted to find a spot where this test actually passes, and I was unable > to do so. I tried back to 1.1 HEAD and various release tags under jdk7 and > jdk6 for <= 1.2 tags. In 1.2.0 with jdk6, the test times out with > java.lang.OutOfMemoryError: GC overhead limit exceeded, so it's similar. > {noformat} > [junit] Testcase: > testManyMemtables(org.apache.cassandra.db.MeteredFlusherTest): Caused an > ERROR > [junit] Java heap space > [junit] java.lang.OutOfMemoryError: Java heap space > [junit] at java.nio.HeapByteBuffer.<init>(HeapByteBuffer.java:57) > [junit] at java.nio.ByteBuffer.allocate(ByteBuffer.java:331) > [junit] at > org.apache.cassandra.utils.SlabAllocator$Region.<init>(SlabAllocator.java:157) > [junit] at > org.apache.cassandra.utils.SlabAllocator$Region.<init>(SlabAllocator.java:131) > [junit] at > org.apache.cassandra.utils.SlabAllocator.getRegion(SlabAllocator.java:101) > [junit] at > org.apache.cassandra.utils.SlabAllocator.allocate(SlabAllocator.java:73) > [junit] at > org.apache.cassandra.utils.Allocator.clone(Allocator.java:30) > [junit] at org.apache.cassandra.db.Column.localCopy(Column.java:277) > [junit] at org.apache.cassandra.db.Memtable$1.apply(Memtable.java:114) > [junit] at org.apache.cassandra.db.Memtable$1.apply(Memtable.java:111) > [junit] at > org.apache.cassandra.db.AtomicSortedColumns.addAllWithSizeDelta(AtomicSortedColumns.java:194) > [junit] at org.apache.cassandra.db.Memtable.resolve(Memtable.java:218) > [junit] at org.apache.cassandra.db.Memtable.put(Memtable.java:165) > [junit] at > org.apache.cassandra.db.ColumnFamilyStore.apply(ColumnFamilyStore.java:901) > [junit] at org.apache.cassandra.db.Keyspace.apply(Keyspace.java:374) > [junit] at org.apache.cassandra.db.Keyspace.apply(Keyspace.java:339) > [junit] at > org.apache.cassandra.db.RowMutation.applyUnsafe(RowMutation.java:216) > [junit] at > org.apache.cassandra.db.MeteredFlusherTest.testManyMemtables(MeteredFlusherTest.java:59) > [junit] > [junit] > [junit] Test org.apache.cassandra.db.MeteredFlusherTest FAILED > {noformat} -- This message was sent by Atlassian JIRA (v6.3.4#6332)