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

Robbie Gemmell updated QPID-3448:
---------------------------------

    Assignee: Alex Rudyy  (was: Robbie Gemmell)
      Status: Open  (was: Ready To Review)

I think the changes should really be made at the entry points to AMQSession 
mandated by the JMS interfaces, i.e the places we should already be declaring 
we throw JMSException. Whilst some of the instnaces may be necessary, there 
seems to be far too much additional try-catching being added within the general 
implementation methods in AMQSession_0_10 etc which are used to support the JMS 
methods. The conversion of SessionExceptions to AMQExceptions in several places 
also doesnt seem that desirable given they are then going to be wrapped in 
JMSExceptions anyway.

Making the underlying AMQP/transport related exceptions checked exceptions 
rather than runtime exceptions could be worthwhile, since it would increase 
their visibility and they are often things you should have to explicitly choose 
to ignore rather than unexpected exceptions you cant/shouldnt reasonably expect 
to handle within the mesaging library, making them seem more suited to checked 
exceptions.

> JMS Client throws unchecked SessionExceptions to client application
> -------------------------------------------------------------------
>
>                 Key: QPID-3448
>                 URL: https://issues.apache.org/jira/browse/QPID-3448
>             Project: Qpid
>          Issue Type: Bug
>          Components: Java Client
>    Affects Versions: 0.10, 0.11, 0.12
>            Reporter: Keith Wall
>            Assignee: Alex Rudyy
>         Attachments: QPID-3448-Prevent-throwing-of-SessionExceptions.patch
>
>
> On the 0-10 code path, there are instances where the client application 
> receives an unchecked Qpid SessionException rather than a JMSException as 
> mandated by the JMS Specification.   The client application should not be 
> forced to catch 'internal' Qpid exceptions.
> For example if a javax.jms.Session#commit takes longer than 60 seconds, the 
> client receives:
> {code}
> org.apache.qpid.transport.SessionException: timed out waiting for sync: 
> complete = 12, point = 15
>         at org.apache.qpid.transport.Session.sync(Session.java:798)
>         at org.apache.qpid.transport.Session.sync(Session.java:772)
>         at org.apache.qpid.transport.Session.invoke(Session.java:732)
>         at org.apache.qpid.transport.Session.invoke(Session.java:561)
>         at 
> org.apache.qpid.transport.SessionInvoker.txCommit(SessionInvoker.java:148)
>         at 
> org.apache.qpid.client.AMQSession_0_10.sendCommit(AMQSession_0_10.java:423)
>         at 
> org.apache.qpid.client.AMQSession_0_10.commit(AMQSession_0_10.java:1008)
> {code}
> For comparison, 0-8..-0-9-1 throws a JMSException with an underlying of 
> AMQTimeoutException.

--
This message is automatically generated by JIRA.
For more information on JIRA, see: http://www.atlassian.com/software/jira

        

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

Reply via email to