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, outlining its role in managing RPC operation retries.\u003c/p\u003e\n"],["\u003cp\u003eThe \u003ccode\u003eRPCRetryPolicy\u003c/code\u003e class defines the interface for controlling how the Bigtable client handles retrying RPC operations, including the number of attempts, timing between attempts, and error signaling.\u003c/p\u003e\n"],["\u003cp\u003eUsers can customize retry behavior by providing an instance of \u003ccode\u003eRPCRetryPolicy\u003c/code\u003e when creating \u003ccode\u003eTable\u003c/code\u003e or \u003ccode\u003eTableAdmin\u003c/code\u003e objects, and this instance acts as a template for generating new retry policy objects.\u003c/p\u003e\n"],["\u003cp\u003eThe class includes functions like \u003ccode\u003eclone()\u003c/code\u003e, \u003ccode\u003eSetup()\u003c/code\u003e, \u003ccode\u003eOnFailure()\u003c/code\u003e, \u003ccode\u003eIsExhausted()\u003c/code\u003e, and \u003ccode\u003eIsPermanentFailure()\u003c/code\u003e to manage the retry process and determine when to retry or stop retrying.\u003c/p\u003e\n"],["\u003cp\u003eThe page also lists the available versions of the Bigtable client library, ranging from 2.11.0 up to the latest release candidate 2.37.0-rc, along with links to the specific documentation for the \u003ccode\u003eRPCRetryPolicy\u003c/code\u003e for each of those versions.\u003c/p\u003e\n"]]],[],null,["# Class RPCRetryPolicy (2.32.0)\n\nVersion 2.32.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.32.0/classgoogle_1_1cloud_1_1bigtable_1_1Table) (or [TableAdmin](/cpp/docs/reference/bigtable/2.32.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.32.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 \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`"]]