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.

Reply via email to