ServerStreamingCallSettings.<ReadRowsRequest, RowT>newBuilder() .setResumptionStrategy(new ReadRowsResumptionStrategy<>(rowAdapter)) .setRetryableCodes(readRowsSettings.getRetryableCodes()) .setRetrySettings(readRowsSettings.getRetrySettings()) .setIdleTimeout(readRowsSettings.getIdleTimeout()) .build();
protected Builder(BigtableStubSettings settings) { super(settings); readRowsSettings = settings.readRowsSettings.toBuilder(); sampleRowKeysSettings = settings.sampleRowKeysSettings.toBuilder(); mutateRowSettings = settings.mutateRowSettings.toBuilder(); mutateRowsSettings = settings.mutateRowsSettings.toBuilder(); checkAndMutateRowSettings = settings.checkAndMutateRowSettings.toBuilder(); readModifyWriteRowSettings = settings.readModifyWriteRowSettings.toBuilder(); unaryMethodSettingsBuilders = ImmutableList.<UnaryCallSettings.Builder<?, ?>>of( mutateRowSettings, checkAndMutateRowSettings, readModifyWriteRowSettings); }
.setRetryableCodes(settings.readRowsSettings().getRetryableCodes()) .setRetrySettings(settings.readRowsSettings().getRetrySettings()) .setResumptionStrategy(settings.readRowsSettings().getResumptionStrategy()) .setIdleTimeout(settings.readRowsSettings().getIdleTimeout());
protected Builder(ClientContext clientContext) { super(clientContext); readRowsSettings = ServerStreamingCallSettings.newBuilder(); sampleRowKeysSettings = ServerStreamingCallSettings.newBuilder(); mutateRowSettings = UnaryCallSettings.newUnaryCallSettingsBuilder(); mutateRowsSettings = ServerStreamingCallSettings.newBuilder(); checkAndMutateRowSettings = UnaryCallSettings.newUnaryCallSettingsBuilder(); readModifyWriteRowSettings = UnaryCallSettings.newUnaryCallSettingsBuilder(); unaryMethodSettingsBuilders = ImmutableList.<UnaryCallSettings.Builder<?, ?>>of( mutateRowSettings, checkAndMutateRowSettings, readModifyWriteRowSettings); initDefaults(this); }
assertThat(builder.readRowsSettings().getRetrySettings()).isEqualTo(retrySettings); assertThat(builder.build().readRowsSettings().getIdleTimeout()) .isEqualTo(Duration.ofMinutes(5)); assertThat(builder.build().readRowsSettings().getRetryableCodes()) .containsAllOf(Code.ABORTED, Code.DEADLINE_EXCEEDED); assertThat(builder.build().readRowsSettings().getRetrySettings()).isEqualTo(retrySettings);
@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 retryableCodesAreNotLost() { Set<Code> codes = ImmutableSet.of(Code.UNAVAILABLE, Code.RESOURCE_EXHAUSTED); ServerStreamingCallSettings.Builder<Object, Object> builder = ServerStreamingCallSettings.newBuilder(); builder.setRetryableCodes(codes); Truth.assertThat(builder.getRetryableCodes()).containsExactlyElementsIn(codes); Truth.assertThat(builder.build().getRetryableCodes()).containsExactlyElementsIn(codes); Truth.assertThat(builder.build().toBuilder().getRetryableCodes()) .containsExactlyElementsIn(codes); }
@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); }
@Test public void idleTimeoutIsNotLost() { Duration idleTimeout = Duration.ofSeconds(5); ServerStreamingCallSettings.Builder<Object, Object> builder = ServerStreamingCallSettings.newBuilder(); builder.setIdleTimeout(idleTimeout); Truth.assertThat(builder.getIdleTimeout()).isEqualTo(idleTimeout); Truth.assertThat(builder.build().getIdleTimeout()).isEqualTo(idleTimeout); Truth.assertThat(builder.build().toBuilder().getIdleTimeout()).isEqualTo(idleTimeout); } }
.readRowsSettings() .setSimpleTimeoutNoRetries(Duration.ofHours(2)) .setRetryableCodes(settings.readRowsSettings().getRetryableCodes()) .setIdleTimeout(Duration.ZERO);
@BetaApi("The surface for streaming is not stable yet and may change in the future.") public static <RequestT, ResponseT> ServerStreamingCallable<RequestT, ResponseT> watched( ServerStreamingCallable<RequestT, ResponseT> callable, ServerStreamingCallSettings<RequestT, ResponseT> callSettings, ClientContext clientContext) { callable = new WatchdogServerStreamingCallable<>(callable, clientContext.getStreamWatchdog()); callable = callable.withDefaultCallContext( clientContext .getDefaultCallContext() .withStreamIdleTimeout(callSettings.getIdleTimeout())); return callable; }
@Override public ServerStreamingCallSettings<RequestT, ResponseT> build() { return new ServerStreamingCallSettings<>(this); } }
protected Builder(ClientContext clientContext) { super(clientContext); createReadSessionSettings = UnaryCallSettings.newUnaryCallSettingsBuilder(); readRowsSettings = ServerStreamingCallSettings.newBuilder(); batchCreateReadSessionStreamsSettings = UnaryCallSettings.newUnaryCallSettingsBuilder(); finalizeStreamSettings = UnaryCallSettings.newUnaryCallSettingsBuilder(); splitReadStreamSettings = UnaryCallSettings.newUnaryCallSettingsBuilder(); unaryMethodSettingsBuilders = ImmutableList.<UnaryCallSettings.Builder<?, ?>>of( createReadSessionSettings, batchCreateReadSessionStreamsSettings, finalizeStreamSettings, splitReadStreamSettings); initDefaults(this); }
@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()); }
callable, streamingCallSettings.getRetryableCodes());
@BetaApi("The surface for streaming is not stable yet and may change in the future.") public static <RequestT, ResponseT> ServerStreamingCallable<RequestT, ResponseT> watched( ServerStreamingCallable<RequestT, ResponseT> callable, ServerStreamingCallSettings<RequestT, ResponseT> callSettings, ClientContext clientContext) { callable = new WatchdogServerStreamingCallable<>(callable, clientContext.getStreamWatchdog()); callable = callable.withDefaultCallContext( clientContext .getDefaultCallContext() .withStreamIdleTimeout(callSettings.getIdleTimeout())); return callable; }
@Override public ServerStreamingCallSettings<RequestT, ResponseT> build() { return new ServerStreamingCallSettings<>(this); } }
ServerStreamingCallSettings.<ReadRowsRequest, RowT>newBuilder() .setResumptionStrategy(new ReadRowsResumptionStrategy<>(rowAdapter)) .setRetryableCodes(readRowsSettings.getRetryableCodes()) .setRetrySettings(readRowsSettings.getRetrySettings()) .setIdleTimeout(readRowsSettings.getIdleTimeout()) .build();
protected Builder(ClientContext clientContext) { super(clientContext); getDocumentSettings = UnaryCallSettings.newUnaryCallSettingsBuilder(); listDocumentsSettings = PagedCallSettings.newBuilder(LIST_DOCUMENTS_PAGE_STR_FACT); createDocumentSettings = UnaryCallSettings.newUnaryCallSettingsBuilder(); updateDocumentSettings = UnaryCallSettings.newUnaryCallSettingsBuilder(); deleteDocumentSettings = UnaryCallSettings.newUnaryCallSettingsBuilder(); batchGetDocumentsSettings = ServerStreamingCallSettings.newBuilder(); beginTransactionSettings = UnaryCallSettings.newUnaryCallSettingsBuilder(); commitSettings = UnaryCallSettings.newUnaryCallSettingsBuilder(); rollbackSettings = UnaryCallSettings.newUnaryCallSettingsBuilder(); runQuerySettings = ServerStreamingCallSettings.newBuilder(); writeSettings = StreamingCallSettings.newBuilder(); listenSettings = StreamingCallSettings.newBuilder(); listCollectionIdsSettings = PagedCallSettings.newBuilder(LIST_COLLECTION_IDS_PAGE_STR_FACT); unaryMethodSettingsBuilders = ImmutableList.<UnaryCallSettings.Builder<?, ?>>of( getDocumentSettings, listDocumentsSettings, createDocumentSettings, updateDocumentSettings, deleteDocumentSettings, beginTransactionSettings, commitSettings, rollbackSettings, listCollectionIdsSettings); initDefaults(this); }
protected Builder(BigQueryStorageStubSettings settings) { super(settings); createReadSessionSettings = settings.createReadSessionSettings.toBuilder(); readRowsSettings = settings.readRowsSettings.toBuilder(); batchCreateReadSessionStreamsSettings = settings.batchCreateReadSessionStreamsSettings.toBuilder(); finalizeStreamSettings = settings.finalizeStreamSettings.toBuilder(); splitReadStreamSettings = settings.splitReadStreamSettings.toBuilder(); unaryMethodSettingsBuilders = ImmutableList.<UnaryCallSettings.Builder<?, ?>>of( createReadSessionSettings, batchCreateReadSessionStreamsSettings, finalizeStreamSettings, splitReadStreamSettings); }