From 1109e8df28be88ff865231339560b371ebbc4a24 Mon Sep 17 00:00:00 2001 From: Maksim Denisov Date: Tue, 14 Jan 2025 18:08:37 +0100 Subject: TreeStructure: use FileRoot as a result of resolution --- src/buildtool/computed_roots/evaluate.cpp | 20 ++++++-------------- 1 file changed, 6 insertions(+), 14 deletions(-) (limited to 'src') diff --git a/src/buildtool/computed_roots/evaluate.cpp b/src/buildtool/computed_roots/evaluate.cpp index a7898413..52dff542 100644 --- a/src/buildtool/computed_roots/evaluate.cpp +++ b/src/buildtool/computed_roots/evaluate.cpp @@ -381,7 +381,7 @@ void ComputeTreeStructureAndFill( ? substitution_storage_config.value() : *storage_config; - std::optional resolved_hash; + std::optional resolved_root; std::vector known_repositories{native_storage_config.GitRoot()}; if (not ref_root.IsAbsent()) { auto const path_to_git_cas = ref_root.GetGitCasRoot(); @@ -401,7 +401,8 @@ void ComputeTreeStructureAndFill( *digest, known_repositories, native_storage_config, git_lock)) { std::optional const& tree_structure = *from_local; if (tree_structure.has_value()) { - resolved_hash = tree_structure->hash(); + resolved_root = FileRoot::FromGit(native_storage_config.GitRoot(), + tree_structure->hash()); } } else { @@ -410,7 +411,7 @@ void ComputeTreeStructureAndFill( return; } - if (not resolved_hash) { + if (not resolved_root) { std::invoke(*logger, fmt::format("Failed to calculate tree structure for {}", key.ToString()), @@ -418,23 +419,14 @@ void ComputeTreeStructureAndFill( return; } - auto const root_result = - FileRoot::FromGit(native_storage_config.GitRoot(), *resolved_hash); - if (not root_result) { - (*logger)( - fmt::format("Failed to create git root for {}", *resolved_hash), - /*fatal=*/true); - return; - } - { // For setting, we need an exclusive lock; so get one after we // dropped the shared one std::unique_lock setting{*config_lock}; repository_config->SetPrecomputedRoot(PrecomputedRoot{key}, - *root_result); + *resolved_root); } - (*setter)(*std::move(resolved_hash)); + (*setter)(*std::move(resolved_root)->GetTreeHash()); } auto FillRoots( -- cgit v1.2.3