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