bazelbuild / bazelbuild/remote-apis
Remote Asset APIs should support Split/Splice when available
- Dominant language
- Go
- Stars
- 445
- Forks
- 141
- PR merge metrics
- No merged PRs in 30d
Description
The FetchBlob in remote asset apis often involves large archives.
It would be nice if, in addition to the `FetchBlobResponse.blob_digest`, we could have an optional SplitBlobResponse inside
```
message SplitBlobResponse {
repeated Digest chunk_digests = 1;
ChunkingFunction.Value chunking_function = 2;
}
```
when applicable.
Clients that support Split/Splice APIs can then use this list of chunks to download and cache parts of the blob, rather than downloading the entire blob via ByteStream.Read.
This change would save these clients from having to do another round trip of calling SplitBlob rpc
Contributor guide
Research direction
Start by reading the FetchBlobResponse definition and the existing Split/Splice APIs, especially SplitBlobResponse and ByteStream.Read. Determine how an optional chunk list and chunking function fit the remote asset API, then verify that clients can use the returned chunks without a second SplitBlob RPC.
Written by the indexing model from the issue text.
Assessment
- Domain
- api, backend-api-design
- Issue type
- Feature
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Activity status
- Quiet
- Clarity
- Mostly clear
- Newbie friendliness
- 48/100