# US 9,519,478 B2 · Session management in a mixed mode environment

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

- Number: US 9,519,478 B2
- Document ID: US9519478B2
- Status: Granted
- Kind: B2
- Application number: 14/516,376
- Filed: 2014-10-16
- Published: 2016-04-21
- Granted: 2016-12-13
- Earliest claimed: 2014-10-16
- Assignees: Paypal, Inc.
- Applicants: Paypal, Inc.
- Inventors: Bret Verde; John Nutting; Rick Hogge
- Web page: https://patentgrep.com/patent/US9519478B2

## CPC

- G06F 8/71: Version control (security arrangements therefor G06F21/57); Configuration management
- G06F 11/0709: {in a distributed system consisting of a plurality of standalone computer nodes, e.g. clusters, client-server systems}
- G06F 11/0751: {Error or fault detection not based on redundancy (power supply failures G06F1/30; network fault management H04L41/06)}
- G06F 11/0793: {Remedial or corrective actions (recovery from an exception in an instruction pipeline G06F9/3861; by retry G06F11/1402; for recovering from a failure of a protocol instance or entity H04L69/40)}
- G06F 11/20: using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements
- G06F 11/2007: {using redundant communication media}
- G06Q 20/085: {involving remote charge determination or related payment systems}
- G06Q 20/12: specially adapted for electronic shopping systems
- H04L 43/0823: Errors, e.g. transmission errors
- H04L 65/1069: Session establishment or de-establishment
- H04L 67/1004: Server selection for load balancing
- G06F 2201/85: Active fault masking without idle spares
- G06F: ELECTRIC DIGITAL DATA PROCESSING (computer systems based on specific computational models G06N)
- G06Q: INFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
- H04L: TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION (arrangements common to telegraphic and telephonic communication H04M)

## Abstract

Systems and methods for managing multiple versions of applications executing on servers in a server pool are provided. A request to generate new session data for a transaction requested by a user is received by a first server executing a first version of an application. A determination is made that the first version of the application is unsuitable to process the request. An identity of a second server executing a second version of the application is requested by the first server in a server pool comprising one or more servers, and an appropriate second server is selected. The first server transmits a hypertext transfer protocol proxy request to the selected second server, which generates the new session data.

## Claims

### Claim 1

An application version management system, comprising:
an application server comprising a non-transitory memory and one or more hardware processors, wherein the non-transitory memory stores a first version of an application, and the one or more hardware processors are coupled to the memory and operable to read instructions from the memory to perform the steps of:
receiving a request to generate new session data for a transaction requested by a user;
determining that the first version of the application is unsuitable to process the request to generate new session data for the transaction requested by the user;
determining an identity of a second server that is executing a second version of the application, the second version being different than the first version; and
transmitting a proxy request to the second server associated with the identity of the second server.

### Claim 2 (depends on 1)

The system of claim 1, wherein the step of determining that the first version of the application is unsuitable to process the request to generate a new session for the transaction by the user further includes:
determining, within in a server pool including the application server, that a number of application servers executing the first version of the application is decreasing; and
determining, within the server pool including the application server, that a percentage of application servers executing the first version of the application is below a threshold.

### Claim 3 (depends on 1)

The system of claim 1, wherein the step of determining an identity of a second server executing the second version of the application further includes:
querying, in response to the determination, a metadata store to identify one or more servers in a server pool that are executing the second version of the application; and
receiving, in response to the query, the identity of the second server from a plurality of servers in the server pool that are executing the second version of the application.

### Claim 4 (depends on 3)

The system of claim 3, wherein the one or more hardware processors are further operable to read instructions from the memory to perform the steps of:
determining an update time of metadata records in the metadata store corresponding to each of the plurality of servers in the server pool, wherein the identity of the second server is determined based on the update time of the metadata record for the second server being of a sufficient recentness.

### Claim 5 (depends on 3)

The system of claim 3, wherein the step of querying a metadata store to identify one or more servers in a server pool that are executing the second version of the application further includes determining that a percentage of application servers in the server pool that are executing the second version of the application is above a threshold.

### Claim 6 (depends on 1)

The system of claim 1, wherein the one or more hardware processors are further operable to read instructions from the memory to perform the step of maintaining statistics comprising at least a number of application servers within a server pool including the application server executing the first version of the application.

### Claim 7 (depends on 1)

The system of claim 1, wherein transmitting the proxy request to the second server associated with the second server identity causes new session data to be generated by the second server associated with the second server identity.

### Claim 8 (depends on 1)

The system of claim 1, wherein the step of determining an identity of a second server that is executing a second version of the application, the second version being different than the first version further includes:
requesting an identity of a second server that is executing a second version of the application, the second version being different than the first version; and
receiving the identity of the second server that is executing the second version of the application.

### Claim 9

A method for managing multiple versions of applications, comprising:
receiving, at a first server executing a first version of an application, a request to generate new session data for a transaction requested by a user;
determining, by the first server, that the first version of the application is unsuitable to process the request to generate new session data for the transaction requested by the user;
determining, by the first server, an identity of a second server that is executing a second version of the application, the second version being different than the first version; and
transmitting, by the first server, a hypertext transfer protocol proxy request to a second server associated with the second server identity.

### Claim 10 (depends on 9)

The method of claim 9, further comprising:
determining, by the first server and within a server pool including the first server, that a number of application servers executing the first version of the application is decreasing; and
determining, by the first server and within the server pool including the first server, that a percentage of application servers executing the first version of the application is below a threshold.

### Claim 11 (depends on 9)

The method of claim 9, further comprising:
querying, by the first server and in response to the determination, a metadata store to identify one or more servers in a server pool that are executing the second version of the application; and
determining, in response to the query, the identity of the second server from a plurality of servers in the server pool that are executing the second version of the application.

### Claim 12 (depends on 11)

The method of claim 11, wherein the identity of the second server is determined based on a random selection from the plurality of servers in the server pool.

### Claim 13 (depends on 11)

The method of claim 11, further comprising:
determining, by the first server, an update time of metadata records in the metadata store corresponding to each of the plurality of servers in the server pool, wherein the second server is determined based on the update time of the metadata record for the second server being of a sufficient recentness.

### Claim 14 (depends on 11)

The method of claim 11, wherein querying a metadata store to identify one or more servers in a server pool that are executing the second version of the application further includes determining that a percentage of application servers in the server pool that are executing the second version of the application is above a threshold.

### Claim 15 (depends on 9)

The method of claim 9, further comprising maintaining, by the first server, statistics comprising at least a number of application servers within a server pool including the first server executing the first version of the application.

### Claim 16 (depends on 9)

The method of claim 9, wherein transmitting, by the first server, the hypertext transfer protocol proxy request to the second server associated with the second server identity causes new session data to be generated by the second server associated with the second server identity.

### Claim 17 (depends on 9)

The method of claim 9, wherein determining, by the first server an identity of a second server that is executing a second version of the application, the second version being different than the first version further comprises:
requesting, by the first server, an identity of a second server that is executing a second version of the application, the second version being different than the first version; and
receiving, by the first server, the identity of the second server that is executing the second version of the application.

### Claim 18

A non-transitory machine-readable medium comprising a plurality of machine-readable instructions which, when executed by one or more processors, are adapted to cause the one or more processors to perform a method comprising:
receiving, at a first server executing a first version of an application, a request to generate new session data for a transaction requested by a user;
determining, by the first server, that the first version of the application is unsuitable to process the request to generate new session data for the transaction requested by the user;
requesting, by the first server an identity of a second server that is executing a second version of the application, the second version being different than the first version;
receiving, by the first server, the identity of the second server that is executing the second version of the application; and
transmitting, by the first server, a hypertext transfer protocol proxy request to a second server associated with the second server identity.

### Claim 19 (depends on 18)

The non-transitory machine-readable medium of claim 18, wherein the method further comprises:
determining, by the first server and within a server pool including the first server, that a number of application servers executing the first version of the application is decreasing; and
determining, by the first server and within the server pool including the first server, that a percentage of application servers executing the first version of the application is below a threshold.

### Claim 20 (depends on 18)

The non-transitory machine-readable medium of claim 18, wherein the method further comprises:
querying, by the first server and in response to the determination, a metadata store to identify one or more servers in a server pool that are executing the second version of the application; and
receiving, in response to the query, the identity of the second server from a plurality of servers in the server pool that are executing the second version of the application.
