Author: assaf
Date: Tue Nov 14 15:57:55 2006
New Revision: 475064
URL: http://svn.apache.org/viewvc?view=rev&rev=475064
Log:
Implemented cancelled/failure for activity guard and implement scope, now
passing all test cases for activity recovery
Modified:
incubator/ode/trunk/bpel-runtime/src/main/java/org/apache/ode/bpel/runtime/ACTIVITYGUARD.java
incubator/ode/trunk/bpel-runtime/src/main/java/org/apache/ode/bpel/runtime/COMPENSATIONHANDLER_.java
incubator/ode/trunk/bpel-runtime/src/main/java/org/apache/ode/bpel/runtime/EH_ALARM.java
incubator/ode/trunk/bpel-runtime/src/main/java/org/apache/ode/bpel/runtime/EH_EVENT.java
incubator/ode/trunk/bpel-runtime/src/main/java/org/apache/ode/bpel/runtime/FLOW.java
incubator/ode/trunk/bpel-runtime/src/main/java/org/apache/ode/bpel/runtime/FOREACH.java
incubator/ode/trunk/bpel-runtime/src/main/java/org/apache/ode/bpel/runtime/SCOPE.java
incubator/ode/trunk/bpel-runtime/src/main/java/org/apache/ode/bpel/runtime/SEQUENCE.java
incubator/ode/trunk/bpel-runtime/src/main/java/org/apache/ode/bpel/runtime/WHILE.java
incubator/ode/trunk/bpel-runtime/src/test/java/org/apache/ode/bpel/runtime/ActivityRecoveryTest.java
incubator/ode/trunk/bpel-runtime/src/test/java/org/apache/ode/bpel/runtime/MockBpelServer.java
Modified:
incubator/ode/trunk/bpel-runtime/src/main/java/org/apache/ode/bpel/runtime/ACTIVITYGUARD.java
URL:
http://svn.apache.org/viewvc/incubator/ode/trunk/bpel-runtime/src/main/java/org/apache/ode/bpel/runtime/ACTIVITYGUARD.java?view=diff&rev=475064&r1=475063&r2=475064
==============================================================================
---
incubator/ode/trunk/bpel-runtime/src/main/java/org/apache/ode/bpel/runtime/ACTIVITYGUARD.java
(original)
+++
incubator/ode/trunk/bpel-runtime/src/main/java/org/apache/ode/bpel/runtime/ACTIVITYGUARD.java
Tue Nov 14 15:57:55 2006
@@ -234,9 +234,9 @@
public void cancelled() {
sendEvent(new ActivityExecEndEvent());
+ dpe(_oactivity.outgoingLinks);
dpe(_oactivity.sourceLinks);
- _self.parent.cancelled();
- // Bubble up: for implicitScope.
+ // Implicit scope can tell the difference between
cancelled and completed.
_self.parent.cancelled();
}
@@ -256,7 +256,6 @@
completed(faultData, CompensationHandler.emptySet());
return;
}
- // If maximum number of retries, enter activity recovery
state.
if (failureHandling == null || _failure.retryCount >=
failureHandling.retryFor) {
requireRecovery();
return;
Modified:
incubator/ode/trunk/bpel-runtime/src/main/java/org/apache/ode/bpel/runtime/COMPENSATIONHANDLER_.java
URL:
http://svn.apache.org/viewvc/incubator/ode/trunk/bpel-runtime/src/main/java/org/apache/ode/bpel/runtime/COMPENSATIONHANDLER_.java?view=diff&rev=475064&r1=475063&r2=475064
==============================================================================
---
incubator/ode/trunk/bpel-runtime/src/main/java/org/apache/ode/bpel/runtime/COMPENSATIONHANDLER_.java
(original)
+++
incubator/ode/trunk/bpel-runtime/src/main/java/org/apache/ode/bpel/runtime/COMPENSATIONHANDLER_.java
Tue Nov 14 15:57:55 2006
@@ -93,8 +93,8 @@
ret.ret();
}
- public void cancelled() { }
- public void failure(String reason, Element data) { }
+ public void cancelled() { completed(null,
CompensationHandler.emptySet()); }
+ public void failure(String reason, Element data) {
completed(null, CompensationHandler.emptySet()); }
});
}
});
Modified:
incubator/ode/trunk/bpel-runtime/src/main/java/org/apache/ode/bpel/runtime/EH_ALARM.java
URL:
http://svn.apache.org/viewvc/incubator/ode/trunk/bpel-runtime/src/main/java/org/apache/ode/bpel/runtime/EH_ALARM.java?view=diff&rev=475064&r1=475063&r2=475064
==============================================================================
---
incubator/ode/trunk/bpel-runtime/src/main/java/org/apache/ode/bpel/runtime/EH_ALARM.java
(original)
+++
incubator/ode/trunk/bpel-runtime/src/main/java/org/apache/ode/bpel/runtime/EH_ALARM.java
Tue Nov 14 15:57:55 2006
@@ -224,8 +224,8 @@
}
}
- public void cancelled() { }
- public void failure(String reason, Element data) { }
+ public void cancelled() { completed(null,
CompensationHandler.emptySet()); }
+ public void failure(String reason, Element data) {
completed(null, CompensationHandler.emptySet()); }
}.or(new EventHandlerControlChannelListener(_cc) {
private static final long serialVersionUID =
-3873619538789039424L;
Modified:
incubator/ode/trunk/bpel-runtime/src/main/java/org/apache/ode/bpel/runtime/EH_EVENT.java
URL:
http://svn.apache.org/viewvc/incubator/ode/trunk/bpel-runtime/src/main/java/org/apache/ode/bpel/runtime/EH_EVENT.java?view=diff&rev=475064&r1=475063&r2=475064
==============================================================================
---
incubator/ode/trunk/bpel-runtime/src/main/java/org/apache/ode/bpel/runtime/EH_EVENT.java
(original)
+++
incubator/ode/trunk/bpel-runtime/src/main/java/org/apache/ode/bpel/runtime/EH_EVENT.java
Tue Nov 14 15:57:55 2006
@@ -198,8 +198,8 @@
instance(WAITING.this);
}
- public void cancelled() { }
- public void failure(String reason, Element data) { }
+ public void cancelled() { completed(null,
CompensationHandler.emptySet()); }
+ public void failure(String reason, Element data) {
completed(null, CompensationHandler.emptySet()); }
});
}
Modified:
incubator/ode/trunk/bpel-runtime/src/main/java/org/apache/ode/bpel/runtime/FLOW.java
URL:
http://svn.apache.org/viewvc/incubator/ode/trunk/bpel-runtime/src/main/java/org/apache/ode/bpel/runtime/FLOW.java?view=diff&rev=475064&r1=475063&r2=475064
==============================================================================
---
incubator/ode/trunk/bpel-runtime/src/main/java/org/apache/ode/bpel/runtime/FLOW.java
(original)
+++
incubator/ode/trunk/bpel-runtime/src/main/java/org/apache/ode/bpel/runtime/FLOW.java
Tue Nov 14 15:57:55 2006
@@ -113,8 +113,8 @@
instance(ACTIVE.this);
}
- public void cancelled() { }
- public void failure(String reason, Element data) { }
+ public void cancelled() { completed(null,
CompensationHandler.emptySet()); }
+ public void failure(String reason, Element data) {
completed(null, CompensationHandler.emptySet()); }
});
}
object(false,mlSet);
Modified:
incubator/ode/trunk/bpel-runtime/src/main/java/org/apache/ode/bpel/runtime/FOREACH.java
URL:
http://svn.apache.org/viewvc/incubator/ode/trunk/bpel-runtime/src/main/java/org/apache/ode/bpel/runtime/FOREACH.java?view=diff&rev=475064&r1=475063&r2=475064
==============================================================================
---
incubator/ode/trunk/bpel-runtime/src/main/java/org/apache/ode/bpel/runtime/FOREACH.java
(original)
+++
incubator/ode/trunk/bpel-runtime/src/main/java/org/apache/ode/bpel/runtime/FOREACH.java
Tue Nov 14 15:57:55 2006
@@ -158,8 +158,8 @@
instance(ACTIVE.this);
}
- public void cancelled() { }
- public void failure(String reason, Element data) { }
+ public void cancelled() { completed(null,
CompensationHandler.emptySet()); }
+ public void failure(String reason, Element data) {
completed(null, CompensationHandler.emptySet()); }
});
}
object(false,mlSet);
Modified:
incubator/ode/trunk/bpel-runtime/src/main/java/org/apache/ode/bpel/runtime/SCOPE.java
URL:
http://svn.apache.org/viewvc/incubator/ode/trunk/bpel-runtime/src/main/java/org/apache/ode/bpel/runtime/SCOPE.java?view=diff&rev=475064&r1=475063&r2=475064
==============================================================================
---
incubator/ode/trunk/bpel-runtime/src/main/java/org/apache/ode/bpel/runtime/SCOPE.java
(original)
+++
incubator/ode/trunk/bpel-runtime/src/main/java/org/apache/ode/bpel/runtime/SCOPE.java
Tue Nov 14 15:57:55 2006
@@ -172,11 +172,18 @@
}
public void cancelled() {
+ // Implicit scope holds links of the enclosed
activity,
+ // they only get cancelled when we propagate
upwards.
if (_oscope.implicitScope)
_self.parent.cancelled();
+ else
+ completed(null,
CompensationHandler.emptySet());
}
- public void failure(String reason, Element data) { }
+ public void failure(String reason, Element data) {
+
completed(createFault(OFailureHandling.FAILURE_FAULT_NAME, _self.o, null),
+ CompensationHandler.emptySet());
+ }
});
}
@@ -216,8 +223,8 @@
instance(ACTIVE.this);
}
- public void cancelled() { }
- public void failure(String reason, Element data) { }
+ public void cancelled() { completed(null,
CompensationHandler.emptySet()); }
+ public void failure(String reason, Element data) {
completed(null, CompensationHandler.emptySet()); }
});
}
object(false, mlSet);
@@ -313,8 +320,8 @@
_self.parent.completed(fault,
CompensationHandler.emptySet());
}
- public void cancelled() { }
- public void failure(String reason, Element data) {
}
+ public void cancelled() { completed(null,
CompensationHandler.emptySet()); }
+ public void failure(String reason, Element data) {
completed(null, CompensationHandler.emptySet()); }
});
}
} else /* completed ok */ {
Modified:
incubator/ode/trunk/bpel-runtime/src/main/java/org/apache/ode/bpel/runtime/SEQUENCE.java
URL:
http://svn.apache.org/viewvc/incubator/ode/trunk/bpel-runtime/src/main/java/org/apache/ode/bpel/runtime/SEQUENCE.java?view=diff&rev=475064&r1=475063&r2=475064
==============================================================================
---
incubator/ode/trunk/bpel-runtime/src/main/java/org/apache/ode/bpel/runtime/SEQUENCE.java
(original)
+++
incubator/ode/trunk/bpel-runtime/src/main/java/org/apache/ode/bpel/runtime/SEQUENCE.java
Tue Nov 14 15:57:55 2006
@@ -108,8 +108,8 @@
}
}
- public void cancelled() { }
- public void failure(String reason, Element data) { }
+ public void cancelled() { completed(null,
CompensationHandler.emptySet()); }
+ public void failure(String reason, Element data) {
completed(null, CompensationHandler.emptySet()); }
}));
}
Modified:
incubator/ode/trunk/bpel-runtime/src/main/java/org/apache/ode/bpel/runtime/WHILE.java
URL:
http://svn.apache.org/viewvc/incubator/ode/trunk/bpel-runtime/src/main/java/org/apache/ode/bpel/runtime/WHILE.java?view=diff&rev=475064&r1=475063&r2=475064
==============================================================================
---
incubator/ode/trunk/bpel-runtime/src/main/java/org/apache/ode/bpel/runtime/WHILE.java
(original)
+++
incubator/ode/trunk/bpel-runtime/src/main/java/org/apache/ode/bpel/runtime/WHILE.java
Tue Nov 14 15:57:55 2006
@@ -138,8 +138,8 @@
instance(WHILE.this);
}
- public void cancelled() { }
- public void failure(String reason, Element data) { }
+ public void cancelled() { completed(null,
CompensationHandler.emptySet()); }
+ public void failure(String reason, Element data) {
completed(null, CompensationHandler.emptySet()); }
}));
}
}
Modified:
incubator/ode/trunk/bpel-runtime/src/test/java/org/apache/ode/bpel/runtime/ActivityRecoveryTest.java
URL:
http://svn.apache.org/viewvc/incubator/ode/trunk/bpel-runtime/src/test/java/org/apache/ode/bpel/runtime/ActivityRecoveryTest.java?view=diff&rev=475064&r1=475063&r2=475064
==============================================================================
---
incubator/ode/trunk/bpel-runtime/src/test/java/org/apache/ode/bpel/runtime/ActivityRecoveryTest.java
(original)
+++
incubator/ode/trunk/bpel-runtime/src/test/java/org/apache/ode/bpel/runtime/ActivityRecoveryTest.java
Tue Nov 14 15:57:55 2006
@@ -55,7 +55,7 @@
boolean _responseSent;
MockBpelServer _server;
BpelManagementFacade _management;
-/*
+
public void testSuccessfulInvoke() throws Exception {
execute("FailureToRecovery", 0);
assertCompleted(true, 1, null);
@@ -83,7 +83,7 @@
recover("fault");
assertCompleted(false, 4, OFailureHandling.FAILURE_FAULT_NAME);
}
-*/
+
public void testCancelRecoveryAction() throws Exception {
execute("FailureToCancel", 4);
assertRecovery(3, ACTIONS);
@@ -92,7 +92,7 @@
recover("cancel");
assertCompleted(true, 4, null);
}
-/*
+
public void testImmediateFailure() throws Exception {
execute("FailureNoRetry", 1);
assertRecovery(1, ACTIONS);
@@ -107,7 +107,7 @@
execute("FailureInheritence", 2);
assertCompleted(true, 3, null);
}
-*/
+
protected void setUp() throws Exception {
_server = new MockBpelServer() {
protected MessageExchangeContext createMessageExchangeContext() {
@@ -124,8 +124,9 @@
} else {
mex.replyWithFailure(MessageExchange.FailureType.COMMUNICATION_ERROR,
"BangGoesInvoke", null);
}
- } else if
(mex.getOperation().getName().equals("respond"))
- _responseSent = true;
+ } else if
(mex.getOperation().getName().equals("respond")) {
+ _responseSent = true;
+ }
}
public void onAsyncReply(MyRoleMessageExchange myRoleMex)
{ }
@@ -163,7 +164,6 @@
TInstanceInfo instance =
_management.listAllInstances().getInstanceInfoList().getInstanceInfoArray(0);
TInstanceInfo.Failures failures = instance.getFailures();
assertTrue(failures == null || failures.getCount() == 0);
-System.out.println(instance.getFaultInfo() != null ?
instance.getFaultInfo().getName() : instance.getStatus());
if (successful) {
assertTrue(instance.getStatus() == TInstanceStatus.COMPLETED);
assertTrue(_responseSent);
@@ -196,7 +196,7 @@
TActivityInfo.Failure failure = recoveries.get(0).getFailure();
assertTrue(failure.getRetries() == invoked - 1);
assertTrue(failure.getReason().equals("BangGoesInvoke"));
- assertTrue(failure.getDtFailure().getTime().getTime() / 100000 ==
System.currentTimeMillis() / 100000);
+ assertTrue(failure.getDtFailure() != null);
java.util.HashSet<String> actionSet = new java.util.HashSet<String>();
for (String action : failure.getActions().split(" "))
actionSet.add(action);
Modified:
incubator/ode/trunk/bpel-runtime/src/test/java/org/apache/ode/bpel/runtime/MockBpelServer.java
URL:
http://svn.apache.org/viewvc/incubator/ode/trunk/bpel-runtime/src/test/java/org/apache/ode/bpel/runtime/MockBpelServer.java?view=diff&rev=475064&r1=475063&r2=475064
==============================================================================
---
incubator/ode/trunk/bpel-runtime/src/test/java/org/apache/ode/bpel/runtime/MockBpelServer.java
(original)
+++
incubator/ode/trunk/bpel-runtime/src/test/java/org/apache/ode/bpel/runtime/MockBpelServer.java
Tue Nov 14 15:57:55 2006
@@ -134,7 +134,7 @@
public void waitForBlocking() {
try {
- long delay = 10000;
+ long delay = 1000;
while (true) {
// Be warned: ugly hack and not safe for slow CPUs.
long cutoff = System.currentTimeMillis() - delay;