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
Fix For: 5.6.0
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