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

Throw the exception on commit when both commit and rollback fail

    Details

      Description

      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.

        Gliffy Diagrams

          Attachments

            Issue Links

              Activity

                People

                • Assignee:
                  aguizar Alejandro Guizar
                  Reporter:
                  tkobayashi Toshiya Kobayashi
                • Votes:
                  0 Vote for this issue
                  Watchers:
                  0 Start watching this issue

                  Dates

                  • Created:
                    Updated:
                    Resolved: