about summary refs log tree commit diff
path: root/tvix/store
diff options
context:
space:
mode:
Diffstat (limited to 'tvix/store')
-rw-r--r--tvix/store/src/import.rs12
1 files changed, 7 insertions, 5 deletions
diff --git a/tvix/store/src/import.rs b/tvix/store/src/import.rs
index 6aee2af98f82..e62097ec468d 100644
--- a/tvix/store/src/import.rs
+++ b/tvix/store/src/import.rs
@@ -1,4 +1,4 @@
-use crate::{chunkservice::read_all_and_chunk, proto};
+use crate::{chunkservice::read_all_and_chunk, directoryservice::DirectoryPutter, proto};
 use std::{
     collections::HashMap,
     fmt::Debug,
@@ -57,10 +57,10 @@ impl From<super::Error> for Error {
 //
 // It assumes the caller adds returned nodes to the directories it assembles.
 #[instrument(skip_all, fields(entry.file_type=?&entry.file_type(),entry.path=?entry.path()))]
-fn process_entry<BS: BlobService, CS: ChunkService + std::marker::Sync, DS: DirectoryService>(
+fn process_entry<BS: BlobService, CS: ChunkService + std::marker::Sync, DP: DirectoryPutter>(
     blob_service: &mut BS,
     chunk_service: &mut CS,
-    directory_service: &mut DS,
+    directory_putter: &mut DP,
     entry: &walkdir::DirEntry,
     maybe_directory: Option<proto::Directory>,
 ) -> Result<proto::node::Node, Error> {
@@ -75,7 +75,7 @@ fn process_entry<BS: BlobService, CS: ChunkService + std::marker::Sync, DS: Dire
         let directory_size = directory.size();
 
         // upload this directory
-        directory_service
+        directory_putter
             .put(directory)
             .map_err(|e| Error::UploadDirectoryError(entry.path().to_path_buf(), e))?;
 
@@ -188,6 +188,8 @@ pub fn import_path<
 
     let mut directories: HashMap<PathBuf, proto::Directory> = HashMap::default();
 
+    let mut directory_putter = directory_service.put_multiple_start();
+
     for entry in WalkDir::new(p)
         .follow_links(false)
         .contents_first(true)
@@ -213,7 +215,7 @@ pub fn import_path<
         let node = process_entry(
             blob_service,
             chunk_service,
-            directory_service,
+            &mut directory_putter,
             &entry,
             maybe_directory,
         )?;