You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@qpid.apache.org by "Ken Giusti (Jira)" <ji...@apache.org> on 2020/06/30 14:52:00 UTC

[jira] [Assigned] (DISPATCH-1703) router drops TransactionalState on produced messages on link routes

     [ https://issues.apache.org/jira/browse/DISPATCH-1703?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Ken Giusti reassigned DISPATCH-1703:
------------------------------------

    Assignee: Ken Giusti

> 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: dev-unsubscribe@qpid.apache.org
For additional commands, e-mail: dev-help@qpid.apache.org