Transfer of event logs for replication of executing programs
First Claim
1. A method executing on a computer system for replicating a program executing on the computer system at a destination accessible from the computer system, the method comprising:
- receiving an executing program request associated with an executing program;
responsive to the executing program request being a non-deterministic event, blocking the executing program request;
responsive to determining the executing program request is an input for the executing program to be replicated, logging the non-deterministic event in a first storage, delivering the non-deterministic event to the executing program, and unblocking the executing program request;
responsive to determining the executing program request is a non-abortable output request from the executing program for sending an output message, transferring contents of the first storage to the destination, and responsive to an acknowledgment being received from the destination, unblocking the executing program request; and
responsive to expiration of a timer that is reset at each occurrence of a subsequent non-abortable output request, transferring contents of the first storage to the destination, and responsive to an acknowledgment being received from the destination, unblocking the executing program request.
1 Assignment
0 Petitions
Accused Products
Abstract
A mechanism for replicating programs executing on a computer system having a first storage means is provided. The mechanism identifies the events corresponding to requests from one executing program, which may be different from the executing program to be replicated, which are non-deterministic and identifies the ‘Non Abortable Events’ (NAE'"'"'s), which change irremediably the state of the external world that need to be reproduced in the replay of the programs. These events are immediately transferred for replay and the executing program is blocked until the transfer is acknowledged. For the other non-deterministic events, they are logged and sent to the executing program, the executing programs remaining blocked only if the log is full and/or if a timer between two NAEs expires, in this case a log transfer to the standby machine is performed to prepare replication before unblocking of the executing program.
-
Citations
17 Claims
-
1. A method executing on a computer system for replicating a program executing on the computer system at a destination accessible from the computer system, the method comprising:
-
receiving an executing program request associated with an executing program; responsive to the executing program request being a non-deterministic event, blocking the executing program request; responsive to determining the executing program request is an input for the executing program to be replicated, logging the non-deterministic event in a first storage, delivering the non-deterministic event to the executing program, and unblocking the executing program request; responsive to determining the executing program request is a non-abortable output request from the executing program for sending an output message, transferring contents of the first storage to the destination, and responsive to an acknowledgment being received from the destination, unblocking the executing program request; and responsive to expiration of a timer that is reset at each occurrence of a subsequent non-abortable output request, transferring contents of the first storage to the destination, and responsive to an acknowledgment being received from the destination, unblocking the executing program request. - View Dependent Claims (2, 3, 4, 5, 6, 7)
-
-
8. A computer program product comprising a computer memory having a computer readable program stored thereon, wherein the computer readable program, when executed on a computing device, causes the computing device to:
-
receive an executing program request associated with an executing program; responsive to the executing program request being a non-deterministic event, block the executing program request; responsive to determining the executing program request being an input for the executing program to be replicated, log the non-deterministic event in a first storage, deliver the non-deterministic event to the executing program, and unblock the executing program request; responsive to determining the executing program request is a non-abortable output request from the executing program for sending an output message, transfer contents of the first storage to the destination and responsive to an acknowledgment being received from the destination, unblock the executing program request; and responsive to expiration of a timer that is reset at each occurrence of a subsequent non-abortable output request, transfer contents of the first storage to the destination, and responsive to an acknowledgment being received from the destination, unblock the executing program request. - View Dependent Claims (9, 10, 11, 12)
-
-
13. An apparatus, comprising:
-
a processor; and a memory coupled to the processor, wherein the memory comprises instructions which, when executed by the processor, cause the processor to; receive an executing program request associated with an executing program; responsive to the executing program request being a non-deterministic event, block the executing program request; responsive to determining the executing program request is an input for the executing program to be replicated, log the non-deterministic event in a first storage, deliver the non-deterministic event to the executing program, and unblock the executing program request; responsive to determining the executing program request is a non-abortable output request from the executing program for sending an output message, transfer contents of the first storage to the destination and responsive to an acknowledgment being received from the destination, unblock the executing program request; and responsive to expiration of a timer reset at each occurrence of a subsequent non-abortable output request, transfer contents of the first storage to the destination, and responsive to an acknowledgment being received from the destination, unblock the executing program request. - View Dependent Claims (14, 15, 16, 17)
-
Specification