[ 
https://issues.apache.org/jira/browse/CASSANDRA-11176?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15173853#comment-15173853
 ] 

Ariel Weisberg edited comment on CASSANDRA-11176 at 3/1/16 2:54 PM:
--------------------------------------------------------------------

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.

If you want to break that out into a separate ticket that is fine.


was (Author: aweisberg):
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)

Reply via email to