Details
-
Improvement
-
Status: Resolved
-
Normal
-
Resolution: Fixed
-
Run under macOS 10.13.6, with patch (attached, but also https://github.com/jonmeredith/cassandra/tree/failing-burn-test)
Description
The LongBufferPoolTest from the burn tests fails with an assertion error. I added a build target to run individual burn tests, and {jasobrown} gave a fix for the uninitialized test setup (attached), however the test now fails on an assertion about recycling buffers.
To reproduce (with patch applied)
ant burn-testsome -Dtest.name=org.apache.cassandra.utils.memory.LongBufferPoolTest -Dtest.methods=testAllocate
Output
[junit] Testcase: testAllocate(org.apache.cassandra.utils.memory.LongBufferPoolTest): FAILED
[junit] null
[junit] junit.framework.AssertionFailedError
[junit] at org.apache.cassandra.utils.memory.BufferPool$Debug.check(BufferPool.java:204)
[junit] at org.apache.cassandra.utils.memory.BufferPool.assertAllRecycled(BufferPool.java:181)
[junit] at org.apache.cassandra.utils.memory.LongBufferPoolTest.testAllocate(LongBufferPoolTest.java:350)
[junit] at org.apache.cassandra.utils.memory.LongBufferPoolTest.testAllocate(LongBufferPoolTest.java:54)
All major branches from 3.0 and later have issues, however the trunk branch also warns about references not being released before the reference is garbage collected.
[junit] ERROR [Reference-Reaper:1] 2018-09-25 13:59:54,089 Ref.java:224 - LEAK DETECTED: a reference (org.apache.cassandra.utils.concurrent.Ref$State@7f58d19a) to @623704362 was not released before the reference was garbage collected
{{ [junit] ERROR [Reference-Reaper:1] 2018-09-25 13:59:54,089 Ref.java:255 - Allocate trace org.apache.cassandra.utils.concurrent.Ref$State@7f58d19a:}}
{{ [junit] Thread[pool-2-thread-24,5,main]}}
{{ [junit] at java.lang.Thread.getStackTrace(Thread.java:1559)}}
{{ [junit] at org.apache.cassandra.utils.concurrent.Ref$Debug.<init>(Ref.java:245)}}
{{ [junit] at org.apache.cassandra.utils.concurrent.Ref$State.<init>(Ref.java:175)}}
{{ [junit] at org.apache.cassandra.utils.concurrent.Ref.<init>(Ref.java:97)}}
{{ [junit] at org.apache.cassandra.utils.memory.BufferPool$Chunk.setAttachment(BufferPool.java:663)}}
{{ [junit] at org.apache.cassandra.utils.memory.BufferPool$Chunk.get(BufferPool.java:803)}}
{{ [junit] at org.apache.cassandra.utils.memory.BufferPool$Chunk.get(BufferPool.java:793)}}
{{ [junit] at org.apache.cassandra.utils.memory.BufferPool$LocalPool.get(BufferPool.java:388)}}
{{ [junit] at org.apache.cassandra.utils.memory.BufferPool.maybeTakeFromPool(BufferPool.java:143)}}
{{ [junit] at org.apache.cassandra.utils.memory.BufferPool.takeFromPool(BufferPool.java:115)}}
{{ [junit] at org.apache.cassandra.utils.memory.BufferPool.get(BufferPool.java:85)}}
{{ [junit] at org.apache.cassandra.utils.memory.LongBufferPoolTest$3.allocate(LongBufferPoolTest.java:296)}}
{{ [junit] at org.apache.cassandra.utils.memory.LongBufferPoolTest$3.testOne(LongBufferPoolTest.java:246)}}
{{ [junit] at org.apache.cassandra.utils.memory.LongBufferPoolTest$TestUntil.call(LongBufferPoolTest.java:399)}}
{{ [junit] at org.apache.cassandra.utils.memory.LongBufferPoolTest$TestUntil.call(LongBufferPoolTest.java:379)}}
{{ [junit] at java.util.concurrent.FutureTask.run(FutureTask.java:266)}}
{{ [junit] at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)}}
{{ [junit] at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)}}
{{ [junit] at java.lang.Thread.run(Thread.java:748)}}
Perhaps the environment is not being set up correctly for the tests.