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

JiangHua Zhu commented on RATIS-2227:
-------------------------------------

Thanks [~adoroszlai].
[~szetszwo], you are right. Do I need to submit a PR?

> LogEntryProto leak in SegmentedRaftLog
> --------------------------------------
>
>                 Key: RATIS-2227
>                 URL: https://issues.apache.org/jira/browse/RATIS-2227
>             Project: Ratis
>          Issue Type: Sub-task
>          Components: server
>            Reporter: Attila Doroszlai
>            Assignee: Tsz-wo Sze
>            Priority: Major
>         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)

Reply via email to