You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@ratis.apache.org by "Mukul Kumar Singh (JIRA)" <ji...@apache.org> on 2017/11/30 06:58:00 UTC

[jira] [Created] (RATIS-159) Deadlock between AppendStreamer and SegmentedRaftLog eviction

Mukul Kumar Singh created RATIS-159:
---------------------------------------

             Summary: Deadlock between AppendStreamer and SegmentedRaftLog eviction
                 Key: RATIS-159
                 URL: https://issues.apache.org/jira/browse/RATIS-159
             Project: Ratis
          Issue Type: Bug
            Reporter: Mukul Kumar Singh
            Assignee: Mukul Kumar Singh


Found the following deadlock while testing ratis with Ozone. I have also attached the stack trace file along with the jira.


Java stack information for the threads listed above:
===================================================
{code}
"Thread-195":
        at org.apache.ratis.server.impl.RaftServerImpl.getFollowerNextIndices(RaftServerImpl.java:946)
        - waiting to lock <0x0000000081bbca08> (a org.apache.ratis.server.impl.RaftServerImpl)
        at org.apache.ratis.server.storage.SegmentedRaftLog.checkAndEvictCache(SegmentedRaftLog.java:199)
        at org.apache.ratis.server.storage.SegmentedRaftLog.get(SegmentedRaftLog.java:190)
        at org.apache.ratis.server.impl.LogAppender.createRequest(LogAppender.java:170)
        at org.apache.ratis.grpc.server.GRpcLogAppender.appendLog(GRpcLogAppender.java:138)
        - locked <0x00000000ad0101f8> (a org.apache.ratis.grpc.server.GRpcLogAppender)
        at org.apache.ratis.grpc.server.GRpcLogAppender.run(GRpcLogAppender.java:85)
{code}

{code}
"grpc-default-executor-32":
        at org.apache.ratis.server.impl.LogAppender.notifyAppend(LogAppender.java:456)
        - waiting to lock <0x00000000ad0101f8> (a org.apache.ratis.grpc.server.GRpcLogAppender)
        at org.apache.ratis.server.impl.LeaderState$$Lambda$124/1715853171.accept(Unknown Source)
        at java.util.concurrent.CopyOnWriteArrayList.forEach(CopyOnWriteArrayList.java:890)
        at org.apache.ratis.server.impl.LeaderState$SenderList.forEach(LeaderState.java:91)
        at org.apache.ratis.server.impl.LeaderState.notifySenders(LeaderState.java:190)
        at org.apache.ratis.server.impl.RaftServerImpl.appendTransaction(RaftServerImpl.java:438)
        - locked <0x0000000081bbca08> (a org.apache.ratis.server.impl.RaftServerImpl)
        at org.apache.ratis.server.impl.RaftServerImpl.submitClientRequestAsync(RaftServerImpl.java:481)
        at org.apache.ratis.server.impl.RaftServerProxy.submitClientRequestAsync(RaftServerProxy.java:137)
        at org.apache.ratis.grpc.client.RaftClientProtocolService$AppendRequestStreamObserver.onNext(RaftClientProtocolService.java:113)
        at org.apache.ratis.grpc.client.RaftClientProtocolService$AppendRequestStreamObserver.onNext(RaftClientProtocolService.java:96)
        at org.apache.ratis.shaded.io.grpc.stub.ServerCalls$2$1.onMessage(ServerCalls.java:206)
        at org.apache.ratis.shaded.io.grpc.internal.ServerCallImpl$ServerStreamListenerImpl.messageRead(ServerCallImpl.java:237)
        at org.apache.ratis.shaded.io.grpc.internal.ServerImpl$JumpToApplicationThreadServerStreamListener$1.runInContext(ServerImpl.java:485)
        at org.apache.ratis.shaded.io.grpc.internal.ContextRunnable.run(ContextRunnable.java:52)
        at org.apache.ratis.shaded.io.grpc.internal.SerializingExecutor$TaskRunner.run(SerializingExecutor.java:154)
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
        at java.lang.Thread.run(Thread.java:745)
{code}



--
This message was sent by Atlassian JIRA
(v6.4.14#64029)