blob: fb7c7646137269ee1999869291924eb0973d00d4 [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_181-google-v7) on Wed Aug 14 17:37:13 PDT 2019 -->
<title>DoFn.Teardown (Apache Beam 2.15.0-SNAPSHOT)</title>
<meta name="date" content="2019-08-14">
<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="DoFn.Teardown (Apache Beam 2.15.0-SNAPSHOT)";
}
}
catch(err) {
}
//-->
</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/DoFn.StateId.html" title="annotation in org.apache.beam.sdk.transforms"><span class="typeNameLink">Prev&nbsp;Class</span></a></li>
<li><a href="../../../../../org/apache/beam/sdk/transforms/DoFn.TimerId.html" title="annotation in org.apache.beam.sdk.transforms"><span class="typeNameLink">Next&nbsp;Class</span></a></li>
</ul>
<ul class="navList">
<li><a href="../../../../../index.html?org/apache/beam/sdk/transforms/DoFn.Teardown.html" target="_top">Frames</a></li>
<li><a href="DoFn.Teardown.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>Field&nbsp;|&nbsp;</li>
<li>Required&nbsp;|&nbsp;</li>
<li>Optional</li>
</ul>
<ul class="subNavList">
<li>Detail:&nbsp;</li>
<li>Field&nbsp;|&nbsp;</li>
<li>Element</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</div>
<h2 title="Annotation Type DoFn.Teardown" class="title">Annotation Type DoFn.Teardown</h2>
</div>
<div class="contentContainer">
<div class="description">
<ul class="blockList">
<li class="blockList">
<hr>
<br>
<pre>@Documented
@Retention(value=RUNTIME)
@Target(value=METHOD)
public static @interface <span class="memberNameLabel">DoFn.Teardown</span></pre>
<div class="block">Annotation for the method to use to clean up this instance before it is discarded. No other
method will be called after a call to the annotated method is made.
<p>A runner will do its best to call this method on any given instance to prevent leaks of
transient resources, however, there may be situations where this is impossible (e.g. process
crash, hardware failure, etc.) or unnecessary (e.g. the pipeline is shutting down and the
process is about to be killed anyway, so all transient resources will be released automatically
by the OS). In these cases, the call may not happen. It will also not be retried, because in
such situations the DoFn instance no longer exists, so there's no instance to retry it on.
<p>Thus, all work that depends on input elements, and all externally important side effects,
must be performed in the <a href="../../../../../org/apache/beam/sdk/transforms/DoFn.ProcessElement.html" title="annotation in org.apache.beam.sdk.transforms"><code>DoFn.ProcessElement</code></a> or <a href="../../../../../org/apache/beam/sdk/transforms/DoFn.FinishBundle.html" title="annotation in org.apache.beam.sdk.transforms"><code>DoFn.FinishBundle</code></a> methods.
<p>Example things that are a good idea to do in this method:
<ul>
<li>Close a network connection that was opened in <a href="../../../../../org/apache/beam/sdk/transforms/DoFn.Setup.html" title="annotation in org.apache.beam.sdk.transforms"><code>DoFn.Setup</code></a>
<li>Shut down a helper process that was started in <a href="../../../../../org/apache/beam/sdk/transforms/DoFn.Setup.html" title="annotation in org.apache.beam.sdk.transforms"><code>DoFn.Setup</code></a>
</ul>
<p>Example things that MUST NOT be done in this method:
<ul>
<li>Flushing a batch of buffered records to a database: this must be done in <a href="../../../../../org/apache/beam/sdk/transforms/DoFn.FinishBundle.html" title="annotation in org.apache.beam.sdk.transforms"><code>DoFn.FinishBundle</code></a>.
<li>Deleting temporary files on a distributed filesystem: this must be done using the
pipeline structure, e.g. using the <a href="../../../../../org/apache/beam/sdk/transforms/Wait.html" title="class in org.apache.beam.sdk.transforms"><code>Wait</code></a> transform.
</ul>
<p>The method annotated with this must satisfy the following constraint:
<ul>
<li>It must have zero arguments.
</ul></div>
</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/DoFn.StateId.html" title="annotation in org.apache.beam.sdk.transforms"><span class="typeNameLink">Prev&nbsp;Class</span></a></li>
<li><a href="../../../../../org/apache/beam/sdk/transforms/DoFn.TimerId.html" title="annotation in org.apache.beam.sdk.transforms"><span class="typeNameLink">Next&nbsp;Class</span></a></li>
</ul>
<ul class="navList">
<li><a href="../../../../../index.html?org/apache/beam/sdk/transforms/DoFn.Teardown.html" target="_top">Frames</a></li>
<li><a href="DoFn.Teardown.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>Field&nbsp;|&nbsp;</li>
<li>Required&nbsp;|&nbsp;</li>
<li>Optional</li>
</ul>
<ul class="subNavList">
<li>Detail:&nbsp;</li>
<li>Field&nbsp;|&nbsp;</li>
<li>Element</li>
</ul>
</div>
<a name="skip.navbar.bottom">
<!-- -->
</a></div>
<!-- ======== END OF BOTTOM NAVBAR ======= -->
</body>
</html>