----------------------------------------------------------- This is an automatically generated e-mail. To reply, visit: https://reviews.apache.org/r/9258/ -----------------------------------------------------------
(Updated Feb. 7, 2013, 6:50 p.m.) Review request for qpid, Gordon Sim, Kenneth Giusti, and Ted Ross. Changes ------- This is a new tack: instead of relying the same calculation yielding the same result (where have I heard that before?) The primary now decides whether a queue is replicated or not, and adds an explicit qpid.replicate to the arguments. The backup just does what it says in qpid.replicate. I added QueueSettings::declaredExclusive to provide a reliable indication, set before ConfigurationObserver::queueCreate. It had some ripples but I think it's healthier now. If you want you can just focus on the changes I made under broker to make sure I don't break something. Summary (updated) ----------------- QPID-4555: HA Add QueueSettings::declaredExclusive for exclusive queues. Description (updated) ------- QPID-4555: HA Add QueueSettings::declaredExclusive for exclusive queues. This is set when the queue is created, before calling ConfigurationObserver::queueCreate, and does not change thereafter. The existing Queue::owner not set until after ConfigurationObserver::queueCreate and does change as ownership can be released and acquired. QPID-4555: HA Primary sets explicit qpid.replicate in Queue and Exchange arguments. Previously both Primary and Backup would calculate the qpid.replicate value independently, assuming the result would be the same. In the case of exclusive queues, the exclusivity can change over time so its possible that primary and backup won't agree. Now only Primary does the calculation with exclusive, auto-delete etc. and puts an explicity qpid.replicate in the queue or event arguments. Backup uses the value set by primary. QPID-4555: HA Check for backup ready when new backup joins. This test was missing so if there were no backed-up queues the backup would never be marked ready. It was workig because of a separte bug: auto-delete/exclusive queues were being replicated incorrectly so there were always replicated queues (temp queues created by qpid-ha) QPID-4555: HA Don't shut down on deleting an exchange that is in use as an alternate. Previously threw an exception in this case which shut down the broker. Log warning instead, this is not a fatal event. Diffs (updated) ----- /trunk/qpid/cpp/src/qpid/broker/QueueSettings.h 1441163 /trunk/qpid/cpp/src/qpid/broker/QueueSettings.cpp 1441163 /trunk/qpid/cpp/src/qpid/broker/SessionAdapter.cpp 1441163 /trunk/qpid/cpp/src/qpid/ha/Backup.cpp 1441163 /trunk/qpid/cpp/src/qpid/ha/BrokerReplicator.h 1441163 /trunk/qpid/cpp/src/qpid/ha/BrokerReplicator.cpp 1441163 /trunk/qpid/cpp/src/qpid/ha/HaBroker.h 1441163 /trunk/qpid/cpp/src/qpid/ha/HaBroker.cpp 1441163 /trunk/qpid/cpp/src/qpid/ha/Primary.h 1441163 /trunk/qpid/cpp/src/qpid/ha/Primary.cpp 1441163 /trunk/qpid/cpp/src/qpid/ha/RemoteBackup.h 1441163 /trunk/qpid/cpp/src/qpid/ha/RemoteBackup.cpp 1441163 /trunk/qpid/cpp/src/qpid/ha/ReplicationTest.h 1441163 /trunk/qpid/cpp/src/qpid/ha/ReplicationTest.cpp 1441163 /trunk/qpid/cpp/src/tests/ha_tests.py 1441163 Diff: https://reviews.apache.org/r/9258/diff/ Testing ------- make check ha tests running 2 hours now without failure. Thanks, Alan Conway
