Uploaded image for project: 'jBPM'
  1. jBPM
  2. JBPM-2964

Throw the exception on commit when both commit and rollback fail

XMLWordPrintable

    • Icon: Bug Bug
    • Resolution: Done
    • Icon: Major Major
    • jBPM 3.2.10
    • jBPM 3.2.9
    • Runtime Engine
    • None

      In case that commit() throws an exception (e.g. StaleObjectStateException) in DbPersistenceService.endTransaction(), rollback() will be called. And then, if rollback() also throws an exception, a client application will get the latter exception (Usually, it would be java.lang.IllegalStateException: BaseTransaction.rollback - [com.arjuna.ats.internal.jta.transaction.arjunacore.notx] [com.arjuna.ats.internal.jta.transaction.arjunacore.notx] no transaction! ).

      public void endTransaction() {
      if (!isTransactionRollbackOnly()) {
      Exception commitException = commit();
      if (commitException != null)

      { rollback(); closeSession(); closeConnection(); throw new JbpmPersistenceException("transaction commit failed", commitException); }

      }

      It is not a desirable behaviour. It's better to catch the exception on rollback, log it and throw the exception on commit.

        1. JBPM-2964.patch
          0.7 kB
          Toshiya Kobayashi

              aguizar_jira Alejandro Guizar (Inactive)
              rhn-support-tkobayas Toshiya Kobayashi
              Votes:
              0 Vote for this issue
              Watchers:
              0 Start watching this issue

                Created:
                Updated:
                Resolved: