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
ASplitEnumerator
for 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 void
addReader(int subtaskId)
Add a new source reader with the given subtask ID.void
addSplitsBack(List<SplitT> splits, int subtaskId)
Add splits back to the split enumerator.void
close()
Called to close the enumerator, in case it holds on to any resources, like threads or network connections.void
handleSplitRequest(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.void
start()
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:SplitEnumerator
Start the split enumerator.The default behavior does nothing.
- Specified by:
start
in interfaceSplitEnumerator<SplitT extends IteratorSourceSplit<?,?>,Collection<SplitT extends IteratorSourceSplit<?,?>>>
-
close
public void close()
Description copied from interface:SplitEnumerator
Called to close the enumerator, in case it holds on to any resources, like threads or network connections.- Specified by:
close
in interfaceAutoCloseable
- Specified by:
close
in interfaceSplitEnumerator<SplitT extends IteratorSourceSplit<?,?>,Collection<SplitT extends IteratorSourceSplit<?,?>>>
-
handleSplitRequest
public void handleSplitRequest(int subtaskId, @Nullable String requesterHostname)
Description copied from interface:SplitEnumerator
Handles the request for a split. This method is called when the reader with the given subtask id calls theSourceReaderContext.sendSplitRequest()
method.- Specified by:
handleSplitRequest
in 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:SplitEnumerator
Add splits back to the split enumerator. This will only happen when aSourceReader
fails and there are splits assigned to it after the last successful checkpoint.- Specified by:
addSplitsBack
in 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:SplitEnumerator
Creates 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:
snapshotState
in 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:SplitEnumerator
Add a new source reader with the given subtask ID.- Specified by:
addReader
in interfaceSplitEnumerator<SplitT extends IteratorSourceSplit<?,?>,Collection<SplitT extends IteratorSourceSplit<?,?>>>
- Parameters:
subtaskId
- the subtask ID of the new source reader.
-
-