> On Nov. 8, 2013, 7:21 p.m., Alan Conway wrote: > > This needs a bit more of HA work. > > > > Need to keep exchange it in memory on the backup until deleted by primary > > or backup is promoted. See markInUse/releaseFromUse in > > QueueReplicator::QueueReplicator BrokerReplicator::disconnectedExchange to > > see how this was done for Queues. The issue is: > > - Prevent race conditions: backup must not auto-delete before primary does. > > - Re-enable auto-delete semantics when the backup is disconnected from > > primary. > > (disconnectExchange is badly named - should be disconnectQueueReplicator as > > in this context its secondary that QRs are also exchanges.)
Unlike an autodeleted queue, there are no messages associated with an autodeleted exchange. I think this means that there is no real issue if the backup deletes the exchange first. Provided the QMF event for deletion on the primary doesn't cause anything to break - which it doesn't as the BrokerReplicator tests to see if the exchange exists or not - I think it is safe(?). Am I missing anything? - Gordon ----------------------------------------------------------- This is an automatically generated e-mail. To reply, visit: https://reviews.apache.org/r/15273/#review28562 ----------------------------------------------------------- On Nov. 6, 2013, 5:50 p.m., Gordon Sim wrote: > > ----------------------------------------------------------- > This is an automatically generated e-mail. To reply, visit: > https://reviews.apache.org/r/15273/ > ----------------------------------------------------------- > > (Updated Nov. 6, 2013, 5:50 p.m.) > > > Review request for qpid. > > > Bugs: QPID-5301 > https://issues.apache.org/jira/browse/QPID-5301 > > > Repository: qpid > > > Description > ------- > > Exchanges can now be set to be autodeleted. For 0-10 this means they are > deleted as soon as the binding count drops to 0 (this does mean that an > existing sender to that exchange will get an error on the next message they > try to send, but this is as the spec dictates and there is no good way to > track a sender in 0-10). For 1.0 there is an additional constraint that there > are no active sender links to the exchange. > > > Diffs > ----- > > /trunk/qpid/cpp/src/qpid/broker/Broker.h 1538754 > /trunk/qpid/cpp/src/qpid/broker/Broker.cpp 1538754 > /trunk/qpid/cpp/src/qpid/broker/DirectExchange.h 1538754 > /trunk/qpid/cpp/src/qpid/broker/DirectExchange.cpp 1538754 > /trunk/qpid/cpp/src/qpid/broker/Exchange.h 1538754 > /trunk/qpid/cpp/src/qpid/broker/Exchange.cpp 1538754 > /trunk/qpid/cpp/src/qpid/broker/ExchangeRegistry.h 1538754 > /trunk/qpid/cpp/src/qpid/broker/ExchangeRegistry.cpp 1538754 > /trunk/qpid/cpp/src/qpid/broker/FanOutExchange.h 1538754 > /trunk/qpid/cpp/src/qpid/broker/FanOutExchange.cpp 1538754 > /trunk/qpid/cpp/src/qpid/broker/HeadersExchange.h 1538754 > /trunk/qpid/cpp/src/qpid/broker/HeadersExchange.cpp 1538754 > /trunk/qpid/cpp/src/qpid/broker/Link.cpp 1538754 > /trunk/qpid/cpp/src/qpid/broker/SessionAdapter.cpp 1538754 > /trunk/qpid/cpp/src/qpid/broker/TopicExchange.h 1538754 > /trunk/qpid/cpp/src/qpid/broker/TopicExchange.cpp 1538754 > /trunk/qpid/cpp/src/qpid/broker/amqp/NodeProperties.h 1538754 > /trunk/qpid/cpp/src/qpid/broker/amqp/NodeProperties.cpp 1538754 > /trunk/qpid/cpp/src/qpid/broker/amqp/Session.cpp 1538754 > /trunk/qpid/cpp/src/qpid/broker/amqp/Topic.cpp 1538754 > /trunk/qpid/cpp/src/qpid/ha/BrokerReplicator.h 1538754 > /trunk/qpid/cpp/src/qpid/ha/BrokerReplicator.cpp 1538754 > /trunk/qpid/cpp/src/qpid/ha/FailoverExchange.h 1538754 > /trunk/qpid/cpp/src/qpid/ha/FailoverExchange.cpp 1538754 > /trunk/qpid/cpp/src/qpid/ha/PrimaryTxObserver.cpp 1538754 > /trunk/qpid/cpp/src/qpid/ha/QueueReplicator.h 1538754 > /trunk/qpid/cpp/src/qpid/ha/QueueReplicator.cpp 1538754 > /trunk/qpid/cpp/src/qpid/management/ManagementDirectExchange.cpp 1538754 > /trunk/qpid/cpp/src/qpid/management/ManagementTopicExchange.h 1538754 > /trunk/qpid/cpp/src/qpid/management/ManagementTopicExchange.cpp 1538754 > /trunk/qpid/cpp/src/qpid/xml/XmlExchange.h 1538754 > /trunk/qpid/cpp/src/qpid/xml/XmlExchange.cpp 1538754 > /trunk/qpid/cpp/src/qpid/xml/XmlExchangePlugin.cpp 1538754 > /trunk/qpid/cpp/src/tests/ExchangeTest.cpp 1538754 > /trunk/qpid/cpp/src/tests/legacystore/SimpleTest.cpp 1538754 > /trunk/qpid/cpp/src/tests/misc.py 1538754 > /trunk/qpid/java/test-profiles/python_tests/Java010PythonExcludes 1538754 > /trunk/qpid/tests/src/py/qpid_tests/broker_0_10/exchange.py 1538754 > > Diff: https://reviews.apache.org/r/15273/diff/ > > > Testing > ------- > > Added tests for autodelete and all existing tests pass. > > > Thanks, > > Gordon Sim > >
