# US 11,029,940 B2 · Maintaining client version affinity during a server cluster upgrade

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

- Number: US 11,029,940 B2
- Document ID: US11029940B2
- Status: Granted
- Kind: B2
- Application number: 16/854,725
- Filed: 2020-04-21
- Published: 2020-08-06
- Granted: 2021-06-08
- Earliest claimed: 2018-09-04
- Assignees: salesforce.com, inc.
- Applicants: salesforce.com, inc.
- Inventors: Olga Peschansky; Paul Sydell
- Web page: https://patentgrep.com/patent/US11029940B2

## CPC

- G06F 8/65: Updates (security arrangements therefor G06F21/57)
- H04L 67/02: based on web technology, e.g. hypertext transfer protocol [HTTP]
- H04L 67/34: {involving the movement of software or configuration parameters (network booting or remote initial program loading [RIPL] G06F9/4416)}
- H04L 67/563: Data redirection of data network streams
- H04L 67/60: Scheduling or organising the servicing of application requests, e.g. requests for application data transmissions using the analysis and optimisation of the required network resources (admission control or resource allocation H04L47/70)
- H04L 67/63: Routing a service request depending on the request content or context
- G06F 8/71: Version control (security arrangements therefor G06F21/57); Configuration management
- H04L 67/10: in which an application is distributed across nodes in the network (software deployment G06F8/60; multiprogramming arrangements G06F9/46)
- H04L 67/51: Discovery or management thereof, e.g. service location protocol [SLP] or web services
- H04L 69/02: {Protocol performance}
- G06F: ELECTRIC DIGITAL DATA PROCESSING (computer systems based on specific computational models G06N)
- H04L: TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION (arrangements common to telegraphic and telephonic communication H04M)

## Abstract

Maintaining client version affinity during a rolling server cluster upgrade includes a server in the server cluster receiving a request from a client and checking the request for a version cookie indicating a software version that the client is running. Responsive to a determination that the server is running the same software version as the client, the server serves the request. Responsive to a determination that the client is running a software version matching a previous software version of the server, the server initiates a software upgrade on the client instead of servicing the request. Responsive to a determination that the server is not running the same software version as the client, the server forwards the request to one of the other servers in the server cluster that is running the same software version as the client.

## Claims

### Claim 1

A computer-implemented method for maintaining client version affinity during a server cluster upgrade, the method comprising:
receiving, by a server in the server cluster, a request from a client and checking the request for a version cookie indicating a client software version currently running on the client;
responsive to a determination that the server is running a server software version matching the client software version, serving the request;
responsive to a determination that the server software version does not match the client software version, forwarding the request to one of the other servers in the server cluster that is running the server software version that matches the client software version; and
responsive to a determination that the client software version matches a previous server software version run by the server, initiating a software upgrade on the client instead of servicing the request, wherein the server sends to the client a Client Out Of Sync Exception (COOSE) response including a new client software version, wherein only one COOSE response is sent to the client during the server cluster upgrade.

### Claim 2 (depends on 1)

The computer-implemented method of claim 1, wherein the forwarding the request to one of the other servers in the server cluster that is running the server software version that matches the client software version further comprises:
responsive to determining that the client software version does not match the previous server software version, querying a repository to find an alive server running the server software version matching the client software version to forward the request to.

### Claim 3 (depends on 1)

The computer-implemented method of claim 1, wherein the forwarding the request to one of the other servers further comprises: receiving a response from the one of the other servers and returning the response to the client.

### Claim 4 (depends on 1)

The computer-implemented method of claim 1, further comprising: configuring a repository to be accessible by the servers in the server cluster and storing in the repository up-to-date information regarding current and previous server software versions of the server and current availability status of the servers.

### Claim 5 (depends on 1)

The computer-implemented method of claim 1, further comprising: implementing the repository as one of a database and a table.

### Claim 6 (depends on 1)

The computer-implemented method of claim 1, wherein the determination that the server is running the server software version matching the client software version also includes determining that the request does not contain the version cookie because the client is new.

### Claim 7 (depends on 1)

The computer-implemented method of claim 1, further comprising: prior to the server receiving the request from the client, setting the version cookie on the client by the server.

### Claim 8 (depends on 1)

The computer-implemented method of claim 1, further comprising: responsive to a determination that new server software version has a severe problem, performing a rollback such that upgraded servers in the server cluster are returned to the previous server software version.

### Claim 9

A non-transitory computer-readable medium containing program instructions for maintaining client version affinity during a server cluster upgrade, the program instructions for:
receiving, by a server in the server cluster, a request from a client and checking the request for a version cookie indicating a client software version currently running on the client;
responsive to a determination that the server is running a server software version matching the client software version, serving the request;
responsive to a determination that the server software version does not match the client software version, forwarding the request to one of the other servers in the server cluster that is running the server software version that matches the client software version; and
responsive to a determination that the client software version matches a previous server software version run by the server, initiating a software upgrade on the client instead of servicing the request, wherein initiating a software upgrade on the client further comprises instructions for: the server sending to the client a Client Out Of Sync Exception (COOSE) response including a new client software version, wherein only one COOSE response is sent to the client during the server cluster upgrade.

### Claim 10 (depends on 9)

The computer-readable medium of claim 9, wherein the forwarding the request to one of the other servers in the server cluster that is running the server software version that matches the client software version further comprises instructions for:
responsive to determining that the client software version does not match the previous server software version, querying a repository to find an alive server running the server software version matching the client software version to forward the request to.

### Claim 11 (depends on 9)

The computer-readable medium of claim 9, wherein the forwarding the request to one of the other servers further comprises instructions for: receiving a response from the one of the other servers and returning the response to the client.

### Claim 12 (depends on 9)

The computer-readable medium of claim 9, further comprising: configuring a repository to be accessible by the servers in the server cluster and storing in the repository up-to-date information regarding current and previous server software versions of the server and current availability status of the servers.

### Claim 13 (depends on 9)

The computer-readable medium of claim 9, further comprising: implementing a repository as one of a database and a table.

### Claim 14 (depends on 9)

The computer-readable medium of claim 9, wherein the determination that the server is running the server software version matching the client software version also includes determining that the request does not contain the version cookie because the client is new.

### Claim 15 (depends on 9)

The computer-readable medium of claim 9, further comprising: prior to the server receiving the request from the client, setting the version cookie on the client by the server.

### Claim 16 (depends on 9)

The computer-readable medium of claim 9, further comprising: responsive to a determination that a new server software version has a severe problem, performing a rollback such that upgraded servers in the server cluster are returned to the previous server software version.

### Claim 17

A system, comprising:
a processing system; and
a memory device coupled to the processing system and including instructions stored thereon that, in response to execution by the processing system, are operable to:
receive, by a server in a server cluster, a request from a client and checking the request for a version cookie indicating a software version that the client is running;
responsive to a determination that the server is running a same software version as the client, serve the request;
responsive to a determination that the server is not running a same software version as the client, forward the request to one of other servers in the server cluster that is running the same software version as the client; and
responsive to a determination that the client is running a software version matching a previous software version of the server, initiate a software upgrade on the client instead of servicing the request, wherein initiating a software upgrade on the client further comprises instructions for: the server sending to the client a Client Out Of Sync Exception (COOSE) response including a new client software version, wherein only one COOSE response is sent to the client during a server cluster upgrade.

### Claim 18 (depends on 17)

The system of claim 17, wherein responsive to the determination that the client software version does not match the previous server software version, a repository is queried to find an alive server running the server software version matching the client software version to forward the request to.

### Claim 19 (depends on 17)

The system of claim 17, wherein when a response is received from the one of the other servers, the response is returned to the client.

### Claim 20 (depends on 17)

The system of claim 17, wherein the repository is configured to be accessible by the servers in the server cluster and stores up-to-date information regarding current and previous server software versions of the server and current availability status of the servers.

### Claim 21 (depends on 17)

The system of claim 17, wherein the repository is implemented as one of a database and a table.

### Claim 22

A computer-implemented method for maintaining client version affinity during a server cluster upgrade, the method comprising:
receiving, by a server in the server cluster, a request from a client and checking the request for a version cookie indicating a client software version currently running on the client;
responsive to a determination that a server software version does not match the client software version, forwarding the request to one of other servers in the server cluster that is running the server software version that matches the client software version; and
responsive to a determination that the client software version matches a previous server software version run by the server, initiating a software upgrade on the client instead of servicing the request, wherein initiating a software upgrade on the client further comprises instructions for: the server sending to the client a Client Out Of Sync Exception (COOSE) response including a new client software version, wherein only one COOSE response is sent to the client during the server cluster upgrade.
