diff options
author | Klaus Aehlig <klaus.aehlig@huawei.com> | 2024-10-28 12:45:14 +0100 |
---|---|---|
committer | Klaus Aehlig <klaus.aehlig@huawei.com> | 2024-10-28 13:56:46 +0100 |
commit | 0c1e4bdebd705bde7c8a03b671c31dcd354aebcd (patch) | |
tree | b685aaa1369f0dc77989192320e7b6687acdc515 /src/buildtool/common/remote/retry.cpp | |
parent | 68e3d9129f84cdfc60aa0bc6efa518a01200bccd (diff) | |
download | justbuild-0c1e4bdebd705bde7c8a03b671c31dcd354aebcd.tar.gz |
WithRetry: Support reduced log level for failures
In some situations, we use a retry strategy, but in case of complete
failure have another way of attempting that task. In this case, we
should not emmit an error message right away. Add support for this.
Diffstat (limited to 'src/buildtool/common/remote/retry.cpp')
-rw-r--r-- | src/buildtool/common/remote/retry.cpp | 11 |
1 files changed, 7 insertions, 4 deletions
diff --git a/src/buildtool/common/remote/retry.cpp b/src/buildtool/common/remote/retry.cpp index 00d275cd..8c97bf38 100644 --- a/src/buildtool/common/remote/retry.cpp +++ b/src/buildtool/common/remote/retry.cpp @@ -15,6 +15,7 @@ #include "src/buildtool/common/remote/retry.hpp" #ifndef BOOTSTRAP_BUILD_TOOL +#include <algorithm> #include <chrono> #include <thread> @@ -22,7 +23,8 @@ auto WithRetry(CallableReturningRetryResponse const& f, RetryConfig const& retry_config, - Logger const& logger) noexcept -> bool { + Logger const& logger, + LogLevel fatal_log_level) noexcept -> bool { try { auto const& attempts = retry_config.GetMaxAttempts(); for (auto attempt = 1U; attempt <= attempts; ++attempt) { @@ -32,7 +34,7 @@ auto WithRetry(CallableReturningRetryResponse const& f, } if (fatal) { if (error_msg) { - logger.Emit(LogLevel::Error, "{}", *error_msg); + logger.Emit(fatal_log_level, "{}", *error_msg); } return false; } @@ -51,7 +53,7 @@ auto WithRetry(CallableReturningRetryResponse const& f, } else { if (error_msg) { - logger.Emit(LogLevel::Error, + logger.Emit(fatal_log_level, "After {} attempts: {}", attempt, *error_msg); @@ -59,7 +61,8 @@ auto WithRetry(CallableReturningRetryResponse const& f, } } } catch (...) { - logger.Emit(LogLevel::Error, "WithRetry: caught unknown exception"); + logger.Emit(std::min(fatal_log_level, LogLevel::Warning), + "WithRetry: caught unknown exception"); } return false; } |