ActiveMQ
  1. ActiveMQ
  2. AMQ-3446

Network of brokers does not pass messages when networkTTL is bigger then 1

    Details

      Description

      (Unit test is attached to prove the case)

      Given 3 brokers A, B and C.
      Each broker is connected to the others by a network bridge (so we have 3 brokers that are connected to each other)
      The networkTTL is 2 on all network connectors.

      Start broker A and B
      Subscribe consumer on A
      Start Broker C
      Stop Broker B
      Publish message to C

      Expected result:
      The consumer that is subscribed on A receives the message
      Actual result:
      Sometimes it works and sometimes the consumer does not receive the message.

      Additional info:
      From my understanding the problem appears since a broker subscribes as a consumer to other brokers only when there is a consumer that subscribed to this broker, but it does not try to renew subscription to other brokers when some (another) broker in its network fails (or stopped).

      So we see the following situation:
      Client subscribed on topic X on A, A subscribed on topic X on B, B subscribed on topic X on C
      When we stop B, A does not subscribe on topic X on C and the message of topic X cannot pass from C to A.

      This BUG does not occur when networkTTL is 1 because subscription route in a network will be not be greater then 2

      1. activemqTest.zip
        54 kB
        VIctor Perepelitsky

        Activity

        VIctor Perepelitsky created issue -
        VIctor Perepelitsky made changes -
        Field Original Value New Value
        Attachment activemqTest.zip [ 12490100 ]
        VIctor Perepelitsky made changes -
        Description Given 3 brokers A, B and C.
        Each broker is connected to the others by a network bridge (so we have 3 brokers that are connected to each other)
        The networkTTL is 2 on all network connectors.

        Start broker A and B
        Subscribe consumer on A
        Start Broker C
        Stop Broker B
        Publish message to C

        Expected result:
        The consumer that is subscribed on A receives the message
        Actual result:
        Sometimes it works and sometimes the consumer does not receive the message.


        Additional info:
        From my understanding the problem appears since a broker subscribes as a consumer to other brokers only when there is a consumer that subscribed to this broker, but it does not try to renew subscription to other brokers when some (another) broker in its network fails (or stopped).

        So we see the following situation:
        Client subscribed on topic X on A, A subscribed on topic X on B, B subscribed on topic X on C
        When we stop B, A does not subscribe on topic X on C and the message of topic X cannot pass from C to A.

        This BUG does not occur when networkTTL is 1 because subscription route in a network will be not be greater then 2



        (Unit test is attached to prove the case)

        Given 3 brokers A, B and C.
        Each broker is connected to the others by a network bridge (so we have 3 brokers that are connected to each other)
        The networkTTL is 2 on all network connectors.

        Start broker A and B
        Subscribe consumer on A
        Start Broker C
        Stop Broker B
        Publish message to C

        Expected result:
        The consumer that is subscribed on A receives the message
        Actual result:
        Sometimes it works and sometimes the consumer does not receive the message.


        Additional info:
        From my understanding the problem appears since a broker subscribes as a consumer to other brokers only when there is a consumer that subscribed to this broker, but it does not try to renew subscription to other brokers when some (another) broker in its network fails (or stopped).

        So we see the following situation:
        Client subscribed on topic X on A, A subscribed on topic X on B, B subscribed on topic X on C
        When we stop B, A does not subscribe on topic X on C and the message of topic X cannot pass from C to A.

        This BUG does not occur when networkTTL is 1 because subscription route in a network will be not be greater then 2



        VIctor Perepelitsky made changes -
        Labels broker network networkBridge networkConnector ttl

          People

          • Assignee:
            Unassigned
            Reporter:
            VIctor Perepelitsky
          • Votes:
            0 Vote for this issue
            Watchers:
            2 Start watching this issue

            Dates

            • Created:
              Updated:

              Development