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

Robbie Gemmell resolved QPIDJMS-474.
------------------------------------
    Fix Version/s: 0.46.0
         Assignee: Robbie Gemmell
       Resolution: Fixed

I've pushed a change to address the issue, which can occur if connection 
failure occurs between a session being created on the wire, but before its 
transaction coordinator is first established and a transaction declared.

> NPE upon connection failure during transacted session setup
> -----------------------------------------------------------
>
>                 Key: QPIDJMS-474
>                 URL: https://issues.apache.org/jira/browse/QPIDJMS-474
>             Project: Qpid JMS
>          Issue Type: Bug
>          Components: qpid-jms-client
>    Affects Versions: 0.45.0
>            Reporter: Mario Schlipf
>            Assignee: Robbie Gemmell
>            Priority: Major
>             Fix For: 0.46.0
>
>
> Hi,
> I am using qpid-cms-client version 0.39.0, but I can see that the same 
> problem exists in the current version.
> {{The function `JmsLocalTransactionContext.onConnectionInterrupted is missing 
> a null-check for the `transactionInfo` field.}}
> This function is called from `JmsSession.onConnectionInterrupted`. If 
> `transactionInfo` is null, this leads to the fact that consumers and 
> producers are not properly notified of the interrupted connection.
> I am using qpid-jms-client in conjunction with Spring's 
> `SingleConnectionFactory`. I can see rare cases where `transactionInfo` is 
> null and in which the SpringConnectionFactory will not be informed about the 
> transaction loss. In these cases, there is no automatic reconnect from Spring.
>  
> Below some logging when the NPE occurs:
>  
>  
> {code:java}
> 2019-09-19T08:39:17,141 [WARN ] [AmqpProvider :(2):[amqps://10.0.0.12:5672]] 
> AbstractEventExecutor - A task raised an exception. Task: 
> org.apache.qpid.jms.provider.amqp.AmqpProvider$$Lambda$327/2054861790@467bfdd
> java.lang.NullPointerException: null
>         at 
> org.apache.qpid.jms.JmsLocalTransactionContext.onConnectionInterrupted(JmsLocalTransactionContext.java:333)
>  ~[qpid-jms-client-0.39.0.jar!/:?]
>         at 
> org.apache.qpid.jms.JmsSession.onConnectionInterrupted(JmsSession.java:1340) 
> ~[qpid-jms-client-0.39.0.jar!/:?]
>         at 
> org.apache.qpid.jms.JmsConnection.onConnectionFailure(JmsConnection.java:1356)
>  ~[qpid-jms-client-0.39.0.jar!/:?]
>         at 
> org.apache.qpid.jms.provider.amqp.AmqpProvider.fireProviderException(AmqpProvider.java:1069)
>  ~[qpid-jms-client-0.39.0.jar!/:?]
>         at 
> org.apache.qpid.jms.provider.amqp.AmqpProvider.lambda$onTransportClosed$18(AmqpProvider.java:867)
>  ~[qpid-jms-client-0.39.0.jar!/:?]
>         at 
> io.netty.util.concurrent.AbstractEventExecutor.safeExecute(AbstractEventExecutor.java:163)
>  ~[netty-common-4.1.29.Final.jar!/:4.1.29.Final]
>         at 
> io.netty.util.concurrent.SingleThreadEventExecutor.runAllTasks(SingleThreadEventExecutor.java:404)
>  ~[netty-common-4.1.29.Final.jar!/:4.1.29.Final]
>         at io.netty.channel.epoll.EpollEventLoop.run(EpollEventLoop.java:315) 
> ~[netty-transport-native-epoll-4.1.29.Final-linux-x86_64.jar!/:4.1.29.Final]
>         at 
> io.netty.util.concurrent.SingleThreadEventExecutor$5.run(SingleThreadEventExecutor.java:884)
>  ~[netty-common-4.1.29.Final.jar!/:4.1.29.Final]
>         at java.lang.Thread.run(Thread.java:748) [?:1.8.0_201]
> {code}
>  
> My suspicion is that this NPE is responsible for the exception not properly 
> proparagated, but I am still investigating.
> It would help very much if anyone from the Qpid team could validate this as 
> well.
>  
> Thanks



--
This message was sent by Atlassian Jira
(v8.3.4#803005)

---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscr...@qpid.apache.org
For additional commands, e-mail: dev-h...@qpid.apache.org

Reply via email to