diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/buildtool/common/repository_config.hpp | 9 | ||||
-rw-r--r-- | src/buildtool/execution_api/git/git_api.hpp | 3 | ||||
-rw-r--r-- | src/buildtool/file_system/git_cas.cpp | 6 | ||||
-rw-r--r-- | src/buildtool/file_system/git_cas.hpp | 10 |
4 files changed, 19 insertions, 9 deletions
diff --git a/src/buildtool/common/repository_config.hpp b/src/buildtool/common/repository_config.hpp index 7e9ba88f..61eb4b7c 100644 --- a/src/buildtool/common/repository_config.hpp +++ b/src/buildtool/common/repository_config.hpp @@ -82,9 +82,12 @@ class RepositoryConfig { return nullptr; } - [[nodiscard]] auto ReadBlobFromGitCAS(std::string const& hex_id) - const noexcept -> std::optional<std::string> { - return git_cas_ ? git_cas_->ReadObject(hex_id, /*is_hex_id=*/true) + [[nodiscard]] auto ReadBlobFromGitCAS( + std::string const& hex_id, + LogLevel log_failure = LogLevel::Warning) const noexcept + -> std::optional<std::string> { + return git_cas_ ? git_cas_->ReadObject( + hex_id, /*is_hex_id=*/true, log_failure) : std::nullopt; } diff --git a/src/buildtool/execution_api/git/git_api.hpp b/src/buildtool/execution_api/git/git_api.hpp index 64e3bd16..a6ad4196 100644 --- a/src/buildtool/execution_api/git/git_api.hpp +++ b/src/buildtool/execution_api/git/git_api.hpp @@ -323,7 +323,8 @@ class GitApi final : public IExecutionApi { [[nodiscard]] auto IsAvailable(ArtifactDigest const& digest) const noexcept -> bool override { - return repo_config_->ReadBlobFromGitCAS(digest.hash()).has_value(); + return repo_config_->ReadBlobFromGitCAS(digest.hash(), LogLevel::Trace) + .has_value(); } [[nodiscard]] auto IsAvailable(std::vector<ArtifactDigest> const& digests) diff --git a/src/buildtool/file_system/git_cas.cpp b/src/buildtool/file_system/git_cas.cpp index 295b5783..1af1dde2 100644 --- a/src/buildtool/file_system/git_cas.cpp +++ b/src/buildtool/file_system/git_cas.cpp @@ -134,7 +134,9 @@ auto GitCAS::CreateEmpty() noexcept -> GitCASPtr { #endif } -auto GitCAS::ReadObject(std::string const& id, bool is_hex_id) const noexcept +auto GitCAS::ReadObject(std::string const& id, + bool is_hex_id, + LogLevel log_failure) const noexcept -> std::optional<std::string> { #ifdef BOOTSTRAP_BUILD_TOOL return std::nullopt; @@ -150,7 +152,7 @@ auto GitCAS::ReadObject(std::string const& id, bool is_hex_id) const noexcept git_odb_object* obj = nullptr; if (git_odb_read(&obj, odb_.get(), &oid.value()) != 0) { - Logger::Log(LogLevel::Error, + Logger::Log(log_failure, "reading git object {} from database failed with:\n{}", is_hex_id ? id : ToHexString(id), GitLastError()); diff --git a/src/buildtool/file_system/git_cas.hpp b/src/buildtool/file_system/git_cas.hpp index f63fd543..5c5a3f31 100644 --- a/src/buildtool/file_system/git_cas.hpp +++ b/src/buildtool/file_system/git_cas.hpp @@ -63,9 +63,13 @@ class GitCAS { } /// \brief Read object from CAS. - /// \param id The object id. - /// \param is_hex_id Specify whether `id` is hex string or raw. - [[nodiscard]] auto ReadObject(std::string const& id, bool is_hex_id = false) + /// \param id The object id. + /// \param is_hex_id Specify whether `id` is hex string or raw. + /// \param log_failure Log level at which to log failures accessing the + /// object. + [[nodiscard]] auto ReadObject(std::string const& id, + bool is_hex_id = false, + LogLevel log_failure = LogLevel::Warning) const noexcept -> std::optional<std::string>; /// \brief Read object header from CAS. |