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.
