From 0d01c2bcd670f5600c337b87115e089f6d48aab5 Mon Sep 17 00:00:00 2001 From: Alberto Sartori Date: Mon, 11 Dec 2023 18:26:16 +0100 Subject: 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` --- src/buildtool/common/cli.hpp | 28 ++++++++++++++++++++++++++++ 1 file changed, 28 insertions(+) (limited to 'src/buildtool/common/cli.hpp') 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 dump_nodes{std::nullopt}; }; +/// \brief Arguments required for tuning the retry strategy. +struct RetryArguments { + std::optional max_attempts{}; + std::optional initial_backoff_seconds{}; + std::optional max_backoff_seconds{}; +}; + /// \brief Arguments required for specifying build endpoint. struct EndpointArguments { std::optional local_root{}; @@ -688,4 +695,25 @@ static inline auto SetupServeArguments( ->required(); } +static inline void SetupRetryArguments( + gsl::not_null const& app, + gsl::not_null 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 -- cgit v1.2.3