You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ode.apache.org by mr...@apache.org on 2007/04/04 18:00:44 UTC
svn commit: r525545 - in /incubator/ode/trunk:
axis2/src/main/java/org/apache/ode/axis2/
bpel-runtime/src/main/java/org/apache/ode/bpel/engine/
bpel-runtime/src/main/java/org/apache/ode/bpel/memdao/
bpel-test/src/test/java/org/apache/ode/test/ bpel-tes...
Author: mriou
Date: Wed Apr 4 09:00:43 2007
New Revision: 525545
URL: http://svn.apache.org/viewvc?view=rev&rev=525545
Log:
Started making the in-mem DAOs transaction aware by doing most important modifications only in tx before completion. The MessageRouting20Test now passes completely!
Modified:
incubator/ode/trunk/axis2/src/main/java/org/apache/ode/axis2/ODEServer.java
incubator/ode/trunk/bpel-runtime/src/main/java/org/apache/ode/bpel/engine/BpelProcess.java
incubator/ode/trunk/bpel-runtime/src/main/java/org/apache/ode/bpel/engine/BpelRuntimeContextImpl.java
incubator/ode/trunk/bpel-runtime/src/main/java/org/apache/ode/bpel/engine/Contexts.java
incubator/ode/trunk/bpel-runtime/src/main/java/org/apache/ode/bpel/memdao/BpelDAOConnectionFactoryImpl.java
incubator/ode/trunk/bpel-runtime/src/main/java/org/apache/ode/bpel/memdao/BpelDAOConnectionImpl.java
incubator/ode/trunk/bpel-runtime/src/main/java/org/apache/ode/bpel/memdao/CorrelatorDaoImpl.java
incubator/ode/trunk/bpel-runtime/src/main/java/org/apache/ode/bpel/memdao/ProcessDaoImpl.java
incubator/ode/trunk/bpel-test/src/test/java/org/apache/ode/test/BPELTestAbstract.java
incubator/ode/trunk/bpel-test/src/test/resources/bpel/2.0/TestDynamicPick/test1.properties
incubator/ode/trunk/jbi/src/main/java/org/apache/ode/jbi/OdeLifeCycle.java
Modified: incubator/ode/trunk/axis2/src/main/java/org/apache/ode/axis2/ODEServer.java
URL: http://svn.apache.org/viewvc/incubator/ode/trunk/axis2/src/main/java/org/apache/ode/axis2/ODEServer.java?view=diff&rev=525545&r1=525544&r2=525545
==============================================================================
--- incubator/ode/trunk/axis2/src/main/java/org/apache/ode/axis2/ODEServer.java (original)
+++ incubator/ode/trunk/axis2/src/main/java/org/apache/ode/axis2/ODEServer.java Wed Apr 4 09:00:43 2007
@@ -41,6 +41,7 @@
import org.apache.ode.bpel.iapi.ProcessStoreEvent;
import org.apache.ode.bpel.iapi.ProcessStoreListener;
import org.apache.ode.bpel.iapi.Scheduler;
+import org.apache.ode.bpel.memdao.BpelDAOConnectionFactoryImpl;
import org.apache.ode.bpel.scheduler.quartz.QuartzSchedulerImpl;
import org.apache.ode.il.dbutil.Database;
import org.apache.ode.store.ProcessStoreImpl;
@@ -449,6 +450,7 @@
_scheduler.setJobProcessor(_server);
_server.setDaoConnectionFactory(_daoCF);
+ _server.setInMemDaoConnectionFactory(new BpelDAOConnectionFactoryImpl(_scheduler));
_server.setEndpointReferenceContext(new EndpointReferenceContextImpl(this));
_server.setMessageExchangeContext(new MessageExchangeContextImpl(this));
_server.setBindingContext(new BindingContextImpl(this, _store));
Modified: incubator/ode/trunk/bpel-runtime/src/main/java/org/apache/ode/bpel/engine/BpelProcess.java
URL: http://svn.apache.org/viewvc/incubator/ode/trunk/bpel-runtime/src/main/java/org/apache/ode/bpel/engine/BpelProcess.java?view=diff&rev=525545&r1=525544&r2=525545
==============================================================================
--- incubator/ode/trunk/bpel-runtime/src/main/java/org/apache/ode/bpel/engine/BpelProcess.java (original)
+++ incubator/ode/trunk/bpel-runtime/src/main/java/org/apache/ode/bpel/engine/BpelProcess.java Wed Apr 4 09:00:43 2007
@@ -472,7 +472,7 @@
if (enabled) {
ProcessInstanceDAO instanceDao = getProcessDAO().getInstance(event.getProcessInstanceId());
if (instanceDao != null) saveEvent(event, instanceDao);
- else __log.warn("Couldn't find instance to save event, no event generated!");
+ else __log.debug("Couldn't find instance to save event, no event generated!");
}
}
Modified: incubator/ode/trunk/bpel-runtime/src/main/java/org/apache/ode/bpel/engine/BpelRuntimeContextImpl.java
URL: http://svn.apache.org/viewvc/incubator/ode/trunk/bpel-runtime/src/main/java/org/apache/ode/bpel/engine/BpelRuntimeContextImpl.java?view=diff&rev=525545&r1=525544&r2=525545
==============================================================================
--- incubator/ode/trunk/bpel-runtime/src/main/java/org/apache/ode/bpel/engine/BpelRuntimeContextImpl.java (original)
+++ incubator/ode/trunk/bpel-runtime/src/main/java/org/apache/ode/bpel/engine/BpelRuntimeContextImpl.java Wed Apr 4 09:00:43 2007
@@ -138,7 +138,7 @@
}
if (BpelProcess.__log.isDebugEnabled()) {
- __log.debug("BpelRuntimeContextImpl created. INDEXED STATE=" + soup.getIndex());
+ __log.debug("BpelRuntimeContextImpl created for instance " + _iid + ". INDEXED STATE=" + soup.getIndex());
}
}
@@ -827,6 +827,7 @@
throw new RuntimeException(ex);
}
_dao.setExecutionState(bos.toByteArray());
+ __log.debug("Setting execution state on instance " + _iid);
if (ProcessState.canExecute(_dao.getState()) && canReduce) {
// Max time exceeded (possibly an infinite loop).
Modified: incubator/ode/trunk/bpel-runtime/src/main/java/org/apache/ode/bpel/engine/Contexts.java
URL: http://svn.apache.org/viewvc/incubator/ode/trunk/bpel-runtime/src/main/java/org/apache/ode/bpel/engine/Contexts.java?view=diff&rev=525545&r1=525544&r2=525545
==============================================================================
--- incubator/ode/trunk/bpel-runtime/src/main/java/org/apache/ode/bpel/engine/Contexts.java (original)
+++ incubator/ode/trunk/bpel-runtime/src/main/java/org/apache/ode/bpel/engine/Contexts.java Wed Apr 4 09:00:43 2007
@@ -20,10 +20,12 @@
package org.apache.ode.bpel.engine;
import org.apache.ode.bpel.dao.BpelDAOConnectionFactory;
-import org.apache.ode.bpel.iapi.*;
+import org.apache.ode.bpel.iapi.BindingContext;
import org.apache.ode.bpel.iapi.BpelEventListener;
+import org.apache.ode.bpel.iapi.EndpointReferenceContext;
+import org.apache.ode.bpel.iapi.MessageExchangeContext;
+import org.apache.ode.bpel.iapi.Scheduler;
import org.apache.ode.bpel.intercept.MessageExchangeInterceptor;
-import org.apache.ode.bpel.memdao.BpelDAOConnectionFactoryImpl;
import java.util.List;
import java.util.concurrent.CopyOnWriteArrayList;
@@ -43,7 +45,7 @@
BindingContext bindingContext;
BpelDAOConnectionFactory dao;
- BpelDAOConnectionFactory inMemDao = new BpelDAOConnectionFactoryImpl();
+ BpelDAOConnectionFactory inMemDao;
/** Global Message-Exchange interceptors. Must be copy-on-write!!! */
final List<MessageExchangeInterceptor >globalIntereceptors = new CopyOnWriteArrayList<MessageExchangeInterceptor>();
Modified: incubator/ode/trunk/bpel-runtime/src/main/java/org/apache/ode/bpel/memdao/BpelDAOConnectionFactoryImpl.java
URL: http://svn.apache.org/viewvc/incubator/ode/trunk/bpel-runtime/src/main/java/org/apache/ode/bpel/memdao/BpelDAOConnectionFactoryImpl.java?view=diff&rev=525545&r1=525544&r2=525545
==============================================================================
--- incubator/ode/trunk/bpel-runtime/src/main/java/org/apache/ode/bpel/memdao/BpelDAOConnectionFactoryImpl.java (original)
+++ incubator/ode/trunk/bpel-runtime/src/main/java/org/apache/ode/bpel/memdao/BpelDAOConnectionFactoryImpl.java Wed Apr 4 09:00:43 2007
@@ -20,6 +20,7 @@
import org.apache.ode.bpel.dao.BpelDAOConnection;
import org.apache.ode.bpel.dao.BpelDAOConnectionFactory;
+import org.apache.ode.bpel.iapi.Scheduler;
import javax.xml.namespace.QName;
import java.util.HashMap;
@@ -32,8 +33,14 @@
public class BpelDAOConnectionFactoryImpl implements BpelDAOConnectionFactory {
private static final Map<QName, ProcessDaoImpl> __StateStore = new HashMap<QName, ProcessDaoImpl>();
+ private Scheduler _scheduler;
+
+ public BpelDAOConnectionFactoryImpl(Scheduler sched) {
+ _scheduler = sched;
+ }
+
public BpelDAOConnection getConnection() {
- return new BpelDAOConnectionImpl(__StateStore);
+ return new BpelDAOConnectionImpl(__StateStore, _scheduler);
}
/**
Modified: incubator/ode/trunk/bpel-runtime/src/main/java/org/apache/ode/bpel/memdao/BpelDAOConnectionImpl.java
URL: http://svn.apache.org/viewvc/incubator/ode/trunk/bpel-runtime/src/main/java/org/apache/ode/bpel/memdao/BpelDAOConnectionImpl.java?view=diff&rev=525545&r1=525544&r2=525545
==============================================================================
--- incubator/ode/trunk/bpel-runtime/src/main/java/org/apache/ode/bpel/memdao/BpelDAOConnectionImpl.java (original)
+++ incubator/ode/trunk/bpel-runtime/src/main/java/org/apache/ode/bpel/memdao/BpelDAOConnectionImpl.java Wed Apr 4 09:00:43 2007
@@ -30,6 +30,7 @@
import org.apache.ode.bpel.dao.ProcessInstanceDAO;
import org.apache.ode.bpel.dao.ScopeDAO;
import org.apache.ode.bpel.evt.BpelEvent;
+import org.apache.ode.bpel.iapi.Scheduler;
import org.apache.ode.utils.ISO8601DateParser;
import org.apache.ode.utils.stl.CollectionsX;
import org.apache.ode.utils.stl.UnaryFunction;
@@ -53,20 +54,17 @@
class BpelDAOConnectionImpl implements BpelDAOConnection {
private static final Log __log = LogFactory.getLog(BpelDAOConnectionImpl.class);
+ private Scheduler _scheduler;
private Map<QName, ProcessDaoImpl> _store;
private List<BpelEvent> _events = new LinkedList<BpelEvent>();
private static Map<String,MessageExchangeDAO> _mexStore = Collections.synchronizedMap(new HashMap<String,MessageExchangeDAO>());
private static AtomicLong counter = new AtomicLong(Long.MAX_VALUE / 2);
-
- BpelDAOConnectionImpl(Map<QName, ProcessDaoImpl> store) {
+ BpelDAOConnectionImpl(Map<QName, ProcessDaoImpl> store, Scheduler scheduler) {
_store = store;
+ _scheduler = scheduler;
}
-// private synchronized String getId() {
-// return Long.toString(counter++);
-// }
-
public ProcessDAO getProcess(QName processId) {
return _store.get(processId);
}
@@ -300,5 +298,15 @@
MessageExchangeDAO mex = _mexStore.remove(mexId);
if (mex == null)
__log.warn("Couldn't find mex " + mexId + " for cleanup.");
+ }
+
+ public void differ(final Runnable runnable) {
+ _scheduler.registerSynchronizer(new Scheduler.Synchronizer() {
+ public void afterCompletion(boolean success) {
+ }
+ public void beforeCompletion() {
+ runnable.run();
+ }
+ });
}
}
Modified: incubator/ode/trunk/bpel-runtime/src/main/java/org/apache/ode/bpel/memdao/CorrelatorDaoImpl.java
URL: http://svn.apache.org/viewvc/incubator/ode/trunk/bpel-runtime/src/main/java/org/apache/ode/bpel/memdao/CorrelatorDaoImpl.java?view=diff&rev=525545&r1=525544&r2=525545
==============================================================================
--- incubator/ode/trunk/bpel-runtime/src/main/java/org/apache/ode/bpel/memdao/CorrelatorDaoImpl.java (original)
+++ incubator/ode/trunk/bpel-runtime/src/main/java/org/apache/ode/bpel/memdao/CorrelatorDaoImpl.java Wed Apr 4 09:00:43 2007
@@ -43,11 +43,13 @@
private String _correlatorId;
private List<MsgQueueEntry> _messages;
private List<MessageRouteDaoImpl> _routes;
+ private BpelDAOConnectionImpl _conn;
- CorrelatorDaoImpl(String correlatorId) {
+ CorrelatorDaoImpl(String correlatorId, BpelDAOConnectionImpl conn) {
_messages = new ArrayList<MsgQueueEntry>();
_routes = new ArrayList<MessageRouteDaoImpl>();
_correlatorId = correlatorId;
+ _conn = conn;
}
public MessageExchangeDAO dequeueMessage(CorrelationKey key) {
@@ -103,8 +105,12 @@
__log.debug("addRoute: target=" + target + " correlationKey=" + key);
}
- MessageRouteDaoImpl mr = new MessageRouteDaoImpl((ProcessInstanceDaoImpl)target, routeId, key, idx);
- _routes.add(mr);
+ final MessageRouteDaoImpl mr = new MessageRouteDaoImpl((ProcessInstanceDaoImpl)target, routeId, key, idx);
+ _conn.differ(new Runnable() {
+ public void run() {
+ _routes.add(mr);
+ }
+ });
}
Modified: incubator/ode/trunk/bpel-runtime/src/main/java/org/apache/ode/bpel/memdao/ProcessDaoImpl.java
URL: http://svn.apache.org/viewvc/incubator/ode/trunk/bpel-runtime/src/main/java/org/apache/ode/bpel/memdao/ProcessDaoImpl.java?view=diff&rev=525545&r1=525544&r2=525545
==============================================================================
--- incubator/ode/trunk/bpel-runtime/src/main/java/org/apache/ode/bpel/memdao/ProcessDaoImpl.java (original)
+++ incubator/ode/trunk/bpel-runtime/src/main/java/org/apache/ode/bpel/memdao/ProcessDaoImpl.java Wed Apr 4 09:00:43 2007
@@ -99,8 +99,12 @@
}
public ProcessInstanceDAO createInstance(CorrelatorDAO correlator) {
- ProcessInstanceDaoImpl newInstance = new ProcessInstanceDaoImpl(_conn, this, correlator);
- _instances.put(newInstance.getInstanceId(), newInstance);
+ final ProcessInstanceDaoImpl newInstance = new ProcessInstanceDaoImpl(_conn, this, correlator);
+ _conn.differ(new Runnable() {
+ public void run() {
+ _instances.put(newInstance.getInstanceId(), newInstance);
+ }
+ });
_executionCount++;
return newInstance;
}
@@ -145,7 +149,7 @@
}
public void addCorrelator(String correlator) {
- CorrelatorDaoImpl corr = new CorrelatorDaoImpl(correlator);
+ CorrelatorDaoImpl corr = new CorrelatorDaoImpl(correlator, _conn);
_correlators.put(corr.getCorrelatorId(), corr);
}
Modified: incubator/ode/trunk/bpel-test/src/test/java/org/apache/ode/test/BPELTestAbstract.java
URL: http://svn.apache.org/viewvc/incubator/ode/trunk/bpel-test/src/test/java/org/apache/ode/test/BPELTestAbstract.java?view=diff&rev=525545&r1=525544&r2=525545
==============================================================================
--- incubator/ode/trunk/bpel-test/src/test/java/org/apache/ode/test/BPELTestAbstract.java (original)
+++ incubator/ode/trunk/bpel-test/src/test/java/org/apache/ode/test/BPELTestAbstract.java Wed Apr 4 09:00:43 2007
@@ -91,11 +91,11 @@
};
} else {
- _cf = new BpelDAOConnectionFactoryImpl();
- server.setDaoConnectionFactory(_cf);
scheduler = new TestScheduler();
+ _cf = new BpelDAOConnectionFactoryImpl(scheduler);
+ server.setDaoConnectionFactory(_cf);
}
- server.setInMemDaoConnectionFactory(new BpelDAOConnectionFactoryImpl());
+ server.setInMemDaoConnectionFactory(new BpelDAOConnectionFactoryImpl(scheduler));
server.setScheduler(scheduler);
server.setBindingContext(new BindingContextImpl());
server.setMessageExchangeContext(mexContext);
@@ -234,7 +234,7 @@
if (testRun != null) {
testThreads.add(testRun);
testRun.start();
- Thread.sleep(100);
+// Thread.sleep(100);
}
}
Modified: incubator/ode/trunk/bpel-test/src/test/resources/bpel/2.0/TestDynamicPick/test1.properties
URL: http://svn.apache.org/viewvc/incubator/ode/trunk/bpel-test/src/test/resources/bpel/2.0/TestDynamicPick/test1.properties?view=diff&rev=525545&r1=525544&r2=525545
==============================================================================
--- incubator/ode/trunk/bpel-test/src/test/resources/bpel/2.0/TestDynamicPick/test1.properties (original)
+++ incubator/ode/trunk/bpel-test/src/test/resources/bpel/2.0/TestDynamicPick/test1.properties Wed Apr 4 09:00:43 2007
@@ -2,4 +2,4 @@
service=TestDynamicPickService
operation=request
request1=<message><requestMessageData><testMessage><requestID>Start Test Dynamic Pick</requestID><requestKey1>Test Dynamic Pick Key 1</requestKey1><requestKey2>Test Dynamic Pick Key 2</requestKey2><requestText>Event Test Dynamic Pick Start</requestText><requestEnd>no</requestEnd></testMessage></requestMessageData></message>
-response1=.*Event Test Dynamic Pick Start -> loop on pick until message includes requestEnd = yes -> pick branch one invoked -> pick branch two invoked -> process complete.*
+response1=.*Event Test Dynamic Pick Start -> loop on pick until message includes requestEnd = yes -> (pick branch one invoked -> )?pick branch two invoked -> process complete.*
Modified: incubator/ode/trunk/jbi/src/main/java/org/apache/ode/jbi/OdeLifeCycle.java
URL: http://svn.apache.org/viewvc/incubator/ode/trunk/jbi/src/main/java/org/apache/ode/jbi/OdeLifeCycle.java?view=diff&rev=525545&r1=525544&r2=525545
==============================================================================
--- incubator/ode/trunk/jbi/src/main/java/org/apache/ode/jbi/OdeLifeCycle.java (original)
+++ incubator/ode/trunk/jbi/src/main/java/org/apache/ode/jbi/OdeLifeCycle.java Wed Apr 4 09:00:43 2007
@@ -203,7 +203,7 @@
_ode._store = new ProcessStoreImpl(_ode._dataSource, _ode._config.getDAOConnectionFactory(), false);
_ode._store.loadAll();
- _ode._server.setInMemDaoConnectionFactory(new org.apache.ode.bpel.memdao.BpelDAOConnectionFactoryImpl());
+ _ode._server.setInMemDaoConnectionFactory(new org.apache.ode.bpel.memdao.BpelDAOConnectionFactoryImpl(_ode._scheduler));
_ode._server.setDaoConnectionFactory(_ode._daocf);
_ode._server.setEndpointReferenceContext(_ode._eprContext);
_ode._server.setMessageExchangeContext(_ode._mexContext);