diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/buildtool/execution_api/execution_service/cas_utils.cpp | 3 | ||||
-rw-r--r-- | src/buildtool/storage/local_cas.hpp | 4 | ||||
-rw-r--r-- | src/buildtool/storage/local_cas.tpp | 30 |
3 files changed, 10 insertions, 27 deletions
diff --git a/src/buildtool/execution_api/execution_service/cas_utils.cpp b/src/buildtool/execution_api/execution_service/cas_utils.cpp index 3e1f8002..a01cadc6 100644 --- a/src/buildtool/execution_api/execution_service/cas_utils.cpp +++ b/src/buildtool/execution_api/execution_service/cas_utils.cpp @@ -37,7 +37,8 @@ auto CASUtils::EnsureTreeInvariant(bazel_re::Digest const& digest, std::string const& tree_data, Storage const& storage) noexcept -> std::optional<std::string> { - auto error = storage.CAS().CheckTreeInvariant(digest, tree_data); + auto const a_digest = static_cast<ArtifactDigest>(digest); + auto error = storage.CAS().CheckTreeInvariant(a_digest, tree_data); if (error) { return std::move(*error).Message(); } diff --git a/src/buildtool/storage/local_cas.hpp b/src/buildtool/storage/local_cas.hpp index fccd6ea8..6c653009 100644 --- a/src/buildtool/storage/local_cas.hpp +++ b/src/buildtool/storage/local_cas.hpp @@ -208,7 +208,7 @@ class LocalCAS { /// \param tree_digest Digest of the tree to be checked. /// \param tree_data Content of the tree. /// \return An error on fail. - [[nodiscard]] auto CheckTreeInvariant(bazel_re::Digest const& tree_digest, + [[nodiscard]] auto CheckTreeInvariant(ArtifactDigest const& tree_digest, std::string const& tree_data) const noexcept -> std::optional<LargeObjectError>; @@ -343,7 +343,7 @@ class LocalCAS { #else template <bool kDoGlobalUplink> auto LocalCAS<kDoGlobalUplink>::CheckTreeInvariant( - bazel_re::Digest const& tree_digest, + ArtifactDigest const& tree_digest, std::string const& tree_data) const noexcept -> std::optional<LargeObjectError> { return std::nullopt; diff --git a/src/buildtool/storage/local_cas.tpp b/src/buildtool/storage/local_cas.tpp index 221470d7..cf1fd2d2 100644 --- a/src/buildtool/storage/local_cas.tpp +++ b/src/buildtool/storage/local_cas.tpp @@ -22,23 +22,6 @@ #include "src/buildtool/logging/log_level.hpp" #include "src/buildtool/storage/local_cas.hpp" -namespace detail { - -[[nodiscard]] static inline auto CheckDigestConsistency( - bazel_re::Digest const& lhs, - bazel_re::Digest const& rhs) noexcept -> bool { - if (lhs.hash() != rhs.hash()) { - return false; - } - bool const both_known = lhs.size_bytes() != 0 and rhs.size_bytes() != 0; - if (Compatibility::IsCompatible() or both_known) { - return lhs.size_bytes() == rhs.size_bytes(); - } - return true; -} - -} // namespace detail - template <bool kDoGlobalUplink> template <bool kIsLocalGeneration> requires(kIsLocalGeneration) @@ -305,7 +288,7 @@ auto LocalCAS<kDoGlobalUplink>::TrySplice( template <bool kDoGlobalUplink> auto LocalCAS<kDoGlobalUplink>::CheckTreeInvariant( - bazel_re::Digest const& tree_digest, + ArtifactDigest const& tree_digest, std::string const& tree_data) const noexcept -> std::optional<LargeObjectError> { if (Compatibility::IsCompatible()) { @@ -313,11 +296,10 @@ auto LocalCAS<kDoGlobalUplink>::CheckTreeInvariant( } auto skip_symlinks = [](auto const& /*unused*/) { return true; }; - auto const entries = - GitRepo::ReadTreeData(tree_data, - NativeSupport::Unprefix(tree_digest.hash()), - skip_symlinks, - /*is_hex_id=*/true); + auto const entries = GitRepo::ReadTreeData(tree_data, + tree_digest.hash(), + skip_symlinks, + /*is_hex_id=*/true); if (not entries) { return LargeObjectError{ LargeObjectErrorCode::Internal, @@ -386,7 +368,7 @@ auto LocalCAS<kDoGlobalUplink>::Splice(ArtifactDigest const& digest, "could not calculate digest"}}; } - if (not detail::CheckDigestConsistency(*spliced_digest, digest)) { + if (*spliced_digest != digest) { return unexpected{LargeObjectError{ LargeObjectErrorCode::InvalidResult, fmt::format("actual result {} differs from the expected one {}", |