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)