[ 
https://issues.apache.org/jira/browse/RATIS-2225?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Tsz-wo Sze updated RATIS-2225:
------------------------------
        Parent: RATIS-1931
    Issue Type: Sub-task  (was: Bug)

> RaftClientRequest leak in RaftServerImpl
> ----------------------------------------
>
>                 Key: RATIS-2225
>                 URL: https://issues.apache.org/jira/browse/RATIS-2225
>             Project: Ratis
>          Issue Type: Sub-task
>          Components: server
>            Reporter: Attila Doroszlai
>            Assignee: Tsz-wo Sze
>            Priority: Major
>             Fix For: 3.2.0
>
>         Attachments: org.apache.ratis.grpc.TestRaftWithGrpc-output.txt, 
> org.apache.ratis.grpc.TestRaftWithGrpc.txt
>
>          Time Spent: 40m
>  Remaining Estimate: 0h
>
> Advanced LeakDetector traces for {{TestRaftWithGrpc#testBasicAppendEntries}}:
> {code}
> 2024-12-21 17:05:34,568 [main] WARN  util.ReferenceCountedLeakDetector 
> (ReferenceCountedLeakDetector.java:logLeakMessage(167)) - LEAK: (class 
> org.apache.ratis.protocol.RaftClientRequest, count=1, 
> value=RaftClientRequest:client-3DC1C0CC79B3->s3@group-B9908284294E, cid=2, 
> seq=null, RW, Message:6d30) #TraceInfos=6
> CREATION_0: previousRefCount=-1, refCount=0, retainCount=0, releaseCount=0, 
> Thread_278:grpc-default-executor-1
>     
> 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.grpc.server.GrpcClientProtocolService$RequestStreamObserver.onNext(GrpcClientProtocolService.java:280)
>     
> org.apache.ratis.grpc.server.GrpcClientProtocolService$RequestStreamObserver.onNext(GrpcClientProtocolService.java:205)
>     
> org.apache.ratis.thirdparty.io.grpc.stub.ServerCalls$StreamingServerCallHandler$StreamingServerCallListener.onMessage(ServerCalls.java:262)
>     
> org.apache.ratis.thirdparty.io.grpc.internal.ServerCallImpl$ServerStreamListenerImpl.messagesAvailableInternal(ServerCallImpl.java:329)
>     
> org.apache.ratis.thirdparty.io.grpc.internal.ServerCallImpl$ServerStreamListenerImpl.messagesAvailable(ServerCallImpl.java:314)
>     
> org.apache.ratis.thirdparty.io.grpc.internal.ServerImpl$JumpToApplicationThreadServerStreamListener$1MessagesAvailable.runInContext(ServerImpl.java:833)
>     
> org.apache.ratis.thirdparty.io.grpc.internal.ContextRunnable.run(ContextRunnable.java:37)
>     
> org.apache.ratis.thirdparty.io.grpc.internal.SerializingExecutor.run(SerializingExecutor.java:133)
>     
> java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
>     
> java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
>     java.lang.Thread.run(Thread.java:750)
> RETAIN_1: previousRefCount=0, refCount=1, retainCount=1, releaseCount=0, 
> Thread_278:grpc-default-executor-1
>     
> org.apache.ratis.util.ReferenceCountedLeakDetector$AdvancedTracing.retain(ReferenceCountedLeakDetector.java:325)
>     
> org.apache.ratis.grpc.server.GrpcClientProtocolService$UnorderedRequestStreamObserver.processClientRequest(GrpcClientProtocolService.java:325)
>     
> org.apache.ratis.grpc.server.GrpcClientProtocolService$RequestStreamObserver.onNext(GrpcClientProtocolService.java:286)
>     
> org.apache.ratis.grpc.server.GrpcClientProtocolService$RequestStreamObserver.onNext(GrpcClientProtocolService.java:205)
>     ...
> RETAIN_2: previousRefCount=1, refCount=2, retainCount=2, releaseCount=0, 
> Thread_278:grpc-default-executor-1
>     
> org.apache.ratis.util.ReferenceCountedLeakDetector$AdvancedTracing.retain(ReferenceCountedLeakDetector.java:325)
>     
> org.apache.ratis.server.impl.RaftServerProxy.submitClientRequestAsync(RaftServerProxy.java:452)
>     
> org.apache.ratis.grpc.server.GrpcClientProtocolService$RequestStreamObserver.processClientRequest(GrpcClientProtocolService.java:262)
>     
> org.apache.ratis.grpc.server.GrpcClientProtocolService$UnorderedRequestStreamObserver.processClientRequest(GrpcClientProtocolService.java:328)
>     
> org.apache.ratis.grpc.server.GrpcClientProtocolService$RequestStreamObserver.onNext(GrpcClientProtocolService.java:286)
>     ...
> RETAIN_3: previousRefCount=2, refCount=3, retainCount=3, releaseCount=0, 
> Thread_425:s3-client-thread1
>     
> org.apache.ratis.util.ReferenceCountedLeakDetector$AdvancedTracing.retain(ReferenceCountedLeakDetector.java:325)
>     
> org.apache.ratis.server.impl.RaftServerImpl.submitClientRequestAsync(RaftServerImpl.java:924)
>     
> org.apache.ratis.server.impl.RaftServerImpl.lambda$executeSubmitClientRequestAsync$11(RaftServerImpl.java:918)
>     
> java.util.concurrent.CompletableFuture$AsyncSupply.run(CompletableFuture.java:1604)
>     
> java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
>     ...
> RELEASE_4: previousRefCount=3, refCount=2, retainCount=3, releaseCount=1, 
> Thread_278:grpc-default-executor-1
>     
> org.apache.ratis.util.ReferenceCountedLeakDetector$AdvancedTracing.release(ReferenceCountedLeakDetector.java:334)
>     
> org.apache.ratis.server.impl.RaftServerProxy.submitClientRequestAsync(RaftServerProxy.java:457)
>     
> org.apache.ratis.grpc.server.GrpcClientProtocolService$RequestStreamObserver.processClientRequest(GrpcClientProtocolService.java:262)
>     
> org.apache.ratis.grpc.server.GrpcClientProtocolService$UnorderedRequestStreamObserver.processClientRequest(GrpcClientProtocolService.java:328)
>     
> org.apache.ratis.grpc.server.GrpcClientProtocolService$RequestStreamObserver.onNext(GrpcClientProtocolService.java:286)
>     
> org.apache.ratis.grpc.server.GrpcClientProtocolService$RequestStreamObserver.onNext(GrpcClientProtocolService.java:205)
>     
> org.apache.ratis.thirdparty.io.grpc.stub.ServerCalls$StreamingServerCallHandler$StreamingServerCallListener.onMessage(ServerCalls.java:262)
>     
> org.apache.ratis.thirdparty.io.grpc.internal.ServerCallImpl$ServerStreamListenerImpl.messagesAvailableInternal(ServerCallImpl.java:329)
>     
> org.apache.ratis.thirdparty.io.grpc.internal.ServerCallImpl$ServerStreamListenerImpl.messagesAvailable(ServerCallImpl.java:314)
>     
> org.apache.ratis.thirdparty.io.grpc.internal.ServerImpl$JumpToApplicationThreadServerStreamListener$1MessagesAvailable.runInContext(ServerImpl.java:833)
>     
> org.apache.ratis.thirdparty.io.grpc.internal.ContextRunnable.run(ContextRunnable.java:37)
>     
> org.apache.ratis.thirdparty.io.grpc.internal.SerializingExecutor.run(SerializingExecutor.java:133)
>     
> java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
>     ...
> RELEASE_5: previousRefCount=2, refCount=1, retainCount=3, releaseCount=2, 
> Thread_278:grpc-default-executor-1
>     
> org.apache.ratis.util.ReferenceCountedLeakDetector$AdvancedTracing.release(ReferenceCountedLeakDetector.java:334)
>     
> org.apache.ratis.grpc.server.GrpcClientProtocolService$UnorderedRequestStreamObserver.processClientRequest(GrpcClientProtocolService.java:336)
>     
> org.apache.ratis.grpc.server.GrpcClientProtocolService$RequestStreamObserver.onNext(GrpcClientProtocolService.java:286)
>     ...
> 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:894)
>     
> 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.testBasicAppendEntries(RaftBasicTests.java:82)
> {code}



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

Reply via email to