| Summary: | [AMQP 1.0] Message size resolution differs for AMQP 0.10 and 1.0 | ||
|---|---|---|---|
| Product: | Red Hat Enterprise MRG | Reporter: | Zdenek Kraus <zkraus> |
| Component: | qpid-cpp | Assignee: | Gordon Sim <gsim> |
| Status: | CLOSED CURRENTRELEASE | QA Contact: | Zdenek Kraus <zkraus> |
| Severity: | low | Docs Contact: | |
| Priority: | low | ||
| Version: | 3.0 | CC: | esammons, gsim, iboverma, jross, pmoravec |
| Target Milestone: | 3.0 | ||
| Target Release: | --- | ||
| Hardware: | Unspecified | ||
| OS: | Unspecified | ||
| Whiteboard: | |||
| Fixed In Version: | qpid-cpp-0.22-19 | Doc Type: | Bug Fix |
| Doc Text: |
It was discovered that qpid-cpp was only reporting broker statistics or enforcing queue depth limits based on the size of the AMPQ 0-10 message body, instead of additionally including the header size. This caused statistics to incorrectly reflect the size of headers in the message. For example, a message with no body but many headers would not contribute to the aggregate size in bytes of a queue onto which it was enqueued. Because AMQP 1.0 messages included headers and other meta-data with the message, this issue had the potential to introduce unnecessary confusion. The size of AMQP 0-10 messages is now fixed to take the sum of the content and headers segments into account when calculating the logical size of the message. Statistics and queue limits reported or controlled in bytes now more accurately reflect the logical size of the message, and there is less difference between the 1.0 and 0-10 encodings in terms of their overall size. It is expected that queue limits will be reached earlier due to the correct logical size now being reported and enforced.
|
Story Points: | --- |
| Clone Of: | Environment: | ||
| Last Closed: | 2015-01-21 12:55:37 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: | |
| Bug Depends On: | |||
| Bug Blocks: | 1010399 | ||
Fixed upstream: https://svn.apache.org/r1528852 Unset the skip-errata flag as this will affect existing 0-10 based deployments, though admittedly the issue is described as a comparison with 1.0. This was tested on RHEL 6.5 i686, x86_64 with following packages: perl-qpid-0.22-7.el6 python-qpid-0.22-9.el6 python-qpid-qmf-0.22-25.el6 qpid-cpp-client-0.22-31.el6 qpid-cpp-client-devel-0.22-31.el6 qpid-cpp-client-devel-docs-0.22-31.el6 qpid-cpp-client-ssl-0.22-31.el6 qpid-cpp-debuginfo-0.22-31.el6 qpid-cpp-server-0.22-31.el6 qpid-cpp-server-devel-0.22-31.el6 qpid-cpp-server-ha-0.22-31.el6 qpid-cpp-server-linearstore-0.22-31.el6 qpid-cpp-server-ssl-0.22-31.el6 qpid-cpp-server-xml-0.22-31.el6 qpid-java-client-0.22-5.el6 qpid-java-common-0.22-5.el6 qpid-java-example-0.22-5.el6 qpid-jca-0.22-1.el6 qpid-jca-xarecovery-0.22-1.el6 qpid-proton-c-0.6-1.el6 qpid-proton-c-devel-0.6-1.el6 qpid-qmf-0.22-25.el6 qpid-snmpd-1.0.0-15.el6 qpid-tools-0.22-7.el6 ruby-qpid-qmf-0.22-25.el6 fix work as expected. |
Description of problem: With AMQP 0.10 message size == size of content, but with AMQP 1.0 message size == whole (probably encoded) message. This should be unified. Also 'size' parameter of the Message object in C++ contains only the size of content. Other languages lacks the size parameter. Version-Release number of selected component (if applicable): qpid-cpp-0.22-16 How reproducible: 100% Steps to Reproduce: 1. send message via amqp 0.10 with one character content ./spout --content "A" "amqp0-10;{create: always}" 2. send message via amqp 1.0 with one character content ./spout --connection-options "{ protocol: 'amqp1.0' }" --content "A" "amqp1.0;{create: always}" 3. observe result qpid-stat -q Actual results: Queues queue dur autoDel excl msg msgIn msgOut bytes bytesIn bytesOut cons bind ========================================================================================================================= 89fbce1d-0b95-4e16-877b-b0d32876b93d:0.0 Y Y 0 0 0 0 0 0 1 2 amqp0-10 1 1 0 1 1 0 0 1 amqp1.0 1 1 0 101 101 0 0 1 Expected results: Queues queue dur autoDel excl msg msgIn msgOut bytes bytesIn bytesOut cons bind ========================================================================================================================= 89fbce1d-0b95-4e16-877b-b0d32876b93d:0.0 Y Y 0 0 0 0 0 0 1 2 amqp0-10 1 1 0 1 1 0 0 1 amqp1.0 1 1 0 1 1 0 0 1 ## OR ## Queues queue dur autoDel excl msg msgIn msgOut bytes bytesIn bytesOut cons bind ========================================================================================================================= 89fbce1d-0b95-4e16-877b-b0d32876b93d:0.0 Y Y 0 0 0 0 0 0 1 2 amqp0-10 1 1 0 101 101 0 0 1 amqp1.0 1 1 0 101 101 0 0 1 Additional info: This difference also influence others, for example limit enforcement for message sizes.