[
https://issues.apache.org/jira/browse/SCXML-285?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Ate Douma resolved SCXML-285.
-----------------------------
Resolution: Fixed
> Before executing 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
> Priority: Major
> 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)