You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@qpid.apache.org by "Rob Godfrey (JIRA)" <ji...@apache.org> on 2015/04/10 12:19:12 UTC

[jira] [Created] (QPID-6487) [Java Broker] [AMQP 1.0] Deadlock in Java Broker AMQP 1.0 with new IO model

Rob Godfrey created QPID-6487:
---------------------------------

             Summary: [Java Broker] [AMQP 1.0] Deadlock in Java Broker AMQP 1.0 with new IO model
                 Key: QPID-6487
                 URL: https://issues.apache.org/jira/browse/QPID-6487
             Project: Qpid
          Issue Type: Bug
          Components: Java Broker
            Reporter: Rob Godfrey
            Assignee: Rob Godfrey


With the new threading / I/O model in place a deadlock can occur in the detaching of links:

{noformat}
"IO-/127.0.0.1:59379@2150" prio=5 tid=0x1b nid=NA waiting
  java.lang.Thread.State: WAITING
blocks pool-1-thread-8@4354
 at sun.misc.Unsafe.park(Unsafe.java:-1)
 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.doAcquireSharedInterruptibly(AbstractQueuedSynchronizer.java:994)
 at java.util.concurrent.locks.AbstractQueuedSynchronizer.acquireSharedInterruptibly(AbstractQueuedSynchronizer.java:1303)
 at com.google.common.util.concurrent.AbstractFuture$Sync.get(AbstractFuture.java:292)
 at com.google.common.util.concurrent.AbstractFuture.get(AbstractFuture.java:116)
 at org.apache.qpid.server.model.AbstractConfiguredObject.doSync(AbstractConfiguredObject.java:1724)
 at org.apache.qpid.server.model.AbstractConfiguredObject.close(AbstractConfiguredObject.java:637)
 at org.apache.qpid.server.protocol.v1_0.SendingLink_1_0.remoteDetached(SendingLink_1_0.java:413)
 at org.apache.qpid.server.protocol.v1_0.Session_1_0$SubjectSpecificSendingLinkListener$2.run(Session_1_0.java:854)
 at java.security.AccessController.doPrivileged(AccessController.java:-1)
 at javax.security.auth.Subject.doAs(Subject.java:356)
 at org.apache.qpid.server.protocol.v1_0.Session_1_0$SubjectSpecificSendingLinkListener.remoteDetached(Session_1_0.java:849)
 at org.apache.qpid.amqp_1_0.transport.LinkEndpoint.remoteDetached(LinkEndpoint.java:190)
 - locked <0x1111> (a org.apache.qpid.amqp_1_0.transport.ConnectionEndpoint)
 at org.apache.qpid.amqp_1_0.transport.SessionEndpoint.detach(SessionEndpoint.java:358)
 at org.apache.qpid.amqp_1_0.transport.SessionEndpoint.receiveDetach(SessionEndpoint.java:349)
 at org.apache.qpid.amqp_1_0.transport.ConnectionEndpoint.receiveDetach(ConnectionEndpoint.java:646)
 at org.apache.qpid.amqp_1_0.type.transport.Detach.invoke(Detach.java:117)
 at org.apache.qpid.amqp_1_0.transport.ConnectionEndpoint.receive(ConnectionEndpoint.java:808)
 at org.apache.qpid.amqp_1_0.framing.FrameHandler.parse(FrameHandler.java:241)
 at org.apache.qpid.server.protocol.v1_0.ProtocolEngine_1_0_0_SASL$4.run(ProtocolEngine_1_0_0_SASL.java:436)
 at org.apache.qpid.server.protocol.v1_0.ProtocolEngine_1_0_0_SASL$4.run(ProtocolEngine_1_0_0_SASL.java:432)
 at java.security.AccessController.doPrivileged(AccessController.java:-1)
 at javax.security.auth.Subject.doAs(Subject.java:356)
 at org.apache.qpid.server.protocol.v1_0.ProtocolEngine_1_0_0_SASL.received(ProtocolEngine_1_0_0_SASL.java:431)
 - locked <0x1128> (a
org.apache.qpid.server.protocol.v1_0.ProtocolEngine_1_0_0_SASL)
 at org.apache.qpid.server.protocol.MultiVersionProtocolEngine.received(MultiVersionProtocolEngine.java:157)
 at org.apache.qpid.server.transport.NonBlockingConnection.doRead(NonBlockingConnection.java:375)
 at org.apache.qpid.server.transport.NonBlockingConnection.doWork(NonBlockingConnection.java:276)
 at org.apache.qpid.server.transport.NetworkConnectionScheduler.processConnection(NetworkConnectionScheduler.java:89)
 at org.apache.qpid.server.transport.NetworkConnectionScheduler.access$000(NetworkConnectionScheduler.java:31)
 at org.apache.qpid.server.transport.NetworkConnectionScheduler$2.run(NetworkConnectionScheduler.java:70)
 at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:471)
 at java.util.concurrent.FutureTask.run(FutureTask.java:262)
 at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$201(ScheduledThreadPoolExecutor.java:178)
 at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:292)
 at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
 at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
 at java.lang.Thread.run(Thread.java:724)

"VirtualHostNode-default-Configuration-Thread@2029" prio=5 tid=0xe
nid=NA waiting
  java.lang.Thread.State: WAITING
 at sun.misc.Unsafe.park(Unsafe.java:-1)
 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 org.apache.qpid.server.consumer.AbstractConsumerTarget.getSendLock(AbstractConsumerTarget.java:161)
 at org.apache.qpid.server.queue.QueueConsumerImpl.onClose(QueueConsumerImpl.java:253)
 at org.apache.qpid.server.model.AbstractConfiguredObject$5$1.run(AbstractConfiguredObject.java:665)
 at org.apache.qpid.server.model.AbstractConfiguredObject$17.onSuccess(AbstractConfiguredObject.java:1879)
 at org.apache.qpid.server.model.AbstractConfiguredObject$17.onSuccess(AbstractConfiguredObject.java:1873)
 at com.google.common.util.concurrent.Futures$4.run(Futures.java:1149)
 at org.apache.qpid.server.configuration.updater.TaskExecutorImpl$ImmediateIfSameThreadExecutor.execute(TaskExecutorImpl.java:406)
 at com.google.common.util.concurrent.ExecutionList$RunnableExecutorPair.execute(ExecutionList.java:150)
 at com.google.common.util.concurrent.ExecutionList.add(ExecutionList.java:106)
 at com.google.common.util.concurrent.AbstractFuture.addListener(AbstractFuture.java:170)
 at com.google.common.util.concurrent.Futures.addCallback(Futures.java:1152)
 at org.apache.qpid.server.model.AbstractConfiguredObject.doAfter(AbstractConfiguredObject.java:1872)
 at org.apache.qpid.server.model.AbstractConfiguredObject$ChainedSettableFuture.then(AbstractConfiguredObject.java:1928)
 at org.apache.qpid.server.model.AbstractConfiguredObject$5.call(AbstractConfiguredObject.java:653)
 at org.apache.qpid.server.model.AbstractConfiguredObject$5.call(AbstractConfiguredObject.java:644)
 at org.apache.qpid.server.model.AbstractConfiguredObject$2.execute(AbstractConfiguredObject.java:505)
 at org.apache.qpid.server.model.AbstractConfiguredObject$2.execute(AbstractConfiguredObject.java:498)
 at org.apache.qpid.server.configuration.updater.TaskExecutorImpl.executeTask(TaskExecutorImpl.java:318)
 at org.apache.qpid.server.configuration.updater.TaskExecutorImpl.access$600(TaskExecutorImpl.java:45)
 at org.apache.qpid.server.configuration.updater.TaskExecutorImpl$CallableWrapper$1.run(TaskExecutorImpl.java:346)
 at java.security.AccessController.doPrivileged(AccessController.java:-1)
 at javax.security.auth.Subject.doAs(Subject.java:356)
 at org.apache.qpid.server.configuration.updater.TaskExecutorImpl$CallableWrapper.call(TaskExecutorImpl.java:341)
 at java.util.concurrent.FutureTask.run(FutureTask.java:262)
 at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
 at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
 at java.lang.Thread.run(Thread.java:724)


"pool-1-thread-8@4354" prio=5 tid=0x3a nid=NA waiting for monitor entry
  java.lang.Thread.State: BLOCKED
waiting for IO-/127.0.0.1:59379@2150 to release lock on <0x1111> (a
org.apache.qpid.amqp_1_0.transport.ConnectionEndpoint)
 at org.apache.qpid.server.protocol.v1_0.ConsumerTarget_1_0.queueEmpty(ConsumerTarget_1_0.java:325)
 at org.apache.qpid.server.queue.QueueConsumerImpl.queueEmpty(QueueConsumerImpl.java:291)
 at org.apache.qpid.server.queue.AbstractQueue.processQueue(AbstractQueue.java:2286)
 at org.apache.qpid.server.queue.QueueRunner$1.run(QueueRunner.java:78)
 at java.security.AccessController.doPrivileged(AccessController.java:-1)
 at javax.security.auth.Subject.doAs(Subject.java:356)
 at org.apache.qpid.server.queue.QueueRunner.run(QueueRunner.java:69)
 at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
 at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
 at java.lang.Thread.run(Thread.java:724)
{noformat}



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

---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@qpid.apache.org
For additional commands, e-mail: dev-help@qpid.apache.org