From 8744b30b9612354b42474b2a1fb323fce5d182c1 Mon Sep 17 00:00:00 2001 From: Klaus Aehlig Date: Wed, 17 Apr 2024 12:52:42 +0200 Subject: Move retry-related CLI parts into separate libraries ... to simplify reuse. --- src/buildtool/common/retry_cli.hpp | 51 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 51 insertions(+) create mode 100644 src/buildtool/common/retry_cli.hpp (limited to 'src/buildtool/common/retry_cli.hpp') diff --git a/src/buildtool/common/retry_cli.hpp b/src/buildtool/common/retry_cli.hpp new file mode 100644 index 00000000..53076252 --- /dev/null +++ b/src/buildtool/common/retry_cli.hpp @@ -0,0 +1,51 @@ +// Copyright 2024 Huawei Cloud Computing Technology Co., Ltd. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +#ifndef INCLUDED_SRC_BUILDTOOL_COMMON_RETRY_CLI_HPP +#define INCLUDED_SRC_BUILDTOOL_COMMON_RETRY_CLI_HPP + +#include + +#include "CLI/CLI.hpp" +#include "gsl/gsl" + +/// \brief Arguments required for tuning the retry strategy. +struct RetryArguments { + std::optional max_attempts{}; + std::optional initial_backoff_seconds{}; + std::optional max_backoff_seconds{}; +}; + +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 -- cgit v1.2.3