Robbie Gemmell created DISPATCH-1703:
----------------------------------------

             Summary: 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.12.0
            Reporter: Robbie Gemmell


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 direction arrow:
{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