Comments (7)
The 1300 individual outputs here is perhaps excessive, but I don't have a stick to enforce/measure it with from the API - I could see several issues here:
- The reaction to generating a larger-than-maxMessageSize message for transport should be more resolute - a throw, with perhaps some fallback (as indicated, turning off some of the inline content).
- All of our 'repeated' entries probably bear some max counts, messages with multiple repeated entries need to be summed into 'total counts' (Directory)
- Anything where the result of fitting things into the maxMessageSize (I think it's 4MiB, but I can set it higher/make it configurable?) means that we could not act on certain requests needs to be switched to stream/chunk.
- It would be really nice if the StatusRuntimeException status for the inbound message size being exceeded in grpc was not 'CANCELLED' and told us what was going wrong here...
@ola-rozenfeld any thoughts here?
from bazel-buildfarm.
I think configuring maxMessageSize will not solve your general problem, which is -- you can't just keep inlining small outputs into ActionResult if there is a large number of such outputs. Instead of capping individual file size, cap the overall inline size. Unfortunately, you can't directly access io.grpc.internal.GrpcUtil.DEFAULT_MAX_MESSAGE_SIZE, but it is indeed 4MB.
API-wise, I think we also have to cap the overall supported number of individual outputs for an action. I would say "let's add a paging option", but that depends on how hard it is for users to formulate actions as having tree outputs instead. If it's hard, then, yeah, we should add paging options.
from bazel-buildfarm.
users to formulate actions as having tree outputs instead
What's a 'tree output'? The (pending 0.10) output_directories population and output fetch?
from bazel-buildfarm.
Yes.
from bazel-buildfarm.
Now that we've got this reducing the overall max size of the inline content, I want to break this out into a couple of tasks to make this only a remote ex API limitation (breaking from using its messages to try to store these results). We will add some testing as well...
from bazel-buildfarm.
@AustinSchuh would you mind letting us know if this is still completely broken for some of these actions? I'll wait for a week, but I think we've gotten down to scales (and inlining is still in flux) that make this work fine for now.
from bazel-buildfarm.
This guy is ancient, and if individual issues associated with size limits (like something we just found with directory hierarchy depth) come up, we can deal with them separately. Closing.
from bazel-buildfarm.
Related Issues (20)
- Are workers in RemoteCasWriter fixed whenever any new storage workers are added afterwards? HOT 2
- ci: windows tests fail very often HOT 2
- image bazelbuild/buildfarm-worker:v2.7.0 fails to start with "libfuse.so.2: cannot open shared object file: No such file or directory" HOT 8
- First GRPC type storage tries to create Fuse Exec FS
- Buildfarm is failing at Bazel@HEAD
- Add an optional filter to limit artifact sizes by Action HOT 4
- Post Local Clean Java Coverage Builds Against Remote K8s Build Farm Result In Invalid Digest Recieved HOT 6
- Diffrence between execution and CAS shard worker HOT 3
- Why does clang work, but llvm-ar not? HOT 4
- rules_oss_audit fails to install dependencies on mac
- Set up OSSF security scorecards
- poisson_distribution_test is failing with BAZEL@HEAD HOT 2
- External dependency of buildfarm fails with bzlmod
- Redis Hot Shard issue due to DispatchMonitor HashMap
- skipLoad looping can exhaust file path length
- Heuristics for controlling putDirectory (linkedInputDirectories) per action
- "./examples.bf-run start" fails HOT 2
- How to obtain remote system information? HOT 1
- Helm instructions did not work for me HOT 3
- Health check does not seem to work on shard-worker when redis is down HOT 10
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from bazel-buildfarm.