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

    Details

    • Type: Bug Bug
    • Status: Closed
    • Priority: Major Major
    • Resolution: Fixed
    • Affects Version/s: 10.8.2.2
    • Fix Version/s: 10.8.3.0, 10.9.1.0
    • Component/s: JDBC
    • Labels:
      None
    • Environment:
      Solaris 10
      Glassfish V2.1.1
    • Bug behavior facts:
      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.

      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

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

            Dates

            • Created:
              Updated:
              Resolved:

              Development