Bug 1088004 - heartbeat interleaved with message frames causes decode error
Summary: heartbeat interleaved with message frames causes decode error
Keywords:
Status: CLOSED ERRATA
Alias: None
Product: Red Hat Enterprise MRG
Classification: Red Hat
Component: python-qpid
Version: 2.4
Hardware: Unspecified
OS: Unspecified
high
unspecified
Target Milestone: 2.5.1
: ---
Assignee: Gordon Sim
QA Contact: Leonid Zhaldybin
URL:
Whiteboard:
Depends On: 1088003
Blocks: 1040649
TreeView+ depends on / blocked
 
Reported: 2014-04-15 19:55 UTC by Gordon Sim
Modified: 2019-02-15 13:39 UTC (History)
8 users (show)

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.
Clone Of: 1088003
Environment:
Last Closed: 2014-07-03 10:18:08 UTC
Target Upstream Version:
Embargoed:


Attachments (Terms of Use)
patch to make interleaving more likely (by sleeping in appropriate place) (863 bytes, patch)
2014-05-12 14:34 UTC, Gordon Sim
no flags Details | Diff


Links
System ID Private Priority Status Summary Last Updated
Apache JIRA QPID-5700 0 None None None Never
Red Hat Bugzilla 1086004 0 medium CLOSED Internal Error from python-qpid can cause qpid connection to never recover 2021-02-22 00:41:40 UTC
Red Hat Product Errata RHBA-2014:0832 0 normal SHIPPED_LIVE Red Hat Enterprise MRG Messaging 2 update 2014-07-03 14:17:58 UTC

Internal Links: 1086004

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


Note You need to log in before you can comment on or make changes to this bug.