Bug 1088004

Summary: heartbeat interleaved with message frames causes decode error
Product: Red Hat Enterprise MRG Reporter: Gordon Sim <gsim>
Component: python-qpidAssignee: Gordon Sim <gsim>
Status: CLOSED ERRATA QA Contact: Leonid Zhaldybin <lzhaldyb>
Severity: unspecified Docs Contact:
Priority: high    
Version: 2.4CC: dmaley, esammons, gsim, iboverma, jross, lzhaldyb, mcressma, sgraf
Target Milestone: 2.5.1   
Target Release: ---   
Hardware: Unspecified   
OS: Unspecified   
Whiteboard:
Fixed In Version: python-qpid-0.18-10.el7 Doc Type: Bug Fix
Doc Text:
Previously, the python client decode routines expected a multi-frame command to be received in sequence, with no interleaving. It was discovered that due to the python client's expected operation, some valid AMQP sequences with interleaved heartbeats sent on different protocol tracks caused a decode error in the python client library. The fix introduces modified decode routines in the python client that take into account multiple protocol tracks. This corrects the decode errors originally encountered.
Story Points: ---
Clone Of: 1088003 Environment:
Last Closed: 2014-07-03 10:18:08 UTC Type: Bug
Regression: --- Mount Type: ---
Documentation: --- CRM:
Verified Versions: Category: ---
oVirt Team: --- RHEL 7.3 requirements from Atomic Host:
Cloudforms Team: --- Target Upstream Version:
Embargoed:
Bug Depends On: 1088003    
Bug Blocks: 1040649    
Attachments:
Description Flags
patch to make interleaving more likely (by sleeping in appropriate place) none

Description Gordon Sim 2014-04-15 19:55:06 UTC
+++ This bug was initially created as a clone of Bug #1088003 +++

Description of problem:

Heartbeat controls are sent on a separate 'track' from the message transfer command and accompanying header and content segments.

The OpDecoder is fed the segments as they occur, but does not account for the possibility of interleaving of assemblies on different tracks.

Version-Release number of selected component (if applicable):

Present in qpid 0.26

How reproducible:

Quite hard by normal means. In theory a python receiver with heartbeats set, getting a steady flow of messages over a long time would eventually hit this. For the purposes of testing fixes I introduced a sleep into the broker to artificially increase the chance of the interleaving.

Steps to Reproduce:
1.
2.
3.

Actual results:


Expected results:


Additional info:

--- Additional comment from Gordon Sim on 2014-04-15 15:52:29 EDT ---

Fix committed upstream: https://svn.apache.org/r1587710

Comment 4 Gordon Sim 2014-05-12 14:34:53 UTC
Created attachment 894740 [details]
patch to make interleaving more likely (by sleeping in appropriate place)

Comment 7 Leonid Zhaldybin 2014-06-02 13:52:58 UTC
Tested on RHEL5/6/7, this issue has been fixed. The test was running for a couple of days without triggering the issue, whereas on the affected version it was reliably reproducible in 2-3 hours tops.

Packages used for testing:

python-qpid-0.18-11
python-qpid-qmf-0.18-23
qpid-cpp-0.18-23
qpid-qmf-0.18-23
qpid-tools-0.18-10

-> VERIFIED

Comment 9 errata-xmlrpc 2014-07-03 10:18:08 UTC
Since the problem described in this bug report should be
resolved in a recent advisory, it has been closed with a
resolution of ERRATA.

For information on the advisory, and where to find the updated
files, follow the link below.

If the solution does not work for you, open a new bug report.

http://rhn.redhat.com/errata/RHBA-2014-0832.html