Bugfix: Split large RemoteOutputService gRPC message (https://github.com/bazelbuild/bazel/pull/28758) ### Description Directories with too many output files creates unlimited gRPC messages for the `RemoteOutputService`. Limit the messages to `maxOutboundMessageSize`. ### Motivation Large directory outputs from actions in combination with Remote Output Service gives: ``` ERROR: /code/.../BUILD.bazel:3:16: Action large_directory_ failed: (Exit 34): RESOURCE_EXHAUSTED: grpc: received message larger than max (18681338 vs. 4194304) Target //:large_directory failed to build ``` Example `rules.bzl`: ``` def _large_directory_impl(ctx): output_dir = ctx.actions.declare_directory(ctx.label.name + "_") args = ctx.actions.args() args.add_all([output_dir], expand_directories = False) ctx.actions.run_shell( outputs = [output_dir], command = """ cd $1 for i in $(seq 1 100); do mkdir $i for j in $(seq 1 1000); do echo $i-$j > $i/$j done done """, arguments = [args], execution_requirements = {"supports-path-mapping": "1"}, ) return DefaultInfo(files = depset([output_dir])) large_directory = rule( implementation = _large_directory_impl, ) ``` Example `BUILD.bazel`: ``` load("//:rules.bzl", "large_directory") large_directory( name = "large_directory", ) ``` RELNOTES: None Closes #28758. Closes #24705. PiperOrigin-RevId: 925246636 Change-Id: I1c882a73fb2dc11313de7dd17b5a8d9179736eac
{Fast, Correct} - Choose two
Build and test software of any size, quickly and reliably.
Speed up your builds and tests: Bazel rebuilds only what is necessary. With advanced local and distributed caching, optimized dependency analysis and parallel execution, you get fast and incremental builds.
One tool, multiple languages: Build and test Java, C++, Android, iOS, Go, and a wide variety of other language platforms. Bazel runs on Windows, macOS, and Linux.
Scalable: Bazel helps you scale your organization, codebase, and continuous integration solution. It handles codebases of any size, in multiple repositories or a huge monorepo.
Extensible to your needs: Easily add support for new languages and platforms with Bazel's familiar extension language. Share and re-use language rules written by the growing Bazel community.
To report a security issue, please email security@bazel.build with a description of the issue, the steps you took to create the issue, affected versions, and, if known, mitigations for the issue. Our vulnerability management team will respond within 3 working days of your email. If the issue is confirmed as a vulnerability, we will open a Security Advisory. This project follows a 90 day disclosure timeline.
See CONTRIBUTING.md