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.
[[["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 webpage provides documentation for the \u003ccode\u003eRPCRetryPolicy\u003c/code\u003e class in the Google Cloud Bigtable C++ client library, offering versioned references.\u003c/p\u003e\n"],["\u003cp\u003eThe \u003ccode\u003eRPCRetryPolicy\u003c/code\u003e class defines how the Bigtable client handles retries of RPC operations, allowing control over the number of attempts, frequency, and error signaling.\u003c/p\u003e\n"],["\u003cp\u003eUsers create an instance of \u003ccode\u003eRPCRetryPolicy\u003c/code\u003e when constructing \u003ccode\u003eTable\u003c/code\u003e or \u003ccode\u003eTableAdmin\u003c/code\u003e objects, serving as a template for creating new retry policy objects.\u003c/p\u003e\n"],["\u003cp\u003eThe \u003ccode\u003eRPCRetryPolicy\u003c/code\u003e includes methods like \u003ccode\u003eclone()\u003c/code\u003e, \u003ccode\u003eSetup()\u003c/code\u003e, \u003ccode\u003eOnFailure()\u003c/code\u003e, and \u003ccode\u003eIsExhausted()\u003c/code\u003e to manage retry behavior and interact with \u003ccode\u003egrpc::ClientContext\u003c/code\u003e and \u003ccode\u003eStatus\u003c/code\u003e objects.\u003c/p\u003e\n"],["\u003cp\u003eThe webpage further includes static functions such as IsPermanentFailure to determine if a failure is permanent and Type Aliases such as \u003ccode\u003eRetryableTraits\u003c/code\u003e for internal safe grpc retry usage.\u003c/p\u003e\n"]]],[],null,["# Class RPCRetryPolicy (2.42.0-rc)\n\nVersion latestkeyboard_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/latest/classgoogle_1_1cloud_1_1bigtable_1_1Table) (or [TableAdmin](/cpp/docs/reference/bigtable/latest/classgoogle_1_1cloud_1_1bigtable_1_1TableAdmin)) object is created. This instance serves as a prototype to create new [RPCRetryPolicy](/cpp/docs/reference/bigtable/latest/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 \n\n return std::unique_ptr\u003cRPCRetryPolicy\u003e(new Foo(*this));\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** : `bigtable_internal::SafeGrpcRetry`"]]