Skip to content
This repository was archived by the owner on May 8, 2026. It is now read-only.

Commit 0448e40

Browse files
chore: remove ability to disable routing cookies & RetryInfo handling.
These are now mandatory. This simplifies the upcoming refactor Change-Id: I8c9d76d36419f0d06ce86ed658603e321bb9e41a
1 parent ff8d775 commit 0448e40

6 files changed

Lines changed: 35 additions & 477 deletions

File tree

google-cloud-bigtable/src/main/java/com/google/cloud/bigtable/data/v2/stub/BigtableClientContext.java

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -128,10 +128,7 @@ public static BigtableClientContext create(EnhancedBigtableStubSettings settings
128128
}
129129

130130
if (transportProvider != null) {
131-
// Set up cookie holder if routing cookie is enabled
132-
if (builder.getEnableRoutingCookie()) {
133-
setupCookieHolder(transportProvider);
134-
}
131+
setupCookieHolder(transportProvider);
135132

136133
ChannelPrimer channelPrimer = NoOpChannelPrimer.create();
137134

google-cloud-bigtable/src/main/java/com/google/cloud/bigtable/data/v2/stub/EnhancedBigtableStub.java

Lines changed: 16 additions & 48 deletions
Original file line numberDiff line numberDiff line change
@@ -121,7 +121,6 @@
121121
import com.google.cloud.bigtable.data.v2.stub.sql.MetadataErrorHandlingCallable;
122122
import com.google.cloud.bigtable.data.v2.stub.sql.PlanRefreshingCallable;
123123
import com.google.cloud.bigtable.data.v2.stub.sql.SqlRowMergingCallable;
124-
import com.google.cloud.bigtable.gaxx.retrying.ApiResultRetryAlgorithm;
125124
import com.google.cloud.bigtable.gaxx.retrying.RetryInfoRetryAlgorithm;
126125
import com.google.common.annotations.VisibleForTesting;
127126
import com.google.common.base.Functions;
@@ -785,12 +784,9 @@ private UnaryCallable<BulkMutation, MutateRowsAttemptResult> createMutateRowsBas
785784
ServerStreamingCallable<MutateRowsRequest, MutateRowsResponse> withAttemptTracer =
786785
new BigtableTracerStreamingCallable<>(convertException);
787786

788-
BasicResultRetryAlgorithm<MutateRowsAttemptResult> resultRetryAlgorithm;
789-
if (settings.getEnableRetryInfo()) {
790-
resultRetryAlgorithm = new RetryInfoRetryAlgorithm<>();
791-
} else {
792-
resultRetryAlgorithm = new ApiResultRetryAlgorithm<>();
793-
}
787+
BasicResultRetryAlgorithm<MutateRowsAttemptResult> resultRetryAlgorithm =
788+
new RetryInfoRetryAlgorithm<>();
789+
794790
MutateRowsPartialErrorRetryAlgorithm mutateRowsPartialErrorRetryAlgorithm =
795791
new MutateRowsPartialErrorRetryAlgorithm(resultRetryAlgorithm);
796792

@@ -810,11 +806,8 @@ private UnaryCallable<BulkMutation, MutateRowsAttemptResult> createMutateRowsBas
810806
settings.bulkMutateRowsSettings().getRetryableCodes(),
811807
retryAlgorithm);
812808

813-
UnaryCallable<MutateRowsRequest, MutateRowsAttemptResult> withCookie = baseCallable;
814-
815-
if (settings.getEnableRoutingCookie()) {
816-
withCookie = new CookiesUnaryCallable<>(baseCallable);
817-
}
809+
UnaryCallable<MutateRowsRequest, MutateRowsAttemptResult> withCookie =
810+
new CookiesUnaryCallable<>(baseCallable);
818811

819812
UnaryCallable<MutateRowsRequest, MutateRowsAttemptResult> flowControlCallable = null;
820813
if (settings.bulkMutateRowsSettings().isLatencyBasedThrottlingEnabled()) {
@@ -1319,56 +1312,31 @@ ServerStreamingCallSettings<ReqT, RespT> convertUnaryToServerStreamingSettings(
13191312

13201313
private <RequestT, ResponseT> UnaryCallable<RequestT, ResponseT> withRetries(
13211314
UnaryCallable<RequestT, ResponseT> innerCallable, UnaryCallSettings<?, ?> unaryCallSettings) {
1322-
UnaryCallable<RequestT, ResponseT> retrying;
1323-
if (settings.getEnableRetryInfo()) {
1324-
retrying =
1325-
com.google.cloud.bigtable.gaxx.retrying.Callables.retrying(
1326-
innerCallable, unaryCallSettings, bigtableClientContext.getClientContext());
1327-
} else {
1328-
retrying =
1329-
Callables.retrying(
1330-
innerCallable, unaryCallSettings, bigtableClientContext.getClientContext());
1331-
}
1332-
if (settings.getEnableRoutingCookie()) {
1333-
return new CookiesUnaryCallable<>(retrying);
1334-
}
1335-
return retrying;
1315+
UnaryCallable<RequestT, ResponseT> retrying =
1316+
com.google.cloud.bigtable.gaxx.retrying.Callables.retrying(
1317+
innerCallable, unaryCallSettings, bigtableClientContext.getClientContext());
1318+
return new CookiesUnaryCallable<>(retrying);
13361319
}
13371320

13381321
private <RequestT, ResponseT> ServerStreamingCallable<RequestT, ResponseT> withRetries(
13391322
ServerStreamingCallable<RequestT, ResponseT> innerCallable,
13401323
ServerStreamingCallSettings<RequestT, ResponseT> serverStreamingCallSettings) {
13411324

1342-
ServerStreamingCallable<RequestT, ResponseT> retrying;
1343-
if (settings.getEnableRetryInfo()) {
1344-
retrying =
1345-
com.google.cloud.bigtable.gaxx.retrying.Callables.retrying(
1346-
innerCallable, serverStreamingCallSettings, bigtableClientContext.getClientContext());
1347-
} else {
1348-
retrying =
1349-
Callables.retrying(
1350-
innerCallable, serverStreamingCallSettings, bigtableClientContext.getClientContext());
1351-
}
1352-
if (settings.getEnableRoutingCookie()) {
1353-
return new CookiesServerStreamingCallable<>(retrying);
1354-
}
1355-
return retrying;
1325+
ServerStreamingCallable<RequestT, ResponseT> retrying =
1326+
com.google.cloud.bigtable.gaxx.retrying.Callables.retrying(
1327+
innerCallable, serverStreamingCallSettings, bigtableClientContext.getClientContext());
1328+
1329+
return new CookiesServerStreamingCallable<>(retrying);
13561330
}
13571331

13581332
private <RequestT, ResponseT> ServerStreamingCallable<RequestT, ResponseT> largeRowWithRetries(
13591333
ServerStreamingCallable<RequestT, ResponseT> innerCallable,
13601334
ServerStreamingCallSettings<RequestT, ResponseT> serverStreamingCallSettings) {
13611335

1362-
// Retrying algorithm in retryingForLargeRows also takes RetryInfo into consideration, so we
1363-
// skip the check for settings.getEnableRetryInfo here
1364-
ServerStreamingCallable<RequestT, ResponseT> retrying;
1365-
retrying =
1336+
ServerStreamingCallable<RequestT, ResponseT> retrying =
13661337
com.google.cloud.bigtable.gaxx.retrying.Callables.retryingForLargeRows(
13671338
innerCallable, serverStreamingCallSettings, bigtableClientContext.getClientContext());
1368-
if (settings.getEnableRoutingCookie()) {
1369-
return new CookiesServerStreamingCallable<>(retrying);
1370-
}
1371-
return retrying;
1339+
return new CookiesServerStreamingCallable<>(retrying);
13721340
}
13731341

13741342
// </editor-fold>

google-cloud-bigtable/src/main/java/com/google/cloud/bigtable/data/v2/stub/EnhancedBigtableStubSettings.java

Lines changed: 18 additions & 38 deletions
Original file line numberDiff line numberDiff line change
@@ -256,8 +256,6 @@ public class EnhancedBigtableStubSettings extends StubSettings<EnhancedBigtableS
256256
private final String appProfileId;
257257
private final boolean isRefreshingChannel;
258258
private ImmutableList<String> primedTableIds;
259-
private final boolean enableRoutingCookie;
260-
private final boolean enableRetryInfo;
261259

262260
private final ServerStreamingCallSettings<Query, Row> readRowsSettings;
263261
private final UnaryCallSettings<Query, Row> readRowSettings;
@@ -305,8 +303,6 @@ private EnhancedBigtableStubSettings(Builder builder) {
305303
appProfileId = builder.appProfileId;
306304
isRefreshingChannel = builder.isRefreshingChannel;
307305
primedTableIds = builder.primedTableIds;
308-
enableRoutingCookie = builder.enableRoutingCookie;
309-
enableRetryInfo = builder.enableRetryInfo;
310306
metricsProvider = builder.metricsProvider;
311307
metricsEndpoint = builder.metricsEndpoint;
312308
areInternalMetricsEnabled = builder.areInternalMetricsEnabled;
@@ -384,21 +380,19 @@ public MetricsProvider getMetricsProvider() {
384380
}
385381

386382
/**
387-
* Gets if routing cookie is enabled. If true, client will retry a request with extra metadata
388-
* server sent back.
383+
* @deprecated routing cookies are always on.
389384
*/
390-
@BetaApi("Routing cookie is not currently stable and may change in the future")
385+
@Deprecated
391386
public boolean getEnableRoutingCookie() {
392-
return enableRoutingCookie;
387+
return true;
393388
}
394389

395390
/**
396-
* Gets if RetryInfo is enabled. If true, client bases retry decision and back off time on server
397-
* returned RetryInfo value. Otherwise, client uses {@link RetrySettings}.
391+
* @deprecated RetryInfo is now always on.
398392
*/
399-
@BetaApi("RetryInfo is not currently stable and may change in the future")
393+
@Deprecated
400394
public boolean getEnableRetryInfo() {
401-
return enableRetryInfo;
395+
return true;
402396
}
403397

404398
/**
@@ -747,8 +741,6 @@ public static class Builder extends StubSettings.Builder<EnhancedBigtableStubSet
747741
private boolean isRefreshingChannel;
748742
private ImmutableList<String> primedTableIds;
749743
private String jwtAudience;
750-
private boolean enableRoutingCookie;
751-
private boolean enableRetryInfo;
752744

753745
private final ServerStreamingCallSettings.Builder<Query, Row> readRowsSettings;
754746
private final UnaryCallSettings.Builder<Query, Row> readRowSettings;
@@ -787,8 +779,6 @@ private Builder() {
787779
this.isRefreshingChannel = true;
788780
primedTableIds = ImmutableList.of();
789781
setCredentialsProvider(defaultCredentialsProviderBuilder().build());
790-
this.enableRoutingCookie = true;
791-
this.enableRetryInfo = true;
792782
metricsProvider = DefaultMetricsProvider.INSTANCE;
793783
this.areInternalMetricsEnabled = true;
794784
this.jwtAudience = DEFAULT_DATA_JWT_AUDIENCE;
@@ -925,8 +915,6 @@ private Builder(EnhancedBigtableStubSettings settings) {
925915
appProfileId = settings.appProfileId;
926916
isRefreshingChannel = settings.isRefreshingChannel;
927917
primedTableIds = settings.primedTableIds;
928-
enableRoutingCookie = settings.enableRoutingCookie;
929-
enableRetryInfo = settings.enableRetryInfo;
930918
metricsProvider = settings.metricsProvider;
931919
metricsEndpoint = settings.getMetricsEndpoint();
932920
areInternalMetricsEnabled = settings.areInternalMetricsEnabled;
@@ -1159,41 +1147,35 @@ String getJwtAudience() {
11591147
}
11601148

11611149
/**
1162-
* Sets if routing cookie is enabled. If true, client will retry a request with extra metadata
1163-
* server sent back.
1150+
* @deprecated this now a no-op as routing cookies are always on.
11641151
*/
1165-
@BetaApi("Routing cookie is not currently stable and may change in the future")
1152+
@Deprecated
11661153
public Builder setEnableRoutingCookie(boolean enableRoutingCookie) {
1167-
this.enableRoutingCookie = enableRoutingCookie;
11681154
return this;
11691155
}
11701156

11711157
/**
1172-
* Gets if routing cookie is enabled. If true, client will retry a request with extra metadata
1173-
* server sent back.
1158+
* @deprecated routing cookies are always on.
11741159
*/
1175-
@BetaApi("Routing cookie is not currently stable and may change in the future")
1160+
@Deprecated
11761161
public boolean getEnableRoutingCookie() {
1177-
return enableRoutingCookie;
1162+
return true;
11781163
}
11791164

11801165
/**
1181-
* Sets if RetryInfo is enabled. If true, client bases retry decision and back off time on
1182-
* server returned RetryInfo value. Otherwise, client uses {@link RetrySettings}.
1166+
* @deprecated This is a no-op, RetryInfo is always used now.
11831167
*/
1184-
@BetaApi("RetryInfo is not currently stable and may change in the future")
1168+
@Deprecated
11851169
public Builder setEnableRetryInfo(boolean enableRetryInfo) {
1186-
this.enableRetryInfo = enableRetryInfo;
11871170
return this;
11881171
}
11891172

11901173
/**
1191-
* Gets if RetryInfo is enabled. If true, client bases retry decision and back off time on
1192-
* server returned RetryInfo value. Otherwise, client uses {@link RetrySettings}.
1174+
* @deprecated RetryInfo is always on.
11931175
*/
1194-
@BetaApi("RetryInfo is not currently stable and may change in the future")
1176+
@Deprecated
11951177
public boolean getEnableRetryInfo() {
1196-
return enableRetryInfo;
1178+
return true;
11971179
}
11981180

11991181
/** Returns the builder for the settings used for calls to readRows. */
@@ -1283,8 +1265,8 @@ public EnhancedBigtableStubSettings build() {
12831265
featureFlags.setMutateRowsRateLimit2(true);
12841266
}
12851267

1286-
featureFlags.setRoutingCookie(this.getEnableRoutingCookie());
1287-
featureFlags.setRetryInfo(this.getEnableRetryInfo());
1268+
featureFlags.setRoutingCookie(true);
1269+
featureFlags.setRetryInfo(true);
12881270
// client_Side_metrics_enabled feature flag is only set when a user is running with a
12891271
// DefaultMetricsProvider. This may cause false negatives when a user registered the
12901272
// metrics on their CustomOpenTelemetryMetricsProvider.
@@ -1326,8 +1308,6 @@ public String toString() {
13261308
.add("appProfileId", appProfileId)
13271309
.add("isRefreshingChannel", isRefreshingChannel)
13281310
.add("primedTableIds", primedTableIds)
1329-
.add("enableRoutingCookie", enableRoutingCookie)
1330-
.add("enableRetryInfo", enableRetryInfo)
13311311
.add("readRowsSettings", readRowsSettings)
13321312
.add("readRowSettings", readRowSettings)
13331313
.add("sampleRowKeysSettings", sampleRowKeysSettings)

google-cloud-bigtable/src/test/java/com/google/cloud/bigtable/data/v2/stub/CookiesHolderTest.java

Lines changed: 0 additions & 53 deletions
Original file line numberDiff line numberDiff line change
@@ -69,7 +69,6 @@
6969
import io.grpc.Status;
7070
import io.grpc.StatusRuntimeException;
7171
import io.grpc.stub.StreamObserver;
72-
import java.io.IOException;
7372
import java.util.ArrayList;
7473
import java.util.Collections;
7574
import java.util.HashMap;
@@ -673,58 +672,6 @@ public void testCookieSetWithBigtableClientFactory() throws Exception {
673672
}
674673
}
675674

676-
@Test
677-
public void testDisableRoutingCookie() throws IOException {
678-
// This test disables routing cookie in the client settings and ensures that none of the routing
679-
// cookie
680-
// is added.
681-
settings.stubSettings().setEnableRoutingCookie(false);
682-
try (BigtableDataClient client = BigtableDataClient.create(settings.build())) {
683-
@SuppressWarnings("MismatchedQueryAndUpdateOfCollection")
684-
ArrayList<Row> ignored = Lists.newArrayList(client.readRows(Query.create("fake-table")));
685-
assertThat(fakeService.count.get()).isEqualTo(2);
686-
fakeService.count.set(0);
687-
688-
client.mutateRow(RowMutation.create("fake-table", "key").setCell("cf", "q", "v"));
689-
assertThat(fakeService.count.get()).isEqualTo(2);
690-
fakeService.count.set(0);
691-
692-
client.bulkMutateRows(
693-
BulkMutation.create("fake-table")
694-
.add(RowMutationEntry.create("key").setCell("cf", "q", "v")));
695-
assertThat(fakeService.count.get()).isEqualTo(2);
696-
fakeService.count.set(0);
697-
698-
client.sampleRowKeys("fake-table");
699-
assertThat(fakeService.count.get()).isEqualTo(2);
700-
fakeService.count.set(0);
701-
702-
client.checkAndMutateRow(
703-
ConditionalRowMutation.create("fake-table", "key")
704-
.then(Mutation.create().setCell("cf", "q", "v")));
705-
assertThat(fakeService.count.get()).isEqualTo(2);
706-
fakeService.count.set(0);
707-
708-
client.readModifyWriteRow(
709-
ReadModifyWriteRow.create("fake-table", "key").append("cf", "q", "v"));
710-
assertThat(fakeService.count.get()).isEqualTo(2);
711-
fakeService.count.set(0);
712-
713-
@SuppressWarnings("MismatchedQueryAndUpdateOfCollection")
714-
ArrayList<Range.ByteStringRange> ignored2 =
715-
Lists.newArrayList(client.generateInitialChangeStreamPartitions("fake-table"));
716-
assertThat(fakeService.count.get()).isEqualTo(2);
717-
fakeService.count.set(0);
718-
719-
for (ChangeStreamRecord record :
720-
client.readChangeStream(ReadChangeStreamQuery.create("fake-table"))) {}
721-
722-
assertThat(fakeService.count.get()).isEqualTo(2);
723-
724-
assertThat(methods).isEmpty();
725-
}
726-
}
727-
728675
static class FakeService extends BigtableGrpc.BigtableImplBase {
729676

730677
private volatile boolean returnCookie = true;

0 commit comments

Comments
 (0)