# US 10,313,452 B2 · Migrating a chat message service provided by a chat server to a new chat server

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

- Number: US 10,313,452 B2
- Document ID: US10313452B2
- Status: Granted
- Kind: B2
- Application number: 15/432,827
- Filed: 2017-02-14
- Published: 2017-07-27
- Granted: 2019-06-04
- Earliest claimed: 2012-06-22
- Assignees: Facebook, Inc.
- Applicants: Facebook, Inc.
- Inventors: Hongzhong Jia; Xiaojun Liang; Li Hua; Goranka Bjedov
- Web page: https://patentgrep.com/patent/US10313452B2

## CPC

- H04L 67/148: Migration or transfer of sessions
- H04L 12/1813: {for computer conferences, e.g. chat rooms (instant messaging H04L51/04; protocols for multimedia communication H04L65/1101; arrangements for multi-party communication H04L65/403; telephonic conference arrangements H04M3/56; television conference systems H04N7/15)}
- H04L 51/04: Real-time or near real-time messaging, e.g. instant messaging [IM]
- H04L 67/1027: Persistence of sessions during load balancing
- H04L 67/1036: Load balancing of requests to servers for services different from user content provisioning, e.g. load balancing across domain name servers
- H04L: TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION (arrangements common to telegraphic and telephonic communication H04M)

## Abstract

A chat messaging service provided for a chat user is migrated. At a second chat server from a first chat server, static information associated with a chat user is received. At the second chat server from the first chat server, dynamic information associated with the chat user is received. At least a portion of the dynamic information is received after the chat user is indicated as being associated with the migration state. After the chat user is no longer indicated as being associated with the migration state, a chat message for the chat user is received at the second chat server.

## Claims

### Claim 1

A method of migrating a chat messaging service provided for a chat user, comprising:
receiving at a second chat server from a first chat server, static information associated with a chat user;
receiving at the second chat server from the first chat server, dynamic information associated with the chat user, wherein at least a portion of the dynamic information is received after the chat user is indicated as being associated with a migration state, and a first chat message received while the chat user is indicated as being associated with the migration state is held for later delivery until the held first chat message is delivered to the second chat server in response to detecting that the chat user is no longer indicated as being associated with a suspended chat service of the migration state, and the second chat server is a target server of the held first message, and the held first chat message is not delivered to the second chat server prior to detecting that the chat user is no longer indicated as being associated with the suspended chat service of the migration state; and
receiving at the second chat server a second chat message for the chat user after the chat user is no longer indicated as being associated with the migration state, wherein the second chat message is from a second communication party, the second chat message is a part of a chat conversation initiated between the chat user and the second communication party prior to the chat user being indicated as being associated with the migration state.

### Claim 2 (depends on 1)

The method of claim 1, wherein the static information is received before the chat user is indicated as being associated with the migration state.

### Claim 3 (depends on 1)

The method of claim 1, wherein it is determined that the second chat message is no longer to be held at a third server for later delivery, at least due to determining that the chat user is no longer indicated as being associated with the suspended chat service of the migration state.

### Claim 4 (depends on 1)

The method of claim 1, wherein at least a portion of the dynamic information is received before the user is indicated as being associated with the migration state.

### Claim 5 (depends on 1)

The method of claim 1, wherein the portion of the dynamic information received after the user is indicated as being associated with the migration state includes an update of a version of the dynamic information received before the user is indicated as being associated with the migration state.

### Claim 6 (depends on 1)

The method of claim 1, wherein the chat user is included in a group of chat users associated with a chat messaging service migration from the first chat server to the second chat server.

### Claim 7 (depends on 1)

The method of claim 1, where the first chat server is configured to receive a chat message for the chat user sent before the chat user is indicated as being associated with the migration state.

### Claim 8 (depends on 1)

The method of claim 1, further comprising sending a request to indicate the chat user as being associated with the migration state in a directory that maps a chat user identifier to an identifier of an associated chat server.

### Claim 9 (depends on 1)

The method of claim 1, further comprising sending a request to associate the chat user with the second chat server in a directory that maps each chat user identifier of a plurality of chat user identifiers to an identifier of an associated chat server.

### Claim 10 (depends on 1)

The method of claim 1, further comprising receiving an indication that a chat messaging service handled by the first chat server for the chat user is to be migrated to the second chat server.

### Claim 11 (depends on 1)

The method of claim 1, wherein the chat user is indicated as being associated with the migration state in a data structure that tracks migration states of a plurality of chat users, the data structure is stored at a different server that is not the first chat server or the second chat server, and the data structure that tracks the migration states does not store the first message.

### Claim 12 (depends on 1)

The method of claim 1, wherein the static information is received while the first chat server is preparing to suspend a chat messaging service of the first chat server.

### Claim 13 (depends on 1)

The method of claim 1, wherein the second chat server has been selected to handle a chat messaging service for the chat user at least in part by analyzing a performance metric associated with the second chat server.

### Claim 14 (depends on 1)

The method of claim 1, further comprising receiving from a chat migration controller an indication to initiate a migration process associated with the chat user.

### Claim 15 (depends on 1)

The method of claim 1, wherein while the chat user is indicated as being associated with the migration state, the first chat server is suspended from modifying the dynamic information.

### Claim 16 (depends on 1)

The method of claim 1, further comprising verifying the static information and the dynamic information before the chat user is no longer indicated as being associated with the migration state.

### Claim 17 (depends on 1)

The method of claim 1, wherein the first server frees a resource associated with the chat user after the chat user is no longer associated with the migration state.

### Claim 18 (depends on 1)

The method of claim 1, wherein the dynamic information includes a content of a previously received chat message for the chat user.

### Claim 19

A system for migrating a chat messaging service provided for a chat user, comprising:
a communication interface configured to establish a communication with a first chat server; and
a processor coupled with the communication interface and configured to:
receive from the first chat server, static information associated with a chat user;
receive from the first chat server, dynamic information associated with the chat user, wherein at least a portion of the dynamic information is received after the chat user is indicated as being associated with a migration state, and a first chat message received while the chat user is indicated as being associated with the migration state is held for later delivery until the held first chat message is delivered to the system in response to detecting that the chat user is no longer indicated as being associated with a suspended chat service of the migration state, and the system is a target server of the held first message, and the held first chat message is not delivered to the second chat server prior to detecting that the chat user is no longer indicated as being associated with the suspended chat service of the migration state; and
receive a second chat message for the chat user after the chat user is no longer indicated as being associated with the migration state, wherein the second chat message is from a second communication party, the second chat message is a part of a chat conversation initiated between the chat user and the second communication party prior to the chat user being indicated as being associated with the migration state.

### Claim 20

A computer program product for migrating a chat messaging service provided for a chat user, the computer program product being embodied in a non-transitory computer readable storage medium and comprising computer instructions for:
receiving at a second chat server from a first chat server, static information associated with a chat user;
receiving at the second chat server from the first chat server, dynamic information associated with the chat user, wherein at least a portion of the dynamic information is received after the chat user is indicated as being associated with a migration state, and a first chat message received while the chat user is indicated as being associated with the migration state is held for later delivery until the held first chat message is delivered to the second chat server in response to detecting that the chat user is no longer indicated as being associated with a suspended chat service of the migration state, and the second chat server is a target server of the held first message, and the held first chat message is not delivered to the second chat server prior to detecting that the chat user is no longer indicated as being associated with the suspended chat service of the migration state; and
receiving at the second chat server a second chat message for the chat user after the chat user is no longer indicated as being associated with the migration state, wherein the second chat message is from a second communication party, the second chat message is a part of a chat conversation initiated between the chat user and the second communication party prior to the chat user being indicated as being associated with the migration state.
