This class allows customization of how the subscriber handles outstanding messages during
+ * shutdown, including whether to wait for processing to complete or to immediately nack messages,
+ * and an optional timeout for the shutdown process.
+ */
+public final class SubscriberShutdownSettings {
+
+ /** Defines the behavior for handling outstanding messages during subscriber shutdown. */
+ public enum ShutdownMode {
+ /**
+ * The subscriber will wait for all outstanding messages to be processed (acked or nacked by the
+ * user's message receiver) before completing the shutdown.
+ */
+ WAIT_FOR_PROCESSING,
+ /**
+ * The subscriber will immediately nack all outstanding messages and attempt to shut down as
+ * quickly as possible. Messages delivered to the user callback but not yet acked/nacked will
+ * also be nacked.
+ */
+ NACK_IMMEDIATELY
+ }
+
+ private static final Duration DEFAULT_TIMEOUT = Duration.ofSeconds(-1); // Indicates no timeout
+ private static final ShutdownMode DEFAULT_MODE = ShutdownMode.WAIT_FOR_PROCESSING;
+
+ private final ShutdownMode mode;
+ private final Duration timeout;
+
+ private SubscriberShutdownSettings(Builder builder) {
+ this.mode = builder.mode;
+ this.timeout = builder.timeout;
+ }
+
+ /** Returns the configured shutdown mode. */
+ public ShutdownMode getMode() {
+ return mode;
+ }
+
+ /** Returns the configured shutdown timeout. A negative duration indicates no timeout. */
+ public Duration getTimeout() {
+ return timeout;
+ }
+
+ /** Returns a new builder for {@code SubscriberShutdownSettings}. */
+ public static Builder newBuilder() {
+ return new Builder();
+ }
+
+ /** Builder for {@code SubscriberShutdownSettings}. */
+ public static final class Builder {
+ private ShutdownMode mode = DEFAULT_MODE;
+ private Duration timeout = DEFAULT_TIMEOUT;
+
+ private Builder() {}
+
+ /** Sets the shutdown mode. Defaults to {@link ShutdownMode#WAIT_FOR_PROCESSING}. */
+ public Builder setMode(ShutdownMode mode) {
+ this.mode = Preconditions.checkNotNull(mode);
+ return this;
+ }
+
+ /**
+ * Sets the shutdown timeout. Defaults to a negative duration, indicating no timeout.
+ *
+ *
A positive duration specifies the maximum time to wait for shutdown to complete. A
+ * duration of zero indicates an immediate, forceful shutdown. A negative duration indicates an
+ * indefinite wait.
+ */
+ public Builder setTimeout(Duration timeout) {
+ this.timeout = Preconditions.checkNotNull(timeout);
+ return this;
+ }
+
+ /** Builds an instance of {@code SubscriberShutdownSettings}. */
+ public SubscriberShutdownSettings build() {
+ return new SubscriberShutdownSettings(this);
+ }
+ }
+}
diff --git a/google-cloud-pubsub/src/main/java/com/google/cloud/pubsub/v1/SubscriptionAdminClient.java b/google-cloud-pubsub/src/main/java/com/google/cloud/pubsub/v1/SubscriptionAdminClient.java
index 97d94c0e9..26a764dab 100644
--- a/google-cloud-pubsub/src/main/java/com/google/cloud/pubsub/v1/SubscriptionAdminClient.java
+++ b/google-cloud-pubsub/src/main/java/com/google/cloud/pubsub/v1/SubscriptionAdminClient.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2024 Google LLC
+ * Copyright 2026 Google LLC
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -266,7 +266,7 @@
*
*
* StreamingPull |
- * Establishes a stream with the server, which sends messages down to the client. The client streams acknowledgements and ack deadline modifications back to the server. The server will close the stream and return the status on any error. The server may close the stream with status `UNAVAILABLE` to reassign server-side resources, in which case, the client should re-establish the stream. Flow control can be achieved by configuring the underlying RPC channel. |
+ * Establishes a stream with the server, which sends messages down to the client. The client streams acknowledgments and ack deadline modifications back to the server. The server will close the stream and return the status on any error. The server may close the stream with status `UNAVAILABLE` to reassign server-side resources, in which case, the client should re-establish the stream. Flow control can be achieved by configuring the underlying RPC channel. |
*
* Callable method variants take no parameters and return an immutable API callable object, which can be used to initiate calls to the service.
*
@@ -588,7 +588,7 @@ public SubscriberStub getStub() {
* }
* }
*
- * @param name Required. The name of the subscription. It must have the format
+ * @param name Required. Identifier. The name of the subscription. It must have the format
* `"projects/{project}/subscriptions/{subscription}"`. `{subscription}` must start with a
* letter, and contain only letters (`[A-Za-z]`), numbers (`[0-9]`), dashes (`-`), underscores
* (`_`), periods (`.`), tildes (`~`), plus (`+`) or percent signs (`%`). It must be between 3
@@ -658,7 +658,7 @@ public final Subscription createSubscription(
* }
* }
*
- * @param name Required. The name of the subscription. It must have the format
+ * @param name Required. Identifier. The name of the subscription. It must have the format
* `"projects/{project}/subscriptions/{subscription}"`. `{subscription}` must start with a
* letter, and contain only letters (`[A-Za-z]`), numbers (`[0-9]`), dashes (`-`), underscores
* (`_`), periods (`.`), tildes (`~`), plus (`+`) or percent signs (`%`). It must be between 3
@@ -728,7 +728,7 @@ public final Subscription createSubscription(
* }
* }
*
- * @param name Required. The name of the subscription. It must have the format
+ * @param name Required. Identifier. The name of the subscription. It must have the format
* `"projects/{project}/subscriptions/{subscription}"`. `{subscription}` must start with a
* letter, and contain only letters (`[A-Za-z]`), numbers (`[0-9]`), dashes (`-`), underscores
* (`_`), periods (`.`), tildes (`~`), plus (`+`) or percent signs (`%`). It must be between 3
@@ -798,7 +798,7 @@ public final Subscription createSubscription(
* }
* }
*
- * @param name Required. The name of the subscription. It must have the format
+ * @param name Required. Identifier. The name of the subscription. It must have the format
* `"projects/{project}/subscriptions/{subscription}"`. `{subscription}` must start with a
* letter, and contain only letters (`[A-Za-z]`), numbers (`[0-9]`), dashes (`-`), underscores
* (`_`), periods (`.`), tildes (`~`), plus (`+`) or percent signs (`%`). It must be between 3
@@ -866,6 +866,7 @@ public final Subscription createSubscription(
* .setPushConfig(PushConfig.newBuilder().build())
* .setBigqueryConfig(BigQueryConfig.newBuilder().build())
* .setCloudStorageConfig(CloudStorageConfig.newBuilder().build())
+ * .setBigtableConfig(BigtableConfig.newBuilder().build())
* .setAckDeadlineSeconds(2135351438)
* .setRetainAckedMessages(true)
* .setMessageRetentionDuration(Duration.newBuilder().build())
@@ -880,6 +881,8 @@ public final Subscription createSubscription(
* .setTopicMessageRetentionDuration(Duration.newBuilder().build())
* .setAnalyticsHubSubscriptionInfo(
* Subscription.AnalyticsHubSubscriptionInfo.newBuilder().build())
+ * .addAllMessageTransforms(new ArrayList())
+ * .putAllTags(new HashMap())
* .build();
* Subscription response = subscriptionAdminClient.createSubscription(request);
* }
@@ -1131,6 +1134,7 @@ public final Subscription createSubscription(
* .setPushConfig(PushConfig.newBuilder().build())
* .setBigqueryConfig(BigQueryConfig.newBuilder().build())
* .setCloudStorageConfig(CloudStorageConfig.newBuilder().build())
+ * .setBigtableConfig(BigtableConfig.newBuilder().build())
* .setAckDeadlineSeconds(2135351438)
* .setRetainAckedMessages(true)
* .setMessageRetentionDuration(Duration.newBuilder().build())
@@ -1145,6 +1149,8 @@ public final Subscription createSubscription(
* .setTopicMessageRetentionDuration(Duration.newBuilder().build())
* .setAnalyticsHubSubscriptionInfo(
* Subscription.AnalyticsHubSubscriptionInfo.newBuilder().build())
+ * .addAllMessageTransforms(new ArrayList())
+ * .putAllTags(new HashMap())
* .build();
* ApiFuture future =
* subscriptionAdminClient.createSubscriptionCallable().futureCall(request);
@@ -2377,7 +2383,7 @@ public final UnaryCallable pullCallable() {
// AUTO-GENERATED DOCUMENTATION AND METHOD.
/**
* Establishes a stream with the server, which sends messages down to the client. The client
- * streams acknowledgements and ack deadline modifications back to the server. The server will
+ * streams acknowledgments and ack deadline modifications back to the server. The server will
* close the stream and return the status on any error. The server may close the stream with
* status `UNAVAILABLE` to reassign server-side resources, in which case, the client should
* re-establish the stream. Flow control can be achieved by configuring the underlying RPC
@@ -2404,6 +2410,7 @@ public final UnaryCallable pullCallable() {
* .setClientId("clientId908408390")
* .setMaxOutstandingMessages(-1315266996)
* .setMaxOutstandingBytes(-2103098517)
+ * .setProtocolVersion(-1161610703)
* .build();
* bidiStream.send(request);
* for (StreamingPullResponse response : bidiStream) {
@@ -3178,6 +3185,7 @@ public final Snapshot createSnapshot(String name, String subscription) {
* .setName(SnapshotName.of("[PROJECT]", "[SNAPSHOT]").toString())
* .setSubscription(SubscriptionName.of("[PROJECT]", "[SUBSCRIPTION]").toString())
* .putAllLabels(new HashMap())
+ * .putAllTags(new HashMap())
* .build();
* Snapshot response = subscriptionAdminClient.createSnapshot(request);
* }
@@ -3370,6 +3378,7 @@ public final Snapshot createSnapshot(ProjectSnapshotName name, String subscripti
* .setName(SnapshotName.of("[PROJECT]", "[SNAPSHOT]").toString())
* .setSubscription(SubscriptionName.of("[PROJECT]", "[SUBSCRIPTION]").toString())
* .putAllLabels(new HashMap())
+ * .putAllTags(new HashMap())
* .build();
* ApiFuture future =
* subscriptionAdminClient.createSnapshotCallable().futureCall(request);
diff --git a/google-cloud-pubsub/src/main/java/com/google/cloud/pubsub/v1/SubscriptionAdminSettings.java b/google-cloud-pubsub/src/main/java/com/google/cloud/pubsub/v1/SubscriptionAdminSettings.java
index c2c8d217d..8fe62a63f 100644
--- a/google-cloud-pubsub/src/main/java/com/google/cloud/pubsub/v1/SubscriptionAdminSettings.java
+++ b/google-cloud-pubsub/src/main/java/com/google/cloud/pubsub/v1/SubscriptionAdminSettings.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2024 Google LLC
+ * Copyright 2026 Google LLC
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -112,8 +112,8 @@
* }
*
* Please refer to the [Client Side Retry
- * Guide](https://github.com/googleapis/google-cloud-java/blob/main/docs/client_retries.md) for
- * additional support in setting retries.
+ * Guide](https://docs.cloud.google.com/java/docs/client-retries) for additional support in setting
+ * retries.
*/
@Generated("by gapic-generator-java")
public class SubscriptionAdminSettings extends ClientSettings {
diff --git a/google-cloud-pubsub/src/main/java/com/google/cloud/pubsub/v1/TopicAdminClient.java b/google-cloud-pubsub/src/main/java/com/google/cloud/pubsub/v1/TopicAdminClient.java
index 6449c2f8c..91dfd103e 100644
--- a/google-cloud-pubsub/src/main/java/com/google/cloud/pubsub/v1/TopicAdminClient.java
+++ b/google-cloud-pubsub/src/main/java/com/google/cloud/pubsub/v1/TopicAdminClient.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2024 Google LLC
+ * Copyright 2026 Google LLC
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -420,7 +420,7 @@ public PublisherStub getStub() {
* }
* }
*
- * @param name Required. The name of the topic. It must have the format
+ * @param name Required. Identifier. The name of the topic. It must have the format
* `"projects/{project}/topics/{topic}"`. `{topic}` must start with a letter, and contain only
* letters (`[A-Za-z]`), numbers (`[0-9]`), dashes (`-`), underscores (`_`), periods (`.`),
* tildes (`~`), plus (`+`) or percent signs (`%`). It must be between 3 and 255 characters in
@@ -451,7 +451,7 @@ public final Topic createTopic(TopicName name) {
* }
* }
*
- * @param name Required. The name of the topic. It must have the format
+ * @param name Required. Identifier. The name of the topic. It must have the format
* `"projects/{project}/topics/{topic}"`. `{topic}` must start with a letter, and contain only
* letters (`[A-Za-z]`), numbers (`[0-9]`), dashes (`-`), underscores (`_`), periods (`.`),
* tildes (`~`), plus (`+`) or percent signs (`%`). It must be between 3 and 255 characters in
@@ -511,11 +511,15 @@ public final Topic createTopic(ProjectTopicName name) {
* .setName(TopicName.ofProjectTopicName("[PROJECT]", "[TOPIC]").toString())
* .putAllLabels(new HashMap())
* .setMessageStoragePolicy(MessageStoragePolicy.newBuilder().build())
- * .setKmsKeyName("kmsKeyName412586233")
+ * .setKmsKeyName(
+ * CryptoKeyName.of("[PROJECT]", "[LOCATION]", "[KEY_RING]", "[CRYPTO_KEY]")
+ * .toString())
* .setSchemaSettings(SchemaSettings.newBuilder().build())
* .setSatisfiesPzs(true)
* .setMessageRetentionDuration(Duration.newBuilder().build())
* .setIngestionDataSourceSettings(IngestionDataSourceSettings.newBuilder().build())
+ * .addAllMessageTransforms(new ArrayList())
+ * .putAllTags(new HashMap())
* .build();
* Topic response = topicAdminClient.createTopic(request);
* }
@@ -547,11 +551,15 @@ public final Topic createTopic(Topic request) {
* .setName(TopicName.ofProjectTopicName("[PROJECT]", "[TOPIC]").toString())
* .putAllLabels(new HashMap())
* .setMessageStoragePolicy(MessageStoragePolicy.newBuilder().build())
- * .setKmsKeyName("kmsKeyName412586233")
+ * .setKmsKeyName(
+ * CryptoKeyName.of("[PROJECT]", "[LOCATION]", "[KEY_RING]", "[CRYPTO_KEY]")
+ * .toString())
* .setSchemaSettings(SchemaSettings.newBuilder().build())
* .setSatisfiesPzs(true)
* .setMessageRetentionDuration(Duration.newBuilder().build())
* .setIngestionDataSourceSettings(IngestionDataSourceSettings.newBuilder().build())
+ * .addAllMessageTransforms(new ArrayList())
+ * .putAllTags(new HashMap())
* .build();
* ApiFuture future = topicAdminClient.createTopicCallable().futureCall(request);
* // Do something.
diff --git a/google-cloud-pubsub/src/main/java/com/google/cloud/pubsub/v1/TopicAdminSettings.java b/google-cloud-pubsub/src/main/java/com/google/cloud/pubsub/v1/TopicAdminSettings.java
index 08c00b2d1..4928dd762 100644
--- a/google-cloud-pubsub/src/main/java/com/google/cloud/pubsub/v1/TopicAdminSettings.java
+++ b/google-cloud-pubsub/src/main/java/com/google/cloud/pubsub/v1/TopicAdminSettings.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2024 Google LLC
+ * Copyright 2026 Google LLC
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -104,8 +104,8 @@
* }
*
* Please refer to the [Client Side Retry
- * Guide](https://github.com/googleapis/google-cloud-java/blob/main/docs/client_retries.md) for
- * additional support in setting retries.
+ * Guide](https://docs.cloud.google.com/java/docs/client-retries) for additional support in setting
+ * retries.
*/
@Generated("by gapic-generator-java")
public class TopicAdminSettings extends ClientSettings {
diff --git a/google-cloud-pubsub/src/main/java/com/google/cloud/pubsub/v1/Waiter.java b/google-cloud-pubsub/src/main/java/com/google/cloud/pubsub/v1/Waiter.java
index e22125fee..7221d5144 100644
--- a/google-cloud-pubsub/src/main/java/com/google/cloud/pubsub/v1/Waiter.java
+++ b/google-cloud-pubsub/src/main/java/com/google/cloud/pubsub/v1/Waiter.java
@@ -16,6 +16,7 @@
package com.google.cloud.pubsub.v1;
+import com.google.api.core.ApiClock;
import com.google.api.core.InternalApi;
/**
@@ -54,6 +55,32 @@ public synchronized void waitComplete() {
}
}
+ public synchronized boolean tryWait(long timeoutMilliseconds, ApiClock clock) {
+ long startTime = clock.millisTime();
+ long remainingMilliseconds = timeoutMilliseconds;
+ boolean interrupted = false;
+ boolean completedWait = true;
+ try {
+ while (pendingCount > 0) {
+ if (remainingMilliseconds <= 0) {
+ completedWait = false;
+ break;
+ }
+ try {
+ wait(remainingMilliseconds);
+ } catch (InterruptedException e) {
+ interrupted = true;
+ }
+ remainingMilliseconds = timeoutMilliseconds - (clock.millisTime() - startTime);
+ }
+ } finally {
+ if (interrupted) {
+ Thread.currentThread().interrupt();
+ }
+ }
+ return completedWait;
+ }
+
@InternalApi
public int pendingCount() {
return pendingCount;
diff --git a/google-cloud-pubsub/src/main/java/com/google/cloud/pubsub/v1/package-info.java b/google-cloud-pubsub/src/main/java/com/google/cloud/pubsub/v1/package-info.java
index 70eed8c36..a85a38b2b 100644
--- a/google-cloud-pubsub/src/main/java/com/google/cloud/pubsub/v1/package-info.java
+++ b/google-cloud-pubsub/src/main/java/com/google/cloud/pubsub/v1/package-info.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2024 Google LLC
+ * Copyright 2026 Google LLC
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/google-cloud-pubsub/src/main/java/com/google/cloud/pubsub/v1/stub/GrpcPublisherCallableFactory.java b/google-cloud-pubsub/src/main/java/com/google/cloud/pubsub/v1/stub/GrpcPublisherCallableFactory.java
index 0ca66bdc8..92adc0c86 100644
--- a/google-cloud-pubsub/src/main/java/com/google/cloud/pubsub/v1/stub/GrpcPublisherCallableFactory.java
+++ b/google-cloud-pubsub/src/main/java/com/google/cloud/pubsub/v1/stub/GrpcPublisherCallableFactory.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2024 Google LLC
+ * Copyright 2026 Google LLC
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/google-cloud-pubsub/src/main/java/com/google/cloud/pubsub/v1/stub/GrpcPublisherStub.java b/google-cloud-pubsub/src/main/java/com/google/cloud/pubsub/v1/stub/GrpcPublisherStub.java
index 3ea32264e..137efe471 100644
--- a/google-cloud-pubsub/src/main/java/com/google/cloud/pubsub/v1/stub/GrpcPublisherStub.java
+++ b/google-cloud-pubsub/src/main/java/com/google/cloud/pubsub/v1/stub/GrpcPublisherStub.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2024 Google LLC
+ * Copyright 2026 Google LLC
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -68,6 +68,7 @@ public class GrpcPublisherStub extends PublisherStub {
.setFullMethodName("google.pubsub.v1.Publisher/CreateTopic")
.setRequestMarshaller(ProtoUtils.marshaller(Topic.getDefaultInstance()))
.setResponseMarshaller(ProtoUtils.marshaller(Topic.getDefaultInstance()))
+ .setSampledToLocalTracing(true)
.build();
private static final MethodDescriptor updateTopicMethodDescriptor =
@@ -76,6 +77,7 @@ public class GrpcPublisherStub extends PublisherStub {
.setFullMethodName("google.pubsub.v1.Publisher/UpdateTopic")
.setRequestMarshaller(ProtoUtils.marshaller(UpdateTopicRequest.getDefaultInstance()))
.setResponseMarshaller(ProtoUtils.marshaller(Topic.getDefaultInstance()))
+ .setSampledToLocalTracing(true)
.build();
private static final MethodDescriptor publishMethodDescriptor =
@@ -84,6 +86,7 @@ public class GrpcPublisherStub extends PublisherStub {
.setFullMethodName("google.pubsub.v1.Publisher/Publish")
.setRequestMarshaller(ProtoUtils.marshaller(PublishRequest.getDefaultInstance()))
.setResponseMarshaller(ProtoUtils.marshaller(PublishResponse.getDefaultInstance()))
+ .setSampledToLocalTracing(true)
.build();
private static final MethodDescriptor getTopicMethodDescriptor =
@@ -92,6 +95,7 @@ public class GrpcPublisherStub extends PublisherStub {
.setFullMethodName("google.pubsub.v1.Publisher/GetTopic")
.setRequestMarshaller(ProtoUtils.marshaller(GetTopicRequest.getDefaultInstance()))
.setResponseMarshaller(ProtoUtils.marshaller(Topic.getDefaultInstance()))
+ .setSampledToLocalTracing(true)
.build();
private static final MethodDescriptor
@@ -101,6 +105,7 @@ public class GrpcPublisherStub extends PublisherStub {
.setFullMethodName("google.pubsub.v1.Publisher/ListTopics")
.setRequestMarshaller(ProtoUtils.marshaller(ListTopicsRequest.getDefaultInstance()))
.setResponseMarshaller(ProtoUtils.marshaller(ListTopicsResponse.getDefaultInstance()))
+ .setSampledToLocalTracing(true)
.build();
private static final MethodDescriptor<
@@ -114,6 +119,7 @@ public class GrpcPublisherStub extends PublisherStub {
ProtoUtils.marshaller(ListTopicSubscriptionsRequest.getDefaultInstance()))
.setResponseMarshaller(
ProtoUtils.marshaller(ListTopicSubscriptionsResponse.getDefaultInstance()))
+ .setSampledToLocalTracing(true)
.build();
private static final MethodDescriptor
@@ -125,6 +131,7 @@ public class GrpcPublisherStub extends PublisherStub {
ProtoUtils.marshaller(ListTopicSnapshotsRequest.getDefaultInstance()))
.setResponseMarshaller(
ProtoUtils.marshaller(ListTopicSnapshotsResponse.getDefaultInstance()))
+ .setSampledToLocalTracing(true)
.build();
private static final MethodDescriptor deleteTopicMethodDescriptor =
@@ -133,6 +140,7 @@ public class GrpcPublisherStub extends PublisherStub {
.setFullMethodName("google.pubsub.v1.Publisher/DeleteTopic")
.setRequestMarshaller(ProtoUtils.marshaller(DeleteTopicRequest.getDefaultInstance()))
.setResponseMarshaller(ProtoUtils.marshaller(Empty.getDefaultInstance()))
+ .setSampledToLocalTracing(true)
.build();
private static final MethodDescriptor
@@ -144,6 +152,7 @@ public class GrpcPublisherStub extends PublisherStub {
ProtoUtils.marshaller(DetachSubscriptionRequest.getDefaultInstance()))
.setResponseMarshaller(
ProtoUtils.marshaller(DetachSubscriptionResponse.getDefaultInstance()))
+ .setSampledToLocalTracing(true)
.build();
private static final MethodDescriptor setIamPolicyMethodDescriptor =
@@ -152,6 +161,7 @@ public class GrpcPublisherStub extends PublisherStub {
.setFullMethodName("google.iam.v1.IAMPolicy/SetIamPolicy")
.setRequestMarshaller(ProtoUtils.marshaller(SetIamPolicyRequest.getDefaultInstance()))
.setResponseMarshaller(ProtoUtils.marshaller(Policy.getDefaultInstance()))
+ .setSampledToLocalTracing(true)
.build();
private static final MethodDescriptor getIamPolicyMethodDescriptor =
@@ -160,6 +170,7 @@ public class GrpcPublisherStub extends PublisherStub {
.setFullMethodName("google.iam.v1.IAMPolicy/GetIamPolicy")
.setRequestMarshaller(ProtoUtils.marshaller(GetIamPolicyRequest.getDefaultInstance()))
.setResponseMarshaller(ProtoUtils.marshaller(Policy.getDefaultInstance()))
+ .setSampledToLocalTracing(true)
.build();
private static final MethodDescriptor
@@ -171,6 +182,7 @@ public class GrpcPublisherStub extends PublisherStub {
ProtoUtils.marshaller(TestIamPermissionsRequest.getDefaultInstance()))
.setResponseMarshaller(
ProtoUtils.marshaller(TestIamPermissionsResponse.getDefaultInstance()))
+ .setSampledToLocalTracing(true)
.build();
private final UnaryCallable createTopicCallable;
@@ -245,6 +257,7 @@ protected GrpcPublisherStub(
builder.add("name", String.valueOf(request.getName()));
return builder.build();
})
+ .setResourceNameExtractor(request -> request.getName())
.build();
GrpcCallSettings updateTopicTransportSettings =
GrpcCallSettings.newBuilder()
@@ -265,6 +278,7 @@ protected GrpcPublisherStub(
builder.add("topic", String.valueOf(request.getTopic()));
return builder.build();
})
+ .setResourceNameExtractor(request -> request.getTopic())
.build();
GrpcCallSettings getTopicTransportSettings =
GrpcCallSettings.newBuilder()
@@ -275,6 +289,7 @@ protected GrpcPublisherStub(
builder.add("topic", String.valueOf(request.getTopic()));
return builder.build();
})
+ .setResourceNameExtractor(request -> request.getTopic())
.build();
GrpcCallSettings listTopicsTransportSettings =
GrpcCallSettings.newBuilder()
@@ -285,6 +300,7 @@ protected GrpcPublisherStub(
builder.add("project", String.valueOf(request.getProject()));
return builder.build();
})
+ .setResourceNameExtractor(request -> request.getProject())
.build();
GrpcCallSettings
listTopicSubscriptionsTransportSettings =
@@ -297,6 +313,7 @@ protected GrpcPublisherStub(
builder.add("topic", String.valueOf(request.getTopic()));
return builder.build();
})
+ .setResourceNameExtractor(request -> request.getTopic())
.build();
GrpcCallSettings
listTopicSnapshotsTransportSettings =
@@ -308,6 +325,7 @@ protected GrpcPublisherStub(
builder.add("topic", String.valueOf(request.getTopic()));
return builder.build();
})
+ .setResourceNameExtractor(request -> request.getTopic())
.build();
GrpcCallSettings deleteTopicTransportSettings =
GrpcCallSettings.newBuilder()
@@ -318,6 +336,7 @@ protected GrpcPublisherStub(
builder.add("topic", String.valueOf(request.getTopic()));
return builder.build();
})
+ .setResourceNameExtractor(request -> request.getTopic())
.build();
GrpcCallSettings
detachSubscriptionTransportSettings =
@@ -329,6 +348,7 @@ protected GrpcPublisherStub(
builder.add("subscription", String.valueOf(request.getSubscription()));
return builder.build();
})
+ .setResourceNameExtractor(request -> request.getSubscription())
.build();
GrpcCallSettings setIamPolicyTransportSettings =
GrpcCallSettings.newBuilder()
@@ -339,6 +359,7 @@ protected GrpcPublisherStub(
builder.add("resource", String.valueOf(request.getResource()));
return builder.build();
})
+ .setResourceNameExtractor(request -> request.getResource())
.build();
GrpcCallSettings getIamPolicyTransportSettings =
GrpcCallSettings.newBuilder()
@@ -349,6 +370,7 @@ protected GrpcPublisherStub(
builder.add("resource", String.valueOf(request.getResource()));
return builder.build();
})
+ .setResourceNameExtractor(request -> request.getResource())
.build();
GrpcCallSettings
testIamPermissionsTransportSettings =
@@ -360,6 +382,7 @@ protected GrpcPublisherStub(
builder.add("resource", String.valueOf(request.getResource()));
return builder.build();
})
+ .setResourceNameExtractor(request -> request.getResource())
.build();
this.createTopicCallable =
diff --git a/google-cloud-pubsub/src/main/java/com/google/cloud/pubsub/v1/stub/GrpcSchemaServiceCallableFactory.java b/google-cloud-pubsub/src/main/java/com/google/cloud/pubsub/v1/stub/GrpcSchemaServiceCallableFactory.java
index e2728094e..16236bc4b 100644
--- a/google-cloud-pubsub/src/main/java/com/google/cloud/pubsub/v1/stub/GrpcSchemaServiceCallableFactory.java
+++ b/google-cloud-pubsub/src/main/java/com/google/cloud/pubsub/v1/stub/GrpcSchemaServiceCallableFactory.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2024 Google LLC
+ * Copyright 2026 Google LLC
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/google-cloud-pubsub/src/main/java/com/google/cloud/pubsub/v1/stub/GrpcSchemaServiceStub.java b/google-cloud-pubsub/src/main/java/com/google/cloud/pubsub/v1/stub/GrpcSchemaServiceStub.java
index d3fbc1d67..a13604e4b 100644
--- a/google-cloud-pubsub/src/main/java/com/google/cloud/pubsub/v1/stub/GrpcSchemaServiceStub.java
+++ b/google-cloud-pubsub/src/main/java/com/google/cloud/pubsub/v1/stub/GrpcSchemaServiceStub.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2024 Google LLC
+ * Copyright 2026 Google LLC
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -68,6 +68,7 @@ public class GrpcSchemaServiceStub extends SchemaServiceStub {
.setFullMethodName("google.pubsub.v1.SchemaService/CreateSchema")
.setRequestMarshaller(ProtoUtils.marshaller(CreateSchemaRequest.getDefaultInstance()))
.setResponseMarshaller(ProtoUtils.marshaller(Schema.getDefaultInstance()))
+ .setSampledToLocalTracing(true)
.build();
private static final MethodDescriptor getSchemaMethodDescriptor =
@@ -76,6 +77,7 @@ public class GrpcSchemaServiceStub extends SchemaServiceStub {
.setFullMethodName("google.pubsub.v1.SchemaService/GetSchema")
.setRequestMarshaller(ProtoUtils.marshaller(GetSchemaRequest.getDefaultInstance()))
.setResponseMarshaller(ProtoUtils.marshaller(Schema.getDefaultInstance()))
+ .setSampledToLocalTracing(true)
.build();
private static final MethodDescriptor
@@ -86,6 +88,7 @@ public class GrpcSchemaServiceStub extends SchemaServiceStub {
.setRequestMarshaller(ProtoUtils.marshaller(ListSchemasRequest.getDefaultInstance()))
.setResponseMarshaller(
ProtoUtils.marshaller(ListSchemasResponse.getDefaultInstance()))
+ .setSampledToLocalTracing(true)
.build();
private static final MethodDescriptor
@@ -97,6 +100,7 @@ public class GrpcSchemaServiceStub extends SchemaServiceStub {
ProtoUtils.marshaller(ListSchemaRevisionsRequest.getDefaultInstance()))
.setResponseMarshaller(
ProtoUtils.marshaller(ListSchemaRevisionsResponse.getDefaultInstance()))
+ .setSampledToLocalTracing(true)
.build();
private static final MethodDescriptor commitSchemaMethodDescriptor =
@@ -105,6 +109,7 @@ public class GrpcSchemaServiceStub extends SchemaServiceStub {
.setFullMethodName("google.pubsub.v1.SchemaService/CommitSchema")
.setRequestMarshaller(ProtoUtils.marshaller(CommitSchemaRequest.getDefaultInstance()))
.setResponseMarshaller(ProtoUtils.marshaller(Schema.getDefaultInstance()))
+ .setSampledToLocalTracing(true)
.build();
private static final MethodDescriptor
@@ -115,6 +120,7 @@ public class GrpcSchemaServiceStub extends SchemaServiceStub {
.setRequestMarshaller(
ProtoUtils.marshaller(RollbackSchemaRequest.getDefaultInstance()))
.setResponseMarshaller(ProtoUtils.marshaller(Schema.getDefaultInstance()))
+ .setSampledToLocalTracing(true)
.build();
private static final MethodDescriptor
@@ -125,6 +131,7 @@ public class GrpcSchemaServiceStub extends SchemaServiceStub {
.setRequestMarshaller(
ProtoUtils.marshaller(DeleteSchemaRevisionRequest.getDefaultInstance()))
.setResponseMarshaller(ProtoUtils.marshaller(Schema.getDefaultInstance()))
+ .setSampledToLocalTracing(true)
.build();
private static final MethodDescriptor deleteSchemaMethodDescriptor =
@@ -133,6 +140,7 @@ public class GrpcSchemaServiceStub extends SchemaServiceStub {
.setFullMethodName("google.pubsub.v1.SchemaService/DeleteSchema")
.setRequestMarshaller(ProtoUtils.marshaller(DeleteSchemaRequest.getDefaultInstance()))
.setResponseMarshaller(ProtoUtils.marshaller(Empty.getDefaultInstance()))
+ .setSampledToLocalTracing(true)
.build();
private static final MethodDescriptor
@@ -144,6 +152,7 @@ public class GrpcSchemaServiceStub extends SchemaServiceStub {
ProtoUtils.marshaller(ValidateSchemaRequest.getDefaultInstance()))
.setResponseMarshaller(
ProtoUtils.marshaller(ValidateSchemaResponse.getDefaultInstance()))
+ .setSampledToLocalTracing(true)
.build();
private static final MethodDescriptor
@@ -155,6 +164,7 @@ public class GrpcSchemaServiceStub extends SchemaServiceStub {
ProtoUtils.marshaller(ValidateMessageRequest.getDefaultInstance()))
.setResponseMarshaller(
ProtoUtils.marshaller(ValidateMessageResponse.getDefaultInstance()))
+ .setSampledToLocalTracing(true)
.build();
private static final MethodDescriptor setIamPolicyMethodDescriptor =
@@ -163,6 +173,7 @@ public class GrpcSchemaServiceStub extends SchemaServiceStub {
.setFullMethodName("google.iam.v1.IAMPolicy/SetIamPolicy")
.setRequestMarshaller(ProtoUtils.marshaller(SetIamPolicyRequest.getDefaultInstance()))
.setResponseMarshaller(ProtoUtils.marshaller(Policy.getDefaultInstance()))
+ .setSampledToLocalTracing(true)
.build();
private static final MethodDescriptor getIamPolicyMethodDescriptor =
@@ -171,6 +182,7 @@ public class GrpcSchemaServiceStub extends SchemaServiceStub {
.setFullMethodName("google.iam.v1.IAMPolicy/GetIamPolicy")
.setRequestMarshaller(ProtoUtils.marshaller(GetIamPolicyRequest.getDefaultInstance()))
.setResponseMarshaller(ProtoUtils.marshaller(Policy.getDefaultInstance()))
+ .setSampledToLocalTracing(true)
.build();
private static final MethodDescriptor
@@ -182,6 +194,7 @@ public class GrpcSchemaServiceStub extends SchemaServiceStub {
ProtoUtils.marshaller(TestIamPermissionsRequest.getDefaultInstance()))
.setResponseMarshaller(
ProtoUtils.marshaller(TestIamPermissionsResponse.getDefaultInstance()))
+ .setSampledToLocalTracing(true)
.build();
private final UnaryCallable createSchemaCallable;
@@ -256,6 +269,7 @@ protected GrpcSchemaServiceStub(
builder.add("parent", String.valueOf(request.getParent()));
return builder.build();
})
+ .setResourceNameExtractor(request -> request.getParent())
.build();
GrpcCallSettings getSchemaTransportSettings =
GrpcCallSettings.newBuilder()
@@ -266,6 +280,7 @@ protected GrpcSchemaServiceStub(
builder.add("name", String.valueOf(request.getName()));
return builder.build();
})
+ .setResourceNameExtractor(request -> request.getName())
.build();
GrpcCallSettings listSchemasTransportSettings =
GrpcCallSettings.newBuilder()
@@ -276,6 +291,7 @@ protected GrpcSchemaServiceStub(
builder.add("parent", String.valueOf(request.getParent()));
return builder.build();
})
+ .setResourceNameExtractor(request -> request.getParent())
.build();
GrpcCallSettings
listSchemaRevisionsTransportSettings =
@@ -287,6 +303,7 @@ protected GrpcSchemaServiceStub(
builder.add("name", String.valueOf(request.getName()));
return builder.build();
})
+ .setResourceNameExtractor(request -> request.getName())
.build();
GrpcCallSettings commitSchemaTransportSettings =
GrpcCallSettings.newBuilder()
@@ -297,6 +314,7 @@ protected GrpcSchemaServiceStub(
builder.add("name", String.valueOf(request.getName()));
return builder.build();
})
+ .setResourceNameExtractor(request -> request.getName())
.build();
GrpcCallSettings rollbackSchemaTransportSettings =
GrpcCallSettings.newBuilder()
@@ -307,6 +325,7 @@ protected GrpcSchemaServiceStub(
builder.add("name", String.valueOf(request.getName()));
return builder.build();
})
+ .setResourceNameExtractor(request -> request.getName())
.build();
GrpcCallSettings deleteSchemaRevisionTransportSettings =
GrpcCallSettings.newBuilder()
@@ -317,6 +336,7 @@ protected GrpcSchemaServiceStub(
builder.add("name", String.valueOf(request.getName()));
return builder.build();
})
+ .setResourceNameExtractor(request -> request.getName())
.build();
GrpcCallSettings deleteSchemaTransportSettings =
GrpcCallSettings.newBuilder()
@@ -327,6 +347,7 @@ protected GrpcSchemaServiceStub(
builder.add("name", String.valueOf(request.getName()));
return builder.build();
})
+ .setResourceNameExtractor(request -> request.getName())
.build();
GrpcCallSettings
validateSchemaTransportSettings =
@@ -338,6 +359,7 @@ protected GrpcSchemaServiceStub(
builder.add("parent", String.valueOf(request.getParent()));
return builder.build();
})
+ .setResourceNameExtractor(request -> request.getParent())
.build();
GrpcCallSettings
validateMessageTransportSettings =
@@ -349,6 +371,7 @@ protected GrpcSchemaServiceStub(
builder.add("parent", String.valueOf(request.getParent()));
return builder.build();
})
+ .setResourceNameExtractor(request -> request.getParent())
.build();
GrpcCallSettings setIamPolicyTransportSettings =
GrpcCallSettings.newBuilder()
@@ -359,6 +382,7 @@ protected GrpcSchemaServiceStub(
builder.add("resource", String.valueOf(request.getResource()));
return builder.build();
})
+ .setResourceNameExtractor(request -> request.getResource())
.build();
GrpcCallSettings getIamPolicyTransportSettings =
GrpcCallSettings.newBuilder()
@@ -369,6 +393,7 @@ protected GrpcSchemaServiceStub(
builder.add("resource", String.valueOf(request.getResource()));
return builder.build();
})
+ .setResourceNameExtractor(request -> request.getResource())
.build();
GrpcCallSettings
testIamPermissionsTransportSettings =
@@ -380,6 +405,7 @@ protected GrpcSchemaServiceStub(
builder.add("resource", String.valueOf(request.getResource()));
return builder.build();
})
+ .setResourceNameExtractor(request -> request.getResource())
.build();
this.createSchemaCallable =
diff --git a/google-cloud-pubsub/src/main/java/com/google/cloud/pubsub/v1/stub/GrpcSubscriberCallableFactory.java b/google-cloud-pubsub/src/main/java/com/google/cloud/pubsub/v1/stub/GrpcSubscriberCallableFactory.java
index 8b12c81c0..8249a7219 100644
--- a/google-cloud-pubsub/src/main/java/com/google/cloud/pubsub/v1/stub/GrpcSubscriberCallableFactory.java
+++ b/google-cloud-pubsub/src/main/java/com/google/cloud/pubsub/v1/stub/GrpcSubscriberCallableFactory.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2024 Google LLC
+ * Copyright 2026 Google LLC
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/google-cloud-pubsub/src/main/java/com/google/cloud/pubsub/v1/stub/GrpcSubscriberStub.java b/google-cloud-pubsub/src/main/java/com/google/cloud/pubsub/v1/stub/GrpcSubscriberStub.java
index b3c3e671b..6c51332e6 100644
--- a/google-cloud-pubsub/src/main/java/com/google/cloud/pubsub/v1/stub/GrpcSubscriberStub.java
+++ b/google-cloud-pubsub/src/main/java/com/google/cloud/pubsub/v1/stub/GrpcSubscriberStub.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2024 Google LLC
+ * Copyright 2026 Google LLC
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -77,6 +77,7 @@ public class GrpcSubscriberStub extends SubscriberStub {
.setFullMethodName("google.pubsub.v1.Subscriber/CreateSubscription")
.setRequestMarshaller(ProtoUtils.marshaller(Subscription.getDefaultInstance()))
.setResponseMarshaller(ProtoUtils.marshaller(Subscription.getDefaultInstance()))
+ .setSampledToLocalTracing(true)
.build();
private static final MethodDescriptor
@@ -87,6 +88,7 @@ public class GrpcSubscriberStub extends SubscriberStub {
.setRequestMarshaller(
ProtoUtils.marshaller(GetSubscriptionRequest.getDefaultInstance()))
.setResponseMarshaller(ProtoUtils.marshaller(Subscription.getDefaultInstance()))
+ .setSampledToLocalTracing(true)
.build();
private static final MethodDescriptor
@@ -97,6 +99,7 @@ public class GrpcSubscriberStub extends SubscriberStub {
.setRequestMarshaller(
ProtoUtils.marshaller(UpdateSubscriptionRequest.getDefaultInstance()))
.setResponseMarshaller(ProtoUtils.marshaller(Subscription.getDefaultInstance()))
+ .setSampledToLocalTracing(true)
.build();
private static final MethodDescriptor
@@ -108,6 +111,7 @@ public class GrpcSubscriberStub extends SubscriberStub {
ProtoUtils.marshaller(ListSubscriptionsRequest.getDefaultInstance()))
.setResponseMarshaller(
ProtoUtils.marshaller(ListSubscriptionsResponse.getDefaultInstance()))
+ .setSampledToLocalTracing(true)
.build();
private static final MethodDescriptor
@@ -118,6 +122,7 @@ public class GrpcSubscriberStub extends SubscriberStub {
.setRequestMarshaller(
ProtoUtils.marshaller(DeleteSubscriptionRequest.getDefaultInstance()))
.setResponseMarshaller(ProtoUtils.marshaller(Empty.getDefaultInstance()))
+ .setSampledToLocalTracing(true)
.build();
private static final MethodDescriptor
@@ -128,6 +133,7 @@ public class GrpcSubscriberStub extends SubscriberStub {
.setRequestMarshaller(
ProtoUtils.marshaller(ModifyAckDeadlineRequest.getDefaultInstance()))
.setResponseMarshaller(ProtoUtils.marshaller(Empty.getDefaultInstance()))
+ .setSampledToLocalTracing(true)
.build();
private static final MethodDescriptor acknowledgeMethodDescriptor =
@@ -136,6 +142,7 @@ public class GrpcSubscriberStub extends SubscriberStub {
.setFullMethodName("google.pubsub.v1.Subscriber/Acknowledge")
.setRequestMarshaller(ProtoUtils.marshaller(AcknowledgeRequest.getDefaultInstance()))
.setResponseMarshaller(ProtoUtils.marshaller(Empty.getDefaultInstance()))
+ .setSampledToLocalTracing(true)
.build();
private static final MethodDescriptor pullMethodDescriptor =
@@ -144,6 +151,7 @@ public class GrpcSubscriberStub extends SubscriberStub {
.setFullMethodName("google.pubsub.v1.Subscriber/Pull")
.setRequestMarshaller(ProtoUtils.marshaller(PullRequest.getDefaultInstance()))
.setResponseMarshaller(ProtoUtils.marshaller(PullResponse.getDefaultInstance()))
+ .setSampledToLocalTracing(true)
.build();
private static final MethodDescriptor
@@ -155,6 +163,7 @@ public class GrpcSubscriberStub extends SubscriberStub {
ProtoUtils.marshaller(StreamingPullRequest.getDefaultInstance()))
.setResponseMarshaller(
ProtoUtils.marshaller(StreamingPullResponse.getDefaultInstance()))
+ .setSampledToLocalTracing(true)
.build();
private static final MethodDescriptor
@@ -165,6 +174,7 @@ public class GrpcSubscriberStub extends SubscriberStub {
.setRequestMarshaller(
ProtoUtils.marshaller(ModifyPushConfigRequest.getDefaultInstance()))
.setResponseMarshaller(ProtoUtils.marshaller(Empty.getDefaultInstance()))
+ .setSampledToLocalTracing(true)
.build();
private static final MethodDescriptor getSnapshotMethodDescriptor =
@@ -173,6 +183,7 @@ public class GrpcSubscriberStub extends SubscriberStub {
.setFullMethodName("google.pubsub.v1.Subscriber/GetSnapshot")
.setRequestMarshaller(ProtoUtils.marshaller(GetSnapshotRequest.getDefaultInstance()))
.setResponseMarshaller(ProtoUtils.marshaller(Snapshot.getDefaultInstance()))
+ .setSampledToLocalTracing(true)
.build();
private static final MethodDescriptor
@@ -184,6 +195,7 @@ public class GrpcSubscriberStub extends SubscriberStub {
ProtoUtils.marshaller(ListSnapshotsRequest.getDefaultInstance()))
.setResponseMarshaller(
ProtoUtils.marshaller(ListSnapshotsResponse.getDefaultInstance()))
+ .setSampledToLocalTracing(true)
.build();
private static final MethodDescriptor
@@ -194,6 +206,7 @@ public class GrpcSubscriberStub extends SubscriberStub {
.setRequestMarshaller(
ProtoUtils.marshaller(CreateSnapshotRequest.getDefaultInstance()))
.setResponseMarshaller(ProtoUtils.marshaller(Snapshot.getDefaultInstance()))
+ .setSampledToLocalTracing(true)
.build();
private static final MethodDescriptor
@@ -204,6 +217,7 @@ public class GrpcSubscriberStub extends SubscriberStub {
.setRequestMarshaller(
ProtoUtils.marshaller(UpdateSnapshotRequest.getDefaultInstance()))
.setResponseMarshaller(ProtoUtils.marshaller(Snapshot.getDefaultInstance()))
+ .setSampledToLocalTracing(true)
.build();
private static final MethodDescriptor
@@ -214,6 +228,7 @@ public class GrpcSubscriberStub extends SubscriberStub {
.setRequestMarshaller(
ProtoUtils.marshaller(DeleteSnapshotRequest.getDefaultInstance()))
.setResponseMarshaller(ProtoUtils.marshaller(Empty.getDefaultInstance()))
+ .setSampledToLocalTracing(true)
.build();
private static final MethodDescriptor seekMethodDescriptor =
@@ -222,6 +237,7 @@ public class GrpcSubscriberStub extends SubscriberStub {
.setFullMethodName("google.pubsub.v1.Subscriber/Seek")
.setRequestMarshaller(ProtoUtils.marshaller(SeekRequest.getDefaultInstance()))
.setResponseMarshaller(ProtoUtils.marshaller(SeekResponse.getDefaultInstance()))
+ .setSampledToLocalTracing(true)
.build();
private static final MethodDescriptor setIamPolicyMethodDescriptor =
@@ -230,6 +246,7 @@ public class GrpcSubscriberStub extends SubscriberStub {
.setFullMethodName("google.iam.v1.IAMPolicy/SetIamPolicy")
.setRequestMarshaller(ProtoUtils.marshaller(SetIamPolicyRequest.getDefaultInstance()))
.setResponseMarshaller(ProtoUtils.marshaller(Policy.getDefaultInstance()))
+ .setSampledToLocalTracing(true)
.build();
private static final MethodDescriptor getIamPolicyMethodDescriptor =
@@ -238,6 +255,7 @@ public class GrpcSubscriberStub extends SubscriberStub {
.setFullMethodName("google.iam.v1.IAMPolicy/GetIamPolicy")
.setRequestMarshaller(ProtoUtils.marshaller(GetIamPolicyRequest.getDefaultInstance()))
.setResponseMarshaller(ProtoUtils.marshaller(Policy.getDefaultInstance()))
+ .setSampledToLocalTracing(true)
.build();
private static final MethodDescriptor
@@ -249,6 +267,7 @@ public class GrpcSubscriberStub extends SubscriberStub {
ProtoUtils.marshaller(TestIamPermissionsRequest.getDefaultInstance()))
.setResponseMarshaller(
ProtoUtils.marshaller(TestIamPermissionsResponse.getDefaultInstance()))
+ .setSampledToLocalTracing(true)
.build();
private final UnaryCallable createSubscriptionCallable;
@@ -329,6 +348,7 @@ protected GrpcSubscriberStub(
builder.add("name", String.valueOf(request.getName()));
return builder.build();
})
+ .setResourceNameExtractor(request -> request.getName())
.build();
GrpcCallSettings getSubscriptionTransportSettings =
GrpcCallSettings.newBuilder()
@@ -339,6 +359,7 @@ protected GrpcSubscriberStub(
builder.add("subscription", String.valueOf(request.getSubscription()));
return builder.build();
})
+ .setResourceNameExtractor(request -> request.getSubscription())
.build();
GrpcCallSettings updateSubscriptionTransportSettings =
GrpcCallSettings.newBuilder()
@@ -361,6 +382,7 @@ protected GrpcSubscriberStub(
builder.add("project", String.valueOf(request.getProject()));
return builder.build();
})
+ .setResourceNameExtractor(request -> request.getProject())
.build();
GrpcCallSettings deleteSubscriptionTransportSettings =
GrpcCallSettings.newBuilder()
@@ -371,6 +393,7 @@ protected GrpcSubscriberStub(
builder.add("subscription", String.valueOf(request.getSubscription()));
return builder.build();
})
+ .setResourceNameExtractor(request -> request.getSubscription())
.build();
GrpcCallSettings modifyAckDeadlineTransportSettings =
GrpcCallSettings.newBuilder()
@@ -381,6 +404,7 @@ protected GrpcSubscriberStub(
builder.add("subscription", String.valueOf(request.getSubscription()));
return builder.build();
})
+ .setResourceNameExtractor(request -> request.getSubscription())
.build();
GrpcCallSettings acknowledgeTransportSettings =
GrpcCallSettings.newBuilder()
@@ -391,6 +415,7 @@ protected GrpcSubscriberStub(
builder.add("subscription", String.valueOf(request.getSubscription()));
return builder.build();
})
+ .setResourceNameExtractor(request -> request.getSubscription())
.build();
GrpcCallSettings pullTransportSettings =
GrpcCallSettings.newBuilder()
@@ -401,10 +426,12 @@ protected GrpcSubscriberStub(
builder.add("subscription", String.valueOf(request.getSubscription()));
return builder.build();
})
+ .setResourceNameExtractor(request -> request.getSubscription())
.build();
GrpcCallSettings streamingPullTransportSettings =
GrpcCallSettings.newBuilder()
.setMethodDescriptor(streamingPullMethodDescriptor)
+ .setResourceNameExtractor(request -> request.getSubscription())
.build();
GrpcCallSettings modifyPushConfigTransportSettings =
GrpcCallSettings.newBuilder()
@@ -415,6 +442,7 @@ protected GrpcSubscriberStub(
builder.add("subscription", String.valueOf(request.getSubscription()));
return builder.build();
})
+ .setResourceNameExtractor(request -> request.getSubscription())
.build();
GrpcCallSettings getSnapshotTransportSettings =
GrpcCallSettings.newBuilder()
@@ -425,6 +453,7 @@ protected GrpcSubscriberStub(
builder.add("snapshot", String.valueOf(request.getSnapshot()));
return builder.build();
})
+ .setResourceNameExtractor(request -> request.getSnapshot())
.build();
GrpcCallSettings listSnapshotsTransportSettings =
GrpcCallSettings.newBuilder()
@@ -435,6 +464,7 @@ protected GrpcSubscriberStub(
builder.add("project", String.valueOf(request.getProject()));
return builder.build();
})
+ .setResourceNameExtractor(request -> request.getProject())
.build();
GrpcCallSettings createSnapshotTransportSettings =
GrpcCallSettings.newBuilder()
@@ -445,6 +475,7 @@ protected GrpcSubscriberStub(
builder.add("name", String.valueOf(request.getName()));
return builder.build();
})
+ .setResourceNameExtractor(request -> request.getName())
.build();
GrpcCallSettings updateSnapshotTransportSettings =
GrpcCallSettings.newBuilder()
@@ -465,6 +496,7 @@ protected GrpcSubscriberStub(
builder.add("snapshot", String.valueOf(request.getSnapshot()));
return builder.build();
})
+ .setResourceNameExtractor(request -> request.getSnapshot())
.build();
GrpcCallSettings seekTransportSettings =
GrpcCallSettings.newBuilder()
@@ -475,6 +507,7 @@ protected GrpcSubscriberStub(
builder.add("subscription", String.valueOf(request.getSubscription()));
return builder.build();
})
+ .setResourceNameExtractor(request -> request.getSubscription())
.build();
GrpcCallSettings setIamPolicyTransportSettings =
GrpcCallSettings.newBuilder()
@@ -485,6 +518,7 @@ protected GrpcSubscriberStub(
builder.add("resource", String.valueOf(request.getResource()));
return builder.build();
})
+ .setResourceNameExtractor(request -> request.getResource())
.build();
GrpcCallSettings getIamPolicyTransportSettings =
GrpcCallSettings.newBuilder()
@@ -495,6 +529,7 @@ protected GrpcSubscriberStub(
builder.add("resource", String.valueOf(request.getResource()));
return builder.build();
})
+ .setResourceNameExtractor(request -> request.getResource())
.build();
GrpcCallSettings
testIamPermissionsTransportSettings =
@@ -506,6 +541,7 @@ protected GrpcSubscriberStub(
builder.add("resource", String.valueOf(request.getResource()));
return builder.build();
})
+ .setResourceNameExtractor(request -> request.getResource())
.build();
this.createSubscriptionCallable =
diff --git a/google-cloud-pubsub/src/main/java/com/google/cloud/pubsub/v1/stub/HttpJsonPublisherCallableFactory.java b/google-cloud-pubsub/src/main/java/com/google/cloud/pubsub/v1/stub/HttpJsonPublisherCallableFactory.java
index 3d2309c69..f9da3ee7f 100644
--- a/google-cloud-pubsub/src/main/java/com/google/cloud/pubsub/v1/stub/HttpJsonPublisherCallableFactory.java
+++ b/google-cloud-pubsub/src/main/java/com/google/cloud/pubsub/v1/stub/HttpJsonPublisherCallableFactory.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2024 Google LLC
+ * Copyright 2026 Google LLC
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/google-cloud-pubsub/src/main/java/com/google/cloud/pubsub/v1/stub/HttpJsonPublisherStub.java b/google-cloud-pubsub/src/main/java/com/google/cloud/pubsub/v1/stub/HttpJsonPublisherStub.java
index 3c129b6ed..011a019de 100644
--- a/google-cloud-pubsub/src/main/java/com/google/cloud/pubsub/v1/stub/HttpJsonPublisherStub.java
+++ b/google-cloud-pubsub/src/main/java/com/google/cloud/pubsub/v1/stub/HttpJsonPublisherStub.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2024 Google LLC
+ * Copyright 2026 Google LLC
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -582,6 +582,7 @@ protected HttpJsonPublisherStub(
builder.add("name", String.valueOf(request.getName()));
return builder.build();
})
+ .setResourceNameExtractor(request -> request.getName())
.build();
HttpJsonCallSettings updateTopicTransportSettings =
HttpJsonCallSettings.newBuilder()
@@ -604,6 +605,7 @@ protected HttpJsonPublisherStub(
builder.add("topic", String.valueOf(request.getTopic()));
return builder.build();
})
+ .setResourceNameExtractor(request -> request.getTopic())
.build();
HttpJsonCallSettings getTopicTransportSettings =
HttpJsonCallSettings.newBuilder()
@@ -615,6 +617,7 @@ protected HttpJsonPublisherStub(
builder.add("topic", String.valueOf(request.getTopic()));
return builder.build();
})
+ .setResourceNameExtractor(request -> request.getTopic())
.build();
HttpJsonCallSettings listTopicsTransportSettings =
HttpJsonCallSettings.newBuilder()
@@ -626,6 +629,7 @@ protected HttpJsonPublisherStub(
builder.add("project", String.valueOf(request.getProject()));
return builder.build();
})
+ .setResourceNameExtractor(request -> request.getProject())
.build();
HttpJsonCallSettings
listTopicSubscriptionsTransportSettings =
@@ -639,6 +643,7 @@ protected HttpJsonPublisherStub(
builder.add("topic", String.valueOf(request.getTopic()));
return builder.build();
})
+ .setResourceNameExtractor(request -> request.getTopic())
.build();
HttpJsonCallSettings
listTopicSnapshotsTransportSettings =
@@ -651,6 +656,7 @@ protected HttpJsonPublisherStub(
builder.add("topic", String.valueOf(request.getTopic()));
return builder.build();
})
+ .setResourceNameExtractor(request -> request.getTopic())
.build();
HttpJsonCallSettings deleteTopicTransportSettings =
HttpJsonCallSettings.newBuilder()
@@ -662,6 +668,7 @@ protected HttpJsonPublisherStub(
builder.add("topic", String.valueOf(request.getTopic()));
return builder.build();
})
+ .setResourceNameExtractor(request -> request.getTopic())
.build();
HttpJsonCallSettings
detachSubscriptionTransportSettings =
@@ -674,6 +681,7 @@ protected HttpJsonPublisherStub(
builder.add("subscription", String.valueOf(request.getSubscription()));
return builder.build();
})
+ .setResourceNameExtractor(request -> request.getSubscription())
.build();
HttpJsonCallSettings setIamPolicyTransportSettings =
HttpJsonCallSettings.newBuilder()
@@ -685,6 +693,7 @@ protected HttpJsonPublisherStub(
builder.add("resource", String.valueOf(request.getResource()));
return builder.build();
})
+ .setResourceNameExtractor(request -> request.getResource())
.build();
HttpJsonCallSettings getIamPolicyTransportSettings =
HttpJsonCallSettings.newBuilder()
@@ -696,6 +705,7 @@ protected HttpJsonPublisherStub(
builder.add("resource", String.valueOf(request.getResource()));
return builder.build();
})
+ .setResourceNameExtractor(request -> request.getResource())
.build();
HttpJsonCallSettings
testIamPermissionsTransportSettings =
@@ -708,6 +718,7 @@ protected HttpJsonPublisherStub(
builder.add("resource", String.valueOf(request.getResource()));
return builder.build();
})
+ .setResourceNameExtractor(request -> request.getResource())
.build();
this.createTopicCallable =
diff --git a/google-cloud-pubsub/src/main/java/com/google/cloud/pubsub/v1/stub/HttpJsonSchemaServiceCallableFactory.java b/google-cloud-pubsub/src/main/java/com/google/cloud/pubsub/v1/stub/HttpJsonSchemaServiceCallableFactory.java
index c4dedadb0..b725059aa 100644
--- a/google-cloud-pubsub/src/main/java/com/google/cloud/pubsub/v1/stub/HttpJsonSchemaServiceCallableFactory.java
+++ b/google-cloud-pubsub/src/main/java/com/google/cloud/pubsub/v1/stub/HttpJsonSchemaServiceCallableFactory.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2024 Google LLC
+ * Copyright 2026 Google LLC
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/google-cloud-pubsub/src/main/java/com/google/cloud/pubsub/v1/stub/HttpJsonSchemaServiceStub.java b/google-cloud-pubsub/src/main/java/com/google/cloud/pubsub/v1/stub/HttpJsonSchemaServiceStub.java
index 1d797dc71..d8f726b6f 100644
--- a/google-cloud-pubsub/src/main/java/com/google/cloud/pubsub/v1/stub/HttpJsonSchemaServiceStub.java
+++ b/google-cloud-pubsub/src/main/java/com/google/cloud/pubsub/v1/stub/HttpJsonSchemaServiceStub.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2024 Google LLC
+ * Copyright 2026 Google LLC
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -627,6 +627,7 @@ protected HttpJsonSchemaServiceStub(
builder.add("parent", String.valueOf(request.getParent()));
return builder.build();
})
+ .setResourceNameExtractor(request -> request.getParent())
.build();
HttpJsonCallSettings getSchemaTransportSettings =
HttpJsonCallSettings.newBuilder()
@@ -638,6 +639,7 @@ protected HttpJsonSchemaServiceStub(
builder.add("name", String.valueOf(request.getName()));
return builder.build();
})
+ .setResourceNameExtractor(request -> request.getName())
.build();
HttpJsonCallSettings listSchemasTransportSettings =
HttpJsonCallSettings.newBuilder()
@@ -649,6 +651,7 @@ protected HttpJsonSchemaServiceStub(
builder.add("parent", String.valueOf(request.getParent()));
return builder.build();
})
+ .setResourceNameExtractor(request -> request.getParent())
.build();
HttpJsonCallSettings
listSchemaRevisionsTransportSettings =
@@ -662,6 +665,7 @@ protected HttpJsonSchemaServiceStub(
builder.add("name", String.valueOf(request.getName()));
return builder.build();
})
+ .setResourceNameExtractor(request -> request.getName())
.build();
HttpJsonCallSettings commitSchemaTransportSettings =
HttpJsonCallSettings.newBuilder()
@@ -673,6 +677,7 @@ protected HttpJsonSchemaServiceStub(
builder.add("name", String.valueOf(request.getName()));
return builder.build();
})
+ .setResourceNameExtractor(request -> request.getName())
.build();
HttpJsonCallSettings rollbackSchemaTransportSettings =
HttpJsonCallSettings.newBuilder()
@@ -684,6 +689,7 @@ protected HttpJsonSchemaServiceStub(
builder.add("name", String.valueOf(request.getName()));
return builder.build();
})
+ .setResourceNameExtractor(request -> request.getName())
.build();
HttpJsonCallSettings
deleteSchemaRevisionTransportSettings =
@@ -696,6 +702,7 @@ protected HttpJsonSchemaServiceStub(
builder.add("name", String.valueOf(request.getName()));
return builder.build();
})
+ .setResourceNameExtractor(request -> request.getName())
.build();
HttpJsonCallSettings deleteSchemaTransportSettings =
HttpJsonCallSettings.newBuilder()
@@ -707,6 +714,7 @@ protected HttpJsonSchemaServiceStub(
builder.add("name", String.valueOf(request.getName()));
return builder.build();
})
+ .setResourceNameExtractor(request -> request.getName())
.build();
HttpJsonCallSettings
validateSchemaTransportSettings =
@@ -719,6 +727,7 @@ protected HttpJsonSchemaServiceStub(
builder.add("parent", String.valueOf(request.getParent()));
return builder.build();
})
+ .setResourceNameExtractor(request -> request.getParent())
.build();
HttpJsonCallSettings
validateMessageTransportSettings =
@@ -731,6 +740,7 @@ protected HttpJsonSchemaServiceStub(
builder.add("parent", String.valueOf(request.getParent()));
return builder.build();
})
+ .setResourceNameExtractor(request -> request.getParent())
.build();
HttpJsonCallSettings setIamPolicyTransportSettings =
HttpJsonCallSettings.newBuilder()
@@ -742,6 +752,7 @@ protected HttpJsonSchemaServiceStub(
builder.add("resource", String.valueOf(request.getResource()));
return builder.build();
})
+ .setResourceNameExtractor(request -> request.getResource())
.build();
HttpJsonCallSettings getIamPolicyTransportSettings =
HttpJsonCallSettings.newBuilder()
@@ -753,6 +764,7 @@ protected HttpJsonSchemaServiceStub(
builder.add("resource", String.valueOf(request.getResource()));
return builder.build();
})
+ .setResourceNameExtractor(request -> request.getResource())
.build();
HttpJsonCallSettings
testIamPermissionsTransportSettings =
@@ -765,6 +777,7 @@ protected HttpJsonSchemaServiceStub(
builder.add("resource", String.valueOf(request.getResource()));
return builder.build();
})
+ .setResourceNameExtractor(request -> request.getResource())
.build();
this.createSchemaCallable =
diff --git a/google-cloud-pubsub/src/main/java/com/google/cloud/pubsub/v1/stub/HttpJsonSubscriberCallableFactory.java b/google-cloud-pubsub/src/main/java/com/google/cloud/pubsub/v1/stub/HttpJsonSubscriberCallableFactory.java
index ec35b3dfe..a719f85ef 100644
--- a/google-cloud-pubsub/src/main/java/com/google/cloud/pubsub/v1/stub/HttpJsonSubscriberCallableFactory.java
+++ b/google-cloud-pubsub/src/main/java/com/google/cloud/pubsub/v1/stub/HttpJsonSubscriberCallableFactory.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2024 Google LLC
+ * Copyright 2026 Google LLC
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/google-cloud-pubsub/src/main/java/com/google/cloud/pubsub/v1/stub/HttpJsonSubscriberStub.java b/google-cloud-pubsub/src/main/java/com/google/cloud/pubsub/v1/stub/HttpJsonSubscriberStub.java
index 53559f580..ce9647bd2 100644
--- a/google-cloud-pubsub/src/main/java/com/google/cloud/pubsub/v1/stub/HttpJsonSubscriberStub.java
+++ b/google-cloud-pubsub/src/main/java/com/google/cloud/pubsub/v1/stub/HttpJsonSubscriberStub.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2024 Google LLC
+ * Copyright 2026 Google LLC
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -818,6 +818,7 @@ protected HttpJsonSubscriberStub(
builder.add("name", String.valueOf(request.getName()));
return builder.build();
})
+ .setResourceNameExtractor(request -> request.getName())
.build();
HttpJsonCallSettings getSubscriptionTransportSettings =
HttpJsonCallSettings.newBuilder()
@@ -829,6 +830,7 @@ protected HttpJsonSubscriberStub(
builder.add("subscription", String.valueOf(request.getSubscription()));
return builder.build();
})
+ .setResourceNameExtractor(request -> request.getSubscription())
.build();
HttpJsonCallSettings
updateSubscriptionTransportSettings =
@@ -854,6 +856,7 @@ protected HttpJsonSubscriberStub(
builder.add("project", String.valueOf(request.getProject()));
return builder.build();
})
+ .setResourceNameExtractor(request -> request.getProject())
.build();
HttpJsonCallSettings deleteSubscriptionTransportSettings =
HttpJsonCallSettings.newBuilder()
@@ -865,6 +868,7 @@ protected HttpJsonSubscriberStub(
builder.add("subscription", String.valueOf(request.getSubscription()));
return builder.build();
})
+ .setResourceNameExtractor(request -> request.getSubscription())
.build();
HttpJsonCallSettings modifyAckDeadlineTransportSettings =
HttpJsonCallSettings.newBuilder()
@@ -876,6 +880,7 @@ protected HttpJsonSubscriberStub(
builder.add("subscription", String.valueOf(request.getSubscription()));
return builder.build();
})
+ .setResourceNameExtractor(request -> request.getSubscription())
.build();
HttpJsonCallSettings acknowledgeTransportSettings =
HttpJsonCallSettings.newBuilder()
@@ -887,6 +892,7 @@ protected HttpJsonSubscriberStub(
builder.add("subscription", String.valueOf(request.getSubscription()));
return builder.build();
})
+ .setResourceNameExtractor(request -> request.getSubscription())
.build();
HttpJsonCallSettings pullTransportSettings =
HttpJsonCallSettings.newBuilder()
@@ -898,6 +904,7 @@ protected HttpJsonSubscriberStub(
builder.add("subscription", String.valueOf(request.getSubscription()));
return builder.build();
})
+ .setResourceNameExtractor(request -> request.getSubscription())
.build();
HttpJsonCallSettings modifyPushConfigTransportSettings =
HttpJsonCallSettings.newBuilder()
@@ -909,6 +916,7 @@ protected HttpJsonSubscriberStub(
builder.add("subscription", String.valueOf(request.getSubscription()));
return builder.build();
})
+ .setResourceNameExtractor(request -> request.getSubscription())
.build();
HttpJsonCallSettings getSnapshotTransportSettings =
HttpJsonCallSettings.newBuilder()
@@ -920,6 +928,7 @@ protected HttpJsonSubscriberStub(
builder.add("snapshot", String.valueOf(request.getSnapshot()));
return builder.build();
})
+ .setResourceNameExtractor(request -> request.getSnapshot())
.build();
HttpJsonCallSettings
listSnapshotsTransportSettings =
@@ -932,6 +941,7 @@ protected HttpJsonSubscriberStub(
builder.add("project", String.valueOf(request.getProject()));
return builder.build();
})
+ .setResourceNameExtractor(request -> request.getProject())
.build();
HttpJsonCallSettings createSnapshotTransportSettings =
HttpJsonCallSettings.newBuilder()
@@ -943,6 +953,7 @@ protected HttpJsonSubscriberStub(
builder.add("name", String.valueOf(request.getName()));
return builder.build();
})
+ .setResourceNameExtractor(request -> request.getName())
.build();
HttpJsonCallSettings updateSnapshotTransportSettings =
HttpJsonCallSettings.newBuilder()
@@ -965,6 +976,7 @@ protected HttpJsonSubscriberStub(
builder.add("snapshot", String.valueOf(request.getSnapshot()));
return builder.build();
})
+ .setResourceNameExtractor(request -> request.getSnapshot())
.build();
HttpJsonCallSettings seekTransportSettings =
HttpJsonCallSettings.newBuilder()
@@ -976,6 +988,7 @@ protected HttpJsonSubscriberStub(
builder.add("subscription", String.valueOf(request.getSubscription()));
return builder.build();
})
+ .setResourceNameExtractor(request -> request.getSubscription())
.build();
HttpJsonCallSettings setIamPolicyTransportSettings =
HttpJsonCallSettings.newBuilder()
@@ -987,6 +1000,7 @@ protected HttpJsonSubscriberStub(
builder.add("resource", String.valueOf(request.getResource()));
return builder.build();
})
+ .setResourceNameExtractor(request -> request.getResource())
.build();
HttpJsonCallSettings getIamPolicyTransportSettings =
HttpJsonCallSettings.newBuilder()
@@ -998,6 +1012,7 @@ protected HttpJsonSubscriberStub(
builder.add("resource", String.valueOf(request.getResource()));
return builder.build();
})
+ .setResourceNameExtractor(request -> request.getResource())
.build();
HttpJsonCallSettings
testIamPermissionsTransportSettings =
@@ -1010,6 +1025,7 @@ protected HttpJsonSubscriberStub(
builder.add("resource", String.valueOf(request.getResource()));
return builder.build();
})
+ .setResourceNameExtractor(request -> request.getResource())
.build();
this.createSubscriptionCallable =
@@ -1223,7 +1239,8 @@ public UnaryCallable getIamPolicyCallable() {
public BidiStreamingCallable
streamingPullCallable() {
throw new UnsupportedOperationException(
- "Not implemented: streamingPullCallable(). REST transport is not implemented for this method yet.");
+ "Not implemented: streamingPullCallable(). REST transport is not implemented for this"
+ + " method yet.");
}
@Override
diff --git a/google-cloud-pubsub/src/main/java/com/google/cloud/pubsub/v1/stub/PublisherStub.java b/google-cloud-pubsub/src/main/java/com/google/cloud/pubsub/v1/stub/PublisherStub.java
index 011ad51e2..5c7f9d6a8 100644
--- a/google-cloud-pubsub/src/main/java/com/google/cloud/pubsub/v1/stub/PublisherStub.java
+++ b/google-cloud-pubsub/src/main/java/com/google/cloud/pubsub/v1/stub/PublisherStub.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2024 Google LLC
+ * Copyright 2026 Google LLC
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/google-cloud-pubsub/src/main/java/com/google/cloud/pubsub/v1/stub/PublisherStubSettings.java b/google-cloud-pubsub/src/main/java/com/google/cloud/pubsub/v1/stub/PublisherStubSettings.java
index d1640b7aa..a0c47d70d 100644
--- a/google-cloud-pubsub/src/main/java/com/google/cloud/pubsub/v1/stub/PublisherStubSettings.java
+++ b/google-cloud-pubsub/src/main/java/com/google/cloud/pubsub/v1/stub/PublisherStubSettings.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2024 Google LLC
+ * Copyright 2026 Google LLC
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -45,6 +45,7 @@
import com.google.api.gax.rpc.BatchingCallSettings;
import com.google.api.gax.rpc.BatchingDescriptor;
import com.google.api.gax.rpc.ClientContext;
+import com.google.api.gax.rpc.LibraryMetadata;
import com.google.api.gax.rpc.PageContext;
import com.google.api.gax.rpc.PagedCallSettings;
import com.google.api.gax.rpc.PagedListDescriptor;
@@ -131,10 +132,11 @@
* }
*
* Please refer to the [Client Side Retry
- * Guide](https://github.com/googleapis/google-cloud-java/blob/main/docs/client_retries.md) for
- * additional support in setting retries.
+ * Guide](https://docs.cloud.google.com/java/docs/client-retries) for additional support in setting
+ * retries.
*/
@Generated("by gapic-generator-java")
+@SuppressWarnings("CanonicalDuration")
public class PublisherStubSettings extends StubSettings {
/** The default scopes of the service. */
private static final ImmutableList DEFAULT_SERVICE_SCOPES =
@@ -595,6 +597,15 @@ protected PublisherStubSettings(Builder settingsBuilder) throws IOException {
testIamPermissionsSettings = settingsBuilder.testIamPermissionsSettings().build();
}
+ @Override
+ protected LibraryMetadata getLibraryMetadata() {
+ return LibraryMetadata.newBuilder()
+ .setArtifactName("com.google.cloud:google-cloud-pubsub")
+ .setRepository("googleapis/java-pubsub")
+ .setVersion(Version.VERSION)
+ .build();
+ }
+
/** Builder for PublisherStubSettings. */
public static class Builder extends StubSettings.Builder {
private final ImmutableList> unaryMethodSettingsBuilders;
diff --git a/google-cloud-pubsub/src/main/java/com/google/cloud/pubsub/v1/stub/SchemaServiceStub.java b/google-cloud-pubsub/src/main/java/com/google/cloud/pubsub/v1/stub/SchemaServiceStub.java
index b36f779af..a0335a4b1 100644
--- a/google-cloud-pubsub/src/main/java/com/google/cloud/pubsub/v1/stub/SchemaServiceStub.java
+++ b/google-cloud-pubsub/src/main/java/com/google/cloud/pubsub/v1/stub/SchemaServiceStub.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2024 Google LLC
+ * Copyright 2026 Google LLC
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/google-cloud-pubsub/src/main/java/com/google/cloud/pubsub/v1/stub/SchemaServiceStubSettings.java b/google-cloud-pubsub/src/main/java/com/google/cloud/pubsub/v1/stub/SchemaServiceStubSettings.java
index 9a1ed164b..2e879a074 100644
--- a/google-cloud-pubsub/src/main/java/com/google/cloud/pubsub/v1/stub/SchemaServiceStubSettings.java
+++ b/google-cloud-pubsub/src/main/java/com/google/cloud/pubsub/v1/stub/SchemaServiceStubSettings.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2024 Google LLC
+ * Copyright 2026 Google LLC
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -36,6 +36,7 @@
import com.google.api.gax.rpc.ApiCallContext;
import com.google.api.gax.rpc.ApiClientHeaderProvider;
import com.google.api.gax.rpc.ClientContext;
+import com.google.api.gax.rpc.LibraryMetadata;
import com.google.api.gax.rpc.PageContext;
import com.google.api.gax.rpc.PagedCallSettings;
import com.google.api.gax.rpc.PagedListDescriptor;
@@ -122,10 +123,11 @@
* }
*
* Please refer to the [Client Side Retry
- * Guide](https://github.com/googleapis/google-cloud-java/blob/main/docs/client_retries.md) for
- * additional support in setting retries.
+ * Guide](https://docs.cloud.google.com/java/docs/client-retries) for additional support in setting
+ * retries.
*/
@Generated("by gapic-generator-java")
+@SuppressWarnings("CanonicalDuration")
public class SchemaServiceStubSettings extends StubSettings {
/** The default scopes of the service. */
private static final ImmutableList DEFAULT_SERVICE_SCOPES =
@@ -460,6 +462,15 @@ protected SchemaServiceStubSettings(Builder settingsBuilder) throws IOException
testIamPermissionsSettings = settingsBuilder.testIamPermissionsSettings().build();
}
+ @Override
+ protected LibraryMetadata getLibraryMetadata() {
+ return LibraryMetadata.newBuilder()
+ .setArtifactName("com.google.cloud:google-cloud-pubsub")
+ .setRepository("googleapis/java-pubsub")
+ .setVersion(Version.VERSION)
+ .build();
+ }
+
/** Builder for SchemaServiceStubSettings. */
public static class Builder extends StubSettings.Builder {
private final ImmutableList> unaryMethodSettingsBuilders;
diff --git a/google-cloud-pubsub/src/main/java/com/google/cloud/pubsub/v1/stub/SubscriberStub.java b/google-cloud-pubsub/src/main/java/com/google/cloud/pubsub/v1/stub/SubscriberStub.java
index 94b56c5a1..115a2f2c8 100644
--- a/google-cloud-pubsub/src/main/java/com/google/cloud/pubsub/v1/stub/SubscriberStub.java
+++ b/google-cloud-pubsub/src/main/java/com/google/cloud/pubsub/v1/stub/SubscriberStub.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2024 Google LLC
+ * Copyright 2026 Google LLC
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
diff --git a/google-cloud-pubsub/src/main/java/com/google/cloud/pubsub/v1/stub/SubscriberStubSettings.java b/google-cloud-pubsub/src/main/java/com/google/cloud/pubsub/v1/stub/SubscriberStubSettings.java
index 81a585537..5f03d7b03 100644
--- a/google-cloud-pubsub/src/main/java/com/google/cloud/pubsub/v1/stub/SubscriberStubSettings.java
+++ b/google-cloud-pubsub/src/main/java/com/google/cloud/pubsub/v1/stub/SubscriberStubSettings.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2024 Google LLC
+ * Copyright 2026 Google LLC
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -36,6 +36,7 @@
import com.google.api.gax.rpc.ApiCallContext;
import com.google.api.gax.rpc.ApiClientHeaderProvider;
import com.google.api.gax.rpc.ClientContext;
+import com.google.api.gax.rpc.LibraryMetadata;
import com.google.api.gax.rpc.PageContext;
import com.google.api.gax.rpc.PagedCallSettings;
import com.google.api.gax.rpc.PagedListDescriptor;
@@ -130,10 +131,11 @@
* }
*
* Please refer to the [Client Side Retry
- * Guide](https://github.com/googleapis/google-cloud-java/blob/main/docs/client_retries.md) for
- * additional support in setting retries.
+ * Guide](https://docs.cloud.google.com/java/docs/client-retries) for additional support in setting
+ * retries.
*/
@Generated("by gapic-generator-java")
+@SuppressWarnings("CanonicalDuration")
public class SubscriberStubSettings extends StubSettings {
/** The default scopes of the service. */
private static final ImmutableList DEFAULT_SERVICE_SCOPES =
@@ -510,6 +512,15 @@ protected SubscriberStubSettings(Builder settingsBuilder) throws IOException {
testIamPermissionsSettings = settingsBuilder.testIamPermissionsSettings().build();
}
+ @Override
+ protected LibraryMetadata getLibraryMetadata() {
+ return LibraryMetadata.newBuilder()
+ .setArtifactName("com.google.cloud:google-cloud-pubsub")
+ .setRepository("googleapis/java-pubsub")
+ .setVersion(Version.VERSION)
+ .build();
+ }
+
/** Builder for SubscriberStubSettings. */
public static class Builder extends StubSettings.Builder {
private final ImmutableList> unaryMethodSettingsBuilders;
@@ -620,10 +631,10 @@ public static class Builder extends StubSettings.Builder schedule(Runnable command, long delay, TimeUnit unit) {
return schedulePendingCallable(
new PendingCallable<>(
- Duration.ofMillis(unit.toMillis(delay)), command, PendingCallableType.NORMAL));
+ Duration.ofMillis(unit.toMillis(delay)), command, null, PendingCallableType.NORMAL));
}
@Override
public ScheduledFuture schedule(Callable callable, long delay, TimeUnit unit) {
return schedulePendingCallable(
new PendingCallable<>(
- Duration.ofMillis(unit.toMillis(delay)), callable, PendingCallableType.NORMAL));
+ Duration.ofMillis(unit.toMillis(delay)), callable, null, PendingCallableType.NORMAL));
}
@Override
@@ -72,6 +72,7 @@ public ScheduledFuture> scheduleAtFixedRate(
new PendingCallable<>(
Duration.ofMillis(unit.toMillis(initialDelay)),
command,
+ Duration.ofMillis(unit.toMillis(period)),
PendingCallableType.FIXED_RATE));
}
@@ -82,6 +83,7 @@ public ScheduledFuture> scheduleWithFixedDelay(
new PendingCallable<>(
Duration.ofMillis(unit.toMillis(initialDelay)),
command,
+ Duration.ofMillis(unit.toMillis(delay)),
PendingCallableType.FIXED_DELAY));
}
@@ -212,13 +214,15 @@ enum PendingCallableType {
class PendingCallable implements Comparable> {
Instant creationTime = Instant.ofEpochMilli(clock.millisTime());
Duration delay;
+ Duration period;
Callable pendingCallable;
SettableFuture future = SettableFuture.create();
AtomicBoolean cancelled = new AtomicBoolean(false);
AtomicBoolean done = new AtomicBoolean(false);
PendingCallableType type;
- PendingCallable(Duration delay, final Runnable runnable, PendingCallableType type) {
+ PendingCallable(
+ Duration delay, final Runnable runnable, Duration period, PendingCallableType type) {
pendingCallable =
new Callable() {
@Override
@@ -229,12 +233,15 @@ public T call() {
};
this.type = type;
this.delay = delay;
+ this.period = period;
}
- PendingCallable(Duration delay, Callable callable, PendingCallableType type) {
+ PendingCallable(
+ Duration delay, Callable callable, Duration period, PendingCallableType type) {
pendingCallable = callable;
this.type = type;
this.delay = delay;
+ this.period = period;
}
private Instant getScheduledTime() {
@@ -305,10 +312,12 @@ T call() {
break;
case FIXED_DELAY:
this.creationTime = Instant.ofEpochMilli(clock.millisTime());
+ this.delay = period;
schedulePendingCallable(this);
break;
case FIXED_RATE:
this.creationTime = this.creationTime.plus(delay);
+ this.delay = period;
schedulePendingCallable(this);
break;
default:
diff --git a/google-cloud-pubsub/src/test/java/com/google/cloud/pubsub/v1/FakeSubscriberServiceImpl.java b/google-cloud-pubsub/src/test/java/com/google/cloud/pubsub/v1/FakeSubscriberServiceImpl.java
index 173248041..3b2bd2f5d 100644
--- a/google-cloud-pubsub/src/test/java/com/google/cloud/pubsub/v1/FakeSubscriberServiceImpl.java
+++ b/google-cloud-pubsub/src/test/java/com/google/cloud/pubsub/v1/FakeSubscriberServiceImpl.java
@@ -24,6 +24,7 @@
import com.google.pubsub.v1.PublisherGrpc.PublisherImplBase;
import com.google.pubsub.v1.PullRequest;
import com.google.pubsub.v1.PullResponse;
+import com.google.pubsub.v1.ReceivedMessage;
import com.google.pubsub.v1.StreamingPullRequest;
import com.google.pubsub.v1.StreamingPullResponse;
import com.google.pubsub.v1.SubscriberGrpc.SubscriberImplBase;
@@ -247,8 +248,26 @@ public void modifyAckDeadline(
responseObserver.onCompleted();
}
+ public void sendMessages(int numMessages) throws InterruptedException {
+ waitForRegisteredSubscription();
+ synchronized (openedStreams) {
+ waitForOpenedStreams(1);
+ Stream stream = openedStreams.get(getAndAdvanceCurrentStream());
+ StreamingPullResponse.Builder response = StreamingPullResponse.newBuilder();
+ for (int i = 0; i < numMessages; i++) {
+ response.addReceivedMessages(
+ ReceivedMessage.newBuilder()
+ .setAckId("ackid" + i)
+ .setMessage(
+ com.google.pubsub.v1.PubsubMessage.newBuilder().setMessageId("id" + i).build())
+ .build());
+ }
+ stream.responseObserver.onNext(response.build());
+ }
+ }
+
public void sendError(Throwable error) throws InterruptedException {
- waitForRegistedSubscription();
+ waitForRegisteredSubscription();
synchronized (openedStreams) {
waitForOpenedStreams(1);
Stream stream = openedStreams.get(getAndAdvanceCurrentStream());
@@ -257,7 +276,7 @@ public void sendError(Throwable error) throws InterruptedException {
}
}
- public String waitForRegistedSubscription() throws InterruptedException {
+ public String waitForRegisteredSubscription() throws InterruptedException {
synchronized (subscriptionInitialized) {
while (!subscriptionInitialized.get()) {
subscriptionInitialized.wait();
diff --git a/google-cloud-pubsub/src/test/java/com/google/cloud/pubsub/v1/MessageDispatcherTest.java b/google-cloud-pubsub/src/test/java/com/google/cloud/pubsub/v1/MessageDispatcherTest.java
index bd3dccccf..1285fadd5 100644
--- a/google-cloud-pubsub/src/test/java/com/google/cloud/pubsub/v1/MessageDispatcherTest.java
+++ b/google-cloud-pubsub/src/test/java/com/google/cloud/pubsub/v1/MessageDispatcherTest.java
@@ -18,6 +18,9 @@
import static com.google.common.truth.Truth.assertThat;
import static org.junit.Assert.*;
+import static org.mockito.ArgumentMatchers.any;
+import static org.mockito.ArgumentMatchers.argThat;
+import static org.mockito.ArgumentMatchers.eq;
import static org.mockito.Mockito.*;
import com.google.api.gax.batching.FlowController;
@@ -35,6 +38,8 @@
import org.mockito.stubbing.Answer;
public class MessageDispatcherTest {
+ private static final String MOCK_SUBSCRIPTION_NAME =
+ "projects/MOCK-PROJECT/subscriptions/MOCK-SUBSCRIPTION";
private static final ByteString MESSAGE_DATA = ByteString.copyFromUtf8("message-data");
private static final int DELIVERY_INFO_COUNT = 3;
private static final String ACK_ID = "ACK-ID";
@@ -462,6 +467,7 @@ public void testAckExtensionDefaultsExactlyOnceDeliveryDisabledThenEnabled() {
.setMinDurationPerAckExtensionDefaultUsed(true)
.setMaxDurationPerAckExtension(Subscriber.DEFAULT_MAX_ACK_DEADLINE_EXTENSION)
.setMaxDurationPerAckExtensionDefaultUsed(true)
+ .setSubscriptionName(MOCK_SUBSCRIPTION_NAME)
.build();
// ExactlyOnceDeliveryEnabled is turned off by default
@@ -494,6 +500,7 @@ public void testAckExtensionDefaultsExactlyOnceDeliveryEnabledThenDisabled() {
.setMinDurationPerAckExtensionDefaultUsed(true)
.setMaxDurationPerAckExtension(Subscriber.DEFAULT_MIN_ACK_DEADLINE_EXTENSION)
.setMaxDurationPerAckExtensionDefaultUsed(true)
+ .setSubscriptionName(MOCK_SUBSCRIPTION_NAME)
.build();
// This would normally be set from the streaming pull response in the
@@ -605,6 +612,7 @@ public void testAckExtensionCustomMinExactlyOnceDeliveryDisabledThenEnabled() {
.setMinDurationPerAckExtensionDefaultUsed(false)
.setMaxDurationPerAckExtension(Subscriber.DEFAULT_MIN_ACK_DEADLINE_EXTENSION)
.setMaxDurationPerAckExtensionDefaultUsed(true)
+ .setSubscriptionName(MOCK_SUBSCRIPTION_NAME)
.build();
// ExactlyOnceDeliveryEnabled is turned off by default
@@ -634,6 +642,7 @@ public void testAckExtensionCustomMaxExactlyOnceDeliveryDisabledThenEnabled() {
.setMinDurationPerAckExtensionDefaultUsed(true)
.setMaxDurationPerAckExtension(Duration.ofSeconds(customMaxSeconds))
.setMaxDurationPerAckExtensionDefaultUsed(false)
+ .setSubscriptionName(MOCK_SUBSCRIPTION_NAME)
.build();
// ExactlyOnceDeliveryEnabled is turned off by default
@@ -704,11 +713,241 @@ private MessageDispatcher getMessageDispatcherFromBuilder(
.setAckLatencyDistribution(mock(Distribution.class))
.setFlowController(mock(FlowController.class))
.setExecutor(executor)
+ .setSubscriptionName(MOCK_SUBSCRIPTION_NAME)
.setSystemExecutor(systemExecutor)
.setApiClock(clock)
+ .setSubscriberShutdownSettings(SubscriberShutdownSettings.newBuilder().build())
.build();
messageDispatcher.setMessageDeadlineSeconds(MIN_ACK_DEADLINE_SECONDS);
return messageDispatcher;
}
+
+ private MessageDispatcher getMessageDispatcherFromBuilder(
+ MessageDispatcher.Builder builder, SubscriberShutdownSettings shutdownSettings) {
+ MessageDispatcher messageDispatcher =
+ builder
+ .setAckProcessor(mockAckProcessor)
+ .setAckExpirationPadding(ACK_EXPIRATION_PADDING_DEFAULT)
+ .setMaxAckExtensionPeriod(MAX_ACK_EXTENSION_PERIOD)
+ .setMinDurationPerAckExtension(Subscriber.DEFAULT_MIN_ACK_DEADLINE_EXTENSION)
+ .setMinDurationPerAckExtensionDefaultUsed(true)
+ .setMaxDurationPerAckExtension(Subscriber.DEFAULT_MAX_ACK_DEADLINE_EXTENSION)
+ .setMaxDurationPerAckExtensionDefaultUsed(true)
+ .setAckLatencyDistribution(mock(Distribution.class))
+ .setFlowController(mock(FlowController.class))
+ .setExecutor(MoreExecutors.newDirectExecutorService())
+ .setSubscriptionName(MOCK_SUBSCRIPTION_NAME)
+ .setSystemExecutor(systemExecutor)
+ .setApiClock(clock)
+ .setSubscriberShutdownSettings(shutdownSettings)
+ .build();
+
+ messageDispatcher.setMessageDeadlineSeconds(MIN_ACK_DEADLINE_SECONDS);
+ return messageDispatcher;
+ }
+
+ @Test
+ public void testStop_waitForProcessing_indefinite() throws Exception {
+ SubscriberShutdownSettings shutdownSettings =
+ SubscriberShutdownSettings.newBuilder()
+ .setMode(SubscriberShutdownSettings.ShutdownMode.WAIT_FOR_PROCESSING)
+ .setTimeout(Duration.ofSeconds(-1))
+ .build();
+ MessageDispatcher dispatcher =
+ getMessageDispatcherFromBuilder(
+ MessageDispatcher.newBuilder(messageReceiver), shutdownSettings);
+
+ dispatcher.processReceivedMessages(Collections.singletonList(TEST_MESSAGE));
+
+ Thread stopThread = new Thread(dispatcher::stop);
+ stopThread.start();
+
+ // Wait for the stop thread to block on the waiter.
+ Thread.sleep(100);
+ assertTrue(stopThread.isAlive());
+
+ // Ack the message, which should allow the stop thread to complete.
+ consumers.take().ack();
+
+ List ackRequestDataList = new ArrayList();
+ AckRequestData ackRequestData = AckRequestData.newBuilder(TEST_MESSAGE.getAckId()).build();
+ ackRequestDataList.add(ackRequestData);
+
+ stopThread.join();
+ assertFalse(stopThread.isAlive());
+
+ verify(mockAckProcessor, times(1))
+ .sendAckOperations(
+ argThat(new CustomArgumentMatchers.AckRequestDataListMatcher(ackRequestDataList)));
+ }
+
+ @Test
+ public void testStop_waitForProcessing_withTimeout_success() {
+ SubscriberShutdownSettings shutdownSettings =
+ SubscriberShutdownSettings.newBuilder()
+ .setMode(SubscriberShutdownSettings.ShutdownMode.WAIT_FOR_PROCESSING)
+ .setTimeout(Duration.ofSeconds(5))
+ .build();
+ MessageDispatcher dispatcher =
+ getMessageDispatcherFromBuilder(
+ MessageDispatcher.newBuilder(messageReceiver), shutdownSettings);
+
+ dispatcher.processReceivedMessages(Collections.singletonList(TEST_MESSAGE));
+
+ Thread stopThread = new Thread(dispatcher::stop);
+ stopThread.start();
+
+ // Ack the message before the timeout expires.
+ try {
+ consumers.take().ack();
+ } catch (InterruptedException e) {
+ fail("Interrupted while taking consumer");
+ }
+
+ try {
+ stopThread.join(1000);
+ } catch (InterruptedException e) {
+ fail("Interrupted while joining stop thread");
+ }
+
+ List |