From f680c9e5cc8407e91209be2f9ed8f576e8b06b49 Mon Sep 17 00:00:00 2001 From: "release-please[bot]" <55107282+release-please[bot]@users.noreply.github.com> Date: Wed, 30 Apr 2025 17:44:20 +0200 Subject: [PATCH 1/9] chore(main): release 6.92.1-SNAPSHOT (#3842) Co-authored-by: release-please[bot] <55107282+release-please[bot]@users.noreply.github.com> --- benchmarks/pom.xml | 2 +- google-cloud-spanner-bom/pom.xml | 18 ++++++++--------- google-cloud-spanner-executor/pom.xml | 4 ++-- google-cloud-spanner/pom.xml | 4 ++-- .../pom.xml | 4 ++-- .../pom.xml | 4 ++-- grpc-google-cloud-spanner-executor-v1/pom.xml | 4 ++-- grpc-google-cloud-spanner-v1/pom.xml | 4 ++-- pom.xml | 20 +++++++++---------- .../pom.xml | 4 ++-- .../pom.xml | 4 ++-- .../pom.xml | 4 ++-- proto-google-cloud-spanner-v1/pom.xml | 4 ++-- samples/snapshot/pom.xml | 2 +- versions.txt | 20 +++++++++---------- 15 files changed, 51 insertions(+), 51 deletions(-) diff --git a/benchmarks/pom.xml b/benchmarks/pom.xml index 956746838ba..61a13d2ff5f 100644 --- a/benchmarks/pom.xml +++ b/benchmarks/pom.xml @@ -24,7 +24,7 @@ com.google.cloud google-cloud-spanner-parent - 6.92.0 + 6.92.1-SNAPSHOT diff --git a/google-cloud-spanner-bom/pom.xml b/google-cloud-spanner-bom/pom.xml index d2a9d4d1dae..356aa51b9d8 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.92.0 + 6.92.1-SNAPSHOT pom com.google.cloud @@ -53,43 +53,43 @@ com.google.cloud google-cloud-spanner - 6.92.0 + 6.92.1-SNAPSHOT com.google.cloud google-cloud-spanner test-jar - 6.92.0 + 6.92.1-SNAPSHOT com.google.api.grpc grpc-google-cloud-spanner-v1 - 6.92.0 + 6.92.1-SNAPSHOT com.google.api.grpc grpc-google-cloud-spanner-admin-instance-v1 - 6.92.0 + 6.92.1-SNAPSHOT com.google.api.grpc grpc-google-cloud-spanner-admin-database-v1 - 6.92.0 + 6.92.1-SNAPSHOT com.google.api.grpc proto-google-cloud-spanner-admin-instance-v1 - 6.92.0 + 6.92.1-SNAPSHOT com.google.api.grpc proto-google-cloud-spanner-v1 - 6.92.0 + 6.92.1-SNAPSHOT com.google.api.grpc proto-google-cloud-spanner-admin-database-v1 - 6.92.0 + 6.92.1-SNAPSHOT diff --git a/google-cloud-spanner-executor/pom.xml b/google-cloud-spanner-executor/pom.xml index 9fb36618452..9f25a583a4f 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.92.0 + 6.92.1-SNAPSHOT jar Google Cloud Spanner Executor com.google.cloud google-cloud-spanner-parent - 6.92.0 + 6.92.1-SNAPSHOT diff --git a/google-cloud-spanner/pom.xml b/google-cloud-spanner/pom.xml index d50d7da9240..15911018d49 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.92.0 + 6.92.1-SNAPSHOT jar Google Cloud Spanner https://github.com/googleapis/java-spanner @@ -11,7 +11,7 @@ com.google.cloud google-cloud-spanner-parent - 6.92.0 + 6.92.1-SNAPSHOT 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 4bdf9cd1a32..945eda59f56 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.92.0 + 6.92.1-SNAPSHOT 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.92.0 + 6.92.1-SNAPSHOT diff --git a/grpc-google-cloud-spanner-admin-instance-v1/pom.xml b/grpc-google-cloud-spanner-admin-instance-v1/pom.xml index d6b37aef339..977f31c1529 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.92.0 + 6.92.1-SNAPSHOT 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.92.0 + 6.92.1-SNAPSHOT diff --git a/grpc-google-cloud-spanner-executor-v1/pom.xml b/grpc-google-cloud-spanner-executor-v1/pom.xml index af169c7ebf6..4da1b80ccbe 100644 --- a/grpc-google-cloud-spanner-executor-v1/pom.xml +++ b/grpc-google-cloud-spanner-executor-v1/pom.xml @@ -4,13 +4,13 @@ 4.0.0 com.google.api.grpc grpc-google-cloud-spanner-executor-v1 - 6.92.0 + 6.92.1-SNAPSHOT grpc-google-cloud-spanner-executor-v1 GRPC library for google-cloud-spanner com.google.cloud google-cloud-spanner-parent - 6.92.0 + 6.92.1-SNAPSHOT diff --git a/grpc-google-cloud-spanner-v1/pom.xml b/grpc-google-cloud-spanner-v1/pom.xml index 5dbade34b54..8d478945b85 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.92.0 + 6.92.1-SNAPSHOT grpc-google-cloud-spanner-v1 GRPC library for grpc-google-cloud-spanner-v1 com.google.cloud google-cloud-spanner-parent - 6.92.0 + 6.92.1-SNAPSHOT diff --git a/pom.xml b/pom.xml index 0568524e0ae..064767ba74c 100644 --- a/pom.xml +++ b/pom.xml @@ -4,7 +4,7 @@ com.google.cloud google-cloud-spanner-parent pom - 6.92.0 + 6.92.1-SNAPSHOT Google Cloud Spanner Parent https://github.com/googleapis/java-spanner @@ -61,47 +61,47 @@ com.google.api.grpc proto-google-cloud-spanner-admin-instance-v1 - 6.92.0 + 6.92.1-SNAPSHOT com.google.api.grpc proto-google-cloud-spanner-executor-v1 - 6.92.0 + 6.92.1-SNAPSHOT com.google.api.grpc grpc-google-cloud-spanner-executor-v1 - 6.92.0 + 6.92.1-SNAPSHOT com.google.api.grpc proto-google-cloud-spanner-v1 - 6.92.0 + 6.92.1-SNAPSHOT com.google.api.grpc proto-google-cloud-spanner-admin-database-v1 - 6.92.0 + 6.92.1-SNAPSHOT com.google.api.grpc grpc-google-cloud-spanner-v1 - 6.92.0 + 6.92.1-SNAPSHOT com.google.api.grpc grpc-google-cloud-spanner-admin-instance-v1 - 6.92.0 + 6.92.1-SNAPSHOT com.google.api.grpc grpc-google-cloud-spanner-admin-database-v1 - 6.92.0 + 6.92.1-SNAPSHOT com.google.cloud google-cloud-spanner - 6.92.0 + 6.92.1-SNAPSHOT diff --git a/proto-google-cloud-spanner-admin-database-v1/pom.xml b/proto-google-cloud-spanner-admin-database-v1/pom.xml index 8726fd7c7d6..788d278114f 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.92.0 + 6.92.1-SNAPSHOT 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.92.0 + 6.92.1-SNAPSHOT diff --git a/proto-google-cloud-spanner-admin-instance-v1/pom.xml b/proto-google-cloud-spanner-admin-instance-v1/pom.xml index 6cce5ec3c51..d81fbe63350 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.92.0 + 6.92.1-SNAPSHOT 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.92.0 + 6.92.1-SNAPSHOT diff --git a/proto-google-cloud-spanner-executor-v1/pom.xml b/proto-google-cloud-spanner-executor-v1/pom.xml index 1ac560dfefd..701c635e3ef 100644 --- a/proto-google-cloud-spanner-executor-v1/pom.xml +++ b/proto-google-cloud-spanner-executor-v1/pom.xml @@ -4,13 +4,13 @@ 4.0.0 com.google.api.grpc proto-google-cloud-spanner-executor-v1 - 6.92.0 + 6.92.1-SNAPSHOT proto-google-cloud-spanner-executor-v1 Proto library for google-cloud-spanner com.google.cloud google-cloud-spanner-parent - 6.92.0 + 6.92.1-SNAPSHOT diff --git a/proto-google-cloud-spanner-v1/pom.xml b/proto-google-cloud-spanner-v1/pom.xml index 1b286d1a826..6bdd874682d 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.92.0 + 6.92.1-SNAPSHOT proto-google-cloud-spanner-v1 PROTO library for proto-google-cloud-spanner-v1 com.google.cloud google-cloud-spanner-parent - 6.92.0 + 6.92.1-SNAPSHOT diff --git a/samples/snapshot/pom.xml b/samples/snapshot/pom.xml index 40615bc5b7b..1d84c1ab5fb 100644 --- a/samples/snapshot/pom.xml +++ b/samples/snapshot/pom.xml @@ -32,7 +32,7 @@ com.google.cloud google-cloud-spanner - 6.92.0 + 6.92.1-SNAPSHOT diff --git a/versions.txt b/versions.txt index 1e811eeeb36..550467d1d2f 100644 --- a/versions.txt +++ b/versions.txt @@ -1,13 +1,13 @@ # Format: # module:released-version:current-version -proto-google-cloud-spanner-admin-instance-v1:6.92.0:6.92.0 -proto-google-cloud-spanner-v1:6.92.0:6.92.0 -proto-google-cloud-spanner-admin-database-v1:6.92.0:6.92.0 -grpc-google-cloud-spanner-v1:6.92.0:6.92.0 -grpc-google-cloud-spanner-admin-instance-v1:6.92.0:6.92.0 -grpc-google-cloud-spanner-admin-database-v1:6.92.0:6.92.0 -google-cloud-spanner:6.92.0:6.92.0 -google-cloud-spanner-executor:6.92.0:6.92.0 -proto-google-cloud-spanner-executor-v1:6.92.0:6.92.0 -grpc-google-cloud-spanner-executor-v1:6.92.0:6.92.0 +proto-google-cloud-spanner-admin-instance-v1:6.92.0:6.92.1-SNAPSHOT +proto-google-cloud-spanner-v1:6.92.0:6.92.1-SNAPSHOT +proto-google-cloud-spanner-admin-database-v1:6.92.0:6.92.1-SNAPSHOT +grpc-google-cloud-spanner-v1:6.92.0:6.92.1-SNAPSHOT +grpc-google-cloud-spanner-admin-instance-v1:6.92.0:6.92.1-SNAPSHOT +grpc-google-cloud-spanner-admin-database-v1:6.92.0:6.92.1-SNAPSHOT +google-cloud-spanner:6.92.0:6.92.1-SNAPSHOT +google-cloud-spanner-executor:6.92.0:6.92.1-SNAPSHOT +proto-google-cloud-spanner-executor-v1:6.92.0:6.92.1-SNAPSHOT +grpc-google-cloud-spanner-executor-v1:6.92.0:6.92.1-SNAPSHOT From 85a0820505889ae6482a9e4f845cd53430dd6b44 Mon Sep 17 00:00:00 2001 From: Liam Miller-Cushon Date: Wed, 30 Apr 2025 19:33:35 +0200 Subject: [PATCH 2/9] fix: non-ASCII Unicode characters in code (#3844) Co-authored-by: rahul2393 --- .../src/main/java/com/google/cloud/spanner/StructReader.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/google-cloud-spanner/src/main/java/com/google/cloud/spanner/StructReader.java b/google-cloud-spanner/src/main/java/com/google/cloud/spanner/StructReader.java index 801dc8863b5..f690011f389 100644 --- a/google-cloud-spanner/src/main/java/com/google/cloud/spanner/StructReader.java +++ b/google-cloud-spanner/src/main/java/com/google/cloud/spanner/StructReader.java @@ -648,7 +648,7 @@ default List getProtoEnumList( List getUuidList(int columnIndex); - List getUuidList(String columnNameƏ); + List getUuidList(String columnName); /** * @param columnIndex index of the column From 32b2373d62cac3047d9686c56af278c706d7c488 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Knut=20Olav=20L=C3=B8ite?= Date: Wed, 30 Apr 2025 21:34:35 +0200 Subject: [PATCH 3/9] fix: only close and return sessions once (#3846) * fix: only close and return sessions once Closing a pooled session multiple times would cause it to be added to the pool multiple times. This fix prevents this by keeping track of the state of a session that has been checked out. * chore: generate libraries at Wed Apr 30 16:40:04 UTC 2025 --------- Co-authored-by: cloud-java-bot --- .../com/google/cloud/spanner/SessionPool.java | 16 ++++++++ .../spanner/AsyncTransactionManagerTest.java | 38 +++++++++++++++++++ 2 files changed, 54 insertions(+) diff --git a/google-cloud-spanner/src/main/java/com/google/cloud/spanner/SessionPool.java b/google-cloud-spanner/src/main/java/com/google/cloud/spanner/SessionPool.java index 0b55a893aca..fa4e1d03d0c 100644 --- a/google-cloud-spanner/src/main/java/com/google/cloud/spanner/SessionPool.java +++ b/google-cloud-spanner/src/main/java/com/google/cloud/spanner/SessionPool.java @@ -1314,6 +1314,7 @@ default void addListener(Runnable listener, Executor exec) {} class PooledSessionFuture extends SimpleForwardingListenableFuture implements SessionFuture { + private boolean closed; private volatile LeakedSessionException leakedException; private final AtomicBoolean inUse = new AtomicBoolean(); private final CountDownLatch initialized = new CountDownLatch(1); @@ -1331,6 +1332,7 @@ void clearLeakedException() { } private void markCheckedOut() { + if (options.isTrackStackTraceOfSessionCheckout()) { this.leakedException = new LeakedSessionException(); synchronized (SessionPool.this.lock) { @@ -1520,6 +1522,13 @@ public void close() { @Override public ApiFuture asyncClose() { + synchronized (this) { + // Don't add the session twice to the pool if a resource is being closed multiple times. + if (closed) { + return ApiFutures.immediateFuture(Empty.getDefaultInstance()); + } + closed = true; + } try { PooledSession delegate = getOrNull(); if (delegate != null) { @@ -3142,6 +3151,13 @@ int totalSessions() { } } + @VisibleForTesting + int numSessionsInPool() { + synchronized (lock) { + return sessions.size(); + } + } + private ApiFuture closeSessionAsync(final PooledSession sess) { ApiFuture res = sess.delegate.asyncClose(); res.addListener( diff --git a/google-cloud-spanner/src/test/java/com/google/cloud/spanner/AsyncTransactionManagerTest.java b/google-cloud-spanner/src/test/java/com/google/cloud/spanner/AsyncTransactionManagerTest.java index 6a5d77e20e7..68cf63d872f 100644 --- a/google-cloud-spanner/src/test/java/com/google/cloud/spanner/AsyncTransactionManagerTest.java +++ b/google-cloud-spanner/src/test/java/com/google/cloud/spanner/AsyncTransactionManagerTest.java @@ -1237,6 +1237,44 @@ public void testAbandonedAsyncTransactionManager_rollbackFails() throws Exceptio assertTrue(gotException); } + @Test + public void testRollbackAndCloseEmptyTransaction() throws Exception { + assumeFalse( + spannerWithEmptySessionPool + .getOptions() + .getSessionPoolOptions() + .getUseMultiplexedSessionForRW()); + + DatabaseClientImpl client = (DatabaseClientImpl) clientWithEmptySessionPool(); + + // Create a transaction manager and start a transaction. This should create a session and + // check it out of the pool. + AsyncTransactionManager manager = client.transactionManagerAsync(); + manager.beginAsync().get(); + assertEquals(0, client.pool.numSessionsInPool()); + assertEquals(1, client.pool.totalSessions()); + + // Rolling back an empty transaction will return the session to the pool. + manager.rollbackAsync().get(); + assertEquals(1, client.pool.numSessionsInPool()); + // Closing the transaction manager should not cause the session to be added to the pool again. + manager.close(); + // The total number of sessions does not change. + assertEquals(1, client.pool.numSessionsInPool()); + + // Check out 2 sessions. Make sure that the pool really created a new session, and did not + // return the same session twice. + AsyncTransactionManager manager1 = client.transactionManagerAsync(); + AsyncTransactionManager manager2 = client.transactionManagerAsync(); + manager1.beginAsync().get(); + manager2.beginAsync().get(); + assertEquals(2, client.pool.totalSessions()); + assertEquals(0, client.pool.numSessionsInPool()); + manager1.close(); + manager2.close(); + assertEquals(2, client.pool.numSessionsInPool()); + } + private boolean isMultiplexedSessionsEnabled() { if (spanner.getOptions() == null || spanner.getOptions().getSessionPoolOptions() == null) { return false; From 23b985c9a04837b0b38f2cfc5d96469e1d664d67 Mon Sep 17 00:00:00 2001 From: rahul2393 Date: Fri, 9 May 2025 09:21:55 +0530 Subject: [PATCH 4/9] chore(deps): update all deps (#3853) * chore(deps): update all deps * run check style with java:11 * chore: generate libraries at Fri May 9 03:15:03 UTC 2025 --------- Co-authored-by: cloud-java-bot --- .github/workflows/hermetic_library_generation.yaml | 2 +- .github/workflows/samples.yaml | 2 +- .github/workflows/unmanaged_dependency_check.yaml | 2 +- .kokoro/presubmit/graalvm-native-a.cfg | 2 +- .kokoro/presubmit/graalvm-native-b.cfg | 2 +- .kokoro/presubmit/graalvm-native-c.cfg | 2 +- benchmarks/pom.xml | 2 +- generation_config.yaml | 4 ++-- google-cloud-spanner-bom/pom.xml | 2 +- google-cloud-spanner-executor/pom.xml | 4 ++-- google-cloud-spanner/pom.xml | 10 +++++----- pom.xml | 2 +- samples/install-without-bom/pom.xml | 6 +++--- samples/pom.xml | 4 ++-- samples/snapshot/pom.xml | 6 +++--- samples/snippets/pom.xml | 2 +- 16 files changed, 27 insertions(+), 27 deletions(-) diff --git a/.github/workflows/hermetic_library_generation.yaml b/.github/workflows/hermetic_library_generation.yaml index 6b856abdef3..f0b1369c88b 100644 --- a/.github/workflows/hermetic_library_generation.yaml +++ b/.github/workflows/hermetic_library_generation.yaml @@ -37,7 +37,7 @@ jobs: with: fetch-depth: 0 token: ${{ secrets.CLOUD_JAVA_BOT_TOKEN }} - - uses: googleapis/sdk-platform-java/.github/scripts@v2.56.2 + - uses: googleapis/sdk-platform-java/.github/scripts@v2.57.0 if: env.SHOULD_RUN == 'true' with: base_ref: ${{ github.base_ref }} diff --git a/.github/workflows/samples.yaml b/.github/workflows/samples.yaml index 36e725f6aa2..37e2b4054f9 100644 --- a/.github/workflows/samples.yaml +++ b/.github/workflows/samples.yaml @@ -8,7 +8,7 @@ jobs: - uses: actions/checkout@v4 - uses: actions/setup-java@v1 with: - java-version: 8 + java-version: 11 - name: Run checkstyle run: mvn -P lint --quiet --batch-mode checkstyle:check working-directory: samples/snippets diff --git a/.github/workflows/unmanaged_dependency_check.yaml b/.github/workflows/unmanaged_dependency_check.yaml index eaf32470034..5663b4b2fe4 100644 --- a/.github/workflows/unmanaged_dependency_check.yaml +++ b/.github/workflows/unmanaged_dependency_check.yaml @@ -17,6 +17,6 @@ jobs: # repository .kokoro/build.sh - name: Unmanaged dependency check - uses: googleapis/sdk-platform-java/java-shared-dependencies/unmanaged-dependency-check@google-cloud-shared-dependencies/v3.46.2 + uses: googleapis/sdk-platform-java/java-shared-dependencies/unmanaged-dependency-check@google-cloud-shared-dependencies/v3.47.0 with: bom-path: google-cloud-spanner-bom/pom.xml diff --git a/.kokoro/presubmit/graalvm-native-a.cfg b/.kokoro/presubmit/graalvm-native-a.cfg index d0c29521333..24e5053a5b7 100644 --- a/.kokoro/presubmit/graalvm-native-a.cfg +++ b/.kokoro/presubmit/graalvm-native-a.cfg @@ -3,7 +3,7 @@ # Configure the docker image for kokoro-trampoline. env_vars: { key: "TRAMPOLINE_IMAGE" - value: "gcr.io/cloud-devrel-public-resources/graalvm_sdk_platform_a:3.46.2" # {x-version-update:google-cloud-shared-dependencies:current} + value: "gcr.io/cloud-devrel-public-resources/graalvm_sdk_platform_a:3.47.0" # {x-version-update:google-cloud-shared-dependencies:current} } env_vars: { diff --git a/.kokoro/presubmit/graalvm-native-b.cfg b/.kokoro/presubmit/graalvm-native-b.cfg index 962c305ff7f..ae35f6cb21f 100644 --- a/.kokoro/presubmit/graalvm-native-b.cfg +++ b/.kokoro/presubmit/graalvm-native-b.cfg @@ -3,7 +3,7 @@ # Configure the docker image for kokoro-trampoline. env_vars: { key: "TRAMPOLINE_IMAGE" - value: "gcr.io/cloud-devrel-public-resources/graalvm_sdk_platform_b:3.46.2" # {x-version-update:google-cloud-shared-dependencies:current} + value: "gcr.io/cloud-devrel-public-resources/graalvm_sdk_platform_b:3.47.0" # {x-version-update:google-cloud-shared-dependencies:current} } env_vars: { diff --git a/.kokoro/presubmit/graalvm-native-c.cfg b/.kokoro/presubmit/graalvm-native-c.cfg index 87b5dff65a3..660f1ee7eae 100644 --- a/.kokoro/presubmit/graalvm-native-c.cfg +++ b/.kokoro/presubmit/graalvm-native-c.cfg @@ -3,7 +3,7 @@ # Configure the docker image for kokoro-trampoline. env_vars: { key: "TRAMPOLINE_IMAGE" - value: "gcr.io/cloud-devrel-public-resources/graalvm_sdk_platform_c:3.46.2" # {x-version-update:google-cloud-shared-dependencies:current} + value: "gcr.io/cloud-devrel-public-resources/graalvm_sdk_platform_c:3.47.0" # {x-version-update:google-cloud-shared-dependencies:current} } env_vars: { diff --git a/benchmarks/pom.xml b/benchmarks/pom.xml index 61a13d2ff5f..8161b71d948 100644 --- a/benchmarks/pom.xml +++ b/benchmarks/pom.xml @@ -34,7 +34,7 @@ UTF-8 UTF-8 2.10.1 - 1.45.0 + 1.49.0 diff --git a/generation_config.yaml b/generation_config.yaml index 287eba4ba07..5b109886e30 100644 --- a/generation_config.yaml +++ b/generation_config.yaml @@ -1,5 +1,5 @@ -gapic_generator_version: 2.56.2 -googleapis_commitish: 2eec62dc7ed836c8d9f73fb313afb8f48c361bef +gapic_generator_version: 2.57.0 +googleapis_commitish: 69d549c7eaccfc9584fd64c38c746a48ef635f60 libraries_bom_version: 26.59.0 libraries: - api_shortname: spanner diff --git a/google-cloud-spanner-bom/pom.xml b/google-cloud-spanner-bom/pom.xml index 356aa51b9d8..35106e28b92 100644 --- a/google-cloud-spanner-bom/pom.xml +++ b/google-cloud-spanner-bom/pom.xml @@ -8,7 +8,7 @@ com.google.cloud sdk-platform-java-config - 3.46.2 + 3.47.0 Google Cloud Spanner BOM diff --git a/google-cloud-spanner-executor/pom.xml b/google-cloud-spanner-executor/pom.xml index 9f25a583a4f..b0f825994b5 100644 --- a/google-cloud-spanner-executor/pom.xml +++ b/google-cloud-spanner-executor/pom.xml @@ -64,7 +64,7 @@ com.google.cloud google-cloud-trace - 2.53.0 + 2.62.0 io.grpc @@ -137,7 +137,7 @@ com.google.api.grpc proto-google-cloud-trace-v1 - 2.53.0 + 2.62.0 com.google.api.grpc diff --git a/google-cloud-spanner/pom.xml b/google-cloud-spanner/pom.xml index 15911018d49..f0878cceaa3 100644 --- a/google-cloud-spanner/pom.xml +++ b/google-cloud-spanner/pom.xml @@ -269,12 +269,12 @@ com.google.cloud google-cloud-monitoring - 3.54.0 + 3.63.0 com.google.api.grpc proto-google-cloud-monitoring-v3 - 3.57.0 + 3.63.0 com.google.auth @@ -421,7 +421,7 @@ org.json json - 20240303 + 20250107 test @@ -468,13 +468,13 @@ com.google.cloud google-cloud-trace - 2.51.0 + 2.62.0 test com.google.api.grpc proto-google-cloud-trace-v1 - 2.51.0 + 2.62.0 test diff --git a/pom.xml b/pom.xml index 064767ba74c..c10f0f8963f 100644 --- a/pom.xml +++ b/pom.xml @@ -14,7 +14,7 @@ com.google.cloud sdk-platform-java-config - 3.46.2 + 3.47.0 diff --git a/samples/install-without-bom/pom.xml b/samples/install-without-bom/pom.xml index 065b9b81b63..ce04def79f3 100644 --- a/samples/install-without-bom/pom.xml +++ b/samples/install-without-bom/pom.xml @@ -14,7 +14,7 @@ com.google.cloud.samples shared-configuration - 1.2.0 + 1.2.2 @@ -23,8 +23,8 @@ 1.8 UTF-8 0.31.1 - 2.54.0 - 3.54.0 + 2.62.0 + 3.63.0 diff --git a/samples/pom.xml b/samples/pom.xml index 7f027400da9..d72a58cea5d 100644 --- a/samples/pom.xml +++ b/samples/pom.xml @@ -18,7 +18,7 @@ com.google.cloud.samples shared-configuration - 1.2.0 + 1.2.2 @@ -39,7 +39,7 @@ org.apache.maven.plugins maven-deploy-plugin - 3.1.3 + 3.1.4 true diff --git a/samples/snapshot/pom.xml b/samples/snapshot/pom.xml index 1d84c1ab5fb..76dff3a8acf 100644 --- a/samples/snapshot/pom.xml +++ b/samples/snapshot/pom.xml @@ -14,7 +14,7 @@ com.google.cloud.samples shared-configuration - 1.2.0 + 1.2.2 @@ -23,8 +23,8 @@ 1.8 UTF-8 0.31.1 - 2.54.0 - 3.54.0 + 2.62.0 + 3.63.0 diff --git a/samples/snippets/pom.xml b/samples/snippets/pom.xml index 71949e27f82..dfa87cc1860 100644 --- a/samples/snippets/pom.xml +++ b/samples/snippets/pom.xml @@ -16,7 +16,7 @@ com.google.cloud.samples shared-configuration - 1.2.0 + 1.2.2 From da8dd8da3171a073d7b450d4413936351a4c1060 Mon Sep 17 00:00:00 2001 From: surbhigarg92 Date: Fri, 9 May 2025 10:31:26 +0530 Subject: [PATCH 5/9] fix: change server timing duration attribute to float as per w3c (#3851) * fix: change server timing duration attribute to float as per w3c * fix clirr * remove deprecated warning --------- Co-authored-by: rahul yadav Co-authored-by: rahul2393 --- .../cloud/spanner/BuiltInMetricsRecorder.java | 4 +-- .../cloud/spanner/BuiltInMetricsTracer.java | 8 ++--- .../google/cloud/spanner/CompositeTracer.java | 20 +++++++++++-- .../spanner/spi/v1/HeaderInterceptor.java | 18 ++++++------ .../spanner/AbstractNettyMockServerTest.java | 13 ++++----- ...OpenTelemetryBuiltInMetricsTracerTest.java | 29 ++++++++++--------- 6 files changed, 54 insertions(+), 38 deletions(-) diff --git a/google-cloud-spanner/src/main/java/com/google/cloud/spanner/BuiltInMetricsRecorder.java b/google-cloud-spanner/src/main/java/com/google/cloud/spanner/BuiltInMetricsRecorder.java index d8ee9fc416e..2eb7c8d2971 100644 --- a/google-cloud-spanner/src/main/java/com/google/cloud/spanner/BuiltInMetricsRecorder.java +++ b/google-cloud-spanner/src/main/java/com/google/cloud/spanner/BuiltInMetricsRecorder.java @@ -97,8 +97,8 @@ class BuiltInMetricsRecorder extends OpenTelemetryMetricsRecorder { * @param attributes Map of the attributes to store */ void recordServerTimingHeaderMetrics( - Long gfeLatency, - Long afeLatency, + Float gfeLatency, + Float afeLatency, Long gfeHeaderMissingCount, Long afeHeaderMissingCount, Map attributes) { diff --git a/google-cloud-spanner/src/main/java/com/google/cloud/spanner/BuiltInMetricsTracer.java b/google-cloud-spanner/src/main/java/com/google/cloud/spanner/BuiltInMetricsTracer.java index 488cf3890c3..f94af1160e4 100644 --- a/google-cloud-spanner/src/main/java/com/google/cloud/spanner/BuiltInMetricsTracer.java +++ b/google-cloud-spanner/src/main/java/com/google/cloud/spanner/BuiltInMetricsTracer.java @@ -37,8 +37,8 @@ class BuiltInMetricsTracer extends MetricsTracer implements ApiTracer { private final BuiltInMetricsRecorder builtInOpenTelemetryMetricsRecorder; // These are RPC specific attributes and pertain to a specific API Trace private final Map attributes = new HashMap<>(); - private Long gfeLatency = null; - private Long afeLatency = null; + private Float gfeLatency = null; + private Float afeLatency = null; private long gfeHeaderMissingCount = 0; private long afeHeaderMissingCount = 0; @@ -119,11 +119,11 @@ public void attemptPermanentFailure(Throwable error) { gfeLatency, afeLatency, gfeHeaderMissingCount, afeHeaderMissingCount, attributes); } - void recordGFELatency(Long gfeLatency) { + void recordGFELatency(Float gfeLatency) { this.gfeLatency = gfeLatency; } - void recordAFELatency(Long afeLatency) { + void recordAFELatency(Float afeLatency) { this.afeLatency = afeLatency; } diff --git a/google-cloud-spanner/src/main/java/com/google/cloud/spanner/CompositeTracer.java b/google-cloud-spanner/src/main/java/com/google/cloud/spanner/CompositeTracer.java index afc202342d8..5d3b416788f 100644 --- a/google-cloud-spanner/src/main/java/com/google/cloud/spanner/CompositeTracer.java +++ b/google-cloud-spanner/src/main/java/com/google/cloud/spanner/CompositeTracer.java @@ -194,7 +194,7 @@ public void addAttributes(Map attributes) { public void recordGFELatency(Long gfeLatency) { for (ApiTracer child : children) { if (child instanceof BuiltInMetricsTracer) { - ((BuiltInMetricsTracer) child).recordGFELatency(gfeLatency); + ((BuiltInMetricsTracer) child).recordGFELatency(Float.valueOf(gfeLatency)); } } } @@ -210,7 +210,7 @@ public void recordGfeHeaderMissingCount(Long value) { public void recordAFELatency(Long afeLatency) { for (ApiTracer child : children) { if (child instanceof BuiltInMetricsTracer) { - ((BuiltInMetricsTracer) child).recordAFELatency(afeLatency); + ((BuiltInMetricsTracer) child).recordAFELatency(Float.valueOf(afeLatency)); } } } @@ -222,4 +222,20 @@ public void recordAfeHeaderMissingCount(Long value) { } } } + + public void recordGFELatency(Float gfeLatency) { + for (ApiTracer child : children) { + if (child instanceof BuiltInMetricsTracer) { + ((BuiltInMetricsTracer) child).recordGFELatency(gfeLatency); + } + } + } + + public void recordAFELatency(Float afeLatency) { + for (ApiTracer child : children) { + if (child instanceof BuiltInMetricsTracer) { + ((BuiltInMetricsTracer) child).recordAFELatency(afeLatency); + } + } + } } diff --git a/google-cloud-spanner/src/main/java/com/google/cloud/spanner/spi/v1/HeaderInterceptor.java b/google-cloud-spanner/src/main/java/com/google/cloud/spanner/spi/v1/HeaderInterceptor.java index 0f132593565..32e6f2c3b96 100644 --- a/google-cloud-spanner/src/main/java/com/google/cloud/spanner/spi/v1/HeaderInterceptor.java +++ b/google-cloud-spanner/src/main/java/com/google/cloud/spanner/spi/v1/HeaderInterceptor.java @@ -76,7 +76,7 @@ class HeaderInterceptor implements ClientInterceptor { private static final Metadata.Key GOOGLE_CLOUD_RESOURCE_PREFIX_KEY = Metadata.Key.of("google-cloud-resource-prefix", Metadata.ASCII_STRING_MARSHALLER); private static final Pattern SERVER_TIMING_PATTERN = - Pattern.compile("(?[a-zA-Z0-9_-]+);\\s*dur=(?\\d+)"); + Pattern.compile("(?[a-zA-Z0-9_-]+);\\s*dur=(?\\d+(\\.\\d+)?)"); private static final Pattern GOOGLE_CLOUD_RESOURCE_PREFIX_PATTERN = Pattern.compile( ".*projects/(?\\p{ASCII}[^/]*)(/instances/(?\\p{ASCII}[^/]*))?(/databases/(?\\p{ASCII}[^/]*))?"); @@ -162,15 +162,15 @@ private void processHeader( // would fail to parse it correctly. To make the parsing more robust, the logic has been // updated to handle multiple metrics gracefully. - Map serverTimingMetrics = parseServerTimingHeader(serverTiming); + Map serverTimingMetrics = parseServerTimingHeader(serverTiming); if (serverTimingMetrics.containsKey(GFE_TIMING_HEADER)) { - long gfeLatency = serverTimingMetrics.get(GFE_TIMING_HEADER); + float gfeLatency = serverTimingMetrics.get(GFE_TIMING_HEADER); - measureMap.put(SPANNER_GFE_LATENCY, gfeLatency); + measureMap.put(SPANNER_GFE_LATENCY, (long) gfeLatency); measureMap.put(SPANNER_GFE_HEADER_MISSING_COUNT, 0L); measureMap.record(tagContext); - spannerRpcMetrics.recordGfeLatency(gfeLatency, attributes); + spannerRpcMetrics.recordGfeLatency((long) gfeLatency, attributes); spannerRpcMetrics.recordGfeHeaderMissingCount(0L, attributes); if (compositeTracer != null) { compositeTracer.recordGFELatency(gfeLatency); @@ -189,7 +189,7 @@ private void processHeader( // Record AFE metrics if (compositeTracer != null && GapicSpannerRpc.isEnableAFEServerTiming()) { if (serverTimingMetrics.containsKey(AFE_TIMING_HEADER)) { - long afeLatency = serverTimingMetrics.get(AFE_TIMING_HEADER); + float afeLatency = serverTimingMetrics.get(AFE_TIMING_HEADER); compositeTracer.recordAFELatency(afeLatency); } else { compositeTracer.recordAfeHeaderMissingCount(1L); @@ -200,8 +200,8 @@ private void processHeader( } } - private Map parseServerTimingHeader(String serverTiming) { - Map serverTimingMetrics = new HashMap<>(); + private Map parseServerTimingHeader(String serverTiming) { + Map serverTimingMetrics = new HashMap<>(); if (serverTiming != null) { Matcher matcher = SERVER_TIMING_PATTERN.matcher(serverTiming); while (matcher.find()) { @@ -209,7 +209,7 @@ private Map parseServerTimingHeader(String serverTiming) { String durationStr = matcher.group("duration"); if (metricName != null && durationStr != null) { - serverTimingMetrics.put(metricName, Long.valueOf(durationStr)); + serverTimingMetrics.put(metricName, Float.valueOf(durationStr)); } } } diff --git a/google-cloud-spanner/src/test/java/com/google/cloud/spanner/AbstractNettyMockServerTest.java b/google-cloud-spanner/src/test/java/com/google/cloud/spanner/AbstractNettyMockServerTest.java index afb550b5c6a..a763f98cf0f 100644 --- a/google-cloud-spanner/src/test/java/com/google/cloud/spanner/AbstractNettyMockServerTest.java +++ b/google-cloud-spanner/src/test/java/com/google/cloud/spanner/AbstractNettyMockServerTest.java @@ -31,7 +31,7 @@ import java.util.Random; import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors; -import java.util.concurrent.atomic.AtomicInteger; +import java.util.concurrent.atomic.AtomicReference; import org.junit.After; import org.junit.AfterClass; import org.junit.Before; @@ -44,11 +44,10 @@ abstract class AbstractNettyMockServerTest { protected static InetSocketAddress address; static ExecutorService executor; protected static LocalChannelProvider channelProvider; - protected static AtomicInteger fakeServerTiming = - new AtomicInteger(new Random().nextInt(1000) + 1); - - protected static AtomicInteger fakeAFEServerTiming = - new AtomicInteger(new Random().nextInt(500) + 1); + protected static final AtomicReference fakeServerTiming = + new AtomicReference<>((float) (new Random().nextDouble() * 1000) + 1); + protected static final AtomicReference fakeAFEServerTiming = + new AtomicReference<>((float) new Random().nextInt(500) + 1); protected Spanner spanner; @@ -76,7 +75,7 @@ public void sendHeaders(Metadata headers) { headers.put( Metadata.Key.of("server-timing", Metadata.ASCII_STRING_MARSHALLER), String.format( - "afe; dur=%d, gfet4t7; dur=%d", + "afe; dur=%f, gfet4t7; dur=%f", fakeAFEServerTiming.get(), fakeServerTiming.get())); super.sendHeaders(headers); } diff --git a/google-cloud-spanner/src/test/java/com/google/cloud/spanner/OpenTelemetryBuiltInMetricsTracerTest.java b/google-cloud-spanner/src/test/java/com/google/cloud/spanner/OpenTelemetryBuiltInMetricsTracerTest.java index 9392e202b7a..acc94ea56e5 100644 --- a/google-cloud-spanner/src/test/java/com/google/cloud/spanner/OpenTelemetryBuiltInMetricsTracerTest.java +++ b/google-cloud-spanner/src/test/java/com/google/cloud/spanner/OpenTelemetryBuiltInMetricsTracerTest.java @@ -84,7 +84,7 @@ public class OpenTelemetryBuiltInMetricsTracerTest extends AbstractNettyMockServ Attributes.builder().put(BuiltInMetricsConstant.DIRECT_PATH_USED_KEY, "false").build(); ; - private static final long MIN_LATENCY = 0; + private static final double MIN_LATENCY = 0; private DatabaseClient client; @@ -159,7 +159,7 @@ public void testMetricsSingleUseQuery() { assertFalse(resultSet.next()); } - long elapsed = stopwatch.elapsed(TimeUnit.MILLISECONDS); + double elapsed = stopwatch.elapsed(TimeUnit.MILLISECONDS); Attributes expectedAttributes = expectedCommonBaseAttributes.toBuilder() .putAll(expectedCommonRequestAttributes) @@ -170,13 +170,14 @@ public void testMetricsSingleUseQuery() { MetricData operationLatencyMetricData = getMetricData(metricReader, BuiltInMetricsConstant.OPERATION_LATENCIES_NAME); assertNotNull(operationLatencyMetricData); - long operationLatencyValue = getAggregatedValue(operationLatencyMetricData, expectedAttributes); + double operationLatencyValue = + getAggregatedValue(operationLatencyMetricData, expectedAttributes); assertThat(operationLatencyValue).isIn(Range.closed(MIN_LATENCY, elapsed)); MetricData attemptLatencyMetricData = getMetricData(metricReader, BuiltInMetricsConstant.ATTEMPT_LATENCIES_NAME); assertNotNull(attemptLatencyMetricData); - long attemptLatencyValue = getAggregatedValue(attemptLatencyMetricData, expectedAttributes); + double attemptLatencyValue = getAggregatedValue(attemptLatencyMetricData, expectedAttributes); assertThat(attemptLatencyValue).isIn(Range.closed(MIN_LATENCY, elapsed)); MetricData operationCountMetricData = @@ -191,7 +192,7 @@ public void testMetricsSingleUseQuery() { MetricData gfeLatencyMetricData = getMetricData(metricReader, BuiltInMetricsConstant.GFE_LATENCIES_NAME); - long gfeLatencyValue = getAggregatedValue(gfeLatencyMetricData, expectedAttributes); + double gfeLatencyValue = getAggregatedValue(gfeLatencyMetricData, expectedAttributes); assertEquals(fakeServerTiming.get(), gfeLatencyValue, 0); assertFalse( @@ -229,7 +230,7 @@ public void testMetricsSingleUseQueryWithAfeEnabled() throws Exception { assertFalse(resultSet.next()); } - long elapsed = stopwatch.elapsed(TimeUnit.MILLISECONDS); + double elapsed = stopwatch.elapsed(TimeUnit.MILLISECONDS); Attributes expectedAttributes = expectedCommonBaseAttributes.toBuilder() .putAll(expectedCommonRequestAttributes) @@ -240,14 +241,14 @@ public void testMetricsSingleUseQueryWithAfeEnabled() throws Exception { MetricData operationLatencyMetricData = getMetricData(metricReader, BuiltInMetricsConstant.OPERATION_LATENCIES_NAME); assertNotNull(operationLatencyMetricData); - long operationLatencyValue = + double operationLatencyValue = getAggregatedValue(operationLatencyMetricData, expectedAttributes); assertThat(operationLatencyValue).isIn(Range.closed(MIN_LATENCY, elapsed)); MetricData attemptLatencyMetricData = getMetricData(metricReader, BuiltInMetricsConstant.ATTEMPT_LATENCIES_NAME); assertNotNull(attemptLatencyMetricData); - long attemptLatencyValue = getAggregatedValue(attemptLatencyMetricData, expectedAttributes); + double attemptLatencyValue = getAggregatedValue(attemptLatencyMetricData, expectedAttributes); assertThat(attemptLatencyValue).isIn(Range.closed(MIN_LATENCY, elapsed)); MetricData operationCountMetricData = @@ -262,7 +263,7 @@ public void testMetricsSingleUseQueryWithAfeEnabled() throws Exception { MetricData gfeLatencyMetricData = getMetricData(metricReader, BuiltInMetricsConstant.GFE_LATENCIES_NAME); - long gfeLatencyValue = getAggregatedValue(gfeLatencyMetricData, expectedAttributes); + double gfeLatencyValue = getAggregatedValue(gfeLatencyMetricData, expectedAttributes); assertEquals(fakeServerTiming.get(), gfeLatencyValue, 0); assertFalse( @@ -270,7 +271,7 @@ public void testMetricsSingleUseQueryWithAfeEnabled() throws Exception { MetricData afeLatencyMetricData = getMetricData(metricReader, BuiltInMetricsConstant.AFE_LATENCIES_NAME); - long afeLatencyValue = getAggregatedValue(afeLatencyMetricData, expectedAttributes); + double afeLatencyValue = getAggregatedValue(afeLatencyMetricData, expectedAttributes); assertEquals(fakeAFEServerTiming.get(), afeLatencyValue, 0); assertFalse( checkIfMetricExists(metricReader, BuiltInMetricsConstant.AFE_CONNECTIVITY_ERROR_NAME)); @@ -402,7 +403,7 @@ public void testNoNetworkConnection() { // Attempt count should have a failed metric point for CreateSession. assertEquals( - 1, getAggregatedValue(attemptCountMetricData, expectedAttributesCreateSessionFailed)); + 1, getAggregatedValue(attemptCountMetricData, expectedAttributesCreateSessionFailed), 0); } @Test @@ -509,14 +510,14 @@ private boolean checkIfMetricExists(InMemoryMetricReader reader, String metricNa return false; } - private long getAggregatedValue(MetricData metricData, Attributes attributes) { + private float getAggregatedValue(MetricData metricData, Attributes attributes) { switch (metricData.getType()) { case HISTOGRAM: return metricData.getHistogramData().getPoints().stream() .filter(pd -> pd.getAttributes().equals(attributes)) - .map(data -> (long) data.getSum() / data.getCount()) + .map(data -> (float) data.getSum() / data.getCount()) .findFirst() - .orElse(0L); + .orElse(0F); case LONG_SUM: return metricData.getLongSumData().getPoints().stream() .filter(pd -> pd.getAttributes().equals(attributes)) From f64356fcfbfb9c0a6aed9a92570601e3f0108431 Mon Sep 17 00:00:00 2001 From: Mend Renovate Date: Fri, 9 May 2025 07:20:50 +0200 Subject: [PATCH 6/9] build(deps): update dependency org.apache.maven.surefire:surefire-junit4 to v3.5.3 (#3855) --- google-cloud-spanner-executor/pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/google-cloud-spanner-executor/pom.xml b/google-cloud-spanner-executor/pom.xml index b0f825994b5..dc719f46a21 100644 --- a/google-cloud-spanner-executor/pom.xml +++ b/google-cloud-spanner-executor/pom.xml @@ -202,7 +202,7 @@ org.apache.maven.surefire surefire-junit4 - 3.5.2 + 3.5.3 test From e205a2b3f9d3fd6d7c29259aee5e97e2825510c0 Mon Sep 17 00:00:00 2001 From: Mend Renovate Date: Fri, 9 May 2025 07:52:10 +0200 Subject: [PATCH 7/9] build(deps): update dependency org.apache.maven.plugins:maven-failsafe-plugin to v3.5.3 (#3854) --- google-cloud-spanner-executor/pom.xml | 2 +- samples/install-without-bom/pom.xml | 2 +- samples/snapshot/pom.xml | 2 +- samples/snippets/pom.xml | 4 ++-- 4 files changed, 5 insertions(+), 5 deletions(-) diff --git a/google-cloud-spanner-executor/pom.xml b/google-cloud-spanner-executor/pom.xml index dc719f46a21..e39371d14ee 100644 --- a/google-cloud-spanner-executor/pom.xml +++ b/google-cloud-spanner-executor/pom.xml @@ -267,7 +267,7 @@ org.apache.maven.plugins maven-failsafe-plugin - 3.5.2 + 3.5.3 diff --git a/samples/install-without-bom/pom.xml b/samples/install-without-bom/pom.xml index ce04def79f3..10457c70ef6 100644 --- a/samples/install-without-bom/pom.xml +++ b/samples/install-without-bom/pom.xml @@ -145,7 +145,7 @@ org.apache.maven.plugins maven-failsafe-plugin - 3.5.2 + 3.5.3 10 false diff --git a/samples/snapshot/pom.xml b/samples/snapshot/pom.xml index 76dff3a8acf..31ab23e986f 100644 --- a/samples/snapshot/pom.xml +++ b/samples/snapshot/pom.xml @@ -144,7 +144,7 @@ org.apache.maven.plugins maven-failsafe-plugin - 3.5.2 + 3.5.3 10 false diff --git a/samples/snippets/pom.xml b/samples/snippets/pom.xml index dfa87cc1860..fa7df05da05 100644 --- a/samples/snippets/pom.xml +++ b/samples/snippets/pom.xml @@ -126,7 +126,7 @@ org.apache.maven.plugins maven-failsafe-plugin - 3.5.2 + 3.5.3 10 false @@ -155,7 +155,7 @@ org.apache.maven.plugins maven-failsafe-plugin - 3.5.2 + 3.5.3 10 false From 203baae3996378435095cb90e3b2c7ee71a643cd Mon Sep 17 00:00:00 2001 From: surbhigarg92 Date: Fri, 9 May 2025 14:59:09 +0530 Subject: [PATCH 8/9] feat: enable AFE and gRPC metrics for DP (#3852) * feat: enable AFE and gRPC metrics for DP * check afe metrics when DP is enabled * check afe metrics when DP is enabled * mergeconflict * chore: generate libraries at Fri May 9 05:49:15 UTC 2025 * review comments * roundofferrorfordouble --------- Co-authored-by: cloud-java-bot Co-authored-by: rahul2393 --- .../google/cloud/spanner/SpannerOptions.java | 12 ++++- .../cloud/spanner/spi/v1/GapicSpannerRpc.java | 17 ++++-- .../spanner/spi/v1/HeaderInterceptor.java | 10 ++-- ...OpenTelemetryBuiltInMetricsTracerTest.java | 54 ++++++++++++------- 4 files changed, 64 insertions(+), 29 deletions(-) diff --git a/google-cloud-spanner/src/main/java/com/google/cloud/spanner/SpannerOptions.java b/google-cloud-spanner/src/main/java/com/google/cloud/spanner/SpannerOptions.java index 0995c478427..a25e8bfa997 100644 --- a/google-cloud-spanner/src/main/java/com/google/cloud/spanner/SpannerOptions.java +++ b/google-cloud-spanner/src/main/java/com/google/cloud/spanner/SpannerOptions.java @@ -923,8 +923,16 @@ public boolean isEnableBuiltInMetrics() { @Override public boolean isEnableGRPCBuiltInMetrics() { - return "false" - .equalsIgnoreCase(System.getenv(SPANNER_DISABLE_DIRECT_ACCESS_GRPC_BUILTIN_METRICS)); + // Enable gRPC built-in metrics if: + // 1. The env var SPANNER_DISABLE_DIRECT_ACCESS_GRPC_BUILTIN_METRICS is explicitly set to + // "false", OR + // 2. DirectPath is enabled AND the env var is not set to "true" + // This allows metrics to be enabled by default when DirectPath is on, unless explicitly + // disabled via env. + String grpcDisableEnv = System.getenv("SPANNER_DISABLE_DIRECT_ACCESS_GRPC_BUILTIN_METRICS"); + boolean isDirectPathEnabled = GapicSpannerRpc.isEnableDirectPathXdsEnv(); + return ("false".equalsIgnoreCase(grpcDisableEnv)) + || (isDirectPathEnabled && !"true".equalsIgnoreCase(grpcDisableEnv)); } @Override diff --git a/google-cloud-spanner/src/main/java/com/google/cloud/spanner/spi/v1/GapicSpannerRpc.java b/google-cloud-spanner/src/main/java/com/google/cloud/spanner/spi/v1/GapicSpannerRpc.java index fa5719c95c4..c43bbe1f11b 100644 --- a/google-cloud-spanner/src/main/java/com/google/cloud/spanner/spi/v1/GapicSpannerRpc.java +++ b/google-cloud-spanner/src/main/java/com/google/cloud/spanner/spi/v1/GapicSpannerRpc.java @@ -367,8 +367,7 @@ public GapicSpannerRpc(final SpannerOptions options) { .withEncoding(compressorName)) .setHeaderProvider(headerProviderWithUserAgent) .setAllowNonDefaultServiceAccount(true); - String directPathXdsEnv = System.getenv("GOOGLE_SPANNER_ENABLE_DIRECT_ACCESS"); - boolean isAttemptDirectPathXds = Boolean.parseBoolean(directPathXdsEnv); + boolean isAttemptDirectPathXds = isEnableDirectPathXdsEnv(); if (isAttemptDirectPathXds) { defaultChannelProviderBuilder.setAttemptDirectPath(true); defaultChannelProviderBuilder.setAttemptDirectPathXds(); @@ -678,7 +677,19 @@ private static boolean isEmulatorEnabled(SpannerOptions options, String emulator } public static boolean isEnableAFEServerTiming() { - return "false".equalsIgnoreCase(System.getenv("SPANNER_DISABLE_AFE_SERVER_TIMING")); + // Enable AFE metrics and add AFE header if: + // 1. The env var SPANNER_DISABLE_AFE_SERVER_TIMING is explicitly set to "false", OR + // 2. DirectPath is enabled AND the env var is not set to "true" + // This allows metrics to be enabled by default when DirectPath is on, unless explicitly + // disabled via env. + String afeDisableEnv = System.getenv("SPANNER_DISABLE_AFE_SERVER_TIMING"); + boolean isDirectPathEnabled = isEnableDirectPathXdsEnv(); + return ("false".equalsIgnoreCase(afeDisableEnv)) + || (isDirectPathEnabled && !"true".equalsIgnoreCase(afeDisableEnv)); + } + + public static boolean isEnableDirectPathXdsEnv() { + return Boolean.parseBoolean(System.getenv("GOOGLE_SPANNER_ENABLE_DIRECT_ACCESS")); } private static final RetrySettings ADMIN_REQUESTS_LIMIT_EXCEEDED_RETRY_SETTINGS = diff --git a/google-cloud-spanner/src/main/java/com/google/cloud/spanner/spi/v1/HeaderInterceptor.java b/google-cloud-spanner/src/main/java/com/google/cloud/spanner/spi/v1/HeaderInterceptor.java index 32e6f2c3b96..e3bc848dc1e 100644 --- a/google-cloud-spanner/src/main/java/com/google/cloud/spanner/spi/v1/HeaderInterceptor.java +++ b/google-cloud-spanner/src/main/java/com/google/cloud/spanner/spi/v1/HeaderInterceptor.java @@ -133,7 +133,8 @@ public void onHeaders(Metadata metadata) { Boolean isDirectPathUsed = isDirectPathUsed(getAttributes().get(Grpc.TRANSPORT_ATTR_REMOTE_ADDR)); addDirectPathUsedAttribute(compositeTracer, isDirectPathUsed); - processHeader(metadata, tagContext, attributes, span, compositeTracer); + processHeader( + metadata, tagContext, attributes, span, compositeTracer, isDirectPathUsed); super.onHeaders(metadata); } }, @@ -151,7 +152,8 @@ private void processHeader( TagContext tagContext, Attributes attributes, Span span, - CompositeTracer compositeTracer) { + CompositeTracer compositeTracer, + boolean isDirectPathUsed) { MeasureMap measureMap = STATS_RECORDER.newMeasureMap(); String serverTiming = metadata.get(SERVER_TIMING_HEADER_KEY); try { @@ -172,7 +174,7 @@ private void processHeader( spannerRpcMetrics.recordGfeLatency((long) gfeLatency, attributes); spannerRpcMetrics.recordGfeHeaderMissingCount(0L, attributes); - if (compositeTracer != null) { + if (compositeTracer != null && !isDirectPathUsed) { compositeTracer.recordGFELatency(gfeLatency); } if (span != null) { @@ -181,7 +183,7 @@ private void processHeader( } else { measureMap.put(SPANNER_GFE_HEADER_MISSING_COUNT, 1L).record(tagContext); spannerRpcMetrics.recordGfeHeaderMissingCount(1L, attributes); - if (compositeTracer != null) { + if (compositeTracer != null && !isDirectPathUsed) { compositeTracer.recordGfeHeaderMissingCount(1L); } } diff --git a/google-cloud-spanner/src/test/java/com/google/cloud/spanner/OpenTelemetryBuiltInMetricsTracerTest.java b/google-cloud-spanner/src/test/java/com/google/cloud/spanner/OpenTelemetryBuiltInMetricsTracerTest.java index acc94ea56e5..55c5cf47714 100644 --- a/google-cloud-spanner/src/test/java/com/google/cloud/spanner/OpenTelemetryBuiltInMetricsTracerTest.java +++ b/google-cloud-spanner/src/test/java/com/google/cloud/spanner/OpenTelemetryBuiltInMetricsTracerTest.java @@ -34,6 +34,7 @@ import com.google.cloud.spanner.MockSpannerServiceImpl.SimulatedExecutionTime; import com.google.cloud.spanner.MockSpannerServiceImpl.StatementResult; import com.google.cloud.spanner.connection.RandomResultSetGenerator; +import com.google.cloud.spanner.spi.v1.GapicSpannerRpc; import com.google.common.base.Stopwatch; import com.google.common.collect.ImmutableList; import com.google.common.collect.Range; @@ -190,16 +191,23 @@ public void testMetricsSingleUseQuery() { assertNotNull(attemptCountMetricData); assertThat(getAggregatedValue(attemptCountMetricData, expectedAttributes)).isEqualTo(1); - MetricData gfeLatencyMetricData = - getMetricData(metricReader, BuiltInMetricsConstant.GFE_LATENCIES_NAME); - double gfeLatencyValue = getAggregatedValue(gfeLatencyMetricData, expectedAttributes); - assertEquals(fakeServerTiming.get(), gfeLatencyValue, 0); - assertFalse( checkIfMetricExists(metricReader, BuiltInMetricsConstant.GFE_CONNECTIVITY_ERROR_NAME)); - assertFalse(checkIfMetricExists(metricReader, BuiltInMetricsConstant.AFE_LATENCIES_NAME)); assertFalse( checkIfMetricExists(metricReader, BuiltInMetricsConstant.AFE_CONNECTIVITY_ERROR_NAME)); + if (GapicSpannerRpc.isEnableDirectPathXdsEnv()) { + // AFE metrics are enabled for DirectPath. + MetricData afeLatencyMetricData = + getMetricData(metricReader, BuiltInMetricsConstant.AFE_LATENCIES_NAME); + double afeLatencyValue = getAggregatedValue(afeLatencyMetricData, expectedAttributes); + assertEquals(fakeAFEServerTiming.get(), afeLatencyValue, 1e-6); + } else { + MetricData gfeLatencyMetricData = + getMetricData(metricReader, BuiltInMetricsConstant.GFE_LATENCIES_NAME); + double gfeLatencyValue = getAggregatedValue(gfeLatencyMetricData, expectedAttributes); + assertEquals(fakeServerTiming.get(), gfeLatencyValue, 1e-6); + assertFalse(checkIfMetricExists(metricReader, BuiltInMetricsConstant.AFE_LATENCIES_NAME)); + } } private boolean isJava8() { @@ -261,20 +269,19 @@ public void testMetricsSingleUseQueryWithAfeEnabled() throws Exception { assertNotNull(attemptCountMetricData); assertThat(getAggregatedValue(attemptCountMetricData, expectedAttributes)).isEqualTo(1); - MetricData gfeLatencyMetricData = - getMetricData(metricReader, BuiltInMetricsConstant.GFE_LATENCIES_NAME); - double gfeLatencyValue = getAggregatedValue(gfeLatencyMetricData, expectedAttributes); - assertEquals(fakeServerTiming.get(), gfeLatencyValue, 0); - assertFalse( checkIfMetricExists(metricReader, BuiltInMetricsConstant.GFE_CONNECTIVITY_ERROR_NAME)); - + assertFalse( + checkIfMetricExists(metricReader, BuiltInMetricsConstant.AFE_CONNECTIVITY_ERROR_NAME)); MetricData afeLatencyMetricData = getMetricData(metricReader, BuiltInMetricsConstant.AFE_LATENCIES_NAME); double afeLatencyValue = getAggregatedValue(afeLatencyMetricData, expectedAttributes); - assertEquals(fakeAFEServerTiming.get(), afeLatencyValue, 0); - assertFalse( - checkIfMetricExists(metricReader, BuiltInMetricsConstant.AFE_CONNECTIVITY_ERROR_NAME)); + assertEquals(fakeAFEServerTiming.get(), afeLatencyValue, 1e-6); + + MetricData gfeLatencyMetricData = + getMetricData(metricReader, BuiltInMetricsConstant.GFE_LATENCIES_NAME); + double gfeLatencyValue = getAggregatedValue(gfeLatencyMetricData, expectedAttributes); + assertEquals(fakeServerTiming.get(), gfeLatencyValue, 1e-6); } finally { writeableEnvironmentVariables.remove("GOOGLE_CLOUD_SPANNER_MULTIPLEXED_SESSIONS"); } @@ -445,13 +452,20 @@ public void testNoServerTimingHeader() throws IOException, InterruptedException .put(BuiltInMetricsConstant.METHOD_KEY, "Spanner.ExecuteSql") .build(); - MetricData gfeConnectivityMetricData = - getMetricData(metricReader, BuiltInMetricsConstant.GFE_CONNECTIVITY_ERROR_NAME); - assertThat(getAggregatedValue(gfeConnectivityMetricData, expectedAttributes)).isEqualTo(1); assertFalse(checkIfMetricExists(metricReader, BuiltInMetricsConstant.AFE_LATENCIES_NAME)); assertFalse(checkIfMetricExists(metricReader, BuiltInMetricsConstant.GFE_LATENCIES_NAME)); - assertFalse( - checkIfMetricExists(metricReader, BuiltInMetricsConstant.AFE_CONNECTIVITY_ERROR_NAME)); + if (GapicSpannerRpc.isEnableDirectPathXdsEnv()) { + MetricData afeConnectivityMetricData = + getMetricData(metricReader, BuiltInMetricsConstant.AFE_CONNECTIVITY_ERROR_NAME); + assertThat(getAggregatedValue(afeConnectivityMetricData, expectedAttributes)).isEqualTo(1); + } else { + MetricData gfeConnectivityMetricData = + getMetricData(metricReader, BuiltInMetricsConstant.GFE_CONNECTIVITY_ERROR_NAME); + assertThat(getAggregatedValue(gfeConnectivityMetricData, expectedAttributes)).isEqualTo(1); + assertFalse( + checkIfMetricExists(metricReader, BuiltInMetricsConstant.AFE_CONNECTIVITY_ERROR_NAME)); + } + spannerNoHeader.close(); serverNoHeader.shutdown(); serverNoHeader.awaitTermination(); From 22820a13abe44de73e77796cd1e883f1915c3446 Mon Sep 17 00:00:00 2001 From: "release-please[bot]" <55107282+release-please[bot]@users.noreply.github.com> Date: Fri, 9 May 2025 15:55:29 +0530 Subject: [PATCH 9/9] chore(main): release 6.93.0 (#3847) * chore(main): release 6.93.0 * chore: generate libraries at Fri May 9 09:30:01 UTC 2025 --------- Co-authored-by: release-please[bot] <55107282+release-please[bot]@users.noreply.github.com> Co-authored-by: cloud-java-bot --- CHANGELOG.md | 15 ++++++++++++++ README.md | 6 +++--- benchmarks/pom.xml | 2 +- google-cloud-spanner-bom/pom.xml | 18 ++++++++--------- google-cloud-spanner-executor/pom.xml | 4 ++-- google-cloud-spanner/pom.xml | 4 ++-- .../pom.xml | 4 ++-- .../pom.xml | 4 ++-- grpc-google-cloud-spanner-executor-v1/pom.xml | 4 ++-- grpc-google-cloud-spanner-v1/pom.xml | 4 ++-- pom.xml | 20 +++++++++---------- .../pom.xml | 4 ++-- .../pom.xml | 4 ++-- .../pom.xml | 4 ++-- proto-google-cloud-spanner-v1/pom.xml | 4 ++-- samples/snapshot/pom.xml | 2 +- versions.txt | 20 +++++++++---------- 17 files changed, 69 insertions(+), 54 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 05eee459cb8..68989f1bc61 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,20 @@ # Changelog +## [6.93.0](https://github.com/googleapis/java-spanner/compare/v6.92.0...v6.93.0) (2025-05-09) + + +### Features + +* Enable AFE and gRPC metrics for DP ([#3852](https://github.com/googleapis/java-spanner/issues/3852)) ([203baae](https://github.com/googleapis/java-spanner/commit/203baae3996378435095cb90e3b2c7ee71a643cd)) + + +### Bug Fixes + +* Change server timing duration attribute to float as per w3c ([#3851](https://github.com/googleapis/java-spanner/issues/3851)) ([da8dd8d](https://github.com/googleapis/java-spanner/commit/da8dd8da3171a073d7b450d4413936351a4c1060)) +* **deps:** Update the Java code generator (gapic-generator-java) to 2.57.0 ([23b985c](https://github.com/googleapis/java-spanner/commit/23b985c9a04837b0b38f2cfc5d96469e1d664d67)) +* Non-ASCII Unicode characters in code ([#3844](https://github.com/googleapis/java-spanner/issues/3844)) ([85a0820](https://github.com/googleapis/java-spanner/commit/85a0820505889ae6482a9e4f845cd53430dd6b44)) +* Only close and return sessions once ([#3846](https://github.com/googleapis/java-spanner/issues/3846)) ([32b2373](https://github.com/googleapis/java-spanner/commit/32b2373d62cac3047d9686c56af278c706d7c488)) + ## [6.92.0](https://github.com/googleapis/java-spanner/compare/v6.91.1...v6.92.0) (2025-04-29) diff --git a/README.md b/README.md index 1bcd0fcc4e6..165cf6ed2d5 100644 --- a/README.md +++ b/README.md @@ -56,13 +56,13 @@ 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.92.0' +implementation 'com.google.cloud:google-cloud-spanner:6.93.0' ``` If you are using SBT, add this to your dependencies: ```Scala -libraryDependencies += "com.google.cloud" % "google-cloud-spanner" % "6.92.0" +libraryDependencies += "com.google.cloud" % "google-cloud-spanner" % "6.93.0" ``` ## Authentication @@ -728,7 +728,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.92.0 +[maven-version-link]: https://central.sonatype.com/artifact/com.google.cloud/google-cloud-spanner/6.93.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/benchmarks/pom.xml b/benchmarks/pom.xml index 8161b71d948..f9d4779c5f9 100644 --- a/benchmarks/pom.xml +++ b/benchmarks/pom.xml @@ -24,7 +24,7 @@ com.google.cloud google-cloud-spanner-parent - 6.92.1-SNAPSHOT + 6.93.0 diff --git a/google-cloud-spanner-bom/pom.xml b/google-cloud-spanner-bom/pom.xml index 35106e28b92..de163ff66e7 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.92.1-SNAPSHOT + 6.93.0 pom com.google.cloud @@ -53,43 +53,43 @@ com.google.cloud google-cloud-spanner - 6.92.1-SNAPSHOT + 6.93.0 com.google.cloud google-cloud-spanner test-jar - 6.92.1-SNAPSHOT + 6.93.0 com.google.api.grpc grpc-google-cloud-spanner-v1 - 6.92.1-SNAPSHOT + 6.93.0 com.google.api.grpc grpc-google-cloud-spanner-admin-instance-v1 - 6.92.1-SNAPSHOT + 6.93.0 com.google.api.grpc grpc-google-cloud-spanner-admin-database-v1 - 6.92.1-SNAPSHOT + 6.93.0 com.google.api.grpc proto-google-cloud-spanner-admin-instance-v1 - 6.92.1-SNAPSHOT + 6.93.0 com.google.api.grpc proto-google-cloud-spanner-v1 - 6.92.1-SNAPSHOT + 6.93.0 com.google.api.grpc proto-google-cloud-spanner-admin-database-v1 - 6.92.1-SNAPSHOT + 6.93.0 diff --git a/google-cloud-spanner-executor/pom.xml b/google-cloud-spanner-executor/pom.xml index e39371d14ee..20102f3598d 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.92.1-SNAPSHOT + 6.93.0 jar Google Cloud Spanner Executor com.google.cloud google-cloud-spanner-parent - 6.92.1-SNAPSHOT + 6.93.0 diff --git a/google-cloud-spanner/pom.xml b/google-cloud-spanner/pom.xml index f0878cceaa3..dc1116da57e 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.92.1-SNAPSHOT + 6.93.0 jar Google Cloud Spanner https://github.com/googleapis/java-spanner @@ -11,7 +11,7 @@ com.google.cloud google-cloud-spanner-parent - 6.92.1-SNAPSHOT + 6.93.0 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 945eda59f56..7cd4a0fccc2 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.92.1-SNAPSHOT + 6.93.0 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.92.1-SNAPSHOT + 6.93.0 diff --git a/grpc-google-cloud-spanner-admin-instance-v1/pom.xml b/grpc-google-cloud-spanner-admin-instance-v1/pom.xml index 977f31c1529..2b975d74549 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.92.1-SNAPSHOT + 6.93.0 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.92.1-SNAPSHOT + 6.93.0 diff --git a/grpc-google-cloud-spanner-executor-v1/pom.xml b/grpc-google-cloud-spanner-executor-v1/pom.xml index 4da1b80ccbe..dde2f322b53 100644 --- a/grpc-google-cloud-spanner-executor-v1/pom.xml +++ b/grpc-google-cloud-spanner-executor-v1/pom.xml @@ -4,13 +4,13 @@ 4.0.0 com.google.api.grpc grpc-google-cloud-spanner-executor-v1 - 6.92.1-SNAPSHOT + 6.93.0 grpc-google-cloud-spanner-executor-v1 GRPC library for google-cloud-spanner com.google.cloud google-cloud-spanner-parent - 6.92.1-SNAPSHOT + 6.93.0 diff --git a/grpc-google-cloud-spanner-v1/pom.xml b/grpc-google-cloud-spanner-v1/pom.xml index 8d478945b85..41247103661 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.92.1-SNAPSHOT + 6.93.0 grpc-google-cloud-spanner-v1 GRPC library for grpc-google-cloud-spanner-v1 com.google.cloud google-cloud-spanner-parent - 6.92.1-SNAPSHOT + 6.93.0 diff --git a/pom.xml b/pom.xml index c10f0f8963f..24ef30ec9d6 100644 --- a/pom.xml +++ b/pom.xml @@ -4,7 +4,7 @@ com.google.cloud google-cloud-spanner-parent pom - 6.92.1-SNAPSHOT + 6.93.0 Google Cloud Spanner Parent https://github.com/googleapis/java-spanner @@ -61,47 +61,47 @@ com.google.api.grpc proto-google-cloud-spanner-admin-instance-v1 - 6.92.1-SNAPSHOT + 6.93.0 com.google.api.grpc proto-google-cloud-spanner-executor-v1 - 6.92.1-SNAPSHOT + 6.93.0 com.google.api.grpc grpc-google-cloud-spanner-executor-v1 - 6.92.1-SNAPSHOT + 6.93.0 com.google.api.grpc proto-google-cloud-spanner-v1 - 6.92.1-SNAPSHOT + 6.93.0 com.google.api.grpc proto-google-cloud-spanner-admin-database-v1 - 6.92.1-SNAPSHOT + 6.93.0 com.google.api.grpc grpc-google-cloud-spanner-v1 - 6.92.1-SNAPSHOT + 6.93.0 com.google.api.grpc grpc-google-cloud-spanner-admin-instance-v1 - 6.92.1-SNAPSHOT + 6.93.0 com.google.api.grpc grpc-google-cloud-spanner-admin-database-v1 - 6.92.1-SNAPSHOT + 6.93.0 com.google.cloud google-cloud-spanner - 6.92.1-SNAPSHOT + 6.93.0 diff --git a/proto-google-cloud-spanner-admin-database-v1/pom.xml b/proto-google-cloud-spanner-admin-database-v1/pom.xml index 788d278114f..435770f1fc8 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.92.1-SNAPSHOT + 6.93.0 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.92.1-SNAPSHOT + 6.93.0 diff --git a/proto-google-cloud-spanner-admin-instance-v1/pom.xml b/proto-google-cloud-spanner-admin-instance-v1/pom.xml index d81fbe63350..bf9c63ccd25 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.92.1-SNAPSHOT + 6.93.0 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.92.1-SNAPSHOT + 6.93.0 diff --git a/proto-google-cloud-spanner-executor-v1/pom.xml b/proto-google-cloud-spanner-executor-v1/pom.xml index 701c635e3ef..1cf10ea4ff5 100644 --- a/proto-google-cloud-spanner-executor-v1/pom.xml +++ b/proto-google-cloud-spanner-executor-v1/pom.xml @@ -4,13 +4,13 @@ 4.0.0 com.google.api.grpc proto-google-cloud-spanner-executor-v1 - 6.92.1-SNAPSHOT + 6.93.0 proto-google-cloud-spanner-executor-v1 Proto library for google-cloud-spanner com.google.cloud google-cloud-spanner-parent - 6.92.1-SNAPSHOT + 6.93.0 diff --git a/proto-google-cloud-spanner-v1/pom.xml b/proto-google-cloud-spanner-v1/pom.xml index 6bdd874682d..ff578e86537 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.92.1-SNAPSHOT + 6.93.0 proto-google-cloud-spanner-v1 PROTO library for proto-google-cloud-spanner-v1 com.google.cloud google-cloud-spanner-parent - 6.92.1-SNAPSHOT + 6.93.0 diff --git a/samples/snapshot/pom.xml b/samples/snapshot/pom.xml index 31ab23e986f..5fb9361d004 100644 --- a/samples/snapshot/pom.xml +++ b/samples/snapshot/pom.xml @@ -32,7 +32,7 @@ com.google.cloud google-cloud-spanner - 6.92.1-SNAPSHOT + 6.93.0 diff --git a/versions.txt b/versions.txt index 550467d1d2f..41c52cc2547 100644 --- a/versions.txt +++ b/versions.txt @@ -1,13 +1,13 @@ # Format: # module:released-version:current-version -proto-google-cloud-spanner-admin-instance-v1:6.92.0:6.92.1-SNAPSHOT -proto-google-cloud-spanner-v1:6.92.0:6.92.1-SNAPSHOT -proto-google-cloud-spanner-admin-database-v1:6.92.0:6.92.1-SNAPSHOT -grpc-google-cloud-spanner-v1:6.92.0:6.92.1-SNAPSHOT -grpc-google-cloud-spanner-admin-instance-v1:6.92.0:6.92.1-SNAPSHOT -grpc-google-cloud-spanner-admin-database-v1:6.92.0:6.92.1-SNAPSHOT -google-cloud-spanner:6.92.0:6.92.1-SNAPSHOT -google-cloud-spanner-executor:6.92.0:6.92.1-SNAPSHOT -proto-google-cloud-spanner-executor-v1:6.92.0:6.92.1-SNAPSHOT -grpc-google-cloud-spanner-executor-v1:6.92.0:6.92.1-SNAPSHOT +proto-google-cloud-spanner-admin-instance-v1:6.93.0:6.93.0 +proto-google-cloud-spanner-v1:6.93.0:6.93.0 +proto-google-cloud-spanner-admin-database-v1:6.93.0:6.93.0 +grpc-google-cloud-spanner-v1:6.93.0:6.93.0 +grpc-google-cloud-spanner-admin-instance-v1:6.93.0:6.93.0 +grpc-google-cloud-spanner-admin-database-v1:6.93.0:6.93.0 +google-cloud-spanner:6.93.0:6.93.0 +google-cloud-spanner-executor:6.93.0:6.93.0 +proto-google-cloud-spanner-executor-v1:6.93.0:6.93.0 +grpc-google-cloud-spanner-executor-v1:6.93.0:6.93.0