IP Library Granted Patent US 10,223,097
Granted Patent B2
US 10,223,097 · App. 15/275,598 · Granted Mar 5, 2019

Dynamic update of an application in compilation and deployment with cold-swapping

Inventors: Arnaud Claude Weber (Saratoga, CA); Sivakumar Velusamy (San Francisco, CA); Stephanie Saad Cuthbertson (Kirkland, WA); Christopher Matthew Warrington (Sunnyvale, CA); Jerome Dochez (Palo Alto, CA); Torbjorn Norbye (Pleasant Hill, CA); Esteban de la Canal (Campbell, CA); Jomo Fisher (Mountain View, CA); Xavier Ducrohet (Sunnyvale, CA)
Assignee: Google LLC
G06F8/65G06F8/41G06F8/48G06F8/60G06F8/656G06F8/71G06F11/3664G06F11/3668
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 10,223,097
App. No.
15/275,598
Granted
Mar 5, 2019
Kind
B2
Abstract

In some examples, method includes, in response to receiving an initial user input that causes a builder computing system to compile a set of source code into a set of compiled targets of an application package that implements an application, deploying the application package to initiate execution of the application, wherein a subset of the set of source code is compiled into an initial subset of the set of compiled targets; after modification to at least the subset of the set of source code, receiving a subsequent user input that causes the builder computing system to compile at least the subset of the set of source code into an updated subset of the set of compiled targets; and deploying the updated subset to update the application based on the updated subset without sending another application package that includes the updated subset.

Claims (50)

1. A method comprising:

in response to receiving an initial user input that causes a builder computing system to compile a set of source code into a set of compiled targets of an application package that implements an application, deploying, by the builder computing system, the application package to initiate execution of the application in a test environment, wherein a subset of the set of source code is compiled into an initial subset of the set of compiled targets;

after modification to at least the subset of the set of source code, receiving, at the builder computing system, a subsequent user input that causes the builder computing system to compile at least the subset of the set of source code into an updated subset of the set of compiled targets; and

deploying the updated subset of the set of compiled targets to the target environment by at least storing the updated subset of the set of compiled targets in a predefined filesystem location of the target environment that is known by the application without sending another application package that includes the updated subset of the set of compiled targets, wherein deploying the updated subset of the set of compiled targets causes the application to restart and load updated compiled targets included in the predefined filesystem location of the target environment in reverse chronological order, wherein a first compiled target of the updated compiled targets that is more recently compiled than a second compiled target of the updated compiled targets is loaded into memory of the test environment system without loading the second compiled target into the memory of the test environment system, wherein a type of the first compiled target is the same as a type of the second compiled target.

2. The method of claim 1 , wherein the test environment is at least one of an emulator executing at the builder computing system, a directory of the builder computing system, or a remote computing device that is operably coupled to the builder computing system.

3. The method of claim 1 , wherein deploying the updates subset of the set of compiled targets further comprises:

sending, by the builder computing system and to the target environment, a command that causes the application to restart.

4. The method of claim 1 ,

wherein deploying the updated subset of the set of compiled targets to update the application based on the updated subset without sending another application package is based at least in part on determining that the application cannot be updated with the updated subset of the set of compiled targets without restarting the application.

5. The method of claim 1 , further comprising:

inserting, by the builder computing system, path compaction program logic in the application package that, when executed in the test environment system, stores respective indices for at least the first compiled target and the second compiled target and deletes the second compiled target of the at least two respective targets that is less recently compiled that the first compiled target.

6. A builder computing system comprising:

one or more computer processors; and

a memory comprising instructions that when executed by the one or more computer processors cause the one or more computer processors to:

in response to receiving an initial user input that causes the builder computing system to compile a set of source code into a set of compiled targets of an application package that implements an application, deploy the application package to initiate execution of the application in a test environment, wherein a subset of the set of source code is compiled into an initial subset of the set of compiled targets;

after modification to at least the subset of the set of source code, receive a subsequent user input that causes the builder computing system to compile at least the subset of the set of source code into an updated subset of the set of compiled targets; and

deploy the updated subset of the set of compiled targets to the target environment by at least storing the updated subset of the set of compiled targets in a predefined filesystem location of the target environment that is known by the application without sending another application package that includes the updated subset of the set of compiled targets, wherein deploying the updated subset of the set of compiled targets causes the application to restart and load updated compiled targets included in the predefined filesystem location of the target environment in reverse chronological order, wherein a first compiled target of the updated compiled targets that is more recently compiled than a second compiled target of the updated compiled targets is loaded into memory of the test environment system without loading the second compiled target into the memory of the test environment system, wherein a type of the first compiled target is the same as a type of the second compiled target.

7. A non-transitory computer-readable storage medium encoded with instructions that, when executed, cause at least one processor of a builder computing system to:

in response to receiving an initial user input that causes the builder computing system to compile a set of source code into a set of compiled targets of an application package that implements an application, deploy the application package to initiate execution of the application in a test environment, wherein a subset of the set of source code is compiled into an initial subset of the set of compiled targets;

after modification to at least the subset of the set of source code, receive a subsequent user input that causes the builder computing system to compile at least the subset of the set of source code into an updated subset of the set of compiled targets; and

deploy the updated subset of the set of compiled targets to the target environment by at least storing the updated subset of the set of compiled targets in a predefined filesystem location of the target environment that is known by the application without sending another application package that includes the updated subset of the set of compiled targets, wherein deploying the updated subset of the set of compiled targets causes the application to restart and load updated compiled targets included in the predefined filesystem location of the target environment in reverse chronological order, wherein a first compiled target of the updated compiled targets that is more recently compiled than a second compiled target of the updated compiled targets is loaded into memory of the test environment system without loading the second compiled target into the memory of the test environment system, wherein a type of the first compiled target is the same as a type of the second compiled target.

8. A method comprising:

in response to receiving a set of compiled targets of an application, loading, by a test environment system, one or more of the set of compiled targets into memory of the test environment system;

in response to receiving an updated subset of the set of compiled targets while the original compiled target is stored in memory, storing, by the test environment system, the updated subset of compiled targets in a predefined filesystem location of the target environment that is known by the application; and

in response to determining that the application cannot be updated with the updated subset of the set of compiled targets without restarting the application, restarting, by the test environment system, the application to execute with the updated subset of the set of compiled targets, wherein restarting the application causes the application to load updated compiled targets included in the predefined filesystem location of the target environment in reverse chronological order, wherein a first compiled target of the updated compiled targets is more recently compiled than a second compiled target of the updated compiled targets is loaded into the memory of the test environment system without loading the second compiled target into the memory of the test environment system, and wherein a type of the first compiled target is the same as a type of the second compiled target.

9. The method of claim 8 , wherein the predefined filesystem location of the target environment is included as a string within at least a configuration file for the application or a compiled target of the set of compiled targets.

10. The method of claim 8 , further comprising receiving, by the test environment system, a command that causes the application to restart.

11. The method of claim 8 ,

wherein receiving the set of compiled targets of the application comprises receiving a first application package that represents the application and includes the set of compiled targets of the application, and

wherein receiving the updated subset of the set of compiled targets comprises receiving the updated subset of the set of compiled targets that are not included in a second application package that represents the application.

12. The method of claim 8 , further comprising:

determining, by the test environment system, that at least the first compiled target and the second compiled target are stored at the test environment system; and

generating respective indices for the first compiled target and the second compiled target, wherein each respective index of the first compiled target and the second compiled target indicates a respective version of the first compiled target and the second compiled target.

13. The method of claim 12 , further comprising:

deleting, by the test environment system and based at least in part on the first compiled target being more recent than the second compiled target, the second compiled target.

14. A test environment system comprising:

one or more computer processors; and

a memory comprising instructions that when executed by the one or more computer processors cause the one or more computer processors to:

in response to receiving a set of compiled targets of an application, load one or more of the set of compiled targets into memory of the test environment system;

in response to receiving an updated subset of the set of compiled targets while the original compiled target is stored in memory, store the updated subset of the set of compiled targets in a predefined filesystem location of the target environment that is known by the application; and

in response to determining that the application cannot be updated with the updated subset of the set of compiled targets without restarting the application, restart the application to execute with the updated subset of the set of compiled targets, wherein restarting the application causes the application to load updated compiled targets included in the predefined filesystem location of the target environment in reverse chronological order, wherein a first compiled target of the updated compiled targets is more recently compiled than a second compiled target of the updated compiled targets is loaded into the memory of the test environment system without loading the second compiled target into the memory of the test environment system, and wherein a type of the first compiled target is the same as a type of the second compiled target.

15. The test environment system of claim 14 , wherein the predefined filesystem location of the target environment is included as a string within at least a configuration file for the application or a compiled target of the set of compiled targets.

16. The test environment system of claim 14 , wherein the instructions further cause the one or more computer processors to:

delete, and based at least in part on the first compiled target being more recent than the second compiled target, the second compiled target.

17. A non-transitory computer-readable storage medium encoded with instructions that, when executed, cause at least one processor of a test environment system to:

in response to receiving a set of compiled targets of an application, load one or more of the set of compiled targets into memory of the test environment system;

in response to receiving an updated subset of the set of compiled targets while the original compiled target is stored in memory, store the updated subset of the set of compiled targets in a predefined filesystem location of the target environment that is known by the application; and

in response to determining that the application cannot be updated with the updated subset of the set of compiled targets without restarting the application, restart the application to execute with the updated subset of the set of compiled targets, wherein restarting the application causes the application to load updated compiled targets included in the predefined filesystem location of the target environment in reverse chronological order, wherein a first compiled target of the updated compiled targets is more recently compiled than a second compiled target of the updated compiled targets is loaded into the memory of the test environment system without loading the second compiled target into the memory of the test environment system, and wherein a type of the first compiled target is the same as a type of the second compiled target.

18. The non-transitory computer-readable storage medium of claim 17 , wherein the instructions further cause the at least one processor to:

delete, and based at least in part on the first compiled target being more recent than the second compiled target, the second compiled target.

Assignments (2)
CHANGE OF NAME Recorded Dec 5, 2017
From: GOOGLE INC.
To: GOOGLE LLC
Reel/Frame 044695/0115 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Sep 26, 2016
From: WEBER, ARNAUD CLAUDE; VELUSAMY, SIVAKUMAR; CUTHBERTSON, STEPHANIE SAAD; WARRINGTON, CHRISTOPHER MATTHEW; DOCHEZ, JEROME; NORBYE, TORBJORN; DE LA CANAL, ESTEBAN; FISHER, JOMO; DUCROHET, XAVIER
To: GOOGLE INC.
Reel/Frame 039852/0704 →
Continuity (2)
Provisional Application 62258335 · Nov 20, 2015
Related Publication 20170147324A1 · May 25, 2017
Cited By (5)
US 12,346,675 US 12,450,044 US 12,493,460 US 12,650,827 US 12,699,575