Class IteratorSourceEnumerator<SplitT extends IteratorSourceSplit<?,?>>
- java.lang.Object
-
- org.apache.flink.api.connector.source.lib.util.IteratorSourceEnumerator<SplitT>
-
- Type Parameters:
SplitT- The type of the splits used by the source.
- All Implemented Interfaces:
AutoCloseable,CheckpointListener,SplitEnumerator<SplitT,Collection<SplitT>>,SupportsBatchSnapshot
@Public public class IteratorSourceEnumerator<SplitT extends IteratorSourceSplit<?,?>> extends Object implements SplitEnumerator<SplitT,Collection<SplitT>>, SupportsBatchSnapshot
ASplitEnumeratorfor iterator sources. Simply takes the pre-split set of splits and assigns it first-come-first-serve.
-
-
Constructor Summary
Constructors Constructor Description IteratorSourceEnumerator(SplitEnumeratorContext<SplitT> context, Collection<SplitT> splits)
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description voidaddReader(int subtaskId)Add a new source reader with the given subtask ID.voidaddSplitsBack(List<SplitT> splits, int subtaskId)Add splits back to the split enumerator.voidclose()Called to close the enumerator, in case it holds on to any resources, like threads or network connections.voidhandleSplitRequest(int subtaskId, String requesterHostname)Handles the request for a split.Collection<SplitT>snapshotState(long checkpointId)Creates a snapshot of the state of this split enumerator, to be stored in a checkpoint.voidstart()Start the split enumerator.-
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
-
Methods inherited from interface org.apache.flink.api.connector.source.SplitEnumerator
handleSourceEvent, notifyCheckpointComplete
-
-
-
-
Constructor Detail
-
IteratorSourceEnumerator
public IteratorSourceEnumerator(SplitEnumeratorContext<SplitT> context, Collection<SplitT> splits)
-
-
Method Detail
-
start
public void start()
Description copied from interface:SplitEnumeratorStart the split enumerator.The default behavior does nothing.
- Specified by:
startin interfaceSplitEnumerator<SplitT extends IteratorSourceSplit<?,?>,Collection<SplitT extends IteratorSourceSplit<?,?>>>
-
close
public void close()
Description copied from interface:SplitEnumeratorCalled to close the enumerator, in case it holds on to any resources, like threads or network connections.- Specified by:
closein interfaceAutoCloseable- Specified by:
closein interfaceSplitEnumerator<SplitT extends IteratorSourceSplit<?,?>,Collection<SplitT extends IteratorSourceSplit<?,?>>>
-
handleSplitRequest
public void handleSplitRequest(int subtaskId, @Nullable String requesterHostname)Description copied from interface:SplitEnumeratorHandles the request for a split. This method is called when the reader with the given subtask id calls theSourceReaderContext.sendSplitRequest()method.- Specified by:
handleSplitRequestin interfaceSplitEnumerator<SplitT extends IteratorSourceSplit<?,?>,Collection<SplitT extends IteratorSourceSplit<?,?>>>- Parameters:
subtaskId- the subtask id of the source reader who sent the source event.requesterHostname- Optional, the hostname where the requesting task is running. This can be used to make split assignments locality-aware.
-
addSplitsBack
public void addSplitsBack(List<SplitT> splits, int subtaskId)
Description copied from interface:SplitEnumeratorAdd splits back to the split enumerator. This will only happen when aSourceReaderfails and there are splits assigned to it after the last successful checkpoint.- Specified by:
addSplitsBackin interfaceSplitEnumerator<SplitT extends IteratorSourceSplit<?,?>,Collection<SplitT extends IteratorSourceSplit<?,?>>>- Parameters:
splits- The splits to add back to the enumerator for reassignment.subtaskId- The id of the subtask to which the returned splits belong.
-
snapshotState
public Collection<SplitT> snapshotState(long checkpointId) throws Exception
Description copied from interface:SplitEnumeratorCreates a snapshot of the state of this split enumerator, to be stored in a checkpoint.The snapshot should contain the latest state of the enumerator: It should assume that all operations that happened before the snapshot have successfully completed. For example all splits assigned to readers via
SplitEnumeratorContext.assignSplit(SourceSplit, int)andSplitEnumeratorContext.assignSplits(SplitsAssignment)) don't need to be included in the snapshot anymore.This method takes the ID of the checkpoint for which the state is snapshotted. Most implementations should be able to ignore this parameter, because for the contents of the snapshot, it doesn't matter for which checkpoint it gets created. This parameter can be interesting for source connectors with external systems where those systems are themselves aware of checkpoints; for example in cases where the enumerator notifies that system about a specific checkpoint being triggered.
- Specified by:
snapshotStatein interfaceSplitEnumerator<SplitT extends IteratorSourceSplit<?,?>,Collection<SplitT extends IteratorSourceSplit<?,?>>>- Parameters:
checkpointId- The ID of the checkpoint for which the snapshot is created.- Returns:
- an object containing the state of the split enumerator.
- Throws:
Exception- when the snapshot cannot be taken.
-
addReader
public void addReader(int subtaskId)
Description copied from interface:SplitEnumeratorAdd a new source reader with the given subtask ID.- Specified by:
addReaderin interfaceSplitEnumerator<SplitT extends IteratorSourceSplit<?,?>,Collection<SplitT extends IteratorSourceSplit<?,?>>>- Parameters:
subtaskId- the subtask ID of the new source reader.
-
-