IP Library › Granted Patent US 12,386,598
Granted Patent B2
US 12,386,598 · App. 17/990,370 · Granted Aug 12, 2025

Systems and methods for a remotebuild tree cache

Inventors: Sushain Cherivirala (South San Francisco, CA); Ainsley Escorce-Jones (Seattle, WA)
Assignee: STRIPE, INC.
G06F8/433G06F12/0815G06F16/152G06F16/172G06F16/185
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 12,386,598
App. No.
17/990,370
Granted
Aug 12, 2025
Kind
B2
Abstract

A cached parent node of a remotebuild tree cache may be identified in a cache associated with a parent node of a file system. The cache may be configured to store a plurality of cached traversal results, and each may be associated with a corresponding node of the file system. The parent node may be associated with a project root of the file system. A current hash value of the parent node may be compared with a cached hash value of the cached parent node. In response to determining that the cache is stale based on the current hash value and the cached hash value not matching, the cache may be updated by traversing a set of descendent nodes of the parent node based upon the cache miss and updating the cached parent node with a traversal result and with the current hash value of the parent node.

Claims (44)

1. A method comprising:

identifying a cached parent node in a cache associated with a parent node of a file system, the cache storing a plurality of cached software build action results each associated with a corresponding node of the file system and the parent node is associated with a project root of the file system;

comparing a current hash value of the parent node with a cached hash value of the cached parent node;

in response to determining that the cache is stale based on the current hash value and the cached hash value not matching, updating the cache by:

traversing a set of descendent nodes of the parent node based upon the determination that the cache is stale;

detecting a match between a hash value of a descendent node of the set of descendent nodes and a cached hash value of a cached descendent node in the cache;

retrieving a cached descendent node software build action result associated with the cached descendent node; and

updating the cached parent node with a software build action result and with the current hash value of the parent node, the software build action result comprising software code that is an output of a software build action executed on the parent node using contents in the parent node and descendant nodes of the parent node, wherein the output is computed based on the cached descendent node software build action result.

2. The method of claim 1 , wherein the software build action result comprises a recursively flattened list of data files of the file system under the parent node.

3. The method of claim 1 , wherein the file system comprises a plurality of directories and a plurality of data files, wherein each directory and each data file represent a node in the file system.

4. The method of claim 1 , wherein a node in the file system is associated with a corresponding hash value computed based on one or more corresponding hash values of one or more descendent nodes of the node.

5. The method of claim 1 , wherein the file system comprises a set of build dependencies.

6. The method of claim 5 , wherein the set of build dependencies is used to produce the software build action result of the software build action.

7. The method of claim 1 , further comprising:

detecting an update to a data file in the parent node of the file system; and

changing the current hash value of the parent node based on the update to the data file.

8. A method comprising:

identifying a cached parent node in a cache associated with a parent node of a file system, the cache storing a plurality of cached software build action results each

associated with a corresponding node of the file system and the parent node is associated with a project root of the file system;

comparing a current hash value of the parent node with a cached hash value of the cached parent node; and

in response to determining that there is a cache hit based upon a match between the current hash value and the cached hash value, returning a cached software build action result comprising a software code and associated with the cached parent node, wherein the software code is an output of a software build action using contents in the parent node and descendant nodes of the parent node, wherein the output is computed based on the cached software build action result.

9. The method of claim 8 , wherein the cached software build action result comprises a cached list of data files of the file system at the parent node.

10. The method of claim 8 , wherein the file system comprises a plurality of directories and a plurality of data files, wherein each directory and each data file represent a node in the file system.

11. The method of claim 10 , wherein a node in the file system is associated with a corresponding hash value computed based on one or more corresponding hash values of one or more descendent nodes of the node.

12. The method of claim 8 , wherein the file system comprises a set of build dependencies.

13. The method of claim 12 , wherein the set of build dependencies is used to produce a software build action result of a software build action, the software build action result being stored in the cache as the cached software build action result.

14. The method of claim 8 , further comprising:

detecting an update to a data file in the parent node of the file system; and

changing the current hash value of the parent node based on the updated to the data file.

15. A system comprising:

at least one processor; and

memory, operatively coupled to the at least one processor, the memory storing computer executable instructions that, when executed by the at least one processor, cause the system to perform a method comprising:

identifying a cached parent node in a cache associated with a parent node of a file system, the cache storing a plurality of cached software build action results each associated with a corresponding node of the file system and the parent node is associated with a project root of the file system;

comparing a current hash value of the parent node with a cached hash value of the cached parent node; and

in response to determining that the cache is stale based on the current hash value and the cached hash value not matching, updating the cache by:

traversing a set of descendent nodes of the parent node based upon the determination that the cache is stale;

detecting a match between a hash value of a descendent node of the set of descendent nodes and a cached hash value of a cached descendent node in the cache;

retrieving a cached descendent node software build action result associated with the cached descendent node; and

updating the cached parent node with a software build action result and with the current hash value of the parent node, the software build action result comprising test results of a software code that are an output of a software build action executed on the parent node using contents in the parent node and descendant nodes of the parent node, wherein the output is computed based on the cached descendent node software build action result.

16. The system of claim 15 , wherein the software build action result comprises a recursively flattened list of data files of the file system under the parent node.

17. The system of claim 15 , wherein the file system comprises a plurality of directories and a plurality of data files, wherein each directory and each data file represent a node in the file system.

18. The system of claim 15 , wherein a node in the file system is associated with a corresponding hash value computed based on one or more corresponding hash values of one or more descendent nodes of the node.

19. The system of claim 15 , wherein the file system comprises a set of build dependencies.

20. The system of claim 19 , wherein the set of build dependencies is used to produce the software build action result of the software build action.

Assignments (2)
CHANGE OF NAME Recorded Mar 6, 2026
From: STRIPE, INC.
To: STRIPE, LLC
Reel/Frame 075033/0690 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Nov 18, 2022
From: CHERIVIRALA, SUSHAIN; ESCORCE-JONES, AINSLEY
To: STRIPE, INC.
Reel/Frame 061829/0072 →
Continuity (1)
Related Publication 20240168733A1 · May 23, 2024
References Cited (7)
US 20150339370A1 · Onusko · 2015 [cited by examiner]
US 20160085769A1 · Penangwala · 2016 [cited by examiner]
US 20180173514A1 · Avant · 2018 [cited by examiner]
US 20230004858A1 · Santhanagopal · 2023 [cited by examiner]
WO WO2016177283A1 · 2016 [cited by examiner]
Translated WO 2016177283 (Year: 2016). [cited by examiner]
Georg Dotzler et al.; Move-Optimized Source Code Tree Differencing; ACM; pp. 660-671; retrieved on Feb. 26, 2025 (Year: 2016). [cited by examiner]