Skip to content

[FeatureRequest] Support ZSTD encoding for HTTP remote cache server #23463

@gdh1995

Description

@gdh1995

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 #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?

#13344
#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.

Metadata

Metadata

Assignees

No one assigned

    Labels

    P3We're not considering working on this, but happy to review a PR. (No assignee)help wantedSomeone outside the Bazel team could own thisteam-Remote-ExecIssues and PRs for the Execution (Remote) teamtype: feature request

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions