[ 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 (v7.6.3#76005) --------------------------------------------------------------------- To unsubscribe, e-mail: dev-unsubscr...@qpid.apache.org For additional commands, e-mail: dev-h...@qpid.apache.org