Red Hat Bugzilla – Bug 550151
If an XML exchange is declared durable, the broker crashes on recovery
Last modified: 2018-10-27 08:52:11 EDT
+++ This bug was initially created as a clone of Bug #501749 +++ Description of problem: If an exchange is declared as durable, the broker will fail on subsequent recovery. This is true of any exchange type supplied by a plug-in. Version-Release number of selected component (if applicable): 1.1.1 How reproducible: 100% Steps to Reproduce: 1. Start a broker with the store and xml modules loaded. 2. execute the command "qpid-config add exchange xml myxml" 3. restart the broker Actual results: The broker will fail with: terminate called after throwing an instance of 'qpid::broker::UnknownExchangeTypeException' Expected results: Success, and recovery of the "myxml" exchange. Additional info: --- Additional comment from tross@redhat.com on 2009-05-20 11:25:53 EDT --- This is caused by the fact that the broker recovers the store before it loads plug-in modules. At the time the xml exchange is recovered, the type is as yet unknown. --- Additional comment from tross@redhat.com on 2009-05-20 11:28:54 EDT --- Sorry, here are the correct steps to reproduce: Steps to Reproduce: 1. Start a broker with the store and xml modules loaded. 2. execute the command "qpid-config add exchange xml myxml --durable" 3. restart the broker --- Additional comment from gsim@redhat.com on 2009-05-21 08:45:51 EDT --- Added handling for this case as r777096 on qpid trunk and r3390 on store. Moved registration for the xml- and replication- exchanges to earlyInitialise() to allow instances of these types to be recovered (r777073). --- Additional comment from iboverma@redhat.com on 2009-10-06 12:17:15 EDT --- Move to 1.3.
Target for first MRG-M 1.2 errata (internal release 1.2.2)
The store r.3390 made it to the 1.2 branch, however r.777096 did not. Those changes in r.777096 which change the order of the loading of XmlExchange and ReplicationExchange from initialize() to earlyInitialize() have been backported to the 1.2 branch in the MRG git repo.
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: C: create a new durable exchange of a type supplied by a plugin (such as xml), then stop and restart the broker C: the broker will terminate after throwing an instance of 'qpid::broker::UnknownExchangeTypeException' F: reorder the startup sequence so that the plugin modules are loaded before the store is recovered R: the new exchange is now recognized and recovered successfully and the broker starts up
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/RHSA-2010-0756.html