Recovery of logless components
Recovery processing of logless components is disclosed. Logless components in middle-tier systems can be checkpointed to provide faster recovery. In particular, a client system, executing a persistent component and itself logging, initiates a snapshot method that returns to the client the values of all variables and other state of the logless component during normal execution. The client writes this data to the client log along with information about the initiation call. To recover the logless component, the client invokes a restore method which takes as an argument values returned from the snapshot method and included in the checkpointing portion of the client log relating to the logless component. This information is sufficient for recreating the logless component which is logically identical to the failed logless component and for setting its state to the checkpoint state. This can occur transparently and shorten the recovery time in providing exactly-once execution.
1 . A computer-implemented system that facilitates exactly-once application execution, comprising:
a logless component for processing a sequence of method calls; and
a client component for controlling a recovery process of the logless component via checkpointing of state of the logless component so that recovery time is shortened should the logless component fail.
2 . The system of claim 1 , wherein the logless component is a middle-tier component.
3 . The system of claim 1 , wherein the logless component is part of a middle-tier server, the logless component includes a snapshot method for capturing values of system and application variables and other state information of the logless component during normal execution and a restore method for restoring a new logless component that is logically identical to the logless component before it failed.
4 . The system of claim 1 , wherein the recovery process is transparent to an application associated with the logless component.
5 . The system of claim 1 , wherein the logless component executes a non-idempotent read.
6 . The system of claim 1 , wherein the logless component is both persistent and stateful.
7 . The system of claim 1 , wherein the checkpointing of the state of the logless component occurs on a log associated with the client component and is used to recover the logless component when the logless component fails.
8 . The system of claim 1 , wherein the recovery process for a failed logless component includes replaying client calls to a new, logically identical, logless component.
9 . The system of claim 1 , wherein the recovery process includes reducing size of a client log needed in order to recover the logless component by checkpointing of the logless component.
10 . The system of claim 1 , wherein the client component invokes a snapshot method of a middle-tier server for checkpointing the state of the logless component.
11 . The system of claim 1 , wherein the client component invokes a restore method of the logless component that takes as an argument the state captured by a snapshot method.
12 . The system of claim 11 , wherein the snapshot and restore methods of the logless component are provided by inheritance from a class that includes the logless component, such that the snapshot and restore methods are not written into the logless component by the application.
13 . The system of claim 1 , wherein the client component is associated with a client log that captures what is perceived by a logless component as nondeterministic method calls.
14 . A computer-implemented process of recovering a logless component, comprising:
receiving client functionality, including recovery functionality, associated with a multi-tier application;
performing checkpoint processing to capture state of a logless component executing as part of a multi-tier application;
storing checkpoint information as a record in a client log; and
processing the checkpoint information for recovery processing when the logless component fails.
15 . The method of claim 14 , further comprising an act of recreating a new logless component that is logically identical to the failed logless component.
16 . The method of claim 14 , further comprising an act of stepping through and replaying calls logged on the client log that are associated with the failed logless component in order to recreate the state of the logless component.
17 . The method of claim 14 , further comprising an act of replaying an idempotent request to a backend service as part of recovery processing.
18 . The method of claim 14 , further comprising an act of waiting for a message from the logless component that is expected to arrive before a predetermined timeout period.
19 . The method of claim 14 , further comprising an act of initiating the recovery process when a client reconnects to a middle-tier server for an application.
20 . A computer-executable system, comprising:
computer-implemented means for communicating with a logless component of a middle-tier component;
computer-implemented means for invoking a snapshot method via a client component;
computer-implemented means for checkpointing application state of the logless component at an inactive time;
computer-implemented means for determining when the logless component has failed;
computer-implemented means for invoking a restore method that sets variables and other state of the logless component to values captured by the restore method; and
computer-implemented means for recreating a new logless component that is logically identical to the logless component before the logless component failed.