Uploaded image for project: 'Cassandra'
  1. Cassandra
  2. CASSANDRA-2708

memory leak in CompactionManager's estimatedCompactions

    XMLWordPrintableJSON

Details

    • Bug
    • Status: Resolved
    • Low
    • Resolution: Fixed
    • 0.7.9, 0.8.5
    • None
    • None
    • Low

    Description

      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.

      Attachments

        1. cassandra-0.7-2708.txt
          0.9 kB
          Dan LaRocque

        Activity

          People

            dalaro Dan LaRocque
            dalaro Dan LaRocque
            Dan LaRocque
            Jonathan Ellis
            Votes:
            0 Vote for this issue
            Watchers:
            0 Start watching this issue

            Dates

              Created:
              Updated:
              Resolved: