Inbound AQAdapter Processes The Same Message Multiple Times
(Doc ID 2886573.1)
Last updated on AUGUST 02, 2024
Applies to:
Oracle Service Bus - Version 12.2.1.3.0 and laterInformation in this document applies to any platform.
Symptoms
On : 12.2.1.3.0 version, OSB Transports
ACTUAL BEHAVIOR
---------------
inbound AQAdapter processes message twice
It was developed an interface on the proxy service OSB from an AQ. When the interface runs on the production environment (which has two managed servers) the following behavior occurs:
If process takes less than a minute it works properly, the message is deleted from the queue.
If it takes longer, the OSB starts processing it twice. If it takes longer than 5 minutes, there is a time out on the business service, and although this time out was captured and the pipeline was finished with a success reply activity, the message is not deleted from the queue, and the OSB starts to reprocess the message again.
The only way to stop the reprocess is to manually delete the message on the advanced queue.
Error in the logs when the issue occurs:
Jun 28, 2022 4:36:09,148 AM EDT> <Warning> <oracle.soa.adapter.db.toplinkall> <BEA-000000> <[reference_name: SGP/Shipments/v1.0/Service/Business/BS_PR_InsertUpdate_db]
Exception [EclipseLink-4002] (Eclipse Persistence Services - 2.6.5.v20170607-b3d05bd): org.eclipse.persistence.exceptions.DatabaseException
Internal Exception: java.sql.SQLException: Unexpected exception while enlisting XAConnection java.sql.SQLException: XA error: XAResource.XAER_NOTA start() failed on resource 'SGP_XA_OSB_Domain': XAER_NOTA : The XID is not valid
oracle.jdbc.xa.OracleXAException: XAErr (-4): The XID is not valid. ORA-24756 SQLErr (0)
at oracle.jdbc.xa.OracleXAResource.checkError(OracleXAResource.java:1113)
at oracle.jdbc.xa.client.OracleXAResource.start(OracleXAResource.java:266)
at weblogic.jdbc.jta.DataSource.start(DataSource.java:835)
at weblogic.transaction.internal.XAServerResourceInfo.start(XAServerResourceInfo.java:1395)
at weblogic.transaction.internal.XAServerResourceInfo.xaStart(XAServerResourceInfo.java:1326)
at weblogic.transaction.internal.XAServerResourceInfo.enlist(XAServerResourceInfo.java:313)
at weblogic.transaction.internal.ServerTransactionImpl.enlistResource(ServerTransactionImpl.java:686)
at weblogic.transaction.internal.ServerTransactionImpl.enlistResource(ServerTransactionImpl.java:505)
at weblogic.jdbc.jta.DataSource.enlist(DataSource.java:1778)
at weblogic.jdbc.jta.DataSource.refreshXAConnAndEnlist(DataSource.java:1680)
at weblogic.jdbc.jta.DataSource.getConnectionInternal(DataSource.java:520)
at weblogic.jdbc.jta.DataSource.getConnection(DataSource.java:497)
at weblogic.jdbc.common.internal.RmiDataSource.getConnectionInternal(RmiDataSource.java:614)
........
at oracle.tip.adapter.aq.v2.database.AbstractDequeueAgent$AQDeliveryBean.sendInboundRecord(AbstractDequeueAgent.java:645)
at oracle.tip.adapter.aq.v2.database.AbstractDequeueAgent.runInbound(AbstractDequeueAgent.java:159)
at oracle.tip.adapter.aq.v2.database.AbstractDequeueAgent.run(AbstractDequeueAgent.java:106)
at oracle.tip.adapter.sa.impl.fw.jca.work.WorkerJob.go(WorkerJob.java:53)
at oracle.tip.adapter.sa.impl.fw.common.ThreadPool.run(ThreadPool.java:281)
at java.lang.Thread.run(Thread.java:748)
Caused by: java.sql.SQLException: ORA-24756: transaction does not exist
at oracle.jdbc.driver.T4CTTIoer11.processError(T4CTTIoer11.java:495)
at oracle.jdbc.driver.T4CTTIoer11.processError(T4CTTIoer11.java:442)
at oracle.jdbc.driver.T4CTTIoer11.processError(T4CTTIoer11.java:437)
at oracle.jdbc.driver.T4CTTIfun.processError(T4CTTIfun.java:1062)
at oracle.jdbc.driver.T4CTTIfun.receive(T4CTTIfun.java:624)
at oracle.jdbc.driver.T4CTTIfun.doRPC(T4CTTIfun.java:253)
at oracle.jdbc.driver.T4CTTIOtxse.doOTXSE(T4CTTIOtxse.java:167)
at oracle.jdbc.driver.T4CXAResource.doStart(T4CXAResource.java:210)
at oracle.jdbc.xa.client.OracleXAResource.start(OracleXAResource.java:261)
... 121 more
at weblogic.jdbc.jta.DataSource.enlist(DataSource.java:1784)
at weblogic.jdbc.jta.DataSource.refreshXAConnAndEnlist(DataSource.java:1680)
at weblogic.jdbc.jta.DataSource.getConnectionInternal(DataSource.java:520)
at weblogic.jdbc.jta.DataSource.getConnection(DataSource.java:497)
at weblogic.jdbc.common.internal.RmiDataSource.getConnectionInternal(RmiDataSource.java:614)
at weblogic.jdbc.common.internal.RmiDataSource.getConnection(RmiDataSource.java:594)
.......
at oracle.tip.adapter.aq.v2.database.AbstractDequeueAgent.runInbound(AbstractDequeueAgent.java:159)
at oracle.tip.adapter.aq.v2.database.AbstractDequeueAgent.run(AbstractDequeueAgent.java:106)
at oracle.tip.adapter.sa.impl.fw.jca.work.WorkerJob.go(WorkerJob.java:53)
at oracle.tip.adapter.sa.impl.fw.common.ThreadPool.run(ThreadPool.java:281)
at java.lang.Thread.run(Thread.java:748)
Error Code: 0
at org.eclipse.persistence.exceptions.DatabaseException.sqlException(DatabaseException.java:316)
at org.eclipse.persistence.sessions.JNDIConnector.connect(JNDIConnector.java:147)
at org.eclipse.persistence.sessions.DatasourceLogin.connectToDatasource(DatasourceLogin.java:162)
at org.eclipse.persistence.internal.databaseaccess.DatasourceAccessor.connectInternal(DatasourceAccessor.java:346)
at org.eclipse.persistence.internal.databaseaccess.DatabaseAccessor.connectInternal(DatabaseAccessor.java:309)
at org.eclipse.persistence.internal.databaseaccess.DatasourceAccessor.reconnect(DatasourceAccessor.java:581)
at org.eclipse.persistence.internal.databaseaccess.DatabaseAccessor.reconnect(DatabaseAccessor.java:1634)
......
at oracle.tip.adapter.aq.v2.database.AbstractDequeueAgent$AQDeliveryBean.sendInboundRecord(AbstractDequeueAgent.java:645)
at oracle.tip.adapter.aq.v2.database.AbstractDequeueAgent.runInbound(AbstractDequeueAgent.java:159)
at oracle.tip.adapter.aq.v2.database.AbstractDequeueAgent.run(AbstractDequeueAgent.java:106)
at oracle.tip.adapter.sa.impl.fw.jca.work.WorkerJob.go(WorkerJob.java:53)
at oracle.tip.adapter.sa.impl.fw.common.ThreadPool.run(ThreadPool.java:281)
at java.lang.Thread.run(Thread.java:748)
Caused By: java.sql.SQLException: Unexpected exception while enlisting XAConnection java.sql.SQLException: XA error: XAResource.XAER_NOTA start() failed on resource 'SGP_XA_OSB_Domain': XAER_NOTA : The XID is not valid
oracle.jdbc.xa.OracleXAException: XAErr (-4): The XID is not valid. ORA-24756 SQLErr (0)
at oracle.jdbc.xa.OracleXAResource.checkError(OracleXAResource.java:1113)
at oracle.jdbc.xa.client.OracleXAResource.start(OracleXAResource.java:266)
at weblogic.jdbc.jta.DataSource.start(DataSource.java:835)
at weblogic.transaction.internal.XAServerResourceInfo.start(XAServerResourceInfo.java:1395)
at weblogic.transaction.internal.XAServerResourceInfo.xaStart(XAServerResourceInfo.java:1326)
at weblogic.transaction.internal.XAServerResourceInfo.enlist(XAServerResourceInfo.java:313)
at weblogic.transaction.internal.ServerTransactionImpl.enlistResource(ServerTransactionImpl.java:686)
at weblogic.transaction.internal.ServerTransactionImpl.enlistResource(ServerTransactionImpl.java:505)
at weblogic.jdbc.jta.DataSource.enlist(DataSource.java:1778)
at weblogic.jdbc.jta.DataSource.refreshXAConnAndEnlist(DataSource.java:1680)
at weblogic.jdbc.jta.DataSource.getConnectionInternal(DataSource.java:520)
at weblogic.jdbc.jta.DataSource.getConnection(DataSource.java:497)
at weblogic.jdbc.common.internal.RmiDataSource.getConnectionInternal(RmiDataSource.java:614)
at weblogic.jdbc.common.internal.RmiDataSource.getConnection(RmiDataSource.java:594)
......
at oracle.tip.adapter.sa.impl.fw.jca.work.WorkerJob.go(WorkerJob.java:53)
at oracle.tip.adapter.sa.impl.fw.common.ThreadPool.run(ThreadPool.java:281)
at java.lang.Thread.run(Thread.java:748)
Caused by: java.sql.SQLException: ORA-24756: transaction does not exist
at oracle.jdbc.driver.T4CTTIoer11.processError(T4CTTIoer11.java:495)
at oracle.jdbc.driver.T4CTTIoer11.processError(T4CTTIoer11.java:442)
at oracle.jdbc.driver.T4CTTIoer11.processError(T4CTTIoer11.java:437)
at oracle.jdbc.driver.T4CTTIfun.processError(T4CTTIfun.java:1062)
at oracle.jdbc.driver.T4CTTIfun.receive(T4CTTIfun.java:624)
at oracle.jdbc.driver.T4CTTIfun.doRPC(T4CTTIfun.java:253)
at oracle.jdbc.driver.T4CTTIOtxse.doOTXSE(T4CTTIOtxse.java:167)
at oracle.jdbc.driver.T4CXAResource.doStart(T4CXAResource.java:210)
at oracle.jdbc.xa.client.OracleXAResource.start(OracleXAResource.java:261)
... 121 more
at weblogic.jdbc.jta.DataSource.enlist(DataSource.java:1784)
at weblogic.jdbc.jta.DataSource.refreshXAConnAndEnlist(DataSource.java:1680)
at weblogic.jdbc.jta.DataSource.getConnectionInternal(DataSource.java:520)
at weblogic.jdbc.jta.DataSource.getConnection(DataSource.java:497)
at weblogic.jdbc.common.internal.RmiDataSource.getConnectionInternal(RmiDataSource.java:614)
at weblogic.jdbc.common.internal.RmiDataSource.getConnection(RmiDataSource.java:594)
at weblogic.jdbc.common.internal.RmiDataSource.getConnection(RmiDataSource.java:587)
.....
at oracle.tip.adapter.sa.impl.fw.common.ThreadPool.run(ThreadPool.java:281)
at java.lang.Thread.run(Thread.java:748)
at weblogic.jdbc.jta.DataSource.refreshXAConnAndEnlist(DataSource.java:1701)
at weblogic.jdbc.jta.DataSource.getConnectionInternal(DataSource.java:520)
at weblogic.jdbc.jta.DataSource.getConnection(DataSource.java:497)
at weblogic.jdbc.common.internal.RmiDataSource.getConnectionInternal(RmiDataSource.java:614)
at weblogic.jdbc.common.internal.RmiDataSource.getConnection(RmiDataSource.java:594)
at weblogic.jdbc.common.internal.RmiDataSource.getConnection(RmiDataSource.java:587)
at org.eclipse.persistence.sessions.JNDIConnector.connect(JNDIConnector.java:135)
at org.eclipse.persistence.sessions.DatasourceLogin.connectToDatasource(DatasourceLogin.java:162)
at org.eclipse.persistence.internal.databaseaccess.DatasourceAccessor.connectInternal(DatasourceAccessor.java:346)
at org.eclipse.persistence.internal.databaseaccess.DatabaseAccessor.connectInternal(DatabaseAccessor.java:309)
at org.eclipse.persistence.internal.databaseaccess.DatasourceAccessor.reconnect(DatasourceAccessor.java:581)
at org.eclipse.persistence.internal.databaseaccess.DatabaseAccessor.reconnect(DatabaseAccessor.java:1634)
at org.eclipse.persistence.internal.databaseaccess.DatasourceAccessor.incrementCallCount(DatasourceAccessor.java:321)
........
at oracle.tip.adapter.aq.v2.database.AbstractDequeueAgent.runInbound(AbstractDequeueAgent.java:159)
at oracle.tip.adapter.aq.v2.database.AbstractDequeueAgent.run(AbstractDequeueAgent.java:106)
at oracle.tip.adapter.sa.impl.fw.jca.work.WorkerJob.go(WorkerJob.java:53)
at oracle.tip.adapter.sa.impl.fw.common.ThreadPool.run(ThreadPool.java:281)
at java.lang.Thread.run(Thread.java:748)
>
EXPECTED BEHAVIOR
-----------------------
The message to processed only once and be deleted from the queue if the process takes more than a minute.
Cause
To view full details, sign in with your My Oracle Support account. |
|
Don't have a My Oracle Support account? Click to get started! |
In this Document
Symptoms |
Cause |
Solution |
References |