You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@ode.apache.org by bala ajanthan <ba...@gmail.com> on 2013/09/18 14:39:11 UTC

Exception While Calling Process with Instance Clean Up Configuration

Hi devs,
I am getting following exception[0] while calling a BPEL process(with
couple of partner services) with instance clean up enabled on success with
all categories(instance,variables,correlations,events and messages) .

If I remove messages from the configuration it is working with out the
exception.

As I dig into the code more I found out that the MessageExchange is deleted
whenever INVOKE activity finished[1] but.When ever the instance is
persisted before cleaning up, the above exception is thrown because of
MessageExchange is deleted.

Is it correct to delete the message exchange whenever INVOKE activity
finishes even-though the whole process still running and we do not know the
status(success or failure) of the process yet?
Or else am I missing something here?Can you please somebody clear it for
me?

Thanks.

[0]DEBUG {org.apache.ode.scheduler.simple.SimpleScheduler} -  Commiting on
org.apache.geronimo.transaction.manager.GeronimoTransactionManager@579a19fd...
{org.apache.ode.scheduler.simple.SimpleSchedule
r}
 WARN {Transaction} -  Unexpected exception from beforeCompletion;
transaction will roll back {Transaction}
<openjpa-2.2.0-wso2v1-r128166:129108 nonfatal user error>
org.apache.openjpa.persistence.ArgumentException: Encountered deleted
object "org.apache.ode.dao.jpa.MessageExchangeDAOImpl@7abdd25" in
persistent field "org.apache.ode.dao.jpa.Proc
essInstanceDAOImpl._messageExchanges<element:class
org.apache.ode.dao.jpa.MessageExchangeDAOImpl>" of managed object
"org.apache.ode.dao.jpa.ProcessInstanceDAOImpl@6b527dc6" during flush.
FailedObject: org.apache.ode.dao.jpa.MessageExchangeDAOImpl@7abdd25
        at
org.apache.openjpa.kernel.SingleFieldManager.preFlushPC(SingleFieldManager.java:817)
        at
org.apache.openjpa.kernel.SingleFieldManager.preFlushPCs(SingleFieldManager.java:762)
        at
org.apache.openjpa.kernel.SingleFieldManager.preFlush(SingleFieldManager.java:664)
        at
org.apache.openjpa.kernel.SingleFieldManager.preFlush(SingleFieldManager.java:589)
        at
org.apache.openjpa.kernel.SingleFieldManager.preFlush(SingleFieldManager.java:505)
        at
org.apache.openjpa.kernel.StateManagerImpl.preFlush(StateManagerImpl.java:2982)
        at
org.apache.openjpa.kernel.SingleFieldManager.preFlushPC(SingleFieldManager.java:808)
        at
org.apache.openjpa.kernel.SingleFieldManager.preFlush(SingleFieldManager.java:621)
        at
org.apache.openjpa.kernel.SingleFieldManager.preFlush(SingleFieldManager.java:589)
        at
org.apache.openjpa.kernel.SingleFieldManager.preFlush(SingleFieldManager.java:505)
        at
org.apache.openjpa.kernel.StateManagerImpl.preFlush(StateManagerImpl.java:2982)
        at
org.apache.openjpa.kernel.PDirtyState.beforeFlush(PDirtyState.java:38)
        at
org.apache.openjpa.kernel.StateManagerImpl.beforeFlush(StateManagerImpl.java:1054)
        at org.apache.openjpa.kernel.BrokerImpl.flush(BrokerImpl.java:2112)
        at
org.apache.openjpa.kernel.BrokerImpl.flushSafe(BrokerImpl.java:2072)
        at
org.apache.openjpa.kernel.BrokerImpl.beforeCompletion(BrokerImpl.java:1990)
        at
org.apache.geronimo.transaction.manager.TransactionImpl.beforeCompletion(TransactionImpl.java:514)
        at
org.apache.geronimo.transaction.manager.TransactionImpl.beforeCompletion(TransactionImpl.java:498)
        at
org.apache.geronimo.transaction.manager.TransactionImpl.beforePrepare(TransactionImpl.java:400)
        at
org.apache.geronimo.transaction.manager.TransactionImpl.commit(TransactionImpl.java:257)
        at
org.apache.geronimo.transaction.manager.TransactionManagerImpl.commit(TransactionManagerImpl.java:238)
        at
org.apache.ode.scheduler.simple.SimpleScheduler.execTransaction(SimpleScheduler.java:278)
        at
org.apache.ode.scheduler.simple.SimpleScheduler.execTransaction(SimpleScheduler.java:226)
        at
org.apache.ode.scheduler.simple.SimpleScheduler$RunJob.call(SimpleScheduler.java:518)
        at
org.apache.ode.scheduler.simple.SimpleScheduler$RunJob.call(SimpleScheduler.java:502)
        at
java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:303)
        at java.util.concurrent.FutureTask.run(FutureTask.java:138)
        at
java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:895)
        at
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:918)
        at java.lang.Thread.run(Thread.java:662)
[1]
https://github.com/apache/ode/blob/master/bpel-runtime/src/main/java/org/apache/ode/bpel/runtime/INVOKE.javaline
number 166
-- 
Balachandiran Ajanthan
Phone:+94775581497
Blog   : http://ajanthan87.blogspot.com
Twitter: ajanthan87
skype  :bala.ajanthan
gtalk   :balaajanthan