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:112)
>
> 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(PhysicalConnection.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(DataSourceConnectionProvider.java:45)
>
> at
> org.hibernate.jdbc.ConnectionManager.openConnection(ConnectionManager.java:423)
>
> at
> org.hibernate.jdbc.ConnectionManager.getConnection(ConnectionManager.java: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.java: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.java:38)
>
> at
> org.apache.ode.daohib.bpel.CorrelatorDaoImpl.dequeueMessage(CorrelatorDaoImpl.java:89)
>
> :
>