|
23 | 23 | import com.google.api.gax.core.FixedCredentialsProvider; |
24 | 24 | import com.google.api.gax.core.NoCredentialsProvider; |
25 | 25 | import com.google.api.gax.grpc.InstantiatingGrpcChannelProvider; |
| 26 | +import com.google.api.gax.retrying.RetrySettings; |
26 | 27 | import com.google.api.gax.rpc.ApiException; |
27 | 28 | import com.google.api.gax.rpc.ServerStream; |
28 | 29 | import com.google.auth.oauth2.GoogleCredentials; |
@@ -146,51 +147,34 @@ public static CbtTestProxy createEncrypted( |
146 | 147 | */ |
147 | 148 | private static BigtableDataSettings.Builder overrideTimeoutSetting( |
148 | 149 | 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); |
190 | 162 |
|
191 | 163 | return settingsBuilder; |
192 | 164 | } |
193 | 165 |
|
| 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 | + |
194 | 178 | /** Helper method to get a client object by its id. */ |
195 | 179 | private CbtClient getClient(String id) throws StatusException { |
196 | 180 | CbtClient client = idClientMap.get(id); |
|
0 commit comments