blob: bf3fdb5115fc7f174525afca6815a47e60085cfa [file] [log] [blame]
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<!-- NewPage -->
<html lang="en">
<head>
<!-- Generated by javadoc (1.8.0_161-google-v7) on Thu Oct 18 16:14:34 PDT 2018 -->
<title>PaneInfo.Timing (Apache Beam 2.8.0-SNAPSHOT)</title>
<meta name="date" content="2018-10-18">
<link rel="stylesheet" type="text/css" href="../../../../../../stylesheet.css" title="Style">
<script type="text/javascript" src="../../../../../../script.js"></script>
</head>
<body>
<script type="text/javascript"><!--
try {
if (location.href.indexOf('is-external=true') == -1) {
parent.document.title="PaneInfo.Timing (Apache Beam 2.8.0-SNAPSHOT)";
}
}
catch(err) {
}
//-->
var methods = {"i0":9,"i1":9};
var tabs = {65535:["t0","All Methods"],1:["t1","Static Methods"],8:["t4","Concrete Methods"]};
var altColor = "altColor";
var rowColor = "rowColor";
var tableTab = "tableTab";
var activeTableTab = "activeTableTab";
</script>
<noscript>
<div>JavaScript is disabled on your browser.</div>
</noscript>
<!-- ========= START OF TOP NAVBAR ======= -->
<div class="topNav"><a name="navbar.top">
<!-- -->
</a>
<div class="skipNav"><a href="#skip.navbar.top" title="Skip navigation links">Skip navigation links</a></div>
<a name="navbar.top.firstrow">
<!-- -->
</a>
<ul class="navList" title="Navigation">
<li><a href="../../../../../../overview-summary.html">Overview</a></li>
<li><a href="package-summary.html">Package</a></li>
<li class="navBarCell1Rev">Class</li>
<li><a href="package-tree.html">Tree</a></li>
<li><a href="../../../../../../deprecated-list.html">Deprecated</a></li>
<li><a href="../../../../../../index-all.html">Index</a></li>
<li><a href="../../../../../../help-doc.html">Help</a></li>
</ul>
</div>
<div class="subNav">
<ul class="navList">
<li><a href="../../../../../../org/apache/beam/sdk/transforms/windowing/PaneInfo.PaneInfoCoder.html" title="class in org.apache.beam.sdk.transforms.windowing"><span class="typeNameLink">Prev&nbsp;Class</span></a></li>
<li><a href="../../../../../../org/apache/beam/sdk/transforms/windowing/PartitioningWindowFn.html" title="class in org.apache.beam.sdk.transforms.windowing"><span class="typeNameLink">Next&nbsp;Class</span></a></li>
</ul>
<ul class="navList">
<li><a href="../../../../../../index.html?org/apache/beam/sdk/transforms/windowing/PaneInfo.Timing.html" target="_top">Frames</a></li>
<li><a href="PaneInfo.Timing.html" target="_top">No&nbsp;Frames</a></li>
</ul>
<ul class="navList" id="allclasses_navbar_top">
<li><a href="../../../../../../allclasses-noframe.html">All&nbsp;Classes</a></li>
</ul>
<div>
<script type="text/javascript"><!--
allClassesLink = document.getElementById("allclasses_navbar_top");
if(window==top) {
allClassesLink.style.display = "block";
}
else {
allClassesLink.style.display = "none";
}
//-->
</script>
</div>
<div>
<ul class="subNavList">
<li>Summary:&nbsp;</li>
<li>Nested&nbsp;|&nbsp;</li>
<li><a href="#enum.constant.summary">Enum Constants</a>&nbsp;|&nbsp;</li>
<li>Field&nbsp;|&nbsp;</li>
<li><a href="#method.summary">Method</a></li>
</ul>
<ul class="subNavList">
<li>Detail:&nbsp;</li>
<li><a href="#enum.constant.detail">Enum Constants</a>&nbsp;|&nbsp;</li>
<li>Field&nbsp;|&nbsp;</li>
<li><a href="#method.detail">Method</a></li>
</ul>
</div>
<a name="skip.navbar.top">
<!-- -->
</a></div>
<!-- ========= END OF TOP NAVBAR ========= -->
<!-- ======== START OF CLASS DATA ======== -->
<div class="header">
<div class="subTitle">org.apache.beam.sdk.transforms.windowing</div>
<h2 title="Enum PaneInfo.Timing" class="title">Enum PaneInfo.Timing</h2>
</div>
<div class="contentContainer">
<ul class="inheritance">
<li>java.lang.Object</li>
<li>
<ul class="inheritance">
<li>java.lang.Enum&lt;<a href="../../../../../../org/apache/beam/sdk/transforms/windowing/PaneInfo.Timing.html" title="enum in org.apache.beam.sdk.transforms.windowing">PaneInfo.Timing</a>&gt;</li>
<li>
<ul class="inheritance">
<li>org.apache.beam.sdk.transforms.windowing.PaneInfo.Timing</li>
</ul>
</li>
</ul>
</li>
</ul>
<div class="description">
<ul class="blockList">
<li class="blockList">
<dl>
<dt>All Implemented Interfaces:</dt>
<dd>java.io.Serializable, java.lang.Comparable&lt;<a href="../../../../../../org/apache/beam/sdk/transforms/windowing/PaneInfo.Timing.html" title="enum in org.apache.beam.sdk.transforms.windowing">PaneInfo.Timing</a>&gt;</dd>
</dl>
<dl>
<dt>Enclosing class:</dt>
<dd><a href="../../../../../../org/apache/beam/sdk/transforms/windowing/PaneInfo.html" title="class in org.apache.beam.sdk.transforms.windowing">PaneInfo</a></dd>
</dl>
<hr>
<br>
<pre>public static enum <span class="typeNameLabel">PaneInfo.Timing</span>
extends java.lang.Enum&lt;<a href="../../../../../../org/apache/beam/sdk/transforms/windowing/PaneInfo.Timing.html" title="enum in org.apache.beam.sdk.transforms.windowing">PaneInfo.Timing</a>&gt;</pre>
<div class="block">Enumerates the possibilities for the timing of this pane firing related to the input and output
watermarks for its computation.
<p>A window may fire multiple panes, and the timing of those panes generally follows the
regular expression <code>EARLY* ON_TIME? LATE*</code>. Generally a pane is considered:
<ol>
<li><code>EARLY</code> if the system cannot be sure it has seen all data which may contribute to
the pane's window.
<li><code>ON_TIME</code> if the system predicts it has seen all the data which may contribute to
the pane's window.
<li><code>LATE</code> if the system has encountered new data after predicting no more could
arrive. It is possible an <code>ON_TIME</code> pane has already been emitted, in which case
any following panes are considered <code>LATE</code>.
</ol>
<p>Only an <a href="../../../../../../org/apache/beam/sdk/transforms/windowing/AfterWatermark.html#pastEndOfWindow--"><code>AfterWatermark.pastEndOfWindow()</code></a> trigger may produce an <code>ON_TIME</code> pane.
With merging <a href="../../../../../../org/apache/beam/sdk/transforms/windowing/WindowFn.html" title="class in org.apache.beam.sdk.transforms.windowing"><code>WindowFn</code></a>'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.
<p>The predictions above are made using the mechanism of watermarks.
<p>We can state some properties of <code>LATE</code> and <code>ON_TIME</code> panes, but first need some
definitions:
<ol>
<li>We'll call a pipeline 'simple' if it does not use <a href="../../../../../../org/apache/beam/sdk/transforms/DoFn.WindowedContext.html#outputWithTimestamp-OutputT-org.joda.time.Instant-"><code>DoFn.WindowedContext.outputWithTimestamp(OutputT, org.joda.time.Instant)</code></a> in any <a href="../../../../../../org/apache/beam/sdk/transforms/DoFn.html" title="class in org.apache.beam.sdk.transforms"><code>DoFn</code></a>, and it uses the same <a href="../../../../../../org/apache/beam/sdk/transforms/windowing/Window.html#withAllowedLateness-org.joda.time.Duration-"><code>Window.withAllowedLateness(org.joda.time.Duration)</code></a> argument value on
all windows (or uses the default of <a href="http://www.joda.org/joda-time/apidocs/org/joda/time/Duration.html?is-external=true#ZERO" title="class or interface in org.joda.time"><code>Duration.ZERO</code></a>).
<li>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'.
<li>We'll say 'the pane's timestamp' to mean the timestamp of the element produced to
represent the pane's contents.
</ol>
<p>Then in simple pipelines:
<ol>
<li>(Soundness) An <code>ON_TIME</code> pane can never cause a later computation to generate a
<code>LATE</code> 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.)
<li>(Liveness) An <code>ON_TIME</code> pane is emitted as soon as possible after the input
watermark passes the end of the pane's window.
<li>(Consistency) A pane with only locally on-time elements will always be <code>ON_TIME</code>.
And a <code>LATE</code> pane cannot contain locally on-time elements.
</ol>
<p>However, note that:
<ol>
<li>An <code>ON_TIME</code> pane may contain locally late elements. It may even contain only
locally late elements. Provided a locally late element finds its way into an <code>ON_TIME</code> pane its lateness becomes unobservable.
<li>A <code>LATE</code> pane does not necessarily cause any following computation panes to be
marked as <code>LATE</code>.
</ol></div>
</li>
</ul>
</div>
<div class="summary">
<ul class="blockList">
<li class="blockList">
<!-- =========== ENUM CONSTANT SUMMARY =========== -->
<ul class="blockList">
<li class="blockList"><a name="enum.constant.summary">
<!-- -->
</a>
<h3>Enum Constant Summary</h3>
<table class="memberSummary" border="0" cellpadding="3" cellspacing="0" summary="Enum Constant Summary table, listing enum constants, and an explanation">
<caption><span>Enum Constants</span><span class="tabEnd">&nbsp;</span></caption>
<tr>
<th class="colOne" scope="col">Enum Constant and Description</th>
</tr>
<tr class="altColor">
<td class="colOne"><code><span class="memberNameLink"><a href="../../../../../../org/apache/beam/sdk/transforms/windowing/PaneInfo.Timing.html#EARLY">EARLY</a></span></code>
<div class="block">Pane was fired before the input watermark had progressed after the end of the window.</div>
</td>
</tr>
<tr class="rowColor">
<td class="colOne"><code><span class="memberNameLink"><a href="../../../../../../org/apache/beam/sdk/transforms/windowing/PaneInfo.Timing.html#LATE">LATE</a></span></code>
<div class="block">Pane was fired after the output watermark had progressed past the end of the window.</div>
</td>
</tr>
<tr class="altColor">
<td class="colOne"><code><span class="memberNameLink"><a href="../../../../../../org/apache/beam/sdk/transforms/windowing/PaneInfo.Timing.html#ON_TIME">ON_TIME</a></span></code>
<div class="block">Pane was fired by a <a href="../../../../../../org/apache/beam/sdk/transforms/windowing/AfterWatermark.html#pastEndOfWindow--"><code>AfterWatermark.pastEndOfWindow()</code></a> trigger because the input
watermark progressed after the end of the window.</div>
</td>
</tr>
<tr class="rowColor">
<td class="colOne"><code><span class="memberNameLink"><a href="../../../../../../org/apache/beam/sdk/transforms/windowing/PaneInfo.Timing.html#UNKNOWN">UNKNOWN</a></span></code>
<div class="block">This element was not produced in a triggered pane and its relation to input and output
watermarks is unknown.</div>
</td>
</tr>
</table>
</li>
</ul>
<!-- ========== METHOD SUMMARY =========== -->
<ul class="blockList">
<li class="blockList"><a name="method.summary">
<!-- -->
</a>
<h3>Method Summary</h3>
<table class="memberSummary" border="0" cellpadding="3" cellspacing="0" summary="Method Summary table, listing methods, and an explanation">
<caption><span id="t0" class="activeTableTab"><span>All Methods</span><span class="tabEnd">&nbsp;</span></span><span id="t1" class="tableTab"><span><a href="javascript:show(1);">Static Methods</a></span><span class="tabEnd">&nbsp;</span></span><span id="t4" class="tableTab"><span><a href="javascript:show(8);">Concrete Methods</a></span><span class="tabEnd">&nbsp;</span></span></caption>
<tr>
<th class="colFirst" scope="col">Modifier and Type</th>
<th class="colLast" scope="col">Method and Description</th>
</tr>
<tr id="i0" class="altColor">
<td class="colFirst"><code>static <a href="../../../../../../org/apache/beam/sdk/transforms/windowing/PaneInfo.Timing.html" title="enum in org.apache.beam.sdk.transforms.windowing">PaneInfo.Timing</a></code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/beam/sdk/transforms/windowing/PaneInfo.Timing.html#valueOf-java.lang.String-">valueOf</a></span>(java.lang.String&nbsp;name)</code>
<div class="block">Returns the enum constant of this type with the specified name.</div>
</td>
</tr>
<tr id="i1" class="rowColor">
<td class="colFirst"><code>static <a href="../../../../../../org/apache/beam/sdk/transforms/windowing/PaneInfo.Timing.html" title="enum in org.apache.beam.sdk.transforms.windowing">PaneInfo.Timing</a>[]</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/beam/sdk/transforms/windowing/PaneInfo.Timing.html#values--">values</a></span>()</code>
<div class="block">Returns an array containing the constants of this enum type, in
the order they are declared.</div>
</td>
</tr>
</table>
<ul class="blockList">
<li class="blockList"><a name="methods.inherited.from.class.java.lang.Enum">
<!-- -->
</a>
<h3>Methods inherited from class&nbsp;java.lang.Enum</h3>
<code>clone, compareTo, equals, finalize, getDeclaringClass, hashCode, name, ordinal, toString, valueOf</code></li>
</ul>
<ul class="blockList">
<li class="blockList"><a name="methods.inherited.from.class.java.lang.Object">
<!-- -->
</a>
<h3>Methods inherited from class&nbsp;java.lang.Object</h3>
<code>getClass, notify, notifyAll, wait, wait, wait</code></li>
</ul>
</li>
</ul>
</li>
</ul>
</div>
<div class="details">
<ul class="blockList">
<li class="blockList">
<!-- ============ ENUM CONSTANT DETAIL =========== -->
<ul class="blockList">
<li class="blockList"><a name="enum.constant.detail">
<!-- -->
</a>
<h3>Enum Constant Detail</h3>
<a name="EARLY">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>EARLY</h4>
<pre>public static final&nbsp;<a href="../../../../../../org/apache/beam/sdk/transforms/windowing/PaneInfo.Timing.html" title="enum in org.apache.beam.sdk.transforms.windowing">PaneInfo.Timing</a> EARLY</pre>
<div class="block">Pane was fired before the input watermark had progressed after the end of the window.</div>
</li>
</ul>
<a name="ON_TIME">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>ON_TIME</h4>
<pre>public static final&nbsp;<a href="../../../../../../org/apache/beam/sdk/transforms/windowing/PaneInfo.Timing.html" title="enum in org.apache.beam.sdk.transforms.windowing">PaneInfo.Timing</a> ON_TIME</pre>
<div class="block">Pane was fired by a <a href="../../../../../../org/apache/beam/sdk/transforms/windowing/AfterWatermark.html#pastEndOfWindow--"><code>AfterWatermark.pastEndOfWindow()</code></a> 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.</div>
</li>
</ul>
<a name="LATE">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>LATE</h4>
<pre>public static final&nbsp;<a href="../../../../../../org/apache/beam/sdk/transforms/windowing/PaneInfo.Timing.html" title="enum in org.apache.beam.sdk.transforms.windowing">PaneInfo.Timing</a> LATE</pre>
<div class="block">Pane was fired after the output watermark had progressed past the end of the window.</div>
</li>
</ul>
<a name="UNKNOWN">
<!-- -->
</a>
<ul class="blockListLast">
<li class="blockList">
<h4>UNKNOWN</h4>
<pre>public static final&nbsp;<a href="../../../../../../org/apache/beam/sdk/transforms/windowing/PaneInfo.Timing.html" title="enum in org.apache.beam.sdk.transforms.windowing">PaneInfo.Timing</a> UNKNOWN</pre>
<div class="block">This element was not produced in a triggered pane and its relation to input and output
watermarks is unknown.</div>
</li>
</ul>
</li>
</ul>
<!-- ============ METHOD DETAIL ========== -->
<ul class="blockList">
<li class="blockList"><a name="method.detail">
<!-- -->
</a>
<h3>Method Detail</h3>
<a name="values--">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>values</h4>
<pre>public static&nbsp;<a href="../../../../../../org/apache/beam/sdk/transforms/windowing/PaneInfo.Timing.html" title="enum in org.apache.beam.sdk.transforms.windowing">PaneInfo.Timing</a>[]&nbsp;values()</pre>
<div class="block">Returns an array containing the constants of this enum type, in
the order they are declared. This method may be used to iterate
over the constants as follows:
<pre>
for (PaneInfo.Timing c : PaneInfo.Timing.values())
&nbsp; System.out.println(c);
</pre></div>
<dl>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>an array containing the constants of this enum type, in the order they are declared</dd>
</dl>
</li>
</ul>
<a name="valueOf-java.lang.String-">
<!-- -->
</a>
<ul class="blockListLast">
<li class="blockList">
<h4>valueOf</h4>
<pre>public static&nbsp;<a href="../../../../../../org/apache/beam/sdk/transforms/windowing/PaneInfo.Timing.html" title="enum in org.apache.beam.sdk.transforms.windowing">PaneInfo.Timing</a>&nbsp;valueOf(java.lang.String&nbsp;name)</pre>
<div class="block">Returns the enum constant of this type with the specified name.
The string must match <i>exactly</i> an identifier used to declare an
enum constant in this type. (Extraneous whitespace characters are
not permitted.)</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>name</code> - the name of the enum constant to be returned.</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>the enum constant with the specified name</dd>
<dt><span class="throwsLabel">Throws:</span></dt>
<dd><code>java.lang.IllegalArgumentException</code> - if this enum type has no constant with the specified name</dd>
<dd><code>java.lang.NullPointerException</code> - if the argument is null</dd>
</dl>
</li>
</ul>
</li>
</ul>
</li>
</ul>
</div>
</div>
<!-- ========= END OF CLASS DATA ========= -->
<!-- ======= START OF BOTTOM NAVBAR ====== -->
<div class="bottomNav"><a name="navbar.bottom">
<!-- -->
</a>
<div class="skipNav"><a href="#skip.navbar.bottom" title="Skip navigation links">Skip navigation links</a></div>
<a name="navbar.bottom.firstrow">
<!-- -->
</a>
<ul class="navList" title="Navigation">
<li><a href="../../../../../../overview-summary.html">Overview</a></li>
<li><a href="package-summary.html">Package</a></li>
<li class="navBarCell1Rev">Class</li>
<li><a href="package-tree.html">Tree</a></li>
<li><a href="../../../../../../deprecated-list.html">Deprecated</a></li>
<li><a href="../../../../../../index-all.html">Index</a></li>
<li><a href="../../../../../../help-doc.html">Help</a></li>
</ul>
</div>
<div class="subNav">
<ul class="navList">
<li><a href="../../../../../../org/apache/beam/sdk/transforms/windowing/PaneInfo.PaneInfoCoder.html" title="class in org.apache.beam.sdk.transforms.windowing"><span class="typeNameLink">Prev&nbsp;Class</span></a></li>
<li><a href="../../../../../../org/apache/beam/sdk/transforms/windowing/PartitioningWindowFn.html" title="class in org.apache.beam.sdk.transforms.windowing"><span class="typeNameLink">Next&nbsp;Class</span></a></li>
</ul>
<ul class="navList">
<li><a href="../../../../../../index.html?org/apache/beam/sdk/transforms/windowing/PaneInfo.Timing.html" target="_top">Frames</a></li>
<li><a href="PaneInfo.Timing.html" target="_top">No&nbsp;Frames</a></li>
</ul>
<ul class="navList" id="allclasses_navbar_bottom">
<li><a href="../../../../../../allclasses-noframe.html">All&nbsp;Classes</a></li>
</ul>
<div>
<script type="text/javascript"><!--
allClassesLink = document.getElementById("allclasses_navbar_bottom");
if(window==top) {
allClassesLink.style.display = "block";
}
else {
allClassesLink.style.display = "none";
}
//-->
</script>
</div>
<div>
<ul class="subNavList">
<li>Summary:&nbsp;</li>
<li>Nested&nbsp;|&nbsp;</li>
<li><a href="#enum.constant.summary">Enum Constants</a>&nbsp;|&nbsp;</li>
<li>Field&nbsp;|&nbsp;</li>
<li><a href="#method.summary">Method</a></li>
</ul>
<ul class="subNavList">
<li>Detail:&nbsp;</li>
<li><a href="#enum.constant.detail">Enum Constants</a>&nbsp;|&nbsp;</li>
<li>Field&nbsp;|&nbsp;</li>
<li><a href="#method.detail">Method</a></li>
</ul>
</div>
<a name="skip.navbar.bottom">
<!-- -->
</a></div>
<!-- ======== END OF BOTTOM NAVBAR ======= -->
</body>
</html>