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

Keith Wall updated QPID-6461:
-----------------------------
    Description: 
Frameworks such as Spring install a exception listener that responds to all 
exceptions by stopping/closing the connection.  With the changes in 0.32 
(QPID-6374), the task executor is now used for the invocation of the exception 
listener.  If the exception listener calls Connection#close(), it will close 
the sessions, then hang for two seconds awaiting shutdown of the task pool 
hence awaiting its own termination.  This naturally times-out, so the 
TaskExecutor interrupts the task (interrupting the close after 


The JMS Specification (4.3.8) states that:

bq. A Connection serializes execution of its ExceptionListener.

Currently, as the client uses an unbounded executor task pool, many invocations 
of the application's exception listener may be in flight concurrently. This 
behaviour may break an application.

This is a partly a long standing issue (the message bounces in 0-8..0-91 were 
potentially returned via the exception listener concurrently) and partly as a 
result of a more recent change (QPID-6374 in 0.32).  Here we started to use the 
task pool for redelivery of all asynchronous exceptions.




  was:
Related to this is the fact that frameworks such as Spring often install a 
exception listener that responds to all exceptions by stopping/closing the 
connection.  With the changes in 0.32, the attempted close 



The JMS Specification (4.3.8) states that:

bq. A Connection serializes execution of its ExceptionListener.

Currently, as the client uses an unbounded executor task pool, many invocations 
of the application's exception listener may be in flight concurrently. This 
behaviour may break an application.

This is a partly a long standing issue (the message bounces in 0-8..0-91 were 
potentially returned via the exception listener concurrently) and partly as a 
result of a more recent change (QPID-6374 in 0.32).  Here we started to use the 
task pool for redelivery of all asynchronous exceptions.





> Closing a connection in a JMS ExceptionListener will fail to complete 
> normally (and log InterruptedException)
> -------------------------------------------------------------------------------------------------------------
>
>                 Key: QPID-6461
>                 URL: https://issues.apache.org/jira/browse/QPID-6461
>             Project: Qpid
>          Issue Type: Bug
>          Components: Java Client
>    Affects Versions: 0.32
>            Reporter: Keith Wall
>            Assignee: Keith Wall
>
> Frameworks such as Spring install a exception listener that responds to all 
> exceptions by stopping/closing the connection.  With the changes in 0.32 
> (QPID-6374), the task executor is now used for the invocation of the 
> exception listener.  If the exception listener calls Connection#close(), it 
> will close the sessions, then hang for two seconds awaiting shutdown of the 
> task pool hence awaiting its own termination.  This naturally times-out, so 
> the TaskExecutor interrupts the task (interrupting the close after 
> The JMS Specification (4.3.8) states that:
> bq. A Connection serializes execution of its ExceptionListener.
> Currently, as the client uses an unbounded executor task pool, many 
> invocations of the application's exception listener may be in flight 
> concurrently. This behaviour may break an application.
> This is a partly a long standing issue (the message bounces in 0-8..0-91 were 
> potentially returned via the exception listener concurrently) and partly as a 
> result of a more recent change (QPID-6374 in 0.32).  Here we started to use 
> the task pool for redelivery of all asynchronous exceptions.



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to