Qpid
  1. Qpid
  2. QPID-24

Extend Qpid transaction functionality to support distributed transactions (JTA)

    Details

    • Type: Improvement Improvement
    • Status: Resolved
    • Priority: Major Major
    • Resolution: Fixed
    • Affects Version/s: None
    • Fix Version/s: 0.15
    • Component/s: Java Broker, Java Client
    • Labels:
      None

      Description

      Our current transaction code does not support JTA and XA. Whilst this functionality is not required for JMS compliance, it is suported by comparable products (ActiveMQ, SonicMQ, IBM MQ Series) and we have had questions about distributed transaction support from our users.

      See section 8 of the JMS specification for details.

        Issue Links

          Activity

          Hide
          Arnaud Simon added a comment -

          The AMQP transaction SIG has reached consensus on defining dtx classes. All the documents are available on the transaction SIG wiki page: https://wiki.108.redhat.com/wiki/index.php/AMQP:Transaction_SIG
          This should be voted during the next PMC and dtx classes should be part of the next AMQP specs.
          The C++ broker already implements dtx support.
          I would like to now concentrate on the Java broker to extend the current solution with dtx capabilities. I really think that java and C++ code sources should be as similar as possible. This is why I would like us to agree on common java/C++ interfaces for transaction and persistence stores. When agreed, I am volunteer to refactor the existing java code source and to implement dtx support.

          Show
          Arnaud Simon added a comment - The AMQP transaction SIG has reached consensus on defining dtx classes. All the documents are available on the transaction SIG wiki page: https://wiki.108.redhat.com/wiki/index.php/AMQP:Transaction_SIG This should be voted during the next PMC and dtx classes should be part of the next AMQP specs. The C++ broker already implements dtx support. I would like to now concentrate on the Java broker to extend the current solution with dtx capabilities. I really think that java and C++ code sources should be as similar as possible. This is why I would like us to agree on common java/C++ interfaces for transaction and persistence stores. When agreed, I am volunteer to refactor the existing java code source and to implement dtx support.
          Hide
          Mark Little added a comment -

          Depends what you mean by this. However, if you're looking for language neutral XA support then it may be worth checking out the OTS.

          Show
          Mark Little added a comment - Depends what you mean by this. However, if you're looking for language neutral XA support then it may be worth checking out the OTS.
          Hide
          Marnie McCormack added a comment -

          Moving unresolved JIRAs from M2 to M3, in preparation for M2 release

          Show
          Marnie McCormack added a comment - Moving unresolved JIRAs from M2 to M3, in preparation for M2 release
          Hide
          Marnie McCormack added a comment -

          Descoping items not being worked on for M4 into Unknown Fix Version for now

          Show
          Marnie McCormack added a comment - Descoping items not being worked on for M4 into Unknown Fix Version for now
          Hide
          Rob Godfrey added a comment -

          I've implemented the AMQP 0-10 DTX operations in the Java broker and tested against the existing xa tests in both Java and Python (note some of the Python test are still excluded because they depend on the C++ broker behaviour of excluded acquired messages from queue counts... if the tests are adapted to not depend on this behaviour the Java broker passes against them to).

          Only took 5 and a half years to resolve this one...

          Show
          Rob Godfrey added a comment - I've implemented the AMQP 0-10 DTX operations in the Java broker and tested against the existing xa tests in both Java and Python (note some of the Python test are still excluded because they depend on the C++ broker behaviour of excluded acquired messages from queue counts... if the tests are adapted to not depend on this behaviour the Java broker passes against them to). Only took 5 and a half years to resolve this one...
          Hide
          Rob Godfrey added a comment -

          Hi robbie - can you review this for me?

          Show
          Rob Godfrey added a comment - Hi robbie - can you review this for me?
          Hide
          Rob Godfrey added a comment -

          Check-in is this revision...

          http://svn.apache.org/viewvc?rev=1292984&view=rev

          confused by the low JIRA number I used AMQP-24 rather than QPID-24 in the commit message

          AMQP-24 (http://tools.oasis-open.org/issues/browse/AMQP-24) is infinitely less exciting

          Show
          Rob Godfrey added a comment - Check-in is this revision... http://svn.apache.org/viewvc?rev=1292984&view=rev confused by the low JIRA number I used AMQP-24 rather than QPID-24 in the commit message AMQP-24 ( http://tools.oasis-open.org/issues/browse/AMQP-24 ) is infinitely less exciting
          Hide
          Robbie Gemmell added a comment -

          Looked over the changes, seem reasonable to me.

          Resolving oldest open JIRA

          Show
          Robbie Gemmell added a comment - Looked over the changes, seem reasonable to me. Resolving oldest open JIRA

            People

            • Assignee:
              Robbie Gemmell
              Reporter:
              Marnie McCormack
            • Votes:
              0 Vote for this issue
              Watchers:
              1 Start watching this issue

              Dates

              • Created:
                Updated:
                Resolved:

                Time Tracking

                Estimated:
                Original Estimate - 72h
                72h
                Remaining:
                Remaining Estimate - 72h
                72h
                Logged:
                Time Spent - Not Specified
                Not Specified

                  Development