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

Commit c8ab419

Browse files
chore: remove ability to disable routing cookies & RetryInfo handling + cleanups (#2795)
* chore: remove ability to disable routing cookies & RetryInfo handling. These are now mandatory. This simplifies the upcoming refactor Change-Id: I8c9d76d36419f0d06ce86ed658603e321bb9e41a * a bit more clean up - remove prime table ids - remove unused logger - fix random warnings in stub settings Change-Id: I92be83ae85710c3c2c3502d572db18b48cc1f483 * upgrade protoc for test protos Change-Id: I53c2d54fd4680993ea130c8df65f2a97181a5e16 * match test protoc & grpc plugin versions to gapic Change-Id: I8597dddd20d836afdfec6a9eee94310073ef5edf
1 parent ff8d775 commit c8ab419

9 files changed

Lines changed: 44 additions & 513 deletions

File tree

google-cloud-bigtable/pom.xml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -45,8 +45,8 @@
4545
<bigtable.cfe-data-batch-endpoint>batch-bigtable.googleapis.com:443</bigtable.cfe-data-batch-endpoint>
4646

4747
<!-- These are needed to compile the protobuf used by Changestream merging acceptance test. -->
48-
<test-protoc-grpc.version>1.65.0</test-protoc-grpc.version>
49-
<test-protoc.version>3.25.5</test-protoc.version>
48+
<test-protoc-grpc.version>1.76.3</test-protoc-grpc.version>
49+
<test-protoc.version>4.33.2</test-protoc.version>
5050
</properties>
5151

5252
<dependencyManagement>

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

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -450,7 +450,6 @@ public boolean isRefreshingChannel() {
450450
*/
451451
@Deprecated
452452
public Builder setPrimingTableIds(String... tableIds) {
453-
stubSettings.setPrimedTableIds(tableIds);
454453
return this;
455454
}
456455

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: 22 additions & 56 deletions
Original file line numberDiff line numberDiff line change
@@ -65,7 +65,6 @@
6565
import java.util.List;
6666
import java.util.Map;
6767
import java.util.Set;
68-
import java.util.logging.Logger;
6968
import javax.annotation.Nonnull;
7069
import javax.annotation.Nullable;
7170
import org.threeten.bp.Duration;
@@ -99,9 +98,6 @@
9998
* }</pre>
10099
*/
101100
public class EnhancedBigtableStubSettings extends StubSettings<EnhancedBigtableStubSettings> {
102-
private static final Logger logger =
103-
Logger.getLogger(EnhancedBigtableStubSettings.class.getName());
104-
105101
// The largest message that can be received is a 256 MB ReadRowsResponse.
106102
private static final int MAX_MESSAGE_SIZE = 256 * 1024 * 1024;
107103
private static final String SERVER_DEFAULT_APP_PROFILE_ID = "";
@@ -145,7 +141,6 @@ public class EnhancedBigtableStubSettings extends StubSettings<EnhancedBigtableS
145141
.setRetryDelayMultiplier(2.0)
146142
.setMaxRetryDelay(Duration.ofMinutes(1))
147143
.setMaxAttempts(10)
148-
.setJittered(true)
149144
.setInitialRpcTimeout(Duration.ofMinutes(30))
150145
.setRpcTimeoutMultiplier(2.0)
151146
.setMaxRpcTimeout(Duration.ofMinutes(30))
@@ -172,7 +167,6 @@ public class EnhancedBigtableStubSettings extends StubSettings<EnhancedBigtableS
172167
.setRetryDelayMultiplier(2.0)
173168
.setMaxRetryDelay(Duration.ofMinutes(1))
174169
.setMaxAttempts(10)
175-
.setJittered(true)
176170
.setInitialRpcTimeout(Duration.ofMinutes(1))
177171
.setRpcTimeoutMultiplier(2.0)
178172
.setMaxRpcTimeout(Duration.ofMinutes(10))
@@ -211,7 +205,6 @@ public class EnhancedBigtableStubSettings extends StubSettings<EnhancedBigtableS
211205
.setRetryDelayMultiplier(2.0)
212206
.setMaxRetryDelay(Duration.ofMinutes(1))
213207
.setMaxAttempts(10)
214-
.setJittered(true)
215208
.setInitialRpcTimeout(Duration.ofMinutes(30))
216209
.setRpcTimeoutMultiplier(1.0)
217210
.setMaxRpcTimeout(Duration.ofMinutes(30))
@@ -255,9 +248,6 @@ public class EnhancedBigtableStubSettings extends StubSettings<EnhancedBigtableS
255248
private final String instanceId;
256249
private final String appProfileId;
257250
private final boolean isRefreshingChannel;
258-
private ImmutableList<String> primedTableIds;
259-
private final boolean enableRoutingCookie;
260-
private final boolean enableRetryInfo;
261251

262252
private final ServerStreamingCallSettings<Query, Row> readRowsSettings;
263253
private final UnaryCallSettings<Query, Row> readRowSettings;
@@ -279,7 +269,7 @@ public class EnhancedBigtableStubSettings extends StubSettings<EnhancedBigtableS
279269

280270
private final MetricsProvider metricsProvider;
281271
@Nullable private final String metricsEndpoint;
282-
@Nonnull private final boolean areInternalMetricsEnabled;
272+
private final boolean areInternalMetricsEnabled;
283273
private final String jwtAudience;
284274

285275
private EnhancedBigtableStubSettings(Builder builder) {
@@ -304,9 +294,6 @@ private EnhancedBigtableStubSettings(Builder builder) {
304294
instanceId = builder.instanceId;
305295
appProfileId = builder.appProfileId;
306296
isRefreshingChannel = builder.isRefreshingChannel;
307-
primedTableIds = builder.primedTableIds;
308-
enableRoutingCookie = builder.enableRoutingCookie;
309-
enableRetryInfo = builder.enableRetryInfo;
310297
metricsProvider = builder.metricsProvider;
311298
metricsEndpoint = builder.metricsEndpoint;
312299
areInternalMetricsEnabled = builder.areInternalMetricsEnabled;
@@ -366,7 +353,7 @@ public boolean isRefreshingChannel() {
366353
*/
367354
@Deprecated
368355
public List<String> getPrimedTableIds() {
369-
return primedTableIds;
356+
return ImmutableList.of();
370357
}
371358

372359
/**
@@ -384,21 +371,19 @@ public MetricsProvider getMetricsProvider() {
384371
}
385372

386373
/**
387-
* Gets if routing cookie is enabled. If true, client will retry a request with extra metadata
388-
* server sent back.
374+
* @deprecated routing cookies are always on.
389375
*/
390-
@BetaApi("Routing cookie is not currently stable and may change in the future")
376+
@Deprecated
391377
public boolean getEnableRoutingCookie() {
392-
return enableRoutingCookie;
378+
return true;
393379
}
394380

395381
/**
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}.
382+
* @deprecated RetryInfo is now always on.
398383
*/
399-
@BetaApi("RetryInfo is not currently stable and may change in the future")
384+
@Deprecated
400385
public boolean getEnableRetryInfo() {
401-
return enableRetryInfo;
386+
return true;
402387
}
403388

404389
/**
@@ -745,10 +730,7 @@ public static class Builder extends StubSettings.Builder<EnhancedBigtableStubSet
745730
private String instanceId;
746731
private String appProfileId;
747732
private boolean isRefreshingChannel;
748-
private ImmutableList<String> primedTableIds;
749733
private String jwtAudience;
750-
private boolean enableRoutingCookie;
751-
private boolean enableRetryInfo;
752734

753735
private final ServerStreamingCallSettings.Builder<Query, Row> readRowsSettings;
754736
private final UnaryCallSettings.Builder<Query, Row> readRowSettings;
@@ -768,7 +750,7 @@ public static class Builder extends StubSettings.Builder<EnhancedBigtableStubSet
768750
private final UnaryCallSettings.Builder<PrepareQueryRequest, PrepareResponse>
769751
prepareQuerySettings;
770752

771-
private FeatureFlags.Builder featureFlags;
753+
private final FeatureFlags.Builder featureFlags;
772754

773755
private MetricsProvider metricsProvider;
774756
@Nullable private String metricsEndpoint;
@@ -785,10 +767,7 @@ public static class Builder extends StubSettings.Builder<EnhancedBigtableStubSet
785767
private Builder() {
786768
this.appProfileId = SERVER_DEFAULT_APP_PROFILE_ID;
787769
this.isRefreshingChannel = true;
788-
primedTableIds = ImmutableList.of();
789770
setCredentialsProvider(defaultCredentialsProviderBuilder().build());
790-
this.enableRoutingCookie = true;
791-
this.enableRetryInfo = true;
792771
metricsProvider = DefaultMetricsProvider.INSTANCE;
793772
this.areInternalMetricsEnabled = true;
794773
this.jwtAudience = DEFAULT_DATA_JWT_AUDIENCE;
@@ -924,9 +903,6 @@ private Builder(EnhancedBigtableStubSettings settings) {
924903
instanceId = settings.instanceId;
925904
appProfileId = settings.appProfileId;
926905
isRefreshingChannel = settings.isRefreshingChannel;
927-
primedTableIds = settings.primedTableIds;
928-
enableRoutingCookie = settings.enableRoutingCookie;
929-
enableRetryInfo = settings.enableRetryInfo;
930906
metricsProvider = settings.metricsProvider;
931907
metricsEndpoint = settings.getMetricsEndpoint();
932908
areInternalMetricsEnabled = settings.areInternalMetricsEnabled;
@@ -1049,7 +1025,6 @@ public Builder setRefreshingChannel(boolean isRefreshingChannel) {
10491025
*/
10501026
@Deprecated
10511027
public Builder setPrimedTableIds(String... tableIds) {
1052-
this.primedTableIds = ImmutableList.copyOf(tableIds);
10531028
return this;
10541029
}
10551030

@@ -1069,7 +1044,7 @@ public boolean isRefreshingChannel() {
10691044
*/
10701045
@Deprecated
10711046
public List<String> getPrimedTableIds() {
1072-
return primedTableIds;
1047+
return ImmutableList.of();
10731048
}
10741049

10751050
/**
@@ -1159,41 +1134,35 @@ String getJwtAudience() {
11591134
}
11601135

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

11711144
/**
1172-
* Gets if routing cookie is enabled. If true, client will retry a request with extra metadata
1173-
* server sent back.
1145+
* @deprecated routing cookies are always on.
11741146
*/
1175-
@BetaApi("Routing cookie is not currently stable and may change in the future")
1147+
@Deprecated
11761148
public boolean getEnableRoutingCookie() {
1177-
return enableRoutingCookie;
1149+
return true;
11781150
}
11791151

11801152
/**
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}.
1153+
* @deprecated This is a no-op, RetryInfo is always used now.
11831154
*/
1184-
@BetaApi("RetryInfo is not currently stable and may change in the future")
1155+
@Deprecated
11851156
public Builder setEnableRetryInfo(boolean enableRetryInfo) {
1186-
this.enableRetryInfo = enableRetryInfo;
11871157
return this;
11881158
}
11891159

11901160
/**
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}.
1161+
* @deprecated RetryInfo is always on.
11931162
*/
1194-
@BetaApi("RetryInfo is not currently stable and may change in the future")
1163+
@Deprecated
11951164
public boolean getEnableRetryInfo() {
1196-
return enableRetryInfo;
1165+
return true;
11971166
}
11981167

11991168
/** Returns the builder for the settings used for calls to readRows. */
@@ -1283,8 +1252,8 @@ public EnhancedBigtableStubSettings build() {
12831252
featureFlags.setMutateRowsRateLimit2(true);
12841253
}
12851254

1286-
featureFlags.setRoutingCookie(this.getEnableRoutingCookie());
1287-
featureFlags.setRetryInfo(this.getEnableRetryInfo());
1255+
featureFlags.setRoutingCookie(true);
1256+
featureFlags.setRetryInfo(true);
12881257
// client_Side_metrics_enabled feature flag is only set when a user is running with a
12891258
// DefaultMetricsProvider. This may cause false negatives when a user registered the
12901259
// metrics on their CustomOpenTelemetryMetricsProvider.
@@ -1325,9 +1294,6 @@ public String toString() {
13251294
.add("instanceId", instanceId)
13261295
.add("appProfileId", appProfileId)
13271296
.add("isRefreshingChannel", isRefreshingChannel)
1328-
.add("primedTableIds", primedTableIds)
1329-
.add("enableRoutingCookie", enableRoutingCookie)
1330-
.add("enableRetryInfo", enableRetryInfo)
13311297
.add("readRowsSettings", readRowsSettings)
13321298
.add("readRowSettings", readRowSettings)
13331299
.add("sampleRowKeysSettings", sampleRowKeysSettings)

0 commit comments

Comments
 (0)