Uploaded image for project: 'JBoss Transaction Manager'
  1. JBoss Transaction Manager
  2. JBTM-3020

Add ability for resources to indicate XA_RDONLY on end



    • Feature Request
    • Status: Open (View Workflow)
    • Major
    • Resolution: Unresolved
    • None
    • None
    • None
    • None


      As discussed in WFLY-10258 and https://developer.jboss.org/message/982097, this request is to add the ability for an XAResource to indicate (on end) that it has no committable work, which would act as a hint to order that XAResource at an earlier point of prepare processing, which will in turn increase the chances of a 1PC optimization occurring.

      As expressed in the forum thread, the mechanism should not interfere with compatibility. One possible way to do this would be to introduce an enhanced subinterface of XAResource which includes a method like this:

          int endWithResult(Xid xid, int flags) throws XAException;

      The method behaves semantically identically to XAResource#end , except it would be allowed to return XA_RDONLY or XA_OK. A value of XA_RDONLY would indicate that the resource expects to return XA_RDONLY in response to a prepare call, whereas a value of XA_OK indicates that the resource's future prepare result cannot yet be decided or will be XA_OK. An invalid result should probably behave equivalently to an XAException being thrown by the end method. XAER_RMERR seems like a reasonable error code for this case. An alternative strategy would be to treat an invalid return value as being equivalent to XA_OK.

      Since it's a subinterface of XAResource, it could also define the following default method:

          default void end(Xid xid, int flags) throws XAException {
              endWithResult(xid, flags);

      This method would not need to be called by the TM, but would correctly satisfy the XAResource contract without requiring the user to implement the redundant method.


        Issue Links



              rhn-engineering-mmusgrov Michael Musgrove
              dlloyd@redhat.com David Lloyd
              0 Vote for this issue
              4 Start watching this issue