-----------------------------------------------------------
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

Reply via email to