openjpa-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Albert Lee (JIRA)" <j...@apache.org>
Subject [jira] [Commented] (OPENJPA-2212) Exception caught from before_completion synchronization operation
Date Wed, 13 Jun 2012 17:13:42 GMT

    [ 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

        

Mime
View raw message