Uploaded image for project: 'Qpid Dispatch'
  1. Qpid Dispatch
  2. DISPATCH-1488

link-routed transaction coordination broken due to 'declared' state truncation

    XMLWordPrintableJSON

Details

    • Bug
    • Status: Closed
    • Blocker
    • Resolution: Fixed
    • 1.9.0, 1.10.0
    • 1.10.0
    • None
    • None

    Description

      The 1.9.0 release and current master for 1.10.0 both truncate the 'declared' transaction delivery state when routing a transaction coordinator link to a broker peer, omitting the contained txn-id and breaking all ability to link route transactional work through the router.

      Some output while trying this to debug an unrelated issue is detailed below. First, a message transfer arrives at the router with body requesting a transaction declare. The router sends the link-routed transfer onward to the broker:

      [0x2251560]:1 <- @transfer(20) [handle=0, delivery-id=0, delivery-tag=b"\x00", message-format=0, settled=false] (7) "\x00Sw\x00S1E"
      [0x21ddf40]:0 -> @transfer(20) [handle=1, delivery-id=0, delivery-tag=b"\x00", message-format=0] (7) "\x00Sw\x00S1E"
      

      (Not shown, after the above in the case being debugged, there was a non-transactional transfer on a second session across the same client->router connection, then forwarded on the same router->broker connection).

      The broker peer establishes a transaction and responds with disposition to indicate it is declared, and providing the mandatory txn-id. The router relays this disposition, but critically drops the txn-id from the delivery state:

      [0x21ddf40]:0 <- @disposition(21) [role=true, first=0, last=0, settled=true, state=@declared(51) [txn-id=b"4a12a39a-09fe-11ea-91ae-000c29e9f622"]]
      [0x2251560]:1 -> @disposition(21) [role=true, first=0, settled=true, state=@declared(51) null]
      

      The recipient client then barfs at this point since txn-id is mandatory for the declared state.

      Using 1.8.0, the declared state transited the router fine:

      [0x1f49530]:0 <- @disposition(21) [role=true, first=0, last=0, settled=true, state=@declared(51) [txn-id=b"78dabc4f-0a00-11ea-bb46-000c29e9f622"]]
      [0x1fc2b20]:2 -> @disposition(21) [role=true, first=0, settled=true, state=@declared(51) [txn-id=b"78dabc4f-0a00-11ea-bb46-000c29e9f622"]]
      

      Attachments

        Issue Links

          Activity

            People

              kgiusti Ken Giusti
              robbie Robbie Gemmell
              Votes:
              0 Vote for this issue
              Watchers:
              4 Start watching this issue

              Dates

                Created:
                Updated:
                Resolved: