Hello,
I'm trying to create foreach counstruct in my BPEL process. When i have only
'invoke' activity inside foreach, everything works fine. But when i add
'receive' activity (with or without correlation), my process crushes even
before invoke activity is executed. I have ODE v 1.3.2 connected to postgres
DB through hibernate. The stack trace i get is following:
2009-10-24 16:25:54,750 DEBUG - GeronimoLog.debug(66) | prepareStmt: insert
into BPEL_SELECTORS (PIID, SELGRPID, IDX, CORRELATION_KEY, PROC_TYPE,
CORRELATOR, INSERT_TIME, MLOCK, ID) values (?, ?, ?, ?, ?, ?, ?, ?, ?)
2009-10-24 16:25:54,750 DEBUG - GeronimoLog.debug(66) | executeBatch, bound
(1,8730) (2,116) (3,0) (4,240~) (5,{http://eclipse.org/bpel/sample}P0002)
(6,8726) (7,2009-10-24 16:25:54.531) (8,0) (9,9173)
2009-10-24 16:25:55,578 DEBUG - GeronimoLog.debug(66) | close()
2009-10-24 16:25:55,609 DEBUG - GeronimoLog.debug(66) | close()
2009-10-24 16:25:55,687 ERROR - GeronimoLog.error(108) | Commit failed.
javax.transaction.RollbackException:
[com.arjuna.ats.internal.jta.transaction.arjunacore.commitwhenaborted]
[com.arjuna.ats.internal.jta.transaction.arjunacore.commitwhenaborted] Can't
commit because the transaction is in aborted state
at
com.arjuna.ats.internal.jta.transaction.arjunacore.TransactionImple.commitAndDisassociate(TransactionImple.java:1401)
at
com.arjuna.ats.internal.jta.transaction.arjunacore.BaseTransaction.commit(BaseTransaction.java:135)
at
com.arjuna.ats.jbossatx.BaseTransactionManagerDelegate.commit(BaseTransactionManagerDelegate.java:87)
at
org.apache.ode.bpel.engine.Contexts.execTransaction(Contexts.java:114)
at org.apache.ode.bpel.engine.Contexts.execTransaction(Contexts.java:83)
at
org.apache.ode.bpel.engine.BpelServerImpl$TransactedRunnable.run(BpelServerImpl.java:981)
at
org.apache.ode.bpel.engine.BpelInstanceWorker$2.call(BpelInstanceWorker.java:143)
at
org.apache.ode.bpel.engine.BpelInstanceWorker$2.call(BpelInstanceWorker.java:142)
at
org.apache.ode.bpel.engine.BpelInstanceWorker.doInstanceWork(BpelInstanceWorker.java:174)
at
org.apache.ode.bpel.engine.BpelInstanceWorker.run(BpelInstanceWorker.java:141)
at
org.apache.ode.bpel.engine.ODEProcess$ProcessRunnable.run(ODEProcess.java:1189)
at
org.apache.ode.bpel.engine.BpelServerImpl$ServerRunnable.run(BpelServerImpl.java:923)
at
java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:441)
at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:303)
at java.util.concurrent.FutureTask.run(FutureTask.java:138)
at
java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
at
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
at java.lang.Thread.run(Thread.java:619)
Caused by: org.hibernate.exception.ConstraintViolationException: Could not
execute JDBC batch update
at
org.hibernate.exception.SQLStateConverter.convert(SQLStateConverter.java:71)
at
org.hibernate.exception.JDBCExceptionHelper.convert(JDBCExceptionHelper.java:43)
at
org.hibernate.jdbc.AbstractBatcher.executeBatch(AbstractBatcher.java:253)
at
org.hibernate.jdbc.AbstractBatcher.prepareStatement(AbstractBatcher.java:92)
at
org.hibernate.jdbc.AbstractBatcher.prepareStatement(AbstractBatcher.java:87)
at
org.hibernate.jdbc.AbstractBatcher.prepareBatchStatement(AbstractBatcher.java:222)
at
org.hibernate.persister.entity.AbstractEntityPersister.insert(AbstractEntityPersister.java:2224)
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
com.arjuna.ats.internal.jta.resources.arjunacore.SynchronizationImple.beforeCompletion(SynchronizationImple.java:114)
at
com.arjuna.ats.arjuna.coordinator.TwoPhaseCoordinator.beforeCompletion(TwoPhaseCoordinator.java:247)
at
com.arjuna.ats.arjuna.coordinator.TwoPhaseCoordinator.end(TwoPhaseCoordinator.java:86)
at com.arjuna.ats.arjuna.AtomicAction.commit(AtomicAction.java:177)
at
com.arjuna.ats.internal.jta.transaction.arjunacore.TransactionImple.commitAndDisassociate(TransactionImple.java:1389)
... 17 more
Caused by: java.sql.BatchUpdateException: Batch entry 0 insert into
BPEL_SELECTORS (PIID, SELGRPID, IDX, CORRELATION_KEY, PROC_TYPE, CORRELATOR,
INSERT_TIME, MLOCK, ID) values ('8730', '116', '0', '240~',
'{http://eclipse.org/bpel/sample}P0002', '8726', '2009-10-24 16:25:54.531000
+02:00:00', '0', '9173') was aborted. Call getNextException to see the
cause.
at
org.postgresql.jdbc2.AbstractJdbc2Statement$BatchResultHandler.handleError(AbstractJdbc2Statement.java:2569)
at
org.postgresql.core.v3.QueryExecutorImpl.processResults(QueryExecutorImpl.java:1796)
at
org.postgresql.core.v3.QueryExecutorImpl.execute(QueryExecutorImpl.java:407)
at
org.postgresql.jdbc2.AbstractJdbc2Statement.executeBatch(AbstractJdbc2Statement.java:2708)
at
org.jboss.resource.adapter.jdbc.WrappedStatement.executeBatch(WrappedStatement.java:774)
at sun.reflect.GeneratedMethodAccessor856.invoke(Unknown Source)
at
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at
org.apache.ode.utils.LoggingInterceptor.invoke(LoggingInterceptor.java:70)
at $Proxy333.executeBatch(Unknown Source)
at
org.hibernate.jdbc.BatchingBatcher.doExecuteBatch(BatchingBatcher.java:48)
at
org.hibernate.jdbc.AbstractBatcher.executeBatch(AbstractBatcher.java:246)
... 36 more
2009-10-24 16:25:55,703 ERROR - GeronimoLog.error(108) | Work for instance
{http://eclipse.org/bpel/sample}P0002-19#8730 in thread
Thread[ODEServerImpl-27,5,jboss] resulted in an exception.
With willowing JDBC exception:
ERROR: duplicate key value violates unique constraint
"bpel_selectors_correlation_key_key"
Relevant part (on id_num correlation is performed) :
<complexType name="DocPartX">
<sequence>
<element name="ElemX" type="boolean" nillable="true" />
<element name="ElemY" type="P0002:ElemY" />
</sequence>
</complexType>
<complexType name="ElemY">
<sequence>
<element name="value" type="P0002:ElemYContent"
maxOccurs="unbounded"/>
</sequence>
</complexType>
<complexType name="ElemYContent">
<sequence>
<element name="id_num" type="string"/>
<element name="name" type="string"/>
<element name="result_from_external_service"
type="string"/>
</sequence>
</complexType>
In foreach sequence I first prepare document with SINGLE ElemY. Then I
invoke external service with this document and then receive document with
filled result_from_external_service element.
Any hint on cause of this problem is appreciated. Thanx.
--
View this message in context:
http://www.nabble.com/Correlation-in-foreach-tp26050377p26050377.html
Sent from the Apache Ode User mailing list archive at Nabble.com.