about summary refs log tree commit diff
path: root/tvix/store/src/bin
diff options
context:
space:
mode:
Diffstat (limited to 'tvix/store/src/bin')
-rw-r--r--tvix/store/src/bin/tvix-store.rs99
1 files changed, 48 insertions, 51 deletions
diff --git a/tvix/store/src/bin/tvix-store.rs b/tvix/store/src/bin/tvix-store.rs
index f0cef0b98174..5b6c98e4ee45 100644
--- a/tvix/store/src/bin/tvix-store.rs
+++ b/tvix/store/src/bin/tvix-store.rs
@@ -191,59 +191,56 @@ async fn main() -> Result<(), Box<dyn std::error::Error>> {
                     let directory_service = directory_service.clone();
                     let path_info_service = path_info_service.clone();
 
-                    let task: tokio::task::JoinHandle<Result<(), io::Error>> =
-                        tokio::task::spawn_blocking(move || {
-                            // Ingest the path into blob and directory service.
-                            let root_node = import::ingest_path(
-                                blob_service.clone(),
-                                directory_service.clone(),
-                                &path,
-                            )
-                            .expect("failed to ingest path");
-
-                            // Ask the PathInfoService for the NAR size and sha256
-                            let (nar_size, nar_sha256) =
-                                path_info_service.calculate_nar(&root_node)?;
-
-                            // TODO: make a path_to_name helper function?
-                            let name = path
-                                .file_name()
-                                .expect("path must not be ..")
-                                .to_str()
-                                .expect("path must be valid unicode");
-
-                            let output_path =
-                                store_path::build_nar_based_store_path(&nar_sha256, name);
-
-                            // assemble a new root_node with a name that is derived from the nar hash.
-                            let root_node =
-                                root_node.rename(output_path.to_string().into_bytes().into());
-
-                            // assemble the [crate::proto::PathInfo] object.
-                            let path_info = PathInfo {
-                                node: Some(tvix_store::proto::Node {
-                                    node: Some(root_node),
-                                }),
-                                // There's no reference scanning on path contents ingested like this.
-                                references: vec![],
-                                narinfo: Some(NarInfo {
-                                    nar_size,
-                                    nar_sha256: nar_sha256.to_vec().into(),
-                                    signatures: vec![],
-                                    reference_names: vec![],
-                                }),
-                            };
-
-                            // put into [PathInfoService], and return the PathInfo that we get back
-                            // from there (it might contain additional signatures).
-                            let path_info = path_info_service.put(path_info)?;
-
-                            print_node(&path_info.node.unwrap().node.unwrap(), &path);
-                            Ok(())
-                        });
+                    let task = tokio::task::spawn_blocking(move || -> io::Result<()> {
+                        // Ingest the path into blob and directory service.
+                        let root_node = import::ingest_path(
+                            blob_service.clone(),
+                            directory_service.clone(),
+                            &path,
+                        )
+                        .expect("failed to ingest path");
+
+                        // Ask the PathInfoService for the NAR size and sha256
+                        let (nar_size, nar_sha256) = path_info_service.calculate_nar(&root_node)?;
+
+                        // TODO: make a path_to_name helper function?
+                        let name = path
+                            .file_name()
+                            .expect("path must not be ..")
+                            .to_str()
+                            .expect("path must be valid unicode");
+
+                        let output_path = store_path::build_nar_based_store_path(&nar_sha256, name);
+
+                        // assemble a new root_node with a name that is derived from the nar hash.
+                        let root_node =
+                            root_node.rename(output_path.to_string().into_bytes().into());
+
+                        // assemble the [crate::proto::PathInfo] object.
+                        let path_info = PathInfo {
+                            node: Some(tvix_store::proto::Node {
+                                node: Some(root_node),
+                            }),
+                            // There's no reference scanning on path contents ingested like this.
+                            references: vec![],
+                            narinfo: Some(NarInfo {
+                                nar_size,
+                                nar_sha256: nar_sha256.to_vec().into(),
+                                signatures: vec![],
+                                reference_names: vec![],
+                            }),
+                        };
+
+                        // put into [PathInfoService], and return the PathInfo that we get back
+                        // from there (it might contain additional signatures).
+                        let path_info = path_info_service.put(path_info)?;
+
+                        print_node(&path_info.node.unwrap().node.unwrap(), &path);
+                        Ok(())
+                    });
                     task
                 })
-                .collect::<Vec<tokio::task::JoinHandle<Result<(), io::Error>>>>();
+                .collect::<Vec<_>>();
 
             try_join_all(tasks).await?;
         }