[FeatureRequest] Support ZSTD encoding for HTTP remote cache server
#23,463 opened on Aug 29, 2024
Repository metrics
- Stars
- (25,384 stars)
- PR merge metrics
- (Avg merge 22d 20h) (77 merged PRs in 30d)
Description
Description of the feature request:
The common remote-cache server software bazel-remote supports ZSTD encoding on both HTTP and GRPC protocols, and it can even store ZSTD-compressed casblobs and then serve them directly to HTTP clients.
So bazel may also support the Accept-Encoding: zstd HTTP requests (besides gzip), just like what https://github.com/bazelbuild/bazel/pull/14041 has added into GPRC requests.
Which category does this issue belong to?
Remote Execution
What underlying problem are you trying to solve with this feature?
To make HTTP traffic much smaller and also faster.
If a remote-cache server is bazel-remote, Accept-Encoding: zstd will also save the server's CPU and power.
Which operating system are you running Bazel on?
Ubuntu 20.04 LTS (in docker)
What is the output of bazel info release?
release 6.5.0; while master on 2024-08-29 still lacks such feature
If bazel info release returns development version or (@non-git), tell us how you built Bazel.
N/A
What's the output of git remote get-url origin; git rev-parse HEAD ?
Private repos of my work office
Have you found anything relevant by searching the web?
https://github.com/bazelbuild/bazel/issues/13344 https://github.com/bazelbuild/bazel/pull/14041
Any other information, logs, or outputs that you want to share?
src/main/java/com/google/devtools/build/lib/remote/GrpcCacheClient.java has ZSTD-decompression support;
while src/main/java/com/google/devtools/build/lib/remote/http/HttpCacheClient.java uses io.netty.handler.codec.http.HttpContentDecompressor, which only recognizes gzip and deflate as said in https://netty.io/4.0/api/io/netty/handler/codec/http/HttpContentDecompressor.html.