# US 10,372,549 B1 · System and method for dynamic transparent consistent application-replication of multi-process multi-threaded applications

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

- Number: US 10,372,549 B1
- Document ID: US10372549B1
- Status: Granted
- Kind: B1
- Application number: 14/968,545
- Filed: 2015-12-14
- Granted: 2019-08-06
- Earliest claimed: 2010-08-06
- Assignees: Open Invention Network, LLC
- Applicants: Open Invention Network LLC
- Inventors: Allan Havemose
- Web page: https://patentgrep.com/patent/US10372549B1

## CPC

- G06F 11/1451: {by selection of backup contents}
- G06F 9/546: {Message passing systems or structures, e.g. queues}
- G06F 11/1469: {Backup restoration techniques}
- G06F 11/1471: involving logging of persistent data for recovery
- G06F 11/1482: using middleware or operating system [OS] functionalities
- G06F 11/1683: {at instruction level}
- G06F 11/2041: {with more than one idle spare processing component}
- G06F 11/2097: {maintaining the standby controller/processing unit updated (initialisation or re-synchronisation thereof G06F11/1658 and subgroups)}
- G06F 13/00: Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units (interface circuits for specific input/output devices G06F3/00 {; multiprogram control therefor G06F9/46}; multiprocessor systems G06F15/16 )
- G06F 11/2046: {where the redundant components share persistent storage (G06F11/2043 takes precedence)}
- G06F 2201/82: Solving problems relating to consistency
- G06F 2201/825: the problem or solution involving locking
- G06F 2201/84: Using snapshots, i.e. a logical point-in-time copy of the data
- G06F: ELECTRIC DIGITAL DATA PROCESSING (computer systems based on specific computational models G06N)

## Abstract

A system, method, and computer readable medium for consistent and transparent replication of multi process multi threaded applications. The computer readable medium includes computer-executable instructions for execution by a processing system. Primary applications runs on primary hosts and one or more replicated instances of each primary application run on one or more backup hosts. Replica consistency between primary application and its replicas is provided by imposing the execution ordering of the primary on all its replicas. The execution ordering on a primary is captured by intercepting calls to the operating system and libraries, sending replication messages to its replicas, and using interception on the replicas to enforce said captured primary execution order. Replication consistency is provided without requiring modifications to the application, operating system or libraries.

## Claims

### Claim 1

A system for providing transparent and consistent replication of application programs across plurality of servers, the system comprising:
computer system memory comprising one or more memory locations configured to store a primary application;
one or more Central Processing Unit (CPUs) operatively connected to said computer system memory and configured to execute said primary application on a host with a host operating system;
at least one CPU instruction comprising instructions for generating sequence numbers, wherein a new sequence number is one larger than the most recently generated sequence number;
at least one CPU instruction comprising an interception layer for the primary application, wherein said CPU instructions comprise instructions to intercept calls to the host operating system, to intercept calls to one or more libraries, and to generate one or more replication messages based on said intercepted calls, wherein said one or more replication messages comprise at least one of a sequence number, a thread identifier, and a process identifier;
one or more backup hosts each with a host operating system and each comprising:
computer system memory comprising one or more memory locations configured to store one or more backup applications, and one or more CPUs operatively connected to said computer system memory and configured to execute said one or more backup applications; and
a pending thread callback queue memory where requests for said one or more replication messages without matching process identifier and thread identifier are placed, until the oldest received replication message matches said process identifier and thread identifier, wherein a replication request module only returns said one or more replication message when the process identifier and thread identifier match and wherein said one or more replication messages for the one or more backup application are processed in sequence number order such that a said one or more replication message is processed when its sequence number is one larger than the previously processed sequence number.

### Claim 2 (depends on 1)

The system according to claim 1, wherein said host operating system is one of Linux®, UNIX® or Microsoft Windows®.

### Claim 3 (depends on 1)

The system according to claim 1, wherein a call ordering is encoded by increasing the sequence number by one on said primary application for each new replication message.

### Claim 4 (depends on 1)

The system according to claim 1, further comprising:
one or more CPU instructions comprising a messaging engine for said primary application configured to send said one or more replication messages to the one or more backup applications;
one or more CPU instructions comprising at least one additional messaging engine for each backup application configured to receive said one or more replication messages from said primary application;
one or more CPU instructions comprising interception layers for said backup applications, and configured to intercept calls to the host operating system and libraries, wherein ordering information is retrieved from the additional messaging engine for each backup application; and
wherein an interceptor for each of said backup applications requests a replication message from the additional messaging engine, calls the host operating system or library, and returns to a calling application.

### Claim 5 (depends on 4)

The system according to claim 4, wherein the interception layer and backup interception layer and the additional messaging engine are implemented without the need to modify one or more of the primary application, the host operating system or the libraries.

### Claim 6 (depends on 1)

The system according to claim 1, wherein the interception layer for the primary application first calls the host operating system or library, creates and sends a corresponding replication message, and then returns a resource call to a calling application.

### Claim 7 (depends on 1)

The system according to claim 1, wherein the sequence numbers are generated as globally unique identifiers for at least one of the primary applications and the backup applications.

### Claim 8 (depends on 1)

The system according to claim 1, where replication messages are sent from the primary application to said each backup application over one of Transmission Control Protocol (TCP/IP) or User Datagram Protocol (UDP).

### Claim 9 (depends on 1)

The system according to claim 1, wherein the primary application and said each backup application are connected with one of a local area network, wide area network, Internet and a wireless network.

### Claim 10 (depends on 1)

The system according to claim 1, wherein an intercepted call is a write operation, which is configured to encode a result of said write operation and encode data structures of parameters within a DATA block, and configured to include said DATA block in said one or more replication messages.

### Claim 11 (depends on 10)

The system according to claim 10, wherein the data of said write operation is not included in in said one or more replication messages.

### Claim 12 (depends on 10)

The system according to claim 10, wherein each of said backup applications suppresses said write operation and uses the DATA block from the primary application to update a return value and data structures of all parameters to match the primary application.

### Claim 13 (depends on 10)

The system according to claim 10, wherein said write operation writes data to at least one of storage, system memory, network storage, a network connection, and an external device, and wherein the system is connected to one or more of a local area network, wide area network, Internet and a wireless network.

### Claim 14 (depends on 10)

The system according to claim 10, wherein said encoding uses one of Extensible Markup Language (XML) or custom coding.

### Claim 15 (depends on 10)

The system according to claim 10, wherein storage is mounted as shared storage for both the primary application and one or more of each of the backup applications.

### Claim 16 (depends on 1)

The system according to claim 1, wherein an intercepted call is a read operation configured to encode a result of said read operation, configured to encode a data structures of parameters, and configured to encode data read within a DATA block and including said DATA block in in said one or more replication messages.

### Claim 17 (depends on 16)

The system according to claim 16, wherein each of said backup applications suppress said read operation and uses the DATA block from the primary application to update a return value, data structures and read data to match the primary application.

### Claim 18 (depends on 16)

The system according to claim 16, wherein said read operation reads data from at least one of storage, a system memory, a network storage, a network connection and an external device.
