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

Reply via email to