In remote execution, when does bazel upload results from the local client? #24659
-
I have a bazel setup with --remote_executor={some address} and with --spawn_strategy=remote, --noremote_upload_local_results, --experimental_dynamic_slow_remote_time=5400s, --remote_timeout=5400s. My remote executor has code which uploads results into its own cache. I sometimes get a java error stack trace that indicates that bazel is trying to upload results from the local box (specifically, it's a failure in the ByteStreamUploader's uploadBlobAsync code). I don't understand quite how I end up in that codepath - I really don't want to! I have other questions about why it's timing out at all after 600s, but that's a bit secondary to my confusion. What should my mental model be for how this works please? Thank you! |
Beta Was this translation helpful? Give feedback.
Replies: 2 comments 5 replies
-
Your setup disables the upload of local action results to the remote cache, but remote execution still requires the inputs of remote actions to be uploaded to the remote cache before they can run. They might be missing from the cache because they're either source files, or outputs of actions that ran locally; in addition, the messages that describe the action to be executed remotely, as well as its input Merkle tree, are also uploaded to the remote cache as blobs. Are you sure that the blob being uploaded is an output of a local action, and not an input of a remote action? They both go through the code path you mention. Do you have the full stack trace leading up to |
Beta Was this translation helpful? Give feedback.
-
Is there a way to control the chunk size of the upload - i.e. how many files it does at once? |
Beta Was this translation helpful? Give feedback.
Your setup disables the upload of local action results to the remote cache, but remote execution still requires the inputs of remote actions to be uploaded to the remote cache before they can run. They might be missing from the cache because they're either source files, or outputs of actions that ran locally; in addition, the messages that describe the action to be executed remotely, as well as its input Merkle tree, are also uploaded to the remote cache as blobs.
Are you sure that the blob being uploaded is an output of a local action, and not an input of a remote action? They both go through the code path you mention. Do you have the full stack trace leading up to
uploadBlobAsync
?