Comments without taking a side. Pros and cons that I see:
Alex's version catches the fault as near as possible, but requires that
a compensation activity do scope-like work.
Mark's proposal would require (IMO) defining or replacing the term "the
calling fault ... handler"
Mark Ford wrote:
Hi Alex,
Thanks for your response. I like your proposal
but it has a slight difference in the outcome which I think is worth
pointing out. I'm CC'ing the list to get any other input.
Consider a faultHandler that has three
<compensateScope> activities in it. The first
<compensateScope> invokes a compensation handler that for
whatever reason (modeling error or some other error condition) fails to
close an IMA it opened. In your scenario, this would be detected at the
compensationHandler's completion and result in the fault being
propagated to the FCT Handler, thereby terminating the handler and not
invoking the other compensateScope activities. This is good in the
sense that we detect and handle the orphaned reply closer to its source
but the side effect is that we will not run the additional compensation
activities. In my proposal below these compensation activities would
still run since the check for orphaned IMA's wouldn't be done until the
originating faultHandler completed.
Also, the language for any propagation of a
fault from a compensationHandler should mention the source compensation
activity as its propagation target as opposed to the FCT Handler. I
think it is more precise to write compensation activity since this
compensation activity could have a scope around it which would catch
any faults and allow the FCT Handler to continue execution.
From: Alex Yiu
[mailto:]
Sent: Thursday, May 04, 2006 1:55 AM
To: Mark Ford
Cc: Alex Yiu
Subject: Re: [wsbpel] Issue - 274 - orphaned IMA in
compensationHandler
Hi Mark,
+1 to open this issue.
Generally speaking, I would agree with your high level proposal.
How about refining your proposal as follows:
--------------------------
The same checking of orphaned IMA’s is performed, after the activity of
a compensation handler have completed without any unhandled fault. If
any orphaned IMA’s are detected, a bpel:missingReply fault MUST be
propagated to the invoking FCT-handler and those IMA’s are no longer
considered orphaned.
If a unhandled fault different from bpel:missingReply occurs during the
execution of the compensation handler, that fault is propagated to the
invoking FCT-handler. The checking for orphaned IMA's is deferred to
the invoking FCT-handler. The orphaned IMA's, if any resulted from the
execution of the compensation handler, remain as such.
--------------------------
A longer proposal than yours, but at the same time, it allows us to
have a finer grain control missing replies.
What do you think?
Regards,
Alex Yiu
ws-bpel issues list editor wrote:
This issue has been added to the wsbpel issue list with a status
of "received". The status will be changed to "open" if a motion to open
the issue is proposed and that motion is approved by the TC. A motion
could also be proposed to close it without further consideration.
Otherwise it will remain as "received".
The issues list is posted as a Technical Committee document to
the OASIS
WSBPEL TC pages on a regular basis. The current edition, as a TC
document, is the most recent version of the document entitled in the
"Issues" folder of the WSBPEL
TC document list - the next posting as a TC document will include
this issue. The list editor's working copy, which will normally include
an issue when it is announced, is available at this
constant URL.
Issue - 274 - orphaned IMA in compensationHandler
Status: received
Date added: 2 May 2006
Date submitted: 02 May 2006
Submitter: Mark
Ford
Description: Section 12 outlines four scenarios for handling
the detection and reporting of errors for orphaned IMA's
1. Normal scope completion - scope activity and event handlers
complete normally. The engine MUST check for orphaned IMA's within the
completing scope and fault itself with a bpel:missingReply if found.
2. Fault handler completion without fault or rethrow. The engine
MUST check for ophaned IMA's within the completing scope and fault its
parent scope with a bpel:missingReply if orphaned IMA's found.
3. Fault handler completion with fault or rethrow. The engine
MUST NOT check for orphaned IMA's. It is the responsibility of the
parent scope to check for the orphaned IMA's and report them.
4. Termination handler completion. Same as scenario 3.
The above scenarios do not address a compensationHandler that
completes with orphaned IMA's. In this scenario, a compensation handler
opens an IMA as part of its execution using a partnerLink or
messageExchange declared within its associated scope. At the time the
compensationHandler completes it fails to reply to the open IMA which
makes the IMA an orphan.
Submitter's proposal: My proposed resolution is to have the
fault handler or termination handler that started the compensation
routine responsible for handling the orphaned IMA's as outlined in the
existing bullets. This could be made explicit as a new bullet or as a
clarifying statement following the bullets. I propose adding a 5th
bullet as follows.
orphaned IMA's created by the execution of a compensation
handler are detected or processed by the compensation handler's calling
fault handler or termination handler as outlined above.
Changes: 2 May 2006 - new issue
To comment on this issue (including whether it should be
accepted), please follow-up to this announcement on the
list (replying to this message should automatically send your message
to that list), or ensure the subject line as you send it starts
"Issue - 274 - [anything]" or is a reply to such a message. If you want
to formally propose a resolution to an open issue, please start the
subject line "Issue - 274 - Proposed resolution", without any Re: or
similar.
To add a new issue, see the issues procedures document (but the
address for new issue submission is the sender of this announcement).
---------------------------------------------------------------------
To unsubscribe from this mail list, you must leave the OASIS TC that
generates this mail. You may a link to this group and all your TCs in
OASIS at: https://www.oasis-open.org/apps/org/workgroup/portal/my_workgroups.php