diff options
author | Alberto Sartori <alberto.sartori@huawei.com> | 2023-12-11 18:26:16 +0100 |
---|---|---|
committer | Alberto Sartori <alberto.sartori@huawei.com> | 2023-12-13 23:04:36 +0100 |
commit | 0d01c2bcd670f5600c337b87115e089f6d48aab5 (patch) | |
tree | 702c21459952c126d1a67430324f93004fe36d04 /src/buildtool/common/cli.hpp | |
parent | 9b3eb0e818f25be8a49b441a55991bcf86697548 (diff) | |
download | justbuild-0d01c2bcd670f5600c337b87115e089f6d48aab5.tar.gz |
Add command line options to tune the retry strategy for rpc calls
Three new command line options have been added:
- `--max-attempts`
- `--initial-backoff-seconds`
- `--max-backoff-seconds`
Diffstat (limited to 'src/buildtool/common/cli.hpp')
-rw-r--r-- | src/buildtool/common/cli.hpp | 28 |
1 files changed, 28 insertions, 0 deletions
diff --git a/src/buildtool/common/cli.hpp b/src/buildtool/common/cli.hpp index e6189880..3409eae8 100644 --- a/src/buildtool/common/cli.hpp +++ b/src/buildtool/common/cli.hpp @@ -86,6 +86,13 @@ struct DiagnosticArguments { std::optional<std::string> dump_nodes{std::nullopt}; }; +/// \brief Arguments required for tuning the retry strategy. +struct RetryArguments { + std::optional<unsigned int> max_attempts{}; + std::optional<unsigned int> initial_backoff_seconds{}; + std::optional<unsigned int> max_backoff_seconds{}; +}; + /// \brief Arguments required for specifying build endpoint. struct EndpointArguments { std::optional<std::filesystem::path> local_root{}; @@ -688,4 +695,25 @@ static inline auto SetupServeArguments( ->required(); } +static inline void SetupRetryArguments( + gsl::not_null<CLI::App*> const& app, + gsl::not_null<RetryArguments*> const& args) { + app->add_option( + "--max-attempts", + args->max_attempts, + "Total number of attempts in case of a remote resource becomes " + "unavailable. Must be greater than 0. (Default: 1)"); + app->add_option( + "--initial-backoff-seconds", + args->initial_backoff_seconds, + "Initial amount of time, in seconds, to wait before retrying a rpc " + "call. The waiting time is doubled at each attempt. Must be greater " + "than 0. (Default: 1)"); + app->add_option("--max-backoff-seconds", + args->max_backoff_seconds, + "The backoff time cannot be bigger than this parameter. " + "Note that some jitter is still added to avoid to overload " + "the resources that survived the outage. (Default: 60)"); +} + #endif // INCLUDED_SRC_BUILDTOOL_COMMON_CLI_HPP |