[
https://issues.apache.org/jira/browse/OPENJPA-2212?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13294566#comment-13294566
]
Albert Lee commented on OPENJPA-2212:
-------------------------------------
>>> Very strange thing is the code exception catch block doesn't catch this
>>> exception at all and this happens only in stage environment and not in any
>>> lower environment.
I assume the exception you mentioned is "java.sql.SQLException: ORA-00001:
unique constraint (FIS.SYS_C008294) violated"
What catch block are you referring? Some openjpa code try/catch ? Or
application try/catch?
What do you mean by "lower environment"? Unit test environment?
>From the stack, it indicates you are running WebSphere, using EJB calling out
>to JPA function. The JPA appl uses "operation order" update manager access
>data in Oracle DB. Based on this info, the operation order update manager will
>honor the exact order of JPA requests from the business logics. If there is
>any constraint violation imposed by the database, the applications needs to be
>aware of the configuration.
To diagnose the problem, you may want to enable SQL=TRACE to see the SQL
statements being submitted to the database and examinate what is the cause of
the constraint violation.
> Exception caught from before_completion synchronization operation
> -----------------------------------------------------------------
>
> Key: OPENJPA-2212
> URL: https://issues.apache.org/jira/browse/OPENJPA-2212
> Project: OpenJPA
> Issue Type: Bug
> Components: jpa
> Affects Versions: 1.0.3
> Environment: Stage and Prod
> Reporter: RAHEEM JIWANI
> Priority: Critical
>
> Looks like this issue is an OpenJPA issue. Very strange thing is the code
> exception catch block doesn't catch this exception at all and this happens
> only in stage environment and not in any lower environment. Though QA and
> Stage have exact same code base and they both get data from same source.
> FROM the exception it looks like a duplicate primary key and its trying to
> insert the same record twice, is it something with flush operation in openjpa
> ? multithreading ? or something else ?
> its definately not data issue, coz it doesn't happen in QA with same data
> 00000287 RegisteredSyn E WTRN0074E: Exception caught from before_completion
> synchronization operation: <openjpa-1.0.3-SNAPSHOT-r420667:646455 nonfatal
> general error> org.apache.openjpa.persistence.PersistenceException:
> ORA-00001: unique constraint (FIS.SYS_C008294) violated
> FailedObject: prepstmnt 454695706 INSERT INTO TABLENAME COLUMNS (X,Y,Z ? , ?
> , ?) [org.apache.openjpa.jdbc.kernel.JDBCStoreManager$CancelPreparedStatement]
> [org.apache.openjpa.jdbc.kernel.JDBCStoreManager$CancelPreparedStatement]
> at
> org.apache.openjpa.jdbc.sql.DBDictionary.newStoreException(DBDictionary.java:3949)
> at
> org.apache.openjpa.jdbc.sql.SQLExceptions.getStore(SQLExceptions.java:97)
> at
> org.apache.openjpa.jdbc.sql.SQLExceptions.getStore(SQLExceptions.java:67)
> at
> com.ibm.ws.persistence.jdbc.kernel.PreparedStatementManagerImpl.flush(PreparedStatementManagerImpl.java:170)
> at
> org.apache.openjpa.jdbc.kernel.OperationOrderUpdateManager.flush(OperationOrderUpdateManager.java:105)
> at
> com.ibm.ws.persistence.jdbc.kernel.OperationOrderUpdateManager.flush(OperationOrderUpdateManager.java:93)
> at
> com.ibm.ws.persistence.jdbc.kernel.OperationOrderUpdateManager.flush(OperationOrderUpdateManager.java:75)
> at
> org.apache.openjpa.jdbc.kernel.JDBCStoreManager.flush(JDBCStoreManager.java:514)
> at
> org.apache.openjpa.kernel.DelegatingStoreManager.flush(DelegatingStoreManager.java:130)
> at org.apache.openjpa.kernel.BrokerImpl.flush(BrokerImpl.java:1955)
> at org.apache.openjpa.kernel.BrokerImpl.flushSafe(BrokerImpl.java:1853)
> at
> org.apache.openjpa.kernel.BrokerImpl.beforeCompletion(BrokerImpl.java:1771)
> at
> com.ibm.ws.uow.ComponentContextSynchronizationWrapper.beforeCompletion(ComponentContextSynchronizationWrapper.java:66)
> at
> com.ibm.ws.Transaction.JTA.RegisteredSyncs.distributeBefore(RegisteredSyncs.java:242)
> at
> com.ibm.ws.Transaction.JTA.TransactionImpl.prePrepare(TransactionImpl.java:2404)
> at
> com.ibm.ws.Transaction.JTA.TransactionImpl.stage1CommitProcessing(TransactionImpl.java:1637)
> at
> com.ibm.ws.Transaction.JTA.TransactionImpl.processCommit(TransactionImpl.java:1608)
> at
> com.ibm.ws.Transaction.JTA.TransactionImpl.commit(TransactionImpl.java:1543)
> at
> com.ibm.ws.Transaction.JTA.TranManagerImpl.commit(TranManagerImpl.java:240)
> at
> com.ibm.ws.Transaction.JTA.TranManagerSet.commit(TranManagerSet.java:164)
> at com.ibm.ejs.csi.TranStrategy.commit(TranStrategy.java:782)
> at com.ibm.ejs.csi.TranStrategy.postInvoke(TranStrategy.java:206)
> at
> com.ibm.ejs.csi.TransactionControlImpl.postInvoke(TransactionControlImpl.java:581)
> at com.ibm.ejs.container.EJSContainer.postInvoke(EJSContainer.java:4311)
> at
> com.ibm.ejs.container.MessageEndpointHandler.afterDelivery(MessageEndpointHandler.java:1440)
> at
> com.ibm.ejs.container.MessageEndpointHandler.invokeMessageEndpointMethod(MessageEndpointHandler.java:801)
> at
> com.ibm.ejs.container.MessageEndpointHandler.invoke(MessageEndpointHandler.java:762)
> at $Proxy54.afterDelivery(Unknown Source)
> at
> com.ibm.ws.sib.ra.inbound.impl.SibRaTransactionalDispatcher.afterDelivery(SibRaTransactionalDispatcher.java:469)
> at
> com.ibm.ws.sib.ra.inbound.impl.SibRaDispatcher.dispatch(SibRaDispatcher.java:780)
> at
> com.ibm.ws.sib.ra.inbound.impl.SibRaSingleProcessListener$SibRaWork.run(SibRaSingleProcessListener.java:584)
> at com.ibm.ejs.j2c.work.WorkProxy.run(WorkProxy.java:419)
> at com.ibm.ws.util.ThreadPool$Worker.run(ThreadPool.java:1473)
> Caused by: com.ibm.websphere.ce.cm.DuplicateKeyException: ORA-00001: unique
> constraint (FIS.SYS_C008294) violated
> at sun.reflect.GeneratedConstructorAccessor39.newInstance(Unknown
> Source)
> at
> sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
> at java.lang.reflect.Constructor.newInstance(Constructor.java:522)
> at
> com.ibm.websphere.rsadapter.GenericDataStoreHelper.mapExceptionHelper(GenericDataStoreHelper.java:523)
> at
> com.ibm.websphere.rsadapter.GenericDataStoreHelper.mapException(GenericDataStoreHelper.java:578)
> at
> com.ibm.ws.rsadapter.jdbc.WSJdbcUtil.mapException(WSJdbcUtil.java:909)
> at
> com.ibm.ws.rsadapter.jdbc.WSJdbcPreparedStatement.executeUpdate(WSJdbcPreparedStatement.java:626)
> at
> org.apache.openjpa.lib.jdbc.DelegatingPreparedStatement.executeUpdate(DelegatingPreparedStatement.java:269)
> at
> org.apache.openjpa.lib.jdbc.LoggingConnectionDecorator$LoggingConnection$LoggingPreparedStatement.executeUpdate(LoggingConnectionDecorator.java:856)
> at
> org.apache.openjpa.lib.jdbc.DelegatingPreparedStatement.executeUpdate(DelegatingPreparedStatement.java:269)
> at
> org.apache.openjpa.jdbc.kernel.JDBCStoreManager$CancelPreparedStatement.executeUpdate(JDBCStoreManager.java:1363)
> at
> com.ibm.ws.persistence.jdbc.kernel.PreparedStatementManagerImpl.flush(PreparedStatementManagerImpl.java:112)
> ... 29 more
> NestedThrowables:
> java.sql.SQLException: ORA-00001: unique constraint (FIS.SYS_C008294) violated
> at
> oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:112)
> at oracle.jdbc.driver.T4CTTIoer.processError(T4CTTIoer.java:331)
> at oracle.jdbc.driver.T4CTTIoer.processError(T4CTTIoer.java:288)
> at oracle.jdbc.driver.T4C8Oall.receive(T4C8Oall.java:743)
> at
> oracle.jdbc.driver.T4CPreparedStatement.doOall8(T4CPreparedStatement.java:216)
> at
> oracle.jdbc.driver.T4CPreparedStatement.executeForRows(T4CPreparedStatement.java:955)
> at
> oracle.jdbc.driver.OracleStatement.doExecuteWithTimeout(OracleStatement.java:1168)
> at
> oracle.jdbc.driver.OraclePreparedStatement.executeInternal(OraclePreparedStatement.java:3316)
> at
> oracle.jdbc.driver.OraclePreparedStatement.executeUpdate(OraclePreparedStatement.java:3400)
> at
> com.ibm.ws.rsadapter.jdbc.WSJdbcPreparedStatement.pmiExecuteUpdate(WSJdbcPreparedStatement.java:948)
> at
> com.ibm.ws.rsadapter.jdbc.WSJdbcPreparedStatement.executeUpdate(WSJdbcPreparedStatement.java:615)
> at
> org.apache.openjpa.lib.jdbc.DelegatingPreparedStatement.executeUpdate(DelegatingPreparedStatement.java:269)
> at
> org.apache.openjpa.lib.jdbc.LoggingConnectionDecorator$LoggingConnection$LoggingPreparedStatement.executeUpdate(LoggingConnectionDecorator.java:856)
> at
> org.apache.openjpa.lib.jdbc.DelegatingPreparedStatement.executeUpdate(DelegatingPreparedStatement.java:269)
> at
> org.apache.openjpa.jdbc.kernel.JDBCStoreManager$CancelPreparedStatement.executeUpdate(JDBCStoreManager.java:1363)
> at
> com.ibm.ws.persistence.jdbc.kernel.PreparedStatementManagerImpl.flush(PreparedStatementManagerImpl.java:112)
> at
> org.apache.openjpa.jdbc.kernel.OperationOrderUpdateManager.flush(OperationOrderUpdateManager.java:105)
> at
> com.ibm.ws.persistence.jdbc.kernel.OperationOrderUpdateManager.flush(OperationOrderUpdateManager.java:93)
> at
> com.ibm.ws.persistence.jdbc.kernel.OperationOrderUpdateManager.flush(OperationOrderUpdateManager.java:75)
> at
> org.apache.openjpa.jdbc.kernel.JDBCStoreManager.flush(JDBCStoreManager.java:514)
> at
> org.apache.openjpa.kernel.DelegatingStoreManager.flush(DelegatingStoreManager.java:130)
> at org.apache.openjpa.kernel.BrokerImpl.flush(BrokerImpl.java:1955)
> at org.apache.openjpa.kernel.BrokerImpl.flushSafe(BrokerImpl.java:1853)
> at
> org.apache.openjpa.kernel.BrokerImpl.beforeCompletion(BrokerImpl.java:1771)
> at
> com.ibm.ws.uow.ComponentContextSynchronizationWrapper.beforeCompletion(ComponentContextSynchronizationWrapper.java:66)
> at
> com.ibm.ws.Transaction.JTA.RegisteredSyncs.distributeBefore(RegisteredSyncs.java:242)
> at
> com.ibm.ws.Transaction.JTA.TransactionImpl.prePrepare(TransactionImpl.java:2404)
> at
> com.ibm.ws.Transaction.JTA.TransactionImpl.stage1CommitProcessing(TransactionImpl.java:1637)
> at
> com.ibm.ws.Transaction.JTA.TransactionImpl.processCommit(TransactionImpl.java:1608)
> at
> com.ibm.ws.Transaction.JTA.TransactionImpl.commit(TransactionImpl.java:1543)
> at
> com.ibm.ws.Transaction.JTA.TranManagerImpl.commit(TranManagerImpl.java:240)
> at
> com.ibm.ws.Transaction.JTA.TranManagerSet.commit(TranManagerSet.java:164)
> at com.ibm.ejs.csi.TranStrategy.commit(TranStrategy.java:782)
> at com.ibm.ejs.csi.TranStrategy.postInvoke(TranStrategy.java:206)
> at
> com.ibm.ejs.csi.TransactionControlImpl.postInvoke(TransactionControlImpl.java:581)
> at com.ibm.ejs.container.EJSContainer.postInvoke(EJSContainer.java:4311)
> at
> com.ibm.ejs.container.MessageEndpointHandler.afterDelivery(MessageEndpointHandler.java:1440)
> at
> com.ibm.ejs.container.MessageEndpointHandler.invokeMessageEndpointMethod(MessageEndpointHandler.java:801)
> at
> com.ibm.ejs.container.MessageEndpointHandler.invoke(MessageEndpointHandler.java:762)
> at $Proxy54.afterDelivery(Unknown Source)
> at
> com.ibm.ws.sib.ra.inbound.impl.SibRaTransactionalDispatcher.afterDelivery(SibRaTransactionalDispatcher.java:469)
> at
> com.ibm.ws.sib.ra.inbound.impl.SibRaDispatcher.dispatch(SibRaDispatcher.java:780)
> at
> com.ibm.ws.sib.ra.inbound.impl.SibRaSingleProcessListener$SibRaWork.run(SibRaSingleProcessListener.java:584)
> at com.ibm.ejs.j2c.work.WorkProxy.run(WorkProxy.java:419)
> at com.ibm.ws.util.ThreadPool$Worker.run(ThreadPool.java:1473)
> ---- Begin backtrace for Nested Throwables
> java.sql.SQLException: ORA-00001: unique constraint (FIS.SYS_C008294) violated
> at
> oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:112)
> at oracle.jdbc.driver.T4CTTIoer.processError(T4CTTIoer.java:331)
> at oracle.jdbc.driver.T4CTTIoer.processError(T4CTTIoer.java:288)
> at oracle.jdbc.driver.T4C8Oall.receive(T4C8Oall.java:743)
> at
> oracle.jdbc.driver.T4CPreparedStatement.doOall8(T4CPreparedStatement.java:216)
> at
> oracle.jdbc.driver.T4CPreparedStatement.executeForRows(T4CPreparedStatement.java:955)
> at
> oracle.jdbc.driver.OracleStatement.doExecuteWithTimeout(OracleStatement.java:1168)
> at
> oracle.jdbc.driver.OraclePreparedStatement.executeInternal(OraclePreparedStatement.java:3316)
> at
> oracle.jdbc.driver.OraclePreparedStatement.executeUpdate(OraclePreparedStatement.java:3400)
> at
> com.ibm.ws.rsadapter.jdbc.WSJdbcPreparedStatement.pmiExecuteUpdate(WSJdbcPreparedStatement.java:948)
> at
> com.ibm.ws.rsadapter.jdbc.WSJdbcPreparedStatement.executeUpdate(WSJdbcPreparedStatement.java:615)
> at
> org.apache.openjpa.lib.jdbc.DelegatingPreparedStatement.executeUpdate(DelegatingPreparedStatement.java:269)
> at
> org.apache.openjpa.lib.jdbc.LoggingConnectionDecorator$LoggingConnection$LoggingPreparedStatement.executeUpdate(LoggingConnectionDecorator.java:856)
> at
> org.apache.openjpa.lib.jdbc.DelegatingPreparedStatement.executeUpdate(DelegatingPreparedStatement.java:269)
> at
> org.apache.openjpa.jdbc.kernel.JDBCStoreManager$CancelPreparedStatement.executeUpdate(JDBCStoreManager.java:1363)
> at
> com.ibm.ws.persistence.jdbc.kernel.PreparedStatementManagerImpl.flush(PreparedStatementManagerImpl.java:112)
> at
> org.apache.openjpa.jdbc.kernel.OperationOrderUpdateManager.flush(OperationOrderUpdateManager.java:105)
> at
> com.ibm.ws.persistence.jdbc.kernel.OperationOrderUpdateManager.flush(OperationOrderUpdateManager.java:93)
> at
> com.ibm.ws.persistence.jdbc.kernel.OperationOrderUpdateManager.flush(OperationOrderUpdateManager.java:75)
> at
> org.apache.openjpa.jdbc.kernel.JDBCStoreManager.flush(JDBCStoreManager.java:514)
> at
> org.apache.openjpa.kernel.DelegatingStoreManager.flush(DelegatingStoreManager.java:130)
> at org.apache.openjpa.kernel.BrokerImpl.flush(BrokerImpl.java:1955)
> at org.apache.openjpa.kernel.BrokerImpl.flushSafe(BrokerImpl.java:1853)
> at
> org.apache.openjpa.kernel.BrokerImpl.beforeCompletion(BrokerImpl.java:1771)
> at
> com.ibm.ws.uow.ComponentContextSynchronizationWrapper.beforeCompletion(ComponentContextSynchronizationWrapper.java:66)
> at
> com.ibm.ws.Transaction.JTA.RegisteredSyncs.distributeBefore(RegisteredSyncs.java:242)
> at
> com.ibm.ws.Transaction.JTA.TransactionImpl.prePrepare(TransactionImpl.java:2404)
> at
> com.ibm.ws.Transaction.JTA.TransactionImpl.stage1CommitProcessing(TransactionImpl.java:1637)
> at
> com.ibm.ws.Transaction.JTA.TransactionImpl.processCommit(TransactionImpl.java:1608)
> at
> com.ibm.ws.Transaction.JTA.TransactionImpl.commit(TransactionImpl.java:1543)
> at
> com.ibm.ws.Transaction.JTA.TranManagerImpl.commit(TranManagerImpl.java:240)
> at
> com.ibm.ws.Transaction.JTA.TranManagerSet.commit(TranManagerSet.java:164)
> at com.ibm.ejs.csi.TranStrategy.commit(TranStrategy.java:782)
> at com.ibm.ejs.csi.TranStrategy.postInvoke(TranStrategy.java:206)
> at
> com.ibm.ejs.csi.TransactionControlImpl.postInvoke(TransactionControlImpl.java:581)
> at com.ibm.ejs.container.EJSContainer.postInvoke(EJSContainer.java:4311)
> at
> com.ibm.ejs.container.MessageEndpointHandler.afterDelivery(MessageEndpointHandler.java:1440)
> at
> com.ibm.ejs.container.MessageEndpointHandler.invokeMessageEndpointMethod(MessageEndpointHandler.java:801)
> at
> com.ibm.ejs.container.MessageEndpointHandler.invoke(MessageEndpointHandler.java:762)
> at $Proxy54.afterDelivery(Unknown Source)
> at
> com.ibm.ws.sib.ra.inbound.impl.SibRaTransactionalDispatcher.afterDelivery(SibRaTransactionalDispatcher.java:469)
> at
> com.ibm.ws.sib.ra.inbound.impl.SibRaDispatcher.dispatch(SibRaDispatcher.java:780)
> at
> com.ibm.ws.sib.ra.inbound.impl.SibRaSingleProcessListener$SibRaWork.run(SibRaSingleProcessListener.java:584)
> at com.ibm.ejs.j2c.work.WorkProxy.run(WorkProxy.java:419)
> at com.ibm.ws.util.ThreadPool$Worker.run(ThreadPool.java:1473)
--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators:
https://issues.apache.org/jira/secure/ContactAdministrators!default.jspa
For more information on JIRA, see: http://www.atlassian.com/software/jira