OK, you are right. I didn't spot this initialization. 

Regards,
Rafal Rusin
http://www.mimuw.edu.pl/~rrusin/


Andi Abes wrote:
> 
> Your note is a bit inaccurate:
> 
> 
> a)Note that the correlation is defined inside the scope of the for-each
> - so they're actually different correlation-sets.
> 
> <forEach counterName="commandCounter" parallel="no"   xml:ID="8">
> <correlationSets>
> <correlationSet name="esbRequest" properties="tns:esb-id" />
> </correlationSets>
> .... receive
> 
> 
> Also note -
> b) ODE does not produce the error you described.
> c) page 91 of wsbpel-v2.0-OS:
> 
> If a business process instance simultaneously enables two or more IMAs
> for the same partnerLink, portType, operation but different
> correlationSet(s), and the correlations of multiple of these activities
> match an incoming request message, then the bpel:ambiguousReceive
> standard fault MUST be thrown by all IMAs whose correlation set(s) match
> the incoming message.
> 
> 
> For the above condition to occur, the use case I'm testing must be valid
> 
> And lastly:
> d)
> I've used the exact same process on other BPEL engines, with success....
> This seems to be an ODE bug.
> 
> 
> 
> 
> 
> 
>> -----Original Message-----
>> From: Rafal Rusin [mailto:[email protected]]
>> Sent: Wednesday, February 25, 2009 10:25 AM
>> To: [email protected]
>> Subject: Re: Correlated receive in parallel for-each loop
>> 
>> 
>> 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.
> 
> 
> 

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

Reply via email to