# US 8,788,579 B2 · Clustered client failover

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

- Number: US 8,788,579 B2
- Document ID: US8788579B2
- Status: Granted
- Kind: B2
- Application number: 13/228,732
- Filed: 2011-09-09
- Published: 2013-03-14
- Granted: 2014-07-22
- Earliest claimed: 2011-09-09
- Assignees: Microsoft Corporation
- Applicants: David M. Kruse; Diaa Fathalla; James T. Pinkerton; Mathew George; Prashanth Prahalad; Thomas E. Jolly
- Inventors: David M. Kruse; Diaa Fathalla; James T. Pinkerton; Mathew George; Prashanth Prahalad; Thomas E. Jolly
- Web page: https://patentgrep.com/patent/US8788579B2

## CPC

- H04L 69/40: for recovering from a failure of a protocol instance or entity, e.g. service redundancy protocols, protocol state redundancy or protocol service redirection (management of faults, events, alarms or notifications in data switching networks H04L41/06)
- H04L 67/10: in which an application is distributed across nodes in the network (software deployment G06F8/60; multiprogramming arrangements G06F9/46)
- H04L: TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION (arrangements common to telegraphic and telephonic communication H04M)

## Abstract

An application instance identifier is employed with various systems and methods in order to provide a requestor with continuous access to a resource when operating in a client clustered environment. A requestor residing on a first client may attempt to access a resource. The first client sends a request to access the resource. The request may be associated with an application instance identifier that identifies the requestor. At some point, the first client fails and the requestor is associated with a second client via a failover mechanism. The second client sends a second request to access the resource on behalf of the requestor. The second request is associated with the requestor's application instance identifier. The application instance identifier is used to identify the second request as belonging to the same requestor as the first request, thereby granting the second request to access the resource while avoiding a conflict situation.

## Claims

### Claim 1

A method of providing continuous access to a resource, the method comprising:
receiving a first request to access a resource by a process, wherein the request is received from a first client in a client cluster;
associating a first application instance identifier with the resource;
granting the first request to access the resource;
receiving a second request to access the resource by the process after loss of connection with the first client, wherein the second request is received from a second client in the client cluster and the second client is different from the first client;
receiving a second application instance identifier associated with the second request;
determining that the first and second application instance identifiers are the same; and
invalidating the first request, wherein invalidating the first request comprises:
determining that the resource is not located on the first node that receives the second request;
sending a request to a second node to invalidate the resource; and
granting the second request to access the resource on the first node.

### Claim 2 (depends on 1)

The method of claim 1, wherein the first application instance identifier is associated with an application instance of an open request.

### Claim 3 (depends on 1)

The method of claim 1, wherein the first application instance identifier is associated with the process.

### Claim 4 (depends on 1)

The method of claim 1, wherein the first application instance identifier is associated with at least one child process of the process.

### Claim 5 (depends on 1)

The method of claim 1, further comprising storing the first application instance identifier in a registry.

### Claim 6 (depends on 1)

The method of claim 1, wherein associating the first application instance identifier comprises receiving the first application instance identifier in a NETWORK_APP_INSTANCE_ECP_CONTEXT structure.

### Claim 7 (depends on 6)

The method of claim 6, wherein the first application instance identifier in the NETWORK_APP_INSTANCE_ECP_CONTEXT structure is added to an Extra Create Parameter (ECP) list.

### Claim 8 (depends on 1)

The method of claim 1, wherein the process comprises an application.

### Claim 9

A system for facilitating client failover in a clustered environment, the system comprising:
at least one server comprising:
at least one processor configured to execute a first set of computer executable instructions;
at least one computer readable storage media storing the first set of computer executable instructions, wherein the first set of computer executable instructions, when executed by the at least one processor comprise instructions for:
receiving a first request to access a resource from a first client in a client cluster, wherein the first client sends the first request on behalf of a process;
associating a first application instance identifier with the first resource;
allowing the process access to the resource;
receiving a second request for the resource from a second client in the client cluster on behalf of the process after loss of connection with the first client, wherein the second client is different from the first client;
receiving a second application instance identifier associated with the second request;
determining that the first and second application instance identifiers are the same; and
invalidating the first request, wherein invalidating the first request comprises:
determining that the resource is not located on the first node that receives the second request;
sending a request to a second node to invalidate the resource; and
granting the second request to access the resource on the first node.

### Claim 10 (depends on 9)

The system of claim 9, wherein the system further comprises:
the first client, comprising:
at least one processor configured to execute a second set of computer executable instructions;
at least one computer readable storage media storing the second set of computer executable instructions, wherein the second set of computer executable instructions, when executed by the at least one processor, comprise instructions for:
sending the first request;
sending the first application instance identifier to the second client.

### Claim 11 (depends on 10)

The system of claim 10, wherein the second client further comprises:
at least one processor configured to execute a third set of computer executable instructions;
at least one computer readable storage media storing the third set of computer executable instructions, wherein the third set of computer executable instructions, when executed by the at least one processor, comprise instructions for:
receiving first the application instance identifier from the first client; and
sending the second request to access the resource with the application instance identifier.

### Claim 12 (depends on 9)

The system of claim 9, wherein the process comprises an application.

### Claim 13 (depends on 9)

The system of claim 9, wherein the first application instance identifier is associated with at least one child process of the process.

### Claim 14 (depends on 9)

The system of claim 9, wherein the first application instance identifier is associated with an application instance of an open request.

### Claim 15 (depends on 9)

The system of claim 9, wherein the first application instance identifier is associated with the process.

### Claim 16

A computer readable storage media, wherein computer storage media is not a signal, storing computer executable instructions that, when executed by a processor, comprise instructions for:
receiving a first request to access a resource from a first client in a client cluster, wherein the first client sends the first request on behalf of a process;
associating a first application instance identifier with the first resource;
allowing the process access to the resource;
receiving a second request for the resource from a second client in the client cluster on behalf of the process after loss of connection with the first client, wherein the second client is different from the first client;
receiving a second application instance identifier associated with the second request;
determining that the first and second application instance identifiers are the same; and
invalidating the first request, wherein invalidating the first request comprises:
determining that the resource is not located on the first node that receives the second request;
sending a request to a second node to invalidate the resource; and
granting the second request to access the resource on the first node.

### Claim 17 (depends on 16)

The computer readable storage media of claim 16, wherein the process comprises an application.

### Claim 18 (depends on 16)

The computer readable storage media of claim 16, wherein the first application instance identifier is associated with at least one child process of the process.

### Claim 19 (depends on 16)

The computer readable storage media of claim 16, wherein the first application instance identifier is associated with an application instance of an open request.

### Claim 20 (depends on 16)

The computer readable storage media of claim 16, wherein the first application instance identifier is associated with the process.
