Skimming through the relevant code there is an interrupt call when
stopping the dispatcher.
So if you are pulling messages with receive() and stop the dispatcher
(e.g. close the session) before processing the messages this would seem
likely to happen. I think shutdown should probably be handled more
cleanly, interrupt is a horrible way to do that (or at the very least
the interruption should be anticipated).
Btw, the code I'm looking at is not quite the same as yours based on the
line numbers in the stack trace. I *think* I have the latest...
Martin Ritchie wrote:
Hello all,
I've been getting the following error ever so often whilst running the IBM
performance tests on the client. I'm not sure what is causing it so I'm
throwing out here to those of you that might no know more about it.
Dispatcher-Channel-1 2006-09-14 10:32:43,337 ERROR
[apache.qpid.client.BasicMessageConsumer] Caught exception (dump follows)
- ignoring...
java.lang.InterruptedException
at
java.util.concurrent.locks.AbstractQueuedSynchronizer.doAcquireInterruptibly(AbstractQueuedSynchronizer.java:746)
at
java.util.concurrent.locks.AbstractQueuedSynchronizer.acquireInterruptibly(AbstractQueuedSynchronizer.java:1064)
at
java.util.concurrent.SynchronousQueue$Node.waitForTake(SynchronousQueue.java:254)
at
java.util.concurrent.SynchronousQueue.put(SynchronousQueue.java:326)
at
org.apache.qpid.client.BasicMessageConsumer.notifyMessage(BasicMessageConsumer.java:410)
at
org.apache.qpid.client.AMQSession$Dispatcher.dispatchMessage(AMQSession.java:152)
at
org.apache.qpid.client.AMQSession$Dispatcher.run(AMQSession.java:129)
If you have the IBM jar on your path this is pretty much what I'm running
if you want to recreate it:
java JMSPerfHarness -pc JNDI -ii
com.sun.jndi.fscontext.RefFSContextFactory -iu
file:/C:/temp/IBMPerfTestsJNDI/ -cf amq/ConnectionFactory -d amq/Queue -tc
jms.r11.PutGet -nt 1
Any insights are welcome.