This shows how to override the retry policies for iam_v2::PoliciesClient:
auto options =
google::cloud::Options{}
.set<
google::cloud::iam_v2::PoliciesConnectionIdempotencyPolicyOption>(
CustomIdempotencyPolicy().clone())
.set<google::cloud::iam_v2::PoliciesRetryPolicyOption>(
google::cloud::iam_v2::PoliciesLimitedErrorCountRetryPolicy(3)
.clone())
.set<google::cloud::iam_v2::PoliciesBackoffPolicyOption>(
google::cloud::ExponentialBackoffPolicy(
/*initial_delay=*/std::chrono::milliseconds(200),
/*maximum_delay=*/std::chrono::seconds(45),
/*scaling=*/2.0)
.clone());
auto connection = google::cloud::iam_v2::MakePoliciesConnection(options);
// c1 and c2 share the same retry policies
auto c1 = google::cloud::iam_v2::PoliciesClient(connection);
auto c2 = google::cloud::iam_v2::PoliciesClient(connection);
// You can override any of the policies in a new client. This new client
// will share the policies from c1 (or c2) *except* for the retry policy.
auto c3 = google::cloud::iam_v2::PoliciesClient(
connection, google::cloud::Options{}
.set<google::cloud::iam_v2::PoliciesRetryPolicyOption>(
google::cloud::iam_v2::PoliciesLimitedTimeRetryPolicy(
std::chrono::minutes(5))
.clone()));
// You can also override the policies in a single call:
// c3.SomeRpc(..., google::cloud::Options{}
// .set<google::cloud::iam_v2::PoliciesRetryPolicyOption>(
// google::cloud::iam_v2::PoliciesLimitedErrorCountRetryPolicy(10).clone()));
Assuming you have created a custom idempotency policy. Such as:
class CustomIdempotencyPolicy
: public google::cloud::iam_v2::PoliciesConnectionIdempotencyPolicy {
public:
~CustomIdempotencyPolicy() override = default;
std::unique_ptr<google::cloud::iam_v2::PoliciesConnectionIdempotencyPolicy>
clone() const override {
return std::make_unique<CustomIdempotencyPolicy>(*this);
}
// Override inherited functions to define as needed.
};
[[["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-09-04 UTC."],[[["\u003cp\u003eThis document provides guidance on how to override retry policies for \u003ccode\u003eiam_v2::PoliciesClient\u003c/code\u003e in the context of C++ development, specifically within the google cloud libraries.\u003c/p\u003e\n"],["\u003cp\u003eThe latest release candidate version available is 2.37.0-rc, while the stable latest is 2.36.0 and it documents versions all the way back to 2.11.0.\u003c/p\u003e\n"],["\u003cp\u003eYou can create and use a custom idempotency policy, as demonstrated by the \u003ccode\u003eCustomIdempotencyPolicy\u003c/code\u003e example, to define specific behaviors.\u003c/p\u003e\n"],["\u003cp\u003eRetry policies can be set at the connection level and shared among multiple clients, or they can be overridden for individual clients or even for single API calls, offering granular control.\u003c/p\u003e\n"],["\u003cp\u003eOverriding retry policies involves setting \u003ccode\u003ePoliciesRetryPolicyOption\u003c/code\u003e and \u003ccode\u003ePoliciesBackoffPolicyOption\u003c/code\u003e within the \u003ccode\u003egoogle::cloud::Options\u003c/code\u003e object, allowing customization of retry attempts and backoff behavior.\u003c/p\u003e\n"]]],[],null,["Version 2.32.0keyboard_arrow_down\n\n- [2.42.0-rc (latest)](/cpp/docs/reference/iam/latest/iam_v2_1_1PoliciesClient-retry-snippet)\n- [2.41.0](/cpp/docs/reference/iam/2.41.0/iam_v2_1_1PoliciesClient-retry-snippet)\n- [2.40.0](/cpp/docs/reference/iam/2.40.0/iam_v2_1_1PoliciesClient-retry-snippet)\n- [2.39.0](/cpp/docs/reference/iam/2.39.0/iam_v2_1_1PoliciesClient-retry-snippet)\n- [2.38.0](/cpp/docs/reference/iam/2.38.0/iam_v2_1_1PoliciesClient-retry-snippet)\n- [2.37.0](/cpp/docs/reference/iam/2.37.0/iam_v2_1_1PoliciesClient-retry-snippet)\n- [2.36.0](/cpp/docs/reference/iam/2.36.0/iam_v2_1_1PoliciesClient-retry-snippet)\n- [2.35.0](/cpp/docs/reference/iam/2.35.0/iam_v2_1_1PoliciesClient-retry-snippet)\n- [2.34.0](/cpp/docs/reference/iam/2.34.0/iam_v2_1_1PoliciesClient-retry-snippet)\n- [2.33.0](/cpp/docs/reference/iam/2.33.0/iam_v2_1_1PoliciesClient-retry-snippet)\n- [2.32.0](/cpp/docs/reference/iam/2.32.0/iam_v2_1_1PoliciesClient-retry-snippet)\n- [2.31.0](/cpp/docs/reference/iam/2.31.0/iam_v2_1_1PoliciesClient-retry-snippet)\n- [2.30.0](/cpp/docs/reference/iam/2.30.0/iam_v2_1_1PoliciesClient-retry-snippet)\n- [2.29.0](/cpp/docs/reference/iam/2.29.0/iam_v2_1_1PoliciesClient-retry-snippet)\n- [2.28.0](/cpp/docs/reference/iam/2.28.0/iam_v2_1_1PoliciesClient-retry-snippet)\n- [2.27.0](/cpp/docs/reference/iam/2.27.0/iam_v2_1_1PoliciesClient-retry-snippet)\n- [2.26.0](/cpp/docs/reference/iam/2.26.0/iam_v2_1_1PoliciesClient-retry-snippet)\n- [2.25.1](/cpp/docs/reference/iam/2.25.1/iam_v2_1_1PoliciesClient-retry-snippet)\n- [2.24.0](/cpp/docs/reference/iam/2.24.0/iam_v2_1_1PoliciesClient-retry-snippet)\n- [2.23.0](/cpp/docs/reference/iam/2.23.0/iam_v2_1_1PoliciesClient-retry-snippet)\n- [2.22.1](/cpp/docs/reference/iam/2.22.1/iam_v2_1_1PoliciesClient-retry-snippet)\n- [2.21.0](/cpp/docs/reference/iam/2.21.0/iam_v2_1_1PoliciesClient-retry-snippet)\n- [2.20.0](/cpp/docs/reference/iam/2.20.0/iam_v2_1_1PoliciesClient-retry-snippet)\n- [2.19.0](/cpp/docs/reference/iam/2.19.0/iam_v2_1_1PoliciesClient-retry-snippet)\n- [2.18.0](/cpp/docs/reference/iam/2.18.0/iam_v2_1_1PoliciesClient-retry-snippet)\n- [2.17.0](/cpp/docs/reference/iam/2.17.0/iam_v2_1_1PoliciesClient-retry-snippet)\n- [2.16.0](/cpp/docs/reference/iam/2.16.0/iam_v2_1_1PoliciesClient-retry-snippet)\n- [2.15.1](/cpp/docs/reference/iam/2.15.1/iam_v2_1_1PoliciesClient-retry-snippet)\n- [2.14.0](/cpp/docs/reference/iam/2.14.0/iam_v2_1_1PoliciesClient-retry-snippet)\n- [2.13.0](/cpp/docs/reference/iam/2.13.0/iam_v2_1_1PoliciesClient-retry-snippet)\n- [2.12.0](/cpp/docs/reference/iam/2.12.0/iam_v2_1_1PoliciesClient-retry-snippet)\n- [2.11.0](/cpp/docs/reference/iam/2.11.0/iam_v2_1_1PoliciesClient-retry-snippet) \n\nOverride iam_v2::PoliciesClient Retry Policies\n==============================================\n\nThis shows how to override the retry policies for iam_v2::PoliciesClient: \n\n auto options =\n google::cloud::Options{}\n .set\u003c\n google::cloud::iam_v2::PoliciesConnectionIdempotencyPolicyOption\u003e(\n CustomIdempotencyPolicy().clone())\n .set\u003cgoogle::cloud::iam_v2::PoliciesRetryPolicyOption\u003e(\n google::cloud::iam_v2::PoliciesLimitedErrorCountRetryPolicy(3)\n .clone())\n .set\u003cgoogle::cloud::iam_v2::PoliciesBackoffPolicyOption\u003e(\n google::cloud::ExponentialBackoffPolicy(\n /*initial_delay=*/std::chrono::milliseconds(200),\n /*maximum_delay=*/std::chrono::seconds(45),\n /*scaling=*/2.0)\n .clone());\n auto connection = google::cloud::iam_v2::MakePoliciesConnection(options);\n\n // c1 and c2 share the same retry policies\n auto c1 = google::cloud::iam_v2::PoliciesClient(connection);\n auto c2 = google::cloud::iam_v2::PoliciesClient(connection);\n\n // You can override any of the policies in a new client. This new client\n // will share the policies from c1 (or c2) *except* for the retry policy.\n auto c3 = google::cloud::iam_v2::PoliciesClient(\n connection, google::cloud::Options{}\n .set\u003cgoogle::cloud::iam_v2::PoliciesRetryPolicyOption\u003e(\n google::cloud::iam_v2::PoliciesLimitedTimeRetryPolicy(\n std::chrono::minutes(5))\n .clone()));\n\n // You can also override the policies in a single call:\n // c3.SomeRpc(..., google::cloud::Options{}\n // .set\u003cgoogle::cloud::iam_v2::PoliciesRetryPolicyOption\u003e(\n // google::cloud::iam_v2::PoliciesLimitedErrorCountRetryPolicy(10).clone()));\n\nAssuming you have created a custom idempotency policy. Such as: \n\n class CustomIdempotencyPolicy\n : public google::cloud::iam_v2::PoliciesConnectionIdempotencyPolicy {\n public:\n ~CustomIdempotencyPolicy() override = default;\n std::unique_ptr\u003cgoogle::cloud::iam_v2::PoliciesConnectionIdempotencyPolicy\u003e\n clone() const override {\n return std::make_unique\u003cCustomIdempotencyPolicy\u003e(*this);\n }\n // Override inherited functions to define as needed.\n };"]]