Blocking jms access after sudden death of openjms server
"A. Schiefke (ancosys)" <[email protected]>
| Newsgroups | gmane.comp.java.openjms.user |
|---|---|
| Message-ID | <[email protected]> |
Unter certain circumstances I experience a very strange behaviour of our openjms application. A JMS-Server and at least two clients are running on the same WinXP-PC and are exchanging regularely a few messages per second (All openjms 0.7.6.1, using TcpConfiguration and Topics). If I kill the jms server process deliberately or deactivate the network connection I experience very often that one or more active threads hang at the following method (Stacktrace from Eclipse, where the problem can be reproduced, sometimes): Thread [AN1] (Suspended) owns: ObjectChannel (id=104) owns: JmsTopicSession (id=123) waiting for: LinkedList (id=122) Object.wait(long) line: not available [native method] LinkedList(Object).wait() line: 429 Queue.remove() line: 93 QueueInputStream.receive() line: 93 ObjectChannel.receive() line: 141 IpcJmsSessionStub.checkReply(String) line: 841 IpcJmsSessionStub.createSubscriber(JmsTopic, String, long, String, boolean) line: 451 JmsTopicSession.addSubscriber(JmsTopicSubscriber, String) line: 313 JmsTopicSession.createSubscriber(Topic, String, boolean) line: 160 JmsTopicSession.createSubscriber(Topic) line: 123 JMSManager.sendQuestion(Object, Topic, Topic, String, Serializable, long) line: 393 JMSManager.sendQuestion(Object, Topic, Topic, String, Serializable) line: 734 SystemProxy.executeMethodWithRet(Serializable[]) line: 462 SystemProxy.checkAlive() line: 521 SystemProxy.workAtIdle() line: 669 SystemProxy(MyThread).run() line: 631 It seems that no other thread feels responsible to call notifyAll() to get out of the wait(). Unfortunately, the classes ObjectChannel, QueueInputStream and Queue are part of exolabcore-0.3.7.jar that is not available as source code, so my debugging possibilities are very limited. Question: Which thread ist responsible for waking up the waiting "Queue" and why does it not happen? Shurely there is a kind of timeout in the helper thread when the tcp connection is broken? There seem to be several helper threads on the client side (EventManagerThread, Multiplexer-xx, MessageCopier-0) but I am not able to evaluate the right one. Any help would be appreciated, Andreas Schiefke email: [email protected] ------------------------------------------------------- This SF.net email is sponsored by: Splunk Inc. Do you grep through log files for problems? Stop! Download the new AJAX search engine that makes searching your log files as easy as surfing the web. DOWNLOAD SPLUNK! http://ads.osdn.com/?ad_id=7637&alloc_id=16865&op=click