You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
I have a Frank configuration that reads a message from an Artemis queue and writes it to two database tables in a PostgreSQL database. This happens in an XA transaction. In Ladybug the resulting report shows no issues, but when I query my tables the data is not in.
A log is included in this issue.
My message also does not appear in the error store I configured:
Expected Behavior
The input message appears in the database.
Environment Information
This was run using Docker Compose.
Steps To Reproduce
Run adapter writeDbAsync in Test a Pipeline.
Configuration
See attached .zip file.
Input
No response
What database are you using?
No response
What browsers are you seeing the problem on?
No response
Relevant Log Output
2025-01-10 12:53:18,642 INFO [http-nio-8080-exec-10] {mid=testmessageac1f0003--61af5f71_19450416f8a_-7fff, cid=Test a Pipeline 1, adapter=writeDbAsync} core.Adapter - Adapter [writeDbAsync] received message with messageId [testmessageac1f0003--61af5f71_19450416f8a_-7fff]2025-01-10 12:53:18,740 INFO [http-nio-8080-exec-10] {mid=testmessageac1f0003--61af5f71_19450416f8a_-7fff, cid=Test a Pipeline 1, adapter=writeDbAsync, pipe=enqueue, sender=enqueue} jms.JmsSender - [enqueue] message destination [ActiveMQQueue[myQueue]] JMSDeliveryMode=[2] JMSMessageID=[null] JMSCorrelationID=[Test a Pipeline 1] JMSReplyTo=[null]2025-01-10 12:53:18,760 INFO [JmsListener [dequeue][1]] {mid=ID:dd82c48b-cf51-11ef-a380-0242ac1f0003, cid=Test a Pipeline 1, adapter=writeDb} receivers.Receiver - Receiver [JmsListener [dequeue]] messageId [ID:dd82c48b-cf51-11ef-a380-0242ac1f0003] correlationId [Test a Pipeline 1] businessCorrelationId [Test a Pipeline 1]2025-01-10 12:53:18,762 INFO [JmsListener [dequeue][1]] {mid=ID:dd82c48b-cf51-11ef-a380-0242ac1f0003, cid=Test a Pipeline 1, adapter=writeDb} core.Adapter - Adapter [writeDb] received message with messageId [ID:dd82c48b-cf51-11ef-a380-0242ac1f0003]2025-01-10 12:53:18,777 INFO [http-nio-8080-exec-10] {mid=testmessageac1f0003--61af5f71_19450416f8a_-7fff, cid=Test a Pipeline 1, adapter=writeDbAsync, pipe=enqueue} pipes.SenderPipe - sent message to [enqueue] messageID [ID:dd82c48b-cf51-11ef-a380-0242ac1f0003] linkMethod [CORRELATIONID]2025-01-10 12:53:18,864 INFO [http-nio-8080-exec-10] {mid=testmessageac1f0003--61af5f71_19450416f8a_-7fff, cid=Test a Pipeline 1, adapter=writeDbAsync} core.Adapter - Adapter [writeDbAsync] Pipeline finished processing message with messageId [testmessageac1f0003--61af5f71_19450416f8a_-7fff] with exit-state [SUCCESS]2025-01-10 12:53:18,869 INFO [JmsListener [dequeue][1]] {mid=ID:dd82c48b-cf51-11ef-a380-0242ac1f0003, cid=Test a Pipeline 1, adapter=writeDb, pipe=writeTableMessage, sender=writeTableMessage} senders.FrankSender - Sending message to ADAPTER [writeTableMessage]2025-01-10 12:53:18,872 INFO [JmsListener [dequeue][1]] {mid=ID:dd82c48b-cf51-11ef-a380-0242ac1f0003, cid=Test a Pipeline 1, adapter=writeTableMessage, pipe=writeTableMessage, sender=writeTableMessage} core.Adapter - Adapter [writeTableMessage] received message with messageId [null]2025-01-10 12:53:18,872 ERROR [JmsListener [dequeue][1]] {mid=ID:dd82c48b-cf51-11ef-a380-0242ac1f0003, cid=Test a Pipeline 1, adapter=writeTableMessage, pipe=writeTableMessage, sender=writeTableMessage} processors.InputOutputPipeLineProcessor - null value for messageId, setting to [ac1f0003--61af5f71_19450416f8a_-7ffe]2025-01-10 12:53:18,909 INFO [JmsListener [dequeue][1]] {mid=ID:dd82c48b-cf51-11ef-a380-0242ac1f0003, cid=Test a Pipeline 1, adapter=writeTableMessage, pipe=writeTableMessage, sender=writeTableMessage} pipes.SenderPipe - sent message to [writeTableMessage-sender] synchronously2025-01-10 12:53:18,909 INFO [JmsListener [dequeue][1]] {mid=ID:dd82c48b-cf51-11ef-a380-0242ac1f0003, cid=Test a Pipeline 1, adapter=writeTableMessage, pipe=writeTableMessage, sender=writeTableMessage} core.Adapter - Adapter [writeTableMessage] Pipeline finished processing message with messageId [null] with exit-state [SUCCESS]2025-01-10 12:53:18,926 INFO [JmsListener [dequeue][1]] {} pipes.SenderPipe - sent message to [writeTableMessage] synchronously2025-01-10 12:53:18,937 INFO [JmsListener [dequeue][1]] {pipe=writeTableOtherMessage, sender=writeTableOtherMessage} senders.FrankSender - Sending message to ADAPTER [writeTableOtherMessage]2025-01-10 12:53:18,937 INFO [JmsListener [dequeue][1]] {cid=Test a Pipeline 1, adapter=writeTableOtherMessage, pipe=writeTableOtherMessage, sender=writeTableOtherMessage} core.Adapter - Adapter [writeTableOtherMessage] received message with messageId [null]2025-01-10 12:53:18,938 ERROR [JmsListener [dequeue][1]] {cid=Test a Pipeline 1, adapter=writeTableOtherMessage, pipe=writeTableOtherMessage, sender=writeTableOtherMessage} processors.InputOutputPipeLineProcessor - null value for messageId, setting to [ac1f0003--61af5f71_19450416f8a_-7ffd]2025-01-10 12:53:18,957 INFO [JmsListener [dequeue][1]] {cid=Test a Pipeline 1, adapter=writeTableOtherMessage, pipe=writeTableOtherMessage, sender=writeTableOtherMessage} pipes.SenderPipe - sent message to [writeTableOtherMessage-sender] synchronously2025-01-10 12:53:18,957 INFO [JmsListener [dequeue][1]] {cid=Test a Pipeline 1, adapter=writeTableOtherMessage, pipe=writeTableOtherMessage, sender=writeTableOtherMessage} core.Adapter - Adapter [writeTableOtherMessage] Pipeline finished processing message with messageId [null] with exit-state [SUCCESS]2025-01-10 12:53:18,970 INFO [JmsListener [dequeue][1]] {} pipes.SenderPipe - sent message to [writeTableOtherMessage] synchronously2025-01-10 12:53:18,981 INFO [JmsListener [dequeue][1]] {} core.Adapter - Adapter [writeDb] Pipeline finished processing message with messageId [ID:dd82c48b-cf51-11ef-a380-0242ac1f0003] with exit-state [SUCCESS]2025-01-10 12:53:18,981 INFO [JmsListener [dequeue][1]] {} jms.JmsListener - [dequeue] no replyTo address found or not configured to use replyTo, and no sender, not sending the result.2025-01-10 12:53:18,982 INFO [JmsListener [dequeue][1]] {} unmanaged.SpringJmsConnector - SpringJmsConnector of Receiver [JmsListener [dequeue]] A) JMSMessageTime [2025-01-10 12:53:18.740]2025-01-10 12:53:18,982 INFO [JmsListener [dequeue][1]] {} unmanaged.SpringJmsConnector - SpringJmsConnector of Receiver [JmsListener [dequeue]] B) onMessageStart [2025-01-10 12:53:18.759] diff (~'queing' time) [19]2025-01-10 12:53:18,982 INFO [JmsListener [dequeue][1]] {} unmanaged.SpringJmsConnector - SpringJmsConnector of Receiver [JmsListener [dequeue]] C) onMessageEnd [2025-01-10 12:53:18.982] diff (process time) [223]2025-01-10 12:53:19,019 WARN [JmsListener [dequeue][1]] {} ats.jta - ARJUNA016041: prepare on < formatId=131077, gtrid_length=64, bqual_length=36, tx_uid=0:ffffac1f0003:8d7d:678116e5:6b2, node_name=809f78c5f310-ac1f0003--61af5f71_1945, branch_uid=0:ffffac1f0003:8d7d:678116e5:6b8, subordinatenodename=null, eis_name=0 > (org.postgresql.xa.PGXAConnection@17ed0311) failed with exception XAException.XAER_RMFAILorg.postgresql.xa.PGXAException: Error preparing transaction. prepare xid=< formatId=131077, gtrid_length=64, bqual_length=36, tx_uid=0:ffffac1f0003:8d7d:678116e5:6b2, node_name=809f78c5f310-ac1f0003--61af5f71_1945, branch_uid=0:ffffac1f0003:8d7d:678116e5:6b8, subordinatenodename=null, eis_name=0 > at org.postgresql.xa.PGXAConnection.prepare(PGXAConnection.java:365) ~[postgresql.jar:42.7.4] at com.arjuna.ats.internal.jta.resources.arjunacore.XAResourceRecord.topLevelPrepare(XAResourceRecord.java:190) ~[narayana-jta-7.1.0.Final.jar:7.1.0.Final (revision: ab602)] at com.arjuna.ats.arjuna.coordinator.BasicAction.doPrepare(BasicAction.java:2799) ~[narayana-jta-7.1.0.Final.jar:7.1.0.Final (revision: ab602)] at com.arjuna.ats.arjuna.coordinator.BasicAction.doPrepare(BasicAction.java:2729) ~[narayana-jta-7.1.0.Final.jar:7.1.0.Final (revision: ab602)] at com.arjuna.ats.arjuna.coordinator.BasicAction.prepare(BasicAction.java:2236) ~[narayana-jta-7.1.0.Final.jar:7.1.0.Final (revision: ab602)] at com.arjuna.ats.arjuna.coordinator.BasicAction.End(BasicAction.java:1548) ~[narayana-jta-7.1.0.Final.jar:7.1.0.Final (revision: ab602)] at com.arjuna.ats.arjuna.coordinator.TwoPhaseCoordinator.end(TwoPhaseCoordinator.java:71) ~[narayana-jta-7.1.0.Final.jar:7.1.0.Final (revision: ab602)] at com.arjuna.ats.arjuna.AtomicAction.commit(AtomicAction.java:135) ~[narayana-jta-7.1.0.Final.jar:7.1.0.Final (revision: ab602)] at com.arjuna.ats.internal.jta.transaction.arjunacore.TransactionImple.commitAndDisassociate(TransactionImple.java:1307) ~[narayana-jta-7.1.0.Final.jar:7.1.0.Final (revision: ab602)] at com.arjuna.ats.internal.jta.transaction.arjunacore.BaseTransaction.commit(BaseTransaction.java:104) ~[narayana-jta-7.1.0.Final.jar:7.1.0.Final (revision: ab602)] at org.springframework.transaction.jta.JtaTransactionManager.doCommit(JtaTransactionManager.java:1026) ~[spring-tx-6.2.1.jar:6.2.1] at org.springframework.transaction.support.AbstractPlatformTransactionManager.processCommit(AbstractPlatformTransactionManager.java:795) ~[spring-tx-6.2.1.jar:6.2.1] at org.springframework.transaction.support.AbstractPlatformTransactionManager.commit(AbstractPlatformTransactionManager.java:758) ~[spring-tx-6.2.1.jar:6.2.1] at org.frankframework.jta.SpringTxManagerProxy.commit(SpringTxManagerProxy.java:72) ~[frankframework-core-9.1.0-20250107.042327.jar:9.1.0-20250107.042327] at org.springframework.jms.listener.AbstractPollingMessageListenerContainer.receiveAndExecute(AbstractPollingMessageListenerContainer.java:253) ~[spring-jms-6.2.1.jar:6.2.1] at org.frankframework.jms.IbisMessageListenerContainer.receiveAndExecute(IbisMessageListenerContainer.java:96) ~[frankframework-core-9.1.0-20250107.042327.jar:9.1.0-20250107.042327] at org.springframework.jms.listener.DefaultMessageListenerContainer$AsyncMessageListenerInvoker.invokeListener(DefaultMessageListenerContainer.java:1420) ~[spring-jms-6.2.1.jar:6.2.1] at org.springframework.jms.listener.DefaultMessageListenerContainer$AsyncMessageListenerInvoker.run(DefaultMessageListenerContainer.java:1294) ~[spring-jms-6.2.1.jar:6.2.1] at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source) ~[?:?] at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source) ~[?:?] at java.base/java.lang.Thread.run(Unknown Source) [?:?]Caused by: org.postgresql.util.PSQLException: ERROR: prepared transactions are disabled Hint: Set "max_prepared_transactions" to a nonzero value. at org.postgresql.core.v3.QueryExecutorImpl.receiveErrorResponse(QueryExecutorImpl.java:2733) ~[postgresql.jar:42.7.4] at org.postgresql.core.v3.QueryExecutorImpl.processResults(QueryExecutorImpl.java:2420) ~[postgresql.jar:42.7.4] at org.postgresql.core.v3.QueryExecutorImpl.execute(QueryExecutorImpl.java:372) ~[postgresql.jar:42.7.4] at org.postgresql.jdbc.PgStatement.executeInternal(PgStatement.java:517) ~[postgresql.jar:42.7.4] at org.postgresql.jdbc.PgStatement.execute(PgStatement.java:434) ~[postgresql.jar:42.7.4] at org.postgresql.jdbc.PgStatement.executeWithFlags(PgStatement.java:356) ~[postgresql.jar:42.7.4] at org.postgresql.jdbc.PgStatement.executeCachedSql(PgStatement.java:341) ~[postgresql.jar:42.7.4] at org.postgresql.jdbc.PgStatement.executeWithFlags(PgStatement.java:317) ~[postgresql.jar:42.7.4] at org.postgresql.jdbc.PgStatement.executeUpdate(PgStatement.java:290) ~[postgresql.jar:42.7.4] at org.postgresql.xa.PGXAConnection.prepare(PGXAConnection.java:357) ~[postgresql.jar:42.7.4] ... 20 more2025-01-10 12:53:19,025 WARN [JmsListener [dequeue][1]] {} ats.arjuna - ARJUNA012073: BasicAction.End() - prepare phase of action-id 0:ffffac1f0003:8d7d:678116e5:6b2 failed.2025-01-10 12:53:19,025 WARN [JmsListener [dequeue][1]] {} ats.arjuna - ARJUNA012075: Action Aborting2025-01-10 12:53:19,031 WARN [JmsListener [dequeue][1]] {} ats.jta - ARJUNA016045: attempted rollback of < formatId=131077, gtrid_length=64, bqual_length=36, tx_uid=0:ffffac1f0003:8d7d:678116e5:6b2, node_name=809f78c5f310-ac1f0003--61af5f71_1945, branch_uid=0:ffffac1f0003:8d7d:678116e5:6b8, subordinatenodename=null, eis_name=0 > (org.postgresql.xa.PGXAConnection@17ed0311) failed with exception code XAException.XAER_RMERRorg.postgresql.xa.PGXAException: Error rolling back prepared transaction. rollback xid=< formatId=131077, gtrid_length=64, bqual_length=36, tx_uid=0:ffffac1f0003:8d7d:678116e5:6b2, node_name=809f78c5f310-ac1f0003--61af5f71_1945, branch_uid=0:ffffac1f0003:8d7d:678116e5:6b8, subordinatenodename=null, eis_name=0 >, preparedXid=< formatId=131077, gtrid_length=64, bqual_length=36, tx_uid=0:ffffac1f0003:8d7d:678116e5:6b2, node_name=809f78c5f310-ac1f0003--61af5f71_1945, branch_uid=0:ffffac1f0003:8d7d:678116e5:6b8, subordinatenodename=null, eis_name=0 >, currentXid=null at org.postgresql.xa.PGXAConnection.rollback(PGXAConnection.java:485) ~[postgresql.jar:42.7.4] at com.arjuna.ats.internal.jta.resources.arjunacore.XAResourceRecord.topLevelAbort(XAResourceRecord.java:318) ~[narayana-jta-7.1.0.Final.jar:7.1.0.Final (revision: ab602)] at com.arjuna.ats.arjuna.coordinator.BasicAction.doAbort(BasicAction.java:3158) ~[narayana-jta-7.1.0.Final.jar:7.1.0.Final (revision: ab602)] at com.arjuna.ats.arjuna.coordinator.BasicAction.doAbort(BasicAction.java:3137) ~[narayana-jta-7.1.0.Final.jar:7.1.0.Final (revision: ab602)] at com.arjuna.ats.arjuna.coordinator.BasicAction.phase2Abort(BasicAction.java:2056) ~[narayana-jta-7.1.0.Final.jar:7.1.0.Final (revision: ab602)] at com.arjuna.ats.arjuna.coordinator.BasicAction.End(BasicAction.java:1564) ~[narayana-jta-7.1.0.Final.jar:7.1.0.Final (revision: ab602)] at com.arjuna.ats.arjuna.coordinator.TwoPhaseCoordinator.end(TwoPhaseCoordinator.java:71) ~[narayana-jta-7.1.0.Final.jar:7.1.0.Final (revision: ab602)] at com.arjuna.ats.arjuna.AtomicAction.commit(AtomicAction.java:135) ~[narayana-jta-7.1.0.Final.jar:7.1.0.Final (revision: ab602)] at com.arjuna.ats.internal.jta.transaction.arjunacore.TransactionImple.commitAndDisassociate(TransactionImple.java:1307) ~[narayana-jta-7.1.0.Final.jar:7.1.0.Final (revision: ab602)] at com.arjuna.ats.internal.jta.transaction.arjunacore.BaseTransaction.commit(BaseTransaction.java:104) ~[narayana-jta-7.1.0.Final.jar:7.1.0.Final (revision: ab602)] at org.springframework.transaction.jta.JtaTransactionManager.doCommit(JtaTransactionManager.java:1026) ~[spring-tx-6.2.1.jar:6.2.1] at org.springframework.transaction.support.AbstractPlatformTransactionManager.processCommit(AbstractPlatformTransactionManager.java:795) ~[spring-tx-6.2.1.jar:6.2.1] at org.springframework.transaction.support.AbstractPlatformTransactionManager.commit(AbstractPlatformTransactionManager.java:758) ~[spring-tx-6.2.1.jar:6.2.1] at org.frankframework.jta.SpringTxManagerProxy.commit(SpringTxManagerProxy.java:72) ~[frankframework-core-9.1.0-20250107.042327.jar:9.1.0-20250107.042327] at org.springframework.jms.listener.AbstractPollingMessageListenerContainer.receiveAndExecute(AbstractPollingMessageListenerContainer.java:253) ~[spring-jms-6.2.1.jar:6.2.1] at org.frankframework.jms.IbisMessageListenerContainer.receiveAndExecute(IbisMessageListenerContainer.java:96) ~[frankframework-core-9.1.0-20250107.042327.jar:9.1.0-20250107.042327] at org.springframework.jms.listener.DefaultMessageListenerContainer$AsyncMessageListenerInvoker.invokeListener(DefaultMessageListenerContainer.java:1420) ~[spring-jms-6.2.1.jar:6.2.1] at org.springframework.jms.listener.DefaultMessageListenerContainer$AsyncMessageListenerInvoker.run(DefaultMessageListenerContainer.java:1294) ~[spring-jms-6.2.1.jar:6.2.1] at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source) ~[?:?] at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source) ~[?:?] at java.base/java.lang.Thread.run(Unknown Source) [?:?]Caused by: org.postgresql.util.PSQLException: ERROR: prepared transaction with identifier "131077_AAAAAAAAAAAAAP//rB8AAwAAjX1ngRblAAAGsjgwOWY3OGM1ZjMxMC1hYzFmMDAwMy0tNjFhZjVmNzFfMTk0NQ==_AAAAAAAAAAAAAP//rB8AAwAAjX1ngRblAAAGuAAAAAAAAAAA" does not exist at org.postgresql.core.v3.QueryExecutorImpl.receiveErrorResponse(QueryExecutorImpl.java:2733) ~[postgresql.jar:42.7.4] at org.postgresql.core.v3.QueryExecutorImpl.processResults(QueryExecutorImpl.java:2420) ~[postgresql.jar:42.7.4] at org.postgresql.core.v3.QueryExecutorImpl.execute(QueryExecutorImpl.java:372) ~[postgresql.jar:42.7.4] at org.postgresql.jdbc.PgStatement.executeInternal(PgStatement.java:517) ~[postgresql.jar:42.7.4] at org.postgresql.jdbc.PgStatement.execute(PgStatement.java:434) ~[postgresql.jar:42.7.4] at org.postgresql.jdbc.PgStatement.executeWithFlags(PgStatement.java:356) ~[postgresql.jar:42.7.4] at org.postgresql.jdbc.PgStatement.executeCachedSql(PgStatement.java:341) ~[postgresql.jar:42.7.4] at org.postgresql.jdbc.PgStatement.executeWithFlags(PgStatement.java:317) ~[postgresql.jar:42.7.4] at org.postgresql.jdbc.PgStatement.executeUpdate(PgStatement.java:290) ~[postgresql.jar:42.7.4] at org.postgresql.xa.PGXAConnection.rollback(PGXAConnection.java:462) ~[postgresql.jar:42.7.4] ... 20 more2025-01-10 12:53:19,032 WARN [JmsListener [dequeue][1]] {} ats.arjuna - ARJUNA012089: Top-level abort of action 0:ffffac1f0003:8d7d:678116e5:6b2 received heuristic decision: TwoPhaseOutcome.HEURISTIC_HAZARD2025-01-10 12:53:19,041 WARN [JmsListener [dequeue][1]] {} jms.IbisMessageListenerContainer - Setup of JMS message listener invoker failed for destination 'ActiveMQQueue[myQueue]' - trying to recover. Cause: Heuristic completion: outcome state is mixed2025-01-10 12:53:19,046 INFO [JmsListener [dequeue][1]] {mid=ID:dd82c48b-cf51-11ef-a380-0242ac1f0003, cid=Test a Pipeline 1, adapter=writeDb} receivers.Receiver - Receiver [JmsListener [dequeue]] messageId [ID:dd82c48b-cf51-11ef-a380-0242ac1f0003] correlationId [Test a Pipeline 1] businessCorrelationId [Test a Pipeline 1]2025-01-10 12:53:19,046 WARN [JmsListener [dequeue][1]] {mid=ID:dd82c48b-cf51-11ef-a380-0242ac1f0003, cid=Test a Pipeline 1, adapter=writeDb} receivers.Receiver - Receiver [JmsListener [dequeue]] message with messageId [ID:dd82c48b-cf51-11ef-a380-0242ac1f0003] has receive count [2]2025-01-10 12:53:19,046 INFO [JmsListener [dequeue][1]] {mid=ID:dd82c48b-cf51-11ef-a380-0242ac1f0003, cid=Test a Pipeline 1, adapter=writeDb} core.Adapter - Adapter [writeDb] received message with messageId [ID:dd82c48b-cf51-11ef-a380-0242ac1f0003]2025-01-10 12:53:19,072 INFO [JmsListener [dequeue][1]] {mid=ID:dd82c48b-cf51-11ef-a380-0242ac1f0003, cid=Test a Pipeline 1, adapter=writeDb, pipe=writeTableMessage, sender=writeTableMessage} senders.FrankSender - Sending message to ADAPTER [writeTableMessage]2025-01-10 12:53:19,073 INFO [JmsListener [dequeue][1]] {mid=ID:dd82c48b-cf51-11ef-a380-0242ac1f0003, cid=Test a Pipeline 1, adapter=writeTableMessage, pipe=writeTableMessage, sender=writeTableMessage} core.Adapter - Adapter [writeTableMessage] received message with messageId [null]2025-01-10 12:53:19,073 ERROR [JmsListener [dequeue][1]] {mid=ID:dd82c48b-cf51-11ef-a380-0242ac1f0003, cid=Test a Pipeline 1, adapter=writeTableMessage, pipe=writeTableMessage, sender=writeTableMessage} processors.InputOutputPipeLineProcessor - null value for messageId, setting to [ac1f0003--61af5f71_19450416f8a_-7ffc]2025-01-10 12:53:19,085 INFO [JmsListener [dequeue][1]] {mid=ID:dd82c48b-cf51-11ef-a380-0242ac1f0003, cid=Test a Pipeline 1, adapter=writeTableMessage, pipe=writeTableMessage, sender=writeTableMessage} pipes.SenderPipe - sent message to [writeTableMessage-sender] synchronously2025-01-10 12:53:19,086 INFO [JmsListener [dequeue][1]] {mid=ID:dd82c48b-cf51-11ef-a380-0242ac1f0003, cid=Test a Pipeline 1, adapter=writeTableMessage, pipe=writeTableMessage, sender=writeTableMessage} core.Adapter - Adapter [writeTableMessage] Pipeline finished processing message with messageId [null] with exit-state [SUCCESS]2025-01-10 12:53:19,098 INFO [JmsListener [dequeue][1]] {} pipes.SenderPipe - sent message to [writeTableMessage] synchronously2025-01-10 12:53:19,098 INFO [JmsListener [dequeue][1]] {pipe=writeTableOtherMessage, sender=writeTableOtherMessage} senders.FrankSender - Sending message to ADAPTER [writeTableOtherMessage]2025-01-10 12:53:19,099 INFO [JmsListener [dequeue][1]] {cid=Test a Pipeline 1, adapter=writeTableOtherMessage, pipe=writeTableOtherMessage, sender=writeTableOtherMessage} core.Adapter - Adapter [writeTableOtherMessage] received message with messageId [null]2025-01-10 12:53:19,099 ERROR [JmsListener [dequeue][1]] {cid=Test a Pipeline 1, adapter=writeTableOtherMessage, pipe=writeTableOtherMessage, sender=writeTableOtherMessage} processors.InputOutputPipeLineProcessor - null value for messageId, setting to [ac1f0003--61af5f71_19450416f8a_-7ffb]2025-01-10 12:53:19,111 INFO [JmsListener [dequeue][1]] {cid=Test a Pipeline 1, adapter=writeTableOtherMessage, pipe=writeTableOtherMessage, sender=writeTableOtherMessage} pipes.SenderPipe - sent message to [writeTableOtherMessage-sender] synchronously2025-01-10 12:53:19,112 INFO [JmsListener [dequeue][1]] {cid=Test a Pipeline 1, adapter=writeTableOtherMessage, pipe=writeTableOtherMessage, sender=writeTableOtherMessage} core.Adapter - Adapter [writeTableOtherMessage] Pipeline finished processing message with messageId [null] with exit-state [SUCCESS]2025-01-10 12:53:19,125 INFO [JmsListener [dequeue][1]] {} pipes.SenderPipe - sent message to [writeTableOtherMessage] synchronously2025-01-10 12:53:19,127 INFO [JmsListener [dequeue][1]] {} core.Adapter - Adapter [writeDb] Pipeline finished processing message with messageId [ID:dd82c48b-cf51-11ef-a380-0242ac1f0003] with exit-state [SUCCESS]2025-01-10 12:53:19,127 INFO [JmsListener [dequeue][1]] {} jms.JmsListener - [dequeue] no replyTo address found or not configured to use replyTo, and no sender, not sending the result.2025-01-10 12:53:19,127 INFO [JmsListener [dequeue][1]] {} unmanaged.SpringJmsConnector - SpringJmsConnector of Receiver [JmsListener [dequeue]] A) JMSMessageTime [2025-01-10 12:53:18.740]2025-01-10 12:53:19,127 INFO [JmsListener [dequeue][1]] {} unmanaged.SpringJmsConnector - SpringJmsConnector of Receiver [JmsListener [dequeue]] B) onMessageStart [2025-01-10 12:53:19.046] diff (~'queing' time) [306]2025-01-10 12:53:19,127 INFO [JmsListener [dequeue][1]] {} unmanaged.SpringJmsConnector - SpringJmsConnector of Receiver [JmsListener [dequeue]] C) onMessageEnd [2025-01-10 12:53:19.127] diff (process time) [81]2025-01-10 12:53:19,156 WARN [JmsListener [dequeue][1]] {} ats.jta - ARJUNA016041: prepare on < formatId=131077, gtrid_length=64, bqual_length=36, tx_uid=0:ffffac1f0003:8d7d:678116e5:6bb, node_name=809f78c5f310-ac1f0003--61af5f71_1945, branch_uid=0:ffffac1f0003:8d7d:678116e5:6c1, subordinatenodename=null, eis_name=0 > (org.postgresql.xa.PGXAConnection@17ed0311) failed with exception XAException.XAER_RMFAILorg.postgresql.xa.PGXAException: Error preparing transaction. prepare xid=< formatId=131077, gtrid_length=64, bqual_length=36, tx_uid=0:ffffac1f0003:8d7d:678116e5:6bb, node_name=809f78c5f310-ac1f0003--61af5f71_1945, branch_uid=0:ffffac1f0003:8d7d:678116e5:6c1, subordinatenodename=null, eis_name=0 > at org.postgresql.xa.PGXAConnection.prepare(PGXAConnection.java:365) ~[postgresql.jar:42.7.4] at com.arjuna.ats.internal.jta.resources.arjunacore.XAResourceRecord.topLevelPrepare(XAResourceRecord.java:190) ~[narayana-jta-7.1.0.Final.jar:7.1.0.Final (revision: ab602)] at com.arjuna.ats.arjuna.coordinator.BasicAction.doPrepare(BasicAction.java:2799) ~[narayana-jta-7.1.0.Final.jar:7.1.0.Final (revision: ab602)] at com.arjuna.ats.arjuna.coordinator.BasicAction.doPrepare(BasicAction.java:2729) ~[narayana-jta-7.1.0.Final.jar:7.1.0.Final (revision: ab602)] at com.arjuna.ats.arjuna.coordinator.BasicAction.prepare(BasicAction.java:2236) ~[narayana-jta-7.1.0.Final.jar:7.1.0.Final (revision: ab602)] at com.arjuna.ats.arjuna.coordinator.BasicAction.End(BasicAction.java:1548) ~[narayana-jta-7.1.0.Final.jar:7.1.0.Final (revision: ab602)] at com.arjuna.ats.arjuna.coordinator.TwoPhaseCoordinator.end(TwoPhaseCoordinator.java:71) ~[narayana-jta-7.1.0.Final.jar:7.1.0.Final (revision: ab602)] at com.arjuna.ats.arjuna.AtomicAction.commit(AtomicAction.java:135) ~[narayana-jta-7.1.0.Final.jar:7.1.0.Final (revision: ab602)] at com.arjuna.ats.internal.jta.transaction.arjunacore.TransactionImple.commitAndDisassociate(TransactionImple.java:1307) ~[narayana-jta-7.1.0.Final.jar:7.1.0.Final (revision: ab602)] at com.arjuna.ats.internal.jta.transaction.arjunacore.BaseTransaction.commit(BaseTransaction.java:104) ~[narayana-jta-7.1.0.Final.jar:7.1.0.Final (revision: ab602)] at org.springframework.transaction.jta.JtaTransactionManager.doCommit(JtaTransactionManager.java:1026) ~[spring-tx-6.2.1.jar:6.2.1] at org.springframework.transaction.support.AbstractPlatformTransactionManager.processCommit(AbstractPlatformTransactionManager.java:795) ~[spring-tx-6.2.1.jar:6.2.1] at org.springframework.transaction.support.AbstractPlatformTransactionManager.commit(AbstractPlatformTransactionManager.java:758) ~[spring-tx-6.2.1.jar:6.2.1] at org.frankframework.jta.SpringTxManagerProxy.commit(SpringTxManagerProxy.java:72) ~[frankframework-core-9.1.0-20250107.042327.jar:9.1.0-20250107.042327] at org.springframework.jms.listener.AbstractPollingMessageListenerContainer.receiveAndExecute(AbstractPollingMessageListenerContainer.java:253) ~[spring-jms-6.2.1.jar:6.2.1] at org.frankframework.jms.IbisMessageListenerContainer.receiveAndExecute(IbisMessageListenerContainer.java:96) ~[frankframework-core-9.1.0-20250107.042327.jar:9.1.0-20250107.042327] at org.springframework.jms.listener.DefaultMessageListenerContainer$AsyncMessageListenerInvoker.invokeListener(DefaultMessageListenerContainer.java:1420) ~[spring-jms-6.2.1.jar:6.2.1] at org.springframework.jms.listener.DefaultMessageListenerContainer$AsyncMessageListenerInvoker.run(DefaultMessageListenerContainer.java:1294) ~[spring-jms-6.2.1.jar:6.2.1] at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source) ~[?:?] at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source) ~[?:?] at java.base/java.lang.Thread.run(Unknown Source) [?:?]Caused by: org.postgresql.util.PSQLException: ERROR: prepared transactions are disabled Hint: Set "max_prepared_transactions" to a nonzero value. at org.postgresql.core.v3.QueryExecutorImpl.receiveErrorResponse(QueryExecutorImpl.java:2733) ~[postgresql.jar:42.7.4] at org.postgresql.core.v3.QueryExecutorImpl.processResults(QueryExecutorImpl.java:2420) ~[postgresql.jar:42.7.4] at org.postgresql.core.v3.QueryExecutorImpl.execute(QueryExecutorImpl.java:372) ~[postgresql.jar:42.7.4] at org.postgresql.jdbc.PgStatement.executeInternal(PgStatement.java:517) ~[postgresql.jar:42.7.4] at org.postgresql.jdbc.PgStatement.execute(PgStatement.java:434) ~[postgresql.jar:42.7.4] at org.postgresql.jdbc.PgStatement.executeWithFlags(PgStatement.java:356) ~[postgresql.jar:42.7.4] at org.postgresql.jdbc.PgStatement.executeCachedSql(PgStatement.java:341) ~[postgresql.jar:42.7.4] at org.postgresql.jdbc.PgStatement.executeWithFlags(PgStatement.java:317) ~[postgresql.jar:42.7.4] at org.postgresql.jdbc.PgStatement.executeUpdate(PgStatement.java:290) ~[postgresql.jar:42.7.4] at org.postgresql.xa.PGXAConnection.prepare(PGXAConnection.java:357) ~[postgresql.jar:42.7.4] ... 20 more2025-01-10 12:53:19,158 WARN [JmsListener [dequeue][1]] {} ats.arjuna - ARJUNA012073: BasicAction.End() - prepare phase of action-id 0:ffffac1f0003:8d7d:678116e5:6bb failed.2025-01-10 12:53:19,158 WARN [JmsListener [dequeue][1]] {} ats.arjuna - ARJUNA012075: Action Aborting2025-01-10 12:53:19,168 WARN [JmsListener [dequeue][1]] {} ats.jta - ARJUNA016045: attempted rollback of < formatId=131077, gtrid_length=64, bqual_length=36, tx_uid=0:ffffac1f0003:8d7d:678116e5:6bb, node_name=809f78c5f310-ac1f0003--61af5f71_1945, branch_uid=0:ffffac1f0003:8d7d:678116e5:6c1, subordinatenodename=null, eis_name=0 > (org.postgresql.xa.PGXAConnection@17ed0311) failed with exception code XAException.XAER_RMERRorg.postgresql.xa.PGXAException: Error rolling back prepared transaction. rollback xid=< formatId=131077, gtrid_length=64, bqual_length=36, tx_uid=0:ffffac1f0003:8d7d:678116e5:6bb, node_name=809f78c5f310-ac1f0003--61af5f71_1945, branch_uid=0:ffffac1f0003:8d7d:678116e5:6c1, subordinatenodename=null, eis_name=0 >, preparedXid=< formatId=131077, gtrid_length=64, bqual_length=36, tx_uid=0:ffffac1f0003:8d7d:678116e5:6bb, node_name=809f78c5f310-ac1f0003--61af5f71_1945, branch_uid=0:ffffac1f0003:8d7d:678116e5:6c1, subordinatenodename=null, eis_name=0 >, currentXid=null at org.postgresql.xa.PGXAConnection.rollback(PGXAConnection.java:485) ~[postgresql.jar:42.7.4] at com.arjuna.ats.internal.jta.resources.arjunacore.XAResourceRecord.topLevelAbort(XAResourceRecord.java:318) ~[narayana-jta-7.1.0.Final.jar:7.1.0.Final (revision: ab602)] at com.arjuna.ats.arjuna.coordinator.BasicAction.doAbort(BasicAction.java:3158) ~[narayana-jta-7.1.0.Final.jar:7.1.0.Final (revision: ab602)] at com.arjuna.ats.arjuna.coordinator.BasicAction.doAbort(BasicAction.java:3137) ~[narayana-jta-7.1.0.Final.jar:7.1.0.Final (revision: ab602)] at com.arjuna.ats.arjuna.coordinator.BasicAction.phase2Abort(BasicAction.java:2056) ~[narayana-jta-7.1.0.Final.jar:7.1.0.Final (revision: ab602)] at com.arjuna.ats.arjuna.coordinator.BasicAction.End(BasicAction.java:1564) ~[narayana-jta-7.1.0.Final.jar:7.1.0.Final (revision: ab602)] at com.arjuna.ats.arjuna.coordinator.TwoPhaseCoordinator.end(TwoPhaseCoordinator.java:71) ~[narayana-jta-7.1.0.Final.jar:7.1.0.Final (revision: ab602)] at com.arjuna.ats.arjuna.AtomicAction.commit(AtomicAction.java:135) ~[narayana-jta-7.1.0.Final.jar:7.1.0.Final (revision: ab602)] at com.arjuna.ats.internal.jta.transaction.arjunacore.TransactionImple.commitAndDisassociate(TransactionImple.java:1307) ~[narayana-jta-7.1.0.Final.jar:7.1.0.Final (revision: ab602)] at com.arjuna.ats.internal.jta.transaction.arjunacore.BaseTransaction.commit(BaseTransaction.java:104) ~[narayana-jta-7.1.0.Final.jar:7.1.0.Final (revision: ab602)] at org.springframework.transaction.jta.JtaTransactionManager.doCommit(JtaTransactionManager.java:1026) ~[spring-tx-6.2.1.jar:6.2.1] at org.springframework.transaction.support.AbstractPlatformTransactionManager.processCommit(AbstractPlatformTransactionManager.java:795) ~[spring-tx-6.2.1.jar:6.2.1] at org.springframework.transaction.support.AbstractPlatformTransactionManager.commit(AbstractPlatformTransactionManager.java:758) ~[spring-tx-6.2.1.jar:6.2.1] at org.frankframework.jta.SpringTxManagerProxy.commit(SpringTxManagerProxy.java:72) ~[frankframework-core-9.1.0-20250107.042327.jar:9.1.0-20250107.042327] at org.springframework.jms.listener.AbstractPollingMessageListenerContainer.receiveAndExecute(AbstractPollingMessageListenerContainer.java:253) ~[spring-jms-6.2.1.jar:6.2.1] at org.frankframework.jms.IbisMessageListenerContainer.receiveAndExecute(IbisMessageListenerContainer.java:96) ~[frankframework-core-9.1.0-20250107.042327.jar:9.1.0-20250107.042327] at org.springframework.jms.listener.DefaultMessageListenerContainer$AsyncMessageListenerInvoker.invokeListener(DefaultMessageListenerContainer.java:1420) ~[spring-jms-6.2.1.jar:6.2.1] at org.springframework.jms.listener.DefaultMessageListenerContainer$AsyncMessageListenerInvoker.run(DefaultMessageListenerContainer.java:1294) ~[spring-jms-6.2.1.jar:6.2.1] at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source) ~[?:?] at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source) ~[?:?] at java.base/java.lang.Thread.run(Unknown Source) [?:?]Caused by: org.postgresql.util.PSQLException: ERROR: prepared transaction with identifier "131077_AAAAAAAAAAAAAP//rB8AAwAAjX1ngRblAAAGuzgwOWY3OGM1ZjMxMC1hYzFmMDAwMy0tNjFhZjVmNzFfMTk0NQ==_AAAAAAAAAAAAAP//rB8AAwAAjX1ngRblAAAGwQAAAAAAAAAA" does not exist at org.postgresql.core.v3.QueryExecutorImpl.receiveErrorResponse(QueryExecutorImpl.java:2733) ~[postgresql.jar:42.7.4] at org.postgresql.core.v3.QueryExecutorImpl.processResults(QueryExecutorImpl.java:2420) ~[postgresql.jar:42.7.4] at org.postgresql.core.v3.QueryExecutorImpl.execute(QueryExecutorImpl.java:372) ~[postgresql.jar:42.7.4] at org.postgresql.jdbc.PgStatement.executeInternal(PgStatement.java:517) ~[postgresql.jar:42.7.4] at org.postgresql.jdbc.PgStatement.execute(PgStatement.java:434) ~[postgresql.jar:42.7.4] at org.postgresql.jdbc.PgStatement.executeWithFlags(PgStatement.java:356) ~[postgresql.jar:42.7.4] at org.postgresql.jdbc.PgStatement.executeCachedSql(PgStatement.java:341) ~[postgresql.jar:42.7.4] at org.postgresql.jdbc.PgStatement.executeWithFlags(PgStatement.java:317) ~[postgresql.jar:42.7.4] at org.postgresql.jdbc.PgStatement.executeUpdate(PgStatement.java:290) ~[postgresql.jar:42.7.4] at org.postgresql.xa.PGXAConnection.rollback(PGXAConnection.java:462) ~[postgresql.jar:42.7.4] ... 20 more2025-01-10 12:53:19,172 WARN [JmsListener [dequeue][1]] {} ats.arjuna - ARJUNA012089: Top-level abort of action 0:ffffac1f0003:8d7d:678116e5:6bb received heuristic decision: TwoPhaseOutcome.HEURISTIC_HAZARD
Tim tried to help me. He suggested that the issue can be fixed by setting max_prepared_transactions. This is done in the PostgreSQL test image used by the core team.
The real problem here seems to be that he message is failing, but the application is not aware of this happening.
Rollback seems to happen after the application thinks it's done.
The real problem here seems to be that he message is failing, but the application is not aware of this happening. Rollback seems to happen after the application thinks it's done.
I have observed several other scenario's where a rollback happens after the adapter finished successfully that are not related to max_prepared_transactions not being set. The only common element I could see between them is that the transaction runs in to a timeout for some unknown reason, triggering a rollback. Interestingly enough, the adapter finishes as SUCCESS, but the message still ends up in the ErrorStore after the rollback.
Not sure if it is at all related, but maybe it helps.
Current Behavior
I have a Frank configuration that reads a message from an Artemis queue and writes it to two database tables in a PostgreSQL database. This happens in an XA transaction. In Ladybug the resulting report shows no issues, but when I query my tables the data is not in.
A log is included in this issue.
My message also does not appear in the error store I configured:
Expected Behavior
The input message appears in the database.
Environment Information
This was run using Docker Compose.
Steps To Reproduce
Run adapter writeDbAsync in Test a Pipeline.
Configuration
Input
No response
What database are you using?
No response
What browsers are you seeing the problem on?
No response
Relevant Log Output
Anything else?
v510.zip
The text was updated successfully, but these errors were encountered: