Architecture and method for versioning registry entries in a distributed program build
First Claim
1. A computer-implemented method for executing a program build, comprising:
- scheduling jobs to be executed for the program build based on dependencies between the jobs, wherein at least some of the jobs include one or more registry operations;
collecting usage information from each of the jobs responsive to those jobs being executed, wherein the usage information collected includes registry usage information, the registry usage information being received from those jobs that include the one or more registry operations and including results of those registry operations;
analyzing the registry usage information to determine whether execution of any of those jobs including the one or more registry operations resulted in a conflict, wherein the analyzing includes, for each job including one or more registry operations, comparing a version of a registry entry used by that job in the program build with a version of a registry entry that the job would have used in a sequential program build;
invalidating the results of a particular job upon determining that the particular job generated a conflict;
rebuilding the invalidated job using the correct registry entry version;
storing a plurality of versions of registry entries used at different points in time during the program build, wherein each of those versions includes a key object version which itself includes one or more sub key object versions and one or more value object versions;
discarding the results of the job that generated the conflict;
identifying the correct registry entry versions for the job; and
rebuilding the job using the correct registry entry versions.
13 Assignments
0 Petitions
Accused Products
Abstract
A method for executing program builds. According to one embodiment of the invention, jobs are scheduled for a program build based on dependencies between the jobs, where at least some of those jobs include one or more registry operations. Usage information is collected from each of those jobs responsive to those jobs being executed. The usage information includes registry usage information from those jobs that include one or more registry operations and includes the results of those registry operations. The registry usage information is analyzed to determine whether the execution of any of those jobs resulted in a conflict. The analyzing includes, for each job including a registry operation, comparing a version of a registry entry used by that job in the program build with a version of a registry entry that the job would have used in a sequential program build. Results of jobs that generated a conflict are invalidated, and the invalidated job is rebuilt using the correct registry entry versions.
61 Citations
23 Claims
-
1. A computer-implemented method for executing a program build, comprising:
-
scheduling jobs to be executed for the program build based on dependencies between the jobs, wherein at least some of the jobs include one or more registry operations; collecting usage information from each of the jobs responsive to those jobs being executed, wherein the usage information collected includes registry usage information, the registry usage information being received from those jobs that include the one or more registry operations and including results of those registry operations; analyzing the registry usage information to determine whether execution of any of those jobs including the one or more registry operations resulted in a conflict, wherein the analyzing includes, for each job including one or more registry operations, comparing a version of a registry entry used by that job in the program build with a version of a registry entry that the job would have used in a sequential program build; invalidating the results of a particular job upon determining that the particular job generated a conflict; rebuilding the invalidated job using the correct registry entry version; storing a plurality of versions of registry entries used at different points in time during the program build, wherein each of those versions includes a key object version which itself includes one or more sub key object versions and one or more value object versions; discarding the results of the job that generated the conflict; identifying the correct registry entry versions for the job; and rebuilding the job using the correct registry entry versions. - View Dependent Claims (2, 3, 4, 5, 6, 7, 8)
-
-
9. A program building machine having at least one processor, comprising:
-
a job scheduler module to schedule jobs for a program build based on dependencies between the jobs, wherein at least some of the jobs include one or more registry operations; a usage tracking module to collect usage information from each of the jobs responsive to those jobs being executed, wherein the usage information collected includes registry usage information, the registry usage information being received from those jobs that include the one or more registry operations and including results of those registry operations; a conflict detection module to analyze the registry usage information to determine whether execution of any of those jobs including the one or more registry operations resulted in a conflict, wherein for each job including one or more registry operations, the conflict detection module to compare a version of a registry entry used by that job in the program build with a version of a registry entry that the job would have used in a sequential program build; a conflict resolution module to discard the results of a particular job upon a determination that the particular job generated a conflict, to reschedule that job using the correct registry entry version, and to identify the correct registry entry versions for the particular job via the versioning file system; a versioning file system to store a plurality of versions of registry entries used at different points in time during the program build, wherein each of those versions includes a key object version which itself includes one or more sub key object versions and one or more value object versions. - View Dependent Claims (10, 11, 12, 13, 14, 15)
-
-
16. A non-transitory machine readable storage medium that provides instructions that, if executed by a machine, will cause the machine to perform operations for executing a program build, comprising
scheduling jobs to be executed for the program build based on dependencies between the jobs, wherein at least some of the jobs include one or more registry operations; -
collecting usage information from each of the jobs responsive to those jobs being executed, wherein the usage information collected includes registry usage information, the registry usage information being received from those jobs that include the one or more registry operations and including results of those registry operations; analyzing the registry usage information to determine whether execution of any of those jobs including the one or more registry operations resulted in a conflict, wherein the analyzing includes, for each job including one or more registry operations, comparing a version of a registry entry used by that job in the program build with a version of a registry entry that the job would have used in a sequential program build; invalidating the results of a particular job upon determining that the particular job generated a conflict; rebuilding the invalidated job using the correct registry entry version storing a plurality of versions of registry entries used at different points in time during the program build, wherein each of those versions includes a key object version which itself includes one or more sub key object versions and one or more value object versions; discarding the results of the job that generated the conflict; identifying the correct registry entry versions for the job; and rebuilding the job using the correct registry entry versions. - View Dependent Claims (17, 18, 19, 20, 21, 22, 23)
-
Specification