IP Library Granted Patent US 10,223,099
Granted Patent B2
US 10,223,099 · App. 15/484,980 · Granted Mar 5, 2019

Systems and methods for peer-to-peer build sharing

Inventor: Matthew Avant (Brooklyn, NY)
Assignee: Palantir Technologies Inc.
G06F8/65G06F8/71G06F17/30327G06F17/30595G06F17/30864G06F8/36G06F9/5061H04L67/10
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,099
App. No.
15/484,980
Granted
Mar 5, 2019
Kind
B2
Abstract

Systems and methods are provided for obtaining a build object over a communication network, the build object comprising at least a portion of a first build. The build object is stored locally. A build modification object is obtained over the communication network, the build modification object comprising a change between the first build and a second build. The build object updated using the build modification object obtained over the communication network. At least a portion of the updated build object is provided to a first peer build system over the communication network.

Claims (62)

1. A software build system for generating new software builds based on build objects obtained from a peer build system comprising:

one or more processors; and

memory storing instructions that, when executed by the one or more processors, cause the system to perform:

obtaining a current build object over a communication network, the current build object comprising a portion of a current build, and the current build object comprising any of one or more hashes, data attributes, methods, parameters, tree structures and multiple content items;

storing the current build object;

estimating a change between the current build object and a predicted build object based on a current state of one or more content items associated with the current build;

comparing the estimated change to a threshold condition;

generating, in response to the comparison, one or more new build objects;

determining one or more changes between two or more build objects;

generating one or more build modification objects based on the one or more determined changes between the two or more build objects, wherein at least one of the one or more build modification objects comprise a tree structure storing at least a portion of a build that has changed relative to one or more other builds;

providing the one or more build modification objects to at least one peer build system without providing an entire build, thereby reducing time for the at least one peer system to update one or more local build objects, the one or more local build objects capable of being used for processing build action requests.

2. The system of claim 1 , wherein a build object comprises a hash tree structure.

3. The system of claim 2 , wherein the build object comprises a plurality of content items, each of the content items comprising any of a file or a binary, each of the content items stored as an element of the hash tree structure.

4. The system of claim 1 , wherein the obtaining the current build object over the communication network comprises

obtaining the current build object from a second peer build system over the communication network, and

the obtaining the one or more build modification objects over the communication network comprises obtaining the one or more build modification objects over the communication from an originating build system storing a complete instance of the first build and a complete instance of a second build.

5. The system of claim 1 , wherein a build object comprises an immutable build object, and the updating the one or more local build object comprises generating a second build object using the one or more build modification objects.

6. The system of claim 1 , wherein the instructions further cause the system to perform:

predicting one or more respective build objects stored by a plurality of respective peer build systems; receiving a build action request;

selecting a third peer build system from the plurality of respective peer build systems based on the build action request and the prediction;

obtaining a second build object from the third peer build system based on the build action request; determining whether the second build object satisfies the build action request;

if the second build object satisfies the build action request, processing the build action request using the second build object; and

if the second build object does not satisfy the build action request, iteratively obtaining one or more different build objects from one or more different peer build systems from the plurality of respective build systems until a particular build object of the one or more different build objects satisfies the build action request; and processing the build action request using the particular build object of the one or more different build objects.

7. The system of claim 6 , wherein the selecting a third peer build system from the plurality of respective peer build systems based on the build action request and the prediction comprises selecting a particular peer build system predicted to store a particular build object indicated by the build action request.

8. The system of claim 7 , wherein the particular peer build system is selected based on a latency relative to one or more other peers of the plurality of peers predicted to store the particular build object indicated by the build action request.

9. The system of claim 1 , wherein the instructions further cause the system to perform:

obtaining one or more additional build objects from one or more additional peer build systems; and

creating a complete instance of a second build from the updated one or more build objects and the one or more additional build objects, the complete instance of the second build comprising a hash tree structure.

10. The system of claim 1 , wherein storing a build object comprises storing the build object in a Merkle tree structure, the build object comprising a portion of a software build.

11. A method being implemented by a computing system including one or more physical processors and storage media storing machine-readable instructions, the method comprising:

obtaining a current build object over a communication network, the build object comprising a portion of a current build, and the current build object comprising any of one or more hashes, data attributes, methods, parameters, tree structures and multiple content items;

storing the current build object;

estimating a change between the current build object and a predicted build object based on a current state of one or more content items associated with the current build;

comparing the estimated change to a threshold condition;

generating, in response to the comparison, one or more new build objects;

determining one or more changes between two or more build objects;

generating one or more build modification objects based on the one or more determined changes between the two or more build objects, wherein at least one of the one or more build modification objects comprise a tree structure storing at least a portion of a build that has changed relative to one or more other builds;

providing the one or more build modification objects to at least one peer build system without providing an entire build, thereby reducing time for the at least one peer system to update one or more local build objects, the one or more local build objects capable of being used for processing build action requests.

12. The method of claim 11 , wherein a build object comprises a hash tree structure.

13. The method of claim 12 , wherein the build object comprises a plurality of content items, each of the content items comprising any of a file or a binary, each of the content items stored as an element of the hash tree structure.

14. The method of claim 11 , wherein the obtaining the current build object over the communication network comprises obtaining the current build object from a second peer build system over the communication network, and the obtaining the one or more build modification objects over the communication network comprises obtaining the one or more build modification objects over the communication from an originating build system storing a complete instance of the first build and a complete instance of a second build.

15. The method of claim 11 , wherein a build object comprises an immutable build object, and the updating the one or more build objects comprises generating a second build object using the one or more build modification objects.

16. The method of claim 11 , further comprising:

predicting one or more respective build objects stored by a plurality of respective peer build systems; receiving a build action request;

selecting a third peer build system from the plurality of respective peer build systems based on the build action request and the prediction;

obtaining a second build object from the third peer build system based on the build action request;

determining whether the second build object satisfies the build action request; if the second build object satisfies the build action request, processing the build action request using the second build object; and

if the second build object does not satisfy the build action request, iteratively obtaining one or more different build objects from one or more different peer build systems from the plurality of respective build systems until a particular build object of the one or more different build objects satisfies the build action request; and processing the build action request using the particular build object of the one or more different build objects.

17. The method of claim 16 , wherein the selecting a third peer build system from the plurality of respective peer build systems based on the build action request and the prediction comprises selecting a particular peer build system predicted to store a particular build object indicated by the build action request.

18. The method of claim 17 , wherein the particular peer build system is selected based on a latency relative to one or more other peers of the plurality of peers predicted to store the particular build object indicated by the build action request.

19. The method of claim 11 , further comprising:

obtaining one or more additional build objects from one or more additional peer build systems; and

creating a complete instance of second build from the updated one or more local build objects and the one or more additional build objects, the complete instance of the second build comprising a hash tree structure.

20. A non-transitory computer readable medium comprising instructions that, when executed, cause one or more processors to perform:

obtaining a current build object over a communication network, the current build object comprising a portion of a current build, and the build current object comprising any of one or more hashes, data attributes, methods, parameters, tree structures and multiple content items;

storing the current build object;

estimating a change between the current build object and a predicted build object based on a current state of one or more content items associated with the current build;

comparing the estimated change to a threshold condition;

generating, in response to the comparison, one or more new build objects;

determining one or more changes between two or more build objects;

generating one or more build modification objects based on the one or more determined changes between the two or more build objects, wherein at least one of the one or more build modification objects comprises a tree structure storing at least a portion of a build that has changed relative to one or more other builds;

providing the one or more build modification objects to at least one peer build system without providing an entire build, thereby reducing time for the at least one peer system to update one or more local build objects, the one or more local build objects capable of being used for processing build action requests.

Assignments (8)
ASSIGNMENT OF INTELLECTUAL PROPERTY SECURITY AGREEMENTS Recorded Jul 3, 2022
From: MORGAN STANLEY SENIOR FUNDING, INC.
To: WELLS FARGO BANK, N.A.
Reel/Frame 060572/0640 →
SECURITY INTEREST Recorded Jul 3, 2022
From: PALANTIR TECHNOLOGIES INC.
To: WELLS FARGO BANK, N.A.
Reel/Frame 060572/0506 →
CORRECTIVE ASSIGNMENT TO CORRECT THE ERRONEOUSLY LISTED PATENT BY REMOVING APPLICATION NO. 16/832267 FROM THE RELEASE OF SECURITY INTEREST PREVIOUSLY RECORDED ON REEL 052856 FRAME 0382. ASSIGNOR(S) HEREBY CONFIRMS THE RELEASE OF SECURITY INTEREST. Recorded Aug 26, 2021
From: ROYAL BANK OF CANADA
To: PALANTIR TECHNOLOGIES INC.
Reel/Frame 057335/0753 →
SECURITY INTEREST Recorded Jun 4, 2020
From: PALANTIR TECHNOLOGIES INC.
To: MORGAN STANLEY SENIOR FUNDING, INC.
Reel/Frame 052856/0817 →
RELEASE OF SECURITY INTEREST Recorded Jun 4, 2020
From: ROYAL BANK OF CANADA
To: PALANTIR TECHNOLOGIES INC.
Reel/Frame 052856/0382 →
SECURITY INTEREST Recorded Jan 27, 2020
From: PALANTIR TECHNOLOGIES INC.
To: MORGAN STANLEY SENIOR FUNDING, INC., AS ADMINISTRATIVE AGENT
Reel/Frame 051713/0149 →
SECURITY INTEREST Recorded Jan 27, 2020
From: PALANTIR TECHNOLOGIES INC.
To: ROYAL BANK OF CANADA, AS ADMINISTRATIVE AGENT
Reel/Frame 051709/0471 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Nov 27, 2018
From: AVANT, MATTHEW
To: PALANTIR TECHNOLOGIES INC.
Reel/Frame 047595/0708 →
Continuity (2)
Provisional Application 62437559 · Dec 21, 2016
Related Publication 20180173514A1 · Jun 21, 2018
Cited By (1)
US 12,210,574