diff --git a/java-bigtable/google-cloud-bigtable/src/main/java/com/google/cloud/bigtable/gaxx/grpc/BigtableTransportChannelProvider.java b/java-bigtable/google-cloud-bigtable/src/main/java/com/google/cloud/bigtable/gaxx/grpc/BigtableTransportChannelProvider.java index e0d120d27795..31d3d9f8cc79 100644 --- a/java-bigtable/google-cloud-bigtable/src/main/java/com/google/cloud/bigtable/gaxx/grpc/BigtableTransportChannelProvider.java +++ b/java-bigtable/google-cloud-bigtable/src/main/java/com/google/cloud/bigtable/gaxx/grpc/BigtableTransportChannelProvider.java @@ -74,6 +74,12 @@ public boolean needsExecutor() { return delegate.needsExecutor(); } + @Nullable + @Override + public Executor getExecutor() { + return delegate.getExecutor(); + } + @Override @Deprecated public BigtableTransportChannelProvider withExecutor(ScheduledExecutorService executor) { diff --git a/sdk-platform-java/gax-java/gax-grpc/src/main/java/com/google/api/gax/grpc/InstantiatingGrpcChannelProvider.java b/sdk-platform-java/gax-java/gax-grpc/src/main/java/com/google/api/gax/grpc/InstantiatingGrpcChannelProvider.java index c4543d986741..56f44fa7ae0a 100644 --- a/sdk-platform-java/gax-java/gax-grpc/src/main/java/com/google/api/gax/grpc/InstantiatingGrpcChannelProvider.java +++ b/sdk-platform-java/gax-java/gax-grpc/src/main/java/com/google/api/gax/grpc/InstantiatingGrpcChannelProvider.java @@ -264,6 +264,12 @@ public boolean needsExecutor() { return executor == null; } + @Nullable + @Override + public Executor getExecutor() { + return executor; + } + @Deprecated @Override public TransportChannelProvider withExecutor(ScheduledExecutorService executor) { diff --git a/sdk-platform-java/gax-java/gax-httpjson/src/main/java/com/google/api/gax/httpjson/InstantiatingHttpJsonChannelProvider.java b/sdk-platform-java/gax-java/gax-httpjson/src/main/java/com/google/api/gax/httpjson/InstantiatingHttpJsonChannelProvider.java index daf94a498cc4..495fec1ed450 100644 --- a/sdk-platform-java/gax-java/gax-httpjson/src/main/java/com/google/api/gax/httpjson/InstantiatingHttpJsonChannelProvider.java +++ b/sdk-platform-java/gax-java/gax-httpjson/src/main/java/com/google/api/gax/httpjson/InstantiatingHttpJsonChannelProvider.java @@ -105,6 +105,12 @@ public boolean needsExecutor() { return executor == null; } + @Nullable + @Override + public Executor getExecutor() { + return executor; + } + @Deprecated @Override public TransportChannelProvider withExecutor(ScheduledExecutorService executor) { diff --git a/sdk-platform-java/gax-java/gax/src/main/java/com/google/api/gax/rpc/TransportChannelProvider.java b/sdk-platform-java/gax-java/gax/src/main/java/com/google/api/gax/rpc/TransportChannelProvider.java index cc2ebdb064b6..ebdcbc9f415c 100644 --- a/sdk-platform-java/gax-java/gax/src/main/java/com/google/api/gax/rpc/TransportChannelProvider.java +++ b/sdk-platform-java/gax-java/gax/src/main/java/com/google/api/gax/rpc/TransportChannelProvider.java @@ -36,6 +36,7 @@ import java.util.Map; import java.util.concurrent.Executor; import java.util.concurrent.ScheduledExecutorService; +import javax.annotation.Nullable; /** * Provides an interface to either build a TransportChannel or provide a fixed TransportChannel that @@ -70,6 +71,15 @@ public interface TransportChannelProvider { @Deprecated boolean needsExecutor(); + /** + * @return the user provided executor. This can be null if the user didn't override the executor + * and/or the TransportProvider is using its internal executor. + */ + @Nullable + default Executor getExecutor() { + return null; + } + /** Sets the executor to use when constructing a new {@link TransportChannel}. */ TransportChannelProvider withExecutor(Executor executor);