Issue 4712: exception processing during completion in subordinates (ots-structs-ftf) Source: International Business Machines (Dr. Ian Robinson, ian_robinson@uk.ibm.com) Nature: Uncategorized Issue Severity: Summary: The ActivityCoordinator complete_activity operation may raise ActivityPending and ChildContextPending exceptions. The conditions under which these exceptions are raised should be independent of whether they occur in the root or a subordinate node. For example, if the a subordinate node had earlier spawned an asynchronous thread that was not complete when the subordinate was signaled for preCompletion, then the application originator (on the root) should receive an ActivityPending exception that does not cause the Activity to complete or mark is as failed only. Yet, at the subordinate, the only response that the subordinate Synchronization Action can give during preCompletion is an Outcome of preCompletionSuccess or preCompletionFailed or an ActionError exception, none of which result in the desired behaviour. Possible solutions are: 1. New exceptions on the Action::process_signal exception that the root ActivityCoordinator converts to ActivityPending or ChildContextPending. CORBA::TRANSIENT could be used if the minor codes were architected. This is ugly because its specific to the processing of the Synchronization SignalSet. 2. New predefined Outcomes for the Synchronization SignalSet that the root ActivityCoordinator can recognize and convert accordingly. Still a little ugly in that the ActivityCoordinator needs to understand the meaning of an Outcome. In either case, the Synchronization SignalSet needs to be capable of being redriven after returning such an Outcome/Exception. Resolution: see above Revised Text: Proposed changes to specification: Add the following text in section 2.2.1 before the second last paragraph on the org.omg.CosActivity.Synchronization subheading: "The following Outcomes may be produced by this SignalSet, typically when the SignalSet is invoked in the environment of a subordinate ActivityCoordinator: - 'preCompletionActivityPending'. This outcome is returned if the Activity is concurrently active on another thread when the preCompletion signal is received. - 'preCompletionChildContextPending'. This outcome is returned if there is an outstanding child Activity, or a transaction context encompassed within the Activity, when the preCompletion signal is received. These outcomes indicate that there is work outstanding that needs to be completed before the preCompletion signal can be processed. These outcomes must be processed by an ActivityCoordinator in such a way that the application which requested the completion of the Activity receives an ActivityPending or ChildContextPending exception." Actions taken: November 23, 2001: received issue March 10, 2004: closed issue Discussion: Resolution: Add new predefined Outcomes for the Synchronization SignalSet that a root ActivityCoordinator can recognize in order to return appropriate ActivityPending or ChildContextPending exceptions. End of Annotations:===== Importance: Normal Subject: exception processing during completion in subordinates To: ots-structs-ftf@omg.org Cc: issues@omg.org, "Alex Mulholland" X-Mailer: Lotus Notes Release 5.0.5 September 22, 2000 Message-ID: From: "Ian Robinson" Date: Fri, 23 Nov 2001 15:21:49 +0000 X-MIMETrack: Serialize by Router on d06ml007/06/M/IBM(Release 5.0.8 |June 18, 2001) at 23/11/2001 15:34:39 MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii X-UIDL: Date: Sat, 5 Apr 2003 21:39:31 +0100 X-MIMETrack: Serialize by Router on d06ml007/06/M/IBM(Release 5.0.9a |January 7, 2002) at 05/04/2003 21:45:20 Proposed resolution for issue 4712: Add new predefined Outcomes for the Synchronization SignalSet that a root ActivityCoordinator can recognize in order to return appropriate ActivityPending or ChildContextPending exceptions. Proposed changes to specification: Replace the following text in section 4.3.2.1: "No Outcome is produced by this SignalSet." with: "The following Outcomes may be produced by this SignalSet, typically when the SignalSet is invoked in the environment of a subordinate ActivityCoordinator: - 'preCompletionActivityPending'. This outcome is returned if the Activity is concurrently active on another thread when the preCompletion signal is received. - 'preCompletionChildContextPending'. This outcome is returned if there is an outstanding child Activity, or a transaction context encompassed within the Activity, when the preCompletion signal is received. These outcomes indicate that there is work outstanding that needs to be completed before the preCompletion signal can be processed. These outcomes must be processed by an ActivityCoordinator in such a way that the application which requested the completion of the Activity receives an ActivityPending or ChildContextPending exception. Ian Robinson, Senior Technical Staff Member, WebSphere Transactions Architecture & Development, IBM Hursley Lab, UK Tel +44-(0)1962-818626 Tie: 724-8626 ian_robinson@uk.ibm.com From: "Mark Little" To: , "Ian Robinson" Subject: Re: Proposed resolution text for issue 4712 Date: Sun, 6 Apr 2003 20:44:40 +0100 X-Mailer: Microsoft Outlook Express 6.00.2600.0000 X-Newcastle-MailScanner: Found to be clean I don't have a problem with this text. Mark. ----- Original Message ----- From: "Ian Robinson" To: Sent: Saturday, April 05, 2003 9:39 PM Subject: Proposed resolution text for issue 4712 > Proposed resolution for issue 4712: > > Add new predefined Outcomes for the Synchronization SignalSet that a root > ActivityCoordinator can recognize in order to return appropriate > ActivityPending or ChildContextPending exceptions. > > Proposed changes to specification: > > Replace the following text in section 4.3.2.1: > "No Outcome is produced by this SignalSet." > > with: > > "The following Outcomes may be produced by this SignalSet, typically when > the SignalSet is invoked in > the environment of a subordinate ActivityCoordinator: > - 'preCompletionActivityPending'. This outcome is returned if the Activity > is concurrently active on another > thread when the preCompletion signal is received. > - 'preCompletionChildContextPending'. This outcome is returned if there is > an outstanding > child Activity, or a transaction context encompassed within the Activity, > when the preCompletion signal is received. > > These outcomes indicate that there is work outstanding that needs to be > completed before the preCompletion > signal can be processed. These outcomes must be processed by an > ActivityCoordinator in such a way that > the application which requested the completion of the Activity receives an > ActivityPending or ChildContextPending > exception. > > Ian Robinson, > Senior Technical Staff Member, > WebSphere Transactions Architecture & Development, > IBM Hursley Lab, UK > Tel +44-(0)1962-818626 Tie: 724-8626 > ian_robinson@uk.ibm.com > > > > > Proposed resolution for issue 4712: Add new predefined Outcomes for the Synchronization SignalSet that a root ActivityCoordinator can recognize in order to return appropriate ActivityPending or ChildContextPending exceptions. Proposed changes to specification: Replace the following text in section 4.3.2.1: "No Outcome is produced by this SignalSet." with: "The following Outcomes may be produced by this SignalSet, typically when the SignalSet is invoked in the environment of a subordinate ActivityCoordinator: - 'preCompletionActivityPending'. This outcome is returned if the Activity is concurrently active on another thread when the preCompletion signal is received. - 'preCompletionChildContextPending'. This outcome is returned if there is an outstanding child Activity, or a transaction context encompassed within the Activity, when the preCompletion signal is received. These outcomes indicate that there is work outstanding that needs to be completed before the preCompletion signal can be processed. These outcomes must be processed by an ActivityCoordinator in such a way that the application which requested the completion of the Activity receives an ActivityPending or ChildContextPending exception.