Non-disruptive introduction of live update functionality into long-running applications
AssigneeAmazon Technologies, Inc.
InventorsBjoern Doebel, Martin Thomas Pohlack
Life of this patent
Estimating the term…
Abstract
An execution of an instance of a program that does not include checkpoint-based live update functionality is paused. A set of objects containing state information of the program is identified from a portion of memory used by the instance, and stored in a checkpoint of the program. The execution of the instance is resumed using at least the checkpoint and code that has been dynamically introduced into the instance.
Claims20
A system, comprising:
- one or more computing devices;
- wherein the one or more computing devices include instructions that upon execution on a processor cause the one or more computing devices to:
- obtain, from a first version of a program which includes checkpoint-based live update functionality, a descriptor of a first set of one or more objects comprising state information of the program to be stored in a checkpoint of the program, wherein checkpoint-based live update functionality, when updating, for an executing instance of a version of a program in which it is included uses the state information to avoid closing one or more open files or network connections to one or more applications that rely on or communicate with the executing instance;
- pause execution of a deployed instance of a different version of the program, wherein the different version does not include checkpoint-based live update functionality;
- identify, from a portion of a memory used by the deployed instance, a second set of one or more objects comprising at least a portion of the state information represented in the descriptor obtained from the first version of the program;
- store a checkpoint of the paused deployed instance, the checkpoint of the deployed instance comprising the second set of one or more objects comprising at least the portion of the state information represented in the descriptor;
- add, into the paused deployed instance, a loadable module comprising code to implement the checkpoint-based live update functionality that, when updating, for the deployed instance, uses the state information to avoid closing one or more open files or network connections to one or more applications that rely on or communicate with the deployed instance;
- resume, using the state information stored in the checkpoint of the deployed instance, execution of the paused deployed instance without closing one or more files or network connections that, when execution of the deployed instance was paused, were open to communicate with one or more applications;
- and
- perform a checkpoint-based live update of the deployed instance of the program using the loadable module added into the deployed instance.
A method, comprising:
- performing, by one or more computing devices:
- pausing execution of an instance of a program that does not include checkpoint-based live update functionality, wherein checkpoint-based live update functionality, when updating executing instance of a version of a program in which it is included, uses state information of the program to avoid closing one or more open files or network connections to one or more applications that rely on or communicate with the executing instance;
- identifying, from a portion of a memory used by the instance that does not include the checkpoint-based live update functionality, a set of one or more objects comprising at least a portion of state information of the program;
- storing a checkpoint of the paused instance, wherein the checkpoint comprises the set of one or more objects comprising at least the portion of the state information represented in a descriptor;
- adding to the paused instance a loadable object comprising code to add the checkpoint-based live update functionality that, when updating the instance, uses the state information to avoid closing one or more open files or network connections to one or more applications that rely on or communicate with the instance;
- resuming, using the state information stored in the checkpoint of the instance, execution of the paused instance of the program without closing one or more files or network connections that, when execution of the instance was paused, were open to communicate with one or more applications;
- and
- performing a checkpoint-based live update of the instance of the program using the loadable object added to the instance.
One or more non-transitory computer-accessible storage media storing program instructions that when executed on or across one or more processors:
- cause execution of an instance of a program that does not include checkpoint-based live update functionality to be paused, wherein checkpoint-based live update functionality, when updating an executing instance of a version of a program in which it is included, uses state information of the program to avoid closing one or more open files or connections to one or more applications that rely on or communicate with the executing instance;
- identify, from a portion of a memory used by the instance, a set of one or more objects comprising at least a portion of state information of the program;
- store a first checkpoint of the paused instance, the first checkpoint comprising the set of one or more objects comprising the state information;
- and
- add to the paused instance a loadable object comprising code to add the checkpoint-based live update functionality that, when updating the instance, uses the state information to avoid closing one or more open files or connections to one or more applications that rely on or communicate with the instance;
- resume, using the state information stored in the first checkpoint of the paused instance, execution of the paused instance of the program without closing one or more files or network connections that, when execution of the instance was paused, were open to communicate with one or more applications;
- and
- perform a checkpoint-based live update of the instance of the program using the loadable object added to the instance.
Dependencies are inferred from the claim text.