I'm not sure what the proper etiquette here is - I have a reproducible case where I get the exceptions listed below. I've tried various JPA/Oracle and Hibernate/Oracle (as well as JPA/Derby) configurations.
I'm not really familiar with the unit test framework used by ODE, so my testcase is built around a simple Java test client that both invokes and response to the BPEL process. Should I open a JIRA with the artifacts mentioned? Is there another approach to getting this resolved? TIA, a. ________________________________ From: Matthieu Riou [mailto:[email protected]] Sent: Thursday, February 26, 2009 9:38 PM To: Andi Abes Cc: [email protected] Subject: Re: Correlated receive in parallel for-each loop On Wed, Feb 25, 2009 at 12:09 PM, Andi Abes <[email protected]> wrote: Matthieu, Was the log useful? Show I open a JIRA? I do have some code to drive the BPEL process that can easily reproduce this behavior (it does rely on CXF runtime) Sorry I haven't had any time to look at it today, I'll check tomorrow. I couldn't find a way to avoid the SET TRANSACTION exception... is there a way of avoiding it that you can recommend? Just don't explicitly set ode.connection.isolation, this way we will leave it alone and Oracle uses the proper value by default. Matthieu a. > -----Original Message----- > From: Matthieu Riou [mailto:[email protected]] > Sent: Tuesday, February 24, 2009 11:17 AM > To: [email protected] > Subject: Re: Correlated receive in parallel for-each loop > > On Tue, Feb 24, 2009 at 7:44 AM, Andi Abes <[email protected]> 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 > > COMPLElTED_OK on channel 45 > > > > Any thoughts? > > > The above looks like a bug yes, could you provide a full debug log to see > what's happening exactly? > > Your second problem is due to the Oracle JDBC driver that refuses to alter > the transaction isolation level after the transaction has been started, > even > if it's the first statement in the transaction. So basically we can't set > it, it has to be set at the driver level. > > The good news though is that READ_COMMITTED is the default on Oracle so > you > don't need to force the isolation level, removing the environment variable > should solve it. > > Cheers, > Matthieu > > > > 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. ja > va:1170) > > > > at > > > oracle.jdbc.driver.OracleStatement.executeInternal(OracleStatement.java: 16 > 96) > > > > at > > oracle.jdbc.driver.OracleStatement.execute(OracleStatement.java:1662) > > > > at > > > oracle.jdbc.driver.PhysicalConnection.setTransactionIsolation(PhysicalCo nn > ection.java:1661) > > > > at > > > org.apache.tomcat.dbcp.dbcp.DelegatingConnection.setTransactionIsolation (D > elegatingConnection.java:340) > > > > at > > > org.apache.tomcat.dbcp.dbcp.PoolingDataSource$PoolGuardConnectionWrapper .s > etTransactionIsolation(PoolingDataSource.java:332) > > > > at > > > org.apache.ode.daohib.DataSourceConnectionProvider.getConnection(DataSou rc > eConnectionProvider.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 .j > ava: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 :2 > 24) > > > > 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 oI > mpl.java:89) > > > > : > >
