Skip to content

Commit 94ab74d

Browse files
fix: Bring SampleRowKeys default timeout closer in line to the Veneer… (#4451)
* fix: Bring SampleRowKeys default timeout closer in line to the Veneer client * Add tests for sample row keys retry settings
1 parent 9b0d2ce commit 94ab74d

File tree

2 files changed

+41
-4
lines changed

2 files changed

+41
-4
lines changed

bigtable-client-core-parent/bigtable-hbase/src/main/java/com/google/cloud/bigtable/hbase/wrappers/veneer/BigtableHBaseVeneerSettings.java

Lines changed: 28 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -136,6 +136,10 @@ public class BigtableHBaseVeneerSettings extends BigtableHBaseSettings {
136136
/* bulkMutateTimeouts = */ new OperationTimeouts(
137137
Optional.absent(),
138138
Optional.of(Duration.ofMinutes(1)),
139+
Optional.of(Duration.ofMinutes(10))),
140+
/* sampleRowKeysTimeouts = */ new OperationTimeouts(
141+
Optional.absent(),
142+
Optional.of(Duration.ofMinutes(5)),
139143
Optional.of(Duration.ofMinutes(10))));
140144
private static final int MAX_CONSECUTIVE_SCAN_ATTEMPTS = 10;
141145

@@ -348,7 +352,8 @@ private BigtableDataSettings buildBigtableDataSettings(ClientOperationTimeouts c
348352
configureRetryableCallSettings(
349353
dataBuilder.stubSettings().readRowSettings(), clientTimeouts.getUnaryTimeouts());
350354
configureRetryableCallSettings(
351-
dataBuilder.stubSettings().sampleRowKeysSettings(), clientTimeouts.getUnaryTimeouts());
355+
dataBuilder.stubSettings().sampleRowKeysSettings(),
356+
clientTimeouts.getSampleRowKeysTimeouts());
352357

353358
if (!configuration.getBoolean(BIGTABLE_ENABLE_CLIENT_SIDE_METRICS, true)) {
354359
dataBuilder.setMetricsProvider(NoopMetricsProvider.INSTANCE);
@@ -866,7 +871,16 @@ private ClientOperationTimeouts buildCallSettings() {
866871
extractDuration(BIGTABLE_RPC_TIMEOUT_MS_KEY, MAX_ELAPSED_BACKOFF_MILLIS_KEY)
867872
.or(DEFAULT_TIMEOUTS.unaryTimeouts.operationTimeout));
868873

869-
return new ClientOperationTimeouts(unaryTimeouts, scanTimeouts, bulkMutateTimeouts);
874+
OperationTimeouts sampleRowKeysTimeouts =
875+
new OperationTimeouts(
876+
DEFAULT_TIMEOUTS.sampleRowKeysTimeouts.responseTimeout,
877+
extractDuration(BIGTABLE_RPC_ATTEMPT_TIMEOUT_MS_KEY)
878+
.or(DEFAULT_TIMEOUTS.sampleRowKeysTimeouts.attemptTimeout),
879+
extractDuration(BIGTABLE_RPC_TIMEOUT_MS_KEY, MAX_ELAPSED_BACKOFF_MILLIS_KEY)
880+
.or(DEFAULT_TIMEOUTS.sampleRowKeysTimeouts.operationTimeout));
881+
882+
return new ClientOperationTimeouts(
883+
unaryTimeouts, scanTimeouts, bulkMutateTimeouts, sampleRowKeysTimeouts);
870884
}
871885

872886
private Optional<Duration> extractDuration(String... keys) {
@@ -911,19 +925,25 @@ static class ClientOperationTimeouts {
911925

912926
static final ClientOperationTimeouts EMPTY =
913927
new ClientOperationTimeouts(
914-
OperationTimeouts.EMPTY, OperationTimeouts.EMPTY, OperationTimeouts.EMPTY);
928+
OperationTimeouts.EMPTY,
929+
OperationTimeouts.EMPTY,
930+
OperationTimeouts.EMPTY,
931+
OperationTimeouts.EMPTY);
915932

916933
private final OperationTimeouts unaryTimeouts;
917934
private final OperationTimeouts scanTimeouts;
918935
private final OperationTimeouts bulkMutateTimeouts;
936+
private final OperationTimeouts sampleRowKeysTimeouts;
919937

920938
public ClientOperationTimeouts(
921939
OperationTimeouts unaryTimeouts,
922940
OperationTimeouts scanTimeouts,
923-
OperationTimeouts bulkMutateTimeouts) {
941+
OperationTimeouts bulkMutateTimeouts,
942+
OperationTimeouts sampleRowKeysTimeouts) {
924943
this.unaryTimeouts = unaryTimeouts;
925944
this.scanTimeouts = scanTimeouts;
926945
this.bulkMutateTimeouts = bulkMutateTimeouts;
946+
this.sampleRowKeysTimeouts = sampleRowKeysTimeouts;
927947
}
928948

929949
public OperationTimeouts getUnaryTimeouts() {
@@ -937,6 +957,10 @@ public OperationTimeouts getScanTimeouts() {
937957
public OperationTimeouts getBulkMutateTimeouts() {
938958
return bulkMutateTimeouts;
939959
}
960+
961+
public OperationTimeouts getSampleRowKeysTimeouts() {
962+
return sampleRowKeysTimeouts;
963+
}
940964
}
941965

942966
static class OperationTimeouts {

bigtable-client-core-parent/bigtable-hbase/src/test/java/com/google/cloud/bigtable/hbase/wrappers/veneer/TestBigtableHBaseVeneerSettings.java

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -240,6 +240,12 @@ public void testTimeoutBeingPassed() throws IOException {
240240
assertEquals(
241241
Optional.of(Duration.ofMillis(perRowTimeoutMs)),
242242
settings.getClientTimeouts().getScanTimeouts().getResponseTimeout());
243+
assertEquals(
244+
Optional.of(Duration.ofMillis(rpcTimeoutMs)),
245+
settings.getClientTimeouts().getSampleRowKeysTimeouts().getOperationTimeout());
246+
assertEquals(
247+
Optional.of(Duration.ofMillis(rpcAttemptTimeoutMs)),
248+
settings.getClientTimeouts().getSampleRowKeysTimeouts().getAttemptTimeout());
243249

244250
RetrySettings readRowRetrySettings =
245251
dataSettings.getStubSettings().readRowSettings().getRetrySettings();
@@ -262,6 +268,13 @@ public void testTimeoutBeingPassed() throws IOException {
262268
assertEquals(perRowTimeoutMs, readRowsRetrySettings.getMaxRpcTimeout().toMillis());
263269
assertEquals(maxAttempt, readRowsRetrySettings.getMaxAttempts());
264270
assertEquals(readRowStreamTimeout, readRowsRetrySettings.getTotalTimeout().toMillis());
271+
272+
RetrySettings sampleRowKeysRetrySettings =
273+
dataSettings.getStubSettings().sampleRowKeysSettings().getRetrySettings();
274+
assertEquals(initialElapsedMs, sampleRowKeysRetrySettings.getInitialRetryDelay().toMillis());
275+
assertEquals(rpcTimeoutMs, sampleRowKeysRetrySettings.getTotalTimeout().toMillis());
276+
assertEquals(rpcAttemptTimeoutMs, sampleRowKeysRetrySettings.getInitialRpcTimeout().toMillis());
277+
assertEquals(rpcAttemptTimeoutMs, sampleRowKeysRetrySettings.getMaxRpcTimeout().toMillis());
265278
}
266279

267280
@Test

0 commit comments

Comments
 (0)