bazelbuild / bazelbuild/remote-apis
REv3 idea: CAS.ExpandTree()?
- 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
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