Details

    • Type: Bug
    • Status: Closed
    • Priority: Medium
    • Resolution: Fixed
    • Affects Version/s: Fedora 6.0.0
    • Fix Version/s: Fedora 6.0.0
    • Component/s: f4-core
    • Labels:

      Description

      The rollback logic in TransactionImpl is not quite right:

      public synchronized void rollback() {
      failIfCommited();
      if (this.rolledback)

      { return; }

      try {
      log.debug("Rolling back transaction {}", id);
      this.rolledback = true;
      this.getPersistentSession().rollback();
      this.getContainmentIndex().rollbackTransaction(this);
      this.getEventAccumulator().clearEvents(id);
      } catch (final PersistentStorageException ex)

      { throw new RepositoryRuntimeException("failed to rollback transaction " + id, ex); }

      }

      The persistent session and containment index rollbacks can throw exceptions which would short-circuit the rollback process.

      Additionally, if there is an exception during rollback, this exception is thrown in place of the exception that triggered the rollback in the first place in TransactionImpl.commit(). The original exception should be propagated; not the rollback exception.

        Attachments

          Activity

            People

            Assignee:
            pwinckles Peter Winckles
            Reporter:
            pwinckles Peter Winckles
            Reviewer:
            Andrew Woods
            Votes:
            0 Vote for this issue
            Watchers:
            2 Start watching this issue

              Dates

              Created:
              Updated:
              Resolved: