Ate Douma created SCXML-285:
-------------------------------

             Summary: Before invoking invoke handlers after a macrostep all 
internal events must have been processed
                 Key: SCXML-285
                 URL: https://issues.apache.org/jira/browse/SCXML-285
             Project: Commons SCXML
          Issue Type: Bug
    Affects Versions: 2.0
            Reporter: Ate Douma
            Assignee: Ate Douma
             Fix For: 2.0


I discovered a tricky bug in SCXMLSemanticsImpl#macroStep where it doesn't 
comply with the SCXML specification, part 3.13, which defines the following 
rules (among many others):
 * A _macrostep_ is a series of one or more microsteps ending in a 
configuration where the internal event queue is empty [...]
 * After completing a macrostep, the SCXML Processor _must_ execute in document 
order the <invoke> handlers [...]

The tricky bug is that the current implementation does check for internal 
events first, but only processes the first event!
In case of more than 1 internal event, the invoke handlers will be executed 
*before* (thereafter) processing any remaining internal events.

The  [SCXML IRP Tests|https://www.w3.org/Voice/2013/scxml-irp/] didn't 
catch/test this condition, and it only in special scenarios will actually make 
a difference.
I'll add a dedicated test for this, and then apply a fix proving it.  

 



--
This message was sent by Atlassian JIRA
(v7.6.3#76005)

Reply via email to