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

    XMLWordPrintableJSON

Details

    • Bug
    • Status: Closed
    • Major
    • Resolution: Fixed
    • 10.8.2.2
    • 10.8.3.0, 10.9.1.0
    • JDBC
    • None
    • Solaris 10
      Glassfish V2.1.1
    • Deviation from standard, Seen in production

    Description

      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.

      Attachments

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

        Activity

          People

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

            Dates

              Created:
              Updated:
              Resolved: