Error recovery is an important function of any computer processing system. The ability to recover from an error situation in a timely manner and in such a way that data corruption is minimized is paramount to the reliability of the computer system.
As is known, there are a number of different types of error recovery techniques. One technique that is used in some systems, such as, for instance, those computer systems running Multiple Virtual Storage/Enterprise Systems Architecture (MVS/ESA) operating system offered by International Business Machines Corporation is referred to as a stack-based technique. In particular, for each task (i.e., independent unit of execution that can be scheduled by an operating system) executing on the computer system, there is an associated stack, which includes levels of recovery services or routines for that task.
During recovery of an error, a recovery service or routine is selected from the stack particularly associated with the failed task. Specifically, the routine on the top of the stack is selected and executed, and if that routine indicates percolation, the procedural code of the system dictates that the next service or routine on that particular stack is to be selected. Thus, recovery proceeds only down the stack of the failed task.
This is a problem in those situations in which one task invokes another task. For example, assume that a task, Task A, gets invoked and an error recovery routine AE is established for the task. Error recovery routine AE is placed on Stack A. Then, Task A invokes Task B and Task B invokes a service (such as MVS' Recovery Termination Manager (RTM)) to establish an error recovery routine BE, which gets placed on Stack B (since there is a different stack for each task). Thereafter, an error occurs during execution of Task B that causes entry into error routine BE. Error routine BE wants to percolate and therefore, it will go to the next routine, if any, on its stack, Stack B. It does not percolate to the routines on Stack A, even though, in the above example, error routine AE is the next routine in logical invocation sequence.
Failing to percolate to Stack A can have catastrophic consequences for the computer system. For example, the data may be corrupted and/or uncertainty may exist in the execution of applications. Therefore, a need exists for a recovery mechanism which takes into account the logical invocation sequence of functions within the tasks. A further need exists for a mechanism which facilitates the transfer of control between different recovery units in different tasks. A yet further need exists for a mechanism that allows concurrent execution of task related and sequence related recovery. A need also exists for enabling recovery to be performed for distributed cross-system (including homogeneous and heterogeneous) functions. A yet further need exists for a mechanism that integrates procedural recovery (i.e., stack based recovery) with object-oriented technology.