Hi Chris,
Thank you again for sending the proposal out.
I am for general direction of this proposal.
"Explicit invocation of compensation for such a scope nested within S effectively
removes the scope from the default-order compensation, but the
remainder of the compensation order is preserved. If a
<compensate/> is used prior to a <compensate scope="Sx"/>
the latter is treated as a no-op"
Technically, what your text describe is consistent with my
understanding and preference.
However the wording of "effectively removes" make me worry this text
gives people an impression that the default-order compensation is
mutable upon <compensate scope="Sx" />. In fact, we have no
mechanism to change the default-order.
Thinking out loud here ... how about:
"After any explicit invocation of compensation for such a scope nested
within S, the default-order compensation is still available via
<compensate/> activity. During the default-order compensation,
any attempt to compensate a scope which has been already explicity
compensated is a no-op. On the other hand, if a
<compensate/> is used prior to a <compensate scope="Sx"/>
the latter is treated as a no-op"
I guess it will have less room of misunderstanding.
What do you think?
Thanks!
Regards,
Alex Yiu
Chris Keller wrote:
Issue 229
Proposal Summary: Allow
<compensate/> after
<compensate scope="Sx"/> and emphasize that user defined fault
and compensation handlers must explicitly call compensate for child
scope
compensation to occur.
Changes to current
specification
--------------------------------
Section 13.3.3
"...Note that the
<compensate/> activity in a
fault or compensation handler attached to scope S causes the
default-order
invocation of compensation handlers for completed scopes directly
nested within
S. The use of this activity can be mixed with any other user-specified
behavior
except the explicit invocation of <compensate scope="Sx"/> for
scope Sx nested directly within S. Explicit invocation of compensation
for such
a scope nested within S disables the availability of default-order
compensation, as expected."
Change to:
"...Note that the
<compensate/> activity in a
fault or compensation handler attached to scope S causes the
default-order
invocation of compensation handlers for completed scopes directly
nested within
S. The use of this activity can be mixed with any other user-specified
behavior
including the explicit invocation of <compensate scope="Sx"/>
for scope Sx nested directly within S. Explicit invocation of
compensation for
such a scope nested within S effectively removes the scope from the
default-order compensation, but the remainder of the compensation order
is
preserved. If a <compensate/> is used prior to a <compensate
scope="Sx"/> the latter is treated as a no-op.
The compensate activity
MUST be used by user defined fault
handlers and compensation handlers for child scope compensation to be
called. If a user defined fault handler or compensation handler does
not
use the compensate activity child scopes will not be compensated."
Section 14.6
--- Remove this section
as it is not applicable per issue
209 resolution ---
Appendix A -
--- Remove
repeatedCompensation fault as it is not
applicable per issue 209 resolution ---