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.
+++ 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
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
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