gentle-flower-25372
03/10/2024, 9:20 PMRequest::new -- I was curious if you can help me understand if there is a way to set the max_send_message_length/max_receive_message_length. I just need some hints 🙂gentle-flower-25372
03/10/2024, 9:27 PMgentle-flower-25372
03/10/2024, 9:27 PMbroad-processor-92400
03/10/2024, 9:38 PMgentle-flower-25372
03/10/2024, 9:42 PMgentle-flower-25372
03/10/2024, 9:43 PMgentle-flower-25372
03/10/2024, 9:46 PMgentle-flower-25372
03/10/2024, 9:47 PMbroad-processor-92400
03/10/2024, 9:48 PMI can still helpHm, I'm not sure I can... I can't find if/where tonic manages these limits 😞 https://stackoverflow.com/q/77209989/1256624 references a
max_encoding_message_size function that doesn't seem to exist any more 🤷broad-processor-92400
03/10/2024, 9:51 PMgentle-flower-25372
03/11/2024, 3:05 AMbroad-processor-92400
03/11/2024, 4:52 AMsrc/rust/engine/protos/protos/bazelbuild_remote-apis/build/bazel/remote/execution/v2/remote_execution.proto and similar).
BTW, I haven't been able to find how one gets an instance of tonic::client::Grpc from within Pants to be able to call max_encoding_message_sizebroad-processor-92400
03/11/2024, 4:59 AMActionCacheClient gets that method. I found this by running ./cargo doc --open in the pants repo, and then searching for max_encoding_message_size .gentle-flower-25372
03/11/2024, 2:20 PMcurved-manchester-66006
03/11/2024, 2:48 PMgentle-flower-25372
03/11/2024, 2:49 PMgentle-flower-25372
03/11/2024, 3:54 PM15:52:55.15 [WARN] Failed to write to remote cache (1 occurrences so far): ResourceExhausted: "grpc: trying to send message larger than max (5790600 vs. 4194304)"gentle-flower-25372
03/11/2024, 4:58 PMbroad-processor-92400
03/11/2024, 10:23 PMmax_encoding_message_size on every client and see we can localise the error better?gentle-flower-25372
03/11/2024, 10:24 PMbroad-processor-92400
03/11/2024, 10:25 PMbroad-processor-92400
03/11/2024, 10:25 PMgentle-flower-25372
03/11/2024, 10:32 PMgentle-flower-25372
03/11/2024, 10:33 PMbroad-processor-92400
03/11/2024, 10:34 PMlist_missing_digestsgentle-flower-25372
03/11/2024, 10:34 PMbroad-processor-92400
03/11/2024, 10:34 PMsrc/rust/engine/fs/store/src/lib.rs and src/rust/engine/remote_provider/remote_provider_reapi/src/byte_store.rs are the places of interest. The latter seems to just plop it all in one big request: blob_digests: digests.into_iter().map(|d| d.into()).collect::<Vec<_>>().gentle-flower-25372
03/11/2024, 10:35 PMParameter grpc: Parsing error: --> 114:32
|
114 | option (google.api.http) = { post: "/v2/{instance_name=**}/actions:execute" body: "*" };
| ^---
|
= expected constantgentle-flower-25372
03/11/2024, 10:47 PMgentle-flower-25372
03/11/2024, 10:55 PMbroad-processor-92400
03/11/2024, 11:17 PMgentle-flower-25372
03/11/2024, 11:20 PMgentle-flower-25372
03/11/2024, 11:20 PMgentle-flower-25372
03/11/2024, 11:20 PMbroad-processor-92400
03/11/2024, 11:22 PMbroad-processor-92400
03/11/2024, 11:22 PMgentle-flower-25372
03/11/2024, 11:26 PMbroad-processor-92400
03/11/2024, 11:40 PMsyntax = "proto3";
message Digest {
string hash = 1;
int64 size_bytes = 2;
}
message FindMissingBlobsRequest {
string instance_name = 1;
repeated Digest blob_digests = 2;
}
According to https://www.protobufpal.com, a message like {"blob_digests": [{"hash":"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", "size_bytes": 1000}]} encodes to about 70 bytes (and similarly if the value is repeated), so 180548 potential digests * 70 bytes = 12.05 MiB is an upper limit on the size of the request there. There may be digests that are already available on your local system or files with identical contents (which would result in a repeated digest), so requesting fewer than 180548 to make ~5.5MiB seems plausible.
Plus, there's no part of the code there that indicates a very long list would be broken up.gentle-flower-25372
03/11/2024, 11:51 PMgentle-flower-25372
03/11/2024, 11:54 PMbroad-processor-92400
03/12/2024, 12:00 AMgentle-flower-25372
03/14/2024, 7:44 PMbroad-processor-92400
03/14/2024, 8:32 PMgentle-flower-25372
03/14/2024, 8:39 PMgentle-flower-25372
03/14/2024, 8:50 PMarchive_file instead. I'm still glad I got to the bottom of this; it feels good.gentle-flower-25372
03/14/2024, 9:48 PMgentle-flower-25372
03/15/2024, 2:55 PMdiff --git a/src/rust/engine/remote_provider/remote_provider_reapi/src/byte_store.rs b/src/rust/engine/remote_provider/remote_provider>
index 839ee07d26..e9f7bb6955 100644
--- a/src/rust/engine/remote_provider/remote_provider_reapi/src/byte_store.rs
+++ b/src/rust/engine/remote_provider/remote_provider_reapi/src/byte_store.rs
@@ -92,9 +92,10 @@ impl Provider {
Some((options.timeout, Metric::RemoteStoreRequestTimeouts)),
);
+ let limit = 25 * 1024 * 1024;
let byte_stream_client = Arc::new(ByteStreamClient::new(channel.clone()));
- let cas_client = Arc::new(ContentAddressableStorageClient::new(channel.clone()));
+ let cas_client = Arc::new(ContentAddressableStorageClient::new(channel.clone()).max_decoding_message_size(limit));
let capabilities_client = Arc::new(CapabilitiesClient::new(channel));gentle-flower-25372
03/15/2024, 3:02 PM