Details

    • Type: Bug Bug
    • Status: Resolved
    • Priority: Major Major
    • Resolution: Fixed
    • Affects Version/s: 5.0.0
    • Fix Version/s: 5.3.0
    • Component/s: Transport
    • Labels:
      None
    • Environment:

      apache-activemq-5.0-20071008.215641-19, RHEL 4, JDK 1.6.0_02

      Description

      The bridge between two nodes keeps falling down after a few minutes of use.

      This is maybe a misconfiguration and totally my bad, so here is the network config:

      <transportConnectors>
      <transportConnector uri="vm://$

      {esb.node.name}" />
      <transportConnector uri="tcp://localhost:58080" discoveryUri="rendezvous://dev-esb-node" />
      </transportConnectors>

      <networkConnectors>
      <networkConnector conduitSubscriptions="true" decreaseNetworkConsumerPriority="true" dynamicOnly="true"
      networkTTL="64" uri="rendezvous://dev-esb-node" userName="broker" password="XXX" />
      </networkConnectors>


      ${esb.node.name}

      resolves to "backbone-node-8080" on one box and "collection-node-8080" on the other.

      And here are the errors when the bridge crashes:

      11:04:46,241 DEBUG [org.apache.activemq.network.DemandForwardingBridge] backbone-node-8080 Forwarding sub on vm://backbone-node-8080#4 from collection-node-8080 : ConsumerInfo

      {commandId = 4, responseRequired = true, consumerId = ID:ddo-mbp.local-51198-1191953085196-0:0:1:1, destination = queue://esb.admin.errors, prefetchSize = 500, maximumPendingMessageLimit = 0, browser = true, dispatchAsync = false, selector = null, subscriptionName = null, noLocal = false, exclusive = false, retroactive = false, priority = 0, brokerPath = null, optimizedAcknowledge = false, noRangeAcks = false, additionalPredicate = null}

      11:04:46,250 INFO [org.apache.activemq.network.DemandForwardingBridge] Network connection between vm://backbone-node-8080#4 and tcp://esb-backbone-node2.dev.com/10.20.116.14:58
      080 shutdown due to a local error: java.lang.NullPointerException
      11:04:46,254 DEBUG [org.apache.activemq.network.DemandForwardingBridge] The local Exception was:java.lang.NullPointerException
      java.lang.NullPointerException
      at org.apache.activemq.network.DemandForwardingBridgeSupport.configureMessage(DemandForwardingBridgeSupport.java:539)
      at org.apache.activemq.network.DemandForwardingBridgeSupport.serviceLocalCommand(DemandForwardingBridgeSupport.java:561)
      at org.apache.activemq.network.DemandForwardingBridgeSupport$1.onCommand(DemandForwardingBridgeSupport.java:137)
      at org.apache.activemq.transport.ResponseCorrelator.onCommand(ResponseCorrelator.java:100)
      at org.apache.activemq.transport.TransportFilter.onCommand(TransportFilter.java:67)
      at org.apache.activemq.transport.vm.VMTransport.oneway(VMTransport.java:102)
      at org.apache.activemq.transport.MutexTransport.oneway(MutexTransport.java:40)
      at org.apache.activemq.transport.ResponseCorrelator.oneway(ResponseCorrelator.java:59)
      at org.apache.activemq.broker.TransportConnection.dispatch(TransportConnection.java:1184)
      at org.apache.activemq.broker.TransportConnection.processDispatch(TransportConnection.java:803)
      at org.apache.activemq.broker.TransportConnection.iterate(TransportConnection.java:838)
      at org.apache.activemq.thread.PooledTaskRunner.runTask(PooledTaskRunner.java:118)
      at org.apache.activemq.thread.PooledTaskRunner$1.run(PooledTaskRunner.java:42)
      at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:885)
      at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:907)
      at java.lang.Thread.run(Thread.java:619)
      11:04:46,259 DEBUG [org.apache.activemq.network.DemandForwardingBridge] stopping backbone-node-8080 bridge to collection-node-8080 is disposed already ? false
      11:04:46,261 INFO [org.apache.activemq.network.DemandForwardingBridge] backbone-node-8080 bridge to collection-node-8080 stopped

        Activity

        Hide
        Rob Davies added a comment -

        This should be resolved in 5.3

        Show
        Rob Davies added a comment - This should be resolved in 5.3
        Hide
        Ari Cooperman added a comment -

        This same exact thing happens for me as well. I am also using embedded brokers with VM transport

        Show
        Ari Cooperman added a comment - This same exact thing happens for me as well. I am also using embedded brokers with VM transport
        Hide
        David Dossot added a comment -

        Interestingly AMQ-805 gives the impression the bridge should auto-reconnect...

        Show
        David Dossot added a comment - Interestingly AMQ-805 gives the impression the bridge should auto-reconnect...
        Hide
        David Dossot added a comment -

        I have stopped using VM transport altogether from my embedded client application, but the problem still happens: the bridge keeps falling down.

        I noticed the issue seems to happen if I have a queue browser (from Hermes) on the same distributed queue my application is using.

        I recognize the issue is hard to reproduce on your side, but in the mean time can the bridge be made more resilient to runtime exceptions so it recovers and does not stop?

        Show
        David Dossot added a comment - I have stopped using VM transport altogether from my embedded client application, but the problem still happens: the bridge keeps falling down. I noticed the issue seems to happen if I have a queue browser (from Hermes) on the same distributed queue my application is using. I recognize the issue is hard to reproduce on your side, but in the mean time can the bridge be made more resilient to runtime exceptions so it recovers and does not stop?
        Hide
        David Dossot added a comment -

        The NPE is thrown on this line:

        Message message = md.getMessage().copy();

        By following the code before this line, md can not be null, so this is getMessage() that is null.

        Is this because I am erroneously using the VM transport? The reason I am using this transport is because my brokers are embedded in Java apps that connect to the local broker using the VM adapter.

        Show
        David Dossot added a comment - The NPE is thrown on this line: Message message = md.getMessage().copy(); By following the code before this line, md can not be null, so this is getMessage() that is null. Is this because I am erroneously using the VM transport? The reason I am using this transport is because my brokers are embedded in Java apps that connect to the local broker using the VM adapter.

          People

          • Assignee:
            Rob Davies
            Reporter:
            David Dossot
          • Votes:
            2 Vote for this issue
            Watchers:
            3 Start watching this issue

            Dates

            • Created:
              Updated:
              Resolved:

              Development