[ openjms-Bugs-777419 ] Deadlock in the tcp connector
"SourceForge.net" <[email protected]>
| Newsgroups | gmane.comp.java.openjms.devel |
|---|---|
| Message-ID | <[email protected]> |
Bugs item #777419, was opened at 2003-07-25 18:42 Message generated for change (Tracker Item Submitted) made by Item Submitter You can respond by visiting: https://sourceforge.net/tracker/?func=detail&atid=474136&aid=777419&group_id=54559 Category: transport Group: v0.7.6 Status: Open Resolution: None Priority: 5 Submitted By: Tim Anderson (tanderson) Assigned to: Tim Anderson (tanderson) Summary: Deadlock in the tcp connector Initial Comment: The JMS CTS stress test SendReceive2Size0KTest periodically hangs when using the tcp connector and synchronous consumers. It uses one producer and 2 consumers concurrently, all using the same Connection instance. The problem occurs when when the producer sends a message to the server, both of the consumers start to invoke receive(), and the server tries to notify the consumers that messages are available. ------------------------------------- Relevant stack trace for the client: "Thread-21" prio=5 tid=0x272F5A08 nid=0x524 waiting for monitor entry [27e3f000..27e3fd88] at org.exolab.jms.client.mipc.IpcJmsSessionStub.receiveMe ssage(IpcJmsSessionStub.java:245) - waiting to lock <05212290> (a org.exolab.core.mipc.ObjectChannel) at org.exolab.jms.client.JmsSession.retrieveMessage (JmsSession.java:853) - locked <052A86F8> (a java.lang.Object) at org.exolab.jms.client.JmsMessageConsumer.retrieveMess age(JmsMessageConsumer.java:345) at org.exolab.jms.client.JmsMessageConsumer.receive (JmsMessageConsumer.java:242) at org.exolab.jmscts.core.SynchronousReceiver.receive (SynchronousReceiver.java:158) at org.exolab.jmscts.core.ThreadedReceiver.runProtected (ThreadedReceiver.java:101) at org.exolab.jmscts.core.ThreadedAction.run (ThreadedAction.java:110) "Thread-20" prio=5 tid=0x2732BB00 nid=0x5d0 waiting for monitor entry [27dff000..27dffd88] at org.exolab.jms.client.mipc.IpcJmsSessionStub.receiveMe ssage(IpcJmsSessionStub.java:245) - waiting to lock <05212290> (a org.exolab.core.mipc.ObjectChannel) at org.exolab.jms.client.JmsSession.retrieveMessage (JmsSession.java:853) - locked <052A8850> (a java.lang.Object) at org.exolab.jms.client.JmsMessageConsumer.retrieveMess age(JmsMessageConsumer.java:345) at org.exolab.jms.client.JmsMessageConsumer.receive (JmsMessageConsumer.java:242) at org.exolab.jmscts.core.SynchronousReceiver.receive (SynchronousReceiver.java:158) at org.exolab.jmscts.core.ThreadedReceiver.runProtected (ThreadedReceiver.java:101) at org.exolab.jmscts.core.ThreadedAction.run (ThreadedAction.java:110) "Thread-2" prio=5 tid=0x2735E910 nid=0xe94 waiting for monitor entry [27caf000..27cafd88] at org.exolab.jms.client.JmsSession.notifyConsumers (JmsSession.java:993) - waiting to lock <052A86F8> (a java.lang.Object) at org.exolab.jms.client.JmsSession.onMessageAvailable (JmsSession.java:590) at org.exolab.jms.client.mipc.IpcJmsMessageListener.onMe ssageAvailable(Unknown Source) at org.exolab.jms.client.mipc.IpcJmsMessageListener.run (Unknown Source) at java.lang.Thread.run(Thread.java:536) "main" prio=5 tid=0x00235BD8 nid=0x688 in Object.wait() [6e000..6fc3c] at java.lang.Object.wait(Native Method) at java.lang.Object.wait(Object.java:426) at org.exolab.core.mipc.Queue.remove (Queue.java:93) - locked <05213568> (a java.util.LinkedList) at org.exolab.core.mipc.QueueInputStream.receive (QueueInputStream.java:93) at org.exolab.core.mipc.ObjectChannel.receive (ObjectChannel.java:141) at org.exolab.jms.client.mipc.IpcJmsSessionStub.checkRep ly(IpcJmsSessionStub.java:865) at org.exolab.jms.client.mipc.IpcJmsSessionStub.sendMess age(IpcJmsSessionStub.java:219) - locked <05212290> (a org.exolab.core.mipc.ObjectChannel) at org.exolab.jms.client.JmsSession.sendMessage (JmsSession.java:679) - locked <05210B00> (a org.exolab.jms.client.JmsQueueSession) at org.exolab.jms.client.JmsMessageProducer.sendMessage (JmsMessageProducer.java:254) at org.exolab.jms.client.JmsQueueSender.send (JmsQueueSender.java:156) at org.exolab.jms.client.JmsQueueSender.send (JmsQueueSender.java:113) ---------------------------- Stack trace for the server: "EventManager-Worker-1" daemon prio=5 tid=0x24bc8ae0 nid=0x658 waiting on monitor [0x2660f000..0x2660fdbc] at java.lang.Object.wait(Native Method) at java.lang.Object.wait(Object.java:420) at org.exolab.core.mipc.Queue.remove (Queue.java:93) at org.exolab.core.mipc.QueueInputStream.receive (QueueInputStream.java:93) at org.exolab.core.mipc.ObjectChannel.receive (ObjectChannel.java:141) at org.exolab.jms.server.mipc.IpcJmsSessionSender.onMes sage(IpcJmsSessionSender.java:115) at org.exolab.jms.server.JmsServerSession.isClientEndpoin tActive(JmsServerSession.java:1000) at org.exolab.jms.server.JmsServerConnection.isClientEndp ointActive(JmsServerConnection.java:276) at org.exolab.jms.server.JmsServerConnectionManager.han dleEvent(JmsServerConnectionManager.java:243) at org.exolab.jms.events.BasicEventManager$QueueEntry.r un(BasicEventManager.java:392) at org.exolab.core.threadPool.ThreadPoolWorker.runIt (ThreadPoolWorker.java:191) at org.exolab.core.threadPool.ThreadPoolWorker.runWork (ThreadPoolWorker.java:178) at org.exolab.core.threadPool.ThreadPoolWorker.access$00 0(ThreadPoolWorker.java:67) at org.exolab.core.threadPool.ThreadPoolWorker$1.run (ThreadPoolWorker.java:122) at java.lang.Thread.run(Thread.java:484) "server-0" prio=5 tid=0x24d32ec0 nid=0x5e4 waiting on monitor [0x2632f000..0x2632fdbc] at java.lang.Object.wait(Native Method) at java.lang.Object.wait(Object.java:420) at org.exolab.core.mipc.Queue.remove (Queue.java:93) at org.exolab.core.mipc.QueueInputStream.receive (QueueInputStream.java:93) at org.exolab.core.mipc.ObjectChannel.receive (ObjectChannel.java:141) at org.exolab.jms.server.mipc.IpcJmsSessionSender.onMes sageAvailable(IpcJmsSessionSender.java:166) at org.exolab.jms.server.JmsServerSession.onMessageAvail able(JmsServerSession.java:986) at org.exolab.jms.messagemgr.ConsumerEndpoint.notifyMe ssageAvailable(ConsumerEndpoint.java:790) at org.exolab.jms.messagemgr.QueueConsumerEndpoint.p ersistentMessageAdded (QueueConsumerEndpoint.java:302) at org.exolab.jms.messagemgr.QueueDestinationCache.per sistentMessageAdded(QueueDestinationCache.java:388) at org.exolab.jms.messagemgr.MessageMgr.notifyOnAddPe rsistentMessage(MessageMgr.java:786) at org.exolab.jms.messagemgr.MessageMgr.addPersistentM essage(MessageMgr.java:416) at org.exolab.jms.messagemgr.MessageMgr.add (MessageMgr.java:310) at org.exolab.jms.server.JmsServerSession.sendMessage (JmsServerSession.java:364) at org.exolab.jms.server.mipc.IpcJmsSessionConnection.se ndMessage(IpcJmsSessionConnection.java:320) at org.exolab.jms.server.mipc.IpcJmsSessionConnection.no tify(IpcJmsSessionConnection.java:129) at org.exolab.jms.server.mipc.IpcJmsReceiver.notify (IpcJmsReceiver.java:101) at org.exolab.jms.server.mipc.IpcServerChannel.run (IpcServerChannel.java:143) ---------------------------------------------------------------------- You can respond by visiting: https://sourceforge.net/tracker/?func=detail&atid=474136&aid=777419&group_id=54559