IP Library › Granted Patent US 10,929,122
Granted Patent B1
US 10,929,122 · App. 16/662,001 · Granted Feb 23, 2021

Modifying program modules in running applications

Inventors: Robert Lovejoy Goodwin (Mercer Island, WA); Dragos Barac (Sammamish, WA); Abhinav Jain (Redmond, WA); Krystian Krzysztof Walec (Sammamish, WA); Pedram Faghihi Rezaei (Seattle, WA)
Assignee: Microsoft Technology Licensing, LLC
G06F8/656G06F9/44557G06F16/248G06F16/2455
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,929,122
App. No.
16/662,001
Granted
Feb 23, 2021
Kind
B1
Abstract

A technique is described herein for updating a running application that includes a plurality of program modules (e.g., services). The technique performs its updating operation without having to suspend the execution of the running application, and without reloading all of the program modules in the running application. The technique leverages a mapping component to map a calling program module's call to a function to a called program module that implements the function. A current application manifest provides mapping logic for use by the mapping component. In some examples, the technique also transforms data passed by the calling program module to conform to a data format expected by the called program module. This is appropriate when the calling program module and the called program module use different schemas to define the data.

Claims (67)

1. A method, performed by one or more computing devices, for updating a running application, comprising:

providing a first configuration of the running application in a runtime environment, the first configuration of the running application including a first set of program modules provided in memory, the first set of program modules being described by a first version of an application manifest;

receiving new program code that specifies a modification to the first configuration of the running application;

in response to said receiving:

updating the first version of the application manifest to create a second version of the application manifest; and

updating the first configuration of the running application to provide a second configuration of the running application, while the first configuration of the running application continues to run,

the second configuration of the running application including a second set of program modules that is described by the second version of the application manifest,

a subset of one or more program modules in the second set of program modules also belonging to the first set of program modules;

consulting a mapping component when a calling program module in the second configuration of the running application invokes a function, the mapping component including mapping logic specified by the second version of the application manifest;

for a first case, using the mapping logic to identify a called program module that implements the function, the first case applying when the calling program module and the called program module rely on schema information to define a form of data associated with the function in a consistent manner; and

for a second case, transforming data specified by the calling program module from a first form to a second form, and then passing the data as transformed to the called program module, the second case applying when the calling program module and the called program module rely on the schema information to define the form of the data associated with the function in an inconsistent manner.

2. The method of claim 1 , further including:

associating first work items with the first configuration of the running application prior to providing the second configuration of the running application;

associating second work items with the second configuration of the running application after providing the second configuration of the running application; and

processing the first work items with the first configuration of the running application, and processing the second work items with the second configuration of the running application.

3. The method of claim 2 , wherein a particular work item is a query, and wherein each configuration of the running application processes the query to generate an output search result.

4. The method of claim 3 , further including associating the query upon receipt with a current version of the application manifest.

5. The method of claim 2 , further including discarding use of the first version of the application manifest after the first work items have been processed using the first configuration of the running application.

6. The method of claim 1 , wherein said transforming involves adding a field to an original version of a data item, and/or deleting a field from the original version of the data item.

7. The method of claim 1 ,

wherein the calling program module defines the data associated with the function using a first schema, and the called program module defines the data associated with the function using a second schema, the first schema differing from the second schema, and

wherein said transforming uses transformation logic specified in the second schema to transform the data specified by the calling program module.

8. The method of claim 7 ,

wherein the transformation logic includes plural instances of transformation logic associated with different respective schemas used by calling program modules, and

wherein said transforming applies a particular instance of transformation logic that is associated with the second schema used by the calling component.

9. The method of claim 8 , wherein the mapping logic identifies the particular instance of transformation logic to be applied to transform the data specified by the calling program module.

10. The method of claim 1 , wherein the mapping logic includes a plurality of entries, and wherein the method accesses an entry based on information that specifies a version associated with the calling program module and information that specifies the function that has been invoked.

11. The method of claim 1 ,

wherein the first version of the application manifest includes a first version of the mapping logic, and

wherein said updating of the first version of the application manifest includes updating an entirety of the first version of mapping logic.

12. The method of claim 1 ,

wherein the first version of the application manifest includes a first version of the mapping logic, and

wherein said updating of the first version of the application manifest includes updating a part of the first version of mapping logic that is impacted by the new program code, and not updating another part of the first version of the mapping logic.

13. The method of claim 12 ,

wherein the new program code makes a change to the calling program module and/or the called program module, and

wherein the part of the first version of the mapping logic that is updated includes pair-specific mapping logic that describes connections between the calling program module and the called program module.

14. The method of claim 1 ,

wherein, for a third case, the calling program module defines the data associated with the function using a first schema, and the called program module defines the data associated with the function using a second schema, the first schema differing from the second schema,

wherein the method further includes determining that the calling program module can continue to utilize the function provided by the called program module, despite inconsistency between the first schema and the second schema, and

wherein the method includes using the mapping logic to identify the called program module that contains the function without transforming the data specified by the calling program module.

15. The method of claim 14 , wherein said determining ascertains that the third case applies when: the second schema includes a superset of information specified in the first schema, and the second schema does not change a meaning associated with a common portion of the first schema and the second schema.

16. One or more computing devices, comprising:

hardware logic circuitry, the hardware logic circuitry including: (a) one or more hardware processors that perform operations by executing machine-readable instructions stored in a memory, and/or (b) one or more other hardware logic units that perform the operations using a task-specific collection of logic gates, the operations including:

receiving new program code that specifies a modification to a first configuration of a running application, the first configuration of the running application including a first set of program modules provided in memory, the first set of program modules being described by a first version of an application manifest;

in response to said receiving:

updating the first version of the application manifest to create a second version of the application manifest; and

updating the first configuration of the running application to provide a second configuration of the running application, while the first configuration of the running application continues to run,

the second configuration of the running application including a second set of program modules that is described by the second version of the application manifest,

a subset of one or more program modules in the second set of program modules also belonging to the first set of program modules; and

consulting a mapping component when a calling program module in the second configuration of the running application invokes a function, the mapping component including mapping logic specified by the second version of the application manifest,

the first version of the application manifest including a first version of the mapping logic, and

said updating of the first version of the application manifest including updating a part of the first version of the mapping logic that is impacted by the new program code, and not updating another part of the first version of the mapping logic.

17. The one or more computing devices of claim 16 ,

wherein the new program code makes a change to the calling program module and/or the called program module, and

wherein the part of the first version of the mapping logic that is updated includes pair-specific mapping logic that describes connections between the calling program module and the called program module.

18. The one or computing devices of claim 16 , wherein, for a particular case, the operations further include using the mapping logic to identify a called program module that contains the function, the particular case applying when the calling program module and the called program module rely on schema information to define a form of data associated with the function in a consistent manner.

19. The one or more computing devices of claim 16 , wherein, for a particular case, the operations further include transforming data specified by the calling program module from a first form to a second form, and then passing the data as transformed to a called program module, the particular case applying when the calling program module and the called program module rely on schema information to define a form of data associated with the function in an inconsistent manner.

20. A computer-readable storage medium for storing computer-readable instructions, the computer-readable instructions, when executed by one or more hardware processors, performing a method that comprises:

receiving new program code that specifies a modification to a first configuration of a running application, the first configuration of the running application including a first set of program modules provided in memory, the first set of program modules being described by a first version of an application manifest;

in response to said receiving:

updating the first version of the application manifest to create a second version of the application manifest; and

updating the first configuration of the running application to provide a second configuration of the running application, while the first configuration of the running application continues to run,

the second configuration of the running application including a second set of program modules that is described by the second version of the application manifest,

a subset of one or more program modules in the second set of program modules also belonging to the first set of program modules;

consulting a mapping component when a calling program module in the second configuration of the running application invokes a function, the mapping component including mapping logic specified by the second version of the application manifest;

using the mapping logic to identify transformation logic for a case in which the calling program module and a called program module rely on schema information to define data associated with the function in an inconsistent manner; and

using the transformation logic to transform data specified by the calling program module for consumption by the called program module, said using the transformation logic operating by modifying the data specified by the calling program module from a first form to a second form.

Assignments (1)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Oct 23, 2019
From: GOODWIN, ROBERT LOVEJOY; BARAC, DRAGOS; JAIN, ABHINAV; WALEC, KRYSTIAN KRZYSZTOF; FAGHIHI REZAEI, PEDRAM
To: MICROSOFT TECHNOLOGY LICENSING
Reel/Frame 050808/0603 →
Cited By (3)
US 12,393,435 US 12,585,574 US 12,639,064