qpid-users mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Gordon Sim <g...@redhat.com>
Subject Re: Qpid JMS 0.9.0 receive() hanging (issue relates to Artemis; works on ActiveMQ)
Date Mon, 25 Apr 2016 09:02:43 GMT
On 25/04/16 09:30, Matthew Karlsen wrote:
> Hello All,
> Since my last post to this list I have constructed send and recv clients
> using both JMS and Reactor. Overall they work well and are robust,
> and fix the issues I was encountering when using Messenger (I was
> on the wrong track using Reactor at one point but Robbie Gemmell
> pointed out my mistake; I went away and read the AMQP spec etc.
> in an effort to understand things better and it appears to
> have paid off)...
> However, there is one major problem that I am encountering with Qpid JMS
> that I am unsure how to resolve...
> Whether I use receive() with a timeout or receiveNoWait(), receive
> hangs when no messages are present. More precisely, it hangs at
> the UNSAFE.park(false, 0L); line of LockSupport.park():
> "main@1" prio=5 tid=0x1 nid=NA runnable
>    java.lang.Thread.State: RUNNABLE
> at java.util.concurrent.locks.LockSupport.park(LockSupport.java:175)
> at java.util.concurrent.locks.AbstractQueuedSynchronizer.parkAndCheckInterrupt(AbstractQueuedSynchronizer.java:836)
> at java.util.concurrent.locks.AbstractQueuedSynchronizer.doAcquireSharedInterruptibly(AbstractQueuedSynchronizer.java:997)
> at java.util.concurrent.locks.AbstractQueuedSynchronizer.acquireSharedInterruptibly(AbstractQueuedSynchronizer.java:1304)
> at java.util.concurrent.CountDownLatch.await(CountDownLatch.java:231)
> at org.apache.qpid.jms.provider.ProviderFuture.sync(ProviderFuture.java:97)
> at org.apache.qpid.jms.JmsConnection.pull(JmsConnection.java:764)
> at org.apache.qpid.jms.JmsConnection.pull(JmsConnection.java:753)
> at org.apache.qpid.jms.JmsMessageConsumer.performPullIfRequired(JmsMessageConsumer.java:627)
> at org.apache.qpid.jms.JmsMessageConsumer.dequeue(JmsMessageConsumer.java:259)
> at org.apache.qpid.jms.JmsMessageConsumer.receive(JmsMessageConsumer.java:192)
> ...
> Once receive() has locked up it does not resume, even if I subsequently
> send a message to the appropriate queue. It is eventually shaken out of this state by
the broker:
> "javax.jms.JMSException: Transport closed due to the peer exceeding our requested idle-timeout"...
> I have tried using both HornetQ and Artemis as the broker. I have also tried ActiveMQ.
> It does NOT occur on ActiveMQ, so I am wondering if it is in some way related to how
> client interacts with a particular broker...
> Does anyone have any ideas as to what may be going on?

Sounds like it is the handling of the drain flag. I found 
https://issues.apache.org/jira/browse/ARTEMIS-46 which may be relevant.

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

View raw message