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 2011/08/14 00:45:27 UTC

[jira] [Resolved] (AMQ-2974) Set ClientID - InvalidClientIDException with stomp

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

Timothy Bish resolved AMQ-2974.
-------------------------------

       Resolution: Fixed
    Fix Version/s: 5.6.0

Fixed by use of Stomp v1.1 client with heartbeats (AMQ-3449) and also with improvements made in AMQ-3442

> Set ClientID - InvalidClientIDException with stomp
> --------------------------------------------------
>
>                 Key: AMQ-2974
>                 URL: https://issues.apache.org/jira/browse/AMQ-2974
>             Project: ActiveMQ
>          Issue Type: Bug
>          Components: Connector
>    Affects Versions: 5.4.0, 5.4.1
>            Reporter: Tom
>             Fix For: 5.6.0
>
>         Attachments: MQAlreadyConnectedTest.cs
>
>
> We are using the NMS stomp-client to communicate with ActiveMQ. Our Stomp-Clients are mobile devices connected via GSM and loose the connection from time to time. Therefore we are using durable subscriptions and the clients use a fixed but unique Client-ID. When they loose the connection they can't reconnect because the server doesn't release the (failed) connection.
> The server log looks like this:
> INFO  | Transport failed: java.io.IOException: Broker: localhost - Client: client1 already connected from /xxx.xxx.xxx.xxx:yyyyy | org.apache.activemq.broker.TransportConnection.Transport | ActiveMQ Transport: tcp:///xxx.xxx.xxx.xxx:yyyyy
> java.io.IOException: Broker: localhost - Client: client1 already connected from /xxx.xxx.xxx.xxx:zzzzz
>         at org.apache.activemq.util.IOExceptionSupport.create(IOExceptionSupport.java:39)
>         at org.apache.activemq.transport.stomp.ProtocolConverter$2.onResponse(ProtocolConverter.java:510)
>         at org.apache.activemq.transport.stomp.ProtocolConverter.onActiveMQCommand(ProtocolConverter.java:579)
>         at org.apache.activemq.transport.stomp.StompTransportFilter.oneway(StompTransportFilter.java:58)
>         at org.apache.activemq.transport.MutexTransport.oneway(MutexTransport.java:40)
>         at org.apache.activemq.broker.TransportConnection.dispatch(TransportConnection.java:1247)
>         at org.apache.activemq.broker.TransportConnection.processDispatch(TransportConnection.java:808)
>         at org.apache.activemq.broker.TransportConnection.dispatchSync(TransportConnection.java:768)
>         at org.apache.activemq.broker.TransportConnection$1.onCommand(TransportConnection.java:187)
>         at org.apache.activemq.transport.TransportFilter.onCommand(TransportFilter.java:69)
>         at org.apache.activemq.transport.stomp.StompTransportFilter.sendToActiveMQ(StompTransportFilter.java:81)
>         at org.apache.activemq.transport.stomp.ProtocolConverter.sendToActiveMQ(ProtocolConverter.java:140)
>         at org.apache.activemq.transport.stomp.ProtocolConverter.onStompConnect(ProtocolConverter.java:503)
>         at org.apache.activemq.transport.stomp.ProtocolConverter.onStompCommand(ProtocolConverter.java:192)
>         at org.apache.activemq.transport.stomp.StompTransportFilter.onCommand(StompTransportFilter.java:70)
>         at org.apache.activemq.transport.TransportSupport.doConsume(TransportSupport.java:83)
>         at org.apache.activemq.transport.tcp.TcpTransport.doRun(TcpTransport.java:219)
>         at org.apache.activemq.transport.tcp.TcpTransport.run(TcpTransport.java:201)
>         at java.lang.Thread.run(Thread.java:636)
> Caused by: javax.jms.InvalidClientIDException: Broker: localhost - Client: client1 already connected from /xxx.xxx.xxx.xxx:yyyyy
>         at org.apache.activemq.broker.region.RegionBroker.addConnection(RegionBroker.java:242)
>         at org.apache.activemq.broker.BrokerFilter.addConnection(BrokerFilter.java:85)
>         at org.apache.activemq.broker.BrokerFilter.addConnection(BrokerFilter.java:85)
>         at org.apache.activemq.advisory.AdvisoryBroker.addConnection(AdvisoryBroker.java:78)
>         at org.apache.activemq.broker.BrokerFilter.addConnection(BrokerFilter.java:85)
>         at org.apache.activemq.broker.BrokerFilter.addConnection(BrokerFilter.java:85)
>         at org.apache.activemq.broker.MutableBrokerFilter.addConnection(MutableBrokerFilter.java:91)
>         at org.apache.activemq.broker.TransportConnection.processAddConnection(TransportConnection.java:694)
>         at org.apache.activemq.broker.jmx.ManagedTransportConnection.processAddConnection(ManagedTransportConnection.java:83)
>         at org.apache.activemq.command.ConnectionInfo.visit(ConnectionInfo.java:137)
>         at org.apache.activemq.broker.TransportConnection.service(TransportConnection.java:309)
>         at org.apache.activemq.broker.TransportConnection$1.onCommand(TransportConnection.java:185)
>         ... 10 more
> At the same time the NMS-Client logs the following:
> StompWireFormat - Received ERROR command: Broker: localhost - Client: client1 already connected from /xxx.xxx.xxx.xxx:yyyyy
> The connection is not being released even after more than 10 minutes. I have to restart the ActiveMQ server to be able to reconnect earlier.
> For me it looks quite similar to the following Issue: https://issues.apache.org/activemq/browse/AMQ-2831

--
This message is automatically generated by JIRA.
For more information on JIRA, see: http://www.atlassian.com/software/jira