This shows how to override the retry policies for iam_v1::IAMPolicyClient:
auto options =
google::cloud::Options{}
.set<google::cloud::iam_v1::
IAMPolicyConnectionIdempotencyPolicyOption>(
CustomIdempotencyPolicy().clone())
.set<google::cloud::iam_v1::IAMPolicyRetryPolicyOption>(
google::cloud::iam_v1::IAMPolicyLimitedErrorCountRetryPolicy(3)
.clone())
.set<google::cloud::iam_v1::IAMPolicyBackoffPolicyOption>(
google::cloud::ExponentialBackoffPolicy(
/*initial_delay=*/std::chrono::milliseconds(200),
/*maximum_delay=*/std::chrono::seconds(45),
/*scaling=*/2.0)
.clone());
auto connection = google::cloud::iam_v1::MakeIAMPolicyConnection(options);
// c1 and c2 share the same retry policies
auto c1 = google::cloud::iam_v1::IAMPolicyClient(connection);
auto c2 = google::cloud::iam_v1::IAMPolicyClient(connection);
// You can override any of the policies in a new client. This new client
// will share the policies from c1 (or c2) *except* from the retry policy.
auto c3 = google::cloud::iam_v1::IAMPolicyClient(
connection,
google::cloud::Options{}
.set<google::cloud::iam_v1::IAMPolicyRetryPolicyOption>(
google::cloud::iam_v1::IAMPolicyLimitedTimeRetryPolicy(
std::chrono::minutes(5))
.clone()));
// You can also override the policies in a single call:
// c3.SomeRpc(..., google::cloud::Options{}
// .set<google::cloud::iam_v1::IAMPolicyRetryPolicyOption>(
// google::cloud::iam_v1::IAMPolicyLimitedErrorCountRetryPolicy(10).clone()));
Assuming you have created a custom idempotency policy. Such as:
class CustomIdempotencyPolicy
: public google::cloud::iam_v1::IAMPolicyConnectionIdempotencyPolicy {
public:
~CustomIdempotencyPolicy() override = default;
std::unique_ptr<google::cloud::iam_v1::IAMPolicyConnectionIdempotencyPolicy>
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 outlines how to override retry policies for \u003ccode\u003eiam_v1::IAMPolicyClient\u003c/code\u003e in C++, demonstrating the flexibility in managing retry behavior.\u003c/p\u003e\n"],["\u003cp\u003eThe code examples show how to set custom idempotency, retry, and backoff policies using \u003ccode\u003egoogle::cloud::Options\u003c/code\u003e, such as defining a custom \u003ccode\u003eCustomIdempotencyPolicy\u003c/code\u003e.\u003c/p\u003e\n"],["\u003cp\u003eIt is possible to configure retry policies for an entire connection, creating multiple clients that share those policies, or it is also possible to override them for individual clients or even single RPC calls.\u003c/p\u003e\n"],["\u003cp\u003eThe current document also provides a comprehensive list of versioned releases of the \u003ccode\u003eiam\u003c/code\u003e library from version 2.11.0 to 2.37.0, including links to documentation for each version, with version 2.37.0-rc being the latest.\u003c/p\u003e\n"]]],[],null,["Version 2.13.0keyboard_arrow_down\n\n- [2.42.0-rc (latest)](/cpp/docs/reference/iam/latest/iam_v1_1_1IAMPolicyClient-retry-snippet)\n- [2.41.0](/cpp/docs/reference/iam/2.41.0/iam_v1_1_1IAMPolicyClient-retry-snippet)\n- [2.40.0](/cpp/docs/reference/iam/2.40.0/iam_v1_1_1IAMPolicyClient-retry-snippet)\n- [2.39.0](/cpp/docs/reference/iam/2.39.0/iam_v1_1_1IAMPolicyClient-retry-snippet)\n- [2.38.0](/cpp/docs/reference/iam/2.38.0/iam_v1_1_1IAMPolicyClient-retry-snippet)\n- [2.37.0](/cpp/docs/reference/iam/2.37.0/iam_v1_1_1IAMPolicyClient-retry-snippet)\n- [2.36.0](/cpp/docs/reference/iam/2.36.0/iam_v1_1_1IAMPolicyClient-retry-snippet)\n- [2.35.0](/cpp/docs/reference/iam/2.35.0/iam_v1_1_1IAMPolicyClient-retry-snippet)\n- [2.34.0](/cpp/docs/reference/iam/2.34.0/iam_v1_1_1IAMPolicyClient-retry-snippet)\n- [2.33.0](/cpp/docs/reference/iam/2.33.0/iam_v1_1_1IAMPolicyClient-retry-snippet)\n- [2.32.0](/cpp/docs/reference/iam/2.32.0/iam_v1_1_1IAMPolicyClient-retry-snippet)\n- [2.31.0](/cpp/docs/reference/iam/2.31.0/iam_v1_1_1IAMPolicyClient-retry-snippet)\n- [2.30.0](/cpp/docs/reference/iam/2.30.0/iam_v1_1_1IAMPolicyClient-retry-snippet)\n- [2.29.0](/cpp/docs/reference/iam/2.29.0/iam_v1_1_1IAMPolicyClient-retry-snippet)\n- [2.28.0](/cpp/docs/reference/iam/2.28.0/iam_v1_1_1IAMPolicyClient-retry-snippet)\n- [2.27.0](/cpp/docs/reference/iam/2.27.0/iam_v1_1_1IAMPolicyClient-retry-snippet)\n- [2.26.0](/cpp/docs/reference/iam/2.26.0/iam_v1_1_1IAMPolicyClient-retry-snippet)\n- [2.25.1](/cpp/docs/reference/iam/2.25.1/iam_v1_1_1IAMPolicyClient-retry-snippet)\n- [2.24.0](/cpp/docs/reference/iam/2.24.0/iam_v1_1_1IAMPolicyClient-retry-snippet)\n- [2.23.0](/cpp/docs/reference/iam/2.23.0/iam_v1_1_1IAMPolicyClient-retry-snippet)\n- [2.22.1](/cpp/docs/reference/iam/2.22.1/iam_v1_1_1IAMPolicyClient-retry-snippet)\n- [2.21.0](/cpp/docs/reference/iam/2.21.0/iam_v1_1_1IAMPolicyClient-retry-snippet)\n- [2.20.0](/cpp/docs/reference/iam/2.20.0/iam_v1_1_1IAMPolicyClient-retry-snippet)\n- [2.19.0](/cpp/docs/reference/iam/2.19.0/iam_v1_1_1IAMPolicyClient-retry-snippet)\n- [2.18.0](/cpp/docs/reference/iam/2.18.0/iam_v1_1_1IAMPolicyClient-retry-snippet)\n- [2.17.0](/cpp/docs/reference/iam/2.17.0/iam_v1_1_1IAMPolicyClient-retry-snippet)\n- [2.16.0](/cpp/docs/reference/iam/2.16.0/iam_v1_1_1IAMPolicyClient-retry-snippet)\n- [2.15.1](/cpp/docs/reference/iam/2.15.1/iam_v1_1_1IAMPolicyClient-retry-snippet)\n- [2.14.0](/cpp/docs/reference/iam/2.14.0/iam_v1_1_1IAMPolicyClient-retry-snippet)\n- [2.13.0](/cpp/docs/reference/iam/2.13.0/iam_v1_1_1IAMPolicyClient-retry-snippet)\n- [2.12.0](/cpp/docs/reference/iam/2.12.0/iam_v1_1_1IAMPolicyClient-retry-snippet)\n- [2.11.0](/cpp/docs/reference/iam/2.11.0/iam_v1_1_1IAMPolicyClient-retry-snippet) \n\nOverride iam_v1::IAMPolicyClient Retry Policies\n===============================================\n\nThis shows how to override the retry policies for iam_v1::IAMPolicyClient: \n\n auto options =\n google::cloud::Options{}\n .set\u003cgoogle::cloud::iam_v1::\n IAMPolicyConnectionIdempotencyPolicyOption\u003e(\n CustomIdempotencyPolicy().clone())\n .set\u003cgoogle::cloud::iam_v1::IAMPolicyRetryPolicyOption\u003e(\n google::cloud::iam_v1::IAMPolicyLimitedErrorCountRetryPolicy(3)\n .clone())\n .set\u003cgoogle::cloud::iam_v1::IAMPolicyBackoffPolicyOption\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_v1::MakeIAMPolicyConnection(options);\n\n // c1 and c2 share the same retry policies\n auto c1 = google::cloud::iam_v1::IAMPolicyClient(connection);\n auto c2 = google::cloud::iam_v1::IAMPolicyClient(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* from the retry policy.\n auto c3 = google::cloud::iam_v1::IAMPolicyClient(\n connection,\n google::cloud::Options{}\n .set\u003cgoogle::cloud::iam_v1::IAMPolicyRetryPolicyOption\u003e(\n google::cloud::iam_v1::IAMPolicyLimitedTimeRetryPolicy(\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_v1::IAMPolicyRetryPolicyOption\u003e(\n // google::cloud::iam_v1::IAMPolicyLimitedErrorCountRetryPolicy(10).clone()));\n\nAssuming you have created a custom idempotency policy. Such as: \n\n class CustomIdempotencyPolicy\n : public google::cloud::iam_v1::IAMPolicyConnectionIdempotencyPolicy {\n public:\n ~CustomIdempotencyPolicy() override = default;\n std::unique_ptr\u003cgoogle::cloud::iam_v1::IAMPolicyConnectionIdempotencyPolicy\u003e\n clone() const override {\n return std::make_unique\u003cCustomIdempotencyPolicy\u003e(*this);\n }\n // Override inherited functions to define as needed.\n };"]]