Notice that this will may result in non-idempotent mutations being resent to the server. Re-trying a SetCell() mutation where the server selects the timestamp can result in multiple copies of the data stored with different timestamps. Only use this policy if your application is prepared to handle such problems, for example, by only querying the last value and setting garbage collection policies to delete the old values.
[[["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\u003eThe latest version of the \u003ccode\u003eAlwaysRetryMutationPolicy\u003c/code\u003e is 2.37.0-rc, with numerous previous versions available for reference, down to version 2.11.0.\u003c/p\u003e\n"],["\u003cp\u003e\u003ccode\u003eAlwaysRetryMutationPolicy\u003c/code\u003e retries all mutations, which may cause non-idempotent mutations to be resent, leading to potential data duplication with different timestamps, so use cautiously.\u003c/p\u003e\n"],["\u003cp\u003eThe policy includes a constructor, \u003ccode\u003eAlwaysRetryMutationPolicy()\u003c/code\u003e, and two key functions: \u003ccode\u003eclone()\u003c/code\u003e, which returns a copy of the policy, and \u003ccode\u003eis_idempotent()\u003c/code\u003e, which determines if a mutation or conditional mutation is idempotent.\u003c/p\u003e\n"],["\u003cp\u003e\u003ccode\u003eis_idempotent()\u003c/code\u003e can take a parameter of either a \u003ccode\u003egoogle::bigtable::v2::Mutation const &\u003c/code\u003e or a \u003ccode\u003egoogle::bigtable::v2::CheckAndMutateRowRequest const &\u003c/code\u003e to determine if it's an idempotent operation.\u003c/p\u003e\n"]]],[],null,["# Class AlwaysRetryMutationPolicy (2.24.0)\n\nVersion 2.24.0keyboard_arrow_down\n\n- [2.42.0-rc (latest)](/cpp/docs/reference/bigtable/latest/classgoogle_1_1cloud_1_1bigtable_1_1AlwaysRetryMutationPolicy)\n- [2.41.0](/cpp/docs/reference/bigtable/2.41.0/classgoogle_1_1cloud_1_1bigtable_1_1AlwaysRetryMutationPolicy)\n- [2.40.0](/cpp/docs/reference/bigtable/2.40.0/classgoogle_1_1cloud_1_1bigtable_1_1AlwaysRetryMutationPolicy)\n- [2.39.0](/cpp/docs/reference/bigtable/2.39.0/classgoogle_1_1cloud_1_1bigtable_1_1AlwaysRetryMutationPolicy)\n- [2.38.0](/cpp/docs/reference/bigtable/2.38.0/classgoogle_1_1cloud_1_1bigtable_1_1AlwaysRetryMutationPolicy)\n- [2.37.0](/cpp/docs/reference/bigtable/2.37.0/classgoogle_1_1cloud_1_1bigtable_1_1AlwaysRetryMutationPolicy)\n- [2.36.0](/cpp/docs/reference/bigtable/2.36.0/classgoogle_1_1cloud_1_1bigtable_1_1AlwaysRetryMutationPolicy)\n- [2.35.0](/cpp/docs/reference/bigtable/2.35.0/classgoogle_1_1cloud_1_1bigtable_1_1AlwaysRetryMutationPolicy)\n- [2.34.0](/cpp/docs/reference/bigtable/2.34.0/classgoogle_1_1cloud_1_1bigtable_1_1AlwaysRetryMutationPolicy)\n- [2.33.0](/cpp/docs/reference/bigtable/2.33.0/classgoogle_1_1cloud_1_1bigtable_1_1AlwaysRetryMutationPolicy)\n- [2.32.0](/cpp/docs/reference/bigtable/2.32.0/classgoogle_1_1cloud_1_1bigtable_1_1AlwaysRetryMutationPolicy)\n- [2.31.0](/cpp/docs/reference/bigtable/2.31.0/classgoogle_1_1cloud_1_1bigtable_1_1AlwaysRetryMutationPolicy)\n- [2.30.0](/cpp/docs/reference/bigtable/2.30.0/classgoogle_1_1cloud_1_1bigtable_1_1AlwaysRetryMutationPolicy)\n- [2.29.0](/cpp/docs/reference/bigtable/2.29.0/classgoogle_1_1cloud_1_1bigtable_1_1AlwaysRetryMutationPolicy)\n- [2.28.0](/cpp/docs/reference/bigtable/2.28.0/classgoogle_1_1cloud_1_1bigtable_1_1AlwaysRetryMutationPolicy)\n- [2.27.0](/cpp/docs/reference/bigtable/2.27.0/classgoogle_1_1cloud_1_1bigtable_1_1AlwaysRetryMutationPolicy)\n- [2.26.0](/cpp/docs/reference/bigtable/2.26.0/classgoogle_1_1cloud_1_1bigtable_1_1AlwaysRetryMutationPolicy)\n- [2.25.1](/cpp/docs/reference/bigtable/2.25.1/classgoogle_1_1cloud_1_1bigtable_1_1AlwaysRetryMutationPolicy)\n- [2.24.0](/cpp/docs/reference/bigtable/2.24.0/classgoogle_1_1cloud_1_1bigtable_1_1AlwaysRetryMutationPolicy)\n- [2.23.0](/cpp/docs/reference/bigtable/2.23.0/classgoogle_1_1cloud_1_1bigtable_1_1AlwaysRetryMutationPolicy)\n- [2.22.1](/cpp/docs/reference/bigtable/2.22.1/classgoogle_1_1cloud_1_1bigtable_1_1AlwaysRetryMutationPolicy)\n- [2.21.0](/cpp/docs/reference/bigtable/2.21.0/classgoogle_1_1cloud_1_1bigtable_1_1AlwaysRetryMutationPolicy)\n- [2.20.0](/cpp/docs/reference/bigtable/2.20.0/classgoogle_1_1cloud_1_1bigtable_1_1AlwaysRetryMutationPolicy)\n- [2.19.0](/cpp/docs/reference/bigtable/2.19.0/classgoogle_1_1cloud_1_1bigtable_1_1AlwaysRetryMutationPolicy)\n- [2.18.0](/cpp/docs/reference/bigtable/2.18.0/classgoogle_1_1cloud_1_1bigtable_1_1AlwaysRetryMutationPolicy)\n- [2.17.0](/cpp/docs/reference/bigtable/2.17.0/classgoogle_1_1cloud_1_1bigtable_1_1AlwaysRetryMutationPolicy)\n- [2.16.0](/cpp/docs/reference/bigtable/2.16.0/classgoogle_1_1cloud_1_1bigtable_1_1AlwaysRetryMutationPolicy)\n- [2.15.1](/cpp/docs/reference/bigtable/2.15.1/classgoogle_1_1cloud_1_1bigtable_1_1AlwaysRetryMutationPolicy)\n- [2.14.0](/cpp/docs/reference/bigtable/2.14.0/classgoogle_1_1cloud_1_1bigtable_1_1AlwaysRetryMutationPolicy)\n- [2.13.0](/cpp/docs/reference/bigtable/2.13.0/classgoogle_1_1cloud_1_1bigtable_1_1AlwaysRetryMutationPolicy)\n- [2.12.0](/cpp/docs/reference/bigtable/2.12.0/classgoogle_1_1cloud_1_1bigtable_1_1AlwaysRetryMutationPolicy)\n- [2.11.0](/cpp/docs/reference/bigtable/2.11.0/classgoogle_1_1cloud_1_1bigtable_1_1AlwaysRetryMutationPolicy) \nImplements a policy that retries all mutations. \nNotice that this will may result in non-idempotent mutations being resent to the server. Re-trying a [SetCell()](/cpp/docs/reference/bigtable/2.24.0/namespacegoogle_1_1cloud_1_1bigtable) mutation where the server selects the timestamp can result in multiple copies of the data stored with different timestamps. Only use this policy if your application is prepared to handle such problems, for example, by only querying the last value and setting garbage collection policies to delete the old values.\n\nConstructors\n------------\n\n### AlwaysRetryMutationPolicy()\n\nFunctions\n---------\n\n### virtual clone() const\n\nReturn a copy of the policy.\n\n### virtual is_idempotent(google::bigtable::v2::Mutation const \\&)\n\nReturn true if the mutation is idempotent.\n\n### virtual is_idempotent(google::bigtable::v2::CheckAndMutateRowRequest const \\&)\n\nReturn true if a conditional mutation is idempotent."]]