Class SourceCoordinatorContext<SplitT extends org.apache.flink.api.connector.source.SourceSplit>
java.lang.Object
org.apache.flink.runtime.source.coordinator.SourceCoordinatorContext<SplitT>
- Type Parameters:
SplitT- the type of the splits.
- All Implemented Interfaces:
AutoCloseable,org.apache.flink.api.connector.source.SplitEnumeratorContext<SplitT>,org.apache.flink.api.connector.source.SupportsIntermediateNoMoreSplits
@Internal
public class SourceCoordinatorContext<SplitT extends org.apache.flink.api.connector.source.SourceSplit>
extends Object
implements org.apache.flink.api.connector.source.SplitEnumeratorContext<SplitT>, org.apache.flink.api.connector.source.SupportsIntermediateNoMoreSplits, AutoCloseable
A context class for the
OperatorCoordinator. Compared with SplitEnumeratorContext
this class allows interaction with state and sending OperatorEvent to the SourceOperator
while SplitEnumeratorContext only allows sending SourceEvent.
The context serves a few purposes:
- Information provider - The context provides necessary information to the enumerator for it to know what is the status of the source readers and their split assignments. These information allows the split enumerator to do the coordination.
- Action taker - The context also provides a few actions that the enumerator can take to
carry out the coordination. So far there are two actions: 1) assign splits to the source
readers. and 2) sens a custom
SourceEventsto the source readers. - Thread model enforcement - The context ensures that all the manipulations to the coordinator state are handled by the same thread.
-
Constructor Summary
ConstructorsConstructorDescriptionSourceCoordinatorContext(org.apache.flink.api.common.JobID jobID, SourceCoordinatorProvider.CoordinatorExecutorThreadFactory coordinatorThreadFactory, int numWorkerThreads, OperatorCoordinator.Context operatorCoordinatorContext, org.apache.flink.core.io.SimpleVersionedSerializer<SplitT> splitSerializer, boolean supportsConcurrentExecutionAttempts) -
Method Summary
Modifier and TypeMethodDescriptionvoidassignSplits(org.apache.flink.api.connector.source.SplitsAssignment<SplitT> assignment) <T> voidcallAsync(Callable<T> callable, BiConsumer<T, Throwable> handler) <T> voidcallAsync(Callable<T> callable, BiConsumer<T, Throwable> handler, long initialDelay, long period) voidclose()intorg.apache.flink.util.TernaryBooleanReturns whether the Source is processing backlog data.org.apache.flink.metrics.groups.SplitEnumeratorMetricGroupvoidrunInCoordinatorThread(Runnable runnable) If the runnable throws an Exception, the corresponding job is failed.voidsendEventToSourceReader(int subtaskId, int attemptNumber, org.apache.flink.api.connector.source.SourceEvent event) voidsendEventToSourceReader(int subtaskId, org.apache.flink.api.connector.source.SourceEvent event) voidsetIsProcessingBacklog(boolean isProcessingBacklog) voidsignalIntermediateNoMoreSplits(int subtask) voidsignalNoMoreSplits(int subtask) Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, waitMethods inherited from interface org.apache.flink.api.connector.source.SplitEnumeratorContext
assignSplit
-
Constructor Details
-
SourceCoordinatorContext
public SourceCoordinatorContext(org.apache.flink.api.common.JobID jobID, SourceCoordinatorProvider.CoordinatorExecutorThreadFactory coordinatorThreadFactory, int numWorkerThreads, OperatorCoordinator.Context operatorCoordinatorContext, org.apache.flink.core.io.SimpleVersionedSerializer<SplitT> splitSerializer, boolean supportsConcurrentExecutionAttempts)
-
-
Method Details
-
metricGroup
public org.apache.flink.metrics.groups.SplitEnumeratorMetricGroup metricGroup()- Specified by:
metricGroupin interfaceorg.apache.flink.api.connector.source.SplitEnumeratorContext<SplitT extends org.apache.flink.api.connector.source.SourceSplit>
-
sendEventToSourceReader
public void sendEventToSourceReader(int subtaskId, org.apache.flink.api.connector.source.SourceEvent event) - Specified by:
sendEventToSourceReaderin interfaceorg.apache.flink.api.connector.source.SplitEnumeratorContext<SplitT extends org.apache.flink.api.connector.source.SourceSplit>
-
sendEventToSourceReader
public void sendEventToSourceReader(int subtaskId, int attemptNumber, org.apache.flink.api.connector.source.SourceEvent event) - Specified by:
sendEventToSourceReaderin interfaceorg.apache.flink.api.connector.source.SplitEnumeratorContext<SplitT extends org.apache.flink.api.connector.source.SourceSplit>
-
currentParallelism
public int currentParallelism()- Specified by:
currentParallelismin interfaceorg.apache.flink.api.connector.source.SplitEnumeratorContext<SplitT extends org.apache.flink.api.connector.source.SourceSplit>
-
registeredReaders
- Specified by:
registeredReadersin interfaceorg.apache.flink.api.connector.source.SplitEnumeratorContext<SplitT extends org.apache.flink.api.connector.source.SourceSplit>
-
registeredReadersOfAttempts
public Map<Integer,Map<Integer, registeredReadersOfAttempts()org.apache.flink.api.connector.source.ReaderInfo>> - Specified by:
registeredReadersOfAttemptsin interfaceorg.apache.flink.api.connector.source.SplitEnumeratorContext<SplitT extends org.apache.flink.api.connector.source.SourceSplit>
-
assignSplits
- Specified by:
assignSplitsin interfaceorg.apache.flink.api.connector.source.SplitEnumeratorContext<SplitT extends org.apache.flink.api.connector.source.SourceSplit>
-
signalNoMoreSplits
public void signalNoMoreSplits(int subtask) - Specified by:
signalNoMoreSplitsin interfaceorg.apache.flink.api.connector.source.SplitEnumeratorContext<SplitT extends org.apache.flink.api.connector.source.SourceSplit>
-
signalIntermediateNoMoreSplits
public void signalIntermediateNoMoreSplits(int subtask) - Specified by:
signalIntermediateNoMoreSplitsin interfaceorg.apache.flink.api.connector.source.SupportsIntermediateNoMoreSplits
-
callAsync
public <T> void callAsync(Callable<T> callable, BiConsumer<T, Throwable> handler, long initialDelay, long period) - Specified by:
callAsyncin interfaceorg.apache.flink.api.connector.source.SplitEnumeratorContext<SplitT extends org.apache.flink.api.connector.source.SourceSplit>
-
callAsync
- Specified by:
callAsyncin interfaceorg.apache.flink.api.connector.source.SplitEnumeratorContext<SplitT extends org.apache.flink.api.connector.source.SourceSplit>
-
runInCoordinatorThread
If the runnable throws an Exception, the corresponding job is failed.- Specified by:
runInCoordinatorThreadin interfaceorg.apache.flink.api.connector.source.SplitEnumeratorContext<SplitT extends org.apache.flink.api.connector.source.SourceSplit>
-
close
- Specified by:
closein interfaceAutoCloseable- Throws:
InterruptedException
-
setIsProcessingBacklog
public void setIsProcessingBacklog(boolean isProcessingBacklog) - Specified by:
setIsProcessingBacklogin interfaceorg.apache.flink.api.connector.source.SplitEnumeratorContext<SplitT extends org.apache.flink.api.connector.source.SourceSplit>
-
isBacklog
public org.apache.flink.util.TernaryBoolean isBacklog()Returns whether the Source is processing backlog data. UNDEFINED is returned if it is not set by thesetIsProcessingBacklog(boolean)method.
-