Skip to content

Commit 4448e09

Browse files
authored
fix(spanner): apply policy options in (generated) client ctor (#8064)
Apply any retry/backoff/polling policies in the client options instead of the connection options. This makes more logical sense (particularly so when we consider per-operation options), and is actually required until we fix #8054. Fixes #8037.
1 parent a260db2 commit 4448e09

File tree

3 files changed

+52
-60
lines changed

3 files changed

+52
-60
lines changed

google/cloud/spanner/admin/integration_tests/backup_extra_integration_test.cc

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -79,7 +79,8 @@ class BackupExtraIntegrationTest
7979
public:
8080
BackupExtraIntegrationTest()
8181
: generator_(google::cloud::internal::MakeDefaultPRNG()),
82-
database_admin_client_(spanner_admin::MakeDatabaseAdminConnection(
82+
database_admin_client_(
83+
spanner_admin::MakeDatabaseAdminConnection(),
8384
Options{}
8485
.set<spanner_admin::DatabaseAdminRetryPolicyOption>(
8586
spanner_admin::DatabaseAdminLimitedTimeRetryPolicy(
@@ -94,7 +95,7 @@ class BackupExtraIntegrationTest
9495
LimitedTimeRetryPolicy(std::chrono::hours(3)),
9596
ExponentialBackoffPolicy(std::chrono::seconds(1),
9697
std::chrono::minutes(1), 2.0))
97-
.clone()))) {}
98+
.clone())) {}
9899

99100
protected:
100101
google::cloud::internal::DefaultPRNG generator_;

google/cloud/spanner/admin/integration_tests/backup_integration_test.cc

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -69,7 +69,8 @@ class BackupIntegrationTest
6969
public:
7070
BackupIntegrationTest()
7171
: generator_(google::cloud::internal::MakeDefaultPRNG()),
72-
database_admin_client_(spanner_admin::MakeDatabaseAdminConnection(
72+
database_admin_client_(
73+
spanner_admin::MakeDatabaseAdminConnection(),
7374
Options{}
7475
.set<spanner_admin::DatabaseAdminRetryPolicyOption>(
7576
spanner_admin::DatabaseAdminLimitedTimeRetryPolicy(
@@ -84,7 +85,7 @@ class BackupIntegrationTest
8485
LimitedTimeRetryPolicy(std::chrono::hours(3)),
8586
ExponentialBackoffPolicy(std::chrono::seconds(1),
8687
std::chrono::minutes(1), 2.0))
87-
.clone()))) {}
88+
.clone())) {}
8889

8990
protected:
9091
google::cloud::internal::DefaultPRNG generator_;

google/cloud/spanner/samples/samples.cc

Lines changed: 46 additions & 56 deletions
Original file line numberDiff line numberDiff line change
@@ -3064,17 +3064,16 @@ void CustomInstanceAdminPolicies(std::vector<std::string> argv) {
30643064
/*scaling=*/4.0))
30653065
.clone();
30663066
auto client = google::cloud::spanner_admin::InstanceAdminClient(
3067-
google::cloud::spanner_admin::MakeInstanceAdminConnection(
3068-
google::cloud::Options{}
3069-
.set<google::cloud::spanner_admin::
3070-
InstanceAdminRetryPolicyOption>(
3071-
std::move(retry_policy))
3072-
.set<google::cloud::spanner_admin::
3073-
InstanceAdminBackoffPolicyOption>(
3074-
std::move(backoff_policy))
3075-
.set<google::cloud::spanner_admin::
3076-
InstanceAdminPollingPolicyOption>(
3077-
std::move(polling_policy))));
3067+
google::cloud::spanner_admin::MakeInstanceAdminConnection(),
3068+
google::cloud::Options{}
3069+
.set<google::cloud::spanner_admin::InstanceAdminRetryPolicyOption>(
3070+
std::move(retry_policy))
3071+
.set<
3072+
google::cloud::spanner_admin::InstanceAdminBackoffPolicyOption>(
3073+
std::move(backoff_policy))
3074+
.set<
3075+
google::cloud::spanner_admin::InstanceAdminPollingPolicyOption>(
3076+
std::move(polling_policy)));
30783077

30793078
// Use the client as usual.
30803079
std::cout << "Available configs for project " << project_id << "\n";
@@ -3129,17 +3128,16 @@ void CustomDatabaseAdminPolicies(std::vector<std::string> argv) {
31293128
/*scaling=*/4.0))
31303129
.clone();
31313130
auto client = google::cloud::spanner_admin::DatabaseAdminClient(
3132-
google::cloud::spanner_admin::MakeDatabaseAdminConnection(
3133-
google::cloud::Options{}
3134-
.set<google::cloud::spanner_admin::
3135-
DatabaseAdminRetryPolicyOption>(
3136-
std::move(retry_policy))
3137-
.set<google::cloud::spanner_admin::
3138-
DatabaseAdminBackoffPolicyOption>(
3139-
std::move(backoff_policy))
3140-
.set<google::cloud::spanner_admin::
3141-
DatabaseAdminPollingPolicyOption>(
3142-
std::move(polling_policy))));
3131+
google::cloud::spanner_admin::MakeDatabaseAdminConnection(),
3132+
google::cloud::Options{}
3133+
.set<google::cloud::spanner_admin::DatabaseAdminRetryPolicyOption>(
3134+
std::move(retry_policy))
3135+
.set<
3136+
google::cloud::spanner_admin::DatabaseAdminBackoffPolicyOption>(
3137+
std::move(backoff_policy))
3138+
.set<
3139+
google::cloud::spanner_admin::DatabaseAdminPollingPolicyOption>(
3140+
std::move(polling_policy)));
31433141

31443142
// Use the client as usual.
31453143
spanner::Instance instance(project_id, instance_id);
@@ -3830,19 +3828,16 @@ void RunAll(bool emulator) {
38303828
std::cout << "Running samples on " << instance_id << std::endl;
38313829

38323830
google::cloud::spanner_admin::InstanceAdminClient instance_admin_client(
3833-
google::cloud::spanner_admin::MakeInstanceAdminConnection(
3834-
google::cloud::Options{}
3835-
.set<
3836-
google::cloud::spanner_admin::InstanceAdminRetryPolicyOption>(
3837-
google::cloud::spanner_admin::
3838-
InstanceAdminLimitedTimeRetryPolicy(
3839-
std::chrono::minutes(60))
3840-
.clone())
3841-
.set<google::cloud::spanner_admin::
3842-
InstanceAdminBackoffPolicyOption>(
3843-
google::cloud::spanner::ExponentialBackoffPolicy(
3844-
std::chrono::seconds(1), std::chrono::minutes(1), 2.0)
3845-
.clone())));
3831+
google::cloud::spanner_admin::MakeInstanceAdminConnection(),
3832+
google::cloud::Options{}
3833+
.set<google::cloud::spanner_admin::InstanceAdminRetryPolicyOption>(
3834+
google::cloud::spanner_admin::InstanceAdminLimitedTimeRetryPolicy(
3835+
std::chrono::minutes(60))
3836+
.clone())
3837+
.set<google::cloud::spanner_admin::InstanceAdminBackoffPolicyOption>(
3838+
google::cloud::spanner::ExponentialBackoffPolicy(
3839+
std::chrono::seconds(1), std::chrono::minutes(1), 2.0)
3840+
.clone()));
38463841

38473842
SampleBanner("get-instance");
38483843
GetInstance(instance_admin_client, project_id, instance_id);
@@ -3866,28 +3861,23 @@ void RunAll(bool emulator) {
38663861
google::cloud::spanner_testing::RandomDatabaseName(generator);
38673862

38683863
google::cloud::spanner_admin::DatabaseAdminClient database_admin_client(
3869-
google::cloud::spanner_admin::MakeDatabaseAdminConnection(
3870-
google::cloud::Options{}
3871-
.set<
3872-
google::cloud::spanner_admin::DatabaseAdminRetryPolicyOption>(
3873-
google::cloud::spanner_admin::
3874-
DatabaseAdminLimitedTimeRetryPolicy(
3875-
std::chrono::minutes(60))
3876-
.clone())
3877-
.set<google::cloud::spanner_admin::
3878-
DatabaseAdminBackoffPolicyOption>(
3864+
google::cloud::spanner_admin::MakeDatabaseAdminConnection(),
3865+
google::cloud::Options{}
3866+
.set<google::cloud::spanner_admin::DatabaseAdminRetryPolicyOption>(
3867+
google::cloud::spanner_admin::DatabaseAdminLimitedTimeRetryPolicy(
3868+
std::chrono::minutes(60))
3869+
.clone())
3870+
.set<google::cloud::spanner_admin::DatabaseAdminBackoffPolicyOption>(
3871+
google::cloud::spanner::ExponentialBackoffPolicy(
3872+
std::chrono::seconds(1), std::chrono::minutes(1), 2.0)
3873+
.clone())
3874+
.set<google::cloud::spanner_admin::DatabaseAdminPollingPolicyOption>(
3875+
google::cloud::spanner::GenericPollingPolicy<>(
3876+
google::cloud::spanner::LimitedTimeRetryPolicy(
3877+
std::chrono::hours(2)),
38793878
google::cloud::spanner::ExponentialBackoffPolicy(
3880-
std::chrono::seconds(1), std::chrono::minutes(1), 2.0)
3881-
.clone())
3882-
.set<google::cloud::spanner_admin::
3883-
DatabaseAdminPollingPolicyOption>(
3884-
google::cloud::spanner::GenericPollingPolicy<>(
3885-
google::cloud::spanner::LimitedTimeRetryPolicy(
3886-
std::chrono::hours(2)),
3887-
google::cloud::spanner::ExponentialBackoffPolicy(
3888-
std::chrono::seconds(1), std::chrono::minutes(1),
3889-
2.0))
3890-
.clone())));
3879+
std::chrono::seconds(1), std::chrono::minutes(1), 2.0))
3880+
.clone()));
38913881

38923882
RunAllSlowInstanceTests(instance_admin_client, database_admin_client,
38933883
generator, project_id, test_iam_service_account,

0 commit comments

Comments
 (0)