diff --git a/.github/.OwlBot.lock.yaml b/.github/.OwlBot.lock.yaml index 35478afe3fd..aadf54f6438 100644 --- a/.github/.OwlBot.lock.yaml +++ b/.github/.OwlBot.lock.yaml @@ -13,4 +13,4 @@ # limitations under the License. docker: image: gcr.io/cloud-devrel-public-resources/owlbot-java:latest - digest: sha256:8dd8395defb6a5069b0b10c435058bf13980606ba1967e2b3925ed50fc3cb22f + digest: sha256:ad9cabee4c022f1aab04a71332369e0c23841062124818a4490f73337f790337 diff --git a/.github/release-trigger.yml b/.github/release-trigger.yml index d4ca94189e1..47c17ee38f0 100644 --- a/.github/release-trigger.yml +++ b/.github/release-trigger.yml @@ -1 +1,2 @@ enabled: true +multiScmName: java-spanner diff --git a/.github/sync-repo-settings.yaml b/.github/sync-repo-settings.yaml index ed1010fe960..b712292013b 100644 --- a/.github/sync-repo-settings.yaml +++ b/.github/sync-repo-settings.yaml @@ -8,8 +8,7 @@ branchProtectionRules: requiresCodeOwnerReviews: true requiresStrictStatusChecks: false requiredStatusCheckContexts: - - dependencies (8) - - dependencies (11) + - dependencies (17) - lint - units (8) - units (11) @@ -27,7 +26,6 @@ branchProtectionRules: requiresCodeOwnerReviews: true requiresStrictStatusChecks: false requiredStatusCheckContexts: - - dependencies (8) - dependencies (11) - lint - units (7) @@ -42,7 +40,6 @@ branchProtectionRules: requiresCodeOwnerReviews: true requiresStrictStatusChecks: false requiredStatusCheckContexts: - - dependencies (8) - dependencies (11) - lint - units (7) @@ -57,7 +54,6 @@ branchProtectionRules: requiresCodeOwnerReviews: true requiresStrictStatusChecks: false requiredStatusCheckContexts: - - dependencies (8) - dependencies (11) - lint - units (7) diff --git a/.github/workflows/ci.yaml b/.github/workflows/ci.yaml index 857028b88b8..7c5a0181129 100644 --- a/.github/workflows/ci.yaml +++ b/.github/workflows/ci.yaml @@ -37,6 +37,7 @@ jobs: env: JOB_TYPE: test units-java8: + # Building using Java 17 and run the tests with Java 8 runtime name: "units (8)" runs-on: ubuntu-latest steps: @@ -45,14 +46,12 @@ jobs: with: java-version: 8 distribution: zulu - - run: echo "JAVA8_HOME=${JAVA_HOME}" >> $GITHUB_ENV + - run: echo "SUREFIRE_JVM_OPT=-Djvm=${JAVA_HOME}/bin/java" >> $GITHUB_ENV shell: bash - uses: actions/setup-java@v3 with: - java-version: 11 + java-version: 17 distribution: zulu - - run: echo "JAVA11_HOME=${JAVA_HOME}" >> $GITHUB_ENV - shell: bash - run: .kokoro/build.sh env: JOB_TYPE: test @@ -80,25 +79,13 @@ jobs: runs-on: ubuntu-latest strategy: matrix: - java: [8, 11, 17] + java: [17] steps: - uses: actions/checkout@v3 - # For Java 8 tests, use JDK 11 to compile - - if: ${{matrix.java}} == '8' - uses: actions/setup-java@v3 - with: - java-version: 11 - distribution: zulu - - if: ${{matrix.java}} == '8' - run: echo "JAVA11_HOME=${JAVA_HOME}" >> $GITHUB_ENV - shell: bash - uses: actions/setup-java@v3 with: distribution: zulu java-version: ${{matrix.java}} - - if: ${{matrix.java}} == '8' - run: echo "JAVA8_HOME=${JAVA_HOME}" >> $GITHUB_ENV - shell: bash - run: java -version - run: .kokoro/dependencies.sh lint: @@ -108,7 +95,7 @@ jobs: - uses: actions/setup-java@v3 with: distribution: zulu - java-version: 11 + java-version: 17 - run: java -version - run: .kokoro/build.sh env: @@ -120,7 +107,7 @@ jobs: - uses: actions/setup-java@v3 with: distribution: zulu - java-version: 11 + java-version: 17 - run: java -version - run: .kokoro/build.sh env: diff --git a/.github/workflows/integration-tests-against-emulator.yaml b/.github/workflows/integration-tests-against-emulator.yaml index da05e8d3d75..71fbdc4bbf4 100644 --- a/.github/workflows/integration-tests-against-emulator.yaml +++ b/.github/workflows/integration-tests-against-emulator.yaml @@ -25,20 +25,15 @@ jobs: with: java-version: 11 distribution: zulu - - run: echo "JAVA11_HOME=${JAVA_HOME}" >> $GITHUB_ENV - shell: bash + - name: Compiling main library + run: .kokoro/build.sh - uses: actions/setup-java@v3 with: java-version: 8 distribution: zulu - - run: echo "JAVA8_HOME=${JAVA_HOME}" >> $GITHUB_ENV - shell: bash - - run: java -version - - name: Compiling main library - run: .kokoro/build.sh - name: Running tests run: | - mvn -B -Dspanner.testenv.instance="" -Penable-integration-tests \ + mvn -V -B -Dspanner.testenv.instance="" -Penable-integration-tests \ -DtrimStackTrace=false -Dclirr.skip=true -Denforcer.skip=true \ -Dmaven.main.skip=true -fae verify env: diff --git a/.kokoro/build.sh b/.kokoro/build.sh index c962182d52b..00d8e29f6dd 100755 --- a/.kokoro/build.sh +++ b/.kokoro/build.sh @@ -23,9 +23,9 @@ cd ${scriptDir}/.. # include common functions source ${scriptDir}/common.sh -# units-java8 uses both JDK 11 and JDK 8. GraalVM dependencies require JDK 11 to -# compile the classes touching GraalVM classes. -if [ ! -z "${JAVA11_HOME}" ]; then +# Kokoro integration test uses both JDK 11 and JDK 8. GraalVM dependencies +# require JDK 11 to compile the classes touching GraalVM classes. +if [ -n "${JAVA11_HOME}" ]; then setJava "${JAVA11_HOME}" fi @@ -48,9 +48,9 @@ if [[ ! -z "${GOOGLE_APPLICATION_CREDENTIALS}" && "${GOOGLE_APPLICATION_CREDENTI export GOOGLE_APPLICATION_CREDENTIALS=$(realpath ${KOKORO_GFILE_DIR}/${GOOGLE_APPLICATION_CREDENTIALS}) fi -# units-java8 uses both JDK 11 and JDK 8. We ensure the generated class files +# Kokoro integration test uses both JDK 11 and JDK 8. We ensure the generated class files # are compatible with Java 8 when running tests. -if [ ! -z "${JAVA8_HOME}" ]; then +if [ -n "${JAVA8_HOME}" ]; then setJava "${JAVA8_HOME}" fi @@ -59,10 +59,16 @@ set +e case ${JOB_TYPE} in test) + # Maven surefire plugin (unit tests) allows us to specify JVM to run the tests. + # https://maven.apache.org/surefire/maven-surefire-plugin/test-mojo.html#jvm + # If we rely on certain things only available in newer JVM than Java 8, this + # tests detect the usage. + echo "SUREFIRE_JVM_OPT: ${SUREFIRE_JVM_OPT}" mvn test -B -V \ -Dclirr.skip=true \ -Denforcer.skip=true \ - -Djava.net.preferIPv4Stack=true + -Djava.net.preferIPv4Stack=true \ + ${SUREFIRE_JVM_OPT} RETURN_CODE=$? ;; lint) diff --git a/CHANGELOG.md b/CHANGELOG.md index 25dfe33d618..e9dbc06cba5 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,12 @@ # Changelog +## [6.42.1](https://github.com/googleapis/java-spanner/compare/v6.42.0...v6.42.1) (2023-05-22) + + +### Dependencies + +* Update dependency commons-io:commons-io to v2.12.0 ([#2439](https://github.com/googleapis/java-spanner/issues/2439)) ([d08b226](https://github.com/googleapis/java-spanner/commit/d08b226d5da6272b2de5f66ee1657d03268e396d)) + ## [6.42.0](https://github.com/googleapis/java-spanner/compare/v6.41.0...v6.42.0) (2023-05-15) diff --git a/README.md b/README.md index e8dc6907606..e00b51630de 100644 --- a/README.md +++ b/README.md @@ -19,7 +19,7 @@ If you are using Maven with [BOM][libraries-bom], add this to your pom.xml file: com.google.cloud libraries-bom - 26.14.0 + 26.15.0 pom import @@ -42,7 +42,7 @@ If you are using Maven without the BOM, add this to your dependencies: com.google.cloud google-cloud-spanner - 6.41.0 + 6.42.0 ``` @@ -50,20 +50,20 @@ If you are using Maven without the BOM, add this to your dependencies: If you are using Gradle 5.x or later, add this to your dependencies: ```Groovy -implementation platform('com.google.cloud:libraries-bom:26.14.0') +implementation platform('com.google.cloud:libraries-bom:26.15.0') implementation 'com.google.cloud:google-cloud-spanner' ``` If you are using Gradle without BOM, add this to your dependencies: ```Groovy -implementation 'com.google.cloud:google-cloud-spanner:6.41.0' +implementation 'com.google.cloud:google-cloud-spanner:6.42.0' ``` If you are using SBT, add this to your dependencies: ```Scala -libraryDependencies += "com.google.cloud" % "google-cloud-spanner" % "6.41.0" +libraryDependencies += "com.google.cloud" % "google-cloud-spanner" % "6.42.0" ``` @@ -302,6 +302,7 @@ Samples are in the [`samples/`](https://github.com/googleapis/java-spanner/tree/ | Statement Timeout Example | [source code](https://github.com/googleapis/java-spanner/blob/main/samples/snippets/src/main/java/com/example/spanner/StatementTimeoutExample.java) | [![Open in Cloud Shell][shell_img]](https://console.cloud.google.com/cloudshell/open?git_repo=https://github.com/googleapis/java-spanner&page=editor&open_in_editor=samples/snippets/src/main/java/com/example/spanner/StatementTimeoutExample.java) | | Tag Sample | [source code](https://github.com/googleapis/java-spanner/blob/main/samples/snippets/src/main/java/com/example/spanner/TagSample.java) | [![Open in Cloud Shell][shell_img]](https://console.cloud.google.com/cloudshell/open?git_repo=https://github.com/googleapis/java-spanner&page=editor&open_in_editor=samples/snippets/src/main/java/com/example/spanner/TagSample.java) | | Tracing Sample | [source code](https://github.com/googleapis/java-spanner/blob/main/samples/snippets/src/main/java/com/example/spanner/TracingSample.java) | [![Open in Cloud Shell][shell_img]](https://console.cloud.google.com/cloudshell/open?git_repo=https://github.com/googleapis/java-spanner&page=editor&open_in_editor=samples/snippets/src/main/java/com/example/spanner/TracingSample.java) | +| Update Database Sample | [source code](https://github.com/googleapis/java-spanner/blob/main/samples/snippets/src/main/java/com/example/spanner/UpdateDatabaseSample.java) | [![Open in Cloud Shell][shell_img]](https://console.cloud.google.com/cloudshell/open?git_repo=https://github.com/googleapis/java-spanner&page=editor&open_in_editor=samples/snippets/src/main/java/com/example/spanner/UpdateDatabaseSample.java) | | Update Database With Default Leader Sample | [source code](https://github.com/googleapis/java-spanner/blob/main/samples/snippets/src/main/java/com/example/spanner/UpdateDatabaseWithDefaultLeaderSample.java) | [![Open in Cloud Shell][shell_img]](https://console.cloud.google.com/cloudshell/open?git_repo=https://github.com/googleapis/java-spanner&page=editor&open_in_editor=samples/snippets/src/main/java/com/example/spanner/UpdateDatabaseWithDefaultLeaderSample.java) | | Update Instance Config Sample | [source code](https://github.com/googleapis/java-spanner/blob/main/samples/snippets/src/main/java/com/example/spanner/UpdateInstanceConfigSample.java) | [![Open in Cloud Shell][shell_img]](https://console.cloud.google.com/cloudshell/open?git_repo=https://github.com/googleapis/java-spanner&page=editor&open_in_editor=samples/snippets/src/main/java/com/example/spanner/UpdateInstanceConfigSample.java) | | Update Json Data Sample | [source code](https://github.com/googleapis/java-spanner/blob/main/samples/snippets/src/main/java/com/example/spanner/UpdateJsonDataSample.java) | [![Open in Cloud Shell][shell_img]](https://console.cloud.google.com/cloudshell/open?git_repo=https://github.com/googleapis/java-spanner&page=editor&open_in_editor=samples/snippets/src/main/java/com/example/spanner/UpdateJsonDataSample.java) | @@ -411,7 +412,7 @@ Java is a registered trademark of Oracle and/or its affiliates. [kokoro-badge-link-5]: http://storage.googleapis.com/cloud-devrel-public/java/badges/java-spanner/java11.html [stability-image]: https://img.shields.io/badge/stability-stable-green [maven-version-image]: https://img.shields.io/maven-central/v/com.google.cloud/google-cloud-spanner.svg -[maven-version-link]: https://central.sonatype.com/artifact/com.google.cloud/google-cloud-spanner/6.41.0 +[maven-version-link]: https://central.sonatype.com/artifact/com.google.cloud/google-cloud-spanner/6.42.0 [authentication]: https://github.com/googleapis/google-cloud-java#authentication [auth-scopes]: https://developers.google.com/identity/protocols/oauth2/scopes [predefined-iam-roles]: https://cloud.google.com/iam/docs/understanding-roles#predefined_roles diff --git a/google-cloud-spanner-bom/pom.xml b/google-cloud-spanner-bom/pom.xml index 7b273012032..6ec207adf0a 100644 --- a/google-cloud-spanner-bom/pom.xml +++ b/google-cloud-spanner-bom/pom.xml @@ -3,7 +3,7 @@ 4.0.0 com.google.cloud google-cloud-spanner-bom - 6.42.0 + 6.42.1 pom com.google.cloud @@ -53,48 +53,48 @@ com.google.cloud google-cloud-spanner - 6.42.0 + 6.42.1 com.google.cloud google-cloud-spanner-executor - 6.42.0 + 6.42.1 com.google.cloud google-cloud-spanner test-jar - 6.42.0 + 6.42.1 com.google.api.grpc grpc-google-cloud-spanner-v1 - 6.42.0 + 6.42.1 com.google.api.grpc grpc-google-cloud-spanner-admin-instance-v1 - 6.42.0 + 6.42.1 com.google.api.grpc grpc-google-cloud-spanner-admin-database-v1 - 6.42.0 + 6.42.1 com.google.api.grpc proto-google-cloud-spanner-admin-instance-v1 - 6.42.0 + 6.42.1 com.google.api.grpc proto-google-cloud-spanner-v1 - 6.42.0 + 6.42.1 com.google.api.grpc proto-google-cloud-spanner-admin-database-v1 - 6.42.0 + 6.42.1 diff --git a/google-cloud-spanner-executor/pom.xml b/google-cloud-spanner-executor/pom.xml index 588c12ea578..231599e7c1b 100644 --- a/google-cloud-spanner-executor/pom.xml +++ b/google-cloud-spanner-executor/pom.xml @@ -5,14 +5,14 @@ 4.0.0 com.google.cloud google-cloud-spanner-executor - 6.42.0 + 6.42.1 jar Google Cloud Spanner Executor com.google.cloud google-cloud-spanner-parent - 6.42.0 + 6.42.1 @@ -119,7 +119,7 @@ commons-io commons-io - 2.11.0 + 2.12.0 diff --git a/google-cloud-spanner/pom.xml b/google-cloud-spanner/pom.xml index 36dbded84b7..664545c20a8 100644 --- a/google-cloud-spanner/pom.xml +++ b/google-cloud-spanner/pom.xml @@ -3,7 +3,7 @@ 4.0.0 com.google.cloud google-cloud-spanner - 6.42.0 + 6.42.1 jar Google Cloud Spanner https://github.com/googleapis/java-spanner @@ -11,7 +11,7 @@ com.google.cloud google-cloud-spanner-parent - 6.42.0 + 6.42.1 google-cloud-spanner diff --git a/grpc-google-cloud-spanner-admin-database-v1/pom.xml b/grpc-google-cloud-spanner-admin-database-v1/pom.xml index 4772f4f9f4e..7317628da02 100644 --- a/grpc-google-cloud-spanner-admin-database-v1/pom.xml +++ b/grpc-google-cloud-spanner-admin-database-v1/pom.xml @@ -4,13 +4,13 @@ 4.0.0 com.google.api.grpc grpc-google-cloud-spanner-admin-database-v1 - 6.42.0 + 6.42.1 grpc-google-cloud-spanner-admin-database-v1 GRPC library for grpc-google-cloud-spanner-admin-database-v1 com.google.cloud google-cloud-spanner-parent - 6.42.0 + 6.42.1 diff --git a/grpc-google-cloud-spanner-admin-instance-v1/pom.xml b/grpc-google-cloud-spanner-admin-instance-v1/pom.xml index ca20528d958..be7bfce79fc 100644 --- a/grpc-google-cloud-spanner-admin-instance-v1/pom.xml +++ b/grpc-google-cloud-spanner-admin-instance-v1/pom.xml @@ -4,13 +4,13 @@ 4.0.0 com.google.api.grpc grpc-google-cloud-spanner-admin-instance-v1 - 6.42.0 + 6.42.1 grpc-google-cloud-spanner-admin-instance-v1 GRPC library for grpc-google-cloud-spanner-admin-instance-v1 com.google.cloud google-cloud-spanner-parent - 6.42.0 + 6.42.1 diff --git a/grpc-google-cloud-spanner-v1/pom.xml b/grpc-google-cloud-spanner-v1/pom.xml index 8d006a30709..9fb92d41fcd 100644 --- a/grpc-google-cloud-spanner-v1/pom.xml +++ b/grpc-google-cloud-spanner-v1/pom.xml @@ -4,13 +4,13 @@ 4.0.0 com.google.api.grpc grpc-google-cloud-spanner-v1 - 6.42.0 + 6.42.1 grpc-google-cloud-spanner-v1 GRPC library for grpc-google-cloud-spanner-v1 com.google.cloud google-cloud-spanner-parent - 6.42.0 + 6.42.1 diff --git a/pom.xml b/pom.xml index 579666d2c78..33c78d4c2ef 100644 --- a/pom.xml +++ b/pom.xml @@ -4,7 +4,7 @@ com.google.cloud google-cloud-spanner-parent pom - 6.42.0 + 6.42.1 Google Cloud Spanner Parent https://github.com/googleapis/java-spanner @@ -62,37 +62,37 @@ com.google.api.grpc proto-google-cloud-spanner-admin-instance-v1 - 6.42.0 + 6.42.1 com.google.api.grpc proto-google-cloud-spanner-v1 - 6.42.0 + 6.42.1 com.google.api.grpc proto-google-cloud-spanner-admin-database-v1 - 6.42.0 + 6.42.1 com.google.api.grpc grpc-google-cloud-spanner-v1 - 6.42.0 + 6.42.1 com.google.api.grpc grpc-google-cloud-spanner-admin-instance-v1 - 6.42.0 + 6.42.1 com.google.api.grpc grpc-google-cloud-spanner-admin-database-v1 - 6.42.0 + 6.42.1 com.google.cloud google-cloud-spanner - 6.42.0 + 6.42.1 diff --git a/proto-google-cloud-spanner-admin-database-v1/pom.xml b/proto-google-cloud-spanner-admin-database-v1/pom.xml index d69a7fe7490..16cf4cb8e45 100644 --- a/proto-google-cloud-spanner-admin-database-v1/pom.xml +++ b/proto-google-cloud-spanner-admin-database-v1/pom.xml @@ -4,13 +4,13 @@ 4.0.0 com.google.api.grpc proto-google-cloud-spanner-admin-database-v1 - 6.42.0 + 6.42.1 proto-google-cloud-spanner-admin-database-v1 PROTO library for proto-google-cloud-spanner-admin-database-v1 com.google.cloud google-cloud-spanner-parent - 6.42.0 + 6.42.1 diff --git a/proto-google-cloud-spanner-admin-instance-v1/pom.xml b/proto-google-cloud-spanner-admin-instance-v1/pom.xml index 57f6af991bb..d188518153a 100644 --- a/proto-google-cloud-spanner-admin-instance-v1/pom.xml +++ b/proto-google-cloud-spanner-admin-instance-v1/pom.xml @@ -4,13 +4,13 @@ 4.0.0 com.google.api.grpc proto-google-cloud-spanner-admin-instance-v1 - 6.42.0 + 6.42.1 proto-google-cloud-spanner-admin-instance-v1 PROTO library for proto-google-cloud-spanner-admin-instance-v1 com.google.cloud google-cloud-spanner-parent - 6.42.0 + 6.42.1 diff --git a/proto-google-cloud-spanner-v1/pom.xml b/proto-google-cloud-spanner-v1/pom.xml index 10bc7a53201..8692735f8e4 100644 --- a/proto-google-cloud-spanner-v1/pom.xml +++ b/proto-google-cloud-spanner-v1/pom.xml @@ -4,13 +4,13 @@ 4.0.0 com.google.api.grpc proto-google-cloud-spanner-v1 - 6.42.0 + 6.42.1 proto-google-cloud-spanner-v1 PROTO library for proto-google-cloud-spanner-v1 com.google.cloud google-cloud-spanner-parent - 6.42.0 + 6.42.1 diff --git a/samples/install-without-bom/pom.xml b/samples/install-without-bom/pom.xml index 188abac8543..d2d45badd19 100644 --- a/samples/install-without-bom/pom.xml +++ b/samples/install-without-bom/pom.xml @@ -32,7 +32,7 @@ com.google.cloud google-cloud-spanner - 6.41.0 + 6.42.0 diff --git a/samples/native-image/pom.xml b/samples/native-image/pom.xml index c1e96544e11..9ac0fd22b29 100644 --- a/samples/native-image/pom.xml +++ b/samples/native-image/pom.xml @@ -28,7 +28,7 @@ com.google.cloud libraries-bom - 26.14.0 + 26.15.0 pom import diff --git a/samples/snapshot/pom.xml b/samples/snapshot/pom.xml index 0d451de2284..1d79f7d9c20 100644 --- a/samples/snapshot/pom.xml +++ b/samples/snapshot/pom.xml @@ -31,7 +31,7 @@ com.google.cloud google-cloud-spanner - 6.42.0 + 6.42.1 diff --git a/samples/snippets/pom.xml b/samples/snippets/pom.xml index 0690ec3be4f..463baf4a2eb 100644 --- a/samples/snippets/pom.xml +++ b/samples/snippets/pom.xml @@ -33,7 +33,7 @@ com.google.cloud libraries-bom - 26.14.0 + 26.15.0 pom import diff --git a/samples/snippets/src/main/java/com/example/spanner/UpdateDatabaseSample.java b/samples/snippets/src/main/java/com/example/spanner/UpdateDatabaseSample.java new file mode 100644 index 00000000000..c87c27690a3 --- /dev/null +++ b/samples/snippets/src/main/java/com/example/spanner/UpdateDatabaseSample.java @@ -0,0 +1,66 @@ +/* + * Copyright 2023 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.example.spanner; + +// [START spanner_update_database] +import com.google.api.gax.longrunning.OperationFuture; +import com.google.cloud.spanner.Database; +import com.google.cloud.spanner.DatabaseAdminClient; +import com.google.cloud.spanner.DatabaseId; +import com.google.cloud.spanner.DatabaseInfo.DatabaseField; +import com.google.cloud.spanner.Spanner; +import com.google.cloud.spanner.SpannerExceptionFactory; +import com.google.cloud.spanner.SpannerOptions; +import com.google.spanner.admin.database.v1.UpdateDatabaseMetadata; +import java.util.concurrent.ExecutionException; +import java.util.concurrent.TimeUnit; +import java.util.concurrent.TimeoutException; + +public class UpdateDatabaseSample { + + static void updateDatabase() { + // TODO(developer): Replace these variables before running the sample. + final String projectId = "my-project"; + final String instanceId = "my-instance"; + final String databaseId = "my-database"; + updateDatabase(projectId, instanceId, databaseId); + } + + static void updateDatabase(String projectId, String instanceId, String databaseId) { + try (Spanner spanner = + SpannerOptions.newBuilder().setProjectId(projectId).build().getService()) { + final DatabaseAdminClient databaseAdminClient = spanner.getDatabaseAdminClient(); + + DatabaseId dbId = DatabaseId.of(projectId, instanceId, databaseId); + Database databaseToUpdate = + databaseAdminClient.newDatabaseBuilder(dbId).enableDropProtection().build(); + OperationFuture operation = + databaseAdminClient.updateDatabase(databaseToUpdate, DatabaseField.DROP_PROTECTION); + System.out.printf("Waiting for update operation for %s to complete...\n", dbId); + Database updatedDb = operation.get(5, TimeUnit.MINUTES); + System.out.printf("Updated database %s.\n", updatedDb.getId().getName()); + } catch (ExecutionException | TimeoutException e) { + // If the operation failed during execution, expose the cause. + throw SpannerExceptionFactory.asSpannerException(e.getCause()); + } catch (InterruptedException e) { + // Throw when a thread is waiting, sleeping, or otherwise occupied, + // and the thread is interrupted, either before or during the activity. + throw SpannerExceptionFactory.propagateInterrupt(e); + } + } +} +// [END spanner_update_database] diff --git a/samples/snippets/src/test/java/com/example/spanner/UpdateDatabaseSampleIT.java b/samples/snippets/src/test/java/com/example/spanner/UpdateDatabaseSampleIT.java new file mode 100644 index 00000000000..3bee78b7871 --- /dev/null +++ b/samples/snippets/src/test/java/com/example/spanner/UpdateDatabaseSampleIT.java @@ -0,0 +1,57 @@ +/* + * Copyright 2023 Google LLC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.example.spanner; + +import static org.junit.Assert.assertFalse; +import static org.junit.Assert.assertTrue; + +import com.google.api.gax.longrunning.OperationFuture; +import com.google.cloud.spanner.DatabaseInfo.DatabaseField; +import com.google.spanner.admin.database.v1.UpdateDatabaseMetadata; +import java.util.Collections; +import java.util.concurrent.TimeUnit; +import org.junit.Test; + +public class UpdateDatabaseSampleIT extends SampleTestBase { + + @Test + public void testUpdateDatabase() throws Exception { + // Create database + final String databaseId = idGenerator.generateDatabaseId(); + databaseAdminClient + .createDatabase(instanceId, databaseId, Collections.emptyList()) + .get(5, TimeUnit.MINUTES); + + // Runs sample + final String out = + SampleRunner.runSample( + () -> UpdateDatabaseSample.updateDatabase(projectId, instanceId, databaseId)); + + DatabaseId dbId = DatabaseId.of(projectId, instanceId, databaseId); + assertTrue( + "Expected that database would have been updated. Output received was " + out, + out.contains(String.format("Updated database %s", dbId))); + + // Cleanup + Database databaseToUpdate = + databaseAdminClient.newDatabaseBuilder(dbId).disableDropProtection().build(); + OperationFuture operation = + databaseAdminClient.updateDatabase(databaseToUpdate, DatabaseField.DROP_PROTECTION); + Database updatedDb = operation.get(5, TimeUnit.MINUTES); + assertFalse(updatedDb.isDropProtectionEnabled()); + } +} diff --git a/versions.txt b/versions.txt index b8b3d8efccc..76d8abb2fa4 100644 --- a/versions.txt +++ b/versions.txt @@ -1,11 +1,11 @@ # Format: # module:released-version:current-version -proto-google-cloud-spanner-admin-instance-v1:6.42.0:6.42.0 -proto-google-cloud-spanner-v1:6.42.0:6.42.0 -proto-google-cloud-spanner-admin-database-v1:6.42.0:6.42.0 -grpc-google-cloud-spanner-v1:6.42.0:6.42.0 -grpc-google-cloud-spanner-admin-instance-v1:6.42.0:6.42.0 -grpc-google-cloud-spanner-admin-database-v1:6.42.0:6.42.0 -google-cloud-spanner:6.42.0:6.42.0 -google-cloud-spanner-executor:6.42.0:6.42.0 +proto-google-cloud-spanner-admin-instance-v1:6.42.1:6.42.1 +proto-google-cloud-spanner-v1:6.42.1:6.42.1 +proto-google-cloud-spanner-admin-database-v1:6.42.1:6.42.1 +grpc-google-cloud-spanner-v1:6.42.1:6.42.1 +grpc-google-cloud-spanner-admin-instance-v1:6.42.1:6.42.1 +grpc-google-cloud-spanner-admin-database-v1:6.42.1:6.42.1 +google-cloud-spanner:6.42.1:6.42.1 +google-cloud-spanner-executor:6.42.1:6.42.1