Enum Class PaneInfo.Timing
- All Implemented Interfaces:
Serializable
,Comparable<PaneInfo.Timing>
,Constable
- Enclosing class:
PaneInfo
Enumerates the possibilities for the timing of this pane firing related to the input and output
watermarks for its computation.
A window may fire multiple panes, and the timing of those panes generally follows the
regular expression EARLY* ON_TIME? LATE*
. Generally a pane is considered:
EARLY
if the system cannot be sure it has seen all data which may contribute to the pane's window.ON_TIME
if the system predicts it has seen all the data which may contribute to the pane's window.LATE
if the system has encountered new data after predicting no more could arrive. It is possible anON_TIME
pane has already been emitted, in which case any following panes are consideredLATE
.
Only an AfterWatermark.pastEndOfWindow()
trigger may produce an ON_TIME
pane.
With merging WindowFn
's, windows may be merged to produce new windows that satisfy
their own instance of the above regular expression. The only guarantee is that once a window
produces a final pane, it will not be merged into any new windows.
The predictions above are made using the mechanism of watermarks.
We can state some properties of LATE
and ON_TIME
panes, but first need some
definitions:
- We'll call a pipeline 'simple' if it does not use
DoFn.WindowedContext.outputWithTimestamp(OutputT, org.joda.time.Instant)
in anyDoFn
, and it uses the sameWindow.withAllowedLateness(org.joda.time.Duration)
argument value on all windows (or uses the default ofDuration.ZERO
). - We'll call an element 'locally late', from the point of view of a computation on a worker, if the element's timestamp is before the input watermark for that computation on that worker. The element is otherwise 'locally on-time'.
- We'll say 'the pane's timestamp' to mean the timestamp of the element produced to represent the pane's contents.
Then in simple pipelines:
- (Soundness) An
ON_TIME
pane can never cause a later computation to generate aLATE
pane. (If it did, it would imply a later computation's input watermark progressed ahead of an earlier stage's output watermark, which by design is not possible.) - (Liveness) An
ON_TIME
pane is emitted as soon as possible after the input watermark passes the end of the pane's window. - (Consistency) A pane with only locally on-time elements will always be
ON_TIME
. And aLATE
pane cannot contain locally on-time elements.
However, note that:
- An
ON_TIME
pane may contain locally late elements. It may even contain only locally late elements. Provided a locally late element finds its way into anON_TIME
pane its lateness becomes unobservable. - A
LATE
pane does not necessarily cause any following computation panes to be marked asLATE
.
-
Nested Class Summary
Nested classes/interfaces inherited from class java.lang.Enum
Enum.EnumDesc<E extends Enum<E>>
-
Enum Constant Summary
Enum ConstantsEnum ConstantDescriptionPane was fired before the input watermark had progressed after the end of the window.Pane was fired after the output watermark had progressed past the end of the window.Pane was fired by aAfterWatermark.pastEndOfWindow()
trigger because the input watermark progressed after the end of the window.This element was not produced in a triggered pane and its relation to input and output watermarks is unknown. -
Method Summary
Modifier and TypeMethodDescriptionstatic PaneInfo.Timing
Returns the enum constant of this class with the specified name.static PaneInfo.Timing[]
values()
Returns an array containing the constants of this enum class, in the order they are declared.
-
Enum Constant Details
-
EARLY
Pane was fired before the input watermark had progressed after the end of the window. -
ON_TIME
Pane was fired by aAfterWatermark.pastEndOfWindow()
trigger because the input watermark progressed after the end of the window. However the output watermark has not yet progressed after the end of the window. Thus it is still possible to assign a timestamp to the element representing this pane which cannot be considered locally late by any following computation. -
LATE
Pane was fired after the output watermark had progressed past the end of the window. -
UNKNOWN
This element was not produced in a triggered pane and its relation to input and output watermarks is unknown.
-
-
Method Details
-
values
Returns an array containing the constants of this enum class, in the order they are declared.- Returns:
- an array containing the constants of this enum class, in the order they are declared
-
valueOf
Returns the enum constant of this class with the specified name. The string must match exactly an identifier used to declare an enum constant in this class. (Extraneous whitespace characters are not permitted.)- Parameters:
name
- the name of the enum constant to be returned.- Returns:
- the enum constant with the specified name
- Throws:
IllegalArgumentException
- if this enum class has no constant with the specified nameNullPointerException
- if the argument is null
-