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)
        > >
        > > :
        > >

 

Reply via email to