[
https://issues.apache.org/jira/browse/DISPATCH-1703?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Ken Giusti resolved DISPATCH-1703.
----------------------------------
Resolution: Fixed
> router drops TransactionalState on produced messages on link routes
> -------------------------------------------------------------------
>
> Key: DISPATCH-1703
> URL: https://issues.apache.org/jira/browse/DISPATCH-1703
> Project: Qpid Dispatch
> Issue Type: Bug
> Affects Versions: 1.10.0, 1.11.0, 1.12.0
> Reporter: Robbie Gemmell
> Assignee: Ken Giusti
> Priority: Blocker
> Fix For: 1.13.0
>
> Attachments: HelloWorld.java, broker_trace.txt, client_trace.txt,
> qdrouterd.conf, router_trace.txt
>
>
> The router is dropping the TransactionalState carrying the txn-id on produced
> messages when link routing to e.g a broker (that the txn coordinator link has
> also been routed to).
> This makes the send non-transactional between router and broker, entirely
> breaking the transactional model and meaning the send takes effect before
> committed, making it available for consumption by consumers before commit,
> meaning it cant be rolled back, etc.
> Take for example the attached modified Qpid JMS HelloWorld example, link
> routing the producer and consumer to a broker, using the attached router
> config. During this, the router can be seen logging arrival of a produced
> message carrying TransactionalState with the relevant txn-id. It can then be
> seen immediately sending this message on to the broker as expected - but
> without the TransactionalState. These 2 lines should essentially be identical
> but for the transport/channel and direction arrow details:
> {noformat}
> [0x10ff240]: AMQP:FRAME:1 <- @transfer(20) [handle=1, delivery-id=1,
> delivery-tag=b"\x00", message-format=0, settled=false, more=false,
> state=@transactional-state(52)
> [txn-id=b"15cecc4b-bac1-11ea-b3f8-000c29e9f622"]] (149)
> "\x00Sr\xc1)\x04\xa3\x0ex-opt-jms-destQ\x00\xa3\x12x-opt-jms-msg-typeQ\x05\x00Ss\xd0\x00\x00\x00L\x00\x00\x00\x0a\xa1/ID:6d720961-1a6b-446a-9606-55b594e74f39:1:1:1-1@\xa1\x05queue@@@@@@\x83\x00\x00\x01s\x04\xe3\xcc
> \x00Sw\xa1\x0eHello world! 1"
> [0x10b0d70]: AMQP:FRAME:0 -> @transfer(20) [handle=1, delivery-id=1,
> delivery-tag=b"\x00", message-format=0] (155)
> "\x00Sr\xd1\x00\x00\x00,\x00\x00\x00\x04\xa3\x0ex-opt-jms-destQ\x00\xa3\x12x-opt-jms-msg-typeQ\x05\x00Ss\xd0\x00\x00\x00L\x00\x00\x00\x0a\xa1/ID:6d720961-1a6b-446a-9606-55b594e74f39:1:1:1-1@\xa1\x05queue@@@@@@\x83\x00\x00\x01s\x04\xe3\xcc
> \x00Sw\xa1\x0eHello world! 1"
> {noformat}
> The produced message arrives at the broker and is accepted and transferred
> back to the router and on to the consumer, before the clients original send
> was committed - which it never was since the example actually does a rollback
> after send and so should fail to consume anything.
--
This message was sent by Atlassian Jira
(v8.3.4#803005)
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]