Your bpel contains following:

<forEach counterName="commandCounter" parallel="yes">
                                <receive createInstance="no"
                                    name="ESBResult" operation="ESBResult"
partnerLink="ESBResult"
                                    portType="tns:ESBResult"
variable="ESBMessage" xml:ID="19">

                                    <correlations>
                                        <correlation initiate="no"
                                            set="esbRequest" />
                                    </correlations>
                                </receive>
</forEach>


According to bpel specification, this will cause conflictingReceive error
when forEach has >1 items. 

Regards,
Rafal Rusin

http://www.mimuw.edu.pl/~rrusin/


Andi Abes wrote:
> 
> I'm trying to get a relatively simple process which performs a
> correlated receive in parallel for-each loop (attached) - just the sweet
> spot for BPEL ;)
> 
> I've tried with:
> -     Derby/JPA - java.sql.SQLException: A lock could not be obtained
> due to a deadlock (full stack in earlier emails)
> -     Hibernate/Oracle - the exception is below (hibernate 3.2.5/
> oracle 10.2)
> -     JPA / Oracle - This didn't produce exceptions, but it produced
> the following error, which killed the process instance...
> o     ERROR - GeronimoLog.error(104) | The message exchange seems to
> be in an unconsistent state, you're probably missing a reply on a
> request/response interaction.
> INFO - GeronimoLog.info(79) | ActivityRecovery: Registering activity 25,
> failure reason: org.apache.ode.bpel.iapi.BpelEngineException: Engine
> requested response
>  while the message exchange hqejbhcnphr426192c3r3o was in the state
> COMPLETED_OK on channel 45
> 
> Any thoughts?
> The last 2 cases sound to me as a bug...
> 
> 
> 
>  <<BPEL_2.zip>> 
> 
> Exception with Hibernate/Oracle:
> 
> 
> DEBUG - GeronimoLog.debug(66) |
> org.apache.ode.daohib.bpel.hobj.HProcess{created=null, active=false,
> events=<uninitialized>, processId={urn:bpel:BpelMock}BPELMo
> ck-1, deployDate=2009-02-24 10:33:55, id=1, version=1,
> messageExchanges=<uninitialized>, deploymentPartnerLinks=[],
> typeName=BPELMock, lock=0, correlators=<unin
> itialized>, deployer=null, typeNamespace=urn:bpel:BpelMock,
> instances=<uninitialized>, guid=hqejbhcnphr42in8iaul6m}
> DEBUG - GeronimoLog.debug(66) |
> org.apache.ode.daohib.bpel.hobj.HCorrelator{created=2009-02-24 10:33:55,
> lock=0, process=org.apache.ode.daohib.bpel.hobj.HProces
> s#1, correlatorId=25.ESBResult, messageCorrelations=<uninitialized>,
> selectors=<uninitialized>, id=2}
> DEBUG - GeronimoLog.debug(66) |
> org.apache.ode.daohib.bpel.hobj.HProcessInstance{created=2009-02-24
> 10:34:25, jacobState=org.apache.ode.daohib.bpel.hobj.HLargeD
> ata#168, events=<uninitialized>, previousState=10,
> lastActiveTime=2009-02-24 10:34:33, fault=null,
> correlationSets=<uninitialized>, sequence=27, id=7, activityF
> ailureCount=0, messageExchanges=<uninitialized>, lock=0,
> correlatorSelectors=<uninitialized>, activityFailureDateTime=null,
> scopes=<uninitialized>, process=org.
> apache.ode.daohib.bpel.hobj.HProcess#1,
> activityRecoveries=<uninitialized>, state=20,
> instantiatingCorrelator=org.apache.ode.daohib.bpel.hobj.HCorrelator#3}
> DEBUG - GeronimoLog.debug(66) | about to open PreparedStatement (open
> PreparedStatements: 0, globally: 3)
> DEBUG - GeronimoLog.debug(66) | opening JDBC connection
> DEBUG - GeronimoLog.debug(70) | Cannot open connection [???]
> java.sql.SQLException: ORA-01453: SET TRANSACTION must be first
> statement of transaction
>         at
> oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:11
> 2)
>         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:745)
>         at
> oracle.jdbc.driver.T4CStatement.doOall8(T4CStatement.java:207)
>         at
> oracle.jdbc.driver.T4CStatement.executeForRows(T4CStatement.java:957)
>         at
> oracle.jdbc.driver.OracleStatement.doExecuteWithTimeout(OracleStatement.
> java:1170)
>         at
> oracle.jdbc.driver.OracleStatement.executeInternal(OracleStatement.java:
> 1696)
>         at
> oracle.jdbc.driver.OracleStatement.execute(OracleStatement.java:1662)
>         at
> oracle.jdbc.driver.PhysicalConnection.setTransactionIsolation(PhysicalCo
> nnection.java:1661)
>         at
> org.apache.tomcat.dbcp.dbcp.DelegatingConnection.setTransactionIsolation
> (DelegatingConnection.java:340)
>         at
> org.apache.tomcat.dbcp.dbcp.PoolingDataSource$PoolGuardConnectionWrapper
> .setTransactionIsolation(PoolingDataSource.java:332)
>         at
> org.apache.ode.daohib.DataSourceConnectionProvider.getConnection(DataSou
> rceConnectionProvider.java:45)
>         at
> org.hibernate.jdbc.ConnectionManager.openConnection(ConnectionManager.ja
> va:423)
>         at
> org.hibernate.jdbc.ConnectionManager.getConnection(ConnectionManager.jav
> a:144)
>         at
> org.hibernate.jdbc.AbstractBatcher.prepareQueryStatement(AbstractBatcher
> .java:139)
>         at
> org.hibernate.loader.Loader.prepareQueryStatement(Loader.java:1547)
>         at
> org.hibernate.loader.hql.QueryLoader.iterate(QueryLoader.java:399)
>         at
> org.hibernate.hql.ast.QueryTranslatorImpl.iterate(QueryTranslatorImpl.ja
> va:380)
>         at
> org.hibernate.engine.query.HQLQueryPlan.performIterate(HQLQueryPlan.java
> :224)
>         at
> org.hibernate.impl.SessionImpl.iterateFilter(SessionImpl.java:1492)
>         at
> org.hibernate.impl.CollectionFilterImpl.iterate(CollectionFilterImpl.jav
> a:38)
>         at
> org.apache.ode.daohib.bpel.CorrelatorDaoImpl.dequeueMessage(CorrelatorDa
> oImpl.java:89)
> :
> 
>  
> 

-- 
View this message in context: 
http://www.nabble.com/Correlated-receive-in-parallel-for-each-loop-tp22184207p22204983.html
Sent from the Apache Ode User mailing list archive at Nabble.com.

Reply via email to