blob: 96d074ab2f8c979c9c32ca45700448c0e7837a6d [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 -->
<title>CloseableGroup</title>
<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="CloseableGroup";
}
}
catch(err) {
}
//-->
var methods = {"i0":10,"i1":10,"i2":10,"i3":10};
var tabs = {65535:["t0","All Methods"],2:["t2","Instance 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/iceberg/io/BaseTaskWriter.RollingFileWriter.html" title="class in org.apache.iceberg.io"><span class="typeNameLink">Prev&nbsp;Class</span></a></li>
<li><a href="../../../../org/apache/iceberg/io/CloseableIterable.html" title="interface in org.apache.iceberg.io"><span class="typeNameLink">Next&nbsp;Class</span></a></li>
</ul>
<ul class="navList">
<li><a href="../../../../index.html?org/apache/iceberg/io/CloseableGroup.html" target="_top">Frames</a></li>
<li><a href="CloseableGroup.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>Field&nbsp;|&nbsp;</li>
<li><a href="#constructor.summary">Constr</a>&nbsp;|&nbsp;</li>
<li><a href="#method.summary">Method</a></li>
</ul>
<ul class="subNavList">
<li>Detail:&nbsp;</li>
<li>Field&nbsp;|&nbsp;</li>
<li><a href="#constructor.detail">Constr</a>&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.iceberg.io</div>
<h2 title="Class CloseableGroup" class="title">Class CloseableGroup</h2>
</div>
<div class="contentContainer">
<ul class="inheritance">
<li>java.lang.Object</li>
<li>
<ul class="inheritance">
<li>org.apache.iceberg.io.CloseableGroup</li>
</ul>
</li>
</ul>
<div class="description">
<ul class="blockList">
<li class="blockList">
<dl>
<dt>All Implemented Interfaces:</dt>
<dd>java.io.Closeable, java.lang.AutoCloseable</dd>
</dl>
<dl>
<dt>Direct Known Subclasses:</dt>
<dd><a href="../../../../org/apache/iceberg/arrow/vectorized/ArrowReader.html" title="class in org.apache.iceberg.arrow.vectorized">ArrowReader</a>, <a href="../../../../org/apache/iceberg/avro/AvroIterable.html" title="class in org.apache.iceberg.avro">AvroIterable</a>, <a href="../../../../org/apache/iceberg/io/CloseableIterable.ConcatCloseableIterable.html" title="class in org.apache.iceberg.io">CloseableIterable.ConcatCloseableIterable</a>, <a href="../../../../org/apache/iceberg/ManifestReader.html" title="class in org.apache.iceberg">ManifestReader</a>, <a href="../../../../org/apache/iceberg/util/ParallelIterable.html" title="class in org.apache.iceberg.util">ParallelIterable</a>, <a href="../../../../org/apache/iceberg/parquet/ParquetIterable.html" title="class in org.apache.iceberg.parquet">ParquetIterable</a>, <a href="../../../../org/apache/iceberg/parquet/ParquetReader.html" title="class in org.apache.iceberg.parquet">ParquetReader</a>, <a href="../../../../org/apache/iceberg/util/SortedMerge.html" title="class in org.apache.iceberg.util">SortedMerge</a>, <a href="../../../../org/apache/iceberg/parquet/VectorizedParquetReader.html" title="class in org.apache.iceberg.parquet">VectorizedParquetReader</a>, <a href="../../../../org/apache/iceberg/arrow/vectorized/VectorizedTableScanIterable.html" title="class in org.apache.iceberg.arrow.vectorized">VectorizedTableScanIterable</a></dd>
</dl>
<hr>
<br>
<pre>public class <span class="typeNameLabel">CloseableGroup</span>
extends java.lang.Object
implements java.io.Closeable</pre>
<div class="block">This class acts as a helper for handling the closure of multiple resource.
It can be used for either inheritance or composition.
To use it, register resources to be closed via the add() calls, and call the corresponding close method when needed.
<p>
It can take both closeable and autocloseable objects, and handle closeable as autocloseable and guarantee close
idempotency by ensuring that each resource will be closed once even with concurrent close calls. It will also
wrap checked non-IO exceptions into runtime exceptions.
<p>
Users can choose to suppress close failure with this class. By default such failures are not suppressed.</div>
</li>
</ul>
</div>
<div class="summary">
<ul class="blockList">
<li class="blockList">
<!-- ======== CONSTRUCTOR SUMMARY ======== -->
<ul class="blockList">
<li class="blockList"><a name="constructor.summary">
<!-- -->
</a>
<h3>Constructor Summary</h3>
<table class="memberSummary" border="0" cellpadding="3" cellspacing="0" summary="Constructor Summary table, listing constructors, and an explanation">
<caption><span>Constructors</span><span class="tabEnd">&nbsp;</span></caption>
<tr>
<th class="colOne" scope="col">Constructor and Description</th>
</tr>
<tr class="altColor">
<td class="colOne"><code><span class="memberNameLink"><a href="../../../../org/apache/iceberg/io/CloseableGroup.html#CloseableGroup--">CloseableGroup</a></span>()</code>&nbsp;</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="t2" class="tableTab"><span><a href="javascript:show(2);">Instance 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>void</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/iceberg/io/CloseableGroup.html#addCloseable-java.lang.AutoCloseable-">addCloseable</a></span>(java.lang.AutoCloseable&nbsp;autoCloseable)</code>
<div class="block">Register an autocloseables to be managed by this class.</div>
</td>
</tr>
<tr id="i1" class="rowColor">
<td class="colFirst"><code>void</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/iceberg/io/CloseableGroup.html#addCloseable-java.io.Closeable-">addCloseable</a></span>(java.io.Closeable&nbsp;closeable)</code>
<div class="block">Register a closeable to be managed by this class.</div>
</td>
</tr>
<tr id="i2" class="altColor">
<td class="colFirst"><code>void</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/iceberg/io/CloseableGroup.html#close--">close</a></span>()</code>
<div class="block">Close all the registered resources.</div>
</td>
</tr>
<tr id="i3" class="rowColor">
<td class="colFirst"><code>void</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/iceberg/io/CloseableGroup.html#setSuppressCloseFailure-boolean-">setSuppressCloseFailure</a></span>(boolean&nbsp;shouldSuppress)</code>
<div class="block">Whether to suppress failure when any of the closeable this class tracks throws exception during closing.</div>
</td>
</tr>
</table>
<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>clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait</code></li>
</ul>
</li>
</ul>
</li>
</ul>
</div>
<div class="details">
<ul class="blockList">
<li class="blockList">
<!-- ========= CONSTRUCTOR DETAIL ======== -->
<ul class="blockList">
<li class="blockList"><a name="constructor.detail">
<!-- -->
</a>
<h3>Constructor Detail</h3>
<a name="CloseableGroup--">
<!-- -->
</a>
<ul class="blockListLast">
<li class="blockList">
<h4>CloseableGroup</h4>
<pre>public&nbsp;CloseableGroup()</pre>
</li>
</ul>
</li>
</ul>
<!-- ============ METHOD DETAIL ========== -->
<ul class="blockList">
<li class="blockList"><a name="method.detail">
<!-- -->
</a>
<h3>Method Detail</h3>
<a name="addCloseable-java.io.Closeable-">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>addCloseable</h4>
<pre>public&nbsp;void&nbsp;addCloseable(java.io.Closeable&nbsp;closeable)</pre>
<div class="block">Register a closeable to be managed by this class.</div>
</li>
</ul>
<a name="addCloseable-java.lang.AutoCloseable-">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>addCloseable</h4>
<pre>public&nbsp;void&nbsp;addCloseable(java.lang.AutoCloseable&nbsp;autoCloseable)</pre>
<div class="block">Register an autocloseables to be managed by this class. It will be handled as a closeable object.</div>
</li>
</ul>
<a name="setSuppressCloseFailure-boolean-">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>setSuppressCloseFailure</h4>
<pre>public&nbsp;void&nbsp;setSuppressCloseFailure(boolean&nbsp;shouldSuppress)</pre>
<div class="block">Whether to suppress failure when any of the closeable this class tracks throws exception during closing.
This could be helpful to ensure the close method of all resources to be called.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>shouldSuppress</code> - true if user wants to suppress close failures</dd>
</dl>
</li>
</ul>
<a name="close--">
<!-- -->
</a>
<ul class="blockListLast">
<li class="blockList">
<h4>close</h4>
<pre>public&nbsp;void&nbsp;close()
throws java.io.IOException</pre>
<div class="block">Close all the registered resources. Close method of each resource will only be called once.
Checked exception from AutoCloseable will be wrapped to runtime exception.</div>
<dl>
<dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
<dd><code>close</code>&nbsp;in interface&nbsp;<code>java.io.Closeable</code></dd>
<dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
<dd><code>close</code>&nbsp;in interface&nbsp;<code>java.lang.AutoCloseable</code></dd>
<dt><span class="throwsLabel">Throws:</span></dt>
<dd><code>java.io.IOException</code></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/iceberg/io/BaseTaskWriter.RollingFileWriter.html" title="class in org.apache.iceberg.io"><span class="typeNameLink">Prev&nbsp;Class</span></a></li>
<li><a href="../../../../org/apache/iceberg/io/CloseableIterable.html" title="interface in org.apache.iceberg.io"><span class="typeNameLink">Next&nbsp;Class</span></a></li>
</ul>
<ul class="navList">
<li><a href="../../../../index.html?org/apache/iceberg/io/CloseableGroup.html" target="_top">Frames</a></li>
<li><a href="CloseableGroup.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>Field&nbsp;|&nbsp;</li>
<li><a href="#constructor.summary">Constr</a>&nbsp;|&nbsp;</li>
<li><a href="#method.summary">Method</a></li>
</ul>
<ul class="subNavList">
<li>Detail:&nbsp;</li>
<li>Field&nbsp;|&nbsp;</li>
<li><a href="#constructor.detail">Constr</a>&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>