You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@qpid.apache.org by "Rajith Attapattu (JIRA)" <qp...@incubator.apache.org> on 2009/03/25 16:52:51 UTC

[jira] Resolved: (QPID-1770) JMS: No useful exception thrown when message is sent to full queue

     [ https://issues.apache.org/jira/browse/QPID-1770?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Rajith Attapattu resolved QPID-1770.
------------------------------------

       Resolution: Fixed
    Fix Version/s: 0.5
         Assignee: Rajith Attapattu

I have tested this with the trunk and verified that the proper exception is thrown instead of the hang and subsequent session detached exception.
However I noticed that if a session exception is received while the client is waiting for a completion the exception is ignored.
A fix for that is commited at rev 758017 on Qpid trunk (and shortly to M5 branch) and is tracked via QPID-1773

> JMS: No useful exception thrown when message is sent to full queue
> ------------------------------------------------------------------
>
>                 Key: QPID-1770
>                 URL: https://issues.apache.org/jira/browse/QPID-1770
>             Project: Qpid
>          Issue Type: Bug
>          Components: Java Client
>    Affects Versions: M4
>         Environment: Redhat with C++ broker
>            Reporter: Jeff Stein
>            Assignee: Rajith Attapattu
>            Priority: Critical
>             Fix For: 0.5
>
>
> In JMS, when a message is sent when a queue is already at its maximum size, nothing happens for 60 seconds.  The program just hangs there.  Then, suddenly, these two exceptions are thrown:
> org.apache.qpid.transport.SessionException: timed out waiting for session to become open (state=DETACHED)
> 	at org.apache.qpid.transport.Session.invoke(Session.java:442)
> 	at org.apache.qpid.transport.SessionInvoker.messageTransfer(SessionInvoker.java:96)
> 	at org.apache.qpid.client.BasicMessageProducer_0_10.sendMessage(BasicMessageProducer_0_10.java:160)
> 	at org.apache.qpid.client.BasicMessageProducer.sendImpl(BasicMessageProducer.java:465)
> 	at org.apache.qpid.client.BasicMessageProducer.sendImpl(BasicMessageProducer.java:420)
> 	at org.apache.qpid.client.BasicMessageProducer.send(BasicMessageProducer.java:289)
> 	at Producer.runTest(Producer.java:135)
> 	at Producer.main(Producer.java:64)
> Producer: Caught an Exception: javax.jms.JMSException: Exception when sending message
> javax.jms.JMSException: Exception when sending message
> 	at org.apache.qpid.client.BasicMessageProducer_0_10.sendMessage(BasicMessageProducer_0_10.java:173)
> 	at org.apache.qpid.client.BasicMessageProducer.sendImpl(BasicMessageProducer.java:465)
> 	at org.apache.qpid.client.BasicMessageProducer.sendImpl(BasicMessageProducer.java:420)
> 	at org.apache.qpid.client.BasicMessageProducer.send(BasicMessageProducer.java:289)
> 	at Producer.runTest(Producer.java:135)
> 	at Producer.main(Producer.java:64)
> This is in contrast to, for example, a Python qpid producer, which will throw an exception as soon as the queue is full, and it will be very specific about the problem, telling you the queue is too full, which message overfilled it, etc.
> I tested this using a hacked up version of the direct producer/consumer JMS example.  Just run the producer (without the consumer running) long enough with large enough messages so that it will reach the maximum queue size, and you should be able to see it. 

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.


---------------------------------------------------------------------
Apache Qpid - AMQP Messaging Implementation
Project:      http://qpid.apache.org
Use/Interact: mailto:dev-subscribe@qpid.apache.org