You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@activemq.apache.org by "Timothy Bish (JIRA)" <ji...@apache.org> on 2009/02/26 20:02:00 UTC

[jira] Commented: (AMQNET-147) Connection fails to close if a producer or consumer has not been disposed (only when using the failover transport).

    [ https://issues.apache.org/activemq/browse/AMQNET-147?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=50054#action_50054 ] 

Timothy Bish commented on AMQNET-147:
-------------------------------------

I haven't had a chance to try this yet but it looks to me like the issue is probably due to the fact that the Session removes itself from the Connection before it removes its consumers and producers in its close method.  The removeSession call causes the client to send a dispose message to the broker and removing it from the state tracker used in the Failover Transport, so when that's followed by the remove of the consumers and producers the state is not valid.

I've attached a patch you can try out.

> Connection fails to close if a producer or consumer has not been disposed (only when using the failover transport).
> -------------------------------------------------------------------------------------------------------------------
>
>                 Key: AMQNET-147
>                 URL: https://issues.apache.org/activemq/browse/AMQNET-147
>             Project: ActiveMQ .Net
>          Issue Type: Bug
>          Components: ActiveMQ Client
>    Affects Versions: 1.1
>         Environment: Using failover transport
>            Reporter: Daniel Ellis
>            Assignee: Jim Gomes
>             Fix For: 1.1
>
>         Attachments: CloseSessionAfterEverythingElse.patch, ConnectionError.patch, ConnectionsTests.patch
>
>
> When using the failover transport such as:-
> <defaultURI value="activemq:failover:(tcp://activemqhost:61616,tcp://activemqhost:61616)"/>
> A connection will fail to close if you dispose a connection before disposing a consumer or producer that is associated with the connection.  The dispose call never returns because the failover transport is continually reconnecting due to a KeyNotFoundException.  The KeyNotfoundException is thrown because a session no longer exists in the connection state.
> A number of the existing unit tests fail (actually they never return) when using the failover transport.  When in debug, a DebugAssert is displayed for each error that causes the reconnect.

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