{"record":{"id":"ab12fa6f348be92c","repo":"flowable/flowable-engine","slug":"unable-to-commit-transaction","errorCode":null,"errorMessage":"Unable to commit transaction","messagePattern":"Unable to commit transaction","errorType":"exception","errorClass":"TransactionException","httpStatus":null,"severity":"error","filePath":"modules/flowable-engine-common/src/main/java/org/flowable/common/engine/impl/interceptor/JtaTransactionInterceptor.java","lineNumber":121,"sourceCode":"            throw new TransactionException(\"Unable to suspend transaction\", e);\n        }\n    }\n\n    private void doResume(Transaction tx) {\n        if (tx != null) {\n            try {\n                transactionManager.resume(tx);\n            } catch (SystemException | InvalidTransactionException e) {\n                throw new TransactionException(\"Unable to resume transaction\", e);\n            }\n        }\n    }\n\n    private void doCommit() {\n        try {\n            transactionManager.commit();\n        } catch (HeuristicMixedException | SystemException | RollbackException | HeuristicRollbackException e) {\n            throw new TransactionException(\"Unable to commit transaction\", e);\n        } catch (RuntimeException | Error e) {\n            doRollback(true, e);\n            throw e;\n        }\n    }\n\n    private void doRollback(boolean isNew, Throwable originalException) {\n        Throwable rollbackEx = null;\n        try {\n            if (isNew) {\n                transactionManager.rollback();\n            } else {\n                transactionManager.setRollbackOnly();\n            }\n        } catch (SystemException e) {\n            LOGGER.debug(\"Error when rolling back transaction\", e);\n        } catch (RuntimeException | Error e) {\n            rollbackEx = e;","sourceCodeStart":103,"sourceCodeEnd":139,"githubUrl":"https://github.com/flowable/flowable-engine/blob/d6d39ce1c69ff244f2d9dc6af756a9b95e865586/modules/flowable-engine-common/src/main/java/org/flowable/common/engine/impl/interceptor/JtaTransactionInterceptor.java#L103-L139","documentation":"Wrapper thrown by JtaTransactionInterceptor.doCommit: committing the JTA transaction failed with a rollback/heuristic exception (e.g. HeuristicMixedException, RollbackException), so the command's changes were not durably committed.","triggerScenarios":"Thrown at modules/flowable-engine-common/src/main/java/org/flowable/common/engine/impl/interceptor/JtaTransactionInterceptor.java:121 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","solutions":["Inspect the cause to see whether a rollback or heuristic outcome occurred","Resolve concurrent-update or timeout conditions that force the rollback"],"exampleFix":null,"handlingStrategy":"try-catch","validationCode":null,"typeGuard":null,"tryCatchPattern":null,"preventionTips":[],"tags":[],"backgroundTag":null,"analyzedSha":"d6d39ce1c69ff244f2d9dc6af756a9b95e865586","analyzedAt":"2026-09-11T06:41:19.413Z","contentChangedAt":"2026-09-11T06:41:19.413Z","schemaVersion":2},"datasetVersion":"2026-09-18T11:17:12.947Z"}