[ https://issues.apache.org/activemq/browse/SM-439?page=all ]
james strachan reassigned SM-439:
-
Assignee: james strachan
servicemix-beanflow - Workflow.joinAll failure to register onStop callback if
first Activity stops during start handler
---
Key: SM-439
URL: https://issues.apache.org/activemq/browse/SM-439
Project: ServiceMix
Issue Type: Bug
Components: beanflow
Affects Versions: incubation
Environment: osx, jdk 1.5
Reporter: Jason Anderson
Assigned To: james strachan
if the following code is run the JoinFlow.stop state will never be thrown
because the internal JoinAll state is set to stopped after forking the first
activity in the JoinSupport(Activity ...) constructor before the onStop
callback is registered in WorkFlow.join
public class JoinTest extends TestCase {
public static class JoinFlow extends WorkflowJoinFlow.Step {
public static enum Step {
first, stop
}
public JoinFlow() {
super(Step.first);
}
public void first() {
final Activity a = new TimeoutActivity() {
protected void onValidStateChange() {
System.out.println(in a);
stop();
}
};
final Activity b = new TimeoutActivity() {
protected void onValidStateChange() {
System.out.println(in b);
stop();
}
};
System.out.println(in first);
joinAll(Step.stop, 1, a, b);
System.out.println(after join);
}
}
public void testJoin() throws Exception {
JoinFlow flow = new JoinFlow();
flow.start();
flow.join();
}
}
I believe if the JoinSupport were to add all the activities to the children
list before forking them it would prevent the JoinAll.onChildStateChange from
being called prematurely with childCount=1, stoppedCount=1 when there should
be 2 children but I cannot currently get the maven build to run to test this
thoery
--
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators:
https://issues.apache.org/activemq/secure/Administrators.jspa
-
For more information on JIRA, see: http://www.atlassian.com/software/jira