Caleb Rackliffe created CASSANDRA-16119:
-------------------------------------------

             Summary: MockSchema's SSTableReader creation leaks FileHandle and 
Channel instances
                 Key: CASSANDRA-16119
                 URL: https://issues.apache.org/jira/browse/CASSANDRA-16119
             Project: Cassandra
          Issue Type: Bug
          Components: Test/unit
            Reporter: Caleb Rackliffe
            Assignee: Caleb Rackliffe


{{MockSchema}} creates {{SSTableReader}} instances for testing, but when it 
does, it doesn’t seem to ever close the {{FileHandle}} and {{Channel}} 
instances from which copies are made for the actual readers. ({{FileHandle}} 
itself also internally copies the channel on creation.) This can trigger leak 
detection, although perhaps not reliably, from tests like 
{{AntiCompactionTest}}. A couple well-placed {{try-with-resources}} blocks 
should help us avoid this (and shouldn't risk closing anything too early, since 
the close methods for handles and channels seem only to do reference 
bookkeeping anyway).


Example:

{noformat}
[junit-timeout] ERROR 16:35:47,747 LEAK DETECTED: a reference 
(org.apache.cassandra.utils.concurrent.Ref$State@487c0fdb) to class 
org.apache.cassandra.io.util.FileHandle$Cleanup@2072030898:/var/folders/4d/zfjs7m7s6x5_l93k33r5k6680000gn/T/mocksegmentedfile0tmp
 was not released before the reference was garbage collected
[junit-timeout] ERROR 16:35:47,747 Allocate trace 
org.apache.cassandra.utils.concurrent.Ref$State@487c0fdb:
[junit-timeout] Thread[main,5,main]
[junit-timeout]         at java.lang.Thread.getStackTrace(Thread.java:1559)
[junit-timeout]         at 
org.apache.cassandra.utils.concurrent.Ref$Debug.<init>(Ref.java:249)
[junit-timeout]         at 
org.apache.cassandra.utils.concurrent.Ref$State.<init>(Ref.java:179)
[junit-timeout]         at 
org.apache.cassandra.utils.concurrent.Ref.<init>(Ref.java:101)
[junit-timeout]         at 
org.apache.cassandra.utils.concurrent.SharedCloseableImpl.<init>(SharedCloseableImpl.java:30)
[junit-timeout]         at 
org.apache.cassandra.io.util.FileHandle.<init>(FileHandle.java:74)
[junit-timeout]         at 
org.apache.cassandra.io.util.FileHandle.<init>(FileHandle.java:50)
[junit-timeout]         at 
org.apache.cassandra.io.util.FileHandle$Builder.complete(FileHandle.java:389)
[junit-timeout]         at 
org.apache.cassandra.schema.MockSchema.sstable(MockSchema.java:124)
[junit-timeout]         at 
org.apache.cassandra.schema.MockSchema.sstable(MockSchema.java:83)
{noformat}



--
This message was sent by Atlassian Jira
(v8.3.4#803005)

---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to