You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@activemq.apache.org by "Tom (JIRA)" <ji...@apache.org> on 2010/10/18 15:59:40 UTC

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

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

Tom updated AMQ-2974:
---------------------

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

  was:
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 several hours. I have to restart the ActiveMQ server to be able to reconnect.

For me it looks quite similar to the following Issue: https://issues.apache.org/activemq/browse/AMQ-2831


> Set ClientID - InvalidClientIDException with stomp
> --------------------------------------------------
>
>                 Key: AMQ-2974
>                 URL: https://issues.apache.org/activemq/browse/AMQ-2974
>             Project: ActiveMQ
>          Issue Type: Bug
>          Components: Connector
>    Affects Versions: 5.4.0, 5.4.1
>            Reporter: Tom
>
> 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.
-
You can reply to this email to add a comment to the issue online.