> On July 11, 2013, 10:04 a.m., Gordon Sim wrote: > > /trunk/qpid/cpp/src/qpid/broker/TransactionObserver.h, line 59 > > <https://reviews.apache.org/r/12289/diff/4/?file=320029#file320029line59> > > > > Is there a reason not to have QueuePtr and Message as the two arguments > > for dequeue as well as enqueue (and I do prefer those names as I think they > > are clearer in the transactional context). > > > > The Message would allow access to either sequence or replication id (or > > any other aspect that may be necessary). > > Alan Conway wrote: > Yes, I'm driving this from the TxBuffer and TxOps. The TxAccept op > doesn't have message pointers, just DeliveryRecords. We can get the queue > position and replication ID from those. We could use that to look up the > message in the queue but in the case of HA that would be wasted effort since > HA only needs to know the replication ID. > > The names follow the same pattern as the TxOps, but I've no objection to > changing them.
Looking good from fairly cursory inspection. I'm much happier with the observer interfaces now. - Gordon ----------------------------------------------------------- This is an automatically generated e-mail. To reply, visit: https://reviews.apache.org/r/12289/#review23009 ----------------------------------------------------------- On July 31, 2013, 1:34 p.m., Alan Conway wrote: > > ----------------------------------------------------------- > This is an automatically generated e-mail. To reply, visit: > https://reviews.apache.org/r/12289/ > ----------------------------------------------------------- > > (Updated July 31, 2013, 1:34 p.m.) > > > Review request for qpid, Andrew Stitcher and Gordon Sim. > > > Bugs: QPID-4327 > https://issues.apache.org/jira/browse/QPID-4327 > > > Repository: qpid > > > Description > ------- > > QPID-4327: HA TX transactions: basic replication. > > On primary a PrimaryTxObserver observes a transaction's TxBuffer and generates > transaction events on a tx-replication-queue. On the backup a TxReplicator > receives the events and constructs a TxBuffer equivalent to the one in the > primary. > > Unfinished: > - Primary does not wait for backups to prepare() before committing. > - All connected backups are assumed to be in the transaction, there are race > conditions around brokers joining/leavinv where this assumption is invalid. > - Need more tests. > > QPID-4327: HA get rid of Primary::get() singleton. > > > QPID-4327: Added TransactionObserver interface. > > Added TransactionObserver interface, called at each point in a transaction's > lifecycle. Currently only a single observer can be associated with a > transaction. > > Added startTx, startDtx to BrokerObserver so plugins can observe transactions > starting and set a TransactionObserver. > > QPID-4327: Renamed ConfigurationObserver as BrokerObserver. > > This class really was intended as a observer for broker-level events which > includes configuration but may in future include other non-configuration > events > such as transactions. > > QPID-4327: Refactor to simplify TxAccept. > > Removed un-necessary RangeOps layers. > > QPID-4327: Optimize brokertest.ready() to improve test runtimes. > > > Diffs > ----- > > /trunk/qpid/cpp/include/qpid/framing/BufferTypes.h PRE-CREATION > /trunk/qpid/cpp/src/CMakeLists.txt 1508523 > /trunk/qpid/cpp/src/qpid/broker/Broker.h 1508523 > /trunk/qpid/cpp/src/qpid/broker/Broker.cpp 1508523 > /trunk/qpid/cpp/src/qpid/broker/BrokerObserver.h PRE-CREATION > /trunk/qpid/cpp/src/qpid/broker/BrokerObservers.h PRE-CREATION > /trunk/qpid/cpp/src/qpid/broker/ConfigurationObserver.h 1508523 > /trunk/qpid/cpp/src/qpid/broker/ConfigurationObservers.h 1508523 > /trunk/qpid/cpp/src/qpid/broker/DtxAck.h 1508523 > /trunk/qpid/cpp/src/qpid/broker/ExchangeRegistry.cpp 1508523 > /trunk/qpid/cpp/src/qpid/broker/MessageStoreModule.h 1508523 > /trunk/qpid/cpp/src/qpid/broker/MessageStoreModule.cpp 1508523 > /trunk/qpid/cpp/src/qpid/broker/Queue.h 1508523 > /trunk/qpid/cpp/src/qpid/broker/Queue.cpp 1508523 > /trunk/qpid/cpp/src/qpid/broker/QueueRegistry.cpp 1508523 > /trunk/qpid/cpp/src/qpid/broker/RecoveredDequeue.h 1508523 > /trunk/qpid/cpp/src/qpid/broker/RecoveredEnqueue.h 1508523 > /trunk/qpid/cpp/src/qpid/broker/SemanticState.cpp 1508523 > /trunk/qpid/cpp/src/qpid/broker/TransactionObserver.h PRE-CREATION > /trunk/qpid/cpp/src/qpid/broker/TxAccept.h 1508523 > /trunk/qpid/cpp/src/qpid/broker/TxAccept.cpp 1508523 > /trunk/qpid/cpp/src/qpid/broker/TxBuffer.h 1508523 > /trunk/qpid/cpp/src/qpid/broker/TxBuffer.cpp 1508523 > /trunk/qpid/cpp/src/qpid/broker/TxOp.h 1508523 > /trunk/qpid/cpp/src/qpid/ha/Backup.h 1508523 > /trunk/qpid/cpp/src/qpid/ha/BrokerReplicator.h 1508523 > /trunk/qpid/cpp/src/qpid/ha/BrokerReplicator.cpp 1508523 > /trunk/qpid/cpp/src/qpid/ha/Event.h PRE-CREATION > /trunk/qpid/cpp/src/qpid/ha/Event.cpp PRE-CREATION > /trunk/qpid/cpp/src/qpid/ha/FailoverExchange.cpp 1508523 > /trunk/qpid/cpp/src/qpid/ha/HaBroker.h 1508523 > /trunk/qpid/cpp/src/qpid/ha/HaBroker.cpp 1508523 > /trunk/qpid/cpp/src/qpid/ha/Membership.h 1508523 > /trunk/qpid/cpp/src/qpid/ha/Membership.cpp 1508523 > /trunk/qpid/cpp/src/qpid/ha/Primary.h 1508523 > /trunk/qpid/cpp/src/qpid/ha/Primary.cpp 1508523 > /trunk/qpid/cpp/src/qpid/ha/PrimaryTxObserver.h PRE-CREATION > /trunk/qpid/cpp/src/qpid/ha/PrimaryTxObserver.cpp PRE-CREATION > /trunk/qpid/cpp/src/qpid/ha/QueueReplicator.h 1508523 > /trunk/qpid/cpp/src/qpid/ha/QueueReplicator.cpp 1508523 > /trunk/qpid/cpp/src/qpid/ha/QueueSnapshots.h 1508523 > /trunk/qpid/cpp/src/qpid/ha/RemoteBackup.h 1508523 > /trunk/qpid/cpp/src/qpid/ha/RemoteBackup.cpp 1508523 > /trunk/qpid/cpp/src/qpid/ha/ReplicatingSubscription.h 1508523 > /trunk/qpid/cpp/src/qpid/ha/ReplicatingSubscription.cpp 1508523 > /trunk/qpid/cpp/src/qpid/ha/StatusCheck.cpp 1508523 > /trunk/qpid/cpp/src/qpid/ha/TxReplicator.h PRE-CREATION > /trunk/qpid/cpp/src/qpid/ha/TxReplicator.cpp PRE-CREATION > /trunk/qpid/cpp/src/qpid/ha/makeMessage.h 1508523 > /trunk/qpid/cpp/src/qpid/ha/makeMessage.cpp 1508523 > /trunk/qpid/cpp/src/qpid/ha/types.h 1508523 > /trunk/qpid/cpp/src/qpid/ha/types.cpp 1508523 > /trunk/qpid/cpp/src/tests/BrokerFixture.h 1508523 > /trunk/qpid/cpp/src/tests/CMakeLists.txt 1508523 > /trunk/qpid/cpp/src/tests/MessagingFixture.h 1508523 > /trunk/qpid/cpp/src/tests/TransactionObserverTest.cpp PRE-CREATION > /trunk/qpid/cpp/src/tests/TxMocks.h 1508523 > /trunk/qpid/cpp/src/tests/brokertest.py 1508523 > /trunk/qpid/cpp/src/tests/cluster_test.cpp PRE-CREATION > /trunk/qpid/cpp/src/tests/ha_test.py 1508523 > /trunk/qpid/cpp/src/tests/ha_tests.py 1508523 > /trunk/qpid/cpp/src/tests/test_env.sh.in 1508523 > /trunk/qpid/cpp/src/tests/test_store.cpp 1508523 > /trunk/qpid/cpp/src/tests/test_tools.h 1508523 > > Diff: https://reviews.apache.org/r/12289/diff/ > > > Testing > ------- > > Basic tx replication appears to be working, used temporary log statements to > prove the messages were being processed by the TxBuffer on the backup and not > just being sent by the normal means. > > > Thanks, > > Alan Conway > >