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 theOperatorCoordinator. Compared withSplitEnumeratorContextthis class allows interaction with state and sendingOperatorEventto the SourceOperator whileSplitEnumeratorContextonly allows sendingSourceEvent.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
Constructors Constructor Description 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 Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description voidassignSplits(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()intcurrentParallelism()org.apache.flink.util.TernaryBooleanisBacklog()Returns whether the Source is processing backlog data.org.apache.flink.metrics.groups.SplitEnumeratorMetricGroupmetricGroup()Map<Integer,org.apache.flink.api.connector.source.ReaderInfo>registeredReaders()Map<Integer,Map<Integer,org.apache.flink.api.connector.source.ReaderInfo>>registeredReadersOfAttempts()voidrunInCoordinatorThread(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)
-
-
-
Constructor Detail
-
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 Detail
-
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
public Map<Integer,org.apache.flink.api.connector.source.ReaderInfo> 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,org.apache.flink.api.connector.source.ReaderInfo>> registeredReadersOfAttempts()
- Specified by:
registeredReadersOfAttemptsin interfaceorg.apache.flink.api.connector.source.SplitEnumeratorContext<SplitT extends org.apache.flink.api.connector.source.SourceSplit>
-
assignSplits
public void assignSplits(org.apache.flink.api.connector.source.SplitsAssignment<SplitT> assignment)
- 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
public <T> void callAsync(Callable<T> callable, BiConsumer<T,Throwable> handler)
- Specified by:
callAsyncin interfaceorg.apache.flink.api.connector.source.SplitEnumeratorContext<SplitT extends org.apache.flink.api.connector.source.SourceSplit>
-
runInCoordinatorThread
public void runInCoordinatorThread(Runnable runnable)
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
public void close() throws InterruptedException- 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.
-
-