memory leak in CompactionManager's estimatedCompactions
-------------------------------------------------------

                 Key: CASSANDRA-2708
                 URL: https://issues.apache.org/jira/browse/CASSANDRA-2708
             Project: Cassandra
          Issue Type: Bug
          Components: Core
    Affects Versions: 0.7.6
            Reporter: Dan LaRocque
            Priority: Minor


CompactionManager's estimatedCompactions map seems to hold all or most 
ColumnFamilyStores in the system as keys.  Keys are never removed from 
estimatedCompactions.

I have a project that embeds Cassandra as a storage backend.  Some of my 
integration tests create and drop a single keyspace and pair of column families 
a hundred or 150 times in one JVM.  These tests always OOM'd.  Loading some 
near-death heapdumps in mat suggested CompactionManager's estimatedCompactions 
held over 80% of total heap via its ColumnFamilyStore keys.  
estimatedCompactions had the only inbound reference to these CFSs, and the CFSs 
themselves had invalid = true.

As a workaround, I changed estimatedCompactions to a WeakReference-keyed map 
(using Guava MapMaker).  My integration tests no longer OOM.

I'm generally unfamiliar with Cassandra's guts.  I don't know whether weak 
referencing the keys of estimatedCompactions is correct (or ideal).  But, that 
did seem to confirm my guess that retained references to dead CFSs in 
estimatedCompactions were swamping my heap after lots of Keyspace+ColumnFamily 
drops.

--
This message is automatically generated by JIRA.
For more information on JIRA, see: http://www.atlassian.com/software/jira

Reply via email to