[
https://issues.apache.org/jira/browse/PROTON-2005?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17019389#comment-17019389
]
Robbie Gemmell commented on PROTON-2005:
----------------------------------------
I reopened as I thought I saw an problem with the change itself+test, but on
further investigation I was mistaken so I resolved the issue again.
That said, I do think it would have been good for the test to more fully cover
this segment of your comment above though:
{quote}
If there is sufficient data to exceed the max frame size, multiple frames will
be generated to send all the data, each frame with a header indicating settled
and aborted.
{quote}
It seems like the added test only really verifies a single additional frames
worth of payload is dropped and would need more payload to verify only a single
aborting transfer is sent when there is enough payload for more. We know from
the actual change that the payload is now dropped when calling abort, but the
test doesn't and it wouldn't catch the issue if the impl later changed to drop
on send as it did before.
> [proton-c] AMQP error if delivery is aborted with session_outgoing bytes > 0
> ----------------------------------------------------------------------------
>
> Key: PROTON-2005
> URL: https://issues.apache.org/jira/browse/PROTON-2005
> Project: Qpid Proton
> Issue Type: Bug
> Components: proton-c
> Affects Versions: proton-c-0.26.0, proton-c-0.27.0, proton-c-0.27.1,
> proton-c-0.28.0, proton-c-0.29.0, proton-c-0.30.0
> Reporter: Charles E. Rolke
> Assignee: Clifford Jansen
> Priority: Critical
> Fix For: proton-c-0.31.0
>
> Attachments: PROTON-2005-router-print-debug.txt,
> PROTON-2005-router-scrape.html, PROTON-2005-selftest-printf.txt.txt
>
>
> Running the test case in https://issues.apache.org/jira/browse/DISPATCH-1265
> The self test is a two-router network with a test sender sending to router A
> and a test receiver receiving from router B. The test sender is sending some
> number of bytes and then aborting the delivery. In the observations here
> router A is transmitting incorrect AMQP over the interrouter link to router B
> in response to the abort.
> * A 400K byte message is being transmitted. 320K bytes have already gone
> over the wire
> * The message is aborted. with session_outgoing 84992
> * Over the wire six transfers send the 84992 bytes with the same delivery-id
> and with abort=true
> A dispatch log scraper trace of router A for the interrouter link to router B:
>
> {{ delivery 21 is in progress}}
> {{2019-02-08 05:07:41.140975 A0#1480 A [A0_4] -> [B0_1] B transfer [0,10]
> (21) more transfer_93 - 16346 bytes (pending)}}
> {{2019-02-08 05:07:41.141066 A0#1486 A [A0_4] -> [B0_1] B transfer [0,10]
> (21) more transfer_99 - 16346 bytes (pending)}}
> {{2019-02-08 05:07:41.141087 A0#1488 A [A0_4] -> [B0_1] B transfer [0,10]
> (21) more transfer_102 - 228 bytes (pending)}}
> {{2019-02-08 05:07:41.141169 A0#1492 A [A0_4] <- [B0_1] B flow [0,10]
> (14,250)}}
> {{ delivery 21 is aborted with session_outgoing 84992}}
> {{ over the wire the session bytes are bled down with multiple transfers
> that have both 'more' and 'aborted' set true}}
> {{2019-02-08 05:07:41.141514 A0#1513 A [A0_4] -> [B0_1] B transfer [0,10]
> (21) settled more aborted transfer_93 - 16342 bytes transfer presettled}}
> {{2019-02-08 05:07:41.141538 A0#1514 A [A0_4] -> [B0_1] B transfer [0,10]
> (21) settled more aborted transfer_94 - 16342 bytes transfer presettled}}
> {{2019-02-08 05:07:41.141564 A0#1517 A [A0_4] -> [B0_1] B transfer [0,10]
> (21) settled more aborted transfer_96 - 16342 bytes transfer presettled}}
> {{2019-02-08 05:07:41.141603 A0#1521 A [A0_4] -> [B0_1] B transfer [0,10]
> (21) settled more aborted transfer_99 - 16342 bytes transfer presettled}}
> {{2019-02-08 05:07:41.141669 A0#1527 A [A0_4] -> [B0_1] B transfer [0,10]
> (21) settled more aborted transfer_92 - 16342 bytes transfer presettled}}
> {{2019-02-08 05:07:41.141722 A0#1531 A [A0_4] -> [B0_1] B transfer [0,10]
> (21) settled aborted transfer_93 - 13522 bytes transfer presettled}}
> {{ delivery 22 is started}}
> {{2019-02-08 05:07:41.142542 A0#1576 A [A0_4] -> [B0_1] B transfer [0,10]
> (22) more transfer_107 - 16346 bytes (pending)}}
> {{2019-02-08 05:07:41.142578 A0#1579 A [A0_4] -> [B0_1] B transfer [0,10]
> (22) more transfer_108 - 16346 bytes (pending)}}
> {{2019-02-08 05:07:41.142608 A0#1581 A [A0_4] -> [B0_1] B transfer [0,10]
> (22) more transfer_109 - 16346 bytes (pending) ...}}
> {{ eventually peer router B closes the connection}}
> {{2019-02-08 05:07:41.144746 A0#1730 A [A0_4] <- [B0_1] B close [0] error
> :"amqp:session:invalid-field" "sequencing error, expected delivery-id 22, got
> 21"}}
> {{2019-02-08 05:07:41.144767 A0#1732 A [A0_4] <- [B0_1] B EOS}}
> The transfer at 05:07:41.141514 settles the delivery and the next transfer is
> an AMQP protocol violation.
--
This message was sent by Atlassian Jira
(v8.3.4#803005)
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]