about summary refs log tree commit diff
path: root/tvix/store/src/directoryservice/grpc.rs
diff options
context:
space:
mode:
authorFlorian Klink <flokli@flokli.de>2023-07-19T15·52+0300
committerclbot <clbot@tvl.fyi>2023-07-22T09·03+0000
commit432222f098bfceb033e63e9a63687e35574457f9 (patch)
tree43a5e38cf79827dd63aa2adbd841da6aa62cf1de /tvix/store/src/directoryservice/grpc.rs
parent7971d7d9ff42ed00f6f70121f372dd744f45915b (diff)
feat(tvix/store/proto): use Bytes instead of Vec<u8> r/6439
Makes use of https://github.com/tokio-rs/prost/pull/341, which makes our
bytes field cheaper to clone.

It's a bit annoying to configure due to
https://github.com/hyperium/tonic/issues/908, but the workaround does
get the job done.

Change-Id: I25714600b041bb5432d3adf5859b151e72b12778
Reviewed-on: https://cl.tvl.fyi/c/depot/+/8975
Reviewed-by: raitobezarius <tvl@lahfa.xyz>
Tested-by: BuildkiteCI
Reviewed-by: tazjin <tazjin@tvl.su>
Autosubmit: flokli <flokli@flokli.de>
Diffstat (limited to 'tvix/store/src/directoryservice/grpc.rs')
-rw-r--r--tvix/store/src/directoryservice/grpc.rs11
1 files changed, 6 insertions, 5 deletions
diff --git a/tvix/store/src/directoryservice/grpc.rs b/tvix/store/src/directoryservice/grpc.rs
index e6f34b2bd80c..22805523845d 100644
--- a/tvix/store/src/directoryservice/grpc.rs
+++ b/tvix/store/src/directoryservice/grpc.rs
@@ -91,13 +91,12 @@ impl DirectoryService for GRPCDirectoryService {
     fn get(&self, digest: &B3Digest) -> Result<Option<crate::proto::Directory>, crate::Error> {
         // Get a new handle to the gRPC client, and copy the digest.
         let mut grpc_client = self.grpc_client.clone();
-
-        let digest_as_vec = digest.to_vec();
+        let digest_cpy = digest.clone();
         let task = self.tokio_handle.spawn(async move {
             let mut s = grpc_client
                 .get(proto::GetDirectoryRequest {
                     recursive: false,
-                    by_what: Some(ByWhat::Digest(digest_as_vec)),
+                    by_what: Some(ByWhat::Digest(digest_cpy.into())),
                 })
                 .await?
                 .into_inner();
@@ -160,13 +159,15 @@ impl DirectoryService for GRPCDirectoryService {
     ) -> Box<dyn Iterator<Item = Result<proto::Directory, Error>> + Send> {
         let mut grpc_client = self.grpc_client.clone();
 
-        let root_directory_digest_as_vec = root_directory_digest.to_vec();
+        // clone so we can move it
+        let root_directory_digest_cpy = root_directory_digest.clone();
+
         let task: tokio::task::JoinHandle<Result<Streaming<proto::Directory>, Status>> =
             self.tokio_handle.spawn(async move {
                 let s = grpc_client
                     .get(proto::GetDirectoryRequest {
                         recursive: true,
-                        by_what: Some(ByWhat::Digest(root_directory_digest_as_vec)),
+                        by_what: Some(ByWhat::Digest(root_directory_digest_cpy.into())),
                     })
                     .await?
                     .into_inner();