Uploaded image for project: 'AMQ Interconnect'
  1. AMQ Interconnect
  2. ENTMQIC-1900

Topology change temporarily influences the ability to reach intended addressee

XMLWordPrintable

    • Icon: Bug Bug
    • Resolution: Done
    • Icon: Major Major
    • None
    • 1.0.0.Beta2
    • Qpid Dispatch Router
    • None
    • Documentation (Ref Guide, User Guide, etc.)
    • Hide
      In certain scenarios, when you modify the topology of your network of interconnect routers, sending and receiving messages is temporarily suspended. This issue has been observed in testing when using a "diamond scheme" configuration, similar to the following:
      {noformat}
         X
      A B
         C
      {noformat}
      In this example, *X* is a broker, *A* and *B* are routers on the same layer, and *C* is facade for incoming and outgoing communication using clients.

      *A* is configured so that all data passes through router *B*. When *B* is shut down, all messages should be routed through *A*. But instead, all clients (senders) are blocked until records about *B* are cleared from the table.
      Show
      In certain scenarios, when you modify the topology of your network of interconnect routers, sending and receiving messages is temporarily suspended. This issue has been observed in testing when using a "diamond scheme" configuration, similar to the following: {noformat}    X A B    C {noformat} In this example, *X* is a broker, *A* and *B* are routers on the same layer, and *C* is facade for incoming and outgoing communication using clients. *A* is configured so that all data passes through router *B*. When *B* is shut down, all messages should be routed through *A*. But instead, all clients (senders) are blocked until records about *B* are cleared from the table.
    • Hide

      1.Have 4 machines. 1 Broker and 3 routers.
      2. apply a.conf, b.conf, c.conf or similar configuration related to these routers
      3. send a message to router C.
      4. kill router B
      5. send message to C again
      6. sender should hang

      Show
      1.Have 4 machines. 1 Broker and 3 routers. 2. apply a.conf, b.conf, c.conf or similar configuration related to these routers 3. send a message to router C. 4. kill router B 5. send message to C again 6. sender should hang

      Problems occurs using diamond scheme

         X
      A    B
         C
      

      where X is broker, A & B are routers on the same layer and C is facade for ingress & egress communication using clients.

      A is configured with the cost:2 to ensure that all data will go through router B.
      After some messages B is killed and all messages should go via A. Here problems occurs. All clients(senders) are are blocked(state=@released(38)) till a record about "router B" go away from the table which is showed using command

      qdstat -nv
      

      .
      After that all messages are router correctly again via router A.

      *After the B shutdown - sender waits here*
      Routers in the Network
        router-id  next-hop  link  cost  neighbors     valid-origins
        ==============================================================
        Router.A   -         1     1     ['Router.C']  []
        Router.B   -               1     ['Router.C']  ['Router.A']
        Router.C   (self)    -           ['Router.A']  []
      
      
      *router is UP again, again, all works ok.*
        router-id  next-hop  link  cost  neighbors                 valid-origins
        ==========================================================================
        Router.A   -         1     1     ['Router.C']              ['Router.B']
        Router.B   -         0     1     ['Router.C']              ['Router.A']
        Router.C   (self)    -           ['Router.A', 'Router.B']  []
      

      using export PN_TRACE_FRM=1
      Here it hangs

      [root@dhcp-37-176-6 python]# ./aac5_sender.py -b 10.34.37.159/jms.queue.test.address
      [0x1dcac50]:  -> SASL
      [0x1dcac50]:  <- SASL
      [0x1dcac50]:0 <- @sasl-mechanisms(64) [sasl-server-mechanisms=@PN_SYMBOL[:ANONYMOUS, :"DIGEST-MD5", :PLAIN]]
      [0x1dcac50]:0 -> @sasl-init(65) [mechanism=:ANONYMOUS, initial-response=b"anonymous@dhcp-37-176-6.7x.lab.eng.brq.redhat.com"]
      [0x1dcac50]:0 <- @sasl-outcome(68) [code=0]
      [0x1dcac50]:  -> AMQP
      [0x1dcac50]:0 -> @open(16) [container-id="04eae1ad-8d1c-42ba-b283-a13439f110bb", hostname="10.34.37.159", channel-max=32767]
      [0x1dcac50]:0 -> @begin(17) [next-outgoing-id=0, incoming-window=2147483647, outgoing-window=2147483647]
      [0x1dcac50]:0 -> @attach(18) [name="04eae1ad-8d1c-42ba-b283-a13439f110bb-jms.queue.test.address", handle=0, role=false, snd-settle-mode=2, rcv-settle-mode=0, source=@source(40) [durable=0, timeout=0, dynamic=false], target=@target(41) [address="jms.queue.test.address", durable=0, timeout=0, dynamic=false], initial-delivery-count=0]
      [0x1dcac50]:  <- AMQP
      [0x1dcac50]:0 <- @open(16) [container-id="Router.C", max-frame-size=16384, channel-max=32767, idle-time-out=8000, offered-capabilities=:"ANONYMOUS-RELAY", properties={:product="qpid-dispatch-router", :version="0.7.0"}]
      [0x1dcac50]:0 <- @begin(17) [remote-channel=0, next-outgoing-id=0, incoming-window=61, outgoing-window=2147483647]
      [0x1dcac50]:0 <- @attach(18) [name="04eae1ad-8d1c-42ba-b283-a13439f110bb-jms.queue.test.address", handle=0, role=true, snd-settle-mode=2, rcv-settle-mode=0, source=@source(40) [durable=0, timeout=0, dynamic=false], target=@target(41) [address="jms.queue.test.address", durable=0, timeout=0, dynamic=false], initial-delivery-count=0]
      [0x1dcac50]:0 <- @flow(19) [next-incoming-id=0, incoming-window=61, next-outgoing-id=0, outgoing-window=2147483647, handle=0, delivery-count=0, link-credit=250, drain=false]
      [0x1dcac50]:0 -> @transfer(20) [handle=0, delivery-id=0, delivery-tag=b"1", message-format=0, settled=false, more=false] (93) "\x00Sp\xd0\x00\x00\x00\x0b\x00\x00\x00\x05BP\x04@BR\x00\x00Ss\xd0\x00\x00\x00-\x00\x00\x00\x0d@@@@@@\xa3\x0atext/plain@\x83\x00\x00\x00\x00\x00\x00\x00\x00\x83\x00\x00\x00\x00\x00\x00\x00\x00@R\x00@\x00St\xd1\x00\x00\x00\x04\x00\x00\x00\x00\x00Sw\xa1\x04None"
      [0x1dcac50]:0 <- @flow(19) [next-incoming-id=1, incoming-window=61, next-outgoing-id=0, outgoing-window=2147483647, handle=0, delivery-count=1, link-credit=250, drain=false]
      [0x1dcac50]:0 <- @disposition(21) [role=true, first=0, last=0, settled=true, state=@released(38) []]
      [0x1dcac50]:0 -> (EMPTY FRAME)
      [0x1dcac50]:0 -> (EMPTY FRAME)
      [0x1dcac50]:0 -> (EMPTY FRAME)
      [0x1dcac50]:0 -> (EMPTY FRAME)
      

        1. a.conf
          2 kB
        2. b.conf
          2 kB
        3. c.conf
          2 kB

              tross1@redhat.com Ted Ross
              mlesko1 Matej Lesko (Inactive)
              Votes:
              0 Vote for this issue
              Watchers:
              5 Start watching this issue

                Created:
                Updated:
                Resolved: