[jira] [Updated] (AMQ-5531) Duplex NetworkConnector Reconnect
[ https://issues.apache.org/jira/browse/AMQ-5531?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ] Grzegorz Kluczek updated AMQ-5531: -- Description: Hello, It seems that duplex network connector does not get reconnected properly after network failure and causes messages to be lost. Issue is similar to [https://issues.jboss.org/browse/MB-385] and [https://issues.apache.org/jira/browse/AMQ-1973]. Below is my description how to reproduce the issue - I could probably create JUnit test, but I'm unsure how to do this. h3. Setup Lets assume that we have two hosts: hostA (192.168.0.1) and hostB (192.168.0.2). h4. hostA Run brokerA with default configuration, which comes from installation package. h4. hostB Run brokerB either embedded or standalone - I'm using embedded with following code: {code:title=EmbeddedBroker.java} BrokerService broker = new BrokerService(); NetworkConnector connector = broker.addNetworkConnector(static:(failover:tcp://192.168.0.1:61616?wireFormat.maxInactivityDuration=1800)); connector.setDuplex(true); connector.setConduitSubscriptions(false); {code} h4. Startup In brokerA log you should see following: {{INFO | Connector vm://brokerA started INFO | Started responder end of duplex bridge NC@ID:hostA-34744-1421847312144-0:1 INFO | Network connection between vm://brokerA#0 and tcp:///192.168.0.2:65463@61616 (brokerB) has been established.}} In brokerB log you should see following {{2015-01-21 14:35:12,824 INFO [triggerStartAsyncNetworkBridgeCreation: remoteBroker=unconnected, localBroker= vm://brokerB#0] org.apache.activemq.network.DemandForwardingBridgeSupport - Network connection between vm://brokerB#0 and tcp://192.168.0.1:61616?wireFormat.maxInactivityDuration=1800 (brokerA) has been established.}} h3. Test On hostB run command to simulate network failure: {{iptables -I OUTPUT -d 192.168.0.1 -p tcp --dport 61616 -j REJECT --reject-with=icmp-host-unreachable}} Wait until you get on brokerB: {{2015-01-21 14:51:52,735 WARN [ActiveMQ InactivityMonitor Worker] org.apache.activemq.transport.failover.FailoverTransport - Transport (tcp://192.168.0.1:61616) failed, reason: org.apache.activemq.transport.InactivityIOException: Channel was inactive for too (3) long: tcp://192.168.0.1:61616, attempting to automatically reconnect}} and on brokerA: {{WARN | Network connection between vm://brokerA#0 and tcp:///192.168.0.2:65463@61616 shutdown due to a remote error: org. pache.activemq.transport.InactivityIOException: Channel was inactive for too (3) long: tcp://192.168.0.2:65463 INFO | Connector vm://brokerA stopped INFO | brokerA bridge to brokerB stopped}} On hostB simulate network back to normal: {{iptables -D OUTPUT -d 192.168.0.1 -p tcp --dport 61616 -j REJECT --reject-with=icmp-host-unreachable}} h3. Outcome and summary In brokerB log you should see following: {{2015-01-21 14:52:03,588 INFO [ActiveMQ Task-3] org.apache.activemq.transport.failover.FailoverTransport - Successfully reconnected to tcp://192.168.0.1:61616?wireFormat.maxInactivityDuration=1800}} On brokerA there is no sign of restarting responder end of duplex bridge. Consumers connected to brokerA can't receive messages sent to brokerB. was: Hello, It seems that duplex network connector does not get reconnected properly after network failure and causes messages to be lost. Issue is similar to [https://issues.jboss.org/browse/MB-385] and [https://issues.apache.org/jira/browse/AMQ-1973]. Below is my description how to reproduce the issue - I could probably create JUnit test, but I'm unsure how to do this. h3. Setup Lets assume that we have two hosts: hostA (192.168.0.1) and hostB (192.168.0.2). h4. hostA Run brokerA with default configuration, which comes from installation package. h4. hostB Run brokerB either embedded or standalone - I'm using embedded with following code: {code:title=EmbeddedBroker.java} BrokerService broker = new BrokerService(); NetworkConnector connector = broker.addNetworkConnector(static:(failover:tcp://192.168.0.1:61616?wireFormat.maxInactivityDuration=1800)); connector.setDuplex(true); connector.setConduitSubscriptions(false); {code} h4. Startup In brokerA log you should see following: {{monospaced}} INFO | Connector vm://brokerA started INFO | Started responder end of duplex bridge NC@ID:hostA-34744-1421847312144-0:1 INFO | Network connection between vm://brokerA#0 and tcp:///192.168.0.2:65463@61616 (brokerB) has been established. {{monospaced}} In brokerB log you should see following {{monospaced}} 2015-01-21 14:35:12,824 INFO [triggerStartAsyncNetworkBridgeCreation: remoteBroker=unconnected, localBroker= vm://brokerB#0] org.apache.activemq.network.DemandForwardingBridgeSupport - Network connection between vm://brokerB#0 and tcp://192.168.0.1:61616?wireFormat.maxInactivityDuration=1800 (brokerA) has been established. {{monospaced}} h3. Test On hostB
[jira] [Updated] (AMQ-5531) Duplex NetworkConnector Reconnect
[ https://issues.apache.org/jira/browse/AMQ-5531?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ] Grzegorz Kluczek updated AMQ-5531: -- Description: Hello, It seems that duplex network connector does not get reconnected properly after network failure and causes messages to be lost. Issue is similar to [https://issues.jboss.org/browse/MB-385] and [https://issues.apache.org/jira/browse/AMQ-1973]. Below is my description how to reproduce the issue - I could probably create JUnit test, but I'm unsure how to do this. h3. Setup Lets assume that we have two hosts: hostA (192.168.0.1) and hostB (192.168.0.2). h4. hostA Run brokerA with default configuration, which comes from installation package. h4. hostB Run brokerB either embedded or standalone - I'm using embedded with following code: {code:title=EmbeddedBroker.java} BrokerService broker = new BrokerService(); NetworkConnector connector = broker.addNetworkConnector(static:(failover:tcp://192.168.0.1:61616?wireFormat.maxInactivityDuration=1800)); connector.setDuplex(true); connector.setConduitSubscriptions(false); {code} h4. Startup In brokerA log you should see following: {quote} INFO | Connector vm://brokerA started INFO | Started responder end of duplex bridge NC@ID:hostA-34744-1421847312144-0:1 INFO | Network connection between vm://brokerA#0 and tcp:///192.168.0.2:65463@61616 (brokerB) has been established. {quote} In brokerB log you should see following {quote} 2015-01-21 14:35:12,824 INFO [triggerStartAsyncNetworkBridgeCreation: remoteBroker=unconnected, localBroker= vm://brokerB#0] org.apache.activemq.network.DemandForwardingBridgeSupport - Network connection between vm://brokerB#0 and tcp://192.168.0.1:61616?wireFormat.maxInactivityDuration=1800 (brokerA) has been established. {quote} h3. Test On hostB run command to simulate network failure: {{iptables -I OUTPUT -d 192.168.0.1 -p tcp --dport 61616 -j REJECT --reject-with=icmp-host-unreachable}} Wait until you get on brokerB: {quote} 2015-01-21 14:51:52,735 WARN [ActiveMQ InactivityMonitor Worker] org.apache.activemq.transport.failover.FailoverTransport - Transport (tcp://192.168.0.1:61616) failed, reason: org.apache.activemq.transport.InactivityIOException: Channel was inactive for too (3) long: tcp://192.168.0.1:61616, attempting to automatically reconnect {quote} and on brokerA: {quote} WARN | Network connection between vm://brokerA#0 and tcp:///192.168.0.2:65463@61616 shutdown due to a remote error: org. pache.activemq.transport.InactivityIOException: Channel was inactive for too (3) long: tcp://192.168.0.2:65463 INFO | Connector vm://brokerA stopped INFO | brokerA bridge to brokerB stopped {quote} On hostB simulate network back to normal: {{iptables -D OUTPUT -d 192.168.0.1 -p tcp --dport 61616 -j REJECT --reject-with=icmp-host-unreachable}} h3. Outcome and summary In brokerB log you should see following: {quote} 2015-01-21 14:52:03,588 INFO [ActiveMQ Task-3] org.apache.activemq.transport.failover.FailoverTransport - Successfully reconnected to tcp://192.168.0.1:61616?wireFormat.maxInactivityDuration=1800 {quote} On brokerA there is no sign of restarting responder end of duplex bridge. Consumers connected to brokerA can't receive messages sent to brokerB. was: Hello, It seems that duplex network connector does not get reconnected properly after network failure and causes messages to be lost. Issue is similar to [https://issues.jboss.org/browse/MB-385] and [https://issues.apache.org/jira/browse/AMQ-1973]. Below is my description how to reproduce the issue - I could probably create JUnit test, but I'm unsure how to do this. h3. Setup Lets assume that we have two hosts: hostA (192.168.0.1) and hostB (192.168.0.2). h4. hostA Run brokerA with default configuration, which comes from installation package. h4. hostB Run brokerB either embedded or standalone - I'm using embedded with following code: {code:title=EmbeddedBroker.java} BrokerService broker = new BrokerService(); NetworkConnector connector = broker.addNetworkConnector(static:(failover:tcp://192.168.0.1:61616?wireFormat.maxInactivityDuration=1800)); connector.setDuplex(true); connector.setConduitSubscriptions(false); {code} h4. Startup In brokerA log you should see following: {{INFO | Connector vm://brokerA started INFO | Started responder end of duplex bridge NC@ID:hostA-34744-1421847312144-0:1 INFO | Network connection between vm://brokerA#0 and tcp:///192.168.0.2:65463@61616 (brokerB) has been established.}} In brokerB log you should see following {{2015-01-21 14:35:12,824 INFO [triggerStartAsyncNetworkBridgeCreation: remoteBroker=unconnected, localBroker= vm://brokerB#0] org.apache.activemq.network.DemandForwardingBridgeSupport - Network connection between vm://brokerB#0 and tcp://192.168.0.1:61616?wireFormat.maxInactivityDuration=1800 (brokerA) has been established.}} h3. Test On