diff options
author | tolich <tolich@yandex-team.ru> | 2022-02-10 16:48:42 +0300 |
---|---|---|
committer | Daniil Cherednik <dcherednik@yandex-team.ru> | 2022-02-10 16:48:42 +0300 |
commit | c662862405cbda305d8b2ff7693adf2595e3edc2 (patch) | |
tree | 8e90f9839e52b2f919afad2548603e234c09236f /library/cpp/retry | |
parent | 4de04c154cab33e0eba93458503743261ec13de4 (diff) | |
download | ydb-c662862405cbda305d8b2ff7693adf2595e3edc2.tar.gz |
Restoring authorship annotation for <tolich@yandex-team.ru>. Commit 1 of 2.
Diffstat (limited to 'library/cpp/retry')
-rw-r--r-- | library/cpp/retry/retry.h | 40 | ||||
-rw-r--r-- | library/cpp/retry/utils.cpp | 22 | ||||
-rw-r--r-- | library/cpp/retry/utils.h | 6 |
3 files changed, 34 insertions, 34 deletions
diff --git a/library/cpp/retry/retry.h b/library/cpp/retry/retry.h index c47ff5070f..d4f1648dec 100644 --- a/library/cpp/retry/retry.h +++ b/library/cpp/retry/retry.h @@ -12,23 +12,23 @@ struct TRetryOptions { ui32 RetryCount; - - // TotalDuration = SleepDuration +/- SleepRandomDelta + (attempt * SleepIncrement) + (2**attempt * SleepExponentialMultiplier) + + // TotalDuration = SleepDuration +/- SleepRandomDelta + (attempt * SleepIncrement) + (2**attempt * SleepExponentialMultiplier) TDuration SleepDuration; - TDuration SleepRandomDelta; - TDuration SleepIncrement; - TDuration SleepExponentialMultiplier; + TDuration SleepRandomDelta; + TDuration SleepIncrement; + TDuration SleepExponentialMultiplier; std::function<void(TDuration)> SleepFunction; - TRetryOptions(ui32 retryCount = 3, TDuration sleepDuration = TDuration::Seconds(1), TDuration sleepRandomDelta = TDuration::Zero(), + TRetryOptions(ui32 retryCount = 3, TDuration sleepDuration = TDuration::Seconds(1), TDuration sleepRandomDelta = TDuration::Zero(), TDuration sleepIncrement = TDuration::Zero(), TDuration sleepExponentialMultiplier = TDuration::Zero(), std::function<void(TDuration)> sleepFunction = [](TDuration d) { Sleep(d); }) // can't use Sleep itself due to Win compilation error : RetryCount(retryCount) , SleepDuration(sleepDuration) , SleepRandomDelta(sleepRandomDelta) - , SleepIncrement(sleepIncrement) - , SleepExponentialMultiplier(sleepExponentialMultiplier) + , SleepIncrement(sleepIncrement) + , SleepExponentialMultiplier(sleepExponentialMultiplier) , SleepFunction(sleepFunction) { } @@ -48,26 +48,26 @@ struct TRetryOptions { return *this; } - TRetryOptions& WithIncrement(TDuration sleepIncrement) { - SleepIncrement = sleepIncrement; - return *this; - } - - TRetryOptions& WithExponentialMultiplier(TDuration sleepExponentialMultiplier) { - SleepExponentialMultiplier = sleepExponentialMultiplier; - return *this; + TRetryOptions& WithIncrement(TDuration sleepIncrement) { + SleepIncrement = sleepIncrement; + return *this; } + TRetryOptions& WithExponentialMultiplier(TDuration sleepExponentialMultiplier) { + SleepExponentialMultiplier = sleepExponentialMultiplier; + return *this; + } + TRetryOptions& WithSleepFunction(std::function<void(TDuration)> sleepFunction) { SleepFunction = sleepFunction; return *this; } - // for compatibility attempt == 0 by default - TDuration GetTimeToSleep(ui32 attempt = 0) const { + // for compatibility attempt == 0 by default + TDuration GetTimeToSleep(ui32 attempt = 0) const { return SleepDuration + NRetryPrivate::AddRandomDelta(SleepRandomDelta) + NRetryPrivate::AddIncrement(attempt, SleepIncrement) + NRetryPrivate::AddExponentialMultiplier(attempt, SleepExponentialMultiplier); - } - + } + static TRetryOptions Count(ui32 retryCount) { return TRetryOptions(retryCount); } diff --git a/library/cpp/retry/utils.cpp b/library/cpp/retry/utils.cpp index 24d943f518..e425e282af 100644 --- a/library/cpp/retry/utils.cpp +++ b/library/cpp/retry/utils.cpp @@ -2,19 +2,19 @@ #include <util/random/random.h> -TDuration NRetryPrivate::AddRandomDelta(TDuration maxDelta) { +TDuration NRetryPrivate::AddRandomDelta(TDuration maxDelta) { if (maxDelta == TDuration::Zero()) { - return TDuration::Zero(); + return TDuration::Zero(); } const TDuration delta = TDuration::MicroSeconds(RandomNumber(2 * maxDelta.MicroSeconds())); - return delta - maxDelta; -} - -TDuration NRetryPrivate::AddIncrement(ui32 attempt, TDuration increment) { - return TDuration::MicroSeconds(attempt * increment.MicroSeconds()); -} - -TDuration NRetryPrivate::AddExponentialMultiplier(ui32 attempt, TDuration exponentialMultiplier) { - return TDuration::MicroSeconds((1ull << Min(63u, attempt)) * exponentialMultiplier.MicroSeconds()); + return delta - maxDelta; } + +TDuration NRetryPrivate::AddIncrement(ui32 attempt, TDuration increment) { + return TDuration::MicroSeconds(attempt * increment.MicroSeconds()); +} + +TDuration NRetryPrivate::AddExponentialMultiplier(ui32 attempt, TDuration exponentialMultiplier) { + return TDuration::MicroSeconds((1ull << Min(63u, attempt)) * exponentialMultiplier.MicroSeconds()); +} diff --git a/library/cpp/retry/utils.h b/library/cpp/retry/utils.h index a8fd3d1a89..7d67fd6de0 100644 --- a/library/cpp/retry/utils.h +++ b/library/cpp/retry/utils.h @@ -3,8 +3,8 @@ #include <util/datetime/base.h> namespace NRetryPrivate { - TDuration AddRandomDelta(TDuration delta); - TDuration AddIncrement(ui32 attempt, TDuration increment); - TDuration AddExponentialMultiplier(ui32 attempt, TDuration exponentialMultiplier); + TDuration AddRandomDelta(TDuration delta); + TDuration AddIncrement(ui32 attempt, TDuration increment); + TDuration AddExponentialMultiplier(ui32 attempt, TDuration exponentialMultiplier); } |