Details

    • Type: Bug Bug
    • Status: Closed
    • Priority: Major Major
    • Resolution: Fixed
    • Affects Version/s: 2.2.5
    • Fix Version/s: 2.2.11, 2.3.4
    • Component/s: transactions
    • Labels:
      None

      Description

      This is a result of the way that JCR-395 was fixed. If you look at the code, you'll see that txGlobal.remove(xid) is called as the last statement in both XASessionImpl.commit() and XASessionImpl.rollback(). However, in both methods an exception could be thrown either as a result of calling tx.commit() (or tx.prepare()) and tx.rollback().

      As a result, the transaction will not be removed from txGlobals whenever the commit or the rollback has failed for any reason. My suggestion would be to move the txGlobal.remove(xid) into a finally block.

      1. XASessionImpl.patch
        1 kB
        Boris Pruessmann

        Activity

        Hide
        Jukka Zitting added a comment -

        Merged to the 2.2 branch in revision 1235755.

        Show
        Jukka Zitting added a comment - Merged to the 2.2 branch in revision 1235755.
        Hide
        Claus Köll added a comment -

        thanks for the patch. commited patch in rev. 1202144
        If you need it in the 2.2 branch please comment on this issue

        Show
        Claus Köll added a comment - thanks for the patch. commited patch in rev. 1202144 If you need it in the 2.2 branch please comment on this issue
        Hide
        Boris Pruessmann added a comment -

        Moved txGlobals.remove(xid) into finally block

        Show
        Boris Pruessmann added a comment - Moved txGlobals.remove(xid) into finally block

          People

          • Assignee:
            Claus Köll
            Reporter:
            Boris Pruessmann
          • Votes:
            0 Vote for this issue
            Watchers:
            2 Start watching this issue

            Dates

            • Created:
              Updated:
              Resolved:

              Development