{"record":{"id":"a0728a27857fe635","repo":"flowable/flowable-engine","slug":"unable-to-retrieve-transaction-status","errorCode":null,"errorMessage":"Unable to retrieve transaction status","messagePattern":"Unable to retrieve transaction status","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":95,"sourceCode":"            return result;\n        } finally {\n            doResume(oldTx);\n        }\n    }\n\n    private void doBegin() {\n        try {\n            transactionManager.begin();\n        } catch (NotSupportedException | SystemException e) {\n            throw new TransactionException(\"Unable to begin transaction\", e);\n        }\n    }\n\n    private boolean isExisting() {\n        try {\n            return transactionManager.getStatus() != Status.STATUS_NO_TRANSACTION;\n        } catch (SystemException e) {\n            throw new TransactionException(\"Unable to retrieve transaction status\", e);\n        }\n    }\n\n    private Transaction doSuspend() {\n        try {\n            return transactionManager.suspend();\n        } catch (SystemException e) {\n            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            }","sourceCodeStart":77,"sourceCodeEnd":113,"githubUrl":"https://github.com/flowable/flowable-engine/blob/d6d39ce1c69ff244f2d9dc6af756a9b95e865586/modules/flowable-engine-common/src/main/java/org/flowable/common/engine/impl/interceptor/JtaTransactionInterceptor.java#L77-L113","documentation":"Infrastructure failure in JtaTransactionInterceptor.isExisting: the JTA TransactionManager.getStatus() call threw a SystemException, so the interceptor cannot determine whether a transaction is active and wraps the failure in a TransactionException. Indicates a JTA/environment problem (transaction manager timeout, recovery issue), not bad input.","triggerScenarios":"Thrown at modules/flowable-engine-common/src/main/java/org/flowable/common/engine/impl/interceptor/JtaTransactionInterceptor.java:95 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","solutions":["Verify the TransactionManager JNDI/bean configuration","Look at the cause SystemException for server-side transaction failures"],"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"}