From 6242ef6fff52116398913a40634a71292616c126 Mon Sep 17 00:00:00 2001 From: Paul Cristian Sarbu Date: Mon, 21 Oct 2024 12:51:08 +0200 Subject: just-mr and SourceTree: Use new Git execution api instance In just-mr: to instantiate the new Git api instance, both storage configs, as well as the compatible storage, need to be passed to the maps. While there, use more explicit naming schemes for the storage and CAS instances used. In serve: also acquire gc locks for the local storages when needed to instantiate the new Git api, which now has access to the CAS. In all these instances we also pass, as needed, the local api, which currently still operates only in native mode. This makes no difference currently, but will ensure less changes needed when the future compatible-aware local api will be used instead. --- src/other_tools/root_maps/root_utils.cpp | 25 +++++++++++++++++-------- 1 file changed, 17 insertions(+), 8 deletions(-) (limited to 'src/other_tools/root_maps/root_utils.cpp') diff --git a/src/other_tools/root_maps/root_utils.cpp b/src/other_tools/root_maps/root_utils.cpp index 9dd7badf..0e61c548 100644 --- a/src/other_tools/root_maps/root_utils.cpp +++ b/src/other_tools/root_maps/root_utils.cpp @@ -20,7 +20,7 @@ #include "src/buildtool/common/artifact_digest_factory.hpp" #include "src/buildtool/common/repository_config.hpp" #include "src/buildtool/crypto/hash_function.hpp" -#include "src/buildtool/execution_api/git/git_api.hpp" +#include "src/buildtool/execution_api/serve/mr_git_api.hpp" #include "src/buildtool/file_system/object_type.hpp" auto CheckServeHasAbsentRoot(ServeApi const& serve, @@ -37,12 +37,17 @@ auto CheckServeHasAbsentRoot(ServeApi const& serve, return std::nullopt; } -auto EnsureAbsentRootOnServe(ServeApi const& serve, - std::string const& tree_id, - std::filesystem::path const& repo_path, - IExecutionApi const* remote_api, - AsyncMapConsumerLoggerPtr const& logger, - bool no_sync_is_fatal) -> bool { +auto EnsureAbsentRootOnServe( + ServeApi const& serve, + std::string const& tree_id, + std::filesystem::path const& repo_path, + gsl::not_null const& native_storage_config, + StorageConfig const* compat_storage_config, + Storage const* compat_storage, + IExecutionApi const* local_api, + IExecutionApi const* remote_api, + AsyncMapConsumerLoggerPtr const& logger, + bool no_sync_is_fatal) -> bool { if (remote_api != nullptr) { // upload tree to remote CAS auto repo = RepositoryConfig{}; @@ -55,7 +60,11 @@ auto EnsureAbsentRootOnServe(ServeApi const& serve, auto const digest = ArtifactDigestFactory::Create( HashFunction::Type::GitSHA1, tree_id, 0, /*is_tree=*/true); - auto git_api = GitApi{&repo}; + auto git_api = MRGitApi{&repo, + native_storage_config, + compat_storage_config, + compat_storage, + local_api}; if (not digest or not git_api.RetrieveToCas( {Artifact::ObjectInfo{.digest = *digest, .type = ObjectType::Tree}}, -- cgit v1.2.3