[ 
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]

Reply via email to