[prev in list] [next in list] [prev in thread] [next in thread] 

List:       activemq-dev
Subject:    [jira] Resolved: (AMQ-2049) Race condition cleaning connection
From:       "David Jencks (JIRA)" <jira () apache ! org>
Date:       2008-12-30 20:08:06
Message-ID: 1339642506.1230667686351.JavaMail.jira () brutus
[Download RAW message or body]


     [ https://issues.apache.org/activemq/browse/AMQ-2049?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel \
]

David Jencks resolved AMQ-2049.
-------------------------------

    Resolution: Fixed

rev 730226 solves this by copying.  Review would be great.  I also added a TODO about \
a question in AMQConnection.. line 1336

> Race condition cleaning connection using VMTransport
> ----------------------------------------------------
> 
> Key: AMQ-2049
> URL: https://issues.apache.org/activemq/browse/AMQ-2049
> Project: ActiveMQ
> Issue Type: Bug
> Components: Transport
> Affects Versions: 5.3.0
> Reporter: David Jencks
> Assignee: David Jencks
> Fix For: 5.3.0
> 
> 
> This problem arises when the server side has a RegionBroker installed and there is \
> a configured clientID for the connection. \
> ActiveMQConnection.ensureConnectionInfoSent sends the ConnectionInfo object with \
> the configured clientID off to the server.  Currently this results in the same \
> ConnectionInfo object in the AMQConnection and the TransportConnection. Now when \
> you get to AMQConnection.cleanup() it asynchronously sends a message to the broker \
> to clean up and immediately sets the configured clientID to null.  When the \
> RegionBroker processes the remove message the clientID is no longer set (assuming \
> bad luck in thread scheduling) and it complains: public void \
> removeConnection(ConnectionContext context, ConnectionInfo info, Throwable error) \
> throws Exception { String clientId = info.getClientId();
> if (clientId == null) {
> throw new InvalidClientIDException("No clientID specified for connection disconnect \
> request"); }
> One fix for this is to copy the connectionInfo before sending it to the broker.  \
> This is a small but unnecessary cost for non-vm transports but works. Another fix \
> might be to send the close message synchronously so it's processed before the \
> clientID is nulled out. I'm committing the "copy" solution but IMO this should be \
> reviewed by experts.

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


[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic