/** * Creates a callable chain to handle MutateRow RPCs. The chain will: * * <ul> * <li>Convert a {@link RowMutation} into a {@link com.google.bigtable.v2.MutateRowRequest}. * </ul> */ private UnaryCallable<RowMutation, Void> createMutateRowCallable() { MutateRowCallable userFacing = new MutateRowCallable(stub.mutateRowCallable(), requestContext); return userFacing.withDefaultCallContext(clientContext.getDefaultCallContext()); }
/** * Creates a callable chain to handle CheckAndMutateRow RPCs. THe chain will: * * <ul> * <li>Convert {@link ConditionalRowMutation}s into {@link * com.google.bigtable.v2.CheckAndMutateRowRequest}s. * </ul> */ private UnaryCallable<ConditionalRowMutation, Boolean> createCheckAndMutateRowCallable() { CheckAndMutateRowCallable userFacing = new CheckAndMutateRowCallable(stub.checkAndMutateRowCallable(), requestContext); return userFacing.withDefaultCallContext(clientContext.getDefaultCallContext()); }
/** * Creates a callable chain to handle ReadModifyWriteRow RPCs. The chain will: * * <ul> * <li>Convert {@link ReadModifyWriteRow}s into {@link * com.google.bigtable.v2.ReadModifyWriteRowRequest}s. * <li>Convert the responses into {@link Row}. * </ul> */ private UnaryCallable<ReadModifyWriteRow, Row> createReadModifyWriteRowCallable() { ReadModifyWriteRowCallable userFacing = new ReadModifyWriteRowCallable(stub.readModifyWriteRowCallable(), requestContext); return userFacing.withDefaultCallContext(clientContext.getDefaultCallContext()); } // </editor-fold>
/** * Creates a callable chain to handle SampleRowKeys RPcs. The chain will: * * <ul> * <li>Convert a table id to a {@link com.google.bigtable.v2.SampleRowKeysRequest}. * <li>Dispatch the request to the GAPIC's {@link BigtableStub#sampleRowKeysCallable()}. * <li>Spool responses into a list. * <li>Retry on failure. * <li>Convert the responses into {@link KeyOffset}s. * </ul> */ private UnaryCallable<String, List<KeyOffset>> createSampleRowKeysCallable() { UnaryCallable<SampleRowKeysRequest, List<SampleRowKeysResponse>> spoolable = stub.sampleRowKeysCallable().all(); UnaryCallable<SampleRowKeysRequest, List<SampleRowKeysResponse>> retryable = Callables.retrying(spoolable, settings.sampleRowKeysSettings(), clientContext); UnaryCallable<String, List<KeyOffset>> userFacing = new SampleRowKeysCallable(retryable, requestContext); return userFacing.withDefaultCallContext(clientContext.getDefaultCallContext()); }
/** * Creates a callable chain to handle MutatesRows RPCs. This is meant to be used for automatic * batching with flow control. The chain will: * * <ul> * <li>Convert a {@link RowMutation} into a {@link MutateRowsRequest} with a single entry. * <li>Using gax's {@link com.google.api.gax.rpc.BatchingCallable} to spool the requests and * aggregate the {@link MutateRowsRequest.Entry}s. * <li>Process the response and schedule retries. At the end of each attempt, entries that have * been applied, are filtered from the next attempt. Also, any entries that failed with a * nontransient error, are filtered from the next attempt. This will continue until there * are no more entries or there are no more retry attempts left. * <li>Wrap batch failures in a {@link * com.google.cloud.bigtable.data.v2.models.MutateRowsException}. * <li>Split the responses using {@link MutateRowsBatchingDescriptor}. * </ul> */ private UnaryCallable<RowMutation, Void> createBulkMutateRowsBatchingCallable() { UnaryCallable<MutateRowsRequest, Void> baseCallable = createMutateRowsBaseCallable(); BatchingCallSettings.Builder<MutateRowsRequest, Void> batchingCallSettings = BatchingCallSettings.newBuilder(new MutateRowsBatchingDescriptor()) .setBatchingSettings(settings.bulkMutateRowsSettings().getBatchingSettings()); UnaryCallable<MutateRowsRequest, Void> batching = Callables.batching(baseCallable, batchingCallSettings.build(), clientContext); MutateRowsUserFacingCallable userFacing = new MutateRowsUserFacingCallable(batching, requestContext); return userFacing.withDefaultCallContext(clientContext.getDefaultCallContext()); }
/** * Internal helper to create the base MutateRows callable chain. The chain is responsible for * retrying individual entry in case of error. * * @see MutateRowsRetryingCallable for more details */ private UnaryCallable<MutateRowsRequest, Void> createMutateRowsBaseCallable() { RetryAlgorithm<Void> retryAlgorithm = new RetryAlgorithm<>( new ApiResultRetryAlgorithm<Void>(), new ExponentialRetryAlgorithm( settings.bulkMutateRowsSettings().getRetrySettings(), clientContext.getClock())); RetryingExecutor<Void> retryingExecutor = new ScheduledRetryingExecutor<>(retryAlgorithm, clientContext.getExecutor()); return new MutateRowsRetryingCallable( clientContext.getDefaultCallContext(), stub.mutateRowsCallable(), retryingExecutor, settings.bulkMutateRowsSettings().getRetryableCodes()); }
filtering.withDefaultCallContext(clientContext.getDefaultCallContext());
/** * Creates a callable chain to handle MutateRow RPCs. The chain will: * * <ul> * <li>Convert a {@link RowMutation} into a {@link com.google.bigtable.v2.MutateRowRequest}. * </ul> */ private UnaryCallable<RowMutation, Void> createMutateRowCallable() { MutateRowCallable userFacing = new MutateRowCallable(stub.mutateRowCallable(), requestContext); return userFacing.withDefaultCallContext(clientContext.getDefaultCallContext()); }
/** * Creates a callable chain to handle CheckAndMutateRow RPCs. THe chain will: * * <ul> * <li>Convert {@link ConditionalRowMutation}s into {@link * com.google.bigtable.v2.CheckAndMutateRowRequest}s. * </ul> */ private UnaryCallable<ConditionalRowMutation, Boolean> createCheckAndMutateRowCallable() { CheckAndMutateRowCallable userFacing = new CheckAndMutateRowCallable(stub.checkAndMutateRowCallable(), requestContext); return userFacing.withDefaultCallContext(clientContext.getDefaultCallContext()); }
/** * Creates a callable chain to handle ReadModifyWriteRow RPCs. The chain will: * * <ul> * <li>Convert {@link ReadModifyWriteRow}s into {@link * com.google.bigtable.v2.ReadModifyWriteRowRequest}s. * <li>Convert the responses into {@link Row}. * </ul> */ private UnaryCallable<ReadModifyWriteRow, Row> createReadModifyWriteRowCallable() { ReadModifyWriteRowCallable userFacing = new ReadModifyWriteRowCallable(stub.readModifyWriteRowCallable(), requestContext); return userFacing.withDefaultCallContext(clientContext.getDefaultCallContext()); } // </editor-fold>
static <RequestT, ResponseT> UnaryCallable<RequestT, ResponseT> createUnaryCallable( UnaryCallable<RequestT, ResponseT> innerCallable, UnaryCallSettings<?, ?> callSettings, ClientContext clientContext) { UnaryCallable<RequestT, ResponseT> callable = new HttpJsonExceptionCallable<>(innerCallable, callSettings.getRetryableCodes()); callable = Callables.retrying(callable, callSettings, clientContext); return callable.withDefaultCallContext(clientContext.getDefaultCallContext()); }
static <RequestT, ResponseT> UnaryCallable<RequestT, ResponseT> createUnaryCallable( UnaryCallable<RequestT, ResponseT> innerCallable, UnaryCallSettings<?, ?> callSettings, ClientContext clientContext) { UnaryCallable<RequestT, ResponseT> callable = new HttpJsonExceptionCallable<>(innerCallable, callSettings.getRetryableCodes()); callable = Callables.retrying(callable, callSettings, clientContext); return callable.withDefaultCallContext(clientContext.getDefaultCallContext()); }
/** * Create a callable object that represents a batching API method. Designed for use by generated * code. * * @param httpJsonCallSettings the http/json call settings * @param batchingCallSettings {@link BatchingCallSettings} to configure the batching related * settings with. * @param clientContext {@link ClientContext} to use to connect to the service. * @return {@link UnaryCallable} callable object. */ public static <RequestT, ResponseT> UnaryCallable<RequestT, ResponseT> createBatchingCallable( HttpJsonCallSettings<RequestT, ResponseT> httpJsonCallSettings, BatchingCallSettings<RequestT, ResponseT> batchingCallSettings, ClientContext clientContext) { UnaryCallable<RequestT, ResponseT> callable = createDirectUnaryCallable(httpJsonCallSettings); callable = createUnaryCallable(callable, batchingCallSettings, clientContext); callable = Callables.batching(callable, batchingCallSettings, clientContext); return callable.withDefaultCallContext(clientContext.getDefaultCallContext()); }
/** * Create a paged callable object that represents a paged API method. Designed for use by * generated code. * * @param httpJsonCallSettings the http/json call settings * @param pagedCallSettings {@link PagedCallSettings} to configure the paged settings with. * @param clientContext {@link ClientContext} to use to connect to the service. * @return {@link UnaryCallable} callable object. */ public static <RequestT, ResponseT, PagedListResponseT> UnaryCallable<RequestT, PagedListResponseT> createPagedCallable( HttpJsonCallSettings<RequestT, ResponseT> httpJsonCallSettings, PagedCallSettings<RequestT, ResponseT, PagedListResponseT> pagedCallSettings, ClientContext clientContext) { UnaryCallable<RequestT, ResponseT> callable = createDirectUnaryCallable(httpJsonCallSettings); callable = createUnaryCallable(callable, pagedCallSettings, clientContext); UnaryCallable<RequestT, PagedListResponseT> pagedCallable = Callables.paged(callable, pagedCallSettings); return pagedCallable.withDefaultCallContext(clientContext.getDefaultCallContext()); }
@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; }
@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; }
/** * Create a callable object with grpc-specific functionality. Designed for use by generated code. * * @param grpcCallSettings the gRPC call settings */ public static <RequestT, ResponseT> UnaryCallable<RequestT, ResponseT> createUnaryCallable( GrpcCallSettings<RequestT, ResponseT> grpcCallSettings, UnaryCallSettings<RequestT, ResponseT> callSettings, ClientContext clientContext) { UnaryCallable<RequestT, ResponseT> callable = createBaseUnaryCallable(grpcCallSettings, callSettings, clientContext); callable = new TracedUnaryCallable<>( callable, clientContext.getTracerFactory(), getSpanName(grpcCallSettings.getMethodDescriptor())); return callable.withDefaultCallContext(clientContext.getDefaultCallContext()); }
/** * Create a callable object with grpc-specific functionality. Designed for use by generated code. * * @param grpcCallSettings the gRPC call settings */ public static <RequestT, ResponseT> UnaryCallable<RequestT, ResponseT> createUnaryCallable( GrpcCallSettings<RequestT, ResponseT> grpcCallSettings, UnaryCallSettings<RequestT, ResponseT> callSettings, ClientContext clientContext) { UnaryCallable<RequestT, ResponseT> callable = createBaseUnaryCallable(grpcCallSettings, callSettings, clientContext); callable = new TracedUnaryCallable<>( callable, clientContext.getTracerFactory(), getSpanName(grpcCallSettings.getMethodDescriptor())); return callable.withDefaultCallContext(clientContext.getDefaultCallContext()); }
public static <RequestT, ResponseT> UnaryCallable<RequestT, ResponseT> retrying( UnaryCallable<RequestT, ResponseT> innerCallable, UnaryCallSettings<?, ?> callSettings, ClientContext clientContext) { if (callSettings.getRetryableCodes().isEmpty()) { return innerCallable; } RetryAlgorithm<ResponseT> retryAlgorithm = new RetryAlgorithm<>( new ApiResultRetryAlgorithm<ResponseT>(), new ExponentialRetryAlgorithm( callSettings.getRetrySettings(), clientContext.getClock())); ScheduledRetryingExecutor<ResponseT> retryingExecutor = new ScheduledRetryingExecutor<>(retryAlgorithm, clientContext.getExecutor()); return new RetryingCallable<>( clientContext.getDefaultCallContext(), innerCallable, retryingExecutor); }
public static <RequestT, ResponseT> UnaryCallable<RequestT, ResponseT> retrying( UnaryCallable<RequestT, ResponseT> innerCallable, UnaryCallSettings<?, ?> callSettings, ClientContext clientContext) { if (callSettings.getRetryableCodes().isEmpty()) { return innerCallable; } RetryAlgorithm<ResponseT> retryAlgorithm = new RetryAlgorithm<>( new ApiResultRetryAlgorithm<ResponseT>(), new ExponentialRetryAlgorithm( callSettings.getRetrySettings(), clientContext.getClock())); ScheduledRetryingExecutor<ResponseT> retryingExecutor = new ScheduledRetryingExecutor<>(retryAlgorithm, clientContext.getExecutor()); return new RetryingCallable<>( clientContext.getDefaultCallContext(), innerCallable, retryingExecutor); }