Bug 679212 - Messages following a queue's Alternate-Exchange do not follow the exchange's Alternate-Exchange
Summary: Messages following a queue's Alternate-Exchange do not follow the exchange's ...
Keywords:
Status: CLOSED ERRATA
Alias: None
Product: Red Hat Enterprise MRG
Classification: Red Hat
Component: qpid-cpp
Version: Development
Hardware: x86_64
OS: Linux
unspecified
high
Target Milestone: 2.0
: ---
Assignee: Gordon Sim
QA Contact: Petr Matousek
URL:
Whiteboard:
Depends On:
Blocks:
TreeView+ depends on / blocked
 
Reported: 2011-02-21 22:15 UTC by Chris Pitman
Modified: 2011-06-23 15:43 UTC (History)
4 users (show)

Fixed In Version: qpid-cpp-0.9.1079953
Doc Type: Bug Fix
Doc Text:
Cause: When rerouting orphaned or rejected messages to a queues alternate-exchange, if there were no matching bindings the broker did not then consider the exchanges alternate-exchange. Consequence: Orphaned or rejected messages were dropped rather than following a legitimately defined path. Fix: Modified broker to test whether the rerouting through the queues alternate-exchange was successful and if not attempt rerouting to that exchanges alternate-exchange if defined. Result: Orphaned/rejected messages no longer dropped if the exchange they are routed to first has an alternate exchange.
Clone Of:
Environment:
Last Closed: 2011-06-23 15:43:19 UTC
Target Upstream Version:
Embargoed:


Attachments (Terms of Use)
Test Script (520 bytes, application/x-shellscript)
2011-02-21 22:15 UTC, Chris Pitman
no flags Details


Links
System ID Private Priority Status Summary Last Updated
Red Hat Product Errata RHEA-2011:0890 0 normal SHIPPED_LIVE Red Hat Enterprise MRG Messaging 2.0 Release 2011-06-23 15:42:41 UTC

Description Chris Pitman 2011-02-21 22:15:00 UTC
Description of problem:
When a queue is deleted, any messages within the queue are delivered to that queue's alternate exchange.  If no bindings in that exchange match, then the messages are dropped.  This happens even if the exchange has and alternate exchange.

This makes it impossible for messages rerouted after an auto-delete to ever go in to a dead-letter queue, which is the actual use case. 

Version-Release number of selected component (if applicable):
qpid-tools-0.7.946106-11.el5
qpid-cpp-client-0.7.946106-24_ptc_hotfix_4.el5
qpid-cpp-client-ssl-0.7.946106-24_ptc_hotfix_4.el5
qpid-cpp-mrg-debuginfo-0.7.946106-24_ptc_hotfix_4.el5
qpid-cpp-client-devel-0.7.946106-24_ptc_hotfix_4.el5
qpid-cpp-client-rdma-0.7.946106-24_ptc_hotfix_4.el5
qpid-cpp-server-store-0.7.946106-24_ptc_hotfix_4.el5
qpid-cpp-server-rdma-0.7.946106-24_ptc_hotfix_4.el5
python-qpid-0.7.946106-14.el5
rh-qpid-cpp-tests-0.7.946106-24_ptc_hotfix_4.el5
qpid-cpp-server-devel-0.7.946106-24_ptc_hotfix_4.el5
qpid-cpp-server-0.7.946106-24_ptc_hotfix_4.el5
qpid-cpp-server-ssl-0.7.946106-24_ptc_hotfix_4.el5
qpid-cpp-client-devel-docs-0.7.946106-24_ptc_hotfix_4.el5
qpid-cpp-server-cluster-0.7.946106-24_ptc_hotfix_4.el5


How reproducible:
Always

Steps to Reproduce:
1. Start a broker on 5672 with authentication off
2. Run attached script
  
Actual results:
No messages are drained from "Alternate"

Expected results:
One message is drained from "Alternate"

Comment 1 Chris Pitman 2011-02-21 22:15:35 UTC
Created attachment 480007 [details]
Test Script

Comment 2 Gordon Sim 2011-03-03 12:46:30 UTC
Fixed upstream in r1076604.

Comment 3 Gordon Sim 2011-03-07 12:35:20 UTC
    Technical note added. If any revisions are required, please edit the "Technical Notes" field
    accordingly. All revisions will be proofread by the Engineering Content Services team.
    
    New Contents:
Cause:
When rerouting orphaned or rejected messages to a queues alternate-exchange, if there were no matching bindings the broker did not then consider the exchanges alternate-exchange.

Consequence:
Orphaned or rejected messages were dropped rather than following a legitimately defined path.

Fix:
Modified broker to test whether the rerouting through the queues alternate-exchange was successful and if not attempt rerouting to that exchanges alternate-exchange if defined.

Result:
Orphaned/rejected messages no longer dropped if the exchange they are routed to first has an alternate exchange.

Comment 4 Petr Matousek 2011-04-06 09:01:09 UTC
This issue has been fixed

Verified on RHEL4.9, RHEL5.6 and RHEL6.1, architectures: i386, x86_64

packages installed:
python-qpid-0.10-1.el5
qpid-cpp-client-devel-docs-0.10-1.el5
qpid-qmf-0.10-2.el5
qpid-cpp-server-devel-0.10-1.el5
qpid-cpp-server-xml-0.10-1.el5
qpid-java-common-0.10-1.el5
qpid-java-example-0.10-1.el5
qpid-cpp-server-0.10-1.el5
python-qpid-qmf-0.10-2.el5
qpid-cpp-client-ssl-0.10-1.el5
qpid-qmf-devel-0.10-2.el5
qpid-cpp-server-store-0.10-1.el5
qpid-cpp-server-cluster-0.10-1.el5
qpid-java-client-0.10-1.el5
qpid-cpp-client-0.10-1.el5
qpid-cpp-client-devel-0.10-1.el5
qpid-tools-0.10-1.el5
qpid-cpp-server-ssl-0.10-1.el5

-> VERIFIED

Comment 5 errata-xmlrpc 2011-06-23 15:43:19 UTC
An advisory has been issued which should help the problem
described in this bug report. This report is therefore being
closed with a resolution of ERRATA. For more information
on therefore solution and/or where to find the updated files,
please follow the link below. You may reopen this bug report
if the solution does not work for you.

http://rhn.redhat.com/errata/RHEA-2011-0890.html


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