diff --git a/google-cloud-bigtable/pom.xml b/google-cloud-bigtable/pom.xml index bd4c6f0b63ee..102de757844c 100644 --- a/google-cloud-bigtable/pom.xml +++ b/google-cloud-bigtable/pom.xml @@ -45,8 +45,8 @@ batch-bigtable.googleapis.com:443 - 1.65.0 - 3.25.5 + 1.76.3 + 4.33.2 diff --git a/google-cloud-bigtable/src/main/java/com/google/cloud/bigtable/data/v2/BigtableDataSettings.java b/google-cloud-bigtable/src/main/java/com/google/cloud/bigtable/data/v2/BigtableDataSettings.java index b8a514433f00..4329e98f63f0 100644 --- a/google-cloud-bigtable/src/main/java/com/google/cloud/bigtable/data/v2/BigtableDataSettings.java +++ b/google-cloud-bigtable/src/main/java/com/google/cloud/bigtable/data/v2/BigtableDataSettings.java @@ -450,7 +450,6 @@ public boolean isRefreshingChannel() { */ @Deprecated public Builder setPrimingTableIds(String... tableIds) { - stubSettings.setPrimedTableIds(tableIds); return this; } diff --git a/google-cloud-bigtable/src/main/java/com/google/cloud/bigtable/data/v2/stub/BigtableClientContext.java b/google-cloud-bigtable/src/main/java/com/google/cloud/bigtable/data/v2/stub/BigtableClientContext.java index 97f4aad4954c..d71355d6cd9f 100644 --- a/google-cloud-bigtable/src/main/java/com/google/cloud/bigtable/data/v2/stub/BigtableClientContext.java +++ b/google-cloud-bigtable/src/main/java/com/google/cloud/bigtable/data/v2/stub/BigtableClientContext.java @@ -128,10 +128,7 @@ public static BigtableClientContext create(EnhancedBigtableStubSettings settings } if (transportProvider != null) { - // Set up cookie holder if routing cookie is enabled - if (builder.getEnableRoutingCookie()) { - setupCookieHolder(transportProvider); - } + setupCookieHolder(transportProvider); ChannelPrimer channelPrimer = NoOpChannelPrimer.create(); diff --git a/google-cloud-bigtable/src/main/java/com/google/cloud/bigtable/data/v2/stub/EnhancedBigtableStub.java b/google-cloud-bigtable/src/main/java/com/google/cloud/bigtable/data/v2/stub/EnhancedBigtableStub.java index 18361f1568b4..b3cc8d36551e 100644 --- a/google-cloud-bigtable/src/main/java/com/google/cloud/bigtable/data/v2/stub/EnhancedBigtableStub.java +++ b/google-cloud-bigtable/src/main/java/com/google/cloud/bigtable/data/v2/stub/EnhancedBigtableStub.java @@ -121,7 +121,6 @@ import com.google.cloud.bigtable.data.v2.stub.sql.MetadataErrorHandlingCallable; import com.google.cloud.bigtable.data.v2.stub.sql.PlanRefreshingCallable; import com.google.cloud.bigtable.data.v2.stub.sql.SqlRowMergingCallable; -import com.google.cloud.bigtable.gaxx.retrying.ApiResultRetryAlgorithm; import com.google.cloud.bigtable.gaxx.retrying.RetryInfoRetryAlgorithm; import com.google.common.annotations.VisibleForTesting; import com.google.common.base.Functions; @@ -785,12 +784,9 @@ private UnaryCallable createMutateRowsBas ServerStreamingCallable withAttemptTracer = new BigtableTracerStreamingCallable<>(convertException); - BasicResultRetryAlgorithm resultRetryAlgorithm; - if (settings.getEnableRetryInfo()) { - resultRetryAlgorithm = new RetryInfoRetryAlgorithm<>(); - } else { - resultRetryAlgorithm = new ApiResultRetryAlgorithm<>(); - } + BasicResultRetryAlgorithm resultRetryAlgorithm = + new RetryInfoRetryAlgorithm<>(); + MutateRowsPartialErrorRetryAlgorithm mutateRowsPartialErrorRetryAlgorithm = new MutateRowsPartialErrorRetryAlgorithm(resultRetryAlgorithm); @@ -810,11 +806,8 @@ private UnaryCallable createMutateRowsBas settings.bulkMutateRowsSettings().getRetryableCodes(), retryAlgorithm); - UnaryCallable withCookie = baseCallable; - - if (settings.getEnableRoutingCookie()) { - withCookie = new CookiesUnaryCallable<>(baseCallable); - } + UnaryCallable withCookie = + new CookiesUnaryCallable<>(baseCallable); UnaryCallable flowControlCallable = null; if (settings.bulkMutateRowsSettings().isLatencyBasedThrottlingEnabled()) { @@ -1319,56 +1312,31 @@ ServerStreamingCallSettings convertUnaryToServerStreamingSettings( private UnaryCallable withRetries( UnaryCallable innerCallable, UnaryCallSettings unaryCallSettings) { - UnaryCallable retrying; - if (settings.getEnableRetryInfo()) { - retrying = - com.google.cloud.bigtable.gaxx.retrying.Callables.retrying( - innerCallable, unaryCallSettings, bigtableClientContext.getClientContext()); - } else { - retrying = - Callables.retrying( - innerCallable, unaryCallSettings, bigtableClientContext.getClientContext()); - } - if (settings.getEnableRoutingCookie()) { - return new CookiesUnaryCallable<>(retrying); - } - return retrying; + UnaryCallable retrying = + com.google.cloud.bigtable.gaxx.retrying.Callables.retrying( + innerCallable, unaryCallSettings, bigtableClientContext.getClientContext()); + return new CookiesUnaryCallable<>(retrying); } private ServerStreamingCallable withRetries( ServerStreamingCallable innerCallable, ServerStreamingCallSettings serverStreamingCallSettings) { - ServerStreamingCallable retrying; - if (settings.getEnableRetryInfo()) { - retrying = - com.google.cloud.bigtable.gaxx.retrying.Callables.retrying( - innerCallable, serverStreamingCallSettings, bigtableClientContext.getClientContext()); - } else { - retrying = - Callables.retrying( - innerCallable, serverStreamingCallSettings, bigtableClientContext.getClientContext()); - } - if (settings.getEnableRoutingCookie()) { - return new CookiesServerStreamingCallable<>(retrying); - } - return retrying; + ServerStreamingCallable retrying = + com.google.cloud.bigtable.gaxx.retrying.Callables.retrying( + innerCallable, serverStreamingCallSettings, bigtableClientContext.getClientContext()); + + return new CookiesServerStreamingCallable<>(retrying); } private ServerStreamingCallable largeRowWithRetries( ServerStreamingCallable innerCallable, ServerStreamingCallSettings serverStreamingCallSettings) { - // Retrying algorithm in retryingForLargeRows also takes RetryInfo into consideration, so we - // skip the check for settings.getEnableRetryInfo here - ServerStreamingCallable retrying; - retrying = + ServerStreamingCallable retrying = com.google.cloud.bigtable.gaxx.retrying.Callables.retryingForLargeRows( innerCallable, serverStreamingCallSettings, bigtableClientContext.getClientContext()); - if (settings.getEnableRoutingCookie()) { - return new CookiesServerStreamingCallable<>(retrying); - } - return retrying; + return new CookiesServerStreamingCallable<>(retrying); } // diff --git a/google-cloud-bigtable/src/main/java/com/google/cloud/bigtable/data/v2/stub/EnhancedBigtableStubSettings.java b/google-cloud-bigtable/src/main/java/com/google/cloud/bigtable/data/v2/stub/EnhancedBigtableStubSettings.java index f0c959cc67bf..003823f5fc19 100644 --- a/google-cloud-bigtable/src/main/java/com/google/cloud/bigtable/data/v2/stub/EnhancedBigtableStubSettings.java +++ b/google-cloud-bigtable/src/main/java/com/google/cloud/bigtable/data/v2/stub/EnhancedBigtableStubSettings.java @@ -65,7 +65,6 @@ import java.util.List; import java.util.Map; import java.util.Set; -import java.util.logging.Logger; import javax.annotation.Nonnull; import javax.annotation.Nullable; import org.threeten.bp.Duration; @@ -99,9 +98,6 @@ * } */ public class EnhancedBigtableStubSettings extends StubSettings { - private static final Logger logger = - Logger.getLogger(EnhancedBigtableStubSettings.class.getName()); - // The largest message that can be received is a 256 MB ReadRowsResponse. private static final int MAX_MESSAGE_SIZE = 256 * 1024 * 1024; private static final String SERVER_DEFAULT_APP_PROFILE_ID = ""; @@ -145,7 +141,6 @@ public class EnhancedBigtableStubSettings extends StubSettings primedTableIds; - private final boolean enableRoutingCookie; - private final boolean enableRetryInfo; private final ServerStreamingCallSettings readRowsSettings; private final UnaryCallSettings readRowSettings; @@ -279,7 +269,7 @@ public class EnhancedBigtableStubSettings extends StubSettings getPrimedTableIds() { - return primedTableIds; + return ImmutableList.of(); } /** @@ -384,21 +371,19 @@ public MetricsProvider getMetricsProvider() { } /** - * Gets if routing cookie is enabled. If true, client will retry a request with extra metadata - * server sent back. + * @deprecated routing cookies are always on. */ - @BetaApi("Routing cookie is not currently stable and may change in the future") + @Deprecated public boolean getEnableRoutingCookie() { - return enableRoutingCookie; + return true; } /** - * Gets if RetryInfo is enabled. If true, client bases retry decision and back off time on server - * returned RetryInfo value. Otherwise, client uses {@link RetrySettings}. + * @deprecated RetryInfo is now always on. */ - @BetaApi("RetryInfo is not currently stable and may change in the future") + @Deprecated public boolean getEnableRetryInfo() { - return enableRetryInfo; + return true; } /** @@ -745,10 +730,7 @@ public static class Builder extends StubSettings.Builder primedTableIds; private String jwtAudience; - private boolean enableRoutingCookie; - private boolean enableRetryInfo; private final ServerStreamingCallSettings.Builder readRowsSettings; private final UnaryCallSettings.Builder readRowSettings; @@ -768,7 +750,7 @@ public static class Builder extends StubSettings.Builder prepareQuerySettings; - private FeatureFlags.Builder featureFlags; + private final FeatureFlags.Builder featureFlags; private MetricsProvider metricsProvider; @Nullable private String metricsEndpoint; @@ -785,10 +767,7 @@ public static class Builder extends StubSettings.Builder getPrimedTableIds() { - return primedTableIds; + return ImmutableList.of(); } /** @@ -1159,41 +1134,35 @@ String getJwtAudience() { } /** - * Sets if routing cookie is enabled. If true, client will retry a request with extra metadata - * server sent back. + * @deprecated this now a no-op as routing cookies are always on. */ - @BetaApi("Routing cookie is not currently stable and may change in the future") + @Deprecated public Builder setEnableRoutingCookie(boolean enableRoutingCookie) { - this.enableRoutingCookie = enableRoutingCookie; return this; } /** - * Gets if routing cookie is enabled. If true, client will retry a request with extra metadata - * server sent back. + * @deprecated routing cookies are always on. */ - @BetaApi("Routing cookie is not currently stable and may change in the future") + @Deprecated public boolean getEnableRoutingCookie() { - return enableRoutingCookie; + return true; } /** - * Sets if RetryInfo is enabled. If true, client bases retry decision and back off time on - * server returned RetryInfo value. Otherwise, client uses {@link RetrySettings}. + * @deprecated This is a no-op, RetryInfo is always used now. */ - @BetaApi("RetryInfo is not currently stable and may change in the future") + @Deprecated public Builder setEnableRetryInfo(boolean enableRetryInfo) { - this.enableRetryInfo = enableRetryInfo; return this; } /** - * Gets if RetryInfo is enabled. If true, client bases retry decision and back off time on - * server returned RetryInfo value. Otherwise, client uses {@link RetrySettings}. + * @deprecated RetryInfo is always on. */ - @BetaApi("RetryInfo is not currently stable and may change in the future") + @Deprecated public boolean getEnableRetryInfo() { - return enableRetryInfo; + return true; } /** Returns the builder for the settings used for calls to readRows. */ @@ -1283,8 +1252,8 @@ public EnhancedBigtableStubSettings build() { featureFlags.setMutateRowsRateLimit2(true); } - featureFlags.setRoutingCookie(this.getEnableRoutingCookie()); - featureFlags.setRetryInfo(this.getEnableRetryInfo()); + featureFlags.setRoutingCookie(true); + featureFlags.setRetryInfo(true); // client_Side_metrics_enabled feature flag is only set when a user is running with a // DefaultMetricsProvider. This may cause false negatives when a user registered the // metrics on their CustomOpenTelemetryMetricsProvider. @@ -1325,9 +1294,6 @@ public String toString() { .add("instanceId", instanceId) .add("appProfileId", appProfileId) .add("isRefreshingChannel", isRefreshingChannel) - .add("primedTableIds", primedTableIds) - .add("enableRoutingCookie", enableRoutingCookie) - .add("enableRetryInfo", enableRetryInfo) .add("readRowsSettings", readRowsSettings) .add("readRowSettings", readRowSettings) .add("sampleRowKeysSettings", sampleRowKeysSettings) diff --git a/google-cloud-bigtable/src/test/java/com/google/cloud/bigtable/data/v2/stub/CookiesHolderTest.java b/google-cloud-bigtable/src/test/java/com/google/cloud/bigtable/data/v2/stub/CookiesHolderTest.java index bf02ce447ae4..648cff4809da 100644 --- a/google-cloud-bigtable/src/test/java/com/google/cloud/bigtable/data/v2/stub/CookiesHolderTest.java +++ b/google-cloud-bigtable/src/test/java/com/google/cloud/bigtable/data/v2/stub/CookiesHolderTest.java @@ -69,7 +69,6 @@ import io.grpc.Status; import io.grpc.StatusRuntimeException; import io.grpc.stub.StreamObserver; -import java.io.IOException; import java.util.ArrayList; import java.util.Collections; import java.util.HashMap; @@ -673,58 +672,6 @@ public void testCookieSetWithBigtableClientFactory() throws Exception { } } - @Test - public void testDisableRoutingCookie() throws IOException { - // This test disables routing cookie in the client settings and ensures that none of the routing - // cookie - // is added. - settings.stubSettings().setEnableRoutingCookie(false); - try (BigtableDataClient client = BigtableDataClient.create(settings.build())) { - @SuppressWarnings("MismatchedQueryAndUpdateOfCollection") - ArrayList ignored = Lists.newArrayList(client.readRows(Query.create("fake-table"))); - assertThat(fakeService.count.get()).isEqualTo(2); - fakeService.count.set(0); - - client.mutateRow(RowMutation.create("fake-table", "key").setCell("cf", "q", "v")); - assertThat(fakeService.count.get()).isEqualTo(2); - fakeService.count.set(0); - - client.bulkMutateRows( - BulkMutation.create("fake-table") - .add(RowMutationEntry.create("key").setCell("cf", "q", "v"))); - assertThat(fakeService.count.get()).isEqualTo(2); - fakeService.count.set(0); - - client.sampleRowKeys("fake-table"); - assertThat(fakeService.count.get()).isEqualTo(2); - fakeService.count.set(0); - - client.checkAndMutateRow( - ConditionalRowMutation.create("fake-table", "key") - .then(Mutation.create().setCell("cf", "q", "v"))); - assertThat(fakeService.count.get()).isEqualTo(2); - fakeService.count.set(0); - - client.readModifyWriteRow( - ReadModifyWriteRow.create("fake-table", "key").append("cf", "q", "v")); - assertThat(fakeService.count.get()).isEqualTo(2); - fakeService.count.set(0); - - @SuppressWarnings("MismatchedQueryAndUpdateOfCollection") - ArrayList ignored2 = - Lists.newArrayList(client.generateInitialChangeStreamPartitions("fake-table")); - assertThat(fakeService.count.get()).isEqualTo(2); - fakeService.count.set(0); - - for (ChangeStreamRecord record : - client.readChangeStream(ReadChangeStreamQuery.create("fake-table"))) {} - - assertThat(fakeService.count.get()).isEqualTo(2); - - assertThat(methods).isEmpty(); - } - } - static class FakeService extends BigtableGrpc.BigtableImplBase { private volatile boolean returnCookie = true; diff --git a/google-cloud-bigtable/src/test/java/com/google/cloud/bigtable/data/v2/stub/EnhancedBigtableStubSettingsTest.java b/google-cloud-bigtable/src/test/java/com/google/cloud/bigtable/data/v2/stub/EnhancedBigtableStubSettingsTest.java index aecad0cc123a..9de631918237 100644 --- a/google-cloud-bigtable/src/test/java/com/google/cloud/bigtable/data/v2/stub/EnhancedBigtableStubSettingsTest.java +++ b/google-cloud-bigtable/src/test/java/com/google/cloud/bigtable/data/v2/stub/EnhancedBigtableStubSettingsTest.java @@ -94,8 +94,6 @@ public void settingsAreNotLostTest() { .setCredentialsProvider(credentialsProvider) .setStreamWatchdogProvider(watchdogProvider) .setStreamWatchdogCheckInterval(watchdogInterval) - .setEnableRoutingCookie(enableRoutingCookie) - .setEnableRetryInfo(enableRetryInfo) .setMetricsEndpoint(metricsEndpoint); verifyBuilder( @@ -160,8 +158,6 @@ private void verifyBuilder( assertThat(builder.getCredentialsProvider()).isEqualTo(credentialsProvider); assertThat(builder.getStreamWatchdogProvider()).isSameInstanceAs(watchdogProvider); assertThat(builder.getStreamWatchdogCheckInterval()).isEqualTo(watchdogInterval); - assertThat(builder.getEnableRoutingCookie()).isEqualTo(enableRoutingCookie); - assertThat(builder.getEnableRetryInfo()).isEqualTo(enableRetryInfo); assertThat(builder.getMetricsEndpoint()).isEqualTo(metricsEndpoint); } @@ -186,8 +182,6 @@ private void verifySettings( assertThat(settings.getCredentialsProvider()).isEqualTo(credentialsProvider); assertThat(settings.getStreamWatchdogProvider()).isSameInstanceAs(watchdogProvider); assertThat(settings.getStreamWatchdogCheckInterval()).isEqualTo(watchdogInterval); - assertThat(settings.getEnableRoutingCookie()).isEqualTo(enableRoutingCookie); - assertThat(settings.getEnableRetryInfo()).isEqualTo(enableRetryInfo); assertThat(settings.getMetricsEndpoint()).isEqualTo(metricsEndpoint); } @@ -920,81 +914,11 @@ public void isRefreshingChannelFalseValueTest() { assertThat(builder.build().toBuilder().isRefreshingChannel()).isFalse(); } - @Test - public void routingCookieIsEnabled() throws IOException { - String dummyProjectId = "my-project"; - String dummyInstanceId = "my-instance"; - CredentialsProvider credentialsProvider = Mockito.mock(CredentialsProvider.class); - Mockito.when(credentialsProvider.getCredentials()).thenReturn(new FakeCredentials()); - EnhancedBigtableStubSettings.Builder builder = - EnhancedBigtableStubSettings.newBuilder() - .setProjectId(dummyProjectId) - .setInstanceId(dummyInstanceId) - .setCredentialsProvider(credentialsProvider); - - assertThat(builder.getEnableRoutingCookie()).isTrue(); - assertThat(builder.build().getEnableRoutingCookie()).isTrue(); - assertThat(builder.build().toBuilder().getEnableRoutingCookie()).isTrue(); - } - - @Test - public void enableRetryInfoDefaultValueTest() throws IOException { - String dummyProjectId = "my-project"; - String dummyInstanceId = "my-instance"; - CredentialsProvider credentialsProvider = Mockito.mock(CredentialsProvider.class); - Mockito.when(credentialsProvider.getCredentials()).thenReturn(new FakeCredentials()); - EnhancedBigtableStubSettings.Builder builder = - EnhancedBigtableStubSettings.newBuilder() - .setProjectId(dummyProjectId) - .setInstanceId(dummyInstanceId) - .setCredentialsProvider(credentialsProvider); - assertThat(builder.getEnableRetryInfo()).isTrue(); - assertThat(builder.build().getEnableRetryInfo()).isTrue(); - assertThat(builder.build().toBuilder().getEnableRetryInfo()).isTrue(); - } - - @Test - public void routingCookieFalseValueSet() throws IOException { - String dummyProjectId = "my-project"; - String dummyInstanceId = "my-instance"; - CredentialsProvider credentialsProvider = Mockito.mock(CredentialsProvider.class); - Mockito.when(credentialsProvider.getCredentials()).thenReturn(new FakeCredentials()); - EnhancedBigtableStubSettings.Builder builder = - EnhancedBigtableStubSettings.newBuilder() - .setProjectId(dummyProjectId) - .setInstanceId(dummyInstanceId) - .setEnableRoutingCookie(false) - .setCredentialsProvider(credentialsProvider); - assertThat(builder.getEnableRoutingCookie()).isFalse(); - assertThat(builder.build().getEnableRoutingCookie()).isFalse(); - assertThat(builder.build().toBuilder().getEnableRoutingCookie()).isFalse(); - } - - @Test - public void enableRetryInfoFalseValueTest() throws IOException { - String dummyProjectId = "my-project"; - String dummyInstanceId = "my-instance"; - CredentialsProvider credentialsProvider = Mockito.mock(CredentialsProvider.class); - Mockito.when(credentialsProvider.getCredentials()).thenReturn(new FakeCredentials()); - EnhancedBigtableStubSettings.Builder builder = - EnhancedBigtableStubSettings.newBuilder() - .setProjectId(dummyProjectId) - .setInstanceId(dummyInstanceId) - .setEnableRetryInfo(false) - .setCredentialsProvider(credentialsProvider); - assertThat(builder.getEnableRetryInfo()).isFalse(); - assertThat(builder.build().getEnableRetryInfo()).isFalse(); - assertThat(builder.build().toBuilder().getEnableRetryInfo()).isFalse(); - } - static final String[] SETTINGS_LIST = { "projectId", "instanceId", "appProfileId", "isRefreshingChannel", - "primedTableIds", - "enableRoutingCookie", - "enableRetryInfo", "readRowsSettings", "readRowSettings", "sampleRowKeysSettings", @@ -1025,17 +949,12 @@ public void testToString() { .build(); checkToString(defaultSettings); - assertThat(defaultSettings.toString()).contains("primedTableIds=[]"); EnhancedBigtableStubSettings settings = - defaultSettings.toBuilder() - .setPrimedTableIds("2", "12", "85", "06") - .setEndpoint("example.com:1234") - .build(); + defaultSettings.toBuilder().setEndpoint("example.com:1234").build(); checkToString(settings); assertThat(settings.toString()).contains("endpoint=example.com:1234"); - assertThat(settings.toString()).contains("primedTableIds=[2, 12, 85, 06]"); int nonStaticFields = 0; for (Field field : EnhancedBigtableStubSettings.class.getDeclaredFields()) { diff --git a/google-cloud-bigtable/src/test/java/com/google/cloud/bigtable/data/v2/stub/EnhancedBigtableStubTest.java b/google-cloud-bigtable/src/test/java/com/google/cloud/bigtable/data/v2/stub/EnhancedBigtableStubTest.java index fbafe50f47d8..1531506a11ad 100644 --- a/google-cloud-bigtable/src/test/java/com/google/cloud/bigtable/data/v2/stub/EnhancedBigtableStubTest.java +++ b/google-cloud-bigtable/src/test/java/com/google/cloud/bigtable/data/v2/stub/EnhancedBigtableStubTest.java @@ -698,10 +698,7 @@ public void testBulkMutationFlowControllerConfigured() throws Exception { public void testCallContextPropagatedInMutationBatcher() throws IOException, InterruptedException, ExecutionException { EnhancedBigtableStubSettings settings = - defaultSettings.toBuilder() - .setRefreshingChannel(true) - .setPrimedTableIds("table1", "table2") - .build(); + defaultSettings.toBuilder().setRefreshingChannel(true).build(); try (EnhancedBigtableStub stub = EnhancedBigtableStub.create(settings)) { // clear the previous contexts @@ -728,10 +725,7 @@ public void testCallContextPropagatedInMutationBatcher() public void testCallContextPropagatedInReadBatcher() throws IOException, InterruptedException, ExecutionException { EnhancedBigtableStubSettings settings = - defaultSettings.toBuilder() - .setRefreshingChannel(true) - .setPrimedTableIds("table1", "table2") - .build(); + defaultSettings.toBuilder().setRefreshingChannel(true).build(); try (EnhancedBigtableStub stub = EnhancedBigtableStub.create(settings)) { // clear the previous contexts diff --git a/google-cloud-bigtable/src/test/java/com/google/cloud/bigtable/data/v2/stub/RetryInfoTest.java b/google-cloud-bigtable/src/test/java/com/google/cloud/bigtable/data/v2/stub/RetryInfoTest.java index ea4b46a71374..c206eb20a6dc 100644 --- a/google-cloud-bigtable/src/test/java/com/google/cloud/bigtable/data/v2/stub/RetryInfoTest.java +++ b/google-cloud-bigtable/src/test/java/com/google/cloud/bigtable/data/v2/stub/RetryInfoTest.java @@ -243,29 +243,11 @@ public void testReadRowNonRetryableErrorWithRetryInfo() { verifyRetryInfoIsUsed(() -> client.readRow("table", "row"), false); } - @Test - public void testReadRowDisableRetryInfo() throws IOException { - settings.stubSettings().setEnableRetryInfo(false); - - try (BigtableDataClient newClient = BigtableDataClient.create(settings.build())) { - verifyRetryInfoCanBeDisabled(() -> newClient.readRow("table", "row")); - } - } - @Test public void testReadRowServerNotReturningRetryInfo() { verifyNoRetryInfo(() -> client.readRow("table", "row"), true); } - @Test - public void testReadRowServerNotReturningRetryInfoClientDisabledHandling() throws IOException { - settings.stubSettings().setEnableRetryInfo(false); - - try (BigtableDataClient newClient = BigtableDataClient.create(settings.build())) { - verifyNoRetryInfo(() -> newClient.readRow("table", "row"), true); - } - } - @Test public void testReadRowsNonRetraybleErrorWithRetryInfo() { verifyRetryInfoIsUsed( @@ -276,19 +258,6 @@ public void testReadRowsNonRetraybleErrorWithRetryInfo() { false); } - @Test - public void testReadRowsDisableRetryInfo() throws IOException { - settings.stubSettings().setEnableRetryInfo(false); - - try (BigtableDataClient newClient = BigtableDataClient.create(settings.build())) { - verifyRetryInfoCanBeDisabled( - () -> { - @SuppressWarnings("MismatchedQueryAndUpdateOfCollection") - ArrayList ignored = Lists.newArrayList(newClient.readRows(Query.create("table"))); - }); - } - } - @Test public void testReadRowsServerNotReturningRetryInfo() { verifyNoRetryInfo( @@ -299,20 +268,6 @@ public void testReadRowsServerNotReturningRetryInfo() { true); } - @Test - public void testReadRowsServerNotReturningRetryInfoClientDisabledHandling() throws IOException { - settings.stubSettings().setEnableRetryInfo(false); - - try (BigtableDataClient newClient = BigtableDataClient.create(settings.build())) { - verifyNoRetryInfo( - () -> { - @SuppressWarnings("MismatchedQueryAndUpdateOfCollection") - ArrayList ignored = Lists.newArrayList(newClient.readRows(Query.create("table"))); - }, - true); - } - } - @Test public void testMutateRowsNonRetryableErrorWithRetryInfo() { verifyRetryInfoIsUsed( @@ -323,19 +278,6 @@ public void testMutateRowsNonRetryableErrorWithRetryInfo() { false); } - @Test - public void testMutateRowsDisableRetryInfo() throws IOException { - settings.stubSettings().setEnableRetryInfo(false); - - try (BigtableDataClient newClient = BigtableDataClient.create(settings.build())) { - verifyRetryInfoCanBeDisabled( - () -> - newClient.bulkMutateRows( - BulkMutation.create("fake-table") - .add(RowMutationEntry.create("row-key-1").setCell("cf", "q", "v")))); - } - } - @Test public void testMutateRowsServerNotReturningRetryInfo() { verifyNoRetryInfo( @@ -346,101 +288,28 @@ public void testMutateRowsServerNotReturningRetryInfo() { true); } - @Test - public void testMutateRowsServerNotReturningRetryInfoClientDisabledHandling() throws IOException { - settings.stubSettings().setEnableRetryInfo(false); - - try (BigtableDataClient newClient = BigtableDataClient.create(settings.build())) { - verifyNoRetryInfo( - () -> - newClient.bulkMutateRows( - BulkMutation.create("fake-table") - .add(RowMutationEntry.create("row-key-1").setCell("cf", "q", "v"))), - true); - } - } - @Test public void testMutateRowNonRetryableErrorWithRetryInfo() { verifyRetryInfoIsUsed( () -> client.mutateRow(RowMutation.create("table", "key").setCell("cf", "q", "v")), false); } - @Test - public void testMutateRowDisableRetryInfo() throws IOException { - settings.stubSettings().setEnableRetryInfo(false); - - try (BigtableDataClient newClient = BigtableDataClient.create(settings.build())) { - - verifyRetryInfoCanBeDisabled( - () -> newClient.mutateRow(RowMutation.create("table", "key").setCell("cf", "q", "v"))); - } - } - @Test public void testMutateRowServerNotReturningRetryInfo() { verifyNoRetryInfo( () -> client.mutateRow(RowMutation.create("table", "key").setCell("cf", "q", "v")), true); } - @Test - public void testMutateRowServerNotReturningRetryInfoClientDisabledHandling() throws IOException { - settings.stubSettings().setEnableRetryInfo(false); - - try (BigtableDataClient newClient = BigtableDataClient.create(settings.build())) { - verifyNoRetryInfo( - () -> newClient.mutateRow(RowMutation.create("table", "key").setCell("cf", "q", "v")), - true); - } - } - @Test public void testSampleRowKeysNonRetryableErrorWithRetryInfo() { verifyRetryInfoIsUsed(() -> client.sampleRowKeys("table"), false); } - @Test - public void testSampleRowKeysDisableRetryInfo() throws IOException { - settings.stubSettings().setEnableRetryInfo(false); - - try (BigtableDataClient newClient = BigtableDataClient.create(settings.build())) { - verifyRetryInfoCanBeDisabled(() -> newClient.sampleRowKeys("table")); - } - } - @Test public void testSampleRowKeysServerNotReturningRetryInfo() { verifyNoRetryInfo(() -> client.sampleRowKeys("table"), true); } - @Test - public void testSampleRowKeysServerNotReturningRetryInfoClientDisabledHandling() - throws IOException { - settings.stubSettings().setEnableRetryInfo(false); - - try (BigtableDataClient newClient = BigtableDataClient.create(settings.build())) { - verifyNoRetryInfo(() -> newClient.sampleRowKeys("table"), true); - } - } - - @Test - public void testCheckAndMutateDisableRetryInfo() throws IOException { - settings.stubSettings().setEnableRetryInfo(false); - - try (BigtableDataClient client = BigtableDataClient.create(settings.build())) { - ApiException exception = enqueueNonRetryableExceptionWithDelay(defaultDelay); - try { - client.checkAndMutateRow( - ConditionalRowMutation.create("table", "key") - .condition(Filters.FILTERS.value().regex("old-value")) - .then(Mutation.create().setCell("cf", "q", "v"))); - } catch (ApiException e) { - assertThat(e.getStatusCode()).isEqualTo(exception.getStatusCode()); - } - assertThat(attemptCounter.get()).isEqualTo(1); - } - } - @Test public void testCheckAndMutateServerNotReturningRetryInfo() { verifyNoRetryInfo( @@ -452,37 +321,6 @@ public void testCheckAndMutateServerNotReturningRetryInfo() { false); } - @Test - public void testCheckAndMutateServerNotReturningRetryInfoClientDisabledHandling() - throws IOException { - settings.stubSettings().setEnableRetryInfo(false); - - try (BigtableDataClient newClient = BigtableDataClient.create(settings.build())) { - verifyNoRetryInfo( - () -> - newClient.checkAndMutateRow( - ConditionalRowMutation.create("table", "key") - .condition(Filters.FILTERS.value().regex("old-value")) - .then(Mutation.create().setCell("cf", "q", "v"))), - false); - } - } - - @Test - public void testReadModifyWriteDisableRetryInfo() throws IOException { - settings.stubSettings().setEnableRetryInfo(false); - - try (BigtableDataClient client = BigtableDataClient.create(settings.build())) { - ApiException exception = enqueueNonRetryableExceptionWithDelay(defaultDelay); - try { - client.readModifyWriteRow(ReadModifyWriteRow.create("table", "row").append("cf", "q", "v")); - } catch (ApiException e) { - assertThat(e.getStatusCode()).isEqualTo(exception.getStatusCode()); - } - assertThat(attemptCounter.get()).isEqualTo(1); - } - } - @Test public void testReadModifyWriteServerNotReturningRetryInfo() { verifyNoRetryInfo( @@ -492,19 +330,6 @@ public void testReadModifyWriteServerNotReturningRetryInfo() { false); } - @Test - public void testReadModifyWriteNotReturningRetryInfoClientDisabledHandling() throws IOException { - settings.stubSettings().setEnableRetryInfo(false); - - try (BigtableDataClient newClient = BigtableDataClient.create(settings.build())) { - verifyNoRetryInfo( - () -> - newClient.readModifyWriteRow( - ReadModifyWriteRow.create("table", "row").append("cf", "q", "v")), - false); - } - } - @Test public void testReadChangeStreamNonRetryableErrorWithRetryInfo() { verifyRetryInfoIsUsed( @@ -516,21 +341,6 @@ public void testReadChangeStreamNonRetryableErrorWithRetryInfo() { false); } - @Test - public void testReadChangeStreamDisableRetryInfo() throws IOException { - settings.stubSettings().setEnableRetryInfo(false); - - try (BigtableDataClient newClient = BigtableDataClient.create(settings.build())) { - verifyRetryInfoCanBeDisabled( - () -> { - @SuppressWarnings("MismatchedQueryAndUpdateOfCollection") - ArrayList ignored = - Lists.newArrayList( - newClient.readChangeStream(ReadChangeStreamQuery.create("table"))); - }); - } - } - @Test public void testReadChangeStreamServerNotReturningRetryInfo() { verifyNoRetryInfo( @@ -542,23 +352,6 @@ public void testReadChangeStreamServerNotReturningRetryInfo() { true); } - @Test - public void testReadChangeStreamNotReturningRetryInfoClientDisabledHandling() throws IOException { - settings.stubSettings().setEnableRetryInfo(false); - - try (BigtableDataClient newClient = BigtableDataClient.create(settings.build())) { - verifyNoRetryInfo( - () -> { - @SuppressWarnings("MismatchedQueryAndUpdateOfCollection") - ArrayList ignored = - Lists.newArrayList( - newClient.readChangeStream(ReadChangeStreamQuery.create("table"))); - }, - true, - com.google.protobuf.Duration.newBuilder().setSeconds(5).setNanos(0).build()); - } - } - @Test public void testGenerateInitialChangeStreamPartitionNonRetryableError() { verifyRetryInfoIsUsed( @@ -570,20 +363,6 @@ public void testGenerateInitialChangeStreamPartitionNonRetryableError() { false); } - @Test - public void testGenerateInitialChangeStreamPartitionDisableRetryInfo() throws IOException { - settings.stubSettings().setEnableRetryInfo(false); - - try (BigtableDataClient newClient = BigtableDataClient.create(settings.build())) { - verifyRetryInfoCanBeDisabled( - () -> { - @SuppressWarnings("MismatchedQueryAndUpdateOfCollection") - ArrayList ignored = - Lists.newArrayList(newClient.generateInitialChangeStreamPartitions("table")); - }); - } - } - @Test public void testGenerateInitialChangeStreamServerNotReturningRetryInfo() { verifyNoRetryInfo( @@ -595,55 +374,17 @@ public void testGenerateInitialChangeStreamServerNotReturningRetryInfo() { true); } - @Test - public void testGenerateInitialChangeStreamServerNotReturningRetryInfoClientDisabledHandling() - throws IOException { - settings.stubSettings().setEnableRetryInfo(false); - - try (BigtableDataClient newClient = BigtableDataClient.create(settings.build())) { - verifyNoRetryInfo( - () -> { - @SuppressWarnings("MismatchedQueryAndUpdateOfCollection") - ArrayList ignored = - Lists.newArrayList(newClient.generateInitialChangeStreamPartitions("table")); - }, - true); - } - } - @Test public void testPrepareQueryNonRetryableErrorWithRetryInfo() { verifyRetryInfoIsUsed( () -> client.prepareStatement("SELECT * FROM table", new HashMap<>()), false); } - @Test - public void testPrepareQueryDisableRetryInfo() throws IOException { - settings.stubSettings().setEnableRetryInfo(false); - - try (BigtableDataClient newClient = BigtableDataClient.create(settings.build())) { - - verifyRetryInfoCanBeDisabled( - () -> newClient.prepareStatement("SELECT * FROM table", new HashMap<>())); - } - } - @Test public void testPrepareQueryServerNotReturningRetryInfo() { verifyNoRetryInfo(() -> client.prepareStatement("SELECT * FROM table", new HashMap<>()), true); } - @Test - public void testPrepareQueryServerNotReturningRetryInfoClientDisabledHandling() - throws IOException { - settings.stubSettings().setEnableRetryInfo(false); - - try (BigtableDataClient newClient = BigtableDataClient.create(settings.build())) { - verifyNoRetryInfo( - () -> newClient.prepareStatement("SELECT * FROM table", new HashMap<>()), true); - } - } - // Test the case where server returns retry info and client enables handling of retry info private void verifyRetryInfoIsUsed(Runnable runnable, boolean retryableError) { if (retryableError) {