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 2018/07/06 07:04:00 UTC

[jira] [Created] (RATIS-263) Deadlock in ratis because of leader election

Mukul Kumar Singh created RATIS-263:
---------------------------------------

             Summary: Deadlock in ratis because of leader election
                 Key: RATIS-263
                 URL: https://issues.apache.org/jira/browse/RATIS-263
             Project: Ratis
          Issue Type: Bug
    Affects Versions: 0.2.0-alpha
            Reporter: Mukul Kumar Singh
            Assignee: Mukul Kumar Singh
             Fix For: 0.2.0-alpha


There is a deadlock in Ratis between appendEntries and segmented raft log eviction.

{code}
"grpc-default-executor-6":
        at org.apache.ratis.server.impl.LogAppender.notifyAppend(LogAppender.java:466)
        - waiting to lock <0x0000000083a1d398> (a org.apache.ratis.grpc.server.GRpcLogAppender)
        at org.apache.ratis.server.impl.LeaderState$$Lambda$222/1001509199.accept(Unknown Source)
        at java.util.concurrent.CopyOnWriteArrayList.forEach(CopyOnWriteArrayList.java:890)
        at org.apache.ratis.server.impl.LeaderState$SenderList.forEach(LeaderState.java:93)
        at org.apache.ratis.server.impl.LeaderState.notifySenders(LeaderState.java:192)
        at org.apache.ratis.server.impl.RaftServerImpl.appendTransaction(RaftServerImpl.java:476)
        - locked <0x000000008084fac8> (a org.apache.ratis.server.impl.RaftServerImpl)
        at org.apache.ratis.server.impl.RaftServerImpl.submitClientRequestAsync(RaftServerImpl.java:524)
        at org.apache.ratis.server.impl.RaftServerProxy.submitClientRequestAsync(RaftServerProxy.java:153)
        at org.apache.ratis.grpc.client.RaftClientProtocolService$AppendRequestStreamObserver.processClientRequestAsync(RaftClientProtocolService.java:125)
        at org.apache.ratis.grpc.client.RaftClientProtocolService$AppendRequestStreamObserver$$Lambda$148/1250401784.accept(Unknown Source)
        at org.apache.ratis.util.SlidingWindow$Server.processRequestsFromHead(SlidingWindow.java:351)
        at org.apache.ratis.util.SlidingWindow$Server.receivedRequest(SlidingWindow.java:343)
        - locked <0x00000000c0f7a060> (a org.apache.ratis.util.SlidingWindow$Server)
        at org.apache.ratis.grpc.client.RaftClientProtocolService$AppendRequestStreamObserver.onNext(RaftClientProtocolService.java:145)
        at org.apache.ratis.grpc.client.RaftClientProtocolService$AppendRequestStreamObserver.onNext(RaftClientProtocolService.java:109)
        at org.apache.ratis.shaded.io.grpc.stub.ServerCalls$StreamingServerCallHandler$StreamingServerCallListener.onMessage(ServerCalls.java:248)
        at org.apache.ratis.shaded.io.grpc.internal.ServerCallImpl$ServerStreamListenerImpl.messagesAvailable(ServerCallImpl.java:252)
        at org.apache.ratis.shaded.io.grpc.internal.ServerImpl$JumpToApplicationThreadServerStreamListener$1MessagesAvailable.runInContext(ServerImpl.java:629)
        at org.apache.ratis.shaded.io.grpc.internal.ContextRunnable.run(ContextRunnable.java:37)
        at org.apache.ratis.shaded.io.grpc.internal.SerializingExecutor.run(SerializingExecutor.java:123)
        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}

Thread evicting Segmented Raft Log
{code}
"Thread-72":
        at org.apache.ratis.server.impl.RaftServerImpl.getFollowerNextIndices(RaftServerImpl.java:1032)
        - waiting to lock <0x000000008084fac8> (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:178)
        at org.apache.ratis.grpc.server.GRpcLogAppender.appendLog(GRpcLogAppender.java:153)
        - locked <0x0000000083a1d398> (a org.apache.ratis.grpc.server.GRpcLogAppender)
        at org.apache.ratis.grpc.server.GRpcLogAppender.run(GRpcLogAppender.java:93)
{code}



--
This message was sent by Atlassian JIRA
(v7.6.3#76005)