qpid-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "ASF subversion and git services (JIRA)" <j...@apache.org>
Subject [jira] [Commented] (PROTON-1892) Deliveries on different links use the same delivery-id
Date Wed, 11 Jul 2018 17:27:00 GMT

    [ https://issues.apache.org/jira/browse/PROTON-1892?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16540426#comment-16540426

ASF subversion and git services commented on PROTON-1892:

Commit 3e59d10d65f0206ddcd75be59749d28aab17402c in qpid-proton-j's branch refs/heads/master
from [~gemmellr]
[ https://git-wip-us.apache.org/repos/asf?p=qpid-proton-j.git;h=3e59d10 ]

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.

> Deliveries on different links use the same 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
>            Priority: Critical
>         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

To unsubscribe, e-mail: dev-unsubscribe@qpid.apache.org
For additional commands, e-mail: dev-help@qpid.apache.org

View raw message