You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@servicemix.apache.org by "james strachan (JIRA)" <ji...@apache.org> on 2006/08/24 14:11:23 UTC

[jira] Assigned: (SM-439) servicemix-beanflow - Workflow.joinAll failure to register onStop callback if first Activity stops during start handler

     [ 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 Workflow<JoinFlow.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, 10000, 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