Skip to content

Commit f9df8a2

Browse files
authored
Spanner gapic migration lro methods (#3166)
Migrate longrunning methods to GAPIC including: createDatabase, updateDatabaseDdl, createInstance, and updateInstance.
1 parent 6cc31d1 commit f9df8a2

File tree

18 files changed

+522
-215
lines changed

18 files changed

+522
-215
lines changed

google-cloud-bom/pom.xml

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -170,9 +170,9 @@
170170
<testing.version>0.46.1-alpha-SNAPSHOT</testing.version><!-- {x-version-update:google-cloud-testing:current} -->
171171

172172
<api-common.version>1.5.0</api-common.version>
173-
<gax.version>1.25.0</gax.version>
174-
<gax-grpc.version>1.25.0</gax-grpc.version>
175-
<gax-httpjson.version>0.42.0</gax-httpjson.version>
173+
<gax.version>1.26.0</gax.version>
174+
<gax-grpc.version>1.26.0</gax-grpc.version>
175+
<gax-httpjson.version>0.43.0</gax-httpjson.version>
176176
<generated-proto-beta.version>0.11.0</generated-proto-beta.version>
177177
<generated-proto-ga.version>1.10.0</generated-proto-ga.version>
178178
</properties>

google-cloud-examples/src/main/java/com/google/cloud/examples/spanner/snippets/DatabaseAdminClientSnippets.java

Lines changed: 17 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -22,17 +22,19 @@
2222

2323
package com.google.cloud.examples.spanner.snippets;
2424

25+
import com.google.api.gax.longrunning.OperationFuture;
2526
import com.google.api.gax.paging.Page;
2627
import com.google.common.collect.Iterables;
2728
import com.google.cloud.spanner.DatabaseAdminClient;
2829
import com.google.cloud.spanner.Options;
2930
import com.google.cloud.spanner.Database;
30-
import com.google.cloud.spanner.Operation;
31+
import com.google.cloud.spanner.SpannerExceptionFactory;
3132
import com.google.spanner.admin.database.v1.CreateDatabaseMetadata;
3233

3334
import java.util.ArrayList;
3435
import java.util.Arrays;
3536
import java.util.List;
37+
import java.util.concurrent.ExecutionException;
3638

3739
/**
3840
* This class contains snippets for {@link DatabaseAdminClient} interface.
@@ -53,7 +55,7 @@ public DatabaseAdminClientSnippets(DatabaseAdminClient dbAdminClient) {
5355
// [VARIABLE my_database_id]
5456
public Database createDatabase(String instanceId, String databaseId) {
5557
// [START createDatabase]
56-
Operation<Database, CreateDatabaseMetadata> op = dbAdminClient
58+
OperationFuture<Database, CreateDatabaseMetadata> op = dbAdminClient
5759
.createDatabase(
5860
instanceId,
5961
databaseId,
@@ -70,9 +72,13 @@ public Database createDatabase(String instanceId, String databaseId) {
7072
+ " AlbumTitle STRING(MAX)\n"
7173
+ ") PRIMARY KEY (SingerId, AlbumId),\n"
7274
+ " INTERLEAVE IN PARENT Singers ON DELETE CASCADE"));
73-
Database db = op.waitFor().getResult();
74-
// [END createDatabase]
75-
return db;
75+
try {
76+
return op.get();
77+
// [END createDatabase]
78+
} catch (ExecutionException | InterruptedException e) {
79+
// DO error handing
80+
}
81+
return null;
7682
}
7783

7884
/**
@@ -96,10 +102,14 @@ public Database getDatabase(String instanceId, String databaseId) {
96102
// [VARIABLE my_database_id]
97103
public void updateDatabaseDdl(String instanceId, String databaseId) {
98104
// [START updateDatabaseDdl]
99-
dbAdminClient.updateDatabaseDdl(instanceId,
105+
try {
106+
dbAdminClient.updateDatabaseDdl(instanceId,
100107
databaseId,
101108
Arrays.asList("ALTER TABLE Albums ADD COLUMN MarketingBudget INT64"),
102-
null).waitFor();
109+
null).get();
110+
} catch (ExecutionException | InterruptedException e) {
111+
// DO error handling
112+
}
103113
// [END updateDatabaseDdl]
104114
}
105115

google-cloud-spanner/src/main/java/com/google/cloud/spanner/Database.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@
1818

1919
import static com.google.common.base.Preconditions.checkArgument;
2020

21+
import com.google.api.gax.longrunning.OperationFuture;
2122
import com.google.spanner.admin.database.v1.UpdateDatabaseDdlMetadata;
2223

2324
/**
@@ -51,7 +52,7 @@ public Database reload() throws SpannerException {
5152
* one. This must be unique within a database abd must be a valid identifier
5253
* [a-zA-Z][a-zA-Z0-9_]*.
5354
*/
54-
public Operation<Void, UpdateDatabaseDdlMetadata> updateDdl(
55+
public OperationFuture<Void, UpdateDatabaseDdlMetadata> updateDdl(
5556
Iterable<String> statements, String operationId) throws SpannerException {
5657
return dbClient.updateDatabaseDdl(instance(), database(), statements, operationId);
5758
}

google-cloud-spanner/src/main/java/com/google/cloud/spanner/DatabaseAdminClient.java

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@
1616

1717
package com.google.cloud.spanner;
1818

19+
import com.google.api.gax.longrunning.OperationFuture;
1920
import com.google.api.gax.paging.Page;
2021
import com.google.cloud.spanner.Options.ListOption;
2122
import com.google.spanner.admin.database.v1.CreateDatabaseMetadata;
@@ -58,7 +59,7 @@ public interface DatabaseAdminClient {
5859
* @param statements DDL statements to run while creating the database, for example {@code CREATE
5960
* TABLE MyTable ( ... )}. This should not include {@code CREATE DATABASE} statement.
6061
*/
61-
Operation<Database, CreateDatabaseMetadata> createDatabase(
62+
OperationFuture<Database, CreateDatabaseMetadata> createDatabase(
6263
String instanceId, String databaseId, Iterable<String> statements) throws SpannerException;
6364

6465
/**
@@ -97,7 +98,7 @@ Operation<Database, CreateDatabaseMetadata> createDatabase(
9798
* one. This must be unique within a database abd must be a valid identifier
9899
* [a-zA-Z][a-zA-Z0-9_]*.
99100
*/
100-
Operation<Void, UpdateDatabaseDdlMetadata> updateDatabaseDdl(
101+
OperationFuture<Void, UpdateDatabaseDdlMetadata> updateDatabaseDdl(
101102
String instanceId,
102103
String databaseId,
103104
Iterable<String> statements,

google-cloud-spanner/src/main/java/com/google/cloud/spanner/Instance.java

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@
1616

1717
package com.google.cloud.spanner;
1818

19+
import com.google.api.gax.longrunning.OperationFuture;
1920
import com.google.api.gax.paging.Page;
2021
import com.google.spanner.admin.database.v1.CreateDatabaseMetadata;
2122
import com.google.spanner.admin.instance.v1.UpdateInstanceMetadata;
@@ -104,7 +105,7 @@ public void delete() {
104105
instanceClient.deleteInstance(instanceId());
105106
}
106107

107-
public Operation<Instance, UpdateInstanceMetadata> update(
108+
public OperationFuture<Instance, UpdateInstanceMetadata> update(
108109
InstanceInfo.InstanceField... fieldsToUpdate) {
109110
return instanceClient.updateInstance(this, fieldsToUpdate);
110111
}
@@ -125,7 +126,7 @@ public Database getDatabase(String databaseId) {
125126
* @param statements DDL statements to run while creating the database, for example {@code CREATE
126127
* TABLE MyTable ( ... )}. This should not include {@code CREATE DATABASE} statement.
127128
*/
128-
public Operation<Database, CreateDatabaseMetadata> createDatabase(
129+
public OperationFuture<Database, CreateDatabaseMetadata> createDatabase(
129130
String databaseId, Iterable<String> statements) throws SpannerException {
130131
return dbClient.createDatabase(instanceId(), databaseId, statements);
131132
}

google-cloud-spanner/src/main/java/com/google/cloud/spanner/InstanceAdminClient.java

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@
1616

1717
package com.google.cloud.spanner;
1818

19+
import com.google.api.gax.longrunning.OperationFuture;
1920
import com.google.api.gax.paging.Page;
2021
import com.google.cloud.spanner.Options.ListOption;
2122
import com.google.spanner.admin.instance.v1.CreateInstanceMetadata;
@@ -59,7 +60,7 @@ public interface InstanceAdminClient {
5960
* <li> The instance's allocated resource levels are readable via the
6061
* </ul>
6162
*/
62-
Operation<Instance, CreateInstanceMetadata> createInstance(InstanceInfo instance)
63+
OperationFuture<Instance, CreateInstanceMetadata> createInstance(InstanceInfo instance)
6364
throws SpannerException;
6465

6566
/** Gets an instance. */
@@ -113,7 +114,7 @@ Operation<Instance, CreateInstanceMetadata> createInstance(InstanceInfo instance
113114
* <li> The instance's new resource levels are readable via the API.
114115
* </ul>
115116
*/
116-
Operation<Instance, UpdateInstanceMetadata> updateInstance(
117+
OperationFuture<Instance, UpdateInstanceMetadata> updateInstance(
117118
InstanceInfo instance, InstanceInfo.InstanceField... fieldsToUpdate);
118119

119120
/** Returns a builder for {@code Instance} object with the given id. */

0 commit comments

Comments
 (0)