Terence Yim created TWILL-110:
---------------------------------

             Summary: Deadlock when shutting down runnable container
                 Key: TWILL-110
                 URL: https://issues.apache.org/jira/browse/TWILL-110
             Project: Apache Twill
          Issue Type: Bug
          Components: core
    Affects Versions: 0.4.0-incubating
            Reporter: Terence Yim
            Assignee: Terence Yim
            Priority: Blocker


Deadlock was observed when a TwillRunnable container was shutting down, causing 
the process hanging.

{noformat}
Found one Java-level deadlock:
=============================
"Thread-5":
  waiting for ownable synchronizer 0x00000000eb1a6ec0, (a 
java.util.concurrent.locks.ReentrantLock$NonfairSync),
  which is held by "zk-client-EventThread"
"zk-client-EventThread":
  waiting for ownable synchronizer 0x00000000eb18c698, (a 
java.util.concurrent.locks.ReentrantLock$NonfairSync),
  which is held by "Thread-5"

Java stack information for the threads listed above:
===================================================
"Thread-5":
at sun.misc.Unsafe.park(Native Method)
- parking to wait for  <0x00000000eb1a6ec0> (a 
java.util.concurrent.locks.ReentrantLock$NonfairSync)
at java.util.concurrent.locks.LockSupport.park(LockSupport.java:186)
at 
java.util.concurrent.locks.AbstractQueuedSynchronizer.parkAndCheckInterrupt(AbstractQueuedSynchronizer.java:834)
at 
java.util.concurrent.locks.AbstractQueuedSynchronizer.acquireQueued(AbstractQueuedSynchronizer.java:867)
at 
java.util.concurrent.locks.AbstractQueuedSynchronizer.acquire(AbstractQueuedSynchronizer.java:1197)
at 
java.util.concurrent.locks.ReentrantLock$NonfairSync.lock(ReentrantLock.java:214)
at java.util.concurrent.locks.ReentrantLock.lock(ReentrantLock.java:290)
at 
java.util.concurrent.ThreadPoolExecutor.tryTerminate(ThreadPoolExecutor.java:700)
at 
java.util.concurrent.ThreadPoolExecutor.shutdown(ThreadPoolExecutor.java:1397)
at 
org.apache.twill.internal.zookeeper.DefaultZKClientService$ServiceDelegate.doStop(DefaultZKClientService.java:402)
at 
com.google.common.util.concurrent.AbstractService.stop(AbstractService.java:198)
at 
org.apache.twill.internal.zookeeper.DefaultZKClientService.stop(DefaultZKClientService.java:310)
at 
org.apache.twill.zookeeper.ForwardingZKClientService.stop(ForwardingZKClientService.java:66)
at org.apache.twill.common.Services$2.run(Services.java:131)
at 
com.google.common.util.concurrent.MoreExecutors$SameThreadExecutorService.execute(MoreExecutors.java:262)
at 
com.google.common.util.concurrent.ExecutionList$RunnableExecutorPair.execute(ExecutionList.java:149)
at com.google.common.util.concurrent.ExecutionList.add(ExecutionList.java:105)
at 
com.google.common.util.concurrent.AbstractFuture.addListener(AbstractFuture.java:160)
at org.apache.twill.common.Services.doChain(Services.java:106)
at org.apache.twill.common.Services.chainStop(Services.java:61)
at org.apache.twill.internal.ServiceMain$1.run(ServiceMain.java:69)
"zk-client-EventThread":
at sun.misc.Unsafe.park(Native Method)
- parking to wait for  <0x00000000eb18c698> (a 
java.util.concurrent.locks.ReentrantLock$NonfairSync)
at java.util.concurrent.locks.LockSupport.park(LockSupport.java:186)
at 
java.util.concurrent.locks.AbstractQueuedSynchronizer.parkAndCheckInterrupt(AbstractQueuedSynchronizer.java:834)
at 
java.util.concurrent.locks.AbstractQueuedSynchronizer.acquireQueued(AbstractQueuedSynchronizer.java:867)
at 
java.util.concurrent.locks.AbstractQueuedSynchronizer.acquire(AbstractQueuedSynchronizer.java:1197)
at 
java.util.concurrent.locks.ReentrantLock$NonfairSync.lock(ReentrantLock.java:214)
at java.util.concurrent.locks.ReentrantLock.lock(ReentrantLock.java:290)
at 
com.google.common.util.concurrent.AbstractService.notifyStopped(AbstractService.java:267)
at 
org.apache.twill.internal.zookeeper.DefaultZKClientService$ServiceDelegate.access$600(DefaultZKClientService.java:372)
at 
org.apache.twill.internal.zookeeper.DefaultZKClientService$ServiceDelegate$1.terminated(DefaultZKClientService.java:382)
at 
java.util.concurrent.ThreadPoolExecutor.tryTerminate(ThreadPoolExecutor.java:704)
at 
java.util.concurrent.ThreadPoolExecutor.processWorkerExit(ThreadPoolExecutor.java:1006)
at 
java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1163)
at 
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
at java.lang.Thread.run(Thread.java:744)

Found 1 deadlock.
{noformat}



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

Reply via email to