Stay organized with collections Save and categorize content based on your preferences.
Define the interface for retry policies.
Functions OnFailure(Status const &)Return true if the retry loop should continue after status
.
This functions are typically used in a retry loop, where they control whether to continue, whether a failure should be retried, and finally how to format the error message.
std::unique_ptr<RetryPolicy> policy = ....;
Status status;
while (!policy->IsExhausted()) {
auto response = try_rpc(); // typically `response` is StatusOr<T>
if (response.ok()) return response;
status = std::move(response).status();
if (!policy->OnFailure(response->status())) {
if (policy->IsPermanentFailure(response->status()) {
return StatusModifiedToSayPermanentFailureCausedTheProblem(status);
}
return StatusModifiedToSayPolicyExhaustionCausedTheProblem(status);
}
// sleep, which may exhaust the policy, even if it was not exhausted in
// the last call.
}
return StatusModifiedToSayPolicyExhaustionCausedTheProblem(status);
Parameter Name Description status
Status const &
bool
IsExhausted() const
Return true if the retry policy should stop as the retry limit has been reached.
This functions are typically used in a retry loop, where they control whether to continue, whether a failure should be retried, and finally how to format the error message.
std::unique_ptr<RetryPolicy> policy = ....;
Status status;
while (!policy->IsExhausted()) {
auto response = try_rpc(); // typically `response` is StatusOr<T>
if (response.ok()) return response;
status = std::move(response).status();
if (!policy->OnFailure(response->status())) {
if (policy->IsPermanentFailure(response->status()) {
return StatusModifiedToSayPermanentFailureCausedTheProblem(status);
}
return StatusModifiedToSayPolicyExhaustionCausedTheProblem(status);
}
// sleep, which may exhaust the policy, even if it was not exhausted in
// the last call.
}
return StatusModifiedToSayPolicyExhaustionCausedTheProblem(status);
Returns Type Description bool
IsPermanentFailure(Status const &) const
Return true if status
is treated as a permanent (and therefore non-retryable) error.
This functions are typically used in a retry loop, where they control whether to continue, whether a failure should be retried, and finally how to format the error message.
std::unique_ptr<RetryPolicy> policy = ....;
Status status;
while (!policy->IsExhausted()) {
auto response = try_rpc(); // typically `response` is StatusOr<T>
if (response.ok()) return response;
status = std::move(response).status();
if (!policy->OnFailure(response->status())) {
if (policy->IsPermanentFailure(response->status()) {
return StatusModifiedToSayPermanentFailureCausedTheProblem(status);
}
return StatusModifiedToSayPolicyExhaustionCausedTheProblem(status);
}
// sleep, which may exhaust the policy, even if it was not exhausted in
// the last call.
}
return StatusModifiedToSayPolicyExhaustionCausedTheProblem(status);
Parameter Name Description status
Status const &
bool
Except as otherwise noted, the content of this page is licensed under the Creative Commons Attribution 4.0 License, and code samples are licensed under the Apache 2.0 License. For details, see the Google Developers Site Policies. Java is a registered trademark of Oracle and/or its affiliates.
Last updated 2025-08-14 UTC.
[[["Easy to understand","easyToUnderstand","thumb-up"],["Solved my problem","solvedMyProblem","thumb-up"],["Other","otherUp","thumb-up"]],[["Hard to understand","hardToUnderstand","thumb-down"],["Incorrect information or sample code","incorrectInformationOrSampleCode","thumb-down"],["Missing the information/samples I need","missingTheInformationSamplesINeed","thumb-down"],["Other","otherDown","thumb-down"]],["Last updated 2025-08-14 UTC."],[[["This document details the `RetryPolicy` interface for C++, covering a range of versions from 2.10.1 to the latest release candidate 2.37.0-rc."],["The `OnFailure` function determines if a retry loop should continue based on the provided `Status`, which is a constant reference to the status object."],["The `IsExhausted` function checks if the retry policy's limit has been reached, signaling whether the retry process should halt."],["The `IsPermanentFailure` function determines whether a given `Status` represents a non-retryable error."],["The functions `OnFailure`, `IsExhausted`, and `IsPermanentFailure` are all integral to controlling retry loops, determining when to stop, and if a given failure should be retried."]]],[]]
RetroSearch is an open source project built by @garambo | Open a GitHub Issue
Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo
HTML:
3.2
| Encoding:
UTF-8
| Version:
0.7.4