activemq-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Torsten Mielke (Resolved) (JIRA)" <j...@apache.org>
Subject [jira] [Resolved] (AMQ-3752) Repeated call to PooledConnection.setClientID() with the same clientId should not raise a IllegalStateException("Setting clientID on a used Connection is not allowed")
Date Fri, 02 Mar 2012 13:23:06 GMT

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

Torsten Mielke resolved AMQ-3752.
---------------------------------

    Resolution: Fixed
    
> Repeated call to PooledConnection.setClientID() with the same clientId should not raise
a IllegalStateException("Setting clientID on a used Connection is not allowed")
> -----------------------------------------------------------------------------------------------------------------------------------------------------------------------
>
>                 Key: AMQ-3752
>                 URL: https://issues.apache.org/jira/browse/AMQ-3752
>             Project: ActiveMQ
>          Issue Type: Bug
>          Components: Broker
>    Affects Versions: 5.5.1
>            Reporter: Torsten Mielke
>            Assignee: Torsten Mielke
>              Labels: PooledConnectionFactory
>             Fix For: 5.6.0
>
>         Attachments: AMQ-3752.patch
>
>
> Calling ActiveMQConnection.setClientID() twice currently raises an IllegalStateException:
> {code:title=ActiveMQConnection.java}
> public void setClientID(String newClientID) throws JMSException {
>         checkClosedOrFailed();
>         if (this.isConnectionInfoSentToBroker) {
>             throw new IllegalStateException("Setting clientID on a used Connection is
not allowed");
>         }
>         
>         this.info.setClientId(newClientID);
>         this.userSpecifiedClientID = true;
>         ensureConnectionInfoSent();
>     }
> {code}
> This successfully prevents from overriding clientID on an already started connection.
> However in the case of using a Camel JMS endpoint with durable subscriptions, transactions
and configuring for a PooledConnectionFactory, this current behavior causes problems. 
> Due to the durable sub a clientID needs to be set on the connection. This happens at
startup of the JMS consumer by calling ActiveMQConnection.setClientID().
> If you stop the Camel route, the connection will be released back to the pool with the
clientID remaining. 
> If you restart the Camel route, it will setup a new Spring DMLC and reinitialize the
connection with the configured clientId. A new connection is obtained from the pool and setClientID()
is invoked on that connection. This will raise the above Exception. 
> If we try to set the same clientID on the PooledConnection again, we should simply ignore
the call rather than raising an exception.This allows the camel-jms consumer to be restarted.

> Without a fix, its impossible restart a Camel route that uses camel-jms with durable
subscriptions and the PooledConnectionFactory.

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators: https://issues.apache.org/jira/secure/ContactAdministrators!default.jspa
For more information on JIRA, see: http://www.atlassian.com/software/jira

        

Mime
View raw message