bazelbuild / bazelbuild/remote-apis

REv3 idea: CAS.ExpandTree()?

Open
#140 16 comments 0 reactions 0 assignees View on GitHub
Dominant language
Go
Stars
445
Forks
141
PR merge metrics
No merged PRs in 30d

Description

Build systems like Bazel currently treat directory outputs as being opaque. There is no support for addressing individual files contained within.

If Bazel wants to pass on a directory output from one action to another, it currently needs to download a Tree object from the CAS and expand it into individual Directory objects. These then need to be reuploaded into the CAS.

This roundtrip could be avoided by adding a dedicated RPC of the shape:
```proto
rpc ExpandTree(Digest) returns (Digest);
```
In this case, the argument corresponds to the digest of the Tree object. The return value corresponds to the digest of the root directory contained within the Tree object. The call should also bump the TTL on all resulting CAS objects.

Do we consider this to be enough of a problem that it makes sense to add such an RPC?

Contributor guide

Open the contributing guide

Research direction

Read the REv3 API definitions and the CAS Tree/Directory flow described in the issue. Evaluate whether ExpandTree(Digest) avoids the Bazel roundtrip and how the TTL bump should work; done means reaching a maintainer decision on whether to add the RPC and clarifying its semantics.

Written by the indexing model from the issue text.

Assessment

Domain
api, backend-api-design
Issue type
Feature
Difficulty
5/5
Estimated time
Over a week
Activity status
Stale
Clarity
Needs clarification
Newbie friendliness
35/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.