.setResumptionStrategy(new ReadRowsResumptionStrategy<>(rowAdapter)) .setRetryableCodes(readRowsSettings.getRetryableCodes()) .setRetrySettings(readRowsSettings.getRetrySettings()) .setIdleTimeout(readRowsSettings.getIdleTimeout()) .build();
assertThat(builder.build().readRowsSettings().getRetryableCodes()) .containsAllOf(Code.ABORTED, Code.DEADLINE_EXCEEDED); assertThat(builder.build().readRowsSettings().getRetrySettings()).isEqualTo(retrySettings);
.readRowsSettings() .setRetryableCodes(settings.readRowsSettings().getRetryableCodes()) .setRetrySettings(settings.readRowsSettings().getRetrySettings()) .setResumptionStrategy(settings.readRowsSettings().getResumptionStrategy()) .setIdleTimeout(settings.readRowsSettings().getIdleTimeout());
@BetaApi("The surface for streaming is not stable yet and may change in the future.") public static <RequestT, ResponseT> ServerStreamingCallable<RequestT, ResponseT> retrying( ServerStreamingCallable<RequestT, ResponseT> innerCallable, ServerStreamingCallSettings<RequestT, ResponseT> callSettings, ClientContext clientContext) { if (callSettings.getRetryableCodes().isEmpty()) { return innerCallable; } StreamingRetryAlgorithm<Void> retryAlgorithm = new StreamingRetryAlgorithm<>( new ApiResultRetryAlgorithm<Void>(), new ExponentialRetryAlgorithm( callSettings.getRetrySettings(), clientContext.getClock())); ScheduledRetryingExecutor<Void> retryingExecutor = new ScheduledRetryingExecutor<>(retryAlgorithm, clientContext.getExecutor()); return new RetryingServerStreamingCallable<>( innerCallable, retryingExecutor, callSettings.getResumptionStrategy()); }
@BetaApi("The surface for streaming is not stable yet and may change in the future.") public static <RequestT, ResponseT> ServerStreamingCallable<RequestT, ResponseT> retrying( ServerStreamingCallable<RequestT, ResponseT> innerCallable, ServerStreamingCallSettings<RequestT, ResponseT> callSettings, ClientContext clientContext) { if (callSettings.getRetryableCodes().isEmpty()) { return innerCallable; } StreamingRetryAlgorithm<Void> retryAlgorithm = new StreamingRetryAlgorithm<>( new ApiResultRetryAlgorithm<Void>(), new ExponentialRetryAlgorithm( callSettings.getRetrySettings(), clientContext.getClock())); ScheduledRetryingExecutor<Void> retryingExecutor = new ScheduledRetryingExecutor<>(retryAlgorithm, clientContext.getExecutor()); return new RetryingServerStreamingCallable<>( innerCallable, retryingExecutor, callSettings.getResumptionStrategy()); }
@Test public void retryableSettingsAreNotLost() { RetrySettings retrySettings = Mockito.mock(RetrySettings.class); ServerStreamingCallSettings.Builder<Object, Object> builder = ServerStreamingCallSettings.newBuilder(); builder.setRetrySettings(retrySettings); Truth.assertThat(builder.getRetrySettings()).isSameAs(retrySettings); Truth.assertThat(builder.build().getRetrySettings()).isSameAs(retrySettings); Truth.assertThat(builder.build().toBuilder().getRetrySettings()).isSameAs(retrySettings); }
.setResumptionStrategy(new ReadRowsResumptionStrategy<>(rowAdapter)) .setRetryableCodes(readRowsSettings.getRetryableCodes()) .setRetrySettings(readRowsSettings.getRetrySettings()) .setIdleTimeout(readRowsSettings.getIdleTimeout()) .build();