[ 
https://issues.apache.org/jira/browse/ODE-804?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12855948#action_12855948
 ] 

David Carver commented on ODE-804:
----------------------------------

So if I understand this right, ODE is not currently handling this in either 
case:

http://ode.apache.org/ambiguousreceive.html

"ODE does not currently throw this fault. Instead, one of the inbound message 
activitie will "win" and consume the message."

As according to that document one of the items should win and the process would 
continue.   But since it is continuing we could run into either a duplicate 
selector or duplicate correlation keys being added to the route.


> Correlation unique constraint violation problem
> -----------------------------------------------
>
>                 Key: ODE-804
>                 URL: https://issues.apache.org/jira/browse/ODE-804
>             Project: ODE
>          Issue Type: Bug
>          Components: BPEL Runtime
>    Affects Versions: 1.3.3
>         Environment: DAO Hibernate
>            Reporter: Rafal Rusin
>            Assignee: Rafal Rusin
>         Attachments: correlationUnicityTest.diff
>
>
> This happens when 2 instances are trying to do receive on the same 
> correlation key and operation:
>  04...@12:56:16 WARN  (GeronimoLog.java:96)     - Unexpected exception from 
> beforeCompletion; transaction will roll back
>  org.hibernate.exception.ConstraintViolationException: could not insert: 
> [org.apache.ode.daohib.bpel.hobj.HCorrelatorSelector]
>       at 
> org.hibernate.exception.SQLStateConverter.convert(SQLStateConverter.java:71)
>       at 
> org.hibernate.exception.JDBCExceptionHelper.convert(JDBCExceptionHelper.java:43)
>       at 
> org.hibernate.persister.entity.AbstractEntityPersister.insert(AbstractEntityPersister.java:2267)
>       at 
> org.hibernate.persister.entity.AbstractEntityPersister.insert(AbstractEntityPersister.java:2660)
>       at 
> org.hibernate.action.EntityInsertAction.execute(EntityInsertAction.java:56)
>       at org.hibernate.engine.ActionQueue.execute(ActionQueue.java:250)
>       at org.hibernate.engine.ActionQueue.executeActions(ActionQueue.java:234)
>       at org.hibernate.engine.ActionQueue.executeActions(ActionQueue.java:141)
>       at 
> org.hibernate.event.def.AbstractFlushingEventListener.performExecutions(AbstractFlushingEventListener.java:298)
>       at 
> org.hibernate.event.def.DefaultFlushEventListener.onFlush(DefaultFlushEventListener.java:27)
>       at org.hibernate.impl.SessionImpl.flush(SessionImpl.java:1000)
>       at org.hibernate.impl.SessionImpl.managedFlush(SessionImpl.java:338)
>       at 
> org.hibernate.transaction.CacheSynchronization.beforeCompletion(CacheSynchronization.java:59)
>       at 
> org.apache.geronimo.transaction.manager.TransactionImpl.beforeCompletion(TransactionImpl.java:514)
>       at 
> org.apache.geronimo.transaction.manager.TransactionImpl.beforeCompletion(TransactionImpl.java:498)
>       at 
> org.apache.geronimo.transaction.manager.TransactionImpl.beforePrepare(TransactionImpl.java:400)
>       at 
> org.apache.geronimo.transaction.manager.TransactionImpl.commit(TransactionImpl.java:257)
>       at 
> org.apache.geronimo.transaction.manager.TransactionManagerImpl.commit(TransactionManagerImpl.java:238)
>       at 
> org.apache.ode.scheduler.simple.SimpleScheduler.execTransaction(SimpleScheduler.java:288)
>       at 
> org.apache.ode.scheduler.simple.SimpleScheduler.execTransaction(SimpleScheduler.java:236)
>       at 
> org.apache.ode.scheduler.simple.SimpleScheduler$RunJob.call(SimpleScheduler.java:509)
>       at 
> org.apache.ode.scheduler.simple.SimpleScheduler$RunJob.call(SimpleScheduler.java:493)
>       at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:269)
>       at java.util.concurrent.FutureTask.run(FutureTask.java:123)
>       at 
> java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:650)
>       at 
> java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:675)
>       at java.lang.Thread.run(Thread.java:595)
> Caused by: java.sql.SQLException: The statement was aborted because it would 
> have caused a duplicate key value in a unique or primary key constraint or 
> unique index identified by 'SQL100412005552361' defined on 'BPEL_SELECTORS'.
>       at 
> org.apache.derby.impl.jdbc.SQLExceptionFactory.getSQLException(Unknown Source)
>       at org.apache.derby.impl.jdbc.Util.generateCsSQLException(Unknown 
> Source)
>       at 
> org.apache.derby.impl.jdbc.TransactionResourceImpl.wrapInSQLException(Unknown 
> Source)
>       at 
> org.apache.derby.impl.jdbc.TransactionResourceImpl.handleException(Unknown 
> Source)
>       at org.apache.derby.impl.jdbc.EmbedConnection.handleException(Unknown 
> Source)
>       at org.apache.derby.impl.jdbc.ConnectionChild.handleException(Unknown 
> Source)
>       at org.apache.derby.impl.jdbc.EmbedStatement.executeStatement(Unknown 
> Source)
>       at 
> org.apache.derby.impl.jdbc.EmbedPreparedStatement.executeStatement(Unknown 
> Source)
>       at 
> org.apache.derby.impl.jdbc.EmbedPreparedStatement.executeUpdate(Unknown 
> Source)
>       at 
> org.tranql.connector.jdbc.PreparedStatementHandle.executeUpdate(PreparedStatementHandle.java:103)
>       at sun.reflect.GeneratedMethodAccessor22.invoke(Unknown Source)
>       at 
> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
>       at java.lang.reflect.Method.invoke(Method.java:585)
>       at 
> org.apache.ode.utils.LoggingInterceptor.invoke(LoggingInterceptor.java:85)
>       at $Proxy10.executeUpdate(Unknown Source)
>       at 
> org.hibernate.jdbc.NonBatchingBatcher.addToBatch(NonBatchingBatcher.java:23)
>       at 
> org.hibernate.persister.entity.AbstractEntityPersister.insert(AbstractEntityPersister.java:2247)
>       ... 24 more
> Caused by: ERROR 23505: The statement was aborted because it would have 
> caused a duplicate key value in a unique or primary key constraint or unique 
> index identified by 'SQL100412005552361' defined on 'BPEL_SELECTORS'.
>       at org.apache.derby.iapi.error.StandardException.newException(Unknown 
> Source)
>       at 
> org.apache.derby.impl.sql.execute.IndexChanger.insertAndCheckDups(Unknown 
> Source)
>       at org.apache.derby.impl.sql.execute.IndexChanger.doInsert(Unknown 
> Source)
>       at org.apache.derby.impl.sql.execute.IndexChanger.insert(Unknown Source)
>       at org.apache.derby.impl.sql.execute.IndexSetChanger.insert(Unknown 
> Source)
>       at org.apache.derby.impl.sql.execute.RowChangerImpl.insertRow(Unknown 
> Source)
>       at 
> org.apache.derby.impl.sql.execute.InsertResultSet.normalInsertCore(Unknown 
> Source)
>       at org.apache.derby.impl.sql.execute.InsertResultSet.open(Unknown 
> Source)
>       at 
> org.apache.derby.impl.sql.GenericPreparedStatement.executeStmt(Unknown Source)
>       at org.apache.derby.impl.sql.GenericPreparedStatement.execute(Unknown 
> Source)
>       ... 35 more

-- 
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators: 
https://issues.apache.org/jira/secure/Administrators.jspa
-
For more information on JIRA, see: http://www.atlassian.com/software/jira

        

Reply via email to