IP Library Granted Patent US 7,539,976
Granted Patent B1
US 7,539,976 · App. 10/715,974 · Granted May 26, 2009

System and method for intelligently distributing source files within a distributed program build architecture

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 7,539,976
App. No.
10/715,974
Granted
May 26, 2009
Kind
B1
Abstract

A method implemented within a distributed build system is described comprising: transmitting a first source file from a program build file repository to a first node, the first node using the source file to generate a target file identified in the build process; receiving a request for the first source file from a second node; and redirecting the second node to retrieve the first source file from the first node rather than from the program build file repository.

Claims (58)

1. A method implemented within a distributed build system including a plurality of nodes, each node having one or more processors, the method comprising:

scheduling jobs for a build process to execute in parallel across a plurality of nodes;

transmitting a first source file from a program build file repository to a first node, the first node using the source file to generate a first target file identified in the build process;

receiving a request at a file tracking module for the first source file from a second node; and

the file tracking module redirecting the second node to retrieve the first source file directly from the first node rather than from the program build file repository to generate a second target file identified in the build process;

the file tracking module updating file location data stored in a central build module to indicate that the first source file is stored at the first node and the second node;

receiving a request at the file tracking module for the first source file from a third node;

choosing between the first node and the second node based on a node prioritization policy; and

the file tracking module redirecting the third node to either the first node or the second node based on the results of the node prioritization policy.

2. The method as in claim 1 wherein the node prioritization policy comprises assigning a relatively higher priority to nodes which have requested a source file more recently than other nodes, the method further comprising:

redirecting the third node to retrieve the first source file from the second node.

3. The method as in claim 1 further comprising:

redirecting the third node to retrieve the first source file from the second node based on the results of the node prioritization policy;

the file tracking module determining that the second node is busy; and

as a result of the determination that the second node is busy, redirecting the third node to retrieve the first source file from the first node.

4. The method as in claim 3 wherein the second node being busy comprises the second node transferring a second source file to a fourth node, wherein the second source file is different than the first source file.

5. The method as in claim 1 further comprising:

determining that the first node and/or the second node are busy and/or do not contain a copy of the first source file; and

redirecting the third node to retrieve the first source file from the program build file repository.

6. The method as in claim 1 further comprising:

transmitting a copy of the first source file from the first node to the second node.

7. The method as in claim 6 wherein the first node copies a portion of the first source file that has been received at the first node to the second node prior to the first node fully receiving all portions of the first source file from the program build file repository.

8. A system comprising:

a build machine including,

a processor,

a program build file repository to store source files used during a build process;

a central build module to schedule jobs for the build process to execute in parallel across a plurality of nodes and to transmit a first source file from the program build file repository to a first node, the first node using the first source file to generate a first target file identified in the build process;

a file tracking module to receive a request for the first source file from a second node, and to redirect the second node to retrieve the first source file directly from the first node rather than from the program build file repository to generate a second target file identified in the build process;

wherein responsive to the file tracking module receiving a request from the first source file from a third node, the file tracking module to choose between the first node and the second node based on a node prioritization policy and to redirect the third node to either the first node or the second node based on the results of the node prioritization policy.

9. The system as in claim 8 further comprising:

the central build module including file location data to indicate that the first source file is stored at the first node and the second node.

10. The system as in claim 9 wherein the node prioritization policy comprises assigning a relatively higher priority to nodes which have requested a source file more recently than other nodes, and wherein the file tracking module to redirect the third node to retrieve the first source file from the second node.

11. The system as in claim 9 wherein the file tracking module redirects the third node to retrieve the first source file from the second node based on the results of the node prioritization policy; determines that the second node is busy; and as a result of the determination that the second node is busy, redirects the third node to retrieve the first source file from the first node.

12. The system as in claim 11 wherein the second node being busy comprises the second node transferring a second source file to a fourth node, wherein the second source file is different than the first source file.

13. The system as in claim 9 wherein the file transfer module determines that the first node and/or the second node are busy and/or do not contain a copy of the first source file; and responsively redirects the third node to retrieve the first source file from the program build file repository.

14. The system as in claim 8 wherein the first node copies a portion of the first source file that has been received at the first node to the second node prior to the first node fully receiving all portions of the first source file from the program build file repository.

15. A method implemented within a distributed build system including a plurality of nodes, each node having one or more processors, the method comprising:

scheduling jobs for a build process to execute in parallel across a plurality of nodes;

transmitting a first source file from a program build file repository to a first node, the first node using the source file to generate a first target file identified in the build process;

receiving a request at a file tracking module for the first source file from a second node;

the file tracking module redirecting the second node to retrieve the first source file directly from the first node rather than from the program build file repository to generate a second target file identified in the build process;

wherein the first node transmits a portion of the first source file that has been received at the first node to the second node prior to the first node fully receiving all portions of the first source file from the program build file repository.

16. The method as in claim 15 further comprising:

the file tracking module updating file location data stored in a central build module to indicate that the first source file is stored at the first node and the second node.

17. The method as in claim 16 further comprising:

receiving a request at the file tracking module for the first source file from a third node;

choosing between the first node and the second node based on a node prioritization policy; and

the file tracking module redirecting the third node to either the first node or the second node based on the results of the node prioritization policy.

18. The method as in claim 17 wherein the node prioritization policy comprises assigning a relatively higher priority to nodes which have requested a source file more recently than other nodes, the method further comprising:

redirecting the third node to retrieve the first source file from the second node.

19. The method as in claim 17 further comprising:

redirecting the third node to retrieve the first source file from the second node based on the results of the node prioritization policy;

the file tracking module determining that the second node is busy; and

as a result of the determination that the second node is busy, redirecting the third node to retrieve the first source file from the first node.

20. The method as in claim 19 wherein the second node being busy comprises the second node transferring a second source file to a fourth node, wherein the second source file is different than the first source file.

21. The method as in claim 17 further comprising:

determining that the first node and/or the second node are busy and/or do not contain a copy of the first source file; and

redirecting the third node to retrieve the first source file from the program build file repository.

Assignments (14)
RELEASE OF SECURITY INTEREST Recorded Mar 9, 2026
From: GOLDMAN SACHS PRIVATE MIDDLE MARKET CREDIT II LLC
To: CLOUDBEES, INC.
Reel/Frame 074010/0480 →
TERMINATION AND RELEASE OF SECOND INTELLECTUAL PROPERTY SECURITY AGREEMENT Recorded Nov 29, 2021
From: GOLUB CAPITAL LLC, AS AGENT
To: CLOUDBEES, INC.; ELECTRIC CLOUD, INC.
Reel/Frame 058252/0867 →
SECURITY INTEREST Recorded Nov 24, 2021
From: CLOUDBEES, INC.
To: GOLDMAN SACHS PRIVATE MIDDLE MARKET CREDIT II LLC
Reel/Frame 058207/0183 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jun 26, 2020
From: ELECTRIC CLOUD, INC.
To: CLOUDEBEES, INC.
Reel/Frame 053045/0442 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jun 1, 2020
From: ELECTRIC CLOUD, INC.
To: CLOUDBEES, INC.
Reel/Frame 052804/0275 →
SECOND INTELLECTUAL PROPERTY SECURITY AGREEMENT Recorded May 29, 2019
From: CLOUDBEES, INC.
To: GOLUB CAPITAL LLC, AS ADMINISTRATIVE AGENT
Reel/Frame 049314/0377 →
RELEASE OF SECURITY INTEREST Recorded Apr 12, 2019
From: WESTERN ALLIANCE BANK
To: ELECTRIC CLOUD, INC.
Reel/Frame 048870/0921 →
RELEASE OF SECURITY INTEREST Recorded Apr 12, 2019
From: CANADIAN IMPERIAL BANK OF COMMERCE
To: ELECTRIC CLOUD, INC.
Reel/Frame 048870/0890 →
ASSIGNMENT AND ASSUMPTION OF SECURITY INTERESTS Recorded Jan 9, 2018
From: WF FUND V LIMITED PARTNERSHIP, C/O/B/ AS WELLINGTON FINANCIAL LP AND WELLINGTON FINANCIAL FUND V
To: CANADIAN IMPERIAL BANK OF COMMERCE
Reel/Frame 045028/0880 →
SECURITY INTEREST Recorded Dec 30, 2016
From: ELECTRIC CLOUD, INC.
To: WF FUND V LIMITED PARTNERSHIP
Reel/Frame 040811/0173 →
RELEASE OF SECURITY INTEREST Recorded Dec 28, 2016
From: COMERICA BANK
To: ELECTRIC CLOUD, INC.
Reel/Frame 040787/0473 →
SECURITY INTEREST Recorded Dec 23, 2016
From: ELECTRIC CLOUD, INC.
To: WESTERN ALLIANCE BANK
Reel/Frame 040759/0644 →
SECURITY INTEREST Recorded Jul 5, 2016
From: ELECTRIC CLOUD, INC.
To: COMERICA BANK
Reel/Frame 039255/0292 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Nov 17, 2003
From: OUSTERHOUT, JOHN; DELMAS, SVEN; MELSKI, JOHN ERIC; STANTON, SCOTT; TAMHANKAR, SANDEEP
To: ELECTRIC CLOUD, INC.
Reel/Frame 014716/0732 →