My Oracle Support Banner

Inbound AQAdapter Processes The Same Message Multiple Times (Doc ID 2886573.1)

Last updated on SEPTEMBER 24, 2023

Applies to:

Oracle Service Bus - Version 12.2.1.3.0 and later
Information 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


My Oracle Support provides customers with access to over a million knowledge articles and a vibrant support community of peers and Oracle experts.