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

Milan Nikl updated QPIDJMS-255:
-------------------------------
    Attachment: disconnection_logs.txt

There are all three cases from issue description above captured in logs.
# No pending message, swift disconnection
# Pending message + disconnection longer than 2 minutes
# Pending message + disconnection shorter than 2 minutes

I can also provide some more logs and tests if you need them...

> AmqpProducer survives JmsConnection.close()
> -------------------------------------------
>
>                 Key: QPIDJMS-255
>                 URL: https://issues.apache.org/jira/browse/QPIDJMS-255
>             Project: Qpid JMS
>          Issue Type: Bug
>    Affects Versions: 0.20.0
>            Reporter: Milan Nikl
>         Attachments: disconnection_logs.txt
>
>
> Hi, I'm using ActiveMQ 5.14.3 with Qpid JMS client (0.20.0 RC [maven 
> artifact|https://repository.apache.org/content/repositories/orgapacheqpid-1097])
>  in QueueBridge setup when local and remote queues are connected via 
> [JmsConnector|http://activemq.apache.org/maven/apidocs/org/apache/activemq/network/jms/JmsConnector.html].
>  Some of my setup is described in 
> [QPIDJMS-230|https://issues.apache.org/jira/browse/QPIDJMS-230].
> On my device I have an osgi bundle sending and receiving messages. ActiveMQ 
> servers as persistence manager (KahaDB) and as entry point for the system, 
> while Qpid JMS client as actual communication client for connection to MS 
> Azure's IoT Hub.
> This device suffers from quite common losses of network connection. In such 
> case my ServerConnector thread which handles connection as a state machine 
> tries to close my implementation of JmsConnector and clean all resources. 
> Basically three different things can happen when closing connection:
> # There is no pending message at the moment, everything goes fine and is done 
> instantly.
> # There is a pending message, network stays disconnected for a longer period 
> of time. The foreign connection of JmsConnector is closed, the local 
> connection close() gets stuck and cleanup is interrupted. After 120000 ms (my 
> amqp.idleTimeout) Amqp finds an idle AmqpProvider and shuts it down.
> # There is a pending message, but network connection is renewed under 2 
> minutes. Then the IdleTimeoutCheck doesn't close the old AmqpProvider before 
> my ServerConnector thread starts brand new JmsConnectionFactory as it tries 
> to recover from connection failure.
> After 2 minutes the IdleTimeoutCheck finds there is probably something wrong 
> with AmqpProvider. An exception is thrown and my thread closes current 
> connection and tries to open a new one. There is one issue though because 
> somehow two instances of my JmsConnector are somehow running. With some 
> AmqpProvider instances working fine and some problematic ones. I can only 
> hope that idle AmqpProviders are eliminated in background. But I still don't 
> like the messy situation I caused by few connector restarts.
> *I'd like to point out that most of the mess is most probably caused by my 
> code.* There are few things I yet have to handle properly. E.g. I can't leave 
> the cleaning thread running indefinitely because the device shutdown could 
> suffer from this.
> While I have 5 sec CloseTimeout on both ConnectionFactory instances and 2 sec 
> SendTimeout, close() call on local connection still hangs longer. This might 
> be some ActiveMQ problem as well.
> The thing is there are still some AmqpProvider instances left behind running 
> even though the JmsConnection instance which produced them is closed. Is it 
> possible to (forcibly) clean all resources tied to JmsConnectionFactory? Or 
> is this caused by something else and I'm getting the problem all wrong?
> Thanks



--
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