Class AsyncWaitOperator<IN,OUT>
- java.lang.Object
-
- org.apache.flink.streaming.api.operators.AbstractStreamOperator<OUT>
-
- org.apache.flink.streaming.api.operators.AbstractUdfStreamOperator<OUT,AsyncFunction<IN,OUT>>
-
- org.apache.flink.streaming.api.operators.async.AsyncWaitOperator<IN,OUT>
-
- Type Parameters:
IN- Input type for the operator.OUT- Output type for the operator.
- All Implemented Interfaces:
Serializable,org.apache.flink.api.common.state.CheckpointListener,BoundedOneInput,Input<IN>,KeyContext,KeyContextHandler,OneInputStreamOperator<IN,OUT>,org.apache.flink.streaming.api.operators.OutputTypeConfigurable<OUT>,SetupableStreamOperator<OUT>,StreamOperator<OUT>,StreamOperatorStateHandler.CheckpointedStreamOperator,UserFunctionProvider<AsyncFunction<IN,OUT>>
@Internal public class AsyncWaitOperator<IN,OUT> extends AbstractUdfStreamOperator<OUT,AsyncFunction<IN,OUT>> implements OneInputStreamOperator<IN,OUT>, BoundedOneInput
TheAsyncWaitOperatorallows to asynchronously process incoming stream records. For that the operator creates anResultFuturewhich is passed to anAsyncFunction. Within the async function, the user can complete the async collector arbitrarily. Once the async collector has been completed, the result is emitted by the operator's emitter to downstream operators.The operator offers different output modes depending on the chosen
AsyncDataStream.OutputMode. In order to give exactly once processing guarantees, the operator stores all currently in-flightStreamElementin it's operator state. Upon recovery the recorded set of stream elements is replayed.The operator also support retry on predefined condition and strategy
AsyncRetryStrategy. If given strategy is NO_RETRY_STRATEGY or a custom implementedAsyncRetryPredicatewhich defines empty retry predicate, then no retry will happen, everything keeps the same as theAsyncWaitOperatorwithout retry support.In case of chaining of this operator, it has to be made sure that the operators in the chain are opened tail to head. The reason for this is that an opened
AsyncWaitOperatorstarts already emitting recoveredStreamElementto downstream operators.- See Also:
- Serialized Form
-
-
Field Summary
-
Fields inherited from class org.apache.flink.streaming.api.operators.AbstractUdfStreamOperator
userFunction
-
Fields inherited from class org.apache.flink.streaming.api.operators.AbstractStreamOperator
chainingStrategy, config, lastRecordAttributes1, lastRecordAttributes2, latencyStats, LOG, metrics, output, processingTimeService
-
-
Constructor Summary
Constructors Constructor Description AsyncWaitOperator(AsyncFunction<IN,OUT> asyncFunction, long timeout, int capacity, AsyncDataStream.OutputMode outputMode, AsyncRetryStrategy<OUT> asyncRetryStrategy, ProcessingTimeService processingTimeService, org.apache.flink.api.common.operators.MailboxExecutor mailboxExecutor)
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description voidendInput()It is notified that no more data will arrive from the input.voidinitializeState(org.apache.flink.runtime.state.StateInitializationContext context)Stream operators with state which can be restored need to override this hook method.voidopen()This method is called immediately before any elements are processed, it should contain the operator's initialization logic, e.g.voidprocessElement(StreamRecord<IN> record)Processes one element that arrived on this input of theMultipleInputStreamOperator.voidprocessWatermark(Watermark mark)Processes aWatermarkthat arrived on the first input of this two-input operator.voidsetup(StreamTask<?,?> containingTask, StreamConfig config, Output<StreamRecord<OUT>> output)Initializes the operator.voidsnapshotState(org.apache.flink.runtime.state.StateSnapshotContext context)Stream operators with state, which want to participate in a snapshot need to override this hook method.-
Methods inherited from class org.apache.flink.streaming.api.operators.AbstractUdfStreamOperator
close, finish, getUserFunction, getUserFunctionParameters, notifyCheckpointAborted, notifyCheckpointComplete, setOutputType
-
Methods inherited from class org.apache.flink.streaming.api.operators.AbstractStreamOperator
getChainingStrategy, getContainingTask, getCurrentKey, getExecutionConfig, getInternalTimerService, getKeyedStateBackend, getKeyedStateStore, getMetricGroup, getOperatorConfig, getOperatorID, getOperatorName, getOperatorStateBackend, getOrCreateKeyedState, getPartitionedState, getPartitionedState, getProcessingTimeService, getRuntimeContext, getTimeServiceManager, getUserCodeClassloader, hasKeyContext1, hasKeyContext2, initializeState, isUsingCustomRawKeyedState, prepareSnapshotPreBarrier, processLatencyMarker, processLatencyMarker1, processLatencyMarker2, processRecordAttributes, processRecordAttributes1, processRecordAttributes2, processWatermark1, processWatermark2, processWatermarkStatus, processWatermarkStatus1, processWatermarkStatus2, reportOrForwardLatencyMarker, setChainingStrategy, setCurrentKey, setKeyContextElement1, setKeyContextElement2, setProcessingTimeService, snapshotState
-
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
-
Methods inherited from interface org.apache.flink.api.common.state.CheckpointListener
notifyCheckpointAborted, notifyCheckpointComplete
-
Methods inherited from interface org.apache.flink.streaming.api.operators.Input
processLatencyMarker, processRecordAttributes, processWatermarkStatus
-
Methods inherited from interface org.apache.flink.streaming.api.operators.KeyContext
getCurrentKey, setCurrentKey
-
Methods inherited from interface org.apache.flink.streaming.api.operators.KeyContextHandler
hasKeyContext
-
Methods inherited from interface org.apache.flink.streaming.api.operators.OneInputStreamOperator
setKeyContextElement
-
Methods inherited from interface org.apache.flink.streaming.api.operators.StreamOperator
close, finish, getMetricGroup, getOperatorID, initializeState, prepareSnapshotPreBarrier, setKeyContextElement1, setKeyContextElement2, snapshotState
-
-
-
-
Constructor Detail
-
AsyncWaitOperator
public AsyncWaitOperator(@Nonnull AsyncFunction<IN,OUT> asyncFunction, long timeout, int capacity, @Nonnull AsyncDataStream.OutputMode outputMode, @Nonnull AsyncRetryStrategy<OUT> asyncRetryStrategy, @Nonnull ProcessingTimeService processingTimeService, @Nonnull org.apache.flink.api.common.operators.MailboxExecutor mailboxExecutor)
-
-
Method Detail
-
setup
public void setup(StreamTask<?,?> containingTask, StreamConfig config, Output<StreamRecord<OUT>> output)
Description copied from interface:SetupableStreamOperatorInitializes the operator. Sets access to the context and the output.- Specified by:
setupin interfaceSetupableStreamOperator<IN>- Overrides:
setupin classAbstractUdfStreamOperator<OUT,AsyncFunction<IN,OUT>>
-
open
public void open() throws ExceptionDescription copied from class:AbstractStreamOperatorThis method is called immediately before any elements are processed, it should contain the operator's initialization logic, e.g. state initialization.The default implementation does nothing.
- Specified by:
openin interfaceStreamOperator<IN>- Overrides:
openin classAbstractUdfStreamOperator<OUT,AsyncFunction<IN,OUT>>- Throws:
Exception- An exception in this method causes the operator to fail.
-
processElement
public void processElement(StreamRecord<IN> record) throws Exception
Description copied from interface:InputProcesses one element that arrived on this input of theMultipleInputStreamOperator. This method is guaranteed to not be called concurrently with other methods of the operator.- Specified by:
processElementin interfaceInput<IN>- Throws:
Exception
-
processWatermark
public void processWatermark(Watermark mark) throws Exception
Description copied from interface:InputProcesses aWatermarkthat arrived on the first input of this two-input operator. This method is guaranteed to not be called concurrently with other methods of the operator.- Specified by:
processWatermarkin interfaceInput<IN>- Overrides:
processWatermarkin classAbstractStreamOperator<OUT>- Throws:
Exception- See Also:
Watermark
-
snapshotState
public void snapshotState(org.apache.flink.runtime.state.StateSnapshotContext context) throws ExceptionDescription copied from class:AbstractStreamOperatorStream operators with state, which want to participate in a snapshot need to override this hook method.- Specified by:
snapshotStatein interfaceStreamOperatorStateHandler.CheckpointedStreamOperator- Overrides:
snapshotStatein classAbstractUdfStreamOperator<OUT,AsyncFunction<IN,OUT>>- Parameters:
context- context that provides information and means required for taking a snapshot- Throws:
Exception
-
initializeState
public void initializeState(org.apache.flink.runtime.state.StateInitializationContext context) throws ExceptionDescription copied from class:AbstractStreamOperatorStream operators with state which can be restored need to override this hook method.- Specified by:
initializeStatein interfaceStreamOperatorStateHandler.CheckpointedStreamOperator- Overrides:
initializeStatein classAbstractUdfStreamOperator<OUT,AsyncFunction<IN,OUT>>- Parameters:
context- context that allows to register different states.- Throws:
Exception
-
endInput
public void endInput() throws ExceptionDescription copied from interface:BoundedOneInputIt is notified that no more data will arrive from the input.Stateful operators need to be aware that a restart with rescaling may occur after receiving this notification. A changed source split assignment may imply that the same subtask of this operator that received endInput, has its state after endInput snapshotted, and will receive new data after restart. Hence, the state should not contain any finalization that would make it impossible to process new data.
WARNING: It is not safe to use this method to commit any transactions or other side effects! You can use this method to flush any buffered data that can later on be committed e.g. in a
CheckpointListener.notifyCheckpointComplete(long).NOTE: Given it is semantically very similar to the
StreamOperator.finish()method. It might be dropped in favour of the other method at some point in time.- Specified by:
endInputin interfaceBoundedOneInput- Throws:
Exception
-
-