From e69b16ca86bbffa70d90ffd938b45a3dcceecf71 Mon Sep 17 00:00:00 2001 From: Jin Seop Kim Date: Fri, 5 Jun 2026 12:03:07 -0400 Subject: [PATCH 1/2] feat(bigtable): update legacy escape hatch to return V2 admin clients --- .../admin/v2/BigtableInstanceAdminClient.java | 10 +++---- .../v2/BigtableInstanceAdminClientV2.java | 5 ++++ .../admin/v2/BigtableTableAdminClient.java | 29 +++++++++++++++---- .../admin/v2/BigtableTableAdminClientV2.java | 2 +- .../stub/EnhancedBigtableTableAdminStub.java | 8 +++++ 5 files changed, 43 insertions(+), 11 deletions(-) diff --git a/java-bigtable/google-cloud-bigtable/src/main/java/com/google/cloud/bigtable/admin/v2/BigtableInstanceAdminClient.java b/java-bigtable/google-cloud-bigtable/src/main/java/com/google/cloud/bigtable/admin/v2/BigtableInstanceAdminClient.java index 0e5a9155a01d..bb5351de069e 100644 --- a/java-bigtable/google-cloud-bigtable/src/main/java/com/google/cloud/bigtable/admin/v2/BigtableInstanceAdminClient.java +++ b/java-bigtable/google-cloud-bigtable/src/main/java/com/google/cloud/bigtable/admin/v2/BigtableInstanceAdminClient.java @@ -125,7 +125,7 @@ public final class BigtableInstanceAdminClient implements AutoCloseable { private final String projectId; private final BigtableInstanceAdminStub stub; - private final BaseBigtableInstanceAdminClient baseClient; + private final BigtableInstanceAdminClientV2 baseClient; /** Constructs an instance of BigtableInstanceAdminClient with the given project ID. */ public static BigtableInstanceAdminClient create(@Nonnull String projectId) throws IOException { @@ -148,7 +148,7 @@ private BigtableInstanceAdminClient( @Nonnull String projectId, @Nonnull BigtableInstanceAdminStub stub) { this.projectId = projectId; this.stub = stub; - this.baseClient = BaseBigtableInstanceAdminClient.create(stub); + this.baseClient = BigtableInstanceAdminClientV2.create(stub); } /** Gets the project ID this client is associated with. */ @@ -157,10 +157,10 @@ public String getProjectId() { } /** - * Returns the modern autogenerated client. This provides access to the newest features and - * proto-based methods. + * Returns the modern V2 client. This provides access to the newest features and proto-based + * methods. */ - public BaseBigtableInstanceAdminClient getBaseClient() { + public BigtableInstanceAdminClientV2 getBaseClient() { return baseClient; } diff --git a/java-bigtable/google-cloud-bigtable/src/main/java/com/google/cloud/bigtable/admin/v2/BigtableInstanceAdminClientV2.java b/java-bigtable/google-cloud-bigtable/src/main/java/com/google/cloud/bigtable/admin/v2/BigtableInstanceAdminClientV2.java index cd31e38f68f5..d9bcdf118e90 100644 --- a/java-bigtable/google-cloud-bigtable/src/main/java/com/google/cloud/bigtable/admin/v2/BigtableInstanceAdminClientV2.java +++ b/java-bigtable/google-cloud-bigtable/src/main/java/com/google/cloud/bigtable/admin/v2/BigtableInstanceAdminClientV2.java @@ -40,4 +40,9 @@ public static final BigtableInstanceAdminClientV2 create( BaseBigtableInstanceAdminSettings settings) throws IOException { return new BigtableInstanceAdminClientV2(settings); } + + /** Constructs an instance of BigtableInstanceAdminClientV2 with the given stub. */ + public static final BigtableInstanceAdminClientV2 create(BigtableInstanceAdminStub stub) { + return new BigtableInstanceAdminClientV2(stub); + } } diff --git a/java-bigtable/google-cloud-bigtable/src/main/java/com/google/cloud/bigtable/admin/v2/BigtableTableAdminClient.java b/java-bigtable/google-cloud-bigtable/src/main/java/com/google/cloud/bigtable/admin/v2/BigtableTableAdminClient.java index 3cd7fef840ab..1458a9ed6eec 100644 --- a/java-bigtable/google-cloud-bigtable/src/main/java/com/google/cloud/bigtable/admin/v2/BigtableTableAdminClient.java +++ b/java-bigtable/google-cloud-bigtable/src/main/java/com/google/cloud/bigtable/admin/v2/BigtableTableAdminClient.java @@ -70,6 +70,7 @@ import com.google.cloud.bigtable.admin.v2.models.UpdateBackupRequest; import com.google.cloud.bigtable.admin.v2.models.UpdateSchemaBundleRequest; import com.google.cloud.bigtable.admin.v2.models.UpdateTableRequest; +import com.google.cloud.bigtable.admin.v2.stub.AwaitConsistencyCallableV2; import com.google.cloud.bigtable.admin.v2.stub.EnhancedBigtableTableAdminStub; import com.google.cloud.bigtable.data.v2.internal.TableAdminRequestContext; import com.google.common.base.Preconditions; @@ -89,6 +90,7 @@ import java.util.List; import java.util.Map; import java.util.concurrent.ExecutionException; +import java.util.concurrent.ScheduledExecutorService; import javax.annotation.Nonnull; /** @@ -169,7 +171,7 @@ public final class BigtableTableAdminClient implements AutoCloseable { private final EnhancedBigtableTableAdminStub stub; private final String projectId; private final String instanceId; - private final BaseBigtableTableAdminClient baseClient; + private BigtableTableAdminClientV2 baseClient; /** Constructs an instance of BigtableTableAdminClient with the given project and instance IDs. */ public static BigtableTableAdminClient create( @@ -209,7 +211,6 @@ private BigtableTableAdminClient( this.projectId = projectId; this.instanceId = instanceId; this.stub = stub; - this.baseClient = BaseBigtableTableAdminClient.create(stub); } /** Gets the project ID of the instance whose tables this client manages. */ @@ -223,10 +224,28 @@ public String getInstanceId() { } /** - * Returns the modern autogenerated client. This provides access to the newest features and - * proto-based methods. + * Returns the modern V2 client. This provides access to the newest features and proto-based + * methods. */ - public BaseBigtableTableAdminClient getBaseClient() { + public synchronized BigtableTableAdminClientV2 getBaseClient() { + if (baseClient == null) { + ScheduledExecutorService backgroundExecutor = + stub.getSettings().getBackgroundExecutorProvider().getExecutor(); + boolean shouldAutoClose = + stub.getSettings().getBackgroundExecutorProvider().shouldAutoClose(); + + AwaitConsistencyCallableV2 awaitConsistencyCallable = + BigtableTableAdminClientV2.createAwaitConsistencyCallable( + stub, stub.getSettings(), stub.getClientContext().getClock(), backgroundExecutor); + + baseClient = + new BigtableTableAdminClientV2( + stub, + backgroundExecutor, + shouldAutoClose, + awaitConsistencyCallable, + stub.awaitOptimizeRestoredTableCallable()); + } return baseClient; } diff --git a/java-bigtable/google-cloud-bigtable/src/main/java/com/google/cloud/bigtable/admin/v2/BigtableTableAdminClientV2.java b/java-bigtable/google-cloud-bigtable/src/main/java/com/google/cloud/bigtable/admin/v2/BigtableTableAdminClientV2.java index 8d16e229d1e7..d1fe6e352d0b 100644 --- a/java-bigtable/google-cloud-bigtable/src/main/java/com/google/cloud/bigtable/admin/v2/BigtableTableAdminClientV2.java +++ b/java-bigtable/google-cloud-bigtable/src/main/java/com/google/cloud/bigtable/admin/v2/BigtableTableAdminClientV2.java @@ -133,7 +133,7 @@ protected BigtableTableAdminClientV2( this.optimizeRestoredTableOperationBaseCallable = optimizeRestoredTableOperationBaseCallable; } - private static AwaitConsistencyCallableV2 createAwaitConsistencyCallable( + static AwaitConsistencyCallableV2 createAwaitConsistencyCallable( GrpcBigtableTableAdminStub stub, BigtableTableAdminStubSettings settings, ApiClock clock, diff --git a/java-bigtable/google-cloud-bigtable/src/main/java/com/google/cloud/bigtable/admin/v2/stub/EnhancedBigtableTableAdminStub.java b/java-bigtable/google-cloud-bigtable/src/main/java/com/google/cloud/bigtable/admin/v2/stub/EnhancedBigtableTableAdminStub.java index 3c5a585c0f77..3f1c9737a30c 100644 --- a/java-bigtable/google-cloud-bigtable/src/main/java/com/google/cloud/bigtable/admin/v2/stub/EnhancedBigtableTableAdminStub.java +++ b/java-bigtable/google-cloud-bigtable/src/main/java/com/google/cloud/bigtable/admin/v2/stub/EnhancedBigtableTableAdminStub.java @@ -245,4 +245,12 @@ public UnaryCallable awaitConsistencyCallable() { awaitOptimizeRestoredTableCallable() { return optimizeRestoredTableOperationBaseCallable; } + + public BigtableTableAdminStubSettings getSettings() { + return settings; + } + + public ClientContext getClientContext() { + return clientContext; + } } From 2e46b3e50816d1f76eb9bc74b757ec4307649dee Mon Sep 17 00:00:00 2001 From: Jin Seop Kim Date: Fri, 5 Jun 2026 13:16:57 -0400 Subject: [PATCH 2/2] remove unnecessary changes --- .../cloud/bigtable/admin/v2/BigtableInstanceAdminClient.java | 2 +- .../bigtable/admin/v2/BigtableInstanceAdminClientV2.java | 5 ----- 2 files changed, 1 insertion(+), 6 deletions(-) diff --git a/java-bigtable/google-cloud-bigtable/src/main/java/com/google/cloud/bigtable/admin/v2/BigtableInstanceAdminClient.java b/java-bigtable/google-cloud-bigtable/src/main/java/com/google/cloud/bigtable/admin/v2/BigtableInstanceAdminClient.java index bb5351de069e..3bd09e5c5aed 100644 --- a/java-bigtable/google-cloud-bigtable/src/main/java/com/google/cloud/bigtable/admin/v2/BigtableInstanceAdminClient.java +++ b/java-bigtable/google-cloud-bigtable/src/main/java/com/google/cloud/bigtable/admin/v2/BigtableInstanceAdminClient.java @@ -148,7 +148,7 @@ private BigtableInstanceAdminClient( @Nonnull String projectId, @Nonnull BigtableInstanceAdminStub stub) { this.projectId = projectId; this.stub = stub; - this.baseClient = BigtableInstanceAdminClientV2.create(stub); + this.baseClient = new BigtableInstanceAdminClientV2(stub); } /** Gets the project ID this client is associated with. */ diff --git a/java-bigtable/google-cloud-bigtable/src/main/java/com/google/cloud/bigtable/admin/v2/BigtableInstanceAdminClientV2.java b/java-bigtable/google-cloud-bigtable/src/main/java/com/google/cloud/bigtable/admin/v2/BigtableInstanceAdminClientV2.java index d9bcdf118e90..cd31e38f68f5 100644 --- a/java-bigtable/google-cloud-bigtable/src/main/java/com/google/cloud/bigtable/admin/v2/BigtableInstanceAdminClientV2.java +++ b/java-bigtable/google-cloud-bigtable/src/main/java/com/google/cloud/bigtable/admin/v2/BigtableInstanceAdminClientV2.java @@ -40,9 +40,4 @@ public static final BigtableInstanceAdminClientV2 create( BaseBigtableInstanceAdminSettings settings) throws IOException { return new BigtableInstanceAdminClientV2(settings); } - - /** Constructs an instance of BigtableInstanceAdminClientV2 with the given stub. */ - public static final BigtableInstanceAdminClientV2 create(BigtableInstanceAdminStub stub) { - return new BigtableInstanceAdminClientV2(stub); - } }