Attila Doroszlai created RATIS-2227:
---------------------------------------
Summary: LogEntryProto leak in SegmentedRaftLog
Key: RATIS-2227
URL: https://issues.apache.org/jira/browse/RATIS-2227
Project: Ratis
Issue Type: Sub-task
Reporter: Attila Doroszlai
Attachments: org.apache.ratis.grpc.TestRaftWithGrpc-output.txt,
org.apache.ratis.grpc.TestRaftWithGrpc.txt
Advanced LeakDetector traces for {{TestRaftWithGrpc#testWithLoad}}:
{code}
[main] WARN util.ReferenceCountedLeakDetector
(ReferenceCountedLeakDetector.java:logLeakMessage(167)) - LEAK: (class
org.apache.ratis.proto.RaftProtos$LogEntryProto, count=1, value=term: 3
index: 254
stateMachineLogEntry {
logData: "0-13"
stateMachineEntry {
logEntryProtoSerializedSize: 55
}
clientId: "E\324#\221\247\032A0\240U\220\242\264~:\032"
callId: 150
}
) #TraceInfos=6
CREATION_0: previousRefCount=-1, refCount=0, retainCount=0, releaseCount=0,
Thread_170:s1@group-0B2DB4D05D60->s4-GrpcLogAppender-LogAppenderDaemon
org.apache.ratis.util.ReferenceCountedLeakDetector$AdvancedTracing.<init>(ReferenceCountedLeakDetector.java:310)
org.apache.ratis.util.ReferenceCountedLeakDetector$Mode$3.create(ReferenceCountedLeakDetector.java:82)
org.apache.ratis.util.ReferenceCountedObject.wrap(ReferenceCountedObject.java:178)
org.apache.ratis.util.ReferenceCountedObject.wrap(ReferenceCountedObject.java:103)
org.apache.ratis.server.raftlog.segmented.LogSegment.readSegmentFile(LogSegment.java:185)
org.apache.ratis.server.raftlog.segmented.LogSegment$LogEntryLoader.load(LogSegment.java:283)
org.apache.ratis.server.raftlog.segmented.LogSegment.loadCache(LogSegment.java:507)
org.apache.ratis.server.raftlog.segmented.SegmentedRaftLog.retainLog(SegmentedRaftLog.java:322)
org.apache.ratis.server.raftlog.segmented.SegmentedRaftLog.retainEntryWithData(SegmentedRaftLog.java:332)
org.apache.ratis.server.leader.LogAppenderBase.nextAppendEntriesRequest(LogAppenderBase.java:266)
org.apache.ratis.grpc.server.GrpcLogAppender.appendLog(GrpcLogAppender.java:396)
org.apache.ratis.grpc.server.GrpcLogAppender.run(GrpcLogAppender.java:262)
org.apache.ratis.server.leader.LogAppenderDaemon.run(LogAppenderDaemon.java:80)
java.lang.Thread.run(Thread.java:750)
RETAIN_1: previousRefCount=0, refCount=1, retainCount=1, releaseCount=0,
Thread_170:s1@group-0B2DB4D05D60->s4-GrpcLogAppender-LogAppenderDaemon
org.apache.ratis.util.ReferenceCountedLeakDetector$AdvancedTracing.retain(ReferenceCountedLeakDetector.java:325)
org.apache.ratis.server.raftlog.segmented.LogSegment$LogEntryLoader.lambda$load$0(LogSegment.java:284)
org.apache.ratis.server.raftlog.segmented.LogSegment.readSegmentFile(LogSegment.java:185)
...
RETAIN_2: previousRefCount=1, refCount=2, retainCount=2, releaseCount=0,
Thread_170:s1@group-0B2DB4D05D60->s4-GrpcLogAppender-LogAppenderDaemon
org.apache.ratis.util.ReferenceCountedLeakDetector$AdvancedTracing.retain(ReferenceCountedLeakDetector.java:325)
org.apache.ratis.server.raftlog.segmented.LogSegment$EntryCache.put(LogSegment.java:370)
org.apache.ratis.server.raftlog.segmented.LogSegment.putEntryCache(LogSegment.java:589)
org.apache.ratis.server.raftlog.segmented.LogSegment$LogEntryLoader.lambda$load$0(LogSegment.java:287)
org.apache.ratis.server.raftlog.segmented.LogSegment.readSegmentFile(LogSegment.java:185)
...
RETAIN_3: previousRefCount=2, refCount=3, retainCount=3, releaseCount=0,
Thread_170:s1@group-0B2DB4D05D60->s4-GrpcLogAppender-LogAppenderDaemon
org.apache.ratis.util.ReferenceCountedLeakDetector$AdvancedTracing.retain(ReferenceCountedLeakDetector.java:325)
org.apache.ratis.server.raftlog.segmented.SegmentedRaftLog.retainLog(SegmentedRaftLog.java:310)
org.apache.ratis.server.raftlog.segmented.SegmentedRaftLog.retainEntryWithData(SegmentedRaftLog.java:332)
...
RELEASE_4: previousRefCount=3, refCount=2, retainCount=3, releaseCount=1,
Thread_170:s1@group-0B2DB4D05D60->s4-GrpcLogAppender-LogAppenderDaemon
org.apache.ratis.util.ReferenceCountedLeakDetector$AdvancedTracing.release(ReferenceCountedLeakDetector.java:334)
org.apache.ratis.server.raftlog.RaftLogBase$1.release(RaftLogBase.java:443)
org.apache.ratis.util.ReferenceCountedObject$2.release(ReferenceCountedObject.java:123)
org.apache.ratis.grpc.server.GrpcLogAppender.appendLog(GrpcLogAppender.java:423)
org.apache.ratis.grpc.server.GrpcLogAppender.run(GrpcLogAppender.java:262)
...
RELEASE_5: previousRefCount=2, refCount=1, retainCount=3, releaseCount=2,
Thread_46:s1@group-0B2DB4D05D60-cacheEviction-AwaitToRun
org.apache.ratis.util.ReferenceCountedLeakDetector$AdvancedTracing.release(ReferenceCountedLeakDetector.java:334)
org.apache.ratis.server.raftlog.segmented.LogSegment$Item.release(LogSegment.java:320)
org.apache.ratis.server.raftlog.segmented.LogSegment$EntryCache.release(LogSegment.java:380)
org.apache.ratis.server.raftlog.segmented.LogSegment$EntryCache.evict(LogSegment.java:362)
org.apache.ratis.server.raftlog.segmented.LogSegment.evictCache(LogSegment.java:585)
org.apache.ratis.server.raftlog.segmented.SegmentedRaftLogCache.evictCache(SegmentedRaftLogCache.java:475)
org.apache.ratis.server.raftlog.segmented.SegmentedRaftLog.checkAndEvictCache(SegmentedRaftLog.java:365)
org.apache.ratis.util.AwaitToRun$RunnableImpl.run(AwaitToRun.java:55)
java.lang.Thread.run(Thread.java:750)
CURRENT_6: previousRefCount=1, refCount=1, retainCount=3, releaseCount=2,
Thread_1:main
org.apache.ratis.util.ReferenceCountedLeakDetector$AdvancedTracing.getTraceString(ReferenceCountedLeakDetector.java:343)
org.apache.ratis.util.ReferenceCountedLeakDetector$SimpleTracing.logLeakMessage(ReferenceCountedLeakDetector.java:166)
org.apache.ratis.util.LeakDetector$LeakTracker.reportLeak(LeakDetector.java:199)
org.apache.ratis.util.LeakDetector$LeakTrackerSet.getNumLeaks(LeakDetector.java:89)
org.apache.ratis.util.LeakDetector.assertNoLeaks(LeakDetector.java:171)
org.apache.ratis.server.impl.MiniRaftCluster.shutdown(MiniRaftCluster.java:892)
org.apache.ratis.grpc.MiniRaftClusterWithGrpc.shutdown(MiniRaftClusterWithGrpc.java:97)
org.apache.ratis.server.impl.MiniRaftCluster$Factory$Get.runWithNewCluster(MiniRaftCluster.java:152)
org.apache.ratis.server.impl.MiniRaftCluster$Factory$Get.runWithNewCluster(MiniRaftCluster.java:121)
org.apache.ratis.RaftBasicTests.testWithLoad(RaftBasicTests.java:338)
org.apache.ratis.grpc.TestRaftWithGrpc.testWithLoad(TestRaftWithGrpc.java:62)
{code}
--
This message was sent by Atlassian Jira
(v8.20.10#820010)