qpid-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Gordon Sim <g...@redhat.com>
Subject Re: Request for inclusion in 0.32: QPID-4710: [AMQP 1.0] Support for transactions in qpid::messaging C++ client.
Date Tue, 03 Mar 2015 13:43:47 GMT
On 02/27/2015 04:49 PM, Alan Conway wrote:
> gsim could you review this please?

Looks good to me. All my proton python tx examples pass against it also. 
I'd be in favour of merging it to 0.32 branch.

>
> ------------------------------------------------------------------------
> r1662743 | aconway | 2015-02-27 11:37:06 -0500 (Fri, 27 Feb 2015) | 59
> lines
>
> QPID-4710: [AMQP 1.0] Support for transactions in qpid::messaging C++
> client.
>
> Implements the "transactional retire and settle immediately" option for
> transactions as specified in AMQP 1.0 in the qpid::messaging C++ client.
>
> NOTE: Transactions over AMQP 1.0 require proton 0.9 or greater.  With
> older
> versions, attempting a transactions over AMQP 1.0 will raise a
> link-detached
> exception "Node not found: tx-transaction"
>
> 1. Added descriptor list to Variant with support in Encoder and PnData.
>
> Required to support transactions, need to be able to create described
> lists.
> Variant changes are source and binary compatible.
>
> A Variant now has a Variant::List of descripors which can be numeric or
> string.
> Nested descriptors are implemented by putting multiple descriptors in
> the list.
>
> Other minor changes:
> - Variant refactor: don't delete impl on every assignment.
> - Add Variant constructors that take a string encoding.
>    (new constructors, not defaulted arguments, so the change is binary
> and source compatible.)
> - Growable buffer support for Encoder.
> - Printing described Variant prints descriptors in form @descriptor
> value
>
> 2. Added transaction support to AMQP 1.0 client code
>
> Added messaging/amqp/Transaction.h,cpp: transaction logic
> - communicate with coordinator, send declare/dischange messages.
> - add tx state info to transfers and acknowledgements.
> - Sync session after discharge.
> - A transactional session automatically acks any message retrieved by
> fetch/get
>    to bring them into the transaction. This is consistent the 0-10
> client.
>
> Minor fixes to existing client code:
> - Fix use of pn_drain API in C++ client to work with C++ and Java
> brokers.
> - Make amqp::Exception derive from qpid::Exception
>
> 3. Fixes to existing broker code:
>
> - Incoming.cpp fix: start async completion before processing message.
> - Delay accept of dischage message till commit is complete.
> - newSession - handle failover during session creation.
>
> 4. Added tests
>
> interop_tests.py: transaction tests that can run against an external
> broker, see comments.
>
> ha_tests.py: Enable transaction tests over AMQP 1.0.
>
> Minor test fixes:
> - brokertest.py don't set default logging if QPID_LOG env vars set.
> - brokertest.py Pass kwargs to broker() create function.
> - qpid-receive: capacity should never be larger than message count.
> - Accept user:pass as well as user/pass in Url.
> - brokertest.py: Always do a ready() check on all brokers.
>
> If proton < 0.9 is used, transaction tests will be skipped or will
> downgrade to
> the amqp0-10 protocol with a printed warning.
>
> ------------------------------------------------------------------------
>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: dev-unsubscribe@qpid.apache.org
> For additional commands, e-mail: dev-help@qpid.apache.org
>


---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@qpid.apache.org
For additional commands, e-mail: dev-help@qpid.apache.org


Mime
View raw message