You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@qpid.apache.org by Gordon Sim <gs...@redhat.com> on 2015/03/03 14:43:47 UTC

Re: Request for inclusion in 0.32: QPID-4710: [AMQP 1.0] Support for transactions in qpid::messaging C++ client.

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


Re: Request for inclusion in 0.32: QPID-4710: [AMQP 1.0] Support for transactions in qpid::messaging C++ client.

Posted by Justin Ross <ju...@gmail.com>.
This change is way too big to land at this point.  Work of this kind needs
to land on trunk before alpha, or before beta with an exception.  I think
it should wait for the next release.

On Tue, Mar 3, 2015 at 8:43 AM, Gordon Sim <gs...@redhat.com> wrote:

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