flowable/flowable-engine · error · ActivitiException
SystemException while registering synchronization
Error message
SystemException while registering synchronization
What it means
addTransactionListener() wraps javax.transaction.SystemException from Transaction.registerSynchronization() in this ActivitiException. SystemException means the JTA transaction manager failed internally while attempting to register the synchronization — an infrastructure-level failure, not a state or usage problem.
Solutions
- Read the chained SystemException cause and the app-server transaction logs for the root failure.
- Verify XA datasource and transaction recovery manager configuration.
- Upgrade the app server / JTA provider — some SystemException cases are fixed provider bugs.
- Retry the command once the transaction service is healthy; escalate to infrastructure if persistent.
Defensive patterns
Strategy: retry
Validate before calling
// pre-flight: ensure the JTA provider responds transactionManager.getStatus();
Try / catch
try { ctx.addTransactionListener(state, listener); } catch (ActivitiException e) { if (e.getCause() instanceof SystemException) { alertOps("JTA provider failure during synchronization registration"); } else { throw e; } } Prevention
- Monitor transaction service and XA resource health.
- Upgrade the app server / JTA provider to a stable version.
- Keep recovery manager configuration correct.
When it happens
Trigger: Calling addTransactionListener when the JTA transaction manager or its resources are malfunctioning — transaction service error, resource adapter failure, or recoverable internal error.
Common situations: App-server transaction service instability; XA resource failures mid-transaction; engine running against a JTA implementation with known bugs (older JBossTS versions).
Related errors
- IllegalStateException while registering synchronization
- IllegalStateException while registering synchronization
- RollbackException while registering synchronization
- RollbackException while registering synchronization
- SystemException while getting transaction
AI-assisted analysis of flowable/flowable-engine@d6d39ce1c6 (2026-09-11).
Data as JSON: /api/errors/824c3a14a390eea3.
Report an issue: GitHub.
Appendix: source
Thrown at modules/flowable5-engine/src/main/java/org/activiti/engine/impl/cfg/jta/JtaTransactionContext.java:81
try {
return transactionManager.getTransaction();
} catch (SystemException e) {
throw new ActivitiException("SystemException while getting transaction ", e);
}
}
@Override
public void addTransactionListener(TransactionState transactionState, final TransactionListener transactionListener) {
Transaction transaction = getTransaction();
CommandContext commandContext = Context.getCommandContext();
try {
transaction.registerSynchronization(new TransactionStateSynchronization(transactionState, transactionListener, commandContext));
} catch (IllegalStateException e) {
throw new ActivitiException("IllegalStateException while registering synchronization ", e);
} catch (RollbackException e) {
throw new ActivitiException("RollbackException while registering synchronization ", e);
} catch (SystemException e) {
throw new ActivitiException("SystemException while registering synchronization ", e);
}
}
public static class TransactionStateSynchronization implements Synchronization {
protected final TransactionListener transactionListener;
protected final TransactionState transactionState;
private final CommandContext commandContext;
public TransactionStateSynchronization(TransactionState transactionState, TransactionListener transactionListener, CommandContext commandContext) {
this.transactionState = transactionState;
this.transactionListener = transactionListener;
this.commandContext = commandContext;
}
@Override
public void beforeCompletion() {
if (TransactionState.COMMITTING == transactionState
View on GitHub (pinned to d6d39ce1c6)