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

Commit 42023ef

Browse files
committed
remove the setting and make a new callable
Change-Id: I0122fa68ec5de3d20fff7a42fec898e0c3c6597b
1 parent 83407d9 commit 42023ef

4 files changed

Lines changed: 36 additions & 60 deletions

File tree

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

Lines changed: 21 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -151,6 +151,7 @@ public class EnhancedBigtableStub implements AutoCloseable {
151151
private final ServerStreamingCallable<Query, Row> readRowsCallable;
152152

153153
private final ServerStreamingCallable<Query, Row> skipLargeRowsCallable;
154+
private final ServerStreamingCallable<Query, Row> deferLargeRowsCallable;
154155

155156
private final UnaryCallable<Query, Row> readRowCallable;
156157
private final UnaryCallable<Query, List<Row>> bulkReadRowsCallable;
@@ -172,34 +173,24 @@ public class EnhancedBigtableStub implements AutoCloseable {
172173
private final ExecuteQueryCallable executeQueryCallable;
173174
private final UnaryCallable<PrepareQueryRequest, PrepareResponse> prepareQueryCallable;
174175

175-
private final boolean failOnLargeRows;
176-
177176
public static EnhancedBigtableStub create(EnhancedBigtableStubSettings settings)
178177
throws IOException {
179178
BigtableClientContext bigtableClientContext = BigtableClientContext.create(settings);
180-
return new EnhancedBigtableStub(
181-
settings.getPerOpSettings(), bigtableClientContext, settings.isFailOnLargeRows());
179+
return new EnhancedBigtableStub(settings.getPerOpSettings(), bigtableClientContext);
182180
}
183181

184182
public EnhancedBigtableStub(
185183
ClientOperationSettings perOpSettings, BigtableClientContext clientContext) {
186-
this(perOpSettings, clientContext, false);
187-
}
188-
189-
public EnhancedBigtableStub(
190-
ClientOperationSettings perOpSettings,
191-
BigtableClientContext clientContext,
192-
boolean failOnLargeRows) {
193184
this.perOpSettings = perOpSettings;
194185
this.bigtableClientContext = clientContext;
195186
this.requestContext = RequestContext.create(clientContext.getClientInfo());
196187
this.bulkMutationFlowController =
197188
new FlowController(perOpSettings.bulkMutateRowsSettings.getDynamicFlowControlSettings());
198189
this.bulkMutationDynamicFlowControlStats = new DynamicFlowControlStats();
199-
this.failOnLargeRows = failOnLargeRows;
200190

201191
readRowsCallable = createReadRowsCallable(new DefaultRowAdapter());
202192
skipLargeRowsCallable = createSkipLargeRowsCallable(new DefaultRowAdapter());
193+
deferLargeRowsCallable = createDeferLargeRowsCallable(new DefaultRowAdapter());
203194
readRowCallable = createReadRowCallable(new DefaultRowAdapter());
204195
bulkReadRowsCallable = createBulkReadRowsCallable(new DefaultRowAdapter());
205196
sampleRowKeysCallable = createSampleRowKeysCallable();
@@ -420,6 +411,16 @@ private <ReqT, RowT> ServerStreamingCallable<ReadRowsRequest, RowT> createReadRo
420411
*/
421412
public <ReqT, RowT> ServerStreamingCallable<Query, RowT> createSkipLargeRowsCallable(
422413
RowAdapter<RowT> rowAdapter) {
414+
return createLargeRowsCallable(rowAdapter, false);
415+
}
416+
417+
public <ReqT, RowT> ServerStreamingCallable<Query, RowT> createDeferLargeRowsCallable(
418+
RowAdapter<RowT> rowAdapter) {
419+
return createLargeRowsCallable(rowAdapter, true);
420+
}
421+
422+
private <ReqT, RowT> ServerStreamingCallable<Query, RowT> createLargeRowsCallable(
423+
RowAdapter<RowT> rowAdapter, boolean failOnLargeRows) {
423424

424425
ServerStreamingCallSettings<ReqT, Row> readRowsSettings =
425426
(ServerStreamingCallSettings<ReqT, Row>) perOpSettings.readRowsSettings;
@@ -1251,6 +1252,14 @@ public ServerStreamingCallable<Query, Row> skipLargeRowsCallable() {
12511252
return skipLargeRowsCallable;
12521253
}
12531254

1255+
/**
1256+
* Returns a streaming read rows callable that defers large rows and throws an exception at the
1257+
* end
1258+
*/
1259+
public ServerStreamingCallable<Query, Row> deferLargeRowsCallable() {
1260+
return deferLargeRowsCallable;
1261+
}
1262+
12541263
/** Return a point read callable */
12551264
public UnaryCallable<Query, Row> readRowCallable() {
12561265
return readRowCallable;

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

Lines changed: 0 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -148,7 +148,6 @@ public class EnhancedBigtableStubSettings extends StubSettings<EnhancedBigtableS
148148
@Nullable private final String metricsEndpoint;
149149
private final boolean areInternalMetricsEnabled;
150150
private final String jwtAudience;
151-
private final boolean failOnLargeRows;
152151

153152
@InternalApi
154153
public enum DirectPathConfig {
@@ -173,7 +172,6 @@ private EnhancedBigtableStubSettings(Builder builder) {
173172
metricsEndpoint = builder.metricsEndpoint;
174173
areInternalMetricsEnabled = builder.areInternalMetricsEnabled;
175174
jwtAudience = builder.jwtAudience;
176-
failOnLargeRows = builder.failOnLargeRows;
177175

178176
this.sessionsEnabled = builder.sessionsEnabled;
179177

@@ -268,10 +266,6 @@ public boolean areInternalMetricsEnabled() {
268266
return areInternalMetricsEnabled;
269267
}
270268

271-
public boolean isFailOnLargeRows() {
272-
return failOnLargeRows;
273-
}
274-
275269
@InternalApi
276270
public ClientOperationSettings getPerOpSettings() {
277271
return perOpSettings;
@@ -617,7 +611,6 @@ public static class Builder extends StubSettings.Builder<EnhancedBigtableStubSet
617611
private boolean isRefreshingChannel;
618612
private String jwtAudience;
619613
private boolean sessionsEnabled = true;
620-
private boolean failOnLargeRows;
621614

622615
private final ClientOperationSettings.Builder perOpSettings;
623616

@@ -646,7 +639,6 @@ private Builder() {
646639
this.areInternalMetricsEnabled = true;
647640
this.jwtAudience = DEFAULT_DATA_JWT_AUDIENCE;
648641
this.sessionsEnabled = !SESSIONS_DISABLE_ENV_VAR;
649-
this.failOnLargeRows = false;
650642

651643
// Defaults provider
652644
BigtableStubSettings.Builder baseDefaults = BigtableStubSettings.newBuilder();
@@ -683,7 +675,6 @@ private Builder(EnhancedBigtableStubSettings settings) {
683675
jwtAudience = settings.jwtAudience;
684676
this.directPathConfig = settings.getDirectPathConfig();
685677
sessionsEnabled = settings.sessionsEnabled;
686-
failOnLargeRows = settings.failOnLargeRows;
687678

688679
this.perOpSettings = new ClientOperationSettings.Builder(settings.perOpSettings);
689680

@@ -927,15 +918,6 @@ public boolean getEnableRetryInfo() {
927918
return true;
928919
}
929920

930-
public Builder setFailOnLargeRows(boolean failOnLargeRows) {
931-
this.failOnLargeRows = failOnLargeRows;
932-
return this;
933-
}
934-
935-
public boolean isFailOnLargeRows() {
936-
return failOnLargeRows;
937-
}
938-
939921
/** Returns the builder for the settings used for calls to readRows. */
940922
public ServerStreamingCallSettings.Builder<Query, Row> readRowsSettings() {
941923
return perOpSettings.readRowsSettings;
@@ -1073,7 +1055,6 @@ public String toString() {
10731055
.add("jwtAudience", jwtAudience)
10741056
.add("directPathConfig", getDirectPathConfig().toString())
10751057
.add("sessionsEnabled", sessionsEnabled)
1076-
.add("failOnLargeRows", failOnLargeRows)
10771058
.add("parent", super.toString())
10781059
.toString();
10791060
}

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

Lines changed: 6 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -82,7 +82,6 @@ public void settingsAreNotLostTest() {
8282
WatchdogProvider watchdogProvider = Mockito.mock(WatchdogProvider.class);
8383
Duration watchdogInterval = Duration.ofSeconds(12);
8484
String metricsEndpoint = "test-endpoint:443";
85-
boolean failOnLargeRows = true;
8685

8786
EnhancedBigtableStubSettings.Builder builder =
8887
EnhancedBigtableStubSettings.newBuilder()
@@ -94,8 +93,7 @@ public void settingsAreNotLostTest() {
9493
.setCredentialsProvider(credentialsProvider)
9594
.setStreamWatchdogProvider(watchdogProvider)
9695
.setStreamWatchdogCheckInterval(watchdogInterval)
97-
.setMetricsEndpoint(metricsEndpoint)
98-
.setFailOnLargeRows(failOnLargeRows);
96+
.setMetricsEndpoint(metricsEndpoint);
9997

10098
verifyBuilder(
10199
builder,
@@ -107,8 +105,7 @@ public void settingsAreNotLostTest() {
107105
credentialsProvider,
108106
watchdogProvider,
109107
watchdogInterval,
110-
metricsEndpoint,
111-
failOnLargeRows);
108+
metricsEndpoint);
112109
verifySettings(
113110
builder.build(),
114111
projectId,
@@ -119,8 +116,7 @@ public void settingsAreNotLostTest() {
119116
credentialsProvider,
120117
watchdogProvider,
121118
watchdogInterval,
122-
metricsEndpoint,
123-
failOnLargeRows);
119+
metricsEndpoint);
124120
verifyBuilder(
125121
builder.build().toBuilder(),
126122
projectId,
@@ -131,8 +127,7 @@ public void settingsAreNotLostTest() {
131127
credentialsProvider,
132128
watchdogProvider,
133129
watchdogInterval,
134-
metricsEndpoint,
135-
failOnLargeRows);
130+
metricsEndpoint);
136131
}
137132

138133
private void verifyBuilder(
@@ -145,8 +140,7 @@ private void verifyBuilder(
145140
CredentialsProvider credentialsProvider,
146141
WatchdogProvider watchdogProvider,
147142
Duration watchdogInterval,
148-
String metricsEndpoint,
149-
boolean failOnLargeRows) {
143+
String metricsEndpoint) {
150144
assertThat(builder.getProjectId()).isEqualTo(projectId);
151145
assertThat(builder.getInstanceId()).isEqualTo(instanceId);
152146
assertThat(builder.getAppProfileId()).isEqualTo(appProfileId);
@@ -156,7 +150,6 @@ private void verifyBuilder(
156150
assertThat(builder.getStreamWatchdogProvider()).isSameInstanceAs(watchdogProvider);
157151
assertThat(builder.getStreamWatchdogCheckInterval()).isEqualTo(watchdogInterval);
158152
assertThat(builder.getMetricsEndpoint()).isEqualTo(metricsEndpoint);
159-
assertThat(builder.isFailOnLargeRows()).isEqualTo(failOnLargeRows);
160153
}
161154

162155
private void verifySettings(
@@ -169,8 +162,7 @@ private void verifySettings(
169162
CredentialsProvider credentialsProvider,
170163
WatchdogProvider watchdogProvider,
171164
Duration watchdogInterval,
172-
String metricsEndpoint,
173-
boolean failOnLargeRows) {
165+
String metricsEndpoint) {
174166
assertThat(settings.getProjectId()).isEqualTo(projectId);
175167
assertThat(settings.getInstanceId()).isEqualTo(instanceId);
176168
assertThat(settings.getAppProfileId()).isEqualTo(appProfileId);
@@ -180,7 +172,6 @@ private void verifySettings(
180172
assertThat(settings.getStreamWatchdogProvider()).isSameInstanceAs(watchdogProvider);
181173
assertThat(settings.getStreamWatchdogCheckInterval()).isEqualTo(watchdogInterval);
182174
assertThat(settings.getMetricsEndpoint()).isEqualTo(metricsEndpoint);
183-
assertThat(settings.isFailOnLargeRows()).isEqualTo(failOnLargeRows);
184175
}
185176

186177
@Test
@@ -916,7 +907,6 @@ public void isRefreshingChannelFalseValueTest() {
916907
"jwtAudience",
917908
"directPathConfig",
918909
"sessionsEnabled",
919-
"failOnLargeRows",
920910
};
921911

922912
@Test

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

Lines changed: 9 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,7 @@
3939
import com.google.cloud.bigtable.data.v2.models.Range.ByteStringRange;
4040
import com.google.cloud.bigtable.data.v2.models.Row;
4141
import com.google.cloud.bigtable.data.v2.models.TableId;
42+
import com.google.cloud.bigtable.data.v2.stub.EnhancedBigtableStub;
4243
import com.google.cloud.bigtable.data.v2.stub.metrics.NoopMetricsProvider;
4344
import com.google.common.collect.ImmutableList;
4445
import com.google.common.collect.Lists;
@@ -851,10 +852,9 @@ public void readRowsFailsAtEndIfLargeRowsEncountered() throws Exception {
851852
.stubSettings()
852853
.setTransportChannelProvider(
853854
FixedTransportChannelProvider.create(
854-
GrpcTransportChannel.create(serverRule.getChannel())))
855-
.setFailOnLargeRows(true);
855+
GrpcTransportChannel.create(serverRule.getChannel())));
856856

857-
BigtableDataClient failureClient = BigtableDataClient.create(settingsBuilder.build());
857+
EnhancedBigtableStub stub = EnhancedBigtableStub.create(settingsBuilder.stubSettings().build());
858858

859859
service.expectations.add(
860860
RpcExpectation.create()
@@ -873,7 +873,7 @@ public void readRowsFailsAtEndIfLargeRowsEncountered() throws Exception {
873873

874874
try {
875875
ServerStream<Row> actualRows =
876-
failureClient.skipLargeRowsCallable().call(Query.create(TABLE_ID).range("r1", "r5"));
876+
stub.deferLargeRowsCallable().call(Query.create(TABLE_ID).range("r1", "r5"));
877877
for (Row row : actualRows) {
878878
// consume
879879
}
@@ -886,7 +886,7 @@ public void readRowsFailsAtEndIfLargeRowsEncountered() throws Exception {
886886
.isEqualTo(com.google.api.gax.rpc.StatusCode.Code.FAILED_PRECONDITION.name());
887887
assertThat(lre.getLargeRowKeys()).containsExactly(ByteString.copyFromUtf8("r2"));
888888
} finally {
889-
failureClient.close();
889+
stub.close();
890890
}
891891
}
892892

@@ -906,10 +906,9 @@ public void readRowsAppendsLargeRowsToMidStreamError() throws Exception {
906906
.stubSettings()
907907
.setTransportChannelProvider(
908908
FixedTransportChannelProvider.create(
909-
GrpcTransportChannel.create(serverRule.getChannel())))
910-
.setFailOnLargeRows(true);
909+
GrpcTransportChannel.create(serverRule.getChannel())));
911910

912-
BigtableDataClient failureClient = BigtableDataClient.create(settingsBuilder.build());
911+
EnhancedBigtableStub stub = EnhancedBigtableStub.create(settingsBuilder.stubSettings().build());
913912

914913
service.expectations.add(
915914
RpcExpectation.create()
@@ -928,17 +927,14 @@ public void readRowsAppendsLargeRowsToMidStreamError() throws Exception {
928927

929928
try {
930929
List<Row> ignored =
931-
failureClient
932-
.skipLargeRowsCallable()
933-
.all()
934-
.call(Query.create(TABLE_ID).range("r1", "r5"));
930+
stub.deferLargeRowsCallable().all().call(Query.create(TABLE_ID).range("r1", "r5"));
935931
Truth.assert_().withMessage("Expected InvalidArgumentException").fail();
936932
} catch (ApiException e) {
937933
LargeRowException lre = findLargeRowException(e);
938934
assertThat(lre).isNotNull();
939935
assertThat(lre.getLargeRowKeys()).containsExactly(ByteString.copyFromUtf8("r2"));
940936
} finally {
941-
failureClient.close();
937+
stub.close();
942938
}
943939
}
944940

0 commit comments

Comments
 (0)