@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 Row
s 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 DoFn
s should only
provide this method if they want to change this default behavior.