You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@activemq.apache.org by "Janet Cooper (JIRA)" <ji...@apache.org> on 2006/06/04 16:47:51 UTC

[jira] Commented: (AMQ-734) Network connections do not reconnect when using static: with failover=true

    [ https://issues.apache.org/activemq/browse/AMQ-734?page=comments#action_36230 ] 

Janet Cooper commented on AMQ-734:
----------------------------------

(using active-mq-snapshot-30-may / linux)

Some comments:

Given a network of brokers in a demand forwarding environment: Broker A + Broker B in a _real_ network on different hosts (a lot of bugs are not reproducable in a localhost-environment)

UseCase 1:
Start Broker A
Start Broker B
Do a network-split (aka "unplugging the cable") [There is an exception attached that will be generated in such a case]
Create new message m1 on Broker A (that is stored for later delivery)
Reconnect network
Brokers will reconnect with exception (see below)

It is actually possible to LOSE MESSAGES that way. I found out that under certain circumstances message m1 will not be delivered. Even restarting every broker does not help in such a case. 


EXCEPTION ON UPLUGGING:
INFO Service:185 - Async error occurred: java.lang.IllegalStateException: Cannot lookup a connection that had not been registered: ID:develop-43781-1149388950450-3:0
java.lang.IllegalStateException: Cannot lookup a connection that had not been registered: ID:develop-43781-1149388950450-3:0
	at org.apache.activemq.broker.AbstractConnection.lookupConnectionState(AbstractConnection.java:241)
	at org.apache.activemq.broker.AbstractConnection.processRemoveConnection(AbstractConnection.java:519)
	at org.apache.activemq.command.RemoveInfo.visit(RemoveInfo.java:59)
	at org.apache.activemq.broker.AbstractConnection.service(AbstractConnection.java:201)
	at org.apache.activemq.broker.TransportConnection$1.onCommand(TransportConnection.java:62)
	at org.apache.activemq.transport.ResponseCorrelator.onCommand(ResponseCorrelator.java:97)
	at org.apache.activemq.transport.TransportFilter.onCommand(TransportFilter.java:63)
	at org.apache.activemq.transport.vm.VMTransport.oneway(VMTransport.java:76)
	at org.apache.activemq.transport.MutexTransport.oneway(MutexTransport.java:44)
	at org.apache.activemq.transport.ResponseCorrelator.oneway(ResponseCorrelator.java:60)
	at org.apache.activemq.network.DemandForwardingBridgeSupport$2.transportInterupted(DemandForwardingBridgeSupport.java:138)
	at org.apache.activemq.transport.TransportFilter.transportInterupted(TransportFilter.java:98)
	at org.apache.activemq.transport.TransportFilter.transportInterupted(TransportFilter.java:98)
	at org.apache.activemq.transport.failover.FailoverTransport.handleTransportFailure(FailoverTransport.java:223)
	at org.apache.activemq.transport.failover.FailoverTransport.access$300(FailoverTransport.java:53)
	at org.apache.activemq.transport.failover.FailoverTransport$1.onException(FailoverTransport.java:111)
	at org.apache.activemq.transport.TransportFilter.onException(TransportFilter.java:94)
	at org.apache.activemq.transport.WireFormatNegotiator.onException(WireFormatNegotiator.java:120)
	at org.apache.activemq.transport.InactivityMonitor.onException(InactivityMonitor.java:149)
	at org.apache.activemq.transport.TransportSupport.onException(TransportSupport.java:100)
	at org.apache.activemq.transport.tcp.TcpTransport.run(TcpTransport.java:156)
	at java.lang.Thread.run(Thread.java:595)

EXCEPTION ON RECONNECTING:
INFO Service:185 - Async error occurred: javax.jms.InvalidClientIDException: Broker: develop - Client: NC_testbroker_inbounddevelop already connected
javax.jms.InvalidClientIDException: Broker: develop - Client: NC_testbroker_inbounddevelop already connected
	at org.apache.activemq.broker.region.RegionBroker.addConnection(RegionBroker.java:176)
	at org.apache.activemq.broker.BrokerFilter.addConnection(BrokerFilter.java:69)
	at org.apache.activemq.advisory.AdvisoryBroker.addConnection(AdvisoryBroker.java:69)
	at org.apache.activemq.broker.BrokerFilter.addConnection(BrokerFilter.java:69)
	at org.apache.activemq.broker.MutableBrokerFilter.addConnection(MutableBrokerFilter.java:82)
	at org.apache.activemq.broker.AbstractConnection.processAddConnection(AbstractConnection.java:507)
	at org.apache.activemq.command.ConnectionInfo.visit(ConnectionInfo.java:118)
	at org.apache.activemq.broker.AbstractConnection.service(AbstractConnection.java:201)
	at org.apache.activemq.broker.TransportConnection$1.onCommand(TransportConnection.java:62)
	at org.apache.activemq.transport.ResponseCorrelator.onCommand(ResponseCorrelator.java:97)
	at org.apache.activemq.transport.TransportFilter.onCommand(TransportFilter.java:63)
	at org.apache.activemq.transport.vm.VMTransport.oneway(VMTransport.java:76)
	at org.apache.activemq.transport.MutexTransport.oneway(MutexTransport.java:44)
	at org.apache.activemq.transport.ResponseCorrelator.oneway(ResponseCorrelator.java:60)
	at org.apache.activemq.network.DemandForwardingBridgeSupport.startLocalBridge(DemandForwardingBridgeSupport.java:215)
	at org.apache.activemq.network.DemandForwardingBridgeSupport$3.run(DemandForwardingBridgeSupport.java:184)


Question: Why is necessary that the localClientId is created in a fixed way?

  From DemandForwardingBridgeSupport.java:
    localClientId="NC_"+remoteBrokerName+"_inbound"+name;

How about changing that to e.g.
    localClientId="NC_"+remoteBrokerName+"_inbound"+name + "_" + System.currentTimemillis();

If a broker crashes and is restarted it would have a new ClientId -> no exceptions on reconnect.

> Network connections do not reconnect when using static: with failover=true
> --------------------------------------------------------------------------
>
>          Key: AMQ-734
>          URL: https://issues.apache.org/activemq/browse/AMQ-734
>      Project: ActiveMQ
>         Type: Bug

>   Components: Connector
>     Versions: 4.0
>  Environment: winxp java1.5.6
>     Reporter: tao
>     Priority: Critical
>      Fix For: 4.0.1

>
>
> If I pull out RJ45 port from net card ,waiting a time ,then put  RJ45 port net card .Network is resume.Other computer always throw errors and net channel can't work.

-- 
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators:
   https://issues.apache.org/activemq/secure/Administrators.jspa
-
For more information on JIRA, see:
   http://www.atlassian.com/software/jira