Skip to content

Commit c3ecc1b

Browse files
test: workaround existing bug in gax that prevents conformance tests from passing (#1772)
Change-Id: I80254c0613e2bac8752d361434a3711c8f9a31b4 Thank you for opening a Pull Request! Before submitting your PR, there are a few things you can do to make sure it goes smoothly: - [ ] Make sure to open an issue as a [bug/issue](https://togithub.com/googleapis/java-bigtable/issues/new/choose) before writing your code! That way we can discuss the change, evaluate designs, and agree on the general idea - [ ] Ensure the tests and linter pass - [ ] Code coverage does not decrease (if any source code was changed) - [ ] Appropriate docs were updated (if necessary) Fixes #<issue_number_goes_here> ☕️ If you write sample code, please follow the [samples format]( https://togithub.com/GoogleCloudPlatform/java-docs-samples/blob/main/SAMPLE_FORMAT.md).
1 parent a6ac97c commit c3ecc1b

File tree

1 file changed

+25
-41
lines changed

1 file changed

+25
-41
lines changed

test-proxy/src/main/java/com/google/cloud/bigtable/testproxy/CbtTestProxy.java

Lines changed: 25 additions & 41 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@
2323
import com.google.api.gax.core.FixedCredentialsProvider;
2424
import com.google.api.gax.core.NoCredentialsProvider;
2525
import com.google.api.gax.grpc.InstantiatingGrpcChannelProvider;
26+
import com.google.api.gax.retrying.RetrySettings;
2627
import com.google.api.gax.rpc.ApiException;
2728
import com.google.api.gax.rpc.ServerStream;
2829
import com.google.auth.oauth2.GoogleCredentials;
@@ -146,51 +147,34 @@ public static CbtTestProxy createEncrypted(
146147
*/
147148
private static BigtableDataSettings.Builder overrideTimeoutSetting(
148149
Duration newTimeout, BigtableDataSettings.Builder settingsBuilder) {
149-
// TODO(developer): remove the initialRpcTimeout update below by updating the client library.
150-
Duration initialRpcTimeout =
151-
settingsBuilder
152-
.stubSettings()
153-
.bulkMutateRowsSettings()
154-
.getRetrySettings()
155-
.getInitialRpcTimeout();
156-
if (initialRpcTimeout.compareTo(newTimeout) > 0) {
157-
// Total timeout is smaller than initialRpcTimeout, which will cause deadline-related problem.
158-
initialRpcTimeout = newTimeout;
159-
}
160-
settingsBuilder
161-
.stubSettings()
162-
.bulkMutateRowsSettings()
163-
.retrySettings()
164-
.setTotalTimeout(newTimeout)
165-
.setInitialRpcTimeout(initialRpcTimeout);
166-
167-
settingsBuilder.stubSettings().mutateRowSettings().retrySettings().setTotalTimeout(newTimeout);
168-
169-
settingsBuilder.stubSettings().readRowSettings().retrySettings().setTotalTimeout(newTimeout);
170-
171-
settingsBuilder.stubSettings().readRowsSettings().retrySettings().setTotalTimeout(newTimeout);
172-
173-
settingsBuilder
174-
.stubSettings()
175-
.sampleRowKeysSettings()
176-
.retrySettings()
177-
.setTotalTimeout(newTimeout);
178-
179-
settingsBuilder
180-
.stubSettings()
181-
.checkAndMutateRowSettings()
182-
.retrySettings()
183-
.setTotalTimeout(newTimeout);
184-
185-
settingsBuilder
186-
.stubSettings()
187-
.readModifyWriteRowSettings()
188-
.retrySettings()
189-
.setTotalTimeout(newTimeout);
150+
151+
updateTimeout(
152+
settingsBuilder.stubSettings().bulkMutateRowsSettings().retrySettings(), newTimeout);
153+
updateTimeout(settingsBuilder.stubSettings().mutateRowSettings().retrySettings(), newTimeout);
154+
updateTimeout(settingsBuilder.stubSettings().readRowSettings().retrySettings(), newTimeout);
155+
updateTimeout(settingsBuilder.stubSettings().readRowsSettings().retrySettings(), newTimeout);
156+
updateTimeout(
157+
settingsBuilder.stubSettings().checkAndMutateRowSettings().retrySettings(), newTimeout);
158+
updateTimeout(
159+
settingsBuilder.stubSettings().readModifyWriteRowSettings().retrySettings(), newTimeout);
160+
updateTimeout(
161+
settingsBuilder.stubSettings().sampleRowKeysSettings().retrySettings(), newTimeout);
190162

191163
return settingsBuilder;
192164
}
193165

166+
private static void updateTimeout(RetrySettings.Builder settings, Duration newTimeout) {
167+
Duration rpcTimeout = settings.getInitialRpcTimeout();
168+
169+
// TODO: this should happen in gax
170+
// Clamp the rpcTimeout to the overall timeout
171+
if (rpcTimeout != null && rpcTimeout.compareTo(newTimeout) > 0) {
172+
settings.setInitialRpcTimeout(newTimeout).setMaxRpcTimeout(newTimeout);
173+
}
174+
175+
settings.setTotalTimeout(newTimeout);
176+
}
177+
194178
/** Helper method to get a client object by its id. */
195179
private CbtClient getClient(String id) throws StatusException {
196180
CbtClient client = idClientMap.get(id);

0 commit comments

Comments
 (0)