[jira] [Commented] (PROTON-971) [proton-j] multi-frame deliveries may be broken when sent if buffered along with a futher delivery for the same link
[ https://issues.apache.org/jira/browse/PROTON-971?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14987509#comment-14987509 ] Robbie Gemmell commented on PROTON-971: --- Now merged to 0.11.x branch for inclusion in 0.11.0 > [proton-j] multi-frame deliveries may be broken when sent if buffered along > with a futher delivery for the same link > > > Key: PROTON-971 > URL: https://issues.apache.org/jira/browse/PROTON-971 > Project: Qpid Proton > Issue Type: Bug > Components: proton-j >Affects Versions: 0.10 >Reporter: Robbie Gemmell >Assignee: Robbie Gemmell >Priority: Critical > Fix For: 0.11 > > Attachments: PROTON-971_test.patch > > > Proton-j sends at most a single frame for a delivery in each call to > "processTransportWorkSender(DeliveryImpl delivery, SenderImpl snd)", which > occurs for each sent delivery on the 'transport work list' in turn during the > "processTransportWork" call. That call is made twice for each process of the > transport. As such, at most 2 frames for each delivery can be emitted for > each process of the transport. However, because all deliveries on the > connections 'transport work list' are processed in turn by > "processTransportWork", it is possible that interleaved transfer frames for > subsequent deliveries on the same link will also be emitted if there are > other buffered deliveries on the work list and the session window and frame > writer 'isFUll' checks permit it. > This in itself would already be illegal [1] even if the frames were otherwise > correct, but the erroenous transfer frames also get marked with the wrong > delivery-id since that is only incremented by the transport when a delivery > has been completed, so if it was not all sent yet then the > initial/interleaved transfer frames for the subsequent delivery are also > stamped with the same id. Proton-j uses the delivery-id while consitituting > received deliveries, and thus the mismatch results in interleaving of the > payload from the later delivery within that for the earlier delivery. > [1] > http://docs.oasis-open.org/amqp/core/v1.0/os/amqp-core-transport-v1.0-os.html#doc-idp484080 > "However, messages transferred along a single link MUST NOT be interleaved." -- This message was sent by Atlassian JIRA (v6.3.4#6332)
[jira] [Commented] (PROTON-971) [proton-j] multi-frame deliveries may be broken when sent if buffered along with a futher delivery for the same link
[ https://issues.apache.org/jira/browse/PROTON-971?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14987494#comment-14987494 ] ASF subversion and git services commented on PROTON-971: Commit 3c527d2f09977f629fc34c5285e847949ceacb99 in qpid-proton's branch refs/heads/0.11.x from Robert Gemmell [ https://git-wip-us.apache.org/repos/asf?p=qpid-proton.git;h=3c527d2 ] PROTON-971: record the in-progress delivery on the transport link, don't send transfers for new deliveries until the existing one is completed (cherry picked from commit a94e635152e5ab32c3dbe5ea87f88173d01f4ce1) > [proton-j] multi-frame deliveries may be broken when sent if buffered along > with a futher delivery for the same link > > > Key: PROTON-971 > URL: https://issues.apache.org/jira/browse/PROTON-971 > Project: Qpid Proton > Issue Type: Bug > Components: proton-j >Affects Versions: 0.10, 0.11 >Reporter: Robbie Gemmell >Assignee: Robbie Gemmell >Priority: Critical > Fix For: 0.12.0 > > Attachments: PROTON-971_test.patch > > > Proton-j sends at most a single frame for a delivery in each call to > "processTransportWorkSender(DeliveryImpl delivery, SenderImpl snd)", which > occurs for each sent delivery on the 'transport work list' in turn during the > "processTransportWork" call. That call is made twice for each process of the > transport. As such, at most 2 frames for each delivery can be emitted for > each process of the transport. However, because all deliveries on the > connections 'transport work list' are processed in turn by > "processTransportWork", it is possible that interleaved transfer frames for > subsequent deliveries on the same link will also be emitted if there are > other buffered deliveries on the work list and the session window and frame > writer 'isFUll' checks permit it. > This in itself would already be illegal [1] even if the frames were otherwise > correct, but the erroenous transfer frames also get marked with the wrong > delivery-id since that is only incremented by the transport when a delivery > has been completed, so if it was not all sent yet then the > initial/interleaved transfer frames for the subsequent delivery are also > stamped with the same id. Proton-j uses the delivery-id while consitituting > received deliveries, and thus the mismatch results in interleaving of the > payload from the later delivery within that for the earlier delivery. > [1] > http://docs.oasis-open.org/amqp/core/v1.0/os/amqp-core-transport-v1.0-os.html#doc-idp484080 > "However, messages transferred along a single link MUST NOT be interleaved." -- This message was sent by Atlassian JIRA (v6.3.4#6332)
[jira] [Commented] (PROTON-971) [proton-j] multi-frame deliveries may be broken when sent if buffered along with a futher delivery for the same link
[ https://issues.apache.org/jira/browse/PROTON-971?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14987454#comment-14987454 ] Justin Ross commented on PROTON-971: Reviewed by Tim. Approved for 0.11.0. > [proton-j] multi-frame deliveries may be broken when sent if buffered along > with a futher delivery for the same link > > > Key: PROTON-971 > URL: https://issues.apache.org/jira/browse/PROTON-971 > Project: Qpid Proton > Issue Type: Bug > Components: proton-j >Affects Versions: 0.10, 0.11 >Reporter: Robbie Gemmell >Assignee: Robbie Gemmell >Priority: Critical > Fix For: 0.12.0 > > Attachments: PROTON-971_test.patch > > > Proton-j sends at most a single frame for a delivery in each call to > "processTransportWorkSender(DeliveryImpl delivery, SenderImpl snd)", which > occurs for each sent delivery on the 'transport work list' in turn during the > "processTransportWork" call. That call is made twice for each process of the > transport. As such, at most 2 frames for each delivery can be emitted for > each process of the transport. However, because all deliveries on the > connections 'transport work list' are processed in turn by > "processTransportWork", it is possible that interleaved transfer frames for > subsequent deliveries on the same link will also be emitted if there are > other buffered deliveries on the work list and the session window and frame > writer 'isFUll' checks permit it. > This in itself would already be illegal [1] even if the frames were otherwise > correct, but the erroenous transfer frames also get marked with the wrong > delivery-id since that is only incremented by the transport when a delivery > has been completed, so if it was not all sent yet then the > initial/interleaved transfer frames for the subsequent delivery are also > stamped with the same id. Proton-j uses the delivery-id while consitituting > received deliveries, and thus the mismatch results in interleaving of the > payload from the later delivery within that for the earlier delivery. > [1] > http://docs.oasis-open.org/amqp/core/v1.0/os/amqp-core-transport-v1.0-os.html#doc-idp484080 > "However, messages transferred along a single link MUST NOT be interleaved." -- This message was sent by Atlassian JIRA (v6.3.4#6332)
[jira] [Commented] (PROTON-971) [proton-j] multi-frame deliveries may be broken when sent if buffered along with a futher delivery for the same link
[ https://issues.apache.org/jira/browse/PROTON-971?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14987428#comment-14987428 ] Timothy Bish commented on PROTON-971: - Reviewed the changes, fix seems valid. > [proton-j] multi-frame deliveries may be broken when sent if buffered along > with a futher delivery for the same link > > > Key: PROTON-971 > URL: https://issues.apache.org/jira/browse/PROTON-971 > Project: Qpid Proton > Issue Type: Bug > Components: proton-j >Affects Versions: 0.10, 0.11 >Reporter: Robbie Gemmell >Assignee: Robbie Gemmell >Priority: Critical > Fix For: 0.12.0 > > Attachments: PROTON-971_test.patch > > > Proton-j sends at most a single frame for a delivery in each call to > "processTransportWorkSender(DeliveryImpl delivery, SenderImpl snd)", which > occurs for each sent delivery on the 'transport work list' in turn during the > "processTransportWork" call. That call is made twice for each process of the > transport. As such, at most 2 frames for each delivery can be emitted for > each process of the transport. However, because all deliveries on the > connections 'transport work list' are processed in turn by > "processTransportWork", it is possible that interleaved transfer frames for > subsequent deliveries on the same link will also be emitted if there are > other buffered deliveries on the work list and the session window and frame > writer 'isFUll' checks permit it. > This in itself would already be illegal [1] even if the frames were otherwise > correct, but the erroenous transfer frames also get marked with the wrong > delivery-id since that is only incremented by the transport when a delivery > has been completed, so if it was not all sent yet then the > initial/interleaved transfer frames for the subsequent delivery are also > stamped with the same id. Proton-j uses the delivery-id while consitituting > received deliveries, and thus the mismatch results in interleaving of the > payload from the later delivery within that for the earlier delivery. > [1] > http://docs.oasis-open.org/amqp/core/v1.0/os/amqp-core-transport-v1.0-os.html#doc-idp484080 > "However, messages transferred along a single link MUST NOT be interleaved." -- This message was sent by Atlassian JIRA (v6.3.4#6332)
[jira] [Commented] (PROTON-971) [proton-j] multi-frame deliveries may be broken when sent if buffered along with a futher delivery for the same link
[ https://issues.apache.org/jira/browse/PROTON-971?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14987200#comment-14987200 ] ASF subversion and git services commented on PROTON-971: Commit a94e635152e5ab32c3dbe5ea87f88173d01f4ce1 in qpid-proton's branch refs/heads/master from Robert Gemmell [ https://git-wip-us.apache.org/repos/asf?p=qpid-proton.git;h=a94e635 ] PROTON-971: record the in-progress delivery on the transport link, don't send transfers for new deliveries until the existing one is completed > [proton-j] multi-frame deliveries may be broken when sent if buffered along > with a futher delivery for the same link > > > Key: PROTON-971 > URL: https://issues.apache.org/jira/browse/PROTON-971 > Project: Qpid Proton > Issue Type: Bug > Components: proton-j >Affects Versions: 0.10 >Reporter: Robbie Gemmell >Priority: Critical > Fix For: 0.11 > > Attachments: PROTON-971_test.patch > > > Proton-j sends at most a single frame for a delivery in each call to > "processTransportWorkSender(DeliveryImpl delivery, SenderImpl snd)", which > occurs for each sent delivery on the 'transport work list' in turn during the > "processTransportWork" call. That call is made twice for each process of the > transport. As such, at most 2 frames for each delivery can be emitted for > each process of the transport. However, because all deliveries on the > connections 'transport work list' are processed in turn by > "processTransportWork", it is possible that interleaved transfer frames for > subsequent deliveries on the same link will also be emitted if there are > other buffered deliveries on the work list and the session window and frame > writer 'isFUll' checks permit it. > This in itself would already be illegal [1] even if the frames were otherwise > correct, but the erroenous transfer frames also get marked with the wrong > delivery-id since that is only incremented by the transport when a delivery > has been completed, so if it was not all sent yet then the > initial/interleaved transfer frames for the subsequent delivery are also > stamped with the same id. Proton-j uses the delivery-id while consitituting > received deliveries, and thus the mismatch results in interleaving of the > payload from the later delivery within that for the earlier delivery. > [1] > http://docs.oasis-open.org/amqp/core/v1.0/os/amqp-core-transport-v1.0-os.html#doc-idp484080 > "However, messages transferred along a single link MUST NOT be interleaved." -- This message was sent by Atlassian JIRA (v6.3.4#6332)