Skip to content

Commit

Permalink
Parallelize directory digest handling
Browse files Browse the repository at this point in the history
  • Loading branch information
Eric-Arellano committed Nov 9, 2022
1 parent cb94791 commit 9b52ed3
Showing 1 changed file with 17 additions and 11 deletions.
28 changes: 17 additions & 11 deletions src/rust/engine/fs/store/src/lib.rs
Original file line number Diff line number Diff line change
Expand Up @@ -958,17 +958,23 @@ impl Store {
mut file_digests: HashSet<Digest>,
directory_digests: HashSet<DirectoryDigest>,
) -> Result<(), StoreError> {
for dir_digest in directory_digests.into_iter() {
self
.load_digest_trie(dir_digest)
.await?
.walk(SymlinkBehavior::Aware, &mut |_, entry| match entry {
directory::Entry::File(f) => {
file_digests.insert(f.digest());
}
directory::Entry::Symlink(_) | directory::Entry::Directory(_) => (),
});
}
let file_digests_from_directories =
future::try_join_all(directory_digests.into_iter().map(|dir_digest| async move {
let mut maybe_file_digest = None;
self
.load_digest_trie(dir_digest)
.await?
.walk(SymlinkBehavior::Aware, &mut |_, entry| match entry {
directory::Entry::File(f) => {
maybe_file_digest = Some(f.digest());
}
directory::Entry::Symlink(_) | directory::Entry::Directory(_) => (),
});
Ok::<_, StoreError>(maybe_file_digest)
}))
.await?;
file_digests.extend(file_digests_from_directories.into_iter().flatten());

let missing_file_digests = self
.local
.get_missing_digests(EntryType::File, file_digests)
Expand Down

0 comments on commit 9b52ed3

Please sign in to comment.