You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@ratis.apache.org by "Shashikant Banerjee (Jira)" <ji...@apache.org> on 2020/01/10 11:51:00 UTC

[jira] [Created] (RATIS-790) GrpcLogAppenders on Ratis leader block on each other

Shashikant Banerjee created RATIS-790:
-----------------------------------------

             Summary: GrpcLogAppenders on Ratis leader block on each other
                 Key: RATIS-790
                 URL: https://issues.apache.org/jira/browse/RATIS-790
             Project: Ratis
          Issue Type: Bug
          Components: server
            Reporter: Shashikant Banerjee
            Assignee: Shashikant Banerjee
             Fix For: 0.5.0


{code:java}
"org.apache.ratis.server.impl.LogAppender$AppenderDaemon$$Lambda$369/802019944@2f87467e" #152 daemon prio=5 os_prio=0 tid=0x00007f6648271000 nid=0x7aeb waiting on condition [0x00007f65d7803000]
   java.lang.Thread.State: WAITING (parking)
        at sun.misc.Unsafe.park(Native Method)
        - parking to wait for  <0x00000003d82f4208> (a java.util.concurrent.locks.ReentrantLock$NonfairSync)
        at java.util.concurrent.locks.LockSupport.park(LockSupport.java:175)
        at java.util.concurrent.locks.AbstractQueuedSynchronizer.parkAndCheckInterrupt(AbstractQueuedSynchronizer.java:836)
        at java.util.concurrent.locks.AbstractQueuedSynchronizer.acquireQueued(AbstractQueuedSynchronizer.java:870)
        at java.util.concurrent.locks.AbstractQueuedSynchronizer.acquire(AbstractQueuedSynchronizer.java:1199)
        at java.util.concurrent.locks.ReentrantLock$NonfairSync.lock(ReentrantLock.java:209)
        at java.util.concurrent.locks.ReentrantLock.lock(ReentrantLock.java:285)
        at java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue.offer(ScheduledThreadPoolExecutor.java:1010)
        at java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue.add(ScheduledThreadPoolExecutor.java:1037)
        at java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue.add(ScheduledThreadPoolExecutor.java:809)
        at java.util.concurrent.ScheduledThreadPoolExecutor.delayedExecute(ScheduledThreadPoolExecutor.java:328)
        at java.util.concurrent.ScheduledThreadPoolExecutor.schedule(ScheduledThreadPoolExecutor.java:533)
        at org.apache.ratis.util.TimeoutScheduler$Scheduler.schedule(TimeoutScheduler.java:83)
        at org.apache.ratis.util.TimeoutScheduler.onTimeout(TimeoutScheduler.java:155)
        - locked <0x00000003d7ecd4e8> (a org.apache.ratis.util.TimeoutScheduler)
        at org.apache.ratis.util.TimeoutScheduler.onTimeout(TimeoutScheduler.java:138)
        at org.apache.ratis.util.TimeoutScheduler.onTimeout(TimeoutScheduler.java:191)
        at org.apache.ratis.grpc.server.GrpcLogAppender.sendRequest(GrpcLogAppender.java:203)
        at org.apache.ratis.grpc.server.GrpcLogAppender.appendLog(GrpcLogAppender.java:194)
        at org.apache.ratis.grpc.server.GrpcLogAppender.runAppenderImpl(GrpcLogAppender.java:121)
        at org.apache.ratis.server.impl.LogAppender$AppenderDaemon.run(LogAppender.java:77)
        at org.apache.ratis.server.impl.LogAppender$AppenderDaemon$$Lambda$369/802019944.run(Unknown Source)
        at java.lang.Thread.run(Thread.java:748)


"org.apache.ratis.server.impl.LogAppender$AppenderDaemon$$Lambda$369/802019944@19778529" #150 daemon prio=5 os_prio=0 tid=0x00007f664826f800 nid=0x7aea waiting for monitor entry [0x00007f65d7904000]
   java.lang.Thread.State: BLOCKED (on object monitor)
        at org.apache.ratis.util.TimeoutScheduler.onTimeout(TimeoutScheduler.java:151)
        - waiting to lock <0x00000003d7ecd4e8> (a org.apache.ratis.util.TimeoutScheduler)
        at org.apache.ratis.util.TimeoutScheduler.onTimeout(TimeoutScheduler.java:138)
        at org.apache.ratis.util.TimeoutScheduler.onTimeout(TimeoutScheduler.java:191)
        at org.apache.ratis.grpc.server.GrpcLogAppender.sendRequest(GrpcLogAppender.java:203)
        at org.apache.ratis.grpc.server.GrpcLogAppender.appendLog(GrpcLogAppender.java:194)
        at org.apache.ratis.grpc.server.GrpcLogAppender.runAppenderImpl(GrpcLogAppender.java:121)
        at org.apache.ratis.server.impl.LogAppender$AppenderDaemon.run(LogAppender.java:77)
        at org.apache.ratis.server.impl.LogAppender$AppenderDaemon$$Lambda$369/802019944.run(Unknown Source)
        at java.lang.Thread.run(Thread.java:748)
{code}
The GrpcLogAppenders, one for each follower on a ratis leader seem to block to each other because both of them share same instance of TimeoutScheduler .



--
This message was sent by Atlassian Jira
(v8.3.4#803005)