Keith Wall created QPID-6094:
--------------------------------

             Summary: [0-8..0-9-1] Java Broker can interleave other frames (for 
the same channel) amongst content frames
                 Key: QPID-6094
                 URL: https://issues.apache.org/jira/browse/QPID-6094
             Project: Qpid
          Issue Type: Bug
          Components: Java Broker
    Affects Versions: 0.30
            Reporter: Keith Wall


A longstanding defect in the Java Broker means that it can interleave other 
frames for same channel amongst content frames belonging to a single message.  
This violates the AMQP specification.  It is most likely to be seen when the 
messages sizes are large and/or frame sizes small.

AMQ Spec 0-9-1; 4.2.6 Content Framing

bq. "Content frames on a specific channel are strictly sequential. That is, 
they may be mixed with frames for other channels, but no two content frames 
from the same channel may be mixed or overlapped, nor may content frames for a 
single content be mixed with method frames on the same channel"

Here is an example from the Java Broker log (trunk).  Here a CommitOk is sent 
interleaved between two body frames belonging of the same message.  

{noformat}
2014-09-12 13:00:56,577 DEBUG [pool-1-thread-1] (v0_8.AMQProtocolEngine) - 
SEND: [CompositeAMQBodyBlock methodBody=[EncodedDeliveryBody underlyingBody: 
[BasicDeliverBodyImpl: consumerTag=sgen_1, deliveryTag=24, redelivered=false, 
exchange=null, routingKey=q]], headerBody=ContentHeaderBody{classId=60, 
weight=0, bodySize=65535, properties=reply-to = null,propertyFlags = 
0,ApplicationID = null,ClusterID = null,UserId = null,JMSMessageID = 
null,JMSCorrelationID = null,JMSDeliveryMode = 0,JMSExpiration = 0,JMSPriority 
= 0,JMSTimestamp = 0,JMSType = null}, contentBody=[MessageContentSourceBody 
offset: 0, length: 65527], channel=1]
2014-09-12 13:00:56,577 DEBUG [IoReceiver - /127.0.0.1:49936] 
(txn.LocalTransaction) - Completed post transaction actions
2014-09-12 13:00:56,583 DEBUG [IoReceiver - /127.0.0.1:49936] 
(v0_8.AMQProtocolEngine) - SEND: Frame channelId: 1, bodyFrame: 
[TxCommitOkBodyImpl: ]
2014-09-12 13:00:56,583 DEBUG [IoReceiver - /127.0.0.1:49936] 
(v0_8.AMQProtocolEngine) - Frame handled in 7 ms. Frame: Frame channelId: 1, 
bodyFrame: [TxCommitBodyImpl: ]
2014-09-12 13:00:56,583 DEBUG [IoReceiver - /127.0.0.1:49936] (v0_8.AMQChannel) 
- sync() called on channel 1(213308972)
2014-09-12 13:00:56,583 DEBUG [pool-1-thread-1] (v0_8.AMQProtocolEngine) - 
SEND: Frame channelId: 1, bodyFrame: [MessageContentSourceBody offset: 65527, 
length: 8]
{noformat}

The Java Client tolerates this behaviour (longstanding).  QPID-6082 made the 
Python Client 0-8..0-9-1 do the same.



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to