[
https://issues.apache.org/jira/browse/CASSANDRA-20591?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=18066235#comment-18066235
]
Jai Bheemsen Rao Dhanwada commented on CASSANDRA-20591:
-------------------------------------------------------
*Summary:*
The Ref leak detection mechanism intermittently logs "Strong self-ref loop
detected" during test execution. Investigation reveals that the Ref.Visitor
(the background thread responsible for graph traversal) incorrectly identifies
non-strong references, specifically
SoftReference, as part of a strong reference chain. This leads to
false-positive error logs that clutter test outputs and can be misleading
during debugging.
*Hypothesis:*
The issue stems from a narrow implementation in
org.apache.cassandra.utils.concurrent.Ref.java. The Visitor is designed to
ignore non-strong references to avoid false positives. However, the current
logic in InProgressVisit.nextChild() explicitly checks only for
WeakReference:
{code:java}
// From Ref.java
if (o instanceof WeakReference & nextField.getDeclaringClass() ==
Reference.class)
continue;
{code}
Because it does not account for java.lang.ref.SoftReference (or other potential
java.lang.ref.Reference subclasses), the Visitor uses reflection to follow the
referent field inside these objects. If a Tidy object holds a SoftReference
that eventually points back to the
GlobalState being monitored, the Visitor treats this as a strong reference loop
and logs an error, even though the GC would be able to break this loop.
*Reproduction Steps:*
The issue can be consistently reproduced with a targeted unit test:
1. Enable Ref Tracing: Set the system property cassandra.debugrefcount=true
and invoke Ref.enableTestTracing() to allow manual execution of the reference
visitor.
2. Create a Soft Loop:
* Define a Tidy object that contains a java.lang.ref.SoftReference.
* Point that SoftReference back to the Ref or GlobalState managing that
Tidy.
3. Run the Visitor: Manually trigger new Ref.Visitor().run().
4. Observe Logs: The Visitor will log an ERROR with the message Strong
self-ref loop detected, despite the reference being soft.
*Reproduction Code Example:*
{code:java}
static class SoftLoopyTidy implements RefCounted.Tidy {
public SoftReference<Object> softLoop;
@Override public void tidy() {}
@Override public String name() { return "SoftLoopyTidy"; }
}
@Test
public void testSoftReferenceFalsePositive() {
Object referent = new Object();
SoftLoopyTidy tidy = new SoftLoopyTidy();
Ref<Object> ref = new Ref<>(referent, tidy);
// Create a SOFT loop: Tidy -> SoftReference -> Ref
tidy.softLoop = new SoftReference<>(ref);
Ref.Visitor visitor = new Ref.Visitor();
visitor.haveLoops = new HashSet<>();
visitor.run();
// ERROR is logged here by the visitor
assertFalse("Visitor detected a false-positive loop via SoftReference",
visitor.haveLoops.contains(ref.state.globalState));
}
{code}
[~dcapwell] does this sound reasonable hypothesis to you? if so I can send a PR
for the fix?
> Strong self-ref loop detected logged while running tests
> --------------------------------------------------------
>
> Key: CASSANDRA-20591
> URL: https://issues.apache.org/jira/browse/CASSANDRA-20591
> Project: Apache Cassandra
> Issue Type: Bug
> Components: Legacy/Core
> Reporter: David Capwell
> Assignee: Jai Bheemsen Rao Dhanwada
> Priority: Normal
> Fix For: 5.x
>
>
> {code}
> INFO [node1_Strong-Reference-Leak-Detector:1] 2025-04-21 18:19:17,224 ERROR
> 18:19:17 Strong self-ref loop detected
> [/parallel-ci/work/build/tmp/dtests7949737643010928739/node1/data2/ks4/tbl-1b255f4def2540a6000000000000001d/oa-63-big-Data.db,
> final org.apache.cassandra.io.util.RebuffererFactory
> org.apache.cassandra.io.util.FileHandle$Cleanup.rebufferer-org.apache.cassandra.io.util.CompressedChunkReader$Standard,
> final java.util.function.Supplier
> org.apache.cassandra.io.util.CompressedChunkReader.crcCheckChanceSupplier-org.apache.cassandra.io.sstable.format.big.BigSSTableReaderLoadingBuilder$$Lambda$7914/0x0000000841f92c40,
> private final
> org.apache.cassandra.io.sstable.format.big.BigSSTableReaderLoadingBuilder
> org.apache.cassandra.io.sstable.format.big.BigSSTableReaderLoadingBuilder$$Lambda$7914/0x0000000841f92c40.arg$1-org.apache.cassandra.io.sstable.format.big.BigSSTableReaderLoadingBuilder,
> protected final org.apache.cassandra.schema.TableMetadataRef
> org.apache.cassandra.io.sstable.format.SSTableReaderLoadingBuilder.tableMetadataRef-org.apache.cassandra.schema.TableMetadataRef$2,
> final org.apache.cassandra.schema.TableMetadataRef
> org.apache.cassandra.schema.TableMetadataRef$2.val$wrapped-org.apache.cassandra.schema.TableMetadataRef,
> private final org.apache.cassandra.schema.SchemaProvider
> org.apache.cassandra.schema.TableMetadataRef.schema-org.apache.cassandra.schema.Schema,
> private final org.apache.cassandra.schema.SchemaChangeNotifier
> org.apache.cassandra.schema.Schema.schemaChangeNotifier-org.apache.cassandra.schema.SchemaChangeNotifier,
> private final java.util.List
> org.apache.cassandra.schema.SchemaChangeNotifier.changeListeners-java.util.concurrent.CopyOnWriteArrayList,
> private final java.util.List
> org.apache.cassandra.schema.SchemaChangeNotifier.changeListeners-org.apache.cassandra.transport.Server$EventNotifier,
> private org.apache.cassandra.transport.Server$ConnectionTracker
> org.apache.cassandra.transport.Server$EventNotifier.connectionTracker-org.apache.cassandra.transport.Server$ConnectionTracker,
> public final io.netty.channel.group.ChannelGroup
> org.apache.cassandra.transport.Server$ConnectionTracker.allChannels-io.netty.channel.group.DefaultChannelGroup,
> private final java.util.concurrent.ConcurrentMap
> io.netty.channel.group.DefaultChannelGroup.serverChannels-java.util.concurrent.ConcurrentHashMap,
> private final java.util.concurrent.ConcurrentMap
> io.netty.channel.group.DefaultChannelGroup.serverChannels-io.netty.channel.epoll.EpollServerSocketChannel,
> private final io.netty.channel.DefaultChannelPipeline
> io.netty.channel.AbstractChannel.pipeline-io.netty.channel.DefaultChannelPipeline,
> final io.netty.channel.DefaultChannelPipeline$HeadContext
> io.netty.channel.DefaultChannelPipeline.head-io.netty.channel.DefaultChannelPipeline$HeadContext,
> volatile io.netty.channel.AbstractChannelHandlerContext
> io.netty.channel.AbstractChannelHandlerContext.next-io.netty.channel.DefaultChannelHandlerContext,
> private final io.netty.channel.ChannelHandler
> io.netty.channel.DefaultChannelHandlerContext.handler-io.netty.bootstrap.ServerBootstrap$ServerBootstrapAcceptor,
> private final io.netty.channel.EventLoopGroup
> io.netty.bootstrap.ServerBootstrap$ServerBootstrapAcceptor.childGroup-io.netty.channel.epoll.EpollEventLoopGroup,
> private final io.netty.util.concurrent.EventExecutor[]
> io.netty.util.concurrent.MultithreadEventExecutorGroup.children-[Lio.netty.util.concurrent.EventExecutor;,
> private final io.netty.util.concurrent.EventExecutor[]
> io.netty.util.concurrent.MultithreadEventExecutorGroup.children-io.netty.channel.epoll.EpollEventLoop,
> private volatile java.lang.Thread
> io.netty.util.concurrent.SingleThreadEventExecutor.thread-io.netty.util.concurrent.FastThreadLocalThread,
> private io.netty.util.internal.InternalThreadLocalMap
> io.netty.util.concurrent.FastThreadLocalThread.threadLocalMap-io.netty.util.internal.InternalThreadLocalMap,
> private java.lang.Object[]
> io.netty.util.internal.InternalThreadLocalMap.indexedVariables-[Ljava.lang.Object;,
> private java.lang.Object[]
> io.netty.util.internal.InternalThreadLocalMap.indexedVariables-java.util.Collections$SetFromMap,
> private final java.util.Map
> java.util.Collections$SetFromMap.m-java.util.IdentityHashMap, transient
> java.lang.Object[] java.util.IdentityHashMap.table-[Ljava.lang.Object;,
> transient java.lang.Object[]
> java.util.IdentityHashMap.table-org.apache.cassandra.utils.memory.BufferPool$1,
> final org.apache.cassandra.utils.memory.BufferPool
> org.apache.cassandra.utils.memory.BufferPool$1.this$0-org.apache.cassandra.utils.memory.BufferPool,
> private final java.util.Set
> org.apache.cassandra.utils.memory.BufferPool.localPoolReferences-java.util.Collections$SetFromMap,
> private final java.util.Map
> java.util.Collections$SetFromMap.m-java.util.concurrent.ConcurrentHashMap,
> private final java.util.Map
> java.util.Collections$SetFromMap.m-org.apache.cassandra.utils.memory.BufferPool$LocalPoolRef,
> private final
> org.apache.cassandra.utils.memory.BufferPool$MicroQueueOfChunks
> org.apache.cassandra.utils.memory.BufferPool$LocalPoolRef.chunks-org.apache.cassandra.utils.memory.BufferPool$MicroQueueOfChunks,
> private org.apache.cassandra.utils.memory.BufferPool$Chunk
> org.apache.cassandra.utils.memory.BufferPool$MicroQueueOfChunks.chunk0-org.apache.cassandra.utils.memory.BufferPool$Chunk,
> private final java.nio.ByteBuffer
> org.apache.cassandra.utils.memory.BufferPool$Chunk.slab-java.nio.DirectByteBuffer,
> private final java.lang.Object
> java.nio.DirectByteBuffer.att-org.apache.cassandra.utils.concurrent.Ref$DirectBufferRef,
> private final org.apache.cassandra.utils.concurrent.Ref
> org.apache.cassandra.utils.concurrent.Ref$DirectBufferRef.wrappedRef-org.apache.cassandra.utils.concurrent.Ref,
> final java.lang.Object
> org.apache.cassandra.utils.concurrent.Ref.referent-org.apache.cassandra.utils.memory.BufferPool$Chunk,
> private volatile org.apache.cassandra.utils.memory.BufferPool$LocalPool
> org.apache.cassandra.utils.memory.BufferPool$Chunk.owner-org.apache.cassandra.utils.memory.BufferPool$LocalPool,
> private final java.lang.Thread
> org.apache.cassandra.utils.memory.BufferPool$LocalPool.owningThread-io.netty.util.concurrent.FastThreadLocalThread,
> private io.netty.util.internal.InternalThreadLocalMap
> io.netty.util.concurrent.FastThreadLocalThread.threadLocalMap-io.netty.util.internal.InternalThreadLocalMap,
> private java.lang.Object[]
> io.netty.util.internal.InternalThreadLocalMap.indexedVariables-[Ljava.lang.Object;,
> private java.lang.Object[]
> io.netty.util.internal.InternalThreadLocalMap.indexedVariables-java.util.Collections$SetFromMap,
> private final java.util.Map
> java.util.Collections$SetFromMap.m-java.util.IdentityHashMap, transient
> java.lang.Object[] java.util.IdentityHashMap.table-[Ljava.lang.Object;,
> transient java.lang.Object[]
> java.util.IdentityHashMap.table-org.apache.cassandra.utils.memory.BufferPool$1,
> final org.apache.cassandra.utils.memory.BufferPool
> org.apache.cassandra.utils.memory.BufferPool$1.this$0-org.apache.cassandra.utils.memory.BufferPool,
> private final org.apache.cassandra.concurrent.Shutdownable
> org.apache.cassandra.utils.memory.BufferPool.localPoolCleaner-org.apache.cassandra.concurrent.InfiniteLoopExecutor,
> private final java.lang.Thread
> org.apache.cassandra.concurrent.InfiniteLoopExecutor.thread-io.netty.util.concurrent.FastThreadLocalThread,
> private java.lang.ThreadGroup java.lang.Thread.group-java.lang.ThreadGroup,
> java.lang.Thread[] java.lang.ThreadGroup.threads-[Ljava.lang.Thread;,
> java.lang.Thread[]
> java.lang.ThreadGroup.threads-io.netty.util.concurrent.FastThreadLocalThread,
> private java.lang.Runnable
> java.lang.Thread.target-io.netty.util.concurrent.FastThreadLocalRunnable,
> private final java.lang.Runnable
> io.netty.util.concurrent.FastThreadLocalRunnable.runnable-org.apache.cassandra.concurrent.InfiniteLoopExecutor$$Lambda$990/0x000000084073d840,
> private final org.apache.cassandra.concurrent.InfiniteLoopExecutor
> org.apache.cassandra.concurrent.InfiniteLoopExecutor$$Lambda$990/0x000000084073d840.arg$1-org.apache.cassandra.concurrent.InfiniteLoopExecutor,
> private final org.apache.cassandra.concurrent.Interruptible$Task
> org.apache.cassandra.concurrent.InfiniteLoopExecutor.task-org.apache.cassandra.tcm.log.LocalLog$Async$AsyncRunnable,
> final org.apache.cassandra.tcm.log.LocalLog$Async
> org.apache.cassandra.tcm.log.LocalLog$Async$AsyncRunnable.this$0-org.apache.cassandra.tcm.log.LocalLog$Async,
> protected final java.util.concurrent.atomic.AtomicReference
> org.apache.cassandra.tcm.log.LocalLog.committed-java.util.concurrent.atomic.AtomicReference,
> private volatile java.lang.Object
> java.util.concurrent.atomic.AtomicReference.value-org.apache.cassandra.tcm.ClusterMetadata,
> public final org.apache.cassandra.schema.DistributedSchema
> org.apache.cassandra.tcm.ClusterMetadata.schema-org.apache.cassandra.schema.DistributedSchema,
> private final java.util.Map
> org.apache.cassandra.schema.DistributedSchema.keyspaceInstances-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-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,
> private final java.util.List
> org.apache.cassandra.db.lifecycle.Tracker.subscribers-java.util.concurrent.CopyOnWriteArrayList,
> private final java.util.List
> org.apache.cassandra.db.lifecycle.Tracker.subscribers-org.apache.cassandra.service.SSTablesGlobalTracker,
> private final java.util.Set
> org.apache.cassandra.service.SSTablesGlobalTracker.subscribers-java.util.concurrent.CopyOnWriteArraySet,
> private final java.util.Set
> org.apache.cassandra.service.SSTablesGlobalTracker.subscribers-org.apache.cassandra.service.StorageService$$Lambda$2223/0x0000000840b67840,
> private final org.apache.cassandra.service.StorageService
> org.apache.cassandra.service.StorageService$$Lambda$2223/0x0000000840b67840.arg$1-org.apache.cassandra.service.StorageService,
> private java.lang.Thread
> org.apache.cassandra.service.StorageService.drainOnShutdown-io.netty.util.concurrent.FastThreadLocalThread,
> private java.lang.ThreadGroup java.lang.Thread.group-java.lang.ThreadGroup,
> java.lang.Thread[] java.lang.ThreadGroup.threads-[Ljava.lang.Thread;,
> java.lang.Thread[]
> java.lang.ThreadGroup.threads-io.netty.util.concurrent.FastThreadLocalThread,
> private io.netty.util.internal.InternalThreadLocalMap
> io.netty.util.concurrent.FastThreadLocalThread.threadLocalMap-io.netty.util.internal.InternalThreadLocalMap,
> private java.lang.Object[]
> io.netty.util.internal.InternalThreadLocalMap.indexedVariables-[Ljava.lang.Object;,
> private java.lang.Object[]
> io.netty.util.internal.InternalThreadLocalMap.indexedVariables-io.netty.channel.epoll.EpollEventLoop,
> private final io.netty.util.collection.IntObjectMap
> io.netty.channel.epoll.EpollEventLoop.channels-io.netty.util.collection.IntObjectHashMap,
> private java.lang.Object[]
> io.netty.util.collection.IntObjectHashMap.values-[Ljava.lang.Object;, private
> java.lang.Object[]
> io.netty.util.collection.IntObjectHashMap.values-io.netty.channel.epoll.EpollServerSocketChannel,
> private final io.netty.channel.DefaultChannelPipeline
> io.netty.channel.AbstractChannel.pipeline-io.netty.channel.DefaultChannelPipeline,
> final io.netty.channel.DefaultChannelPipeline$HeadContext
> io.netty.channel.DefaultChannelPipeline.head-io.netty.channel.DefaultChannelPipeline$HeadContext,
> volatile io.netty.channel.AbstractChannelHandlerContext
> io.netty.channel.AbstractChannelHandlerContext.next-io.netty.channel.DefaultChannelHandlerContext,
> private final io.netty.channel.ChannelHandler
> io.netty.channel.DefaultChannelHandlerContext.handler-io.netty.bootstrap.ServerBootstrap$ServerBootstrapAcceptor,
> private final io.netty.channel.EventLoopGroup
> io.netty.bootstrap.ServerBootstrap$ServerBootstrapAcceptor.childGroup-io.netty.channel.epoll.EpollEventLoopGroup,
> private final io.netty.util.concurrent.EventExecutor[]
> io.netty.util.concurrent.MultithreadEventExecutorGroup.children-[Lio.netty.util.concurrent.EventExecutor;,
> private final io.netty.util.concurrent.EventExecutor[]
> io.netty.util.concurrent.MultithreadEventExecutorGroup.children-io.netty.channel.epoll.EpollEventLoop,
> private final io.netty.util.collection.IntObjectMap
> io.netty.channel.epoll.EpollEventLoop.channels-io.netty.util.collection.IntObjectHashMap,
> private java.lang.Object[]
> io.netty.util.collection.IntObjectHashMap.values-[Ljava.lang.Object;, private
> java.lang.Object[]
> io.netty.util.collection.IntObjectHashMap.values-io.netty.channel.epoll.EpollSocketChannel,
> private final io.netty.channel.DefaultChannelPipeline
> io.netty.channel.AbstractChannel.pipeline-io.netty.channel.DefaultChannelPipeline,
> final io.netty.channel.DefaultChannelPipeline$HeadContext
> io.netty.channel.DefaultChannelPipeline.head-io.netty.channel.DefaultChannelPipeline$HeadContext,
> volatile io.netty.channel.AbstractChannelHandlerContext
> io.netty.channel.AbstractChannelHandlerContext.next-io.netty.channel.DefaultChannelHandlerContext,
> volatile io.netty.channel.AbstractChannelHandlerContext
> io.netty.channel.AbstractChannelHandlerContext.next-io.netty.channel.DefaultChannelHandlerContext,
> private final io.netty.channel.ChannelHandler
> io.netty.channel.DefaultChannelHandlerContext.handler-org.apache.cassandra.net.FrameDecoderCrc,
> private org.apache.cassandra.net.FrameDecoder$FrameProcessor
> org.apache.cassandra.net.FrameDecoder.processor-org.apache.cassandra.net.InboundMessageHandler,
> private final org.apache.cassandra.net.InboundMessageCallbacks
> org.apache.cassandra.net.InboundMessageHandler.callbacks-org.apache.cassandra.net.InboundMessageHandlers$1,
> final org.apache.cassandra.net.InboundMessageHandlers$GlobalMetricCallbacks
> org.apache.cassandra.net.InboundMessageHandlers$1.val$globalMetrics-org.apache.cassandra.metrics.MessagingMetrics,
> public final java.util.EnumMap
> org.apache.cassandra.metrics.MessagingMetrics.internalLatency-java.util.EnumMap,
> private transient java.lang.Enum[]
> java.util.EnumMap.keyUniverse-[Lorg.apache.cassandra.net.Verb;, private
> transient java.lang.Enum[]
> java.util.EnumMap.keyUniverse-org.apache.cassandra.net.Verb, public final
> org.apache.cassandra.concurrent.Stage
> org.apache.cassandra.net.Verb.stage-org.apache.cassandra.concurrent.Stage,
> private volatile org.apache.cassandra.concurrent.ExecutorPlus
> org.apache.cassandra.concurrent.Stage.executor-org.apache.cassandra.concurrent.SEPExecutor,
> private final org.apache.cassandra.concurrent.SharedExecutorPool
> org.apache.cassandra.concurrent.SEPExecutor.pool-org.apache.cassandra.concurrent.SharedExecutorPool,
> final java.lang.ThreadGroup
> org.apache.cassandra.concurrent.SharedExecutorPool.threadGroup-java.lang.ThreadGroup,
> java.lang.Thread[] java.lang.ThreadGroup.threads-[Ljava.lang.Thread;,
> java.lang.Thread[]
> java.lang.ThreadGroup.threads-io.netty.util.concurrent.FastThreadLocalThread,
> private java.lang.Runnable
> java.lang.Thread.target-io.netty.util.concurrent.FastThreadLocalRunnable,
> private final java.lang.Runnable
> io.netty.util.concurrent.FastThreadLocalRunnable.runnable-org.apache.cassandra.concurrent.SEPWorker,
> private final java.util.concurrent.atomic.AtomicReference
> org.apache.cassandra.concurrent.SEPWorker.currentTask-java.util.concurrent.atomic.AtomicReference,
> private volatile java.lang.Object
> java.util.concurrent.atomic.AtomicReference.value-org.apache.cassandra.concurrent.ExecutionFailure$2,
> final org.apache.cassandra.concurrent.DebuggableTask$RunnableDebuggableTask
> org.apache.cassandra.concurrent.ExecutionFailure$2.val$debuggable-org.apache.cassandra.service.StorageProxy$LocalReadRunnable,
> private final org.apache.cassandra.service.reads.ReadCallback
> org.apache.cassandra.service.StorageProxy$LocalReadRunnable.handler-org.apache.cassandra.service.reads.ReadCallback,
> public final org.apache.cassandra.service.reads.ResponseResolver
> org.apache.cassandra.service.reads.ReadCallback.resolver-org.apache.cassandra.service.reads.DigestResolver,
> protected final java.util.function.Supplier
> org.apache.cassandra.service.reads.ResponseResolver.replicaPlan-org.apache.cassandra.locator.ReplicaPlan$SharedForTokenRead,
> private org.apache.cassandra.locator.ReplicaPlan$ForTokenRead
> org.apache.cassandra.locator.ReplicaPlan$SharedForTokenRead.replicaPlan-org.apache.cassandra.locator.ReplicaPlan$ForTokenRead,
> private final java.util.function.Function
> org.apache.cassandra.locator.ReplicaPlan$ForTokenRead.repairPlan-org.apache.cassandra.locator.ReplicaPlans$$Lambda$6106/0x00000008418d3840,
> private final org.apache.cassandra.db.Keyspace
> org.apache.cassandra.locator.ReplicaPlans$$Lambda$6106/0x00000008418d3840.arg$2-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,
> private final java.util.List
> org.apache.cassandra.db.lifecycle.Tracker.subscribers-java.util.concurrent.CopyOnWriteArrayList,
> private final java.util.List
> org.apache.cassandra.db.lifecycle.Tracker.subscribers-org.apache.cassandra.db.compaction.CompactionStrategyManager,
> private final org.apache.cassandra.db.compaction.PendingRepairHolder
> org.apache.cassandra.db.compaction.CompactionStrategyManager.pendingRepairs-org.apache.cassandra.db.compaction.PendingRepairHolder,
> private final java.util.List
> org.apache.cassandra.db.compaction.PendingRepairHolder.managers-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.db.compaction.PendingRepairManager,
> private volatile com.google.common.collect.ImmutableMap
> org.apache.cassandra.db.compaction.PendingRepairManager.strategies-com.google.common.collect.RegularImmutableMap,
> final transient java.util.Map$Entry[]
> com.google.common.collect.RegularImmutableMap.entries-[Lcom.google.common.collect.ImmutableMapEntry;,
> final transient java.util.Map$Entry[]
> com.google.common.collect.RegularImmutableMap.entries-com.google.common.collect.ImmutableMapEntry,
> final java.lang.Object
> com.google.common.collect.ImmutableEntry.value-org.apache.cassandra.db.compaction.SizeTieredCompactionStrategy,
> protected final java.util.Set
> org.apache.cassandra.db.compaction.SizeTieredCompactionStrategy.sstables-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-org.apache.cassandra.io.sstable.format.big.BigTableReader,
> protected final org.apache.cassandra.io.util.FileHandle
> org.apache.cassandra.io.sstable.format.SSTableReader.dfile-org.apache.cassandra.io.util.FileHandle,
> final org.apache.cassandra.utils.concurrent.Ref
> org.apache.cassandra.utils.concurrent.SharedCloseableImpl.ref-org.apache.cassandra.utils.concurrent.Ref]
> {code}
--
This message was sent by Atlassian Jira
(v8.20.10#820010)
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]