Bug 873883 - Dynamic federation bindings can become out-of-sync
Dynamic federation bindings can become out-of-sync
Status: CLOSED ERRATA
Product: Red Hat Enterprise MRG
Classification: Red Hat
Component: qpid-cpp (Show other bugs)
Development
Unspecified Unspecified
high Severity unspecified
: 3.0
: ---
Assigned To: Chuck Rolke
Zdenek Kraus
: OtherQA, Patch
Depends On:
Blocks: 698367
  Show dependency treegraph
 
Reported: 2012-11-06 16:49 EST by Jason Dillaman
Modified: 2014-09-24 11:05 EDT (History)
5 users (show)

See Also:
Fixed In Version: qpid-cpp-0.18-9
Doc Type: Bug Fix
Doc Text:
When dynamic federation was configured using an existing queue, it was possible for the bindings on the source exchange to become out-of-sync with the destination exchange if there was an interruption in the bridge (for example: connectivity loss, session error, etc). An unbind event occurred on the destination exchange while the bridge was detached. Normally, dynamic federation would utilize an auto-delete queue for the bridge queue. The missing unbind events were inconsequential because the queue would be deleted upon bridge interruption. However, using dynamic federation with an existing queue, it was possible the queue would not be auto-deleted. In this scenario, when the connection was interrupted, the queue stayed alive and the bindings were never deleted. This behavior caused the propagated queue bindings to exist beyond their intended lifetime, and interfere with the creation of future propagated bindings. The fix tracks the state of propagated bindings for each Session, and ensures that propagated bindings are torn down properly. Dynamic bindings are now deleted, even when the connection over which the binding was created is interrupted. The broker has no stale dynamic bindings to interfere with the creation of new federated routes when the federation cycle is restarted.
Story Points: ---
Clone Of:
Environment:
Last Closed: 2014-09-24 11:05:28 EDT
Type: Bug
Regression: ---
Mount Type: ---
Documentation: ---
CRM:
Verified Versions:
Category: ---
oVirt Team: ---
RHEL 7.3 requirements from Atomic Host:


Attachments (Terms of Use)
Patch to auto-unbind propagated bindings when destination broker disconnects (6.03 KB, patch)
2012-11-09 10:19 EST, Jason Dillaman
no flags Details | Diff
Updated patch to auto-unbind propagated bindings when destination broker disconnects (11.80 KB, patch)
2012-11-10 16:11 EST, Jason Dillaman
no flags Details | Diff


External Trackers
Tracker ID Priority Status Summary Last Updated
Apache JIRA QPID-3777 None None None 2012-11-10 06:41:30 EST

  None (edit)
Description Jason Dillaman 2012-11-06 16:49:21 EST
Description of problem:
When dynamic federation is configured using an existing queue, it is possible for the bindings on the source exchange to become out-of-sync with the destination exchange if there is an interruption in the bridge (i.e. connectivity loss, session error, etc) and an unbind event occurs on the destination exchange while the bridge is detached.  

Normally dynamic federation would utilize an auto-delete queue for the bridge queue, so the missing unbind events are inconsequential since the queue would be deleted upon an interruption in the bridge.  However, using dynamic federation with an existing queue allows full control over the queue properties and enables support for message acks and is therefore highly desirable.

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

How reproducible:
100%

Steps to Reproduce:
1. Create a bridge queue on the source broker
2. Create a dynamic federated route between a destination broker exchange and source broker exchange, using the existing bridge queue
3. Create a binding on the destination exchange to propagate the binding to the source exchange
4. Disconnect the source and destination brokers
5. While source and destination brokers are disconnected, unbind the previously created binding

Actual results:
The binding is never removed on the source exchange

Expected results:
The binding is removed on the source exchange either when the bridge was initially lost or shortly after the source and destination bridges reconnect

Additional info:
Comment 1 Jason Dillaman 2012-11-09 10:19:38 EST
Created attachment 641618 [details]
Patch to auto-unbind propagated bindings when destination broker disconnects

Patch also addresses need described in QPID-3777
Comment 4 Chuck Rolke 2012-11-10 06:41:30 EST
The self test code in the attachment passes even without the rest of the patch.
Comment 6 Jason Dillaman 2012-11-10 16:11:10 EST
Created attachment 642320 [details]
Updated patch to auto-unbind propagated bindings when destination broker disconnects
Comment 7 Chuck Rolke 2012-11-12 13:12:37 EST
The second patch (attachment 642320 [details]) passes federation self test
Comment 11 Zdenek Kraus 2013-07-01 06:37:55 EDT
This fix looks fine.


This was tested on RHEL 5.9, 6.4 and i686, x86_64 with packages:

python-qpid-0.22-4
python-qpid-qmf-0.22-5
qpid-cpp-client-0.22-6
qpid-cpp-client-devel-0.22-6
qpid-cpp-client-devel-docs-0.22-6
qpid-cpp-client-rdma-0.22-6
qpid-cpp-client-ssl-0.22-6
qpid-cpp-server-0.22-6
qpid-cpp-server-devel-0.22-6
qpid-cpp-server-ha-0.22-6
qpid-cpp-server-rdma-0.22-6
qpid-cpp-server-ssl-0.22-6
qpid-cpp-server-store-0.22-6
qpid-cpp-server-xml-0.22-6
qpid-proton-c-0.4-2.2
qpid-qmf-0.22-5
qpid-tools-0.22-2
Comment 12 Jared MORGAN 2014-09-17 17:34:02 EDT
This issue was discovered in a development build. In hindsight, this issue therefore does not require Release Notes because a customer would never have encountered this issue. Removing from 3.0 Release Notes.
Comment 13 errata-xmlrpc 2014-09-24 11:05:28 EDT
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/RHEA-2014-1296.html

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