wouldn't you want to do it the other way round - destroy the current connection and use the new one ?
On 21 Jul 2010, at 17:27, Eric-AWL wrote: > > > in TransportConnection class. > > This TransportConnection is associated to a TransportConnector > > public Response processBrokerInfo(BrokerInfo info) { > .... > } else if (info.isNetworkConnection() && info.isDuplexConnection()) { > try { > Properties properties = > MarshallingSupport.stringToProperties(info.getNetworkProperties()); > Map<String, String> props = createMap(properties); > > > duplexBridge = NetworkBridgeFactory.createBridge(config, > localTransport, remoteBridgeTransport); > duplexBridge.setBrokerService(broker.getBrokerService()); > // now turn duplex off this side > info.setDuplexConnection(false); > duplexBridge.setCreatedByDuplex(true); > duplexBridge.duplexStart(this, brokerInfo, info); > LOG.info("Created Duplex Bridge back to " + > info.getBrokerName()); > ... > > I could use the current list of TransportConnection managed by the "parent" > TransportConnector (which can be retreived in the TransportConnection > class), to verify that a connection with the same brokerInfo.getBrokerId() > is not already launched and throw an exception (and try to send it back) if > the connection is always active ? Is it Ok ? > > On the Transport Side, the new bridge won't be created while the > InactivityMonitor doesn't destroy the old bridge. > > > Eric-AWL > > > Eric-AWL wrote: >> >> Ok, I will try to add some code lines to avoid this case.... Not easy at >> first view. >> >> Eric-AWL >> >> >> rajdavies wrote: >>> >>> Hi Eric, >>> >>> yes I think this is the case - I think we need to ensure that the old >>> connection is destroyed when the new one joins >>> >>> cheers, >>> >>> Rob >>> >>> >>> Rob Davies >>> follow me: http://twitter.com/rajdavies >>> I work here: http://fusesource.com >>> My Blog: http://rajdavies.blogspot.com/ >>> I wrote this: http://www.manning.com/snyder/ >>> >>> >>> >>> >>> On 21 Jul 2010, at 10:09, Eric-AWL wrote: >>> >>>> >>>> I was wrong. >>>> >>>> here : >>>> >>>> STOP : Network Fault : Network Off >>>> >>>> Link 1 : ADMIN Link port 61601 : (DUPLEX back) Link from SIBBusModule >>>> TestDeCharge(Client) to SIBBusSupervisor port 61601, broken >>>> 2010-07-19 14:00:23,733 [isor-td0sib01s]] INFO DemandForwardingBridge >>>> >>>> - SIBBusSupervisor-td0sib01s bridge to >>>> SIBBusModule-TestDeCharge-td0sib01v >>>> stopped >>>> >>>> So the bridge was only destroyed by the InactivityMonitor thread. >>>> >>>> This trace was associated to another not Duplex bridge with the same >>>> brokers, and not the duplex one. >>>> >>>> >>>> But I have two questions : >>>> >>>> I understand that when a network fault is detected on the "network >>>> connector" side of a duplex connection, the bridge is stopped on this >>>> side, >>>> but the other bridge side (transport side) is detected only by the >>>> InactivityMonitor. Is this true ? >>>> >>>> In this case, if a new DemandForwardingBridge is created between the 2 >>>> brokers, then the "transport side" sees temporarily (while >>>> InactivityMonitor >>>> doesn't destroy the first bridge) 2 brokers instead of one, and can send >>>> back some messages by using the faulty connection. Is this true ? >>>> >>>> Thank you in advance >>>> >>>> Eric-AWL >>>> >>>> >>>> >>>> Eric-AWL wrote: >>>>> >>>>> SIBBusModule-TestDeCharge-td0sib01v Log >>>>> Link 1 : ADMIN Link port 61601 : Try to connect (DUPLEX initiator) from >>>>> SIBBusModule TestDeCharge (Client) to SIBBusSupervisor port 61601 >>>>> 2010-07-19 09:57:18,896 [arge-td0sib01v]] INFO >>>>> DiscoveryNetworkConnector >>>>> - Establishing network connection from >>>>> vm://SIBBusModule-TestDeCharge-td0sib01v to >>>>> tcp://td0sib01s.priv.atos.fr:61601?useLocalHost=false >>>>> >>>>> Link 1 : ADMIN Link port 61601 : Connect (DUPLEX initiator) from >>>>> SIBBusModule TestDeCharge (Client) to SIBBusSupervisor port 61601 >>>>> 2010-07-19 09:57:19,068 [rge-td0sib01v#4] INFO DemandForwardingBridge >>>>> >>>>> - Network connection between vm://SIBBusModule-TestDeCharge-td0sib01v#4 >>>>> and >>>>> tcp://td0sib01s.priv.atos.fr/10.21.195.130:61601(SIBBusSupervisor-td0sib01s) >>>>> has been established. >>>>> >>>>> >>>>> STOP : Network Fault : Network Off >>>>> >>>>> Link 1 : ADMIN Link port 61601 : (DUPLEX initiator) Link from >>>>> SIBBusModule >>>>> TestDeCharge(Client) to SIBBusSupervisor port 61601, broken >>>>> 2010-07-19 14:00:23,258 [arge-td0sib01v]] INFO DemandForwardingBridge >>>>> >>>>> - SIBBusModule-TestDeCharge-td0sib01v bridge to >>>>> SIBBusSupervisor-td0sib01s >>>>> stopped >>>>> >>>>> Reconnect Processus : Network On >>>>> >>>>> Link 1 new : ADMIN Link port 61601 : Try to connect (DUPLEX initiator) >>>>> SIBBusModule TestDeCharge(Client) to SIBBusSupervisor port 61601 >>>>> 2010-07-19 14:00:55,737 [arge-td0sib01v]] INFO >>>>> DiscoveryNetworkConnector >>>>> - Establishing network connection from >>>>> vm://SIBBusModule-TestDeCharge-td0sib01v to >>>>> tcp://td0sib01s.priv.atos.fr:61601?useLocalHost=false >>>>> >>>>> Link 1 new : ADMIN Link port 61601 : Connect (DUPLEX >>>>> initiator)SIBBusModule TestDeCharge(Client) to SIBBusSupervisor port >>>>> 61601 >>>>> 2010-07-19 14:00:55,857 [ge-td0sib01v#11] INFO DemandForwardingBridge >>>>> >>>>> - Network connection between >>>>> vm://SIBBusModule-TestDeCharge-td0sib01v#11 >>>>> and >>>>> tcp://td0sib01s.priv.atos.fr/10.21.195.130:61601(SIBBusSupervisor-td0sib01s) >>>>> has been established. >>>>> >>>>> >>>>> Link 1 doesn’t seem to work. >>>>> >>>>> SIBBusSupervisor log >>>>> >>>>> Link 1 : ADMIN Link port 61601 : Connect (DUPLEX back) from >>>>> SIBBusModule >>>>> TestDeCharge (Client) port 36485 to SIBBusSupervisor port 61601 >>>>> 2010-07-19 09:57:19,097 [0.29.12.1:36485] INFO TransportConnection >>>>> >>>>> - Created Duplex Bridge back to SIBBusModule-TestDeCharge-td0sib01v >>>>> 2010-07-19 09:57:19,097 [or-td0sib01s#12] INFO DemandForwardingBridge >>>>> >>>>> - Network connection between vm://SIBBusSupervisor-td0sib01s#12 and >>>>> tcp:///10.29.12.1:36485(SIBBusModule-TestDeCharge-td0sib01v) has been >>>>> established. >>>>> >>>>> STOP : Network Fault : Network Off >>>>> >>>>> Link 1 : ADMIN Link port 61601 : (DUPLEX back) Link from SIBBusModule >>>>> TestDeCharge(Client) to SIBBusSupervisor port 61601, broken >>>>> 2010-07-19 14:00:23,733 [isor-td0sib01s]] INFO DemandForwardingBridge >>>>> >>>>> - SIBBusSupervisor-td0sib01s bridge to >>>>> SIBBusModule-TestDeCharge-td0sib01v >>>>> stopped >>>>> >>>>> >>>>> Reconnect Processus : Network On >>>>> >>>>> Link 1 new : ADMIN Link port 61601 : Connect (DUPLEX back) from >>>>> SIBBusModule TestDeCharge (Client) port 33840 to SIBBusSupervisor port >>>>> 61601 >>>>> 2010-07-19 14:00:55,920 [0.29.12.1:33840] INFO TransportConnection >>>>> >>>>> - Created Duplex Bridge back to SIBBusModule-TestDeCharge-td0sib01v >>>>> 2010-07-19 14:00:55,921 [or-td0sib01s#22] INFO DemandForwardingBridge >>>>> >>>>> - Network connection between vm://SIBBusSupervisor-td0sib01s#22 and >>>>> tcp:///10.29.12.1:33840(SIBBusModule-TestDeCharge-td0sib01v) has been >>>>> established. >>>>> >>>>> STOP Old DUPLEX back Connection >>>>> >>>>> Link 1 old : ADMIN Link port 61601 : (DUPLEX back) Link SIBBusModule >>>>> TestDeCharge (Client) port 36485 to SIBBusSupervisor port 61601 is >>>>> broken >>>>> 2010-07-19 14:00:58,939 [wor...@1ecc696e] WARN DemandForwardingBridge >>>>> >>>>> - Network connection between vm://SIBBusSupervisor-td0sib01s#12 and >>>>> tcp:///10.29.12.1:36485 shutdown due to a remote error: >>>>> org.apache.activemq.transport.InactivityIOException: Channel was >>>>> inactive >>>>> for too long: /10.29.12.1:36485 >>>>> 2010-07-19 14:00:58,945 [0.29.12.1:36485] INFO DemandForwardingBridge >>>>> >>>>> - SIBBusSupervisor-td0sib01s bridge to >>>>> SIBBusModule-TestDeCharge-td0sib01v >>>>> stopped >>>>> >>>>> >>>>> It seems that bridge on Link 1 is finally broken ??? >>>>> >>>>> Eric-AWL >>>>> >>>>> >>>>> Eric-AWL wrote: >>>>>> >>>>>> Hi >>>>>> >>>>>> In the case where network is alternatively on/off in a duplex >>>>>> multicast >>>>>> configuration, I first discovered that the "network connector side" >>>>>> broker was sometimes blocked on "RemoteBrokerNameKnownLatch" latch. >>>>>> >>>>>> I think that I resolved this problem by >>>>>> - adding a countdown() call on this latch at the end of the stop() >>>>>> method >>>>>> - correctly managing an exception to alert the discovery connector >>>>>> that >>>>>> the bridge was disposed during the start call. >>>>>> >>>>>> Now, I think that I have a problem on the other side with this >>>>>> configuration. >>>>>> T0 - A duplex connection is >>>>>> correctly >>>>>> established >>>>>> T0+X minutes - the network is down, the duplex >>>>>> bridge >>>>>> back is stopped, but the corresponding transport (back) connection >>>>>> seems >>>>>> not to be closed >>>>>> T0+X minutes + x ms - the networl is up : a new transport >>>>>> connection want to be established and is established >>>>>> T0+X minutes + y seconds - the transport inactivity thread closes >>>>>> the >>>>>> old transport connection >>>>>> >>>>>> (y seconds >> x milliseconds) >>>>>> >>>>>> All seems Ok, but no message are exchanged with this bridge. >>>>>> >>>>>> Eric-AWL >>>>>> >>>>> >>>>> >>>> >>>> -- >>>> View this message in context: >>>> http://old.nabble.com/Duplex-and-network-fault.-tp29205793p29223448.html >>>> Sent from the ActiveMQ - User mailing list archive at Nabble.com. >>>> >>> >>> >>> >> >> > > -- > View this message in context: > http://old.nabble.com/Duplex-and-network-fault.-tp29205793p29228003.html > Sent from the ActiveMQ - User mailing list archive at Nabble.com. >