Jaroslaw Grabowski created CASSANDRA-15880:
----------------------------------------------

             Summary: Memory leak in CompressedChunkReader
                 Key: CASSANDRA-15880
                 URL: https://issues.apache.org/jira/browse/CASSANDRA-15880
             Project: Cassandra
          Issue Type: Bug
          Components: Feature/Compression
            Reporter: Jaroslaw Grabowski


CompressedChunkReader uses java.lang.ThreadLocal to reuse ByteBuffer for 
compressed data. ByteBuffers leak due to peculiar ThreadLocal quality.
ThreadLocals are stored in a map, where the key is a weak reference to a 
ThreadLocal and the value is the user's object (ByteBuffer in this case). When 
a last strong reference to a ThreadLocal is lost, weak reference to ThreadLocal 
(key) is removed but the value (ByteBuffer) is kept until cleaned by 
ThreadLocal heuristic expunge mechanism. See ThreadLocal's "stale entries" for 
details.

When a number of long-living threads is high enough this results in thousands 
of ByteBuffers stored as stale entries in ThreadLocals. In a not-so-lucky 
scenario we get OutOfMemoryException.



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

---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscr...@cassandra.apache.org
For additional commands, e-mail: commits-h...@cassandra.apache.org

Reply via email to