Uploaded image for project: 'JBoss Enterprise Application Platform 4 and 5'
  1. JBoss Enterprise Application Platform 4 and 5
  2. JBPAPP-5608

Problem with QueuedPessimisticEJBLock and Arjuna

    XMLWordPrintable

    Details

    • Type: Bug
    • Status: Closed (View Workflow)
    • Priority: Major
    • Resolution: Done
    • Affects Version/s: EAP 5.0.0
    • Fix Version/s: EAP_EWP 5.1.1
    • Component/s: System
    • Labels:
      None
    • Release Notes Text:
      Hide
      The QueuedPessimisticEJBLock in JBoss Transactions did not always detect that a waiting transaction had timed out, so the lock would remain active when it should have been released. This eventually resulted in a threadpool-wide lock, with all transactions waiting for the lock to release, or the locked transaction to be registered as timed out. The isTxExpired() method has been modified to ensure that timeouts are registered, so that transactions are informed of locks.
      Show
      The QueuedPessimisticEJBLock in JBoss Transactions did not always detect that a waiting transaction had timed out, so the lock would remain active when it should have been released. This eventually resulted in a threadpool-wide lock, with all transactions waiting for the lock to release, or the locked transaction to be registered as timed out. The isTxExpired() method has been modified to ensure that timeouts are registered, so that transactions are informed of locks.
    • Release Notes Docs Status:
      Documented as Resolved Issue

      Description

      When using Arjuna, QueuedPessimisticEJBLock does not always properly detect that a waiting tx has timed out. The problem is that QueuedPessimisticEJBLock was written for the old TM, which did not rollback transactions on timeout, but only marked them for rollback. Now that Arjuna is in play, it has to check for rolled back transactions too.

      The isTxExpired() method should be changed to something like this:

      protected boolean isTxExpired(Transaction miTx) throws Exception {
      if (miTx != null
      && (miTx.getStatus() == Status.STATUS_MARKED_ROLLBACK || miTx.getStatus() == Status.STATUS_ROLLEDBACK))

      { return true; }

      return false;
      }

        Gliffy Diagrams

          Attachments

            Issue Links

              Activity

                People

                • Assignee:
                  istudens Ivo Studensky
                  Reporter:
                  bmaxwell Brad Maxwell
                  Writer:
                  Laura Bailey
                • Votes:
                  0 Vote for this issue
                  Watchers:
                  1 Start watching this issue

                  Dates

                  • Created:
                    Updated:
                    Resolved: