[ 
https://issues.apache.org/jira/browse/AMQ-2974?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13065487#comment-13065487
 ] 

Timothy Bish commented on AMQ-2974:
-----------------------------------

The issue reports the error in relation to durable subscribers which requires 
that the client reconnect with same client id and subscribe to the same 
subscription id which is what my comment was referencing.  If you are 
experiencing something like this without durable subscribers then there could 
also be some other issue at play.

You best bet as always to get a quick resolution is to create a unit test that 
can reproduce the problem so we can debug it.  

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

        

Reply via email to