# US 7,610,510 B2 · Method and apparatus for transactional fault tolerance in a client-server system

> Agents: this data is available as JSON from the patentgrep API and MCP server — see https://patentgrep.com/llms.txt

- Number: US 7,610,510 B2
- Document ID: US7610510B2
- Status: Granted
- Kind: B2
- Application number: 11/707,441
- Filed: 2007-02-16
- Published: 2008-08-21
- Granted: 2009-10-27
- Earliest claimed: 2007-02-16
- Assignees: Symantec Corporation
- Inventors: Anurag Agarwal; Dharmesh Shah; Nagaraj Kalmala; Neelakandan Panchaksharam; Rajeev Bharadhwaj; Sameer Lokray; Srikanth Sm; Thomas Bean
- Web page: https://patentgrep.com/patent/US7610510B2

## CPC

- G06F 11/2097: {maintaining the standby controller/processing unit updated (initialisation or re-synchronisation thereof G06F11/1658 and subgroups)}
- G06F 11/203: {using migration}
- G06F: ELECTRIC DIGITAL DATA PROCESSING (computer systems based on specific computational models G06N)

## Abstract

Method and apparatus for transactional fault tolerance in a client-server system is described. In one example, output data generated by execution of a service on a primary server during a current epoch between a first checkpoint and a second checkpoint is buffered. A copy of an execution context of the primary server is established on a secondary server in response to the second checkpoint. The output data as buffered is released from the primary server in response to establishment of the copy of the execution context on the secondary server.

## Claims

### Claim 1

A method of providing fault tolerance, comprising:
buffering output data generated by execution of a service on the primary server during a current epoch between a first checkpoint and a second checkpoint;
establishing a copy of an execution context of the primary server on a secondary server in response to the second checkpoint; and
releasing the output data as buffered from the primary server in response to establishment of the copy of the execution context on the secondary server.

### Claim 2 (depends on 1)

The method of claim 1, further comprising:
detecting a failure of the primary server during a next epoch between the second checkpoint and a third checkpoint; and
resuming execution of the service on the secondary server from the execution context in response to the failure.

### Claim 3 (depends on 2)

The method of claim 2, further comprising:
mirroring intermediate state information of the primary server onto the secondary server during the current epoch.

### Claim 4 (depends on 3)

The method of claim 3, further comprising:
discarding the intermediate state information at the secondary server in response to the failure.

### Claim 5 (depends on 3)

The method of claim 3, wherein the intermediate state information includes at least one of: memory pages modified during the current epoch or write requests to a storage volume managed by the primary server.

### Claim 6 (depends on 3)

The method of claim 3, wherein the step of establishing comprises:
committing the intermediate state information on the secondary server in response to the second checkpoint.

### Claim 7 (depends on 2)

The method of claim 2, wherein the output data comprises network output destined to at least one client in communication with the primary server via a network.

### Claim 8 (depends on 7)

The method of claim 7, further comprising:
transmitting output data generated by execution of the service on the secondary server based on error recovery of a network protocol used to communicate the network output.

### Claim 9 (depends on 7)

The method of claim 7, further comprising:
receiving, at the secondary server, network input generated by at least one client and received by the primary server during the current epoch in response to error recovery of a network protocol used by the at least one client.

### Claim 10 (depends on 1)

The method of claim 1, further comprising:
caching write requests to a storage volume managed by the primary server during the current epoch; and
causing the write requests to be written to the storage volume in response to establishment of the copy of the first execution context on the secondary server.

### Claim 11 (depends on 1)

The method of claim 1, further comprising:
mirroring the write requests to the storage volume on the secondary server in response to the second checkpoint.

### Claim 12 (depends on 1)

The method of claim 1, further comprising:
tracking modified memory pages of the primary server during the current epoch; and
mirroring the modified memory pages on the secondary server.

### Claim 13

Apparatus for providing fault tolerance, comprising:
means for buffering output data generated by execution of a service on the primary server during a current epoch between a first checkpoint and a second checkpoint;
means for establishing a copy of an execution context of the primary server on a secondary server in response to the second checkpoint; and
means for releasing the output data as buffered from the primary server in response to establishment of the copy of the execution context on the secondary server.

### Claim 14 (depends on 13)

The apparatus of claim 13, further comprising:
means for detecting a failure of the primary server during a next epoch between the second checkpoint and a third checkpoint; and
means for resuming execution of the service on the secondary server from the execution context in response to the failure.

### Claim 15 (depends on 14)

The apparatus of claim 14, further comprising:
means for mirroring intermediate state information of the primary server onto the secondary server during the current epoch.

### Claim 16 (depends on 13)

The apparatus of claim 13, further comprising:
means for caching write requests to a storage volume managed by the primary server during the current epoch;
means for mirroring the write requests to the storage volume on the secondary server in response to the second checkpoint;
means for causing the write requests to be written to the storage volume in response to establishment of the copy of the first execution context on the secondary server.

### Claim 17 (depends on 13)

The apparatus of claim 13, further comprising:
means for tracking modified memory pages of the primary server during the current epoch; and
means for mirroring the modified memory pages on the secondary server.

### Claim 18 (depends on 13)

The apparatus of claim 13, wherein the output data comprises network output destined to at least one client in communication with the primary server and the secondary server via a network, and wherein the apparatus further comprises:
means for re-transmitting output data generated by execution of the service on the secondary server based on error recovery of a network protocol used to communicate the network output; and
means for receiving, at the secondary server, network input generated by at least one client and received by the primary server during the current epoch in response to error recovery of a network protocol used by the at least one client.

### Claim 19

A fault tolerant system, comprising:
a primary server configured to execute a service for a plurality of clients;
a secondary server configured to execute the service;
checkpoint engines implemented in the primary server and the secondary server, the checkpoint engines configured to establish a copy of an execution context of the primary server on the secondary server at each of a plurality of checkpoints, buffer output data generated by the primary server between successive ones of the plurality of checkpoints, and release buffered output data in response to establishment of the copy of the execution context at each of the plurality of checkpoints.

### Claim 20 (depends on 19)

The system of claim 19, wherein the secondary server is configured to detect a failure of the primary server between a first checkpoint and a second checkpoint of the plurality of checkpoints and resume execution of the service from the execution context of the primary server as established at the first checkpoint.
