[
https://issues.apache.org/jira/browse/PROTON-1892?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16543581#comment-16543581
]
ASF subversion and git services commented on PROTON-1892:
---------------------------------------------------------
Commit ff9066ccb543f63fde02055a6a4b2ccd0dc03bfa in qpid-proton-j's branch
refs/heads/0.27.x from [~gemmellr]
[ https://git-wip-us.apache.org/repos/asf?p=qpid-proton-j.git;h=ff9066c ]
PROTON-1892: ensure new deliveryId is properly allocated to new delivery
transfers when an existing multi-frame delivery is still underway on another
link.
Change from Marcel Meulemans, plus test from me.
(cherry picked from commit 3e59d10d65f0206ddcd75be59749d28aab17402c)
> transfers for multiplexed deliveries on the same session can have the wrong
> delivery-id
> ---------------------------------------------------------------------------------------
>
> Key: PROTON-1892
> URL: https://issues.apache.org/jira/browse/PROTON-1892
> Project: Qpid Proton
> Issue Type: Bug
> Components: proton-j
> Affects Versions: proton-j-0.27.1
> Reporter: Marcel Meulemans
> Assignee: Robbie Gemmell
> Priority: Critical
> Fix For: proton-j-0.28.0
>
> Attachments: proton-j-delivery-id-fix.patch, proton-trace.log
>
>
> Given a session with two outgoing links the situation can occur that two
> deliveries on separate links share the same delivery-id. This situation
> occurs when a multi frame transfer is being sent on link A and a new (single
> frame) transfer is sent (multiplexed) on link B before the delivery on link A
> completes. The reason this occurs is because the increment of the delivery id
> counter (maintained per session) is delayed until the entire (multi frame)
> delivery is complete
> ([here|https://github.com/apache/qpid-proton-j/blob/e5a7dcade2996b2b68967949ddf1377f954bf579/proton-j/src/main/java/org/apache/qpid/proton/engine/impl/TransportImpl.java#L619])
> allowing the second delivery to get the same delivery id when calling
> getOutgoingDeliveryId
> [here|https://github.com/apache/qpid-proton-j/blob/e5a7dcade2996b2b68967949ddf1377f954bf579/proton-j/src/main/java/org/apache/qpid/proton/engine/impl/TransportImpl.java#L559]
> My 100% reproduction scenario is as follows:
> * Run artemis (2.6.2 which uses proton-j 0.27.1) with an AMQP connector
> * Send a large message (10MB) to queue A
> * Send a couple of small messages to queue B
> * Connect a proton-c based client with a small maxFrameSize (8K) and limited
> credit to artemis and simultaneously subscribe to both queues (I think a flow
> frame triggers artemis to initiate a transfer therefore the limited credit).
> With proton-c trace logging enable you will get something like this:
> [^proton-trace.log]
> The attached patch fixes the issue.
> [^proton-j-delivery-id-fix.patch]
>
>
>
>
--
This message was sent by Atlassian JIRA
(v7.6.3#76005)
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]