Uploaded image for project: 'Derby'
  1. Derby
  2. DERBY-5562

An read-only XA transaction that has a timeout never has the timer canceled when the transaction is complete


    • Type: Bug
    • Status: Closed
    • Priority: Major
    • Resolution: Fixed
    • Affects Version/s:
    • Fix Version/s:,
    • Component/s: JDBC
    • Labels:
    • Environment:
      Solaris 10
      Glassfish V2.1.1
    • Bug behavior facts:
      Deviation from standard, Seen in production


      From the EmbedConnection.java comment for "xa_prepare".

      // On a prepare call, xa allows an optimization that if the
      // transaction is read only, the RM can just go ahead and
      // commit it. So if store returns this read only status -
      // meaning store has taken the liberty to commit already - we
      // needs to turn around and call internalCommit (without
      // committing the store again) to make sure the state is
      // consistent. Since the transaction is read only, there is
      // probably not much that needs to be done.

      When XATransactionController.XA_RDONLY is returned, no "commit" or "rollback" will be received. If a XA transaction timer was started (could be through the derby.jdbc.xaTransactionTimeout=xxx for example), then these transactions will not have their timer canceled and will later attempt to cancel the transaction and fail as the transaction no longer exists.


        1. DERBY-5562.patch
          0.9 kB
          Brett Bergquist
        2. D5562.java
          2 kB
          Knut Anders Hatlen
        3. d5562-1a-with-test.diff
          6 kB
          Knut Anders Hatlen



            • Assignee:
              knutanders Knut Anders Hatlen
              bbergquist Brett Bergquist
            • Votes:
              0 Vote for this issue
              1 Start watching this issue


              • Created: