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* for 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\u003eThe webpage provides documentation for overriding retry policies for \u003ccode\u003eiam_v1::IAMPolicyClient\u003c/code\u003e in the Google Cloud C++ client library, covering versions from 2.11.0 to the latest release candidate, 2.37.0-rc.\u003c/p\u003e\n"],["\u003cp\u003eUsers can customize retry policies by setting options such as \u003ccode\u003eIAMPolicyConnectionIdempotencyPolicyOption\u003c/code\u003e, \u003ccode\u003eIAMPolicyRetryPolicyOption\u003c/code\u003e, and \u003ccode\u003eIAMPolicyBackoffPolicyOption\u003c/code\u003e, using custom classes or built-in options like \u003ccode\u003eIAMPolicyLimitedErrorCountRetryPolicy\u003c/code\u003e and \u003ccode\u003eExponentialBackoffPolicy\u003c/code\u003e.\u003c/p\u003e\n"],["\u003cp\u003eMultiple clients can share the same retry policies by utilizing the same connection, and individual clients can have their policies modified, allowing for unique configurations, even down to specific RPC calls.\u003c/p\u003e\n"],["\u003cp\u003eThe content presents how to implement a custom \u003ccode\u003eCustomIdempotencyPolicy\u003c/code\u003e class, which allows overriding inherited functions to be defined as needed.\u003c/p\u003e\n"]]],[],null,["Version 2.21.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* for 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 };"]]