IP Library › Granted Patent US 12,591,369
Granted Patent B2
US 12,591,369 · App. 18/055,615 · Granted Mar 31, 2026

Node cache migration

Inventors: Shrikant Thakare (Burlington, MA); Maxence Weyrich (San Francisco, CA); Shivakarthik Subramanyam (Dublin, CA)
Assignee: Salesforce, Inc.
G06F3/0617G06F3/0647G06F3/067
View Patent ↗
Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US 12,591,369
App. No.
18/055,615
Granted
Mar 31, 2026
Kind
B2
Abstract

Techniques are disclosed relating to upgrading nodes. A computer system may detect that there is an update to a node image used to deploy a set of nodes managed by the computer system. The computer system may select, for an upgrade process, a first node from the set of nodes that includes a first volume used to store data of applications executing on that first node. The computer system may upgrade the first node by deploying a second node running the updated node image, transition the first node to a read-only mode in which read transactions but not write transactions are routed to the applications, and copy particular data from the first volume of the first node to a second volume of the second node. The computer system may, after completion of the copy operation, evict the applications from the first node and redeploy them on the second node.

Claims (76)

1 . A method, comprising:

detecting, by a computer system, that there is an updated node image that is an updated version to a previous node image used to deploy a set of virtual machines;

selecting, by the computer system and from the set of virtual machines, a first virtual machine for which to perform a node image upgrade process, wherein the first virtual machine uses a first volume to store data of a set of applications executing on the first virtual machine; and

performing, by the computer system, the node image upgrade process for the first virtual machine, wherein the performing includes:

deploying a second virtual machine based on the updated node image, wherein the first virtual machine was deployed based on the previous node image;

maintaining a set of mappings that maps the set of applications to the first virtual machine and the first virtual machine to the second virtual machine;

after the deploying of the second virtual machine, transitioning the set of applications to a read-only mode in which the set of applications is permitted to process read transactions but not write transactions;

after the transitioning, performing, based on the set of mappings, a copy operation to copy the data of the set of applications from the first volume used by the first virtual machine to a second volume used by the second virtual machine; and

after completion of the copy operation:

scaling down the first virtual machine; and

after the scaling down of the first virtual machine, redeploying, based on the set of mappings, the set of applications on the second virtual machine.

2 . The method of claim 1 , wherein the set of mappings includes a mapping between a network address of the first virtual machine and a network address of the second virtual machine, and wherein the performing of the node image upgrade process for the first virtual machine includes:

the computer system maintaining, for the node image upgrade process of the first virtual machine, a status of the copy operation.

3 . The method of claim 2 , further comprising:

detecting, by the computer system, that the copy operation has failed based on the status of the copy operation; and

reattempting, by the computer system, the copy operation in response to a number of failures of the copy operation not satisfying a failure threshold.

4 . The method of claim 1 , wherein the detecting includes the computer system receiving an indication of the updated node image in response to polling a node configuration store that stores information about the set of virtual machines, including the updated node image.

5 . The method of claim 1 , further comprising:

prior to the redeploying of the set of applications, the computer system routing read traffic that is associated with the first virtual machine to the first virtual machine; and

after the redeploying of the set of applications, the computer system routing the read traffic to the second virtual machine.

6 . The method of claim 1 , wherein the performing of the copy operation includes:

spawning a thread on the second virtual machine that is operable to issue requests to the first virtual machine for the data of the set of applications and store the data returned by the first virtual machine in the second volume.

7 . The method of claim 1 , further comprising:

selecting, by the computer system and from the set of virtual machines, a third virtual machine for which to perform the node image upgrade process; and

performing, by the computer system, the node image upgrade process for the third virtual machine at least partially in parallel with the performing of the node image upgrade process for the first virtual machine.

8 . The method of claim 7 , further comprising:

grouping, by the computer system, the set of virtual machines into a plurality of groups based on a service provided by a given virtual machine and an availability zone in which the given virtual machine resides, wherein the third virtual machine is selected based on the third virtual machine belonging to a same one of the plurality of groups as the first virtual machine.

9 . The method of claim 1 , wherein the first virtual machine is part of a group of virtual machines that implement a primary cluster, wherein other virtual machines in the group execute instances of the set of applications, and wherein the method further comprises:

routing, by the computer system, the write transactions to the other virtual machines in the group.

10 . The method of claim 1 , wherein the performing of the node image upgrade process for the first virtual machine includes:

after completion of the copy operation, the computer system performing a verification check that includes comparing a first set of hash values derived from the data stored in the first volume with a second set of hash values derived from corresponding data stored in the second volume.

11 . A non-transitory computer readable medium having program instructions stored thereon that are executable by a computer system to cause the computer system to perform operations comprising:

detecting that there is an updated node image that is an updated version to a previous node image used to deploy a set of virtual machines;

selecting, from the set of virtual machines, a first virtual machine for which to perform a node image upgrade process, wherein the first virtual machine uses a first volume to store data of a set of applications executing on the first virtual machine; and

performing the node image upgrade process for the first virtual machine, wherein the performing includes:

deploying a second virtual machine based on the updated node image, wherein the first virtual machine was deployed based on the previous node image;

maintaining a set of mappings that maps the set of applications to the first virtual machine and the first virtual machine to the second virtual machine;

after the deploying of the second virtual machine, transitioning the first virtual machine to a read-only mode in which read transactions but not write transactions are routed to the set of applications;

after the transitioning, performing, based on the set of mappings, a copy operation to copy the data of the set of applications from the first volume used by the first virtual machine to a second volume used by the second virtual machine; and

after completion of the copy operation:

scaling down the first virtual machine; and

after the scaling down of the first virtual machine, redeploying, based on the set of mappings, the set of applications on the second virtual machine.

12 . The non-transitory computer readable medium of claim 11 , wherein the set of mappings includes a mapping between a private Domain Name System (DNS) address of the first virtual machine and private DNS address of the second virtual machine.

13 . The non-transitory computer readable medium of claim 11 , wherein the detecting includes:

polling a node configuration store for node image information that identifies a current node image to be used to deploy virtual machines to an environment that includes the set of virtual machines; and

receiving, from the node configuration store, node image information that identifies the updated node image.

14 . The non-transitory computer readable medium of claim 11 , wherein the operations further comprise:

grouping the set of virtual machines into a plurality of groups based on a service that is provided by a given virtual machine;

selecting, from a particular one of the plurality of groups that includes the first virtual machine, a third virtual machine for which to perform the node image upgrade process; and

performing the node image upgrade process for the third virtual machine at least partially in parallel with the performing of the node image upgrade process for the first virtual machine.

15 . The non-transitory computer readable medium of claim 11 , wherein the operations further comprise:

maintaining status information identifying a status of the copy operation and a number of attempts of the copy operation;

detecting that the copy operation has failed based on the status; and

based on the number of attempts of the copy operation not satisfying a failure threshold, reattempting the copy operation.

16 . A system, comprising:

at least one processor; and

memory having program instructions stored thereon that are executable by the at least one processor to cause the system to perform operations comprising:

detecting that there is an updated node image that is an updated version to a previous node image used to deploy a set of virtual machines;

selecting, from the set of virtual machines, a first virtual machine for which to perform a node image upgrade process, wherein the first virtual machine uses a first volume to store data of a set of applications executing on the first virtual machine; and

performing the node image upgrade process for the first virtual machine, wherein the performing includes:

deploying a second virtual machine based on the updated node image, wherein the first virtual machine was deployed based on the previous node image;

maintaining a set of mappings that maps the set of applications to the first virtual machine and the first virtual machine to the second virtual machine;

after the deploying of the second virtual machine, transitioning the first virtual machine to a read-only mode in which read transactions but not write transactions are routed to the set of applications;

after the transitioning, performing a copy operation to copy the data of the set of applications from the first volume used by the first virtual machine to a second volume used by the second virtual machine; and

after completion of the copy operation:

scaling down the first virtual machine; and

after the scaling down of the first virtual machine, redeploying, based on the set of mappings, the set of applications on the second virtual machine.

17 . The system of claim 16 , wherein the set of mappings includes a hash map between the first virtual machine and the second virtual machine.

18 . The system of claim 16 , wherein the operations further comprise

grouping the set of virtual machines into a plurality of groups based on an availability zone in which a given virtual machine resides;

selecting, from a particular one of the plurality of groups that includes the first virtual machine, a third virtual machine for which to perform the node image upgrade process; and

performing the node image upgrade process for the third virtual machine at least partially in parallel with the performing of the node image upgrade process for the first virtual machine.

19 . The system of claim 16 , wherein the operations further comprise:

maintaining status information identifying a status of the copy operation and a number of attempts of the copy operation;

detecting that the copy operation has failed based on the status; and

based on the number of attempts of the copy operation not satisfying a failure threshold, reattempting the copy operation.

Assignments (1)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Nov 15, 2022
From: THAKARE, SHRIKANT; WEYRICH, MAXENCE; SUBRAMANYAM, SHIVAKARTHIK
To: SALESFORCE, INC.
Reel/Frame 061776/0292 →
Continuity (1)
Related Publication 20240160354A1 · May 16, 2024
References Cited (17)
US 7055149B2 · Birkholz et al. · 2006 [cited by applicant]
US 20050267951A1 · Joshi et al. · 2005 [cited by applicant]
US 20060218545A1 · Taguchi · 2006 [cited by applicant]
US 20110126197A1 · Larsen · 2011 [cited by examiner]
US 20120159473A1 · Tsirkin · 2012 [cited by examiner]
US 20130031550A1 · Choudhury · 2013 [cited by examiner]
US 20130326175A1 · Tsirkin · 2013 [cited by examiner]
US 20150324215A1 · Borthakur · 2015 [cited by examiner]
US 20160335106A1 · Behere · 2016 [cited by examiner]
US 20170171029A1 · Maknojia · 2017 [cited by examiner]
US 20170177401A1 · Brouwer · 2017 [cited by examiner]
US 20170199770A1 · Peteva · 2017 [cited by examiner]
US 20180091591A1 · Puri · 2018 [cited by examiner]
US 20180373553A1 · Connor · 2018 [cited by examiner]
US 20190179658A1 · Jones · 2019 [cited by examiner]
US 20210255846A1 · Mamgain · 2021 [cited by examiner]
Awati, Rahul; Definition: Live Migration; 2025; TechTarget Network; https://www.techtarget.com/searchitoperations/definition/live-migration. (Year: 2025). [cited by examiner]