[ https://issues.apache.org/jira/browse/CASSANDRA-11176?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15173853#comment-15173853 ]
Ariel Weisberg commented on CASSANDRA-11176: -------------------------------------------- Also I think those tests are failing because enabling the loop detection caused it to detect loops and the test harness is seeing the errors and complaining. > SSTableRewriter.InvalidateKeys should have a weak reference to cache > -------------------------------------------------------------------- > > Key: CASSANDRA-11176 > URL: https://issues.apache.org/jira/browse/CASSANDRA-11176 > Project: Cassandra > Issue Type: Bug > Components: Core > Reporter: Jeremiah Jordan > Assignee: Marcus Eriksson > Fix For: 2.1.x, 2.2.x, 3.0.x, 3.x > > > From [~aweisberg] > bq. The SSTableReader.DropPageCache runnable references > SSTableRewriter.InvalidateKeys which references the cache. The cache > reference should be a WeakReference. > {noformat} > ERROR [Strong-Reference-Leak-Detector:1] 2016-02-17 14:51:52,111 > NoSpamLogger.java:97 - Strong self-ref loop detected > [/var/lib/cassandra/data/keyspace1/standard1-990bc741d56411e591d5590d7a7ad312/ma-20-big, > private java.lang.Runnable > org.apache.cassandra.io.sstable.format.SSTableReader$InstanceTidier.runOnClose-org.apache.cassandra.io.sstable.format.SSTableReader$DropPageCache, > final java.lang.Runnable > org.apache.cassandra.io.sstable.format.SSTableReader$DropPageCache.andThen-org.apache.cassandra.io.sstable.SSTableRewriter$InvalidateKeys, > final org.apache.cassandra.cache.InstrumentingCache > org.apache.cassandra.io.sstable.SSTableRewriter$InvalidateKeys.cache-org.apache.cassandra.cache.AutoSavingCache, > protected volatile java.util.concurrent.ScheduledFuture > org.apache.cassandra.cache.AutoSavingCache.saveTask-java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask, > final java.util.concurrent.ScheduledThreadPoolExecutor > java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.this$0-org.apache.cassandra.concurrent.DebuggableScheduledThreadPoolExecutor, > private final java.util.concurrent.BlockingQueue > java.util.concurrent.ThreadPoolExecutor.workQueue-java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue, > private final java.util.concurrent.BlockingQueue > java.util.concurrent.ThreadPoolExecutor.workQueue-java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask, > private java.util.concurrent.Callable > java.util.concurrent.FutureTask.callable-java.util.concurrent.Executors$RunnableAdapter, > final java.lang.Runnable > java.util.concurrent.Executors$RunnableAdapter.task-org.apache.cassandra.concurrent.DebuggableScheduledThreadPoolExecutor$UncomplainingRunnable, > private final java.lang.Runnable > org.apache.cassandra.concurrent.DebuggableScheduledThreadPoolExecutor$UncomplainingRunnable.runnable-org.apache.cassandra.db.ColumnFamilyStore$3, > final org.apache.cassandra.db.ColumnFamilyStore > org.apache.cassandra.db.ColumnFamilyStore$3.this$0-org.apache.cassandra.db.ColumnFamilyStore, > public final org.apache.cassandra.db.Keyspace > org.apache.cassandra.db.ColumnFamilyStore.keyspace-org.apache.cassandra.db.Keyspace, > private final java.util.concurrent.ConcurrentMap > org.apache.cassandra.db.Keyspace.columnFamilyStores-java.util.concurrent.ConcurrentHashMap, > private final java.util.concurrent.ConcurrentMap > org.apache.cassandra.db.Keyspace.columnFamilyStores-org.apache.cassandra.db.ColumnFamilyStore, > private final org.apache.cassandra.db.lifecycle.Tracker > org.apache.cassandra.db.ColumnFamilyStore.data-org.apache.cassandra.db.lifecycle.Tracker, > final java.util.concurrent.atomic.AtomicReference > org.apache.cassandra.db.lifecycle.Tracker.view-java.util.concurrent.atomic.AtomicReference, > private volatile java.lang.Object > java.util.concurrent.atomic.AtomicReference.value-org.apache.cassandra.db.lifecycle.View, > public final java.util.List > org.apache.cassandra.db.lifecycle.View.liveMemtables-com.google.common.collect.SingletonImmutableList, > final transient java.lang.Object > com.google.common.collect.SingletonImmutableList.element-org.apache.cassandra.db.Memtable, > private final org.apache.cassandra.utils.memory.MemtableAllocator > org.apache.cassandra.db.Memtable.allocator-org.apache.cassandra.utils.memory.SlabAllocator, > private final > org.apache.cassandra.utils.memory.MemtableAllocator$SubAllocator > org.apache.cassandra.utils.memory.MemtableAllocator.onHeap-org.apache.cassandra.utils.memory.MemtableAllocator$SubAllocator, > private final org.apache.cassandra.utils.memory.MemtablePool$SubPool > org.apache.cassandra.utils.memory.MemtableAllocator$SubAllocator.parent-org.apache.cassandra.utils.memory.MemtablePool$SubPool, > final org.apache.cassandra.utils.memory.MemtablePool > org.apache.cassandra.utils.memory.MemtablePool$SubPool.this$0-org.apache.cassandra.utils.memory.SlabPool, > final org.apache.cassandra.utils.memory.MemtableCleanerThread > org.apache.cassandra.utils.memory.MemtablePool.cleaner-org.apache.cassandra.utils.memory.MemtableCleanerThread, > private java.lang.ThreadGroup java.lang.Thread.group-java.lang.ThreadGroup, > private final java.lang.ThreadGroup > java.lang.ThreadGroup.parent-java.lang.ThreadGroup, > java.lang.Thread[] java.lang.ThreadGroup.threads- > [Ljava.lang.Thread;, > java.lang.Thread[] java.lang.ThreadGroup.threads-java.lang.Thread, > private java.lang.Runnable > java.lang.Thread.target-java.util.concurrent.ThreadPoolExecutor$Worker, > final java.util.concurrent.ThreadPoolExecutor > java.util.concurrent.ThreadPoolExecutor$Worker.this$0-java.util.concurrent.ScheduledThreadPoolExecutor, > private final java.util.concurrent.BlockingQueue > java.util.concurrent.ThreadPoolExecutor.workQueue-java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue, > private final java.util.concurrent.BlockingQueue > java.util.concurrent.ThreadPoolExecutor.workQueue-java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask, > private java.util.concurrent.Callable > java.util.concurrent.FutureTask.callable-java.util.concurrent.Executors$RunnableAdapter, > final java.lang.Runnable > java.util.concurrent.Executors$RunnableAdapter.task-sun.rmi.transport.DGCImpl$1, > final sun.rmi.transport.DGCImpl > sun.rmi.transport.DGCImpl$1.this$0-sun.rmi.transport.DGCImpl, > private java.util.Map sun.rmi.transport.DGCImpl.leaseTable-java.util.HashMap, > transient java.util.HashMap$Node[] java.util.HashMap.table- > [Ljava.util.HashMap$Node;, > transient java.util.HashMap$Node[] > java.util.HashMap.table-java.util.HashMap$Node, > java.lang.Object > java.util.HashMap$Node.value-sun.rmi.transport.DGCImpl$LeaseInfo, > java.util.Set sun.rmi.transport.DGCImpl$LeaseInfo.notifySet-java.util.HashSet, > private transient java.util.HashMap java.util.HashSet.map-java.util.HashMap, > transient java.util.HashMap$Node[] java.util.HashMap.table- > [Ljava.util.HashMap$Node;, > transient java.util.HashMap$Node[] > java.util.HashMap.table-java.util.HashMap$Node, > final java.lang.Object java.util.HashMap$Node.key-sun.rmi.transport.Target, > private final sun.rmi.transport.WeakRef > sun.rmi.transport.Target.weakImpl-sun.rmi.transport.WeakRef, > private java.lang.Object > sun.rmi.transport.WeakRef.strongRef-javax.management.remote.rmi.RMIJRMPServerImpl, > private javax.management.MBeanServer > javax.management.remote.rmi.RMIServerImpl.mbeanServer-com.sun.jmx.mbeanserver.JmxMBeanServer, > private volatile javax.management.MBeanServer > com.sun.jmx.mbeanserver.JmxMBeanServer.mbsInterceptor-com.sun.jmx.interceptor.DefaultMBeanServerInterceptor, > private final transient com.sun.jmx.mbeanserver.Repository > com.sun.jmx.interceptor.DefaultMBeanServerInterceptor.repository-com.sun.jmx.mbeanserver.Repository, > private final java.util.Map > com.sun.jmx.mbeanserver.Repository.domainTb-java.util.HashMap, > transient java.util.HashMap$Node[] java.util.HashMap.table- > [Ljava.util.HashMap$Node;, > transient java.util.HashMap$Node[] > java.util.HashMap.table-java.util.HashMap$Node, > java.lang.Object java.util.HashMap$Node.value-java.util.HashMap, > transient java.util.HashMap$Node[] java.util.HashMap.table- > [Ljava.util.HashMap$Node;, > transient java.util.HashMap$Node[] > java.util.HashMap.table-java.util.HashMap$Node, > java.lang.Object > java.util.HashMap$Node.value-com.sun.jmx.mbeanserver.NamedObject, > private final javax.management.DynamicMBean > com.sun.jmx.mbeanserver.NamedObject.object-com.sun.jmx.mbeanserver.StandardMBeanSupport, > private final java.lang.Object > com.sun.jmx.mbeanserver.MBeanSupport.resource-org.apache.cassandra.db.ColumnFamilyStore, > private final org.apache.cassandra.db.lifecycle.Tracker > org.apache.cassandra.db.ColumnFamilyStore.data-org.apache.cassandra.db.lifecycle.Tracker, > public final java.util.Collection > org.apache.cassandra.db.lifecycle.Tracker.subscribers-java.util.concurrent.CopyOnWriteArrayList, > public final java.util.Collection > org.apache.cassandra.db.lifecycle.Tracker.subscribers-org.apache.cassandra.db.compaction.CompactionStrategyManager, > private volatile > org.apache.cassandra.db.compaction.AbstractCompactionStrategy > org.apache.cassandra.db.compaction.CompactionStrategyManager.repaired-org.apache.cassandra.db.compaction.LeveledCompactionStrategy, > final org.apache.cassandra.db.compaction.LeveledManifest > org.apache.cassandra.db.compaction.LeveledCompactionStrategy.manifest-org.apache.cassandra.db.compaction.LeveledManifest, > protected final java.util.List[] > org.apache.cassandra.db.compaction.LeveledManifest.generations- > [Ljava.util.List;, > protected final java.util.List[] > org.apache.cassandra.db.compaction.LeveledManifest.generations-java.util.ArrayList, > transient java.lang.Object[] > java.util.ArrayList.elementData-[Ljava.lang.Object;, > transient java.lang.Object[] > java.util.ArrayList.elementData-org.apache.cassandra.io.sstable.format.big.BigTableReader, > private final org.apache.cassandra.utils.concurrent.Ref > org.apache.cassandra.io.sstable.format.SSTableReader.selfRef-org.apache.cassandra.utils.concurrent.Ref] > {noformat} -- This message was sent by Atlassian JIRA (v6.3.4#6332)