15 #ifndef GOOGLE_CLOUD_CPP_GOOGLE_CLOUD_SPANNER_RETRY_POLICY_H 16 #define GOOGLE_CLOUD_CPP_GOOGLE_CLOUD_SPANNER_RETRY_POLICY_H 18 #include "google/cloud/spanner/internal/status_utils.h" 20 #include "google/cloud/internal/retry_policy.h" 30 struct SafeGrpcRetry {
31 static inline bool IsOk(google::cloud::Status
const& status) {
34 static inline bool IsTransientFailure(google::cloud::Status
const& status) {
35 return status.code() == StatusCode::kUnavailable ||
36 status.code() == StatusCode::kResourceExhausted;
38 static inline bool IsPermanentFailure(google::cloud::Status
const& status) {
39 return !IsOk(status) && !IsTransientFailure(status);
44 struct SafeTransactionRerun {
45 static inline bool IsOk(google::cloud::Status
const& status) {
48 static inline bool IsTransientFailure(google::cloud::Status
const& status) {
49 return status.code() == StatusCode::kAborted || IsSessionNotFound(status);
51 static inline bool IsPermanentFailure(google::cloud::Status
const& status) {
52 return !IsOk(status) && !IsTransientFailure(status);
60 internal::SafeGrpcRetry>;
65 internal::SafeGrpcRetry>;
70 google::cloud::Status, internal::SafeGrpcRetry>;
75 internal::SafeTransactionRerun>;
80 google::cloud::Status, internal::SafeTransactionRerun>;
85 google::cloud::Status, internal::SafeTransactionRerun>;
92 #endif // GOOGLE_CLOUD_CPP_GOOGLE_CLOUD_SPANNER_RETRY_POLICY_H google::cloud::internal::LimitedErrorCountRetryPolicy< google::cloud::Status, internal::SafeTransactionRerun > LimitedErrorCountTransactionRerunPolicy
A transaction rerun policy that limits the number of failures.
google::cloud::internal::LimitedTimeRetryPolicy< google::cloud::Status, internal::SafeTransactionRerun > LimitedTimeTransactionRerunPolicy
A transaction rerun policy that limits the duration of the rerun loop.
Contains all the Cloud Spanner C++ client types and functions.
google::cloud::internal::RetryPolicy< google::cloud::Status, internal::SafeGrpcRetry > RetryPolicy
The base class for retry policies.
google::cloud::internal::LimitedTimeRetryPolicy< google::cloud::Status, internal::SafeGrpcRetry > LimitedTimeRetryPolicy
A retry policy that limits based on time.
google::cloud::internal::RetryPolicy< google::cloud::Status, internal::SafeTransactionRerun > TransactionRerunPolicy
The base class for transaction rerun policies.
#define SPANNER_CLIENT_NS
google::cloud::internal::LimitedErrorCountRetryPolicy< google::cloud::Status, internal::SafeGrpcRetry > LimitedErrorCountRetryPolicy
A retry policy that limits the number of times a request can fail.