summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/buildtool/common/remote/retry.hpp2
-rw-r--r--src/buildtool/execution_api/execution_service/ac_server.cpp2
-rw-r--r--src/buildtool/execution_api/execution_service/bytestream_server.cpp16
-rw-r--r--src/buildtool/execution_api/execution_service/cas_server.cpp41
-rw-r--r--src/buildtool/execution_api/execution_service/execution_server.cpp30
-rw-r--r--src/buildtool/execution_api/execution_service/operations_server.cpp4
-rw-r--r--src/buildtool/execution_api/remote/bazel/bazel_execution_client.cpp4
-rw-r--r--src/buildtool/serve_api/serve_service/source_tree.cpp668
-rw-r--r--src/buildtool/serve_api/serve_service/target.cpp97
-rw-r--r--src/buildtool/serve_api/serve_service/target_utils.cpp43
10 files changed, 432 insertions, 475 deletions
diff --git a/src/buildtool/common/remote/retry.hpp b/src/buildtool/common/remote/retry.hpp
index 4e1e3492..0f82a48f 100644
--- a/src/buildtool/common/remote/retry.hpp
+++ b/src/buildtool/common/remote/retry.hpp
@@ -61,7 +61,7 @@ template <CallableReturningRetryResponse F>
}
if (fatal) {
if (error_msg) {
- logger.Emit(LogLevel::Error, *error_msg);
+ logger.Emit(LogLevel::Error, "{}", *error_msg);
}
return false;
}
diff --git a/src/buildtool/execution_api/execution_service/ac_server.cpp b/src/buildtool/execution_api/execution_service/ac_server.cpp
index 53000cad..d998bd6d 100644
--- a/src/buildtool/execution_api/execution_service/ac_server.cpp
+++ b/src/buildtool/execution_api/execution_service/ac_server.cpp
@@ -24,7 +24,7 @@ auto ActionCacheServiceImpl::GetActionResult(
const ::bazel_re::GetActionResultRequest* request,
::bazel_re::ActionResult* response) -> ::grpc::Status {
if (auto error_msg = IsAHash(request->action_digest().hash()); error_msg) {
- logger_.Emit(LogLevel::Debug, *error_msg);
+ logger_.Emit(LogLevel::Debug, "{}", *error_msg);
return ::grpc::Status{::grpc::StatusCode::INVALID_ARGUMENT, *error_msg};
}
logger_.Emit(LogLevel::Trace,
diff --git a/src/buildtool/execution_api/execution_service/bytestream_server.cpp b/src/buildtool/execution_api/execution_service/bytestream_server.cpp
index 3433f031..2a4b7e21 100644
--- a/src/buildtool/execution_api/execution_service/bytestream_server.cpp
+++ b/src/buildtool/execution_api/execution_service/bytestream_server.cpp
@@ -52,12 +52,12 @@ auto BytestreamServiceImpl::Read(
auto hash = ParseResourceName(request->resource_name());
if (!hash) {
auto str = fmt::format("could not parse {}", request->resource_name());
- logger_.Emit(LogLevel::Error, str);
+ logger_.Emit(LogLevel::Error, "{}", str);
return ::grpc::Status{::grpc::StatusCode::INVALID_ARGUMENT, str};
}
if (auto error_msg = IsAHash(*hash); error_msg) {
- logger_.Emit(LogLevel::Debug, *error_msg);
+ logger_.Emit(LogLevel::Debug, "{}", *error_msg);
return ::grpc::Status{::grpc::StatusCode::INVALID_ARGUMENT, *error_msg};
}
@@ -81,7 +81,7 @@ auto BytestreamServiceImpl::Read(
}
if (!path) {
auto str = fmt::format("could not find {}", *hash);
- logger_.Emit(LogLevel::Error, str);
+ logger_.Emit(LogLevel::Error, "{}", str);
return ::grpc::Status{::grpc::StatusCode::NOT_FOUND, str};
}
std::ifstream blob{*path};
@@ -113,11 +113,11 @@ auto BytestreamServiceImpl::Write(
auto hash = ParseResourceName(request.resource_name());
if (!hash) {
auto str = fmt::format("could not parse {}", request.resource_name());
- logger_.Emit(LogLevel::Error, str);
+ logger_.Emit(LogLevel::Error, "{}", str);
return ::grpc::Status{::grpc::StatusCode::INVALID_ARGUMENT, str};
}
if (auto error_msg = IsAHash(*hash); error_msg) {
- logger_.Emit(LogLevel::Debug, *error_msg);
+ logger_.Emit(LogLevel::Debug, "{}", *error_msg);
return ::grpc::Status{::grpc::StatusCode::INVALID_ARGUMENT, *error_msg};
}
logger_.Emit(LogLevel::Trace,
@@ -150,7 +150,7 @@ auto BytestreamServiceImpl::Write(
if (NativeSupport::IsTree(*hash)) {
if (not storage_->CAS().StoreTree</*kOwner=*/true>(tmp)) {
auto str = fmt::format("could not store tree {}", *hash);
- logger_.Emit(LogLevel::Error, str);
+ logger_.Emit(LogLevel::Error, "{}", str);
return ::grpc::Status{::grpc::StatusCode::INVALID_ARGUMENT, str};
}
}
@@ -158,7 +158,7 @@ auto BytestreamServiceImpl::Write(
if (not storage_->CAS().StoreBlob</*kOwner=*/true>(
tmp, /*is_executable=*/false)) {
auto str = fmt::format("could not store blob {}", *hash);
- logger_.Emit(LogLevel::Error, str);
+ logger_.Emit(LogLevel::Error, "{}", str);
return ::grpc::Status{::grpc::StatusCode::INVALID_ARGUMENT, str};
}
}
@@ -173,6 +173,6 @@ auto BytestreamServiceImpl::QueryWriteStatus(
::google::bytestream::QueryWriteStatusResponse* /*response*/)
-> ::grpc::Status {
auto const* str = "QueryWriteStatus not implemented";
- logger_.Emit(LogLevel::Error, str);
+ logger_.Emit(LogLevel::Error, "{}", str);
return ::grpc::Status{grpc::StatusCode::UNIMPLEMENTED, str};
}
diff --git a/src/buildtool/execution_api/execution_service/cas_server.cpp b/src/buildtool/execution_api/execution_service/cas_server.cpp
index b9143daa..89597a38 100644
--- a/src/buildtool/execution_api/execution_service/cas_server.cpp
+++ b/src/buildtool/execution_api/execution_service/cas_server.cpp
@@ -109,7 +109,7 @@ auto CASServiceImpl::CheckDigestConsistency(bazel_re::Digest const& ref,
ref.size_bytes(),
computed.size_bytes(),
computed.size_bytes());
- logger_.Emit(LogLevel::Error, str);
+ logger_.Emit(LogLevel::Error, "{}", str);
return str;
}
return std::nullopt;
@@ -132,7 +132,7 @@ auto CASServiceImpl::BatchUpdateBlobs(
if (!IsValidHash(hash)) {
auto const& str =
fmt::format("BatchUpdateBlobs: unsupported digest {}", hash);
- logger_.Emit(LogLevel::Error, str);
+ logger_.Emit(LogLevel::Error, "{}", str);
return ::grpc::Status{grpc::StatusCode::INVALID_ARGUMENT, str};
}
logger_.Emit(LogLevel::Trace, "BatchUpdateBlobs: {}", hash);
@@ -144,7 +144,7 @@ auto CASServiceImpl::BatchUpdateBlobs(
if (auto err = CASUtils::EnsureTreeInvariant(
x.digest(), x.data(), *storage_)) {
auto str = fmt::format("BatchUpdateBlobs: {}", *err);
- logger_.Emit(LogLevel::Error, str);
+ logger_.Emit(LogLevel::Error, "{}", str);
return ::grpc::Status{grpc::StatusCode::FAILED_PRECONDITION,
str};
}
@@ -152,12 +152,12 @@ auto CASServiceImpl::BatchUpdateBlobs(
if (!dgst) {
auto const& str = fmt::format(
"BatchUpdateBlobs: could not upload tree {}", hash);
- logger_.Emit(LogLevel::Error, str);
+ logger_.Emit(LogLevel::Error, "{}", str);
return ::grpc::Status{grpc::StatusCode::INTERNAL, str};
}
if (auto err = CheckDigestConsistency(x.digest(), *dgst)) {
auto str = fmt::format("BatchUpdateBlobs: {}", *err);
- logger_.Emit(LogLevel::Error, str);
+ logger_.Emit(LogLevel::Error, "{}", str);
return ::grpc::Status{grpc::StatusCode::INVALID_ARGUMENT, str};
}
}
@@ -166,12 +166,12 @@ auto CASServiceImpl::BatchUpdateBlobs(
if (!dgst) {
auto const& str = fmt::format(
"BatchUpdateBlobs: could not upload blob {}", hash);
- logger_.Emit(LogLevel::Error, str);
+ logger_.Emit(LogLevel::Error, "{}", str);
return ::grpc::Status{grpc::StatusCode::INTERNAL, str};
}
if (auto err = CheckDigestConsistency(x.digest(), *dgst)) {
auto str = fmt::format("BatchUpdateBlobs: {}", *err);
- logger_.Emit(LogLevel::Error, str);
+ logger_.Emit(LogLevel::Error, "{}", str);
return ::grpc::Status{grpc::StatusCode::INVALID_ARGUMENT, str};
}
}
@@ -186,7 +186,7 @@ auto CASServiceImpl::BatchReadBlobs(
auto lock = GarbageCollector::SharedLock();
if (!lock) {
auto str = fmt::format("BatchReadBlobs: Could not acquire SharedLock");
- logger_.Emit(LogLevel::Error, str);
+ logger_.Emit(LogLevel::Error, "{}", str);
return grpc::Status{grpc::StatusCode::INTERNAL, str};
}
for (auto const& digest : request->digests()) {
@@ -240,7 +240,7 @@ auto CASServiceImpl::SplitBlob(::grpc::ServerContext* /*context*/,
if (not IsValidHash(blob_digest.hash())) {
auto str =
fmt::format("SplitBlob: unsupported digest {}", blob_digest.hash());
- logger_.Emit(LogLevel::Error, str);
+ logger_.Emit(LogLevel::Error, "{}", str);
return ::grpc::Status{grpc::StatusCode::INVALID_ARGUMENT, str};
}
@@ -255,14 +255,13 @@ auto CASServiceImpl::SplitBlob(::grpc::ServerContext* /*context*/,
ChunkingAlgorithm_Value_IDENTITY and
chunking_algorithm != ::bazel_re::ChunkingAlgorithm_Value::
ChunkingAlgorithm_Value_FASTCDC) {
- logger_.Emit(LogLevel::Warning,
- fmt::format("SplitBlob: unsupported chunking algorithm "
- "{}, will use "
- "default implementation {}",
- ChunkingAlgorithmToString(chunking_algorithm),
- ChunkingAlgorithmToString(
- ::bazel_re::ChunkingAlgorithm_Value::
- ChunkingAlgorithm_Value_FASTCDC)));
+ logger_.Emit(
+ LogLevel::Warning,
+ "SplitBlob: unsupported chunking algorithm {}, will use default "
+ "implementation {}",
+ ChunkingAlgorithmToString(chunking_algorithm),
+ ChunkingAlgorithmToString(::bazel_re::ChunkingAlgorithm_Value::
+ ChunkingAlgorithm_Value_FASTCDC));
}
// Acquire garbage collection lock.
@@ -284,7 +283,7 @@ auto CASServiceImpl::SplitBlob(::grpc::ServerContext* /*context*/,
if (std::holds_alternative<grpc::Status>(split_result)) {
auto status = std::get<grpc::Status>(split_result);
auto str = fmt::format("SplitBlob: {}", status.error_message());
- logger_.Emit(LogLevel::Error, str);
+ logger_.Emit(LogLevel::Error, "{}", str);
return ::grpc::Status{status.error_code(), str};
}
@@ -322,7 +321,7 @@ auto CASServiceImpl::SpliceBlob(::grpc::ServerContext* /*context*/,
if (not IsValidHash(blob_digest.hash())) {
auto str = fmt::format("SpliceBlob: unsupported digest {}",
blob_digest.hash());
- logger_.Emit(LogLevel::Error, str);
+ logger_.Emit(LogLevel::Error, "{}", str);
return ::grpc::Status{grpc::StatusCode::INVALID_ARGUMENT, str};
}
@@ -350,13 +349,13 @@ auto CASServiceImpl::SpliceBlob(::grpc::ServerContext* /*context*/,
if (std::holds_alternative<grpc::Status>(splice_result)) {
auto status = std::get<grpc::Status>(splice_result);
auto str = fmt::format("SpliceBlob: {}", status.error_message());
- logger_.Emit(LogLevel::Error, str);
+ logger_.Emit(LogLevel::Error, "{}", str);
return ::grpc::Status{status.error_code(), str};
}
auto digest = std::get<bazel_re::Digest>(splice_result);
if (auto err = CheckDigestConsistency(blob_digest, digest)) {
auto str = fmt::format("SpliceBlob: {}", *err);
- logger_.Emit(LogLevel::Error, str);
+ logger_.Emit(LogLevel::Error, "{}", str);
return ::grpc::Status{grpc::StatusCode::INVALID_ARGUMENT, str};
}
response->mutable_blob_digest()->CopyFrom(digest);
diff --git a/src/buildtool/execution_api/execution_service/execution_server.cpp b/src/buildtool/execution_api/execution_service/execution_server.cpp
index f122da81..c3802ea7 100644
--- a/src/buildtool/execution_api/execution_service/execution_server.cpp
+++ b/src/buildtool/execution_api/execution_service/execution_server.cpp
@@ -42,14 +42,14 @@ auto ExecutionServiceImpl::GetAction(::bazel_re::ExecuteRequest const* request)
std::optional<std::string>> {
// get action description
if (auto error_msg = IsAHash(request->action_digest().hash()); error_msg) {
- logger_.Emit(LogLevel::Error, *error_msg);
+ logger_.Emit(LogLevel::Error, "{}", *error_msg);
return {std::nullopt, *error_msg};
}
auto path = storage_->CAS().BlobPath(request->action_digest(), false);
if (!path) {
auto str = fmt::format("could not retrieve blob {} from cas",
request->action_digest().hash());
- logger_.Emit(LogLevel::Error, str);
+ logger_.Emit(LogLevel::Error, "{}", str);
return {std::nullopt, str};
}
::bazel_re::Action action{};
@@ -58,13 +58,13 @@ auto ExecutionServiceImpl::GetAction(::bazel_re::ExecuteRequest const* request)
if (!action.ParseFromIstream(&f)) {
auto str = fmt::format("failed to parse action from blob {}",
request->action_digest().hash());
- logger_.Emit(LogLevel::Error, str);
+ logger_.Emit(LogLevel::Error, "{}", str);
return {std::nullopt, str};
}
}
if (auto error_msg = IsAHash(action.input_root_digest().hash());
error_msg) {
- logger_.Emit(LogLevel::Error, *error_msg);
+ logger_.Emit(LogLevel::Error, "{}", *error_msg);
return {std::nullopt, *error_msg};
}
path = Compatibility::IsCompatible()
@@ -74,7 +74,7 @@ auto ExecutionServiceImpl::GetAction(::bazel_re::ExecuteRequest const* request)
if (!path) {
auto str = fmt::format("could not retrieve input root {} from cas",
action.input_root_digest().hash());
- logger_.Emit(LogLevel::Error, str);
+ logger_.Emit(LogLevel::Error, "{}", str);
return {std::nullopt, str};
}
return {std::move(action), std::nullopt};
@@ -84,14 +84,14 @@ auto ExecutionServiceImpl::GetCommand(::bazel_re::Action const& action)
const noexcept -> std::pair<std::optional<::bazel_re::Command>,
std::optional<std::string>> {
if (auto error_msg = IsAHash(action.command_digest().hash()); error_msg) {
- logger_.Emit(LogLevel::Error, *error_msg);
+ logger_.Emit(LogLevel::Error, "{}", *error_msg);
return {std::nullopt, *error_msg};
}
auto path = storage_->CAS().BlobPath(action.command_digest(), false);
if (!path) {
auto str = fmt::format("could not retrieve blob {} from cas",
action.command_digest().hash());
- logger_.Emit(LogLevel::Error, str);
+ logger_.Emit(LogLevel::Error, "{}", str);
return {std::nullopt, str};
}
@@ -101,7 +101,7 @@ auto ExecutionServiceImpl::GetCommand(::bazel_re::Action const& action)
if (!c.ParseFromIstream(&f)) {
auto str = fmt::format("failed to parse command from blob {}",
action.command_digest().hash());
- logger_.Emit(LogLevel::Error, str);
+ logger_.Emit(LogLevel::Error, "{}", str);
return {std::nullopt, str};
}
}
@@ -143,7 +143,7 @@ auto ExecutionServiceImpl::GetIExecutionAction(
if (!i_execution_action) {
auto str = fmt::format("could not create action from {}",
request->action_digest().hash());
- logger_.Emit(LogLevel::Error, str);
+ logger_.Emit(LogLevel::Error, "{}", str);
return {std::nullopt, str};
}
i_execution_action->SetCacheFlag(
@@ -357,7 +357,7 @@ auto ExecutionServiceImpl::AddResult(
if (not AddOutputPaths(response, i_execution_response, *storage_)) {
auto str = fmt::format("Error in creating output paths of action {}",
action_hash);
- logger_.Emit(LogLevel::Error, str);
+ logger_.Emit(LogLevel::Error, "{}", str);
return std::nullopt;
}
auto* result = response->mutable_result();
@@ -368,7 +368,7 @@ auto ExecutionServiceImpl::AddResult(
if (!dgst) {
auto str =
fmt::format("Could not store stderr of action {}", action_hash);
- logger_.Emit(LogLevel::Error, str);
+ logger_.Emit(LogLevel::Error, "{}", str);
return str;
}
result->mutable_stderr_digest()->CopyFrom(*dgst);
@@ -379,7 +379,7 @@ auto ExecutionServiceImpl::AddResult(
if (!dgst) {
auto str =
fmt::format("Could not store stdout of action {}", action_hash);
- logger_.Emit(LogLevel::Error, str);
+ logger_.Emit(LogLevel::Error, "{}", str);
return str;
}
result->mutable_stdout_digest()->CopyFrom(*dgst);
@@ -422,7 +422,7 @@ auto ExecutionServiceImpl::StoreActionResult(
execute_response.result())) {
auto str = fmt::format("Could not store action result for action {}",
request->action_digest().hash());
- logger_.Emit(LogLevel::Error, str);
+ logger_.Emit(LogLevel::Error, "{}", str);
return str;
}
return std::nullopt;
@@ -501,7 +501,7 @@ auto ExecutionServiceImpl::WaitExecution(
-> ::grpc::Status {
auto const& hash = request->name();
if (auto error_msg = IsAHash(hash); error_msg) {
- logger_.Emit(LogLevel::Error, *error_msg);
+ logger_.Emit(LogLevel::Error, "{}", *error_msg);
return ::grpc::Status{::grpc::StatusCode::INVALID_ARGUMENT, *error_msg};
}
logger_.Emit(LogLevel::Trace, "WaitExecution: {}", hash);
@@ -511,7 +511,7 @@ auto ExecutionServiceImpl::WaitExecution(
if (!op) {
auto const& str = fmt::format(
"Executing action {} not found in internal cache.", hash);
- logger_.Emit(LogLevel::Error, str);
+ logger_.Emit(LogLevel::Error, "{}", str);
return ::grpc::Status{grpc::StatusCode::INTERNAL, str};
}
std::this_thread::sleep_for(std::chrono::seconds(1));
diff --git a/src/buildtool/execution_api/execution_service/operations_server.cpp b/src/buildtool/execution_api/execution_service/operations_server.cpp
index 13a8efd6..6e082bf4 100644
--- a/src/buildtool/execution_api/execution_service/operations_server.cpp
+++ b/src/buildtool/execution_api/execution_service/operations_server.cpp
@@ -24,7 +24,7 @@ auto OperarationsServiceImpl::GetOperation(
::google::longrunning::Operation* response) -> ::grpc::Status {
auto const& hash = request->name();
if (auto error_msg = IsAHash(hash); error_msg) {
- logger_.Emit(LogLevel::Debug, *error_msg);
+ logger_.Emit(LogLevel::Debug, "{}", *error_msg);
return ::grpc::Status{::grpc::StatusCode::INVALID_ARGUMENT, *error_msg};
}
logger_.Emit(LogLevel::Trace, "GetOperation: {}", hash);
@@ -33,7 +33,7 @@ auto OperarationsServiceImpl::GetOperation(
if (!op) {
auto const& str = fmt::format(
"Executing action {} not found in internal cache.", hash);
- logger_.Emit(LogLevel::Error, str);
+ logger_.Emit(LogLevel::Error, "{}", str);
return ::grpc::Status{grpc::StatusCode::INTERNAL, str};
}
response->CopyFrom(*op);
diff --git a/src/buildtool/execution_api/remote/bazel/bazel_execution_client.cpp b/src/buildtool/execution_api/remote/bazel/bazel_execution_client.cpp
index 7ae20693..323b7dc4 100644
--- a/src/buildtool/execution_api/remote/bazel/bazel_execution_client.cpp
+++ b/src/buildtool/execution_api/remote/bazel/bazel_execution_client.cpp
@@ -38,8 +38,8 @@ void LogExecutionStatus(gsl::not_null<Logger const*> const& logger,
// (and the server does not support a queue), the action could not
// be started. The client should retry.
logger->Emit(LogLevel::Debug,
- fmt::format("Execution could not be started.\n{}",
- s.ShortDebugString()));
+ "Execution could not be started.\n{}",
+ s.ShortDebugString());
break;
default:
// fallback to default status logging
diff --git a/src/buildtool/serve_api/serve_service/source_tree.cpp b/src/buildtool/serve_api/serve_service/source_tree.cpp
index e1e8ae57..c152773f 100644
--- a/src/buildtool/serve_api/serve_service/source_tree.cpp
+++ b/src/buildtool/serve_api/serve_service/source_tree.cpp
@@ -109,14 +109,13 @@ auto SourceTreeService::GetSubtreeFromCommit(
[logger, repo_path, commit, subdir](auto const& msg,
bool fatal) {
if (fatal) {
- auto err = fmt::format(
- "While retrieving subtree {} of commit {} from "
- "repository {}:\n{}",
- subdir,
- commit,
- repo_path.string(),
- msg);
- logger->Emit(LogLevel::Debug, err);
+ logger->Emit(LogLevel::Debug,
+ "While retrieving subtree {} of commit {} "
+ "from repository {}:\n{}",
+ subdir,
+ commit,
+ repo_path.string(),
+ msg);
}
});
return repo->GetSubtreeFromCommit(commit, subdir, wrapped_logger);
@@ -137,14 +136,13 @@ auto SourceTreeService::GetSubtreeFromTree(
[logger, repo_path, tree_id, subdir](auto const& msg,
bool fatal) {
if (fatal) {
- auto err = fmt::format(
- "While retrieving subtree {} of tree {} from "
- "repository {}:\n{}",
- subdir,
- tree_id,
- repo_path.string(),
- msg);
- logger->Emit(LogLevel::Debug, err);
+ logger->Emit(LogLevel::Debug,
+ "While retrieving subtree {} of tree {} "
+ "from repository {}:\n{}",
+ subdir,
+ tree_id,
+ repo_path.string(),
+ msg);
}
});
if (auto subtree_id =
@@ -167,13 +165,12 @@ auto SourceTreeService::GetBlobFromRepo(std::filesystem::path const& repo_path,
auto wrapped_logger = std::make_shared<GitRepo::anon_logger_t>(
[logger, repo_path, blob_id](auto const& msg, bool fatal) {
if (fatal) {
- auto err = fmt::format(
- "While checking existence of blob {} in repository "
- "{}:\n{}",
- blob_id,
- repo_path.string(),
- msg);
- logger->Emit(LogLevel::Debug, err);
+ logger->Emit(LogLevel::Debug,
+ "While checking existence of blob {} in "
+ "repository {}:\n{}",
+ blob_id,
+ repo_path.string(),
+ msg);
}
});
auto res = repo->TryReadBlob(blob_id, wrapped_logger);
@@ -181,10 +178,10 @@ auto SourceTreeService::GetBlobFromRepo(std::filesystem::path const& repo_path,
return true; // fatal failure
}
if (not res.second) {
- auto str = fmt::format("Blob {} not found in repository {}",
- blob_id,
- repo_path.string());
- logger->Emit(LogLevel::Debug, str);
+ logger->Emit(LogLevel::Debug,
+ "Blob {} not found in repository {}",
+ blob_id,
+ repo_path.string());
return false; // non-fatal failure
}
return res.second.value();
@@ -192,8 +189,7 @@ auto SourceTreeService::GetBlobFromRepo(std::filesystem::path const& repo_path,
}
// failed to open repository
logger->Emit(
- LogLevel::Debug,
- fmt::format("Failed to open repository {}", repo_path.string()));
+ LogLevel::Debug, "Failed to open repository {}", repo_path.string());
return true; // fatal failure
}
@@ -211,11 +207,10 @@ auto SourceTreeService::ServeCommitTree(
if (request->sync_tree()) {
// sync tree with remote CAS; only possible in native mode
if (Compatibility::IsCompatible()) {
- auto str = fmt::format(
- "Cannot sync tree {} from local Git cache with the remote "
- "in compatible mode",
- tree_id);
- logger_->Emit(LogLevel::Error, str);
+ logger_->Emit(LogLevel::Error,
+ "Cannot sync tree {} from local Git cache with "
+ "the remote in compatible mode",
+ tree_id);
*(response->mutable_tree()) = std::move(tree_id);
response->set_status(ServeCommitTreeResponse::SYNC_ERROR);
return ::grpc::Status::OK;
@@ -223,9 +218,9 @@ auto SourceTreeService::ServeCommitTree(
auto digest = ArtifactDigest{tree_id, 0, /*is_tree=*/true};
auto repo = RepositoryConfig{};
if (not repo.SetGitCAS(StorageConfig::GitRoot())) {
- auto str = fmt::format("Failed to SetGitCAS at {}",
- StorageConfig::GitRoot().string());
- logger_->Emit(LogLevel::Error, str);
+ logger_->Emit(LogLevel::Error,
+ "Failed to SetGitCAS at {}",
+ StorageConfig::GitRoot().string());
response->set_status(ServeCommitTreeResponse::INTERNAL_ERROR);
return ::grpc::Status::OK;
}
@@ -234,9 +229,9 @@ auto SourceTreeService::ServeCommitTree(
{Artifact::ObjectInfo{.digest = digest,
.type = ObjectType::Tree}},
&(*remote_api_))) {
- auto str = fmt::format(
- "Failed to sync tree {} from local Git cache", tree_id);
- logger_->Emit(LogLevel::Error, str);
+ logger_->Emit(LogLevel::Error,
+ "Failed to sync tree {} from local Git cache",
+ tree_id);
*(response->mutable_tree()) = std::move(tree_id);
response->set_status(ServeCommitTreeResponse::SYNC_ERROR);
return ::grpc::Status::OK;
@@ -249,13 +244,12 @@ auto SourceTreeService::ServeCommitTree(
}
// report fatal failure
if (std::get<bool>(res)) {
- auto str = fmt::format(
- "Failed while retrieving subtree {} of commit {} from repository "
- "{}",
- subdir,
- commit,
- StorageConfig::GitRoot().string());
- logger_->Emit(LogLevel::Error, str);
+ logger_->Emit(LogLevel::Error,
+ "Failed while retrieving subtree {} of commit {} from "
+ "repository {}",
+ subdir,
+ commit,
+ StorageConfig::GitRoot().string());
response->set_status(ServeCommitTreeResponse::INTERNAL_ERROR);
return ::grpc::Status::OK;
}
@@ -267,12 +261,11 @@ auto SourceTreeService::ServeCommitTree(
if (request->sync_tree()) {
// sync tree with remote CAS; only possible in native mode
if (Compatibility::IsCompatible()) {
- auto str = fmt::format(
- "Cannot sync tree {} from known repository {} with the "
- "remote in compatible mode",
- tree_id,
- path.string());
- logger_->Emit(LogLevel::Error, str);
+ logger_->Emit(LogLevel::Error,
+ "Cannot sync tree {} from known repository "
+ "{} with the remote in compatible mode",
+ tree_id,
+ path.string());
*(response->mutable_tree()) = std::move(tree_id);
response->set_status(ServeCommitTreeResponse::SYNC_ERROR);
return ::grpc::Status::OK;
@@ -280,9 +273,9 @@ auto SourceTreeService::ServeCommitTree(
auto digest = ArtifactDigest{tree_id, 0, /*is_tree=*/true};
auto repo = RepositoryConfig{};
if (not repo.SetGitCAS(path)) {
- auto str =
- fmt::format("Failed to SetGitCAS at {}", path.string());
- logger_->Emit(LogLevel::Error, str);
+ logger_->Emit(LogLevel::Error,
+ "Failed to SetGitCAS at {}",
+ path.string());
response->set_status(
ServeCommitTreeResponse::INTERNAL_ERROR);
return ::grpc::Status::OK;
@@ -292,11 +285,11 @@ auto SourceTreeService::ServeCommitTree(
{Artifact::ObjectInfo{.digest = digest,
.type = ObjectType::Tree}},
&(*remote_api_))) {
- auto str = fmt::format(
+ logger_->Emit(
+ LogLevel::Error,
"Failed to sync tree {} from known repository {}",
tree_id,
path.string());
- logger_->Emit(LogLevel::Error, str);
*(response->mutable_tree()) = std::move(tree_id);
response->set_status(ServeCommitTreeResponse::SYNC_ERROR);
return ::grpc::Status::OK;
@@ -309,13 +302,12 @@ auto SourceTreeService::ServeCommitTree(
}
// report fatal failure
if (std::get<bool>(res)) {
- auto str = fmt::format(
- "Failed while retrieving subtree {} of commit {} from "
- "repository {}",
- subdir,
- commit,
- path.string());
- logger_->Emit(LogLevel::Error, str);
+ logger_->Emit(LogLevel::Error,
+ "Failed while retrieving subtree {} of commit {} "
+ "from repository {}",
+ subdir,
+ commit,
+ path.string());
response->set_status(ServeCommitTreeResponse::INTERNAL_ERROR);
return ::grpc::Status::OK;
}
@@ -333,12 +325,11 @@ auto SourceTreeService::SyncArchive(std::string const& tree_id,
if (sync_tree) {
// sync tree with remote CAS; only possible in native mode
if (Compatibility::IsCompatible()) {
- auto str = fmt::format(
- "Cannot sync tree {} from known repository {} with the remote "
- "in compatible mode",
- tree_id,
- repo_path.string());
- logger_->Emit(LogLevel::Error, str);
+ logger_->Emit(LogLevel::Error,
+ "Cannot sync tree {} from known repository {} with "
+ "the remote in compatible mode",
+ tree_id,
+ repo_path.string());
*(response->mutable_tree()) = tree_id;
response->set_status(ServeArchiveTreeResponse::SYNC_ERROR);
return ::grpc::Status::OK;
@@ -346,9 +337,9 @@ auto SourceTreeService::SyncArchive(std::string const& tree_id,
auto digest = ArtifactDigest{tree_id, 0, /*is_tree=*/true};
auto repo = RepositoryConfig{};
if (not repo.SetGitCAS(repo_path)) {
- auto str =
- fmt::format("Failed to SetGitCAS at {}", repo_path.string());
- logger_->Emit(LogLevel::Error, str);
+ logger_->Emit(LogLevel::Error,
+ "Failed to SetGitCAS at {}",
+ repo_path.string());
response->set_status(ServeArchiveTreeResponse::INTERNAL_ERROR);
return ::grpc::Status::OK;
}
@@ -357,10 +348,10 @@ auto SourceTreeService::SyncArchive(std::string const& tree_id,
{Artifact::ObjectInfo{.digest = digest,
.type = ObjectType::Tree}},
&(*remote_api_))) {
- auto str = fmt::format("Failed to sync tree {} from repository {}",
- tree_id,
- repo_path.string());
- logger_->Emit(LogLevel::Error, str);
+ logger_->Emit(LogLevel::Error,
+ "Failed to sync tree {} from repository {}",
+ tree_id,
+ repo_path.string());
*(response->mutable_tree()) = tree_id;
response->set_status(ServeArchiveTreeResponse::SYNC_ERROR);
return ::grpc::Status::OK;
@@ -387,10 +378,9 @@ auto SourceTreeService::ResolveContentTree(
// read resolved tree id
auto resolved_tree_id = FileSystemManager::ReadFile(tree_id_file);
if (not resolved_tree_id) {
- auto str =
- fmt::format("Failed to read resolved tree id from file {}",
- tree_id_file.string());
- logger_->Emit(LogLevel::Error, str);
+ logger_->Emit(LogLevel::Error,
+ "Failed to read resolved tree id from file {}",
+ tree_id_file.string());
response->set_status(ServeArchiveTreeResponse::INTERNAL_ERROR);
return ::grpc::Status::OK;
}
@@ -400,9 +390,9 @@ auto SourceTreeService::ResolveContentTree(
// resolve tree; target repository is always the Git cache
auto target_cas = GitCAS::Open(StorageConfig::GitRoot());
if (not target_cas) {
- auto str = fmt::format("Failed to open Git ODB at {}",
- StorageConfig::GitRoot().string());
- logger_->Emit(LogLevel::Error, str);
+ logger_->Emit(LogLevel::Error,
+ "Failed to open Git ODB at {}",
+ StorageConfig::GitRoot().string());
response->set_status(ServeArchiveTreeResponse::INTERNAL_ERROR);
return ::grpc::Status::OK;
}
@@ -410,9 +400,9 @@ auto SourceTreeService::ResolveContentTree(
if (not repo_is_git_cache) {
source_cas = GitCAS::Open(repo_path);
if (not source_cas) {
- auto str = fmt::format("Failed to open Git ODB at {}",
- repo_path.string());
- logger_->Emit(LogLevel::Error, str);
+ logger_->Emit(LogLevel::Error,
+ "Failed to open Git ODB at {}",
+ repo_path.string());
response->set_status(ServeArchiveTreeResponse::INTERNAL_ERROR);
return ::grpc::Status::OK;
}
@@ -440,8 +430,8 @@ auto SourceTreeService::ResolveContentTree(
});
}
if (failed) {
- auto str = fmt::format("Failed to resolve tree id {}", tree_id);
- logger_->Emit(LogLevel::Error, str);
+ logger_->Emit(
+ LogLevel::Error, "Failed to resolve tree id {}", tree_id);
response->set_status(ServeArchiveTreeResponse::RESOLVE_ERROR);
return ::grpc::Status::OK;
}
@@ -450,9 +440,10 @@ auto SourceTreeService::ResolveContentTree(
fmt::format("resolving Git tree {}", tree_id),
resolve_symlinks_map_,
kGitObjectToResolvePrinter)) {
- auto str = fmt::format(
- "Failed to resolve symlinks in tree {}:\n{}", tree_id, *error);
- logger_->Emit(LogLevel::Error, str);
+ logger_->Emit(LogLevel::Error,
+ "Failed to resolve symlinks in tree {}:\n{}",
+ tree_id,
+ *error);
response->set_status(ServeArchiveTreeResponse::RESOLVE_ERROR);
return ::grpc::Status::OK;
}
@@ -461,11 +452,10 @@ auto SourceTreeService::ResolveContentTree(
[logger = logger_, resolved_tree](auto const& msg, bool fatal) {
if (fatal) {
logger->Emit(LogLevel::Error,
- fmt::format("While keeping tree {} in "
- "repository {}:\n{}",
- resolved_tree.id,
- StorageConfig::GitRoot().string(),
- msg));
+ "While keeping tree {} in repository {}:\n{}",
+ resolved_tree.id,
+ StorageConfig::GitRoot().string(),
+ msg);
}
});
{
@@ -474,9 +464,9 @@ auto SourceTreeService::ResolveContentTree(
// open real repository at Git CAS location
auto git_repo = GitRepo::Open(StorageConfig::GitRoot());
if (not git_repo) {
- auto str = fmt::format("Failed to open Git CAS repository {}",
- StorageConfig::GitRoot().string());
- logger_->Emit(LogLevel::Error, str);
+ logger_->Emit(LogLevel::Error,
+ "Failed to open Git CAS repository {}",
+ StorageConfig::GitRoot().string());
response->set_status(ServeArchiveTreeResponse::RESOLVE_ERROR);
return ::grpc::Status::OK;
}
@@ -490,10 +480,9 @@ auto SourceTreeService::ResolveContentTree(
}
// cache the resolved tree association
if (not StorageUtils::WriteTreeIDFile(tree_id_file, resolved_tree.id)) {
- auto str =
- fmt::format("Failed to write resolved tree id to file {}",
- tree_id_file.string());
- logger_->Emit(LogLevel::Error, str);
+ logger_->Emit(LogLevel::Error,
+ "Failed to write resolved tree id to file {}",
+ tree_id_file.string());
response->set_status(ServeArchiveTreeResponse::RESOLVE_ERROR);
return ::grpc::Status::OK;
}
@@ -628,33 +617,33 @@ auto SourceTreeService::ArchiveImportToGit(
auto res = CommonImportToGit(unpack_path, commit_message);
if (res.index() == 0) {
// report the error
- logger_->Emit(LogLevel::Error, std::get<0>(res));
+ logger_->Emit(LogLevel::Error, "{}", std::get<0>(res));
response->set_status(ServeArchiveTreeResponse::INTERNAL_ERROR);
return ::grpc::Status::OK;
}
auto const& tree_id = std::get<1>(res);
// write to tree id file
if (not StorageUtils::WriteTreeIDFile(archive_tree_id_file, tree_id)) {
- auto str = fmt::format("Failed to write tree id to file {}",
- archive_tree_id_file.string());
- logger_->Emit(LogLevel::Error, str);
+ logger_->Emit(LogLevel::Error,
+ "Failed to write tree id to file {}",
+ archive_tree_id_file.string());
response->set_status(ServeArchiveTreeResponse::INTERNAL_ERROR);
return ::grpc::Status::OK;
}
// open the Git CAS repo
auto just_git_cas = GitCAS::Open(StorageConfig::GitRoot());
if (not just_git_cas) {
- auto str = fmt::format("Failed to open Git ODB at {}",
- StorageConfig::GitRoot().string());
- logger_->Emit(LogLevel::Error, str);
+ logger_->Emit(LogLevel::Error,
+ "Failed to open Git ODB at {}",
+ StorageConfig::GitRoot().string());
response->set_status(ServeArchiveTreeResponse::INTERNAL_ERROR);
return ::grpc::Status::OK;
}
auto just_git_repo = GitRepo::Open(just_git_cas);
if (not just_git_repo) {
- auto str = fmt::format("Failed to open Git repository {}",
- StorageConfig::GitRoot().string());
- logger_->Emit(LogLevel::Error, str);
+ logger_->Emit(LogLevel::Error,
+ "Failed to open Git repository {}",
+ StorageConfig::GitRoot().string());
response->set_status(ServeArchiveTreeResponse::INTERNAL_ERROR);
return ::grpc::Status::OK;
}
@@ -673,7 +662,7 @@ auto SourceTreeService::ArchiveImportToGit(
auto subtree_id =
just_git_repo->GetSubtreeFromTree(tree_id, subdir, wrapped_logger);
if (not subtree_id) {
- logger_->Emit(LogLevel::Error, err);
+ logger_->Emit(LogLevel::Error, "{}", err);
response->set_status(ServeArchiveTreeResponse::INTERNAL_ERROR);
return ::grpc::Status::OK;
}
@@ -695,13 +684,12 @@ auto SourceTreeService::IsTreeInRepo(std::string const& tree_id,
auto wrapped_logger = std::make_shared<GitRepo::anon_logger_t>(
[logger, repo_path, tree_id](auto const& msg, bool fatal) {
if (fatal) {
- auto err = fmt::format(
- "While checking existence of tree {} in repository "
- "{}:\n{}",
- tree_id,
- repo_path.string(),
- msg);
- logger->Emit(LogLevel::Debug, err);
+ logger->Emit(LogLevel::Debug,
+ "While checking existence of tree {} in "
+ "repository {}:\n{}",
+ tree_id,
+ repo_path.string(),
+ msg);
}
});
return repo->CheckTreeExists(tree_id, wrapped_logger);
@@ -709,8 +697,7 @@ auto SourceTreeService::IsTreeInRepo(std::string const& tree_id,
}
// failed to open repository
logger->Emit(
- LogLevel::Debug,
- fmt::format("Failed to open repository {}", repo_path.string()));
+ LogLevel::Debug, "Failed to open repository {}", repo_path.string());
return std::nullopt;
}
@@ -732,9 +719,9 @@ auto SourceTreeService::ServeArchiveTree(
auto archive_tree_id =
FileSystemManager::ReadFile(archive_tree_id_file);
if (not archive_tree_id) {
- auto str = fmt::format("Failed to read tree id from file {}",
- archive_tree_id_file.string());
- logger_->Emit(LogLevel::Error, str);
+ logger_->Emit(LogLevel::Error,
+ "Failed to read tree id from file {}",
+ archive_tree_id_file.string());
response->set_status(ServeArchiveTreeResponse::INTERNAL_ERROR);
return ::grpc::Status::OK;
}
@@ -751,9 +738,9 @@ auto SourceTreeService::ServeArchiveTree(
}
// check for fatal error
if (std::get<bool>(res)) {
- auto str = fmt::format("Failed to open repository {}",
- StorageConfig::GitRoot().string());
- logger_->Emit(LogLevel::Error, str);
+ logger_->Emit(LogLevel::Error,
+ "Failed to open repository {}",
+ StorageConfig::GitRoot().string());
response->set_status(ServeArchiveTreeResponse::INTERNAL_ERROR);
return ::grpc::Status::OK;
}
@@ -772,27 +759,25 @@ auto SourceTreeService::ServeArchiveTree(
}
// check for fatal error
if (std::get<bool>(res)) {
- auto str =
- fmt::format("Failed to open repository {}", path.string());
- logger_->Emit(LogLevel::Error, str);
+ logger_->Emit(LogLevel::Error,
+ "Failed to open repository {}",
+ path.string());
response->set_status(ServeArchiveTreeResponse::INTERNAL_ERROR);
return ::grpc::Status::OK;
}
}
// report error for missing tree specified in id file
- auto str =
- fmt::format("Failed while retrieving subtree {} of known tree {}",
- subdir,
- *archive_tree_id);
- logger_->Emit(LogLevel::Error, str);
+ logger_->Emit(LogLevel::Error,
+ "Failed while retrieving subtree {} of known tree {}",
+ subdir,
+ *archive_tree_id);
response->set_status(ServeArchiveTreeResponse::INTERNAL_ERROR);
return ::grpc::Status::OK;
}
// acquire lock for CAS
auto lock = GarbageCollector::SharedLock();
if (!lock) {
- auto str = fmt::format("Could not acquire gc SharedLock");
- logger_->Emit(LogLevel::Error, str);
+ logger_->Emit(LogLevel::Error, "Could not acquire gc SharedLock");
response->set_status(ServeArchiveTreeResponse::INTERNAL_ERROR);
return ::grpc::Status::OK;
}
@@ -810,11 +795,11 @@ auto SourceTreeService::ServeArchiveTree(
StorageUtils::AddToCAS(std::get<std::string>(res));
}
if (std::get<bool>(res)) {
- auto str = fmt::format(
+ logger_->Emit(
+ LogLevel::Error,
"Failed while trying to retrieve content {} from repository {}",
content,
StorageConfig::GitRoot().string());
- logger_->Emit(LogLevel::Error, str);
response->set_status(ServeArchiveTreeResponse::INTERNAL_ERROR);
return ::grpc::Status::OK;
}
@@ -832,12 +817,11 @@ auto SourceTreeService::ServeArchiveTree(
}
}
if (std::get<bool>(res)) {
- auto str = fmt::format(
- "Failed while trying to retrieve content {} from "
- "repository {}",
- content,
- path.string());
- logger_->Emit(LogLevel::Error, str);
+ logger_->Emit(LogLevel::Error,
+ "Failed while trying to retrieve content {} from "
+ "repository {}",
+ content,
+ path.string());
response->set_status(ServeArchiveTreeResponse::INTERNAL_ERROR);
return ::grpc::Status::OK;
}
@@ -857,9 +841,9 @@ auto SourceTreeService::ServeArchiveTree(
// content should now be in CAS
content_cas_path = cas.BlobPath(digest, /*is_executable=*/false);
if (not content_cas_path) {
- auto str = fmt::format(
- "Retrieving content {} from CAS failed unexpectedly", content);
- logger_->Emit(LogLevel::Error, str);
+ logger_->Emit(LogLevel::Error,
+ "Retrieving content {} from CAS failed unexpectedly",
+ content);
response->set_status(ServeArchiveTreeResponse::INTERNAL_ERROR);
return ::grpc::Status::OK;
}
@@ -867,21 +851,21 @@ auto SourceTreeService::ServeArchiveTree(
// extract archive
auto tmp_dir = StorageConfig::CreateTypedTmpDir(archive_type);
if (not tmp_dir) {
- auto str = fmt::format(
+ logger_->Emit(
+ LogLevel::Error,
"Failed to create tmp path for {} archive with content {}",
archive_type,
content);
- logger_->Emit(LogLevel::Error, str);
response->set_status(ServeArchiveTreeResponse::INTERNAL_ERROR);
return ::grpc::Status::OK;
}
auto res =
ExtractArchive(*content_cas_path, archive_type, tmp_dir->GetPath());
if (res != std::nullopt) {
- auto str = fmt::format("Failed to extract archive {} from CAS:\n{}",
- content_cas_path->string(),
- *res);
- logger_->Emit(LogLevel::Error, str);
+ logger_->Emit(LogLevel::Error,
+ "Failed to extract archive {} from CAS:\n{}",
+ content_cas_path->string(),
+ *res);
response->set_status(ServeArchiveTreeResponse::UNPACK_ERROR);
return ::grpc::Status::OK;
}
@@ -906,9 +890,9 @@ auto SourceTreeService::DistdirImportToGit(
// create tmp directory for the distdir
auto distdir_tmp_dir = StorageConfig::CreateTypedTmpDir("distdir");
if (not distdir_tmp_dir) {
- auto str = fmt::format(
- "Failed to create tmp path for distdir target {}", content_id);
- logger_->Emit(LogLevel::Error, str);
+ logger_->Emit(LogLevel::Error,
+ "Failed to create tmp path for distdir target {}",
+ content_id);
response->set_status(ServeDistdirTreeResponse::INTERNAL_ERROR);
return ::grpc::Status::OK;
}
@@ -929,9 +913,9 @@ auto SourceTreeService::DistdirImportToGit(
}
return false;
})) {
- auto str =
- fmt::format("Failed to create links to CAS content {}", content_id);
- logger_->Emit(LogLevel::Error, str);
+ logger_->Emit(LogLevel::Error,
+ "Failed to create links to CAS content {}",
+ content_id);
response->set_status(ServeDistdirTreeResponse::INTERNAL_ERROR);
return ::grpc::Status::OK;
}
@@ -940,7 +924,7 @@ auto SourceTreeService::DistdirImportToGit(
auto res = CommonImportToGit(tmp_path, commit_message);
if (res.index() == 0) {
// report the error
- logger_->Emit(LogLevel::Error, std::get<0>(res));
+ logger_->Emit(LogLevel::Error, "{}", std::get<0>(res));
response->set_status(ServeDistdirTreeResponse::INTERNAL_ERROR);
return ::grpc::Status::OK;
}
@@ -948,12 +932,11 @@ auto SourceTreeService::DistdirImportToGit(
// check the committed tree matches what we expect
if (tree_id != distdir_tree_id) {
// something is very wrong...
- auto str = fmt::format(
- "Unexpected mismatch for tree of committed distdir:\nexpected {} "
- "but got {}",
- distdir_tree_id,
- tree_id);
- logger_->Emit(LogLevel::Error, str);
+ logger_->Emit(LogLevel::Error,
+ "Unexpected mismatch for tree of committed "
+ "distdir:\nexpected {} but got {}",
+ distdir_tree_id,
+ tree_id);
response->set_status(ServeDistdirTreeResponse::INTERNAL_ERROR);
return ::grpc::Status::OK;
}
@@ -961,11 +944,10 @@ auto SourceTreeService::DistdirImportToGit(
if (sync_tree) {
// only possible in native mode
if (Compatibility::IsCompatible()) {
- auto str = fmt::format(
- "Cannot sync tree {} from local Git cache with the remote in "
- "compatible mode",
- tree_id);
- logger_->Emit(LogLevel::Error, str);
+ logger_->Emit(LogLevel::Error,
+ "Cannot sync tree {} from local Git cache with the "
+ "remote in compatible mode",
+ tree_id);
*(response->mutable_tree()) = std::move(tree_id);
response->set_status(ServeDistdirTreeResponse::SYNC_ERROR);
return ::grpc::Status::OK;
@@ -973,9 +955,9 @@ auto SourceTreeService::DistdirImportToGit(
auto digest = ArtifactDigest{tree_id, 0, /*is_tree=*/true};
auto repo = RepositoryConfig{};
if (not repo.SetGitCAS(StorageConfig::GitRoot())) {
- auto str = fmt::format("Failed to SetGitCAS at {}",
- StorageConfig::GitRoot().string());
- logger_->Emit(LogLevel::Error, str);
+ logger_->Emit(LogLevel::Error,
+ "Failed to SetGitCAS at {}",
+ StorageConfig::GitRoot().string());
response->set_status(ServeDistdirTreeResponse::INTERNAL_ERROR);
return ::grpc::Status::OK;
}
@@ -984,9 +966,9 @@ auto SourceTreeService::DistdirImportToGit(
{Artifact::ObjectInfo{.digest = digest,
.type = ObjectType::Tree}},
&(*remote_api_))) {
- auto str =
- fmt::format("Failed to sync tree {} from local CAS", tree_id);
- logger_->Emit(LogLevel::Error, str);
+ logger_->Emit(LogLevel::Error,
+ "Failed to sync tree {} from local CAS",
+ tree_id);
*(response->mutable_tree()) = std::move(tree_id);
response->set_status(ServeDistdirTreeResponse::SYNC_ERROR);
return ::grpc::Status::OK;
@@ -1005,8 +987,7 @@ auto SourceTreeService::ServeDistdirTree(
// acquire lock for CAS
auto lock = GarbageCollector::SharedLock();
if (!lock) {
- auto str = fmt::format("Could not acquire gc SharedLock");
- logger_->Emit(LogLevel::Error, str);
+ logger_->Emit(LogLevel::Error, "Could not acquire gc SharedLock");
response->set_status(ServeDistdirTreeResponse::INTERNAL_ERROR);
return ::grpc::Status::OK;
}
@@ -1047,11 +1028,10 @@ auto SourceTreeService::ServeDistdirTree(
auto stored_blob =
cas.StoreBlob(std::get<std::string>(res), kv.executable());
if (not stored_blob) {
- auto str = fmt::format(
- "Failed to store content {} from local Git cache to "
- "local CAS",
- content);
- logger_->Emit(LogLevel::Error, str);
+ logger_->Emit(LogLevel::Error,
+ "Failed to store content {} from local Git "
+ "cache to local CAS",
+ content);
response->set_status(
ServeDistdirTreeResponse::INTERNAL_ERROR);
return ::grpc::Status::OK;
@@ -1061,12 +1041,11 @@ auto SourceTreeService::ServeDistdirTree(
}
else {
if (std::get<bool>(res)) {
- auto str = fmt::format(
- "Failed while trying to retrieve content {} from "
- "repository {}",
- content,
- StorageConfig::GitRoot().string());
- logger_->Emit(LogLevel::Error, str);
+ logger_->Emit(LogLevel::Error,
+ "Failed while trying to retrieve content {} "
+ "from repository {}",
+ content,
+ StorageConfig::GitRoot().string());
response->set_status(
ServeDistdirTreeResponse::INTERNAL_ERROR);
return ::grpc::Status::OK;
@@ -1080,12 +1059,11 @@ auto SourceTreeService::ServeDistdirTree(
auto stored_blob = cas.StoreBlob(
std::get<std::string>(res), kv.executable());
if (not stored_blob) {
- auto str = fmt::format(
- "Failed to store content {} from known "
- "repository {} to local CAS",
- path.string(),
- content);
- logger_->Emit(LogLevel::Error, str);
+ logger_->Emit(LogLevel::Error,
+ "Failed to store content {} from "
+ "known repository {} to local CAS",
+ path.string(),
+ content);
response->set_status(
ServeDistdirTreeResponse::INTERNAL_ERROR);
return ::grpc::Status::OK;
@@ -1096,12 +1074,12 @@ auto SourceTreeService::ServeDistdirTree(
break;
}
if (std::get<bool>(res)) {
- auto str = fmt::format(
+ logger_->Emit(
+ LogLevel::Error,
"Failed while trying to retrieve content {} from "
"repository {}",
content,
path.string());
- logger_->Emit(LogLevel::Error, str);
response->set_status(
ServeDistdirTreeResponse::INTERNAL_ERROR);
return ::grpc::Status::OK;
@@ -1125,11 +1103,10 @@ auto SourceTreeService::ServeDistdirTree(
? ObjectType::Executable
: ObjectType::File}},
&(*local_api_))) {
- auto str = fmt::format(
- "Failed to retrieve content {} from remote to "
- "local CAS",
- content);
- logger_->Emit(LogLevel::Error, str);
+ logger_->Emit(LogLevel::Error,
+ "Failed to retrieve content {} from "
+ "remote to local CAS",
+ content);
response->set_status(
ServeDistdirTreeResponse::INTERNAL_ERROR);
return ::grpc::Status::OK;
@@ -1142,8 +1119,7 @@ auto SourceTreeService::ServeDistdirTree(
}
// error out if blob is not known
if (not blob_found) {
- auto str = fmt::format("Content {} is not known", content);
- logger_->Emit(LogLevel::Error, str);
+ logger_->Emit(LogLevel::Error, "Content {} is not known", content);
response->set_status(ServeDistdirTreeResponse::NOT_FOUND);
return ::grpc::Status::OK;
}
@@ -1154,10 +1130,10 @@ auto SourceTreeService::ServeDistdirTree(
kv.executable() ? ObjectType::Executable : ObjectType::File);
}
else {
- auto str = fmt::format(
+ logger_->Emit(
+ LogLevel::Error,
"Conversion of content {} to raw id failed unexpectedly",
content);
- logger_->Emit(LogLevel::Error, str);
response->set_status(ServeDistdirTreeResponse::INTERNAL_ERROR);
return ::grpc::Status::OK;
}
@@ -1172,9 +1148,8 @@ auto SourceTreeService::ServeDistdirTree(
// create in-memory tree of the distdir, now that we know we have all blobs
auto tree = GitRepo::CreateShallowTree(entries);
if (not tree) {
- auto str =
- std::string{"Failed to construct in-memory tree for distdir"};
- logger_->Emit(LogLevel::Error, str);
+ logger_->Emit(LogLevel::Error,
+ "Failed to construct in-memory tree for distdir");
response->set_status(ServeDistdirTreeResponse::INTERNAL_ERROR);
return ::grpc::Status::OK;
}
@@ -1183,20 +1158,19 @@ auto SourceTreeService::ServeDistdirTree(
// add tree to local CAS
auto tree_digest = cas.StoreTree(tree->second);
if (not tree_digest) {
- auto str = fmt::format("Failed to store distdir tree {} to local CAS",
- tree_id);
- logger_->Emit(LogLevel::Error, str);
+ logger_->Emit(LogLevel::Error,
+ "Failed to store distdir tree {} to local CAS",
+ tree_id);
response->set_status(ServeDistdirTreeResponse::INTERNAL_ERROR);
return ::grpc::Status::OK;
}
// check if tree is already in Git cache
auto has_tree = IsTreeInRepo(tree_id, StorageConfig::GitRoot(), logger_);
if (not has_tree) {
- auto str =
- fmt::format("Failed while checking for tree {} in repository {}",
- tree_id,
- StorageConfig::GitRoot().string());
- logger_->Emit(LogLevel::Error, str);
+ logger_->Emit(LogLevel::Error,
+ "Failed while checking for tree {} in repository {}",
+ tree_id,
+ StorageConfig::GitRoot().string());
response->set_status(ServeDistdirTreeResponse::INTERNAL_ERROR);
return ::grpc::Status::OK;
}
@@ -1205,11 +1179,10 @@ auto SourceTreeService::ServeDistdirTree(
if (request->sync_tree()) {
// only possible in native mode
if (Compatibility::IsCompatible()) {
- auto str = fmt::format(
- "Cannot sync tree {} from local Git cache with the remote "
- "in compatible mode",
- tree_id);
- logger_->Emit(LogLevel::Error, str);
+ logger_->Emit(LogLevel::Error,
+ "Cannot sync tree {} from local Git cache with "
+ "the remote in compatible mode",
+ tree_id);
*(response->mutable_tree()) = std::move(tree_id);
response->set_status(ServeDistdirTreeResponse::SYNC_ERROR);
return ::grpc::Status::OK;
@@ -1217,9 +1190,9 @@ auto SourceTreeService::ServeDistdirTree(
auto digest = ArtifactDigest{tree_id, 0, /*is_tree=*/true};
auto repo = RepositoryConfig{};
if (not repo.SetGitCAS(StorageConfig::GitRoot())) {
- auto str = fmt::format("Failed to SetGitCAS at {}",
- StorageConfig::GitRoot().string());
- logger_->Emit(LogLevel::Error, str);
+ logger_->Emit(LogLevel::Error,
+ "Failed to SetGitCAS at {}",
+ StorageConfig::GitRoot().string());
response->set_status(ServeDistdirTreeResponse::INTERNAL_ERROR);
return ::grpc::Status::OK;
}
@@ -1228,9 +1201,9 @@ auto SourceTreeService::ServeDistdirTree(
{Artifact::ObjectInfo{.digest = digest,
.type = ObjectType::Tree}},
&(*remote_api_))) {
- auto str = fmt::format("Failed to sync tree {} from local CAS",
- tree_id);
- logger_->Emit(LogLevel::Error, str);
+ logger_->Emit(LogLevel::Error,
+ "Failed to sync tree {} from local CAS",
+ tree_id);
*(response->mutable_tree()) = std::move(tree_id);
response->set_status(ServeDistdirTreeResponse::SYNC_ERROR);
return ::grpc::Status::OK;
@@ -1245,11 +1218,10 @@ auto SourceTreeService::ServeDistdirTree(
for (auto const& path : RemoteServeConfig::KnownRepositories()) {
auto has_tree = IsTreeInRepo(tree_id, path, logger_);
if (not has_tree) {
- auto str = fmt::format(
- "Failed while checking for tree {} in repository {}",
- tree_id,
- path.string());
- logger_->Emit(LogLevel::Error, str);
+ logger_->Emit(LogLevel::Error,
+ "Failed while checking for tree {} in repository {}",
+ tree_id,
+ path.string());
response->set_status(ServeDistdirTreeResponse::INTERNAL_ERROR);
return ::grpc::Status::OK;
}
@@ -1258,11 +1230,10 @@ auto SourceTreeService::ServeDistdirTree(
if (request->sync_tree()) {
// only possible in native mode
if (Compatibility::IsCompatible()) {
- auto str = fmt::format(
- "Cannot sync tree {} from local Git cache with the "
- "remote in compatible mode",
- tree_id);
- logger_->Emit(LogLevel::Error, str);
+ logger_->Emit(LogLevel::Error,
+ "Cannot sync tree {} from local Git cache "
+ "with the remote in compatible mode",
+ tree_id);
*(response->mutable_tree()) = std::move(tree_id);
response->set_status(ServeDistdirTreeResponse::SYNC_ERROR);
return ::grpc::Status::OK;
@@ -1270,9 +1241,9 @@ auto SourceTreeService::ServeDistdirTree(
auto digest = ArtifactDigest{tree_id, 0, /*is_tree=*/true};
auto repo = RepositoryConfig{};
if (not repo.SetGitCAS(path)) {
- auto str =
- fmt::format("Failed to SetGitCAS at {}", path.string());
- logger_->Emit(LogLevel::Error, str);
+ logger_->Emit(LogLevel::Error,
+ "Failed to SetGitCAS at {}",
+ path.string());
response->set_status(
ServeDistdirTreeResponse::INTERNAL_ERROR);
return ::grpc::Status::OK;
@@ -1282,9 +1253,9 @@ auto SourceTreeService::ServeDistdirTree(
{Artifact::ObjectInfo{.digest = digest,
.type = ObjectType::Tree}},
&(*remote_api_))) {
- auto str = fmt::format(
- "Failed to sync tree {} from local CAS", tree_id);
- logger_->Emit(LogLevel::Error, str);
+ logger_->Emit(LogLevel::Error,
+ "Failed to sync tree {} from local CAS",
+ tree_id);
*(response->mutable_tree()) = std::move(tree_id);
response->set_status(ServeDistdirTreeResponse::SYNC_ERROR);
return ::grpc::Status::OK;
@@ -1309,8 +1280,7 @@ auto SourceTreeService::ServeContent(
// acquire lock for CAS
auto lock = GarbageCollector::SharedLock();
if (!lock) {
- auto str = fmt::format("Could not acquire gc SharedLock");
- logger_->Emit(LogLevel::Error, str);
+ logger_->Emit(LogLevel::Error, "Could not acquire gc SharedLock");
response->set_status(ServeContentResponse::INTERNAL_ERROR);
return ::grpc::Status::OK;
}
@@ -1321,9 +1291,9 @@ auto SourceTreeService::ServeContent(
// upload blob to remote CAS
auto repo = RepositoryConfig{};
if (not repo.SetGitCAS(StorageConfig::GitRoot())) {
- auto str = fmt::format("Failed to SetGitCAS at {}",
- StorageConfig::GitRoot().string());
- logger_->Emit(LogLevel::Error, str);
+ logger_->Emit(LogLevel::Error,
+ "Failed to SetGitCAS at {}",
+ StorageConfig::GitRoot().string());
response->set_status(ServeContentResponse::INTERNAL_ERROR);
return ::grpc::Status::OK;
}
@@ -1332,9 +1302,9 @@ auto SourceTreeService::ServeContent(
{Artifact::ObjectInfo{.digest = digest,
.type = ObjectType::File}},
&(*remote_api_))) {
- auto str = fmt::format(
- "Failed to sync content {} from local Git cache", content);
- logger_->Emit(LogLevel::Error, str);
+ logger_->Emit(LogLevel::Error,
+ "Failed to sync content {} from local Git cache",
+ content);
response->set_status(ServeContentResponse::SYNC_ERROR);
return ::grpc::Status::OK;
}
@@ -1343,11 +1313,10 @@ auto SourceTreeService::ServeContent(
return ::grpc::Status::OK;
}
if (std::get<bool>(res)) {
- auto str =
- fmt::format("Failed while checking for content {} in repository {}",
- content,
- StorageConfig::GitRoot().string());
- logger_->Emit(LogLevel::Error, str);
+ logger_->Emit(LogLevel::Error,
+ "Failed while checking for content {} in repository {}",
+ content,
+ StorageConfig::GitRoot().string());
response->set_status(ServeContentResponse::INTERNAL_ERROR);
return ::grpc::Status::OK;
}
@@ -1358,9 +1327,9 @@ auto SourceTreeService::ServeContent(
// upload blob to remote CAS
auto repo = RepositoryConfig{};
if (not repo.SetGitCAS(path)) {
- auto str =
- fmt::format("Failed to SetGitCAS at {}", path.string());
- logger_->Emit(LogLevel::Error, str);
+ logger_->Emit(LogLevel::Error,
+ "Failed to SetGitCAS at {}",
+ path.string());
response->set_status(ServeContentResponse::INTERNAL_ERROR);
return ::grpc::Status::OK;
}
@@ -1369,11 +1338,11 @@ auto SourceTreeService::ServeContent(
{Artifact::ObjectInfo{.digest = digest,
.type = ObjectType::File}},
&(*remote_api_))) {
- auto str = fmt::format(
+ logger_->Emit(
+ LogLevel::Error,
"Failed to sync content {} from known repository {}",
content,
path.string());
- logger_->Emit(LogLevel::Error, str);
response->set_status(ServeContentResponse::SYNC_ERROR);
return ::grpc::Status::OK;
}
@@ -1397,9 +1366,9 @@ auto SourceTreeService::ServeContent(
{Artifact::ObjectInfo{.digest = digest,
.type = ObjectType::File}},
&(*remote_api_))) {
- auto str = fmt::format("Failed to sync content {} from local CAS",
- content);
- logger_->Emit(LogLevel::Error, str);
+ logger_->Emit(LogLevel::Error,
+ "Failed to sync content {} from local CAS",
+ content);
response->set_status(ServeContentResponse::SYNC_ERROR);
return ::grpc::Status::OK;
}
@@ -1420,8 +1389,7 @@ auto SourceTreeService::ServeTree(
// acquire lock for CAS
auto lock = GarbageCollector::SharedLock();
if (!lock) {
- auto str = fmt::format("Could not acquire gc SharedLock");
- logger_->Emit(LogLevel::Error, str);
+ logger_->Emit(LogLevel::Error, "Could not acquire gc SharedLock");
response->set_status(ServeTreeResponse::INTERNAL_ERROR);
return ::grpc::Status::OK;
}
@@ -1429,30 +1397,28 @@ auto SourceTreeService::ServeTree(
// check if tree is in Git cache
auto has_tree = IsTreeInRepo(tree_id, StorageConfig::GitRoot(), logger_);
if (not has_tree) {
- auto str =
- fmt::format("Failed while checking for tree {} in repository {}",
- tree_id,
- StorageConfig::GitRoot().string());
- logger_->Emit(LogLevel::Error, str);
+ logger_->Emit(LogLevel::Error,
+ "Failed while checking for tree {} in repository {}",
+ tree_id,
+ StorageConfig::GitRoot().string());
response->set_status(ServeTreeResponse::INTERNAL_ERROR);
return ::grpc::Status::OK;
}
if (*has_tree) {
// upload tree to remote CAS; only possible in native mode
if (Compatibility::IsCompatible()) {
- auto str = fmt::format(
- "Cannot sync tree {} from local Git cache with the remote in "
- "compatible mode",
- tree_id);
- logger_->Emit(LogLevel::Error, str);
+ logger_->Emit(LogLevel::Error,
+ "Cannot sync tree {} from local Git cache with the "
+ "remote in compatible mode",
+ tree_id);
response->set_status(ServeTreeResponse::SYNC_ERROR);
return ::grpc::Status::OK;
}
auto repo = RepositoryConfig{};
if (not repo.SetGitCAS(StorageConfig::GitRoot())) {
- auto str = fmt::format("Failed to SetGitCAS at {}",
- StorageConfig::GitRoot().string());
- logger_->Emit(LogLevel::Error, str);
+ logger_->Emit(LogLevel::Error,
+ "Failed to SetGitCAS at {}",
+ StorageConfig::GitRoot().string());
response->set_status(ServeTreeResponse::INTERNAL_ERROR);
return ::grpc::Status::OK;
}
@@ -1461,9 +1427,9 @@ auto SourceTreeService::ServeTree(
{Artifact::ObjectInfo{.digest = digest,
.type = ObjectType::Tree}},
&(*remote_api_))) {
- auto str = fmt::format(
- "Failed to sync tree {} from local Git cache", tree_id);
- logger_->Emit(LogLevel::Error, str);
+ logger_->Emit(LogLevel::Error,
+ "Failed to sync tree {} from local Git cache",
+ tree_id);
response->set_status(ServeTreeResponse::SYNC_ERROR);
return ::grpc::Status::OK;
}
@@ -1475,31 +1441,29 @@ auto SourceTreeService::ServeTree(
for (auto const& path : RemoteServeConfig::KnownRepositories()) {
auto has_tree = IsTreeInRepo(tree_id, path, logger_);
if (not has_tree) {
- auto str = fmt::format(
- "Failed while checking for tree {} in repository {}",
- tree_id,
- path.string());
- logger_->Emit(LogLevel::Error, str);
+ logger_->Emit(LogLevel::Error,
+ "Failed while checking for tree {} in repository {}",
+ tree_id,
+ path.string());
response->set_status(ServeTreeResponse::INTERNAL_ERROR);
return ::grpc::Status::OK;
}
if (*has_tree) {
// upload tree to remote CAS; only possible in native mode
if (Compatibility::IsCompatible()) {
- auto str = fmt::format(
- "Cannot sync tree {} from known repository {} with the "
- "remote in compatible mode",
- tree_id,
- path.string());
- logger_->Emit(LogLevel::Error, str);
+ logger_->Emit(LogLevel::Error,
+ "Cannot sync tree {} from known repository {} "
+ "with the remote in compatible mode",
+ tree_id,
+ path.string());
response->set_status(ServeTreeResponse::SYNC_ERROR);
return ::grpc::Status::OK;
}
auto repo = RepositoryConfig{};
if (not repo.SetGitCAS(path)) {
- auto str =
- fmt::format("Failed to SetGitCAS at {}", path.string());
- logger_->Emit(LogLevel::Error, str);
+ logger_->Emit(LogLevel::Error,
+ "Failed to SetGitCAS at {}",
+ path.string());
response->set_status(ServeTreeResponse::INTERNAL_ERROR);
return ::grpc::Status::OK;
}
@@ -1508,11 +1472,10 @@ auto SourceTreeService::ServeTree(
{Artifact::ObjectInfo{.digest = digest,
.type = ObjectType::Tree}},
&(*remote_api_))) {
- auto str = fmt::format(
- "Failed to sync tree {} from known repository {}",
- tree_id,
- path.string());
- logger_->Emit(LogLevel::Error, str);
+ logger_->Emit(LogLevel::Error,
+ "Failed to sync tree {} from known repository {}",
+ tree_id,
+ path.string());
response->set_status(ServeTreeResponse::SYNC_ERROR);
return ::grpc::Status::OK;
}
@@ -1525,11 +1488,10 @@ auto SourceTreeService::ServeTree(
if (local_api_->IsAvailable(digest)) {
// upload tree to remote CAS; only possible in native mode
if (Compatibility::IsCompatible()) {
- auto str = fmt::format(
- "Cannot sync tree {} from local CAS with the remote in "
- "compatible mode",
- tree_id);
- logger_->Emit(LogLevel::Error, str);
+ logger_->Emit(LogLevel::Error,
+ "Cannot sync tree {} from local CAS with the remote "
+ "in compatible mode",
+ tree_id);
response->set_status(ServeTreeResponse::SYNC_ERROR);
return ::grpc::Status::OK;
}
@@ -1537,9 +1499,9 @@ auto SourceTreeService::ServeTree(
{Artifact::ObjectInfo{.digest = digest,
.type = ObjectType::Tree}},
&(*remote_api_))) {
- auto str =
- fmt::format("Failed to sync tree {} from local CAS", tree_id);
- logger_->Emit(LogLevel::Error, str);
+ logger_->Emit(LogLevel::Error,
+ "Failed to sync tree {} from local CAS",
+ tree_id);
response->set_status(ServeTreeResponse::SYNC_ERROR);
return ::grpc::Status::OK;
}
@@ -1560,19 +1522,17 @@ auto SourceTreeService::CheckRootTree(
// acquire lock for CAS
auto lock = GarbageCollector::SharedLock();
if (!lock) {
- auto str = fmt::format("Could not acquire gc SharedLock");
- logger_->Emit(LogLevel::Error, str);
+ logger_->Emit(LogLevel::Error, "Could not acquire gc SharedLock");
response->set_status(CheckRootTreeResponse::INTERNAL_ERROR);
return ::grpc::Status::OK;
}
// check first in the Git cache
auto has_tree = IsTreeInRepo(tree_id, StorageConfig::GitRoot(), logger_);
if (not has_tree) {
- auto str =
- fmt::format("Failed while checking for tree {} in repository {}",
- tree_id,
- StorageConfig::GitRoot().string());
- logger_->Emit(LogLevel::Error, str);
+ logger_->Emit(LogLevel::Error,
+ "Failed while checking for tree {} in repository {}",
+ tree_id,
+ StorageConfig::GitRoot().string());
response->set_status(CheckRootTreeResponse::INTERNAL_ERROR);
return ::grpc::Status::OK;
}
@@ -1585,11 +1545,10 @@ auto SourceTreeService::CheckRootTree(
for (auto const& path : RemoteServeConfig::KnownRepositories()) {
auto has_tree = IsTreeInRepo(tree_id, path, logger_);
if (not has_tree) {
- auto str = fmt::format(
- "Failed while checking for tree {} in repository {}",
- tree_id,
- path.string());
- logger_->Emit(LogLevel::Error, str);
+ logger_->Emit(LogLevel::Error,
+ "Failed while checking for tree {} in repository {}",
+ tree_id,
+ path.string());
response->set_status(CheckRootTreeResponse::INTERNAL_ERROR);
return ::grpc::Status::OK;
}
@@ -1607,11 +1566,10 @@ auto SourceTreeService::CheckRootTree(
auto tmp_dir =
StorageConfig::CreateTypedTmpDir("source-tree-check-root-tree");
if (not tmp_dir) {
- auto str = fmt::format(
- "Failed to create tmp directory for copying "
- "git-tree {} from remote CAS",
- digest.hash());
- logger_->Emit(LogLevel::Error, str);
+ logger_->Emit(LogLevel::Error,
+ "Failed to create tmp directory for copying git-tree "
+ "{} from remote CAS",
+ digest.hash());
response->set_status(CheckRootTreeResponse::INTERNAL_ERROR);
return ::grpc::Status::OK;
}
@@ -1619,10 +1577,10 @@ auto SourceTreeService::CheckRootTree(
{Artifact::ObjectInfo{.digest = digest,
.type = ObjectType::Tree}},
{tmp_dir->GetPath()})) {
- auto str = fmt::format("Failed to copy git-tree {} to {}",
- tree_id,
- tmp_dir->GetPath().string());
- logger_->Emit(LogLevel::Error, str);
+ logger_->Emit(LogLevel::Error,
+ "Failed to copy git-tree {} to {}",
+ tree_id,
+ tmp_dir->GetPath().string());
response->set_status(CheckRootTreeResponse::INTERNAL_ERROR);
return ::grpc::Status::OK;
}
@@ -1633,18 +1591,18 @@ auto SourceTreeService::CheckRootTree(
);
if (res.index() == 0) {
// report the error
- logger_->Emit(LogLevel::Error, std::get<0>(res));
+ logger_->Emit(LogLevel::Error, "{}", std::get<0>(res));
response->set_status(CheckRootTreeResponse::INTERNAL_ERROR);
return ::grpc::Status::OK;
}
auto const& imported_tree_id = std::get<1>(res);
// sanity check
if (imported_tree_id != tree_id) {
- auto str = fmt::format(
+ logger_->Emit(
+ LogLevel::Error,
"Unexpected mismatch in imported tree:\nexpected {} but got {}",
tree_id,
imported_tree_id);
- logger_->Emit(LogLevel::Error, str);
response->set_status(CheckRootTreeResponse::INTERNAL_ERROR);
return ::grpc::Status::OK;
}
@@ -1665,28 +1623,26 @@ auto SourceTreeService::GetRemoteTree(
// acquire lock for CAS
auto lock = GarbageCollector::SharedLock();
if (!lock) {
- auto str = fmt::format("Could not acquire gc SharedLock");
- logger_->Emit(LogLevel::Error, str);
+ logger_->Emit(LogLevel::Error, "Could not acquire gc SharedLock");
response->set_status(GetRemoteTreeResponse::INTERNAL_ERROR);
return ::grpc::Status::OK;
}
// get tree from remote CAS into tmp dir
auto digest = ArtifactDigest{tree_id, 0, /*is_tree=*/true};
if (not remote_api_->IsAvailable(digest)) {
- auto str = fmt::format("Remote CAS does not contain expected tree {}",
- tree_id);
- logger_->Emit(LogLevel::Error, str);
+ logger_->Emit(LogLevel::Error,
+ "Remote CAS does not contain expected tree {}",
+ tree_id);
response->set_status(GetRemoteTreeResponse::FAILED_PRECONDITION);
return ::grpc::Status::OK;
}
auto tmp_dir =
StorageConfig::CreateTypedTmpDir("source-tree-get-remote-tree");
if (not tmp_dir) {
- auto str = fmt::format(
- "Failed to create tmp directory for copying git-tree {} from "
- "remote CAS",
- digest.hash());
- logger_->Emit(LogLevel::Error, str);
+ logger_->Emit(LogLevel::Error,
+ "Failed to create tmp directory for copying git-tree {} "
+ "from remote CAS",
+ digest.hash());
response->set_status(GetRemoteTreeResponse::INTERNAL_ERROR);
return ::grpc::Status::OK;
}
@@ -1694,9 +1650,9 @@ auto SourceTreeService::GetRemoteTree(
{Artifact::ObjectInfo{.digest = digest, .type = ObjectType::Tree}},
{tmp_dir->GetPath()},
&(*local_api_))) {
- auto str =
- fmt::format("Failed to retrieve tree {} from remote CAS", tree_id);
- logger_->Emit(LogLevel::Error, str);
+ logger_->Emit(LogLevel::Error,
+ "Failed to retrieve tree {} from remote CAS",
+ tree_id);
response->set_status(GetRemoteTreeResponse::FAILED_PRECONDITION);
return ::grpc::Status::OK;
}
@@ -1707,18 +1663,18 @@ auto SourceTreeService::GetRemoteTree(
);
if (res.index() == 0) {
// report the error
- logger_->Emit(LogLevel::Error, std::get<0>(res));
+ logger_->Emit(LogLevel::Error, "{}", std::get<0>(res));
response->set_status(GetRemoteTreeResponse::INTERNAL_ERROR);
return ::grpc::Status::OK;
}
auto const& imported_tree_id = std::get<1>(res);
// sanity check
if (imported_tree_id != tree_id) {
- auto str = fmt::format(
+ logger_->Emit(
+ LogLevel::Error,
"Unexpected mismatch in imported tree:\nexpected {}, but got {}",
tree_id,
imported_tree_id);
- logger_->Emit(LogLevel::Error, str);
response->set_status(GetRemoteTreeResponse::INTERNAL_ERROR);
return ::grpc::Status::OK;
}
diff --git a/src/buildtool/serve_api/serve_service/target.cpp b/src/buildtool/serve_api/serve_service/target.cpp
index e358b79e..9f54f7c3 100644
--- a/src/buildtool/serve_api/serve_service/target.cpp
+++ b/src/buildtool/serve_api/serve_service/target.cpp
@@ -97,7 +97,7 @@ auto TargetService::HandleFailureLog(
if (not digest) {
auto msg = fmt::format("Failed to store log of failed {} to local CAS",
failure_scope);
- logger_->Emit(LogLevel::Error, msg);
+ logger_->Emit(LogLevel::Error, "{}", msg);
return ::grpc::Status{::grpc::StatusCode::INTERNAL, msg};
}
// upload log blob to remote
@@ -109,7 +109,7 @@ auto TargetService::HandleFailureLog(
fmt::format("Failed to upload to remote CAS the failed {} log {}",
failure_scope,
digest->hash());
- logger_->Emit(LogLevel::Error, msg);
+ logger_->Emit(LogLevel::Error, "{}", msg);
return ::grpc::Status{::grpc::StatusCode::UNAVAILABLE, msg};
}
// set response with log digest
@@ -123,7 +123,7 @@ auto TargetService::ServeTarget(
::justbuild::just_serve::ServeTargetResponse* response) -> ::grpc::Status {
// check target cache key hash for validity
if (auto msg = IsAHash(request->target_cache_key_id().hash()); msg) {
- logger_->Emit(LogLevel::Error, *msg);
+ logger_->Emit(LogLevel::Error, "{}", *msg);
return ::grpc::Status{::grpc::StatusCode::INVALID_ARGUMENT, *msg};
}
auto const& target_cache_key_digest =
@@ -153,14 +153,14 @@ auto TargetService::ServeTarget(
// read in the dispatch list and add it to the description, if not empty
if (auto msg = IsAHash(request->dispatch_info().hash()); msg) {
- logger_->Emit(LogLevel::Error, *msg);
+ logger_->Emit(LogLevel::Error, "{}", *msg);
return ::grpc::Status{::grpc::StatusCode::INVALID_ARGUMENT, *msg};
}
auto const& dispatch_info_digest = ArtifactDigest{request->dispatch_info()};
auto res = GetDispatchList(dispatch_info_digest);
if (res.index() == 0) {
auto err = std::get<0>(res);
- logger_->Emit(LogLevel::Error, err.error_message());
+ logger_->Emit(LogLevel::Error, "{}", err.error_message());
return err;
}
// keep dispatch list, as it needs to be passed to the executor (via the
@@ -176,10 +176,9 @@ auto TargetService::ServeTarget(
dispatch_json.push_back(entry);
}
} catch (std::exception const& ex) {
- logger_->Emit(
- LogLevel::Info,
- fmt::format("Parsing dispatch list to JSON failed with:\n{}",
- ex.what()));
+ logger_->Emit(LogLevel::Info,
+ "Parsing dispatch list to JSON failed with:\n{}",
+ ex.what());
}
if (not dispatch_json.empty()) {
description["endpoint dispatch list"] = std::move(dispatch_json);
@@ -228,7 +227,7 @@ auto TargetService::ServeTarget(
auto msg = fmt::format(
"Failed to extract artifacts from target cache entry {}",
target_entry->second.ToString());
- logger_->Emit(LogLevel::Error, msg);
+ logger_->Emit(LogLevel::Error, "{}", msg);
return ::grpc::Status{::grpc::StatusCode::INTERNAL, msg};
}
artifacts.emplace_back(target_entry->second); // add the tc value
@@ -237,7 +236,7 @@ auto TargetService::ServeTarget(
"Failed to upload to remote cas the artifacts referenced in "
"the target cache entry {}",
target_entry->second.ToString());
- logger_->Emit(LogLevel::Error, msg);
+ logger_->Emit(LogLevel::Error, "{}", msg);
return ::grpc::Status{::grpc::StatusCode::UNAVAILABLE, msg};
}
// populate response with the target cache value
@@ -254,7 +253,7 @@ auto TargetService::ServeTarget(
auto msg = fmt::format(
"Could not retrieve blob {} from remote-execution endpoint",
target_cache_key_info.ToString());
- logger_->Emit(LogLevel::Error, msg);
+ logger_->Emit(LogLevel::Error, "{}", msg);
return ::grpc::Status{::grpc::StatusCode::FAILED_PRECONDITION, msg};
}
@@ -265,7 +264,7 @@ auto TargetService::ServeTarget(
auto msg = fmt::format(
"Unexpected failure in retrieving blob {} from local CAS",
target_cache_key_info.ToString());
- logger_->Emit(LogLevel::Error, msg);
+ logger_->Emit(LogLevel::Error, "{}", msg);
return ::grpc::Status{::grpc::StatusCode::INTERNAL, msg};
}
@@ -277,7 +276,7 @@ auto TargetService::ServeTarget(
auto msg = fmt::format("Parsing TargetCacheKey {} failed with:\n{}",
target_cache_key_digest.hash(),
ex.what());
- logger_->Emit(LogLevel::Error, msg);
+ logger_->Emit(LogLevel::Error, "{}", msg);
return ::grpc::Status{::grpc::StatusCode::INTERNAL, msg};
}
if (not target_description_dict.IsNotNull() or
@@ -286,7 +285,7 @@ auto TargetService::ServeTarget(
fmt::format("TargetCacheKey {} should contain a map, but found {}",
target_cache_key_digest.hash(),
target_description_dict.ToJson().dump());
- logger_->Emit(LogLevel::Error, msg);
+ logger_->Emit(LogLevel::Error, "{}", msg);
return ::grpc::Status{::grpc::StatusCode::NOT_FOUND, msg};
}
@@ -302,7 +301,7 @@ auto TargetService::ServeTarget(
fmt::format("TargetCacheKey {} does not contain key \"{}\"",
target_cache_key_digest.hash(),
key);
- logger_->Emit(LogLevel::Error, error_msg);
+ logger_->Emit(LogLevel::Error, "{}", error_msg);
return false;
}
return true;
@@ -322,7 +321,7 @@ auto TargetService::ServeTarget(
"found {}",
target_cache_key_digest.hash(),
repo_key.ToJson().dump());
- logger_->Emit(LogLevel::Error, msg);
+ logger_->Emit(LogLevel::Error, "{}", msg);
return ::grpc::Status{::grpc::StatusCode::NOT_FOUND, msg};
}
ArtifactDigest repo_key_dgst{repo_key->String(), 0, /*is_tree=*/false};
@@ -334,7 +333,7 @@ auto TargetService::ServeTarget(
auto msg = fmt::format(
"Could not retrieve blob {} from remote-execution endpoint",
repo_key->String());
- logger_->Emit(LogLevel::Error, msg);
+ logger_->Emit(LogLevel::Error, "{}", msg);
return ::grpc::Status{::grpc::StatusCode::FAILED_PRECONDITION, msg};
}
auto repo_config_path = Storage::Instance().CAS().BlobPath(
@@ -344,7 +343,7 @@ auto TargetService::ServeTarget(
auto msg = fmt::format(
"Unexpected failure in retrieving blob {} from local CAS",
repo_key->String());
- logger_->Emit(LogLevel::Error, msg);
+ logger_->Emit(LogLevel::Error, "{}", msg);
return ::grpc::Status{::grpc::StatusCode::INTERNAL, msg};
}
@@ -353,7 +352,7 @@ auto TargetService::ServeTarget(
std::string const main_repo{"0"}; // known predefined main repository name
if (auto msg = DetermineRoots(
main_repo, *repo_config_path, &repository_config, logger_)) {
- logger_->Emit(LogLevel::Error, *msg);
+ logger_->Emit(LogLevel::Error, "{}", *msg);
return ::grpc::Status{::grpc::StatusCode::FAILED_PRECONDITION, *msg};
}
@@ -366,7 +365,7 @@ auto TargetService::ServeTarget(
" found {}",
target_cache_key_digest.hash(),
target_expr.ToJson().dump());
- logger_->Emit(LogLevel::Error, msg);
+ logger_->Emit(LogLevel::Error, "{}", msg);
return ::grpc::Status{::grpc::StatusCode::FAILED_PRECONDITION, msg};
}
auto target_name = nlohmann::json::object();
@@ -377,7 +376,7 @@ auto TargetService::ServeTarget(
"TargetCacheKey {}: parsing \"target_name\" failed with:\n{}",
target_cache_key_digest.hash(),
ex.what());
- logger_->Emit(LogLevel::Error, msg);
+ logger_->Emit(LogLevel::Error, "{}", msg);
return ::grpc::Status{::grpc::StatusCode::FAILED_PRECONDITION, msg};
}
@@ -390,7 +389,7 @@ auto TargetService::ServeTarget(
" but found {}",
target_cache_key_digest.hash(),
config_expr.ToJson().dump());
- logger_->Emit(LogLevel::Error, msg);
+ logger_->Emit(LogLevel::Error, "{}", msg);
return ::grpc::Status{::grpc::StatusCode::FAILED_PRECONDITION, msg};
}
Configuration config{};
@@ -402,7 +401,7 @@ auto TargetService::ServeTarget(
"TargetCacheKey {}: parsing \"effective_config\" failed with:\n{}",
target_cache_key_digest.hash(),
ex.what());
- logger_->Emit(LogLevel::Error, msg);
+ logger_->Emit(LogLevel::Error, "{}", msg);
return ::grpc::Status{::grpc::StatusCode::FAILED_PRECONDITION, msg};
}
@@ -418,7 +417,7 @@ auto TargetService::ServeTarget(
parse_err);
});
if (not entity) {
- logger_->Emit(LogLevel::Error, error_msg);
+ logger_->Emit(LogLevel::Error, "{}", error_msg);
return ::grpc::Status{::grpc::StatusCode::FAILED_PRECONDITION,
error_msg};
}
@@ -456,7 +455,7 @@ auto TargetService::ServeTarget(
// report failure locally, to keep track of it...
auto msg = fmt::format("Failed to analyse target {}",
configured_target.target.ToString());
- logger_->Emit(LogLevel::Warning, msg);
+ logger_->Emit(LogLevel::Warning, "{}", msg);
return HandleFailureLog(tmp_log, "analysis", response);
}
logger_->Emit(LogLevel::Info, "Analysed target {}", result->id.ToString());
@@ -505,9 +504,9 @@ auto TargetService::ServeTarget(
if (not build_result) {
// report failure locally, to keep track of it...
- auto msg = fmt::format("Build for target {} failed",
- configured_target.target.ToString());
- logger_->Emit(LogLevel::Warning, msg);
+ logger_->Emit(LogLevel::Warning,
+ "Build for target {} failed",
+ configured_target.target.ToString());
return HandleFailureLog(tmp_log, "build", response);
}
@@ -523,10 +522,9 @@ auto TargetService::ServeTarget(
if (build_result->failed_artifacts) {
// report failure locally, to keep track of it...
- auto msg =
- fmt::format("Build result for target {} contains failed artifacts ",
- configured_target.target.ToString());
- logger_->Emit(LogLevel::Warning, msg);
+ logger_->Emit(LogLevel::Warning,
+ "Build result for target {} contains failed artifacts ",
+ configured_target.target.ToString());
return HandleFailureLog(tmp_log, "artifacts", response);
}
@@ -540,7 +538,7 @@ auto TargetService::ServeTarget(
auto msg = fmt::format(
"Failed to extract artifacts from target cache entry {}",
target_entry->second.ToString());
- logger_->Emit(LogLevel::Error, msg);
+ logger_->Emit(LogLevel::Error, "{}", msg);
return ::grpc::Status{::grpc::StatusCode::INTERNAL, msg};
}
tc_artifacts.emplace_back(target_entry->second); // add the tc value
@@ -549,7 +547,7 @@ auto TargetService::ServeTarget(
"Failed to upload to remote cas the artifacts referenced in "
"the target cache entry {}",
target_entry->second.ToString());
- logger_->Emit(LogLevel::Error, msg);
+ logger_->Emit(LogLevel::Error, "{}", msg);
return ::grpc::Status{::grpc::StatusCode::UNAVAILABLE, msg};
}
// populate response with the target cache value
@@ -560,7 +558,7 @@ auto TargetService::ServeTarget(
// target cache value missing -- internally something is very wrong
auto msg = fmt::format("Failed to read TargetCacheKey {} after store",
target_cache_key_digest.hash());
- logger_->Emit(LogLevel::Error, msg);
+ logger_->Emit(LogLevel::Error, "{}", msg);
return ::grpc::Status{::grpc::StatusCode::INTERNAL, msg};
}
@@ -645,7 +643,7 @@ auto TargetService::ServeTargetVariables(
fmt::format("Targets file {} should contain a map, but found:\n{}",
target_file,
map->ToString());
- logger_->Emit(LogLevel::Error, err);
+ logger_->Emit(LogLevel::Error, "{}", err);
return ::grpc::Status{::grpc::StatusCode::FAILED_PRECONDITION, err};
}
// do validity checks (target present, is export, flexible_config valid)
@@ -655,6 +653,7 @@ auto TargetService::ServeTargetVariables(
auto err = fmt::format("Missing target {} in targets file {}",
nlohmann::json(target).dump(),
target_file);
+ logger_->Emit(LogLevel::Error, "{}", err);
return ::grpc::Status{::grpc::StatusCode::FAILED_PRECONDITION, err};
}
auto export_desc = target_desc->get()->At("type");
@@ -663,7 +662,7 @@ auto TargetService::ServeTargetVariables(
"Missing \"type\" field for target {} in targets file {}.",
nlohmann::json(target).dump(),
target_file);
- logger_->Emit(LogLevel::Error, err);
+ logger_->Emit(LogLevel::Error, "{}", err);
return ::grpc::Status{::grpc::StatusCode::FAILED_PRECONDITION, err};
}
if (not export_desc->get()->IsString()) {
@@ -673,7 +672,7 @@ auto TargetService::ServeTargetVariables(
nlohmann::json(target).dump(),
target_file,
export_desc->get()->ToString());
- logger_->Emit(LogLevel::Error, err);
+ logger_->Emit(LogLevel::Error, "{}", err);
return ::grpc::Status{::grpc::StatusCode::FAILED_PRECONDITION, err};
}
if (export_desc->get()->String() != "export") {
@@ -694,7 +693,7 @@ auto TargetService::ServeTargetVariables(
nlohmann::json(target).dump(),
target_file,
flexible_config->get()->ToString());
- logger_->Emit(LogLevel::Error, err);
+ logger_->Emit(LogLevel::Error, "{}", err);
return ::grpc::Status{::grpc::StatusCode::FAILED_PRECONDITION, err};
}
// populate response with flexible_config list
@@ -707,7 +706,7 @@ auto TargetService::ServeTargetVariables(
nlohmann::json(target).dump(),
target_file,
elem->ToString());
- logger_->Emit(LogLevel::Error, err);
+ logger_->Emit(LogLevel::Error, "{}", err);
response->clear_flexible_config(); // must be unset
return ::grpc::Status{::grpc::StatusCode::FAILED_PRECONDITION, err};
}
@@ -740,6 +739,7 @@ auto TargetService::ServeTargetDescription(
"{}",
root_tree,
target_file);
+ logger_->Emit(LogLevel::Error, "{}", err);
return ::grpc::Status{::grpc::StatusCode::FAILED_PRECONDITION,
err};
}
@@ -760,6 +760,7 @@ auto TargetService::ServeTargetDescription(
"targets file {}",
root_tree,
target_file);
+ logger_->Emit(LogLevel::Error, "{}", err);
return ::grpc::Status{
::grpc::StatusCode::FAILED_PRECONDITION, err};
}
@@ -775,10 +776,12 @@ auto TargetService::ServeTargetDescription(
// something went wrong trying to read the target file blob
auto err =
fmt::format("Could not read targets file {}", target_file);
+ logger_->Emit(LogLevel::Error, "{}", err);
return ::grpc::Status{::grpc::StatusCode::INTERNAL, err};
}
// tree not found
auto err = fmt::format("Missing target-root tree {}", root_tree);
+ logger_->Emit(LogLevel::Error, "{}", err);
return ::grpc::Status{::grpc::StatusCode::FAILED_PRECONDITION, err};
}
// parse target file as json
@@ -790,7 +793,7 @@ auto TargetService::ServeTargetDescription(
"Failed to parse targets file {} as json with error:\n{}",
target_file,
e.what());
- logger_->Emit(LogLevel::Error, err);
+ logger_->Emit(LogLevel::Error, "{}", err);
return ::grpc::Status{::grpc::StatusCode::FAILED_PRECONDITION, err};
}
if (not map->IsMap()) {
@@ -798,7 +801,7 @@ auto TargetService::ServeTargetDescription(
fmt::format("Targets file {} should contain a map, but found:\n{}",
target_file,
map->ToString());
- logger_->Emit(LogLevel::Error, err);
+ logger_->Emit(LogLevel::Error, "{}", err);
return ::grpc::Status{::grpc::StatusCode::FAILED_PRECONDITION, err};
}
// do validity checks (target is present and is of "type": "export")
@@ -808,6 +811,7 @@ auto TargetService::ServeTargetDescription(
auto err = fmt::format("Missing target {} in targets file {}",
nlohmann::json(target).dump(),
target_file);
+ logger_->Emit(LogLevel::Error, "{}", err);
return ::grpc::Status{::grpc::StatusCode::FAILED_PRECONDITION, err};
}
auto export_desc = target_desc->get()->At("type");
@@ -816,7 +820,7 @@ auto TargetService::ServeTargetDescription(
"Missing \"type\" field for target {} in targets file {}.",
nlohmann::json(target).dump(),
target_file);
- logger_->Emit(LogLevel::Error, err);
+ logger_->Emit(LogLevel::Error, "{}", err);
return ::grpc::Status{::grpc::StatusCode::FAILED_PRECONDITION, err};
}
if (not export_desc->get()->IsString()) {
@@ -826,13 +830,14 @@ auto TargetService::ServeTargetDescription(
nlohmann::json(target).dump(),
target_file,
export_desc->get()->ToString());
- logger_->Emit(LogLevel::Error, err);
+ logger_->Emit(LogLevel::Error, "{}", err);
return ::grpc::Status{::grpc::StatusCode::FAILED_PRECONDITION, err};
}
if (export_desc->get()->String() != "export") {
// target is not of "type" : "export"
auto err = fmt::format(R"(target {} is not of "type" : "export")",
nlohmann::json(target).dump());
+ logger_->Emit(LogLevel::Error, "{}", err);
return ::grpc::Status{::grpc::StatusCode::FAILED_PRECONDITION, err};
}
// populate response description object with fields as-is
@@ -885,7 +890,7 @@ auto TargetService::ServeTargetDescription(
auto error_msg = fmt::format(
"Failed to upload to remote cas the description blob {}",
artifact_dgst.hash());
- logger_->Emit(LogLevel::Error, error_msg);
+ logger_->Emit(LogLevel::Error, "{}", error_msg);
return ::grpc::Status{::grpc::StatusCode::UNAVAILABLE, error_msg};
}
diff --git a/src/buildtool/serve_api/serve_service/target_utils.cpp b/src/buildtool/serve_api/serve_service/target_utils.cpp
index c9268f63..7a94c9ee 100644
--- a/src/buildtool/serve_api/serve_service/target_utils.cpp
+++ b/src/buildtool/serve_api/serve_service/target_utils.cpp
@@ -38,13 +38,12 @@ auto IsTreeInRepo(std::string const& tree_id,
auto wrapped_logger = std::make_shared<GitRepo::anon_logger_t>(
[logger, repo_path, tree_id](auto const& msg, bool fatal) {
if (fatal) {
- auto err = fmt::format(
- "ServeTarget: While checking existence of tree {} "
- "in repository {}:\n{}",
- tree_id,
- repo_path.string(),
- msg);
- logger->Emit(LogLevel::Info, err);
+ logger->Emit(LogLevel::Info,
+ "ServeTarget: While checking existence of "
+ "tree {} in repository {}:\n{}",
+ tree_id,
+ repo_path.string(),
+ msg);
}
});
if (auto res = repo->CheckTreeExists(tree_id, wrapped_logger)) {
@@ -238,13 +237,12 @@ auto GetBlobContent(std::filesystem::path const& repo_path,
auto wrapped_logger = std::make_shared<GitRepo::anon_logger_t>(
[logger, repo_path, tree_id](auto const& msg, bool fatal) {
if (fatal) {
- auto err = fmt::format(
- "ServeTargetVariables: While checking if tree {} "
- "exists in repository {}:\n{}",
- tree_id,
- repo_path.string(),
- msg);
- logger->Emit(LogLevel::Debug, err);
+ logger->Emit(LogLevel::Debug,
+ "ServeTargetVariables: While checking if "
+ "tree {} exists in repository {}:\n{}",
+ tree_id,
+ repo_path.string(),
+ msg);
}
});
if (repo->CheckTreeExists(tree_id, wrapped_logger) == true) {
@@ -255,26 +253,25 @@ auto GetBlobContent(std::filesystem::path const& repo_path,
[logger, repo_path, blob_id = entry_info->id](
auto const& msg, bool fatal) {
if (fatal) {
- auto err = fmt::format(
+ logger->Emit(
+ LogLevel::Debug,
"ServeTargetVariables: While retrieving "
"blob {} from repository {}:\n{}",
blob_id,
repo_path.string(),
msg);
- logger->Emit(LogLevel::Debug, err);
}
});
// get blob content
return repo->TryReadBlob(entry_info->id, wrapped_logger);
}
// trace failure to get entry
- auto err = fmt::format(
- "ServeTargetVariables: Failed to retrieve entry {} in "
- "tree {} from repository {}",
- rel_path,
- tree_id,
- repo_path.string());
- logger->Emit(LogLevel::Debug, err);
+ logger->Emit(LogLevel::Debug,
+ "ServeTargetVariables: Failed to retrieve entry "
+ "{} in tree {} from repository {}",
+ rel_path,
+ tree_id,
+ repo_path.string());
return std::pair(false, std::nullopt); // could not read blob
}
}