flowable/flowable-engine · error · TransactionException

Unable to resume transaction

Error message

Unable to resume transaction

What it means

Infrastructure failure in JtaTransactionInterceptor.doResume: transactionManager.resume(tx) threw SystemException or InvalidTransactionException while restoring a previously suspended transaction after command execution. A JTA environment/runtime failure surfaced as TransactionException.

Solutions

  1. Inspect the cause for transaction timeout/invalid-state details
  2. Review requiresNew usage that triggers suspend/resume cycles
Defensive patterns

Strategy: try-catch

When it happens

Trigger: Thrown at modules/flowable-engine-common/src/main/java/org/flowable/common/engine/impl/interceptor/JtaTransactionInterceptor.java:112 when the library encounters an invalid state.

Common situations: See trigger scenarios.


AI-assisted analysis of flowable/flowable-engine@d6d39ce1c6 (2026-09-11). Data as JSON: /api/errors/8de2a22110c867f8. Report an issue: GitHub.

Appendix: source

Thrown at modules/flowable-engine-common/src/main/java/org/flowable/common/engine/impl/interceptor/JtaTransactionInterceptor.java:112

        } catch (SystemException e) {
            throw new TransactionException("Unable to retrieve transaction status", e);
        }
    }

    private Transaction doSuspend() {
        try {
            return transactionManager.suspend();
        } catch (SystemException e) {
            throw new TransactionException("Unable to suspend transaction", e);
        }
    }

    private void doResume(Transaction tx) {
        if (tx != null) {
            try {
                transactionManager.resume(tx);
            } catch (SystemException | InvalidTransactionException e) {
                throw new TransactionException("Unable to resume transaction", e);
            }
        }
    }

    private void doCommit() {
        try {
            transactionManager.commit();
        } catch (HeuristicMixedException | SystemException | RollbackException | HeuristicRollbackException e) {
            throw new TransactionException("Unable to commit transaction", e);
        } catch (RuntimeException | Error e) {
            doRollback(true, e);
            throw e;
        }
    }

    private void doRollback(boolean isNew, Throwable originalException) {
        Throwable rollbackEx = null;
        try {

View on GitHub (pinned to d6d39ce1c6)