@Documented
@Retention(value=RUNTIME)
@Target(value=METHOD)
public static @interface DoFn.TruncateRestriction
DoFn into a bounded one.
This method is invoked when a pipeline is being drained.
This method is used to perform truncation of the restriction while it is not actively being processed.
Signature: @Nullable TruncateResult<RestrictionT> truncateRestriction(<arguments>);
This method must satisfy the following constraints:
DoFn.Element annotation, then it will be
passed the current element being processed; the argument must be of type InputT.
Note that automatic conversion of Rows and DoFn.FieldAccess parameters are
currently unsupported.
DoFn.Restriction annotation, then it will
be passed the current restriction being processed; the argument must be of type RestrictionT.
DoFn.Timestamp annotation, then it will be
passed the timestamp of the current element being processed; the argument must be of type
Instant.
RestrictionTracker, then it will be passed a tracker
that is initialized for the current DoFn.Restriction. The argument must be of the
exact type RestrictionTracker<RestrictionT, PositionT>.
BoundedWindow, then it will be passed the
window of the current element. When applied by ParDo the subtype of BoundedWindow must match the type of windows on the input PCollection. If the
window is not accessed a runner may perform additional optimizations.
PaneInfo, then it will be passed information
about the current triggering pane.
PipelineOptions, then it will be passed the
options for the current pipeline.
Returns a truncated restriction representing a bounded amount of work that must be processed
before the pipeline can be drained or null if no work is necessary.
The default behavior when a pipeline is being drained is that RestrictionTracker.IsBounded.BOUNDED
restrictions process entirely while RestrictionTracker.IsBounded.UNBOUNDED
restrictions process till a checkpoint is possible. Splittable DoFns should only
provide this method if they want to change this default behavior.