Define the interface for controlling how the Bigtable client retries RPC operations.
The C++ client for Bigtable needs to hide partial and temporary failures from the application. However, we need to give the users enough flexibility to control how many attempts are made to reissue operations, how often these attempts are executed, and how to signal that an error has occurred.
The application provides an instance of this class when the Table (or TableAdmin) object is created. This instance serves as a prototype to create new RPCRetryPolicy objects of the same (dynamic) type and with the same initial state.
Functions
clone() const
Return a new copy of this object.
Typically implemented as ```cpp
return std::unique_ptr
[[["Easy to understand","easyToUnderstand","thumb-up"],["Solved my problem","solvedMyProblem","thumb-up"],["Other","otherUp","thumb-up"]],[["Missing the information I need","missingTheInformationINeed","thumb-down"],["Too complicated / too many steps","tooComplicatedTooManySteps","thumb-down"],["Out of date","outOfDate","thumb-down"],["Samples / code issue","samplesCodeIssue","thumb-down"],["Other","otherDown","thumb-down"]],["Last updated 2025-08-14 UTC."],[[["\u003cp\u003eThis document details the \u003ccode\u003eRPCRetryPolicy\u003c/code\u003e class in the Google Cloud Bigtable C++ client, focusing on how it manages retries for RPC operations to handle temporary failures.\u003c/p\u003e\n"],["\u003cp\u003eThe \u003ccode\u003eRPCRetryPolicy\u003c/code\u003e class allows users to customize the number of retry attempts, the frequency of these attempts, and the criteria for determining if an error occurred.\u003c/p\u003e\n"],["\u003cp\u003eInstances of \u003ccode\u003eRPCRetryPolicy\u003c/code\u003e are used as prototypes to create new retry policy objects of the same type and initial state when creating \u003ccode\u003eTable\u003c/code\u003e or \u003ccode\u003eTableAdmin\u003c/code\u003e objects.\u003c/p\u003e\n"],["\u003cp\u003eKey functions include \u003ccode\u003eclone()\u003c/code\u003e for creating copies, \u003ccode\u003eSetup()\u003c/code\u003e for configuring the \u003ccode\u003eClientContext\u003c/code\u003e, and \u003ccode\u003eOnFailure()\u003c/code\u003e for determining if an RPC should be retried after a failure.\u003c/p\u003e\n"],["\u003cp\u003eThe class also provides methods like \u003ccode\u003eIsExhausted()\u003c/code\u003e to check if the retry policy has run out of retries and static methods \u003ccode\u003eIsPermanentFailure()\u003c/code\u003e to identify failures that should not be retried.\u003c/p\u003e\n"]]],[],null,["# Class RPCRetryPolicy (2.11.0)\n\nVersion 2.11.0keyboard_arrow_down\n\n- [2.42.0-rc (latest)](/cpp/docs/reference/bigtable/latest/classgoogle_1_1cloud_1_1bigtable_1_1RPCRetryPolicy)\n- [2.41.0](/cpp/docs/reference/bigtable/2.41.0/classgoogle_1_1cloud_1_1bigtable_1_1RPCRetryPolicy)\n- [2.40.0](/cpp/docs/reference/bigtable/2.40.0/classgoogle_1_1cloud_1_1bigtable_1_1RPCRetryPolicy)\n- [2.39.0](/cpp/docs/reference/bigtable/2.39.0/classgoogle_1_1cloud_1_1bigtable_1_1RPCRetryPolicy)\n- [2.38.0](/cpp/docs/reference/bigtable/2.38.0/classgoogle_1_1cloud_1_1bigtable_1_1RPCRetryPolicy)\n- [2.37.0](/cpp/docs/reference/bigtable/2.37.0/classgoogle_1_1cloud_1_1bigtable_1_1RPCRetryPolicy)\n- [2.36.0](/cpp/docs/reference/bigtable/2.36.0/classgoogle_1_1cloud_1_1bigtable_1_1RPCRetryPolicy)\n- [2.35.0](/cpp/docs/reference/bigtable/2.35.0/classgoogle_1_1cloud_1_1bigtable_1_1RPCRetryPolicy)\n- [2.34.0](/cpp/docs/reference/bigtable/2.34.0/classgoogle_1_1cloud_1_1bigtable_1_1RPCRetryPolicy)\n- [2.33.0](/cpp/docs/reference/bigtable/2.33.0/classgoogle_1_1cloud_1_1bigtable_1_1RPCRetryPolicy)\n- [2.32.0](/cpp/docs/reference/bigtable/2.32.0/classgoogle_1_1cloud_1_1bigtable_1_1RPCRetryPolicy)\n- [2.31.0](/cpp/docs/reference/bigtable/2.31.0/classgoogle_1_1cloud_1_1bigtable_1_1RPCRetryPolicy)\n- [2.30.0](/cpp/docs/reference/bigtable/2.30.0/classgoogle_1_1cloud_1_1bigtable_1_1RPCRetryPolicy)\n- [2.29.0](/cpp/docs/reference/bigtable/2.29.0/classgoogle_1_1cloud_1_1bigtable_1_1RPCRetryPolicy)\n- [2.28.0](/cpp/docs/reference/bigtable/2.28.0/classgoogle_1_1cloud_1_1bigtable_1_1RPCRetryPolicy)\n- [2.27.0](/cpp/docs/reference/bigtable/2.27.0/classgoogle_1_1cloud_1_1bigtable_1_1RPCRetryPolicy)\n- [2.26.0](/cpp/docs/reference/bigtable/2.26.0/classgoogle_1_1cloud_1_1bigtable_1_1RPCRetryPolicy)\n- [2.25.1](/cpp/docs/reference/bigtable/2.25.1/classgoogle_1_1cloud_1_1bigtable_1_1RPCRetryPolicy)\n- [2.24.0](/cpp/docs/reference/bigtable/2.24.0/classgoogle_1_1cloud_1_1bigtable_1_1RPCRetryPolicy)\n- [2.23.0](/cpp/docs/reference/bigtable/2.23.0/classgoogle_1_1cloud_1_1bigtable_1_1RPCRetryPolicy)\n- [2.22.1](/cpp/docs/reference/bigtable/2.22.1/classgoogle_1_1cloud_1_1bigtable_1_1RPCRetryPolicy)\n- [2.21.0](/cpp/docs/reference/bigtable/2.21.0/classgoogle_1_1cloud_1_1bigtable_1_1RPCRetryPolicy)\n- [2.20.0](/cpp/docs/reference/bigtable/2.20.0/classgoogle_1_1cloud_1_1bigtable_1_1RPCRetryPolicy)\n- [2.19.0](/cpp/docs/reference/bigtable/2.19.0/classgoogle_1_1cloud_1_1bigtable_1_1RPCRetryPolicy)\n- [2.18.0](/cpp/docs/reference/bigtable/2.18.0/classgoogle_1_1cloud_1_1bigtable_1_1RPCRetryPolicy)\n- [2.17.0](/cpp/docs/reference/bigtable/2.17.0/classgoogle_1_1cloud_1_1bigtable_1_1RPCRetryPolicy)\n- [2.16.0](/cpp/docs/reference/bigtable/2.16.0/classgoogle_1_1cloud_1_1bigtable_1_1RPCRetryPolicy)\n- [2.15.1](/cpp/docs/reference/bigtable/2.15.1/classgoogle_1_1cloud_1_1bigtable_1_1RPCRetryPolicy)\n- [2.14.0](/cpp/docs/reference/bigtable/2.14.0/classgoogle_1_1cloud_1_1bigtable_1_1RPCRetryPolicy)\n- [2.13.0](/cpp/docs/reference/bigtable/2.13.0/classgoogle_1_1cloud_1_1bigtable_1_1RPCRetryPolicy)\n- [2.12.0](/cpp/docs/reference/bigtable/2.12.0/classgoogle_1_1cloud_1_1bigtable_1_1RPCRetryPolicy)\n- [2.11.0](/cpp/docs/reference/bigtable/2.11.0/classgoogle_1_1cloud_1_1bigtable_1_1RPCRetryPolicy) \nDefine the interface for controlling how the Bigtable client retries RPC operations. \nThe C++ client for Bigtable needs to hide partial and temporary failures from the application. However, we need to give the users enough flexibility to control how many attempts are made to reissue operations, how often these attempts are executed, and how to signal that an error has occurred.\n\nThe application provides an instance of this class when the [Table](/cpp/docs/reference/bigtable/2.11.0/classgoogle_1_1cloud_1_1bigtable_1_1Table) (or [TableAdmin](/cpp/docs/reference/bigtable/2.11.0/classgoogle_1_1cloud_1_1bigtable_1_1TableAdmin)) object is created. This instance serves as a prototype to create new [RPCRetryPolicy](/cpp/docs/reference/bigtable/2.11.0/classgoogle_1_1cloud_1_1bigtable_1_1RPCRetryPolicy) objects of the same (dynamic) type and with the same initial state.\n\nFunctions\n---------\n\n### clone() const\n\nReturn a new copy of this object. \nTypically implemented as \\`\\`\\`cpp\nreturn std::unique_ptr\n\n\n```\n\n```\n\n### Setup(grpc::ClientContext \\&) const\n\nUpdate the ClientContext for the next call.\n\n### OnFailure(Status const \\&)\n\nHandle an RPC failure.\n\n### OnFailure(grpc::Status const \\&)\n\n### virtual IsExhausted() const\n\n### static IsPermanentFailure(Status const \\&)\n\n### static IsPermanentFailure(grpc::Status const \\&)\n\nType Aliases\n------------\n\n### RetryableTraits\n\n**Alias Of** : `internal::SafeGrpcRetry`"]]