diff --git a/.github/workflows/hermetic_library_generation.yaml b/.github/workflows/hermetic_library_generation.yaml index acb2753149..ea4c275a23 100644 --- a/.github/workflows/hermetic_library_generation.yaml +++ b/.github/workflows/hermetic_library_generation.yaml @@ -43,7 +43,7 @@ jobs: with: fetch-depth: 0 token: ${{ secrets.CLOUD_JAVA_BOT_TOKEN }} - - uses: googleapis/sdk-platform-java/.github/scripts@v2.57.0 + - uses: googleapis/sdk-platform-java/.github/scripts@v2.58.0 if: env.SHOULD_RUN == 'true' with: base_ref: ${{ github.base_ref }} diff --git a/.github/workflows/unmanaged_dependency_check.yaml b/.github/workflows/unmanaged_dependency_check.yaml index 0184514971..17daf44d4c 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.47.0 + uses: googleapis/sdk-platform-java/java-shared-dependencies/unmanaged-dependency-check@google-cloud-shared-dependencies/v3.48.0 with: bom-path: google-cloud-storage-bom/pom.xml diff --git a/.kokoro/presubmit/graalvm-native-17.cfg b/.kokoro/presubmit/graalvm-native-17.cfg index 64a30e85fb..31ad4e8812 100644 --- a/.kokoro/presubmit/graalvm-native-17.cfg +++ b/.kokoro/presubmit/graalvm-native-17.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.47.0" + value: "gcr.io/cloud-devrel-public-resources/graalvm_sdk_platform_b:3.48.0" } env_vars: { diff --git a/.kokoro/presubmit/graalvm-native-a.cfg b/.kokoro/presubmit/graalvm-native-a.cfg index d0c2952133..d72ed3f0e3 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.48.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 962c305ff7..f2e296b847 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.48.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 87b5dff65a..68512fbff5 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.48.0" # {x-version-update:google-cloud-shared-dependencies:current} } env_vars: { diff --git a/.kokoro/presubmit/graalvm-native.cfg b/.kokoro/presubmit/graalvm-native.cfg index 27bca566d5..72d1a92f99 100644 --- a/.kokoro/presubmit/graalvm-native.cfg +++ b/.kokoro/presubmit/graalvm-native.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.47.0" + value: "gcr.io/cloud-devrel-public-resources/graalvm_sdk_platform_a:3.48.0" } env_vars: { diff --git a/CHANGELOG.md b/CHANGELOG.md index 6bc64a895a..c156efc1da 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,18 @@ # Changelog +## [2.52.3](https://github.com/googleapis/java-storage/compare/v2.52.2...v2.52.3) (2025-05-19) + + +### Bug Fixes + +* Update grpc client side metrics detection to be graceful when not running on gcp ([#3097](https://github.com/googleapis/java-storage/issues/3097)) ([10cd32d](https://github.com/googleapis/java-storage/commit/10cd32d51aa061304b5b4d0d632a2eed694cd1d6)) + + +### Dependencies + +* Update dependency com.google.apis:google-api-services-storage to v1-rev20250509-2.0.0 ([#3103](https://github.com/googleapis/java-storage/issues/3103)) ([1fd1090](https://github.com/googleapis/java-storage/commit/1fd109094814bfb6270e10a3e4fd5ec4d20e7fba)) +* Update sdk-platform-java dependencies ([#3102](https://github.com/googleapis/java-storage/issues/3102)) ([3b53b94](https://github.com/googleapis/java-storage/commit/3b53b942f31805c5291ca109b4f3e501fbc6fc0d)) + ## [2.52.2](https://github.com/googleapis/java-storage/compare/v2.52.1...v2.52.2) (2025-05-06) diff --git a/gapic-google-cloud-storage-v2/pom.xml b/gapic-google-cloud-storage-v2/pom.xml index 53150f4394..8b03e777fc 100644 --- a/gapic-google-cloud-storage-v2/pom.xml +++ b/gapic-google-cloud-storage-v2/pom.xml @@ -4,13 +4,13 @@ 4.0.0 com.google.api.grpc gapic-google-cloud-storage-v2 - 2.52.2 + 2.52.3 gapic-google-cloud-storage-v2 GRPC library for gapic-google-cloud-storage-v2 com.google.cloud google-cloud-storage-parent - 2.52.2 + 2.52.3 diff --git a/google-cloud-storage-bom/pom.xml b/google-cloud-storage-bom/pom.xml index d92011e4d7..90849cc68a 100644 --- a/google-cloud-storage-bom/pom.xml +++ b/google-cloud-storage-bom/pom.xml @@ -19,12 +19,12 @@ 4.0.0 com.google.cloud google-cloud-storage-bom - 2.52.2 + 2.52.3 pom com.google.cloud sdk-platform-java-config - 3.47.0 + 3.48.0 @@ -69,37 +69,37 @@ com.google.cloud google-cloud-storage - 2.52.2 + 2.52.3 com.google.api.grpc gapic-google-cloud-storage-v2 - 2.52.2 + 2.52.3 com.google.api.grpc grpc-google-cloud-storage-v2 - 2.52.2 + 2.52.3 com.google.api.grpc proto-google-cloud-storage-v2 - 2.52.2 + 2.52.3 com.google.cloud google-cloud-storage-control - 2.52.2 + 2.52.3 com.google.api.grpc grpc-google-cloud-storage-control-v2 - 2.52.2 + 2.52.3 com.google.api.grpc proto-google-cloud-storage-control-v2 - 2.52.2 + 2.52.3 diff --git a/google-cloud-storage-control/pom.xml b/google-cloud-storage-control/pom.xml index 0870f4628d..c900ffebdf 100644 --- a/google-cloud-storage-control/pom.xml +++ b/google-cloud-storage-control/pom.xml @@ -5,13 +5,13 @@ 4.0.0 com.google.cloud google-cloud-storage-control - 2.52.2 + 2.52.3 google-cloud-storage-control GRPC library for google-cloud-storage-control com.google.cloud google-cloud-storage-parent - 2.52.2 + 2.52.3 diff --git a/google-cloud-storage/pom.xml b/google-cloud-storage/pom.xml index ea68c60a09..072333f422 100644 --- a/google-cloud-storage/pom.xml +++ b/google-cloud-storage/pom.xml @@ -2,7 +2,7 @@ 4.0.0 google-cloud-storage - 2.52.2 + 2.52.3 jar Google Cloud Storage https://github.com/googleapis/java-storage @@ -12,11 +12,11 @@ com.google.cloud google-cloud-storage-parent - 2.52.2 + 2.52.3 google-cloud-storage - 1.121.2 + 1.121.3 @@ -239,14 +239,14 @@ com.google.api.grpc proto-google-cloud-kms-v1 - 0.155.0 + 0.156.0 test com.google.cloud google-cloud-kms - 2.64.0 + 2.65.0 test diff --git a/google-cloud-storage/src/main/java/com/google/cloud/storage/GrpcStorageOptions.java b/google-cloud-storage/src/main/java/com/google/cloud/storage/GrpcStorageOptions.java index 7d116e1688..0fe1737ddc 100644 --- a/google-cloud-storage/src/main/java/com/google/cloud/storage/GrpcStorageOptions.java +++ b/google-cloud-storage/src/main/java/com/google/cloud/storage/GrpcStorageOptions.java @@ -60,6 +60,7 @@ import com.google.cloud.spi.ServiceRpcFactory; import com.google.cloud.storage.GrpcUtils.ZeroCopyBidiStreamingCallable; import com.google.cloud.storage.Hasher.UncheckedChecksumMismatchException; +import com.google.cloud.storage.OpenTelemetryBootstrappingUtils.ChannelConfigurator; import com.google.cloud.storage.RetryContext.RetryContextProvider; import com.google.cloud.storage.Retrying.DefaultRetrier; import com.google.cloud.storage.Storage.BlobWriteOption; @@ -332,12 +333,14 @@ private Tuple> resolveSettingsAndOpts() throw } if (enableGrpcClientMetrics) { - OpenTelemetryBootstrappingUtils.enableGrpcMetrics( - channelProviderBuilder, - endpoint, - this.getProjectId(), - this.getUniverseDomain(), - !grpcClientMetricsManuallyEnabled); + ChannelConfigurator channelConfigurator = + OpenTelemetryBootstrappingUtils.enableGrpcMetrics( + ChannelConfigurator.lift(channelProviderBuilder.getChannelConfigurator()), + endpoint, + this.getProjectId(), + this.getUniverseDomain(), + !grpcClientMetricsManuallyEnabled); + channelProviderBuilder.setChannelConfigurator(channelConfigurator); } builder.setTransportChannelProvider(channelProviderBuilder.build()); diff --git a/google-cloud-storage/src/main/java/com/google/cloud/storage/OpenTelemetryBootstrappingUtils.java b/google-cloud-storage/src/main/java/com/google/cloud/storage/OpenTelemetryBootstrappingUtils.java index fd24ad0b12..b3eb4e90f2 100644 --- a/google-cloud-storage/src/main/java/com/google/cloud/storage/OpenTelemetryBootstrappingUtils.java +++ b/google-cloud-storage/src/main/java/com/google/cloud/storage/OpenTelemetryBootstrappingUtils.java @@ -17,7 +17,6 @@ package com.google.cloud.storage; import com.google.api.core.ApiFunction; -import com.google.api.gax.grpc.InstantiatingGrpcChannelProvider; import com.google.api.gax.rpc.PermissionDeniedException; import com.google.api.gax.rpc.UnavailableException; import com.google.cloud.opentelemetry.metric.GoogleCloudMetricExporter; @@ -59,6 +58,8 @@ import java.util.concurrent.atomic.AtomicBoolean; import java.util.logging.Logger; import java.util.stream.Collectors; +import org.checkerframework.checker.nullness.qual.NonNull; +import org.checkerframework.checker.nullness.qual.Nullable; final class OpenTelemetryBootstrappingUtils { private static final Collection METRICS_TO_ENABLE = @@ -88,15 +89,41 @@ final class OpenTelemetryBootstrappingUtils { static final Logger log = Logger.getLogger(OpenTelemetryBootstrappingUtils.class.getName()); - static void enableGrpcMetrics( - InstantiatingGrpcChannelProvider.Builder channelProviderBuilder, + @NonNull + static ChannelConfigurator enableGrpcMetrics( + @Nullable ChannelConfigurator channelConfigurator, String endpoint, - String projectId, + @Nullable String projectId, String universeDomain, boolean shouldSuppressExceptions) { + GCPResourceProvider resourceProvider = new GCPResourceProvider(); + Attributes detectedAttributes = resourceProvider.getAttributes(); + + @Nullable String detectedProjectId = + detectedAttributes.get(AttributeKey.stringKey("cloud.account.id")); + if (projectId == null && detectedProjectId == null) { + log.warning( + "Unable to determine the Project ID in order to report metrics. No gRPC client metrics will be reported."); + return channelConfigurator != null ? channelConfigurator : ChannelConfigurator.identity(); + } + + String projectIdToUse = detectedProjectId == null ? projectId : detectedProjectId; + if (!projectIdToUse.equals(projectId)) { + log.warning( + "The Project ID configured for gRPC client metrics is " + + projectIdToUse + + ", but the Project ID of the storage client is " + + projectId + + ". Make sure that the service account in use has the required metric writing role " + + "(roles/monitoring.metricWriter) in the project " + + projectIdToUse + + ", or metrics will not be written."); + } + String metricServiceEndpoint = getCloudMonitoringEndpoint(endpoint, universeDomain); SdkMeterProvider provider = - createMeterProvider(metricServiceEndpoint, projectId, shouldSuppressExceptions); + createMeterProvider( + metricServiceEndpoint, projectIdToUse, detectedAttributes, shouldSuppressExceptions); OpenTelemetrySdk openTelemetrySdk = OpenTelemetrySdk.builder().setMeterProvider(provider).build(); @@ -106,16 +133,48 @@ static void enableGrpcMetrics( .addOptionalLabel("grpc.lb.locality") .enableMetrics(METRICS_TO_ENABLE) .build(); - ApiFunction channelConfigurator = - channelProviderBuilder.getChannelConfigurator(); - channelProviderBuilder.setChannelConfigurator( + ChannelConfigurator otelConfigurator = b -> { grpcOpenTelemetry.configureChannelBuilder(b); - if (channelConfigurator != null) { - return channelConfigurator.apply(b); - } return b; - }); + }; + return otelConfigurator.andThen(channelConfigurator); + } + + @SuppressWarnings("rawtypes") // ManagedChannelBuilder + @FunctionalInterface + interface ChannelConfigurator extends ApiFunction { + @NonNull + default ChannelConfigurator andThen(@Nullable ChannelConfigurator then) { + if (then == null) { + return this; + } + return b -> then.apply(this.apply(b)); + } + + static ChannelConfigurator identity() { + return IdentityChannelConfigurator.INSTANCE; + } + + static ChannelConfigurator lift( + @Nullable ApiFunction f) { + if (f == null) { + return identity(); + } + return f::apply; + } + } + + @SuppressWarnings("rawtypes") // ManagedChannelBuilder + private static final class IdentityChannelConfigurator implements ChannelConfigurator { + private static final IdentityChannelConfigurator INSTANCE = new IdentityChannelConfigurator(); + + private IdentityChannelConfigurator() {} + + @Override + public ManagedChannelBuilder apply(ManagedChannelBuilder input) { + return input; + } } @VisibleForTesting @@ -147,24 +206,10 @@ static String getCloudMonitoringEndpoint(String endpoint, String universeDomain) @VisibleForTesting static SdkMeterProvider createMeterProvider( - String metricServiceEndpoint, String projectId, boolean shouldSuppressExceptions) { - GCPResourceProvider resourceProvider = new GCPResourceProvider(); - Attributes detectedAttributes = resourceProvider.getAttributes(); - - String detectedProjectId = detectedAttributes.get(AttributeKey.stringKey("cloud.account.id")); - String projectIdToUse = detectedProjectId == null ? projectId : detectedProjectId; - - if (!projectIdToUse.equals(projectId)) { - log.warning( - "The Project ID configured for metrics is " - + projectIdToUse - + ", but the Project ID of the storage client is " - + projectId - + ". Make sure that the service account in use has the required metric writing role " - + "(roles/monitoring.metricWriter) in the project " - + projectIdToUse - + ", or metrics will not be written."); - } + String metricServiceEndpoint, + String projectIdToUse, + Attributes detectedAttributes, + boolean shouldSuppressExceptions) { MonitoredResourceDescription monitoredResourceDescription = new MonitoredResourceDescription( diff --git a/google-cloud-storage/src/test/java/com/google/cloud/storage/ITGrpcMetricsTest.java b/google-cloud-storage/src/test/java/com/google/cloud/storage/ITGrpcMetricsTest.java index 4c82054ff6..e71b9077dc 100644 --- a/google-cloud-storage/src/test/java/com/google/cloud/storage/ITGrpcMetricsTest.java +++ b/google-cloud-storage/src/test/java/com/google/cloud/storage/ITGrpcMetricsTest.java @@ -21,6 +21,8 @@ import com.google.cloud.storage.it.runner.StorageITRunner; import com.google.cloud.storage.it.runner.annotations.Backend; import com.google.cloud.storage.it.runner.annotations.SingleBackend; +import io.opentelemetry.api.common.Attributes; +import io.opentelemetry.contrib.gcp.resource.GCPResourceProvider; import io.opentelemetry.sdk.metrics.SdkMeterProvider; import org.junit.Test; import org.junit.runner.RunWith; @@ -36,9 +38,14 @@ public void testGrpcMetrics() { "storage.googleapis.com:443", "storage.googleapis.com")) .isEqualTo("monitoring.googleapis.com:443"); + GCPResourceProvider resourceProvider = new GCPResourceProvider(); + Attributes detectedAttributes = resourceProvider.getAttributes(); SdkMeterProvider provider = OpenTelemetryBootstrappingUtils.createMeterProvider( - "monitoring.googleapis.com:443", grpcStorageOptions.getProjectId(), false); + "monitoring.googleapis.com:443", + grpcStorageOptions.getProjectId(), + detectedAttributes, + false); /* * SDKMeterProvider doesn't expose the relevant fields we want to test, but they are present in diff --git a/google-cloud-storage/src/test/java/com/google/cloud/storage/OpenTelemetryBootstrappingUtilsTest.java b/google-cloud-storage/src/test/java/com/google/cloud/storage/OpenTelemetryBootstrappingUtilsTest.java new file mode 100644 index 0000000000..5e93c95a98 --- /dev/null +++ b/google-cloud-storage/src/test/java/com/google/cloud/storage/OpenTelemetryBootstrappingUtilsTest.java @@ -0,0 +1,97 @@ +/* + * Copyright 2025 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.google.cloud.storage; + +import static com.google.common.truth.Truth.assertThat; +import static org.junit.Assume.assumeFalse; +import static org.mockito.Mockito.mock; + +import com.google.cloud.storage.OpenTelemetryBootstrappingUtils.ChannelConfigurator; +import io.grpc.ManagedChannelBuilder; +import java.util.concurrent.atomic.AtomicBoolean; +import org.junit.Test; + +public final class OpenTelemetryBootstrappingUtilsTest { + + @Test + public void noErrorIfNotRunningOnGcp() { + assumeFalse("Skipping because running on GCP", TestUtils.isOnComputeEngine()); + + ChannelConfigurator cc = ChannelConfigurator.identity(); + + String endpoint = "storage.googleapis.com:443"; + String projectId = null; + String universeDomain = null; + ChannelConfigurator actual = + OpenTelemetryBootstrappingUtils.enableGrpcMetrics( + cc, endpoint, projectId, universeDomain, true); + + assertThat(actual).isSameInstanceAs(cc); + } + + @SuppressWarnings("rawtypes") // ManagedChannelBuilder + @Test + public void channelConfigurator_andThen() { + ManagedChannelBuilder b1 = mock(ManagedChannelBuilder.class, "b1"); + ManagedChannelBuilder b2 = mock(ManagedChannelBuilder.class, "b2"); + ManagedChannelBuilder b3 = mock(ManagedChannelBuilder.class, "b2"); + + ChannelConfigurator cc1 = + b -> { + assertThat(b).isSameInstanceAs(b1); + return b2; + }; + ChannelConfigurator cc2 = + b -> { + assertThat(b).isSameInstanceAs(b2); + return b3; + }; + + ChannelConfigurator cc3 = cc1.andThen(cc2); + + ManagedChannelBuilder apply = cc3.apply(b1); + assertThat(apply).isSameInstanceAs(b3); + } + + @Test + public void channelConfigurator_lift_nullToIdentity() { + ChannelConfigurator actual = ChannelConfigurator.lift(null); + assertThat(actual).isSameInstanceAs(ChannelConfigurator.identity()); + } + + @SuppressWarnings("rawtypes") // ManagedChannelBuilder + @Test + public void channelConfigurator_lift_plumbingWorks() { + ManagedChannelBuilder b1 = mock(ManagedChannelBuilder.class, "b1"); + AtomicBoolean called = new AtomicBoolean(false); + ChannelConfigurator lifted = + ChannelConfigurator.lift( + b -> { + called.compareAndSet(false, true); + return b; + }); + ManagedChannelBuilder actual = lifted.apply(b1); + assertThat(actual).isSameInstanceAs(b1); + assertThat(called.get()).isTrue(); + } + + @Test + public void channelConfigurator_andThen_nullsafe() { + ChannelConfigurator actual = ChannelConfigurator.identity().andThen(null); + assertThat(actual).isSameInstanceAs(ChannelConfigurator.identity()); + } +} diff --git a/google-cloud-storage/src/test/java/com/google/cloud/storage/it/runner/registry/BucketInfoShim.java b/google-cloud-storage/src/test/java/com/google/cloud/storage/it/runner/registry/BucketInfoShim.java index e6ecb75a26..96fbd57ed9 100644 --- a/google-cloud-storage/src/test/java/com/google/cloud/storage/it/runner/registry/BucketInfoShim.java +++ b/google-cloud-storage/src/test/java/com/google/cloud/storage/it/runner/registry/BucketInfoShim.java @@ -54,7 +54,8 @@ public void start() { createdBucket = s.create(bucketInfo).asBucketInfo(); } catch (StorageException se) { String msg = se.getMessage(); - if (se.getCode() == 400 && msg.contains("not a valid zone in location")) { + if (se.getCode() == 400 && (msg.contains("not a valid zone in location")) + || msg.contains("custom placement config")) { assumeTrue( "Skipping test due to bucket setup unavailable in current zone. (" + msg + ")", false); } diff --git a/grpc-google-cloud-storage-control-v2/pom.xml b/grpc-google-cloud-storage-control-v2/pom.xml index 391ab159b8..0f9902988d 100644 --- a/grpc-google-cloud-storage-control-v2/pom.xml +++ b/grpc-google-cloud-storage-control-v2/pom.xml @@ -4,13 +4,13 @@ 4.0.0 com.google.api.grpc grpc-google-cloud-storage-control-v2 - 2.52.2 + 2.52.3 grpc-google-cloud-storage-control-v2 GRPC library for google-cloud-storage com.google.cloud google-cloud-storage-parent - 2.52.2 + 2.52.3 diff --git a/grpc-google-cloud-storage-v2/pom.xml b/grpc-google-cloud-storage-v2/pom.xml index 264dd02eae..a8e15cd49f 100644 --- a/grpc-google-cloud-storage-v2/pom.xml +++ b/grpc-google-cloud-storage-v2/pom.xml @@ -4,13 +4,13 @@ 4.0.0 com.google.api.grpc grpc-google-cloud-storage-v2 - 2.52.2 + 2.52.3 grpc-google-cloud-storage-v2 GRPC library for grpc-google-cloud-storage-v2 com.google.cloud google-cloud-storage-parent - 2.52.2 + 2.52.3 diff --git a/pom.xml b/pom.xml index c0f3437a32..7f85bcb5d1 100644 --- a/pom.xml +++ b/pom.xml @@ -4,7 +4,7 @@ com.google.cloud google-cloud-storage-parent pom - 2.52.2 + 2.52.3 Storage Parent https://github.com/googleapis/java-storage @@ -14,7 +14,7 @@ com.google.cloud sdk-platform-java-config - 3.47.0 + 3.48.0 @@ -82,17 +82,17 @@ com.google.cloud google-cloud-storage - 2.52.2 + 2.52.3 com.google.apis google-api-services-storage - v1-rev20250424-2.0.0 + v1-rev20250509-2.0.0 com.google.cloud google-cloud-pubsub - 1.139.2 + 1.139.3 test @@ -104,32 +104,32 @@ com.google.api.grpc proto-google-cloud-storage-v2 - 2.52.2 + 2.52.3 com.google.api.grpc grpc-google-cloud-storage-v2 - 2.52.2 + 2.52.3 com.google.api.grpc gapic-google-cloud-storage-v2 - 2.52.2 + 2.52.3 com.google.api.grpc grpc-google-cloud-storage-control-v2 - 2.52.2 + 2.52.3 com.google.api.grpc proto-google-cloud-storage-control-v2 - 2.52.2 + 2.52.3 com.google.cloud google-cloud-storage-control - 2.52.2 + 2.52.3 com.google.cloud diff --git a/proto-google-cloud-storage-control-v2/pom.xml b/proto-google-cloud-storage-control-v2/pom.xml index 1777c386e4..993f3f4849 100644 --- a/proto-google-cloud-storage-control-v2/pom.xml +++ b/proto-google-cloud-storage-control-v2/pom.xml @@ -4,13 +4,13 @@ 4.0.0 com.google.api.grpc proto-google-cloud-storage-control-v2 - 2.52.2 + 2.52.3 proto-google-cloud-storage-control-v2 Proto library for proto-google-cloud-storage-control-v2 com.google.cloud google-cloud-storage-parent - 2.52.2 + 2.52.3 diff --git a/proto-google-cloud-storage-v2/pom.xml b/proto-google-cloud-storage-v2/pom.xml index e008067e7f..43c5ed9c02 100644 --- a/proto-google-cloud-storage-v2/pom.xml +++ b/proto-google-cloud-storage-v2/pom.xml @@ -4,13 +4,13 @@ 4.0.0 com.google.api.grpc proto-google-cloud-storage-v2 - 2.52.2 + 2.52.3 proto-google-cloud-storage-v2 PROTO library for proto-google-cloud-storage-v2 com.google.cloud google-cloud-storage-parent - 2.52.2 + 2.52.3 diff --git a/samples/install-without-bom/pom.xml b/samples/install-without-bom/pom.xml index 39a6acae58..0fd3d7e6de 100644 --- a/samples/install-without-bom/pom.xml +++ b/samples/install-without-bom/pom.xml @@ -30,12 +30,12 @@ com.google.cloud google-cloud-storage - 2.52.1 + 2.52.2 com.google.cloud google-cloud-storage-control - 2.52.1 + 2.52.2 @@ -66,13 +66,13 @@ com.google.cloud google-cloud-pubsub - 1.139.2 + 1.139.3 test com.google.cloud google-cloud-storage - 2.52.1 + 2.52.2 tests test diff --git a/samples/snapshot/pom.xml b/samples/snapshot/pom.xml index 901ed9ddc6..20796494fb 100644 --- a/samples/snapshot/pom.xml +++ b/samples/snapshot/pom.xml @@ -28,12 +28,12 @@ com.google.cloud google-cloud-storage - 2.52.2 + 2.52.3 com.google.cloud google-cloud-storage-control - 2.52.2 + 2.52.3 compile @@ -58,13 +58,13 @@ com.google.cloud google-cloud-pubsub - 1.139.2 + 1.139.3 test com.google.cloud google-cloud-storage - 2.52.2 + 2.52.3 tests test diff --git a/samples/snippets/pom.xml b/samples/snippets/pom.xml index 5805f82216..0f01a0842c 100644 --- a/samples/snippets/pom.xml +++ b/samples/snippets/pom.xml @@ -76,7 +76,7 @@ com.google.cloud google-cloud-pubsub - 1.139.2 + 1.139.3 test @@ -93,7 +93,7 @@ com.google.cloud google-cloud-storage - 2.52.1 + 2.52.2 tests test diff --git a/storage-shared-benchmarking/pom.xml b/storage-shared-benchmarking/pom.xml index a314aa64bc..1fde6135ae 100644 --- a/storage-shared-benchmarking/pom.xml +++ b/storage-shared-benchmarking/pom.xml @@ -10,7 +10,7 @@ com.google.cloud google-cloud-storage-parent - 2.52.2 + 2.52.3 @@ -31,7 +31,7 @@ com.google.cloud google-cloud-storage - 2.52.2 + 2.52.3 tests diff --git a/versions.txt b/versions.txt index 67897c57e6..869aca8d55 100644 --- a/versions.txt +++ b/versions.txt @@ -1,10 +1,10 @@ # Format: # module:released-version:current-version -google-cloud-storage:2.52.2:2.52.2 -gapic-google-cloud-storage-v2:2.52.2:2.52.2 -grpc-google-cloud-storage-v2:2.52.2:2.52.2 -proto-google-cloud-storage-v2:2.52.2:2.52.2 -google-cloud-storage-control:2.52.2:2.52.2 -proto-google-cloud-storage-control-v2:2.52.2:2.52.2 -grpc-google-cloud-storage-control-v2:2.52.2:2.52.2 +google-cloud-storage:2.52.3:2.52.3 +gapic-google-cloud-storage-v2:2.52.3:2.52.3 +grpc-google-cloud-storage-v2:2.52.3:2.52.3 +proto-google-cloud-storage-v2:2.52.3:2.52.3 +google-cloud-storage-control:2.52.3:2.52.3 +proto-google-cloud-storage-control-v2:2.52.3:2.52.3 +grpc-google-cloud-storage-control-v2:2.52.3:2.52.3