| <!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 --> |
| <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> |
| <title>FanOutOneBlockAsyncDFSOutput (Apache HBase 3.0.0-alpha-2-SNAPSHOT API)</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="FanOutOneBlockAsyncDFSOutput (Apache HBase 3.0.0-alpha-2-SNAPSHOT API)"; |
| } |
| } |
| catch(err) { |
| } |
| //--> |
| var methods = {"i0":10,"i1":10,"i2":10,"i3":10,"i4":10,"i5":10,"i6":10,"i7":10,"i8":10,"i9":10,"i10":10,"i11":10,"i12":10,"i13":10,"i14":10,"i15":10,"i16":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="class-use/FanOutOneBlockAsyncDFSOutput.html">Use</a></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/hadoop/hbase/io/asyncfs/AsyncFSOutputHelper.html" title="class in org.apache.hadoop.hbase.io.asyncfs"><span class="typeNameLink">Prev Class</span></a></li> |
| <li><a href="../../../../../../org/apache/hadoop/hbase/io/asyncfs/FanOutOneBlockAsyncDFSOutput.AckHandler.html" title="class in org.apache.hadoop.hbase.io.asyncfs"><span class="typeNameLink">Next Class</span></a></li> |
| </ul> |
| <ul class="navList"> |
| <li><a href="../../../../../../index.html?org/apache/hadoop/hbase/io/asyncfs/FanOutOneBlockAsyncDFSOutput.html" target="_top">Frames</a></li> |
| <li><a href="FanOutOneBlockAsyncDFSOutput.html" target="_top">No Frames</a></li> |
| </ul> |
| <ul class="navList" id="allclasses_navbar_top"> |
| <li><a href="../../../../../../allclasses-noframe.html">All 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: </li> |
| <li><a href="#nested.class.summary">Nested</a> | </li> |
| <li><a href="#field.summary">Field</a> | </li> |
| <li><a href="#constructor.summary">Constr</a> | </li> |
| <li><a href="#method.summary">Method</a></li> |
| </ul> |
| <ul class="subNavList"> |
| <li>Detail: </li> |
| <li><a href="#field.detail">Field</a> | </li> |
| <li><a href="#constructor.detail">Constr</a> | </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.hadoop.hbase.io.asyncfs</div> |
| <h2 title="Class FanOutOneBlockAsyncDFSOutput" class="title">Class FanOutOneBlockAsyncDFSOutput</h2> |
| </div> |
| <div class="contentContainer"> |
| <ul class="inheritance"> |
| <li><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">java.lang.Object</a></li> |
| <li> |
| <ul class="inheritance"> |
| <li>org.apache.hadoop.hbase.io.asyncfs.FanOutOneBlockAsyncDFSOutput</li> |
| </ul> |
| </li> |
| </ul> |
| <div class="description"> |
| <ul class="blockList"> |
| <li class="blockList"> |
| <dl> |
| <dt>All Implemented Interfaces:</dt> |
| <dd><a href="https://docs.oracle.com/javase/8/docs/api/java/io/Closeable.html?is-external=true" title="class or interface in java.io">Closeable</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/AutoCloseable.html?is-external=true" title="class or interface in java.lang">AutoCloseable</a>, <a href="../../../../../../org/apache/hadoop/hbase/io/asyncfs/AsyncFSOutput.html" title="interface in org.apache.hadoop.hbase.io.asyncfs">AsyncFSOutput</a></dd> |
| </dl> |
| <hr> |
| <br> |
| <pre>@InterfaceAudience.Private |
| public class <a href="../../../../../../src-html/org/apache/hadoop/hbase/io/asyncfs/FanOutOneBlockAsyncDFSOutput.html#line.97">FanOutOneBlockAsyncDFSOutput</a> |
| extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a> |
| implements <a href="../../../../../../org/apache/hadoop/hbase/io/asyncfs/AsyncFSOutput.html" title="interface in org.apache.hadoop.hbase.io.asyncfs">AsyncFSOutput</a></pre> |
| <div class="block">An asynchronous HDFS output stream implementation which fans out data to datanode and only |
| supports writing file with only one block. |
| <p> |
| Use the createOutput method in <a href="../../../../../../org/apache/hadoop/hbase/io/asyncfs/FanOutOneBlockAsyncDFSOutputHelper.html" title="class in org.apache.hadoop.hbase.io.asyncfs"><code>FanOutOneBlockAsyncDFSOutputHelper</code></a> to create. The mainly |
| usage of this class is implementing WAL, so we only expose a little HDFS configurations in the |
| method. And we place it here under io package because we want to make it independent of WAL |
| implementation thus easier to move it to HDFS project finally. |
| <p> |
| Note that, although we support pipelined flush, i.e, write new data and then flush before the |
| previous flush succeeds, the implementation is not thread safe, so you should not call its |
| methods concurrently. |
| <p> |
| Advantages compare to DFSOutputStream: |
| <ol> |
| <li>The fan out mechanism. This will reduce the latency.</li> |
| <li>Fail-fast when connection to datanode error. The WAL implementation could open new writer |
| ASAP.</li> |
| <li>We could benefit from netty's ByteBuf management mechanism.</li> |
| </ol></div> |
| </li> |
| </ul> |
| </div> |
| <div class="summary"> |
| <ul class="blockList"> |
| <li class="blockList"> |
| <!-- ======== NESTED CLASS SUMMARY ======== --> |
| <ul class="blockList"> |
| <li class="blockList"><a name="nested.class.summary"> |
| <!-- --> |
| </a> |
| <h3>Nested Class Summary</h3> |
| <table class="memberSummary" border="0" cellpadding="3" cellspacing="0" summary="Nested Class Summary table, listing nested classes, and an explanation"> |
| <caption><span>Nested Classes</span><span class="tabEnd"> </span></caption> |
| <tr> |
| <th class="colFirst" scope="col">Modifier and Type</th> |
| <th class="colLast" scope="col">Class and Description</th> |
| </tr> |
| <tr class="altColor"> |
| <td class="colFirst"><code>private class </code></td> |
| <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/io/asyncfs/FanOutOneBlockAsyncDFSOutput.AckHandler.html" title="class in org.apache.hadoop.hbase.io.asyncfs">FanOutOneBlockAsyncDFSOutput.AckHandler</a></span></code> </td> |
| </tr> |
| <tr class="rowColor"> |
| <td class="colFirst"><code>private static class </code></td> |
| <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/io/asyncfs/FanOutOneBlockAsyncDFSOutput.Callback.html" title="class in org.apache.hadoop.hbase.io.asyncfs">FanOutOneBlockAsyncDFSOutput.Callback</a></span></code> </td> |
| </tr> |
| <tr class="altColor"> |
| <td class="colFirst"><code>private static class </code></td> |
| <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/io/asyncfs/FanOutOneBlockAsyncDFSOutput.State.html" title="enum in org.apache.hadoop.hbase.io.asyncfs">FanOutOneBlockAsyncDFSOutput.State</a></span></code> </td> |
| </tr> |
| </table> |
| </li> |
| </ul> |
| <!-- =========== FIELD SUMMARY =========== --> |
| <ul class="blockList"> |
| <li class="blockList"><a name="field.summary"> |
| <!-- --> |
| </a> |
| <h3>Field Summary</h3> |
| <table class="memberSummary" border="0" cellpadding="3" cellspacing="0" summary="Field Summary table, listing fields, and an explanation"> |
| <caption><span>Fields</span><span class="tabEnd"> </span></caption> |
| <tr> |
| <th class="colFirst" scope="col">Modifier and Type</th> |
| <th class="colLast" scope="col">Field and Description</th> |
| </tr> |
| <tr class="altColor"> |
| <td class="colFirst"><code>private long</code></td> |
| <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/io/asyncfs/FanOutOneBlockAsyncDFSOutput.html#ackedBlockLength">ackedBlockLength</a></span></code> </td> |
| </tr> |
| <tr class="rowColor"> |
| <td class="colFirst"><code>private org.apache.hbase.thirdparty.io.netty.buffer.ByteBufAllocator</code></td> |
| <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/io/asyncfs/FanOutOneBlockAsyncDFSOutput.html#alloc">alloc</a></span></code> </td> |
| </tr> |
| <tr class="altColor"> |
| <td class="colFirst"><code>private org.apache.hadoop.hdfs.protocol.ExtendedBlock</code></td> |
| <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/io/asyncfs/FanOutOneBlockAsyncDFSOutput.html#block">block</a></span></code> </td> |
| </tr> |
| <tr class="rowColor"> |
| <td class="colFirst"><code>private org.apache.hbase.thirdparty.io.netty.buffer.ByteBuf</code></td> |
| <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/io/asyncfs/FanOutOneBlockAsyncDFSOutput.html#buf">buf</a></span></code> </td> |
| </tr> |
| <tr class="altColor"> |
| <td class="colFirst"><code>private org.apache.hadoop.hdfs.DFSClient</code></td> |
| <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/io/asyncfs/FanOutOneBlockAsyncDFSOutput.html#client">client</a></span></code> </td> |
| </tr> |
| <tr class="rowColor"> |
| <td class="colFirst"><code>private <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a></code></td> |
| <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/io/asyncfs/FanOutOneBlockAsyncDFSOutput.html#clientName">clientName</a></span></code> </td> |
| </tr> |
| <tr class="altColor"> |
| <td class="colFirst"><code>private org.apache.hadoop.conf.Configuration</code></td> |
| <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/io/asyncfs/FanOutOneBlockAsyncDFSOutput.html#conf">conf</a></span></code> </td> |
| </tr> |
| <tr class="rowColor"> |
| <td class="colFirst"><code>private <a href="https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a><org.apache.hbase.thirdparty.io.netty.channel.Channel></code></td> |
| <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/io/asyncfs/FanOutOneBlockAsyncDFSOutput.html#datanodeList">datanodeList</a></span></code> </td> |
| </tr> |
| <tr class="altColor"> |
| <td class="colFirst"><code>private org.apache.hadoop.hdfs.DistributedFileSystem</code></td> |
| <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/io/asyncfs/FanOutOneBlockAsyncDFSOutput.html#dfs">dfs</a></span></code> </td> |
| </tr> |
| <tr class="rowColor"> |
| <td class="colFirst"><code>private org.apache.hadoop.crypto.Encryptor</code></td> |
| <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/io/asyncfs/FanOutOneBlockAsyncDFSOutput.html#encryptor">encryptor</a></span></code> </td> |
| </tr> |
| <tr class="altColor"> |
| <td class="colFirst"><code>private long</code></td> |
| <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/io/asyncfs/FanOutOneBlockAsyncDFSOutput.html#fileId">fileId</a></span></code> </td> |
| </tr> |
| <tr class="rowColor"> |
| <td class="colFirst"><code>private org.apache.hadoop.hdfs.protocol.DatanodeInfo[]</code></td> |
| <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/io/asyncfs/FanOutOneBlockAsyncDFSOutput.html#locations">locations</a></span></code> </td> |
| </tr> |
| <tr class="altColor"> |
| <td class="colFirst"><code>private static int</code></td> |
| <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/io/asyncfs/FanOutOneBlockAsyncDFSOutput.html#MAX_DATA_LEN">MAX_DATA_LEN</a></span></code> </td> |
| </tr> |
| <tr class="rowColor"> |
| <td class="colFirst"><code>private int</code></td> |
| <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/io/asyncfs/FanOutOneBlockAsyncDFSOutput.html#maxDataLen">maxDataLen</a></span></code> </td> |
| </tr> |
| <tr class="altColor"> |
| <td class="colFirst"><code>private org.apache.hadoop.hdfs.protocol.ClientProtocol</code></td> |
| <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/io/asyncfs/FanOutOneBlockAsyncDFSOutput.html#namenode">namenode</a></span></code> </td> |
| </tr> |
| <tr class="rowColor"> |
| <td class="colFirst"><code>private long</code></td> |
| <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/io/asyncfs/FanOutOneBlockAsyncDFSOutput.html#nextPacketOffsetInBlock">nextPacketOffsetInBlock</a></span></code> </td> |
| </tr> |
| <tr class="altColor"> |
| <td class="colFirst"><code>private long</code></td> |
| <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/io/asyncfs/FanOutOneBlockAsyncDFSOutput.html#nextPacketSeqno">nextPacketSeqno</a></span></code> </td> |
| </tr> |
| <tr class="rowColor"> |
| <td class="colFirst"><code>private <a href="../../../../../../org/apache/hadoop/hbase/io/asyncfs/SendBufSizePredictor.html" title="class in org.apache.hadoop.hbase.io.asyncfs">SendBufSizePredictor</a></code></td> |
| <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/io/asyncfs/FanOutOneBlockAsyncDFSOutput.html#sendBufSizePRedictor">sendBufSizePRedictor</a></span></code> </td> |
| </tr> |
| <tr class="altColor"> |
| <td class="colFirst"><code>private <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a></code></td> |
| <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/io/asyncfs/FanOutOneBlockAsyncDFSOutput.html#src">src</a></span></code> </td> |
| </tr> |
| <tr class="rowColor"> |
| <td class="colFirst"><code>private <a href="../../../../../../org/apache/hadoop/hbase/io/asyncfs/FanOutOneBlockAsyncDFSOutput.State.html" title="enum in org.apache.hadoop.hbase.io.asyncfs">FanOutOneBlockAsyncDFSOutput.State</a></code></td> |
| <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/io/asyncfs/FanOutOneBlockAsyncDFSOutput.html#state">state</a></span></code> </td> |
| </tr> |
| <tr class="altColor"> |
| <td class="colFirst"><code>private org.apache.hadoop.util.DataChecksum</code></td> |
| <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/io/asyncfs/FanOutOneBlockAsyncDFSOutput.html#summer">summer</a></span></code> </td> |
| </tr> |
| <tr class="rowColor"> |
| <td class="colFirst"><code>private int</code></td> |
| <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/io/asyncfs/FanOutOneBlockAsyncDFSOutput.html#trailingPartialChunkLength">trailingPartialChunkLength</a></span></code> </td> |
| </tr> |
| <tr class="altColor"> |
| <td class="colFirst"><code>private <a href="https://docs.oracle.com/javase/8/docs/api/java/util/concurrent/ConcurrentLinkedDeque.html?is-external=true" title="class or interface in java.util.concurrent">ConcurrentLinkedDeque</a><<a href="../../../../../../org/apache/hadoop/hbase/io/asyncfs/FanOutOneBlockAsyncDFSOutput.Callback.html" title="class in org.apache.hadoop.hbase.io.asyncfs">FanOutOneBlockAsyncDFSOutput.Callback</a>></code></td> |
| <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/io/asyncfs/FanOutOneBlockAsyncDFSOutput.html#waitingAckQueue">waitingAckQueue</a></span></code> </td> |
| </tr> |
| </table> |
| </li> |
| </ul> |
| <!-- ======== 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"> </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/hadoop/hbase/io/asyncfs/FanOutOneBlockAsyncDFSOutput.html#FanOutOneBlockAsyncDFSOutput-org.apache.hadoop.conf.Configuration-org.apache.hadoop.hdfs.DistributedFileSystem-org.apache.hadoop.hdfs.DFSClient-org.apache.hadoop.hdfs.protocol.ClientProtocol-java.lang.String-java.lang.String-long-org.apache.hadoop.hdfs.protocol.LocatedBlock-org.apache.hadoop.crypto.Encryptor-java.util.List-org.apache.hadoop.util.DataChecksum-org.apache.hbase.thirdparty.io.netty.buffer.ByteBufAllocator-">FanOutOneBlockAsyncDFSOutput</a></span>(org.apache.hadoop.conf.Configuration conf, |
| org.apache.hadoop.hdfs.DistributedFileSystem dfs, |
| org.apache.hadoop.hdfs.DFSClient client, |
| org.apache.hadoop.hdfs.protocol.ClientProtocol namenode, |
| <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a> clientName, |
| <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a> src, |
| long fileId, |
| org.apache.hadoop.hdfs.protocol.LocatedBlock locatedBlock, |
| org.apache.hadoop.crypto.Encryptor encryptor, |
| <a href="https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a><org.apache.hbase.thirdparty.io.netty.channel.Channel> datanodeList, |
| org.apache.hadoop.util.DataChecksum summer, |
| org.apache.hbase.thirdparty.io.netty.buffer.ByteBufAllocator alloc)</code> </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"> </span></span><span id="t2" class="tableTab"><span><a href="javascript:show(2);">Instance Methods</a></span><span class="tabEnd"> </span></span><span id="t4" class="tableTab"><span><a href="javascript:show(8);">Concrete Methods</a></span><span class="tabEnd"> </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>int</code></td> |
| <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/io/asyncfs/FanOutOneBlockAsyncDFSOutput.html#buffered--">buffered</a></span>()</code> |
| <div class="block">Return the current size of buffered data.</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/hadoop/hbase/io/asyncfs/FanOutOneBlockAsyncDFSOutput.html#close--">close</a></span>()</code> |
| <div class="block">End the current block and complete file at namenode.</div> |
| </td> |
| </tr> |
| <tr id="i2" class="altColor"> |
| <td class="colFirst"><code>private void</code></td> |
| <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/io/asyncfs/FanOutOneBlockAsyncDFSOutput.html#completed-org.apache.hbase.thirdparty.io.netty.channel.Channel-">completed</a></span>(org.apache.hbase.thirdparty.io.netty.channel.Channel channel)</code> </td> |
| </tr> |
| <tr id="i3" class="rowColor"> |
| <td class="colFirst"><code>private void</code></td> |
| <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/io/asyncfs/FanOutOneBlockAsyncDFSOutput.html#endBlock--">endBlock</a></span>()</code> </td> |
| </tr> |
| <tr id="i4" class="altColor"> |
| <td class="colFirst"><code>private void</code></td> |
| <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/io/asyncfs/FanOutOneBlockAsyncDFSOutput.html#failed-org.apache.hbase.thirdparty.io.netty.channel.Channel-java.util.function.Supplier-">failed</a></span>(org.apache.hbase.thirdparty.io.netty.channel.Channel channel, |
| <a href="https://docs.oracle.com/javase/8/docs/api/java/util/function/Supplier.html?is-external=true" title="class or interface in java.util.function">Supplier</a><<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Throwable.html?is-external=true" title="class or interface in java.lang">Throwable</a>> errorSupplier)</code> </td> |
| </tr> |
| <tr id="i5" class="rowColor"> |
| <td class="colFirst"><code><a href="https://docs.oracle.com/javase/8/docs/api/java/util/concurrent/CompletableFuture.html?is-external=true" title="class or interface in java.util.concurrent">CompletableFuture</a><<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Long.html?is-external=true" title="class or interface in java.lang">Long</a>></code></td> |
| <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/io/asyncfs/FanOutOneBlockAsyncDFSOutput.html#flush-boolean-">flush</a></span>(boolean syncBlock)</code> |
| <div class="block">Flush the buffer out to datanodes.</div> |
| </td> |
| </tr> |
| <tr id="i6" class="altColor"> |
| <td class="colFirst"><code>private void</code></td> |
| <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/io/asyncfs/FanOutOneBlockAsyncDFSOutput.html#flush0-java.util.concurrent.CompletableFuture-boolean-">flush0</a></span>(<a href="https://docs.oracle.com/javase/8/docs/api/java/util/concurrent/CompletableFuture.html?is-external=true" title="class or interface in java.util.concurrent">CompletableFuture</a><<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Long.html?is-external=true" title="class or interface in java.lang">Long</a>> future, |
| boolean syncBlock)</code> </td> |
| </tr> |
| <tr id="i7" class="rowColor"> |
| <td class="colFirst"><code>private void</code></td> |
| <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/io/asyncfs/FanOutOneBlockAsyncDFSOutput.html#flushBuffer-java.util.concurrent.CompletableFuture-org.apache.hbase.thirdparty.io.netty.buffer.ByteBuf-long-boolean-">flushBuffer</a></span>(<a href="https://docs.oracle.com/javase/8/docs/api/java/util/concurrent/CompletableFuture.html?is-external=true" title="class or interface in java.util.concurrent">CompletableFuture</a><<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Long.html?is-external=true" title="class or interface in java.lang">Long</a>> future, |
| org.apache.hbase.thirdparty.io.netty.buffer.ByteBuf dataBuf, |
| long nextPacketOffsetInBlock, |
| boolean syncBlock)</code> </td> |
| </tr> |
| <tr id="i8" class="altColor"> |
| <td class="colFirst"><code>org.apache.hadoop.hdfs.protocol.DatanodeInfo[]</code></td> |
| <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/io/asyncfs/FanOutOneBlockAsyncDFSOutput.html#getPipeline--">getPipeline</a></span>()</code> |
| <div class="block">Return current pipeline.</div> |
| </td> |
| </tr> |
| <tr id="i9" class="rowColor"> |
| <td class="colFirst"><code>long</code></td> |
| <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/io/asyncfs/FanOutOneBlockAsyncDFSOutput.html#getSyncedLength--">getSyncedLength</a></span>()</code> </td> |
| </tr> |
| <tr id="i10" class="altColor"> |
| <td class="colFirst"><code>boolean</code></td> |
| <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/io/asyncfs/FanOutOneBlockAsyncDFSOutput.html#isBroken--">isBroken</a></span>()</code> |
| <div class="block">Whether the stream is broken.</div> |
| </td> |
| </tr> |
| <tr id="i11" class="rowColor"> |
| <td class="colFirst"><code>void</code></td> |
| <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/io/asyncfs/FanOutOneBlockAsyncDFSOutput.html#recoverAndClose-org.apache.hadoop.hbase.util.CancelableProgressable-">recoverAndClose</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/util/CancelableProgressable.html" title="interface in org.apache.hadoop.hbase.util">CancelableProgressable</a> reporter)</code> |
| <div class="block">The close method when error occurred.</div> |
| </td> |
| </tr> |
| <tr id="i12" class="altColor"> |
| <td class="colFirst"><code>private void</code></td> |
| <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/io/asyncfs/FanOutOneBlockAsyncDFSOutput.html#setupReceiver-int-">setupReceiver</a></span>(int timeoutMs)</code> </td> |
| </tr> |
| <tr id="i13" class="rowColor"> |
| <td class="colFirst"><code>void</code></td> |
| <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/io/asyncfs/FanOutOneBlockAsyncDFSOutput.html#write-byte:A-">write</a></span>(byte[] b)</code> |
| <div class="block">Just call write(b, 0, b.length).</div> |
| </td> |
| </tr> |
| <tr id="i14" class="altColor"> |
| <td class="colFirst"><code>void</code></td> |
| <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/io/asyncfs/FanOutOneBlockAsyncDFSOutput.html#write-byte:A-int-int-">write</a></span>(byte[] b, |
| int off, |
| int len)</code> |
| <div class="block">Copy the data into the buffer.</div> |
| </td> |
| </tr> |
| <tr id="i15" class="rowColor"> |
| <td class="colFirst"><code>void</code></td> |
| <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/io/asyncfs/FanOutOneBlockAsyncDFSOutput.html#write-java.nio.ByteBuffer-">write</a></span>(<a href="https://docs.oracle.com/javase/8/docs/api/java/nio/ByteBuffer.html?is-external=true" title="class or interface in java.nio">ByteBuffer</a> bb)</code> |
| <div class="block">Copy the data in the given <code>bb</code> into the buffer.</div> |
| </td> |
| </tr> |
| <tr id="i16" class="altColor"> |
| <td class="colFirst"><code>void</code></td> |
| <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/io/asyncfs/FanOutOneBlockAsyncDFSOutput.html#writeInt-int-">writeInt</a></span>(int i)</code> |
| <div class="block">Write an int to the buffer.</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 java.lang.<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a></h3> |
| <code><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#clone--" title="class or interface in java.lang">clone</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#equals-java.lang.Object-" title="class or interface in java.lang">equals</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#finalize--" title="class or interface in java.lang">finalize</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#getClass--" title="class or interface in java.lang">getClass</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#hashCode--" title="class or interface in java.lang">hashCode</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notify--" title="class or interface in java.lang">notify</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notifyAll--" title="class or interface in java.lang">notifyAll</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#toString--" title="class or interface in java.lang">toString</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait--" title="class or interface in java.lang">wait</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-" title="class or interface in java.lang">wait</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-int-" title="class or interface in java.lang">wait</a></code></li> |
| </ul> |
| </li> |
| </ul> |
| </li> |
| </ul> |
| </div> |
| <div class="details"> |
| <ul class="blockList"> |
| <li class="blockList"> |
| <!-- ============ FIELD DETAIL =========== --> |
| <ul class="blockList"> |
| <li class="blockList"><a name="field.detail"> |
| <!-- --> |
| </a> |
| <h3>Field Detail</h3> |
| <a name="MAX_DATA_LEN"> |
| <!-- --> |
| </a> |
| <ul class="blockList"> |
| <li class="blockList"> |
| <h4>MAX_DATA_LEN</h4> |
| <pre>private static final int <a href="../../../../../../src-html/org/apache/hadoop/hbase/io/asyncfs/FanOutOneBlockAsyncDFSOutput.html#line.101">MAX_DATA_LEN</a></pre> |
| <dl> |
| <dt><span class="seeLabel">See Also:</span></dt> |
| <dd><a href="../../../../../../constant-values.html#org.apache.hadoop.hbase.io.asyncfs.FanOutOneBlockAsyncDFSOutput.MAX_DATA_LEN">Constant Field Values</a></dd> |
| </dl> |
| </li> |
| </ul> |
| <a name="conf"> |
| <!-- --> |
| </a> |
| <ul class="blockList"> |
| <li class="blockList"> |
| <h4>conf</h4> |
| <pre>private final org.apache.hadoop.conf.Configuration <a href="../../../../../../src-html/org/apache/hadoop/hbase/io/asyncfs/FanOutOneBlockAsyncDFSOutput.html#line.103">conf</a></pre> |
| </li> |
| </ul> |
| <a name="dfs"> |
| <!-- --> |
| </a> |
| <ul class="blockList"> |
| <li class="blockList"> |
| <h4>dfs</h4> |
| <pre>private final org.apache.hadoop.hdfs.DistributedFileSystem <a href="../../../../../../src-html/org/apache/hadoop/hbase/io/asyncfs/FanOutOneBlockAsyncDFSOutput.html#line.105">dfs</a></pre> |
| </li> |
| </ul> |
| <a name="client"> |
| <!-- --> |
| </a> |
| <ul class="blockList"> |
| <li class="blockList"> |
| <h4>client</h4> |
| <pre>private final org.apache.hadoop.hdfs.DFSClient <a href="../../../../../../src-html/org/apache/hadoop/hbase/io/asyncfs/FanOutOneBlockAsyncDFSOutput.html#line.107">client</a></pre> |
| </li> |
| </ul> |
| <a name="namenode"> |
| <!-- --> |
| </a> |
| <ul class="blockList"> |
| <li class="blockList"> |
| <h4>namenode</h4> |
| <pre>private final org.apache.hadoop.hdfs.protocol.ClientProtocol <a href="../../../../../../src-html/org/apache/hadoop/hbase/io/asyncfs/FanOutOneBlockAsyncDFSOutput.html#line.109">namenode</a></pre> |
| </li> |
| </ul> |
| <a name="clientName"> |
| <!-- --> |
| </a> |
| <ul class="blockList"> |
| <li class="blockList"> |
| <h4>clientName</h4> |
| <pre>private final <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a> <a href="../../../../../../src-html/org/apache/hadoop/hbase/io/asyncfs/FanOutOneBlockAsyncDFSOutput.html#line.111">clientName</a></pre> |
| </li> |
| </ul> |
| <a name="src"> |
| <!-- --> |
| </a> |
| <ul class="blockList"> |
| <li class="blockList"> |
| <h4>src</h4> |
| <pre>private final <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a> <a href="../../../../../../src-html/org/apache/hadoop/hbase/io/asyncfs/FanOutOneBlockAsyncDFSOutput.html#line.113">src</a></pre> |
| </li> |
| </ul> |
| <a name="fileId"> |
| <!-- --> |
| </a> |
| <ul class="blockList"> |
| <li class="blockList"> |
| <h4>fileId</h4> |
| <pre>private final long <a href="../../../../../../src-html/org/apache/hadoop/hbase/io/asyncfs/FanOutOneBlockAsyncDFSOutput.html#line.115">fileId</a></pre> |
| </li> |
| </ul> |
| <a name="block"> |
| <!-- --> |
| </a> |
| <ul class="blockList"> |
| <li class="blockList"> |
| <h4>block</h4> |
| <pre>private final org.apache.hadoop.hdfs.protocol.ExtendedBlock <a href="../../../../../../src-html/org/apache/hadoop/hbase/io/asyncfs/FanOutOneBlockAsyncDFSOutput.html#line.117">block</a></pre> |
| </li> |
| </ul> |
| <a name="locations"> |
| <!-- --> |
| </a> |
| <ul class="blockList"> |
| <li class="blockList"> |
| <h4>locations</h4> |
| <pre>private final org.apache.hadoop.hdfs.protocol.DatanodeInfo[] <a href="../../../../../../src-html/org/apache/hadoop/hbase/io/asyncfs/FanOutOneBlockAsyncDFSOutput.html#line.119">locations</a></pre> |
| </li> |
| </ul> |
| <a name="encryptor"> |
| <!-- --> |
| </a> |
| <ul class="blockList"> |
| <li class="blockList"> |
| <h4>encryptor</h4> |
| <pre>private final org.apache.hadoop.crypto.Encryptor <a href="../../../../../../src-html/org/apache/hadoop/hbase/io/asyncfs/FanOutOneBlockAsyncDFSOutput.html#line.121">encryptor</a></pre> |
| </li> |
| </ul> |
| <a name="datanodeList"> |
| <!-- --> |
| </a> |
| <ul class="blockList"> |
| <li class="blockList"> |
| <h4>datanodeList</h4> |
| <pre>private final <a href="https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a><org.apache.hbase.thirdparty.io.netty.channel.Channel> <a href="../../../../../../src-html/org/apache/hadoop/hbase/io/asyncfs/FanOutOneBlockAsyncDFSOutput.html#line.123">datanodeList</a></pre> |
| </li> |
| </ul> |
| <a name="summer"> |
| <!-- --> |
| </a> |
| <ul class="blockList"> |
| <li class="blockList"> |
| <h4>summer</h4> |
| <pre>private final org.apache.hadoop.util.DataChecksum <a href="../../../../../../src-html/org/apache/hadoop/hbase/io/asyncfs/FanOutOneBlockAsyncDFSOutput.html#line.125">summer</a></pre> |
| </li> |
| </ul> |
| <a name="maxDataLen"> |
| <!-- --> |
| </a> |
| <ul class="blockList"> |
| <li class="blockList"> |
| <h4>maxDataLen</h4> |
| <pre>private final int <a href="../../../../../../src-html/org/apache/hadoop/hbase/io/asyncfs/FanOutOneBlockAsyncDFSOutput.html#line.127">maxDataLen</a></pre> |
| </li> |
| </ul> |
| <a name="alloc"> |
| <!-- --> |
| </a> |
| <ul class="blockList"> |
| <li class="blockList"> |
| <h4>alloc</h4> |
| <pre>private final org.apache.hbase.thirdparty.io.netty.buffer.ByteBufAllocator <a href="../../../../../../src-html/org/apache/hadoop/hbase/io/asyncfs/FanOutOneBlockAsyncDFSOutput.html#line.129">alloc</a></pre> |
| </li> |
| </ul> |
| <a name="waitingAckQueue"> |
| <!-- --> |
| </a> |
| <ul class="blockList"> |
| <li class="blockList"> |
| <h4>waitingAckQueue</h4> |
| <pre>private final <a href="https://docs.oracle.com/javase/8/docs/api/java/util/concurrent/ConcurrentLinkedDeque.html?is-external=true" title="class or interface in java.util.concurrent">ConcurrentLinkedDeque</a><<a href="../../../../../../org/apache/hadoop/hbase/io/asyncfs/FanOutOneBlockAsyncDFSOutput.Callback.html" title="class in org.apache.hadoop.hbase.io.asyncfs">FanOutOneBlockAsyncDFSOutput.Callback</a>> <a href="../../../../../../src-html/org/apache/hadoop/hbase/io/asyncfs/FanOutOneBlockAsyncDFSOutput.html#line.154">waitingAckQueue</a></pre> |
| </li> |
| </ul> |
| <a name="ackedBlockLength"> |
| <!-- --> |
| </a> |
| <ul class="blockList"> |
| <li class="blockList"> |
| <h4>ackedBlockLength</h4> |
| <pre>private volatile long <a href="../../../../../../src-html/org/apache/hadoop/hbase/io/asyncfs/FanOutOneBlockAsyncDFSOutput.html#line.156">ackedBlockLength</a></pre> |
| </li> |
| </ul> |
| <a name="nextPacketOffsetInBlock"> |
| <!-- --> |
| </a> |
| <ul class="blockList"> |
| <li class="blockList"> |
| <h4>nextPacketOffsetInBlock</h4> |
| <pre>private long <a href="../../../../../../src-html/org/apache/hadoop/hbase/io/asyncfs/FanOutOneBlockAsyncDFSOutput.html#line.160">nextPacketOffsetInBlock</a></pre> |
| </li> |
| </ul> |
| <a name="trailingPartialChunkLength"> |
| <!-- --> |
| </a> |
| <ul class="blockList"> |
| <li class="blockList"> |
| <h4>trailingPartialChunkLength</h4> |
| <pre>private int <a href="../../../../../../src-html/org/apache/hadoop/hbase/io/asyncfs/FanOutOneBlockAsyncDFSOutput.html#line.164">trailingPartialChunkLength</a></pre> |
| </li> |
| </ul> |
| <a name="nextPacketSeqno"> |
| <!-- --> |
| </a> |
| <ul class="blockList"> |
| <li class="blockList"> |
| <h4>nextPacketSeqno</h4> |
| <pre>private long <a href="../../../../../../src-html/org/apache/hadoop/hbase/io/asyncfs/FanOutOneBlockAsyncDFSOutput.html#line.166">nextPacketSeqno</a></pre> |
| </li> |
| </ul> |
| <a name="buf"> |
| <!-- --> |
| </a> |
| <ul class="blockList"> |
| <li class="blockList"> |
| <h4>buf</h4> |
| <pre>private org.apache.hbase.thirdparty.io.netty.buffer.ByteBuf <a href="../../../../../../src-html/org/apache/hadoop/hbase/io/asyncfs/FanOutOneBlockAsyncDFSOutput.html#line.168">buf</a></pre> |
| </li> |
| </ul> |
| <a name="sendBufSizePRedictor"> |
| <!-- --> |
| </a> |
| <ul class="blockList"> |
| <li class="blockList"> |
| <h4>sendBufSizePRedictor</h4> |
| <pre>private final <a href="../../../../../../org/apache/hadoop/hbase/io/asyncfs/SendBufSizePredictor.html" title="class in org.apache.hadoop.hbase.io.asyncfs">SendBufSizePredictor</a> <a href="../../../../../../src-html/org/apache/hadoop/hbase/io/asyncfs/FanOutOneBlockAsyncDFSOutput.html#line.170">sendBufSizePRedictor</a></pre> |
| </li> |
| </ul> |
| <a name="state"> |
| <!-- --> |
| </a> |
| <ul class="blockListLast"> |
| <li class="blockList"> |
| <h4>state</h4> |
| <pre>private volatile <a href="../../../../../../org/apache/hadoop/hbase/io/asyncfs/FanOutOneBlockAsyncDFSOutput.State.html" title="enum in org.apache.hadoop.hbase.io.asyncfs">FanOutOneBlockAsyncDFSOutput.State</a> <a href="../../../../../../src-html/org/apache/hadoop/hbase/io/asyncfs/FanOutOneBlockAsyncDFSOutput.html#line.177">state</a></pre> |
| </li> |
| </ul> |
| </li> |
| </ul> |
| <!-- ========= CONSTRUCTOR DETAIL ======== --> |
| <ul class="blockList"> |
| <li class="blockList"><a name="constructor.detail"> |
| <!-- --> |
| </a> |
| <h3>Constructor Detail</h3> |
| <a name="FanOutOneBlockAsyncDFSOutput-org.apache.hadoop.conf.Configuration-org.apache.hadoop.hdfs.DistributedFileSystem-org.apache.hadoop.hdfs.DFSClient-org.apache.hadoop.hdfs.protocol.ClientProtocol-java.lang.String-java.lang.String-long-org.apache.hadoop.hdfs.protocol.LocatedBlock-org.apache.hadoop.crypto.Encryptor-java.util.List-org.apache.hadoop.util.DataChecksum-org.apache.hbase.thirdparty.io.netty.buffer.ByteBufAllocator-"> |
| <!-- --> |
| </a> |
| <ul class="blockListLast"> |
| <li class="blockList"> |
| <h4>FanOutOneBlockAsyncDFSOutput</h4> |
| <pre><a href="../../../../../../src-html/org/apache/hadoop/hbase/io/asyncfs/FanOutOneBlockAsyncDFSOutput.html#line.325">FanOutOneBlockAsyncDFSOutput</a>(org.apache.hadoop.conf.Configuration conf, |
| org.apache.hadoop.hdfs.DistributedFileSystem dfs, |
| org.apache.hadoop.hdfs.DFSClient client, |
| org.apache.hadoop.hdfs.protocol.ClientProtocol namenode, |
| <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a> clientName, |
| <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a> src, |
| long fileId, |
| org.apache.hadoop.hdfs.protocol.LocatedBlock locatedBlock, |
| org.apache.hadoop.crypto.Encryptor encryptor, |
| <a href="https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a><org.apache.hbase.thirdparty.io.netty.channel.Channel> datanodeList, |
| org.apache.hadoop.util.DataChecksum summer, |
| org.apache.hbase.thirdparty.io.netty.buffer.ByteBufAllocator alloc)</pre> |
| </li> |
| </ul> |
| </li> |
| </ul> |
| <!-- ============ METHOD DETAIL ========== --> |
| <ul class="blockList"> |
| <li class="blockList"><a name="method.detail"> |
| <!-- --> |
| </a> |
| <h3>Method Detail</h3> |
| <a name="completed-org.apache.hbase.thirdparty.io.netty.channel.Channel-"> |
| <!-- --> |
| </a> |
| <ul class="blockList"> |
| <li class="blockList"> |
| <h4>completed</h4> |
| <pre>private void <a href="../../../../../../src-html/org/apache/hadoop/hbase/io/asyncfs/FanOutOneBlockAsyncDFSOutput.html#line.180">completed</a>(org.apache.hbase.thirdparty.io.netty.channel.Channel channel)</pre> |
| </li> |
| </ul> |
| <a name="failed-org.apache.hbase.thirdparty.io.netty.channel.Channel-java.util.function.Supplier-"> |
| <!-- --> |
| </a> |
| <ul class="blockList"> |
| <li class="blockList"> |
| <h4>failed</h4> |
| <pre>private void <a href="../../../../../../src-html/org/apache/hadoop/hbase/io/asyncfs/FanOutOneBlockAsyncDFSOutput.html#line.219">failed</a>(org.apache.hbase.thirdparty.io.netty.channel.Channel channel, |
| <a href="https://docs.oracle.com/javase/8/docs/api/java/util/function/Supplier.html?is-external=true" title="class or interface in java.util.function">Supplier</a><<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Throwable.html?is-external=true" title="class or interface in java.lang">Throwable</a>> errorSupplier)</pre> |
| </li> |
| </ul> |
| <a name="setupReceiver-int-"> |
| <!-- --> |
| </a> |
| <ul class="blockList"> |
| <li class="blockList"> |
| <h4>setupReceiver</h4> |
| <pre>private void <a href="../../../../../../src-html/org/apache/hadoop/hbase/io/asyncfs/FanOutOneBlockAsyncDFSOutput.html#line.314">setupReceiver</a>(int timeoutMs)</pre> |
| </li> |
| </ul> |
| <a name="writeInt-int-"> |
| <!-- --> |
| </a> |
| <ul class="blockList"> |
| <li class="blockList"> |
| <h4>writeInt</h4> |
| <pre>public void <a href="../../../../../../src-html/org/apache/hadoop/hbase/io/asyncfs/FanOutOneBlockAsyncDFSOutput.html#line.349">writeInt</a>(int i)</pre> |
| <div class="block"><span class="descfrmTypeLabel">Description copied from interface: <code><a href="../../../../../../org/apache/hadoop/hbase/io/asyncfs/AsyncFSOutput.html#writeInt-int-">AsyncFSOutput</a></code></span></div> |
| <div class="block">Write an int to the buffer.</div> |
| <dl> |
| <dt><span class="overrideSpecifyLabel">Specified by:</span></dt> |
| <dd><code><a href="../../../../../../org/apache/hadoop/hbase/io/asyncfs/AsyncFSOutput.html#writeInt-int-">writeInt</a></code> in interface <code><a href="../../../../../../org/apache/hadoop/hbase/io/asyncfs/AsyncFSOutput.html" title="interface in org.apache.hadoop.hbase.io.asyncfs">AsyncFSOutput</a></code></dd> |
| </dl> |
| </li> |
| </ul> |
| <a name="write-java.nio.ByteBuffer-"> |
| <!-- --> |
| </a> |
| <ul class="blockList"> |
| <li class="blockList"> |
| <h4>write</h4> |
| <pre>public void <a href="../../../../../../src-html/org/apache/hadoop/hbase/io/asyncfs/FanOutOneBlockAsyncDFSOutput.html#line.355">write</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/nio/ByteBuffer.html?is-external=true" title="class or interface in java.nio">ByteBuffer</a> bb)</pre> |
| <div class="block"><span class="descfrmTypeLabel">Description copied from interface: <code><a href="../../../../../../org/apache/hadoop/hbase/io/asyncfs/AsyncFSOutput.html#write-java.nio.ByteBuffer-">AsyncFSOutput</a></code></span></div> |
| <div class="block">Copy the data in the given <code>bb</code> into the buffer.</div> |
| <dl> |
| <dt><span class="overrideSpecifyLabel">Specified by:</span></dt> |
| <dd><code><a href="../../../../../../org/apache/hadoop/hbase/io/asyncfs/AsyncFSOutput.html#write-java.nio.ByteBuffer-">write</a></code> in interface <code><a href="../../../../../../org/apache/hadoop/hbase/io/asyncfs/AsyncFSOutput.html" title="interface in org.apache.hadoop.hbase.io.asyncfs">AsyncFSOutput</a></code></dd> |
| </dl> |
| </li> |
| </ul> |
| <a name="write-byte:A-"> |
| <!-- --> |
| </a> |
| <ul class="blockList"> |
| <li class="blockList"> |
| <h4>write</h4> |
| <pre>public void <a href="../../../../../../src-html/org/apache/hadoop/hbase/io/asyncfs/FanOutOneBlockAsyncDFSOutput.html#line.361">write</a>(byte[] b)</pre> |
| <div class="block"><span class="descfrmTypeLabel">Description copied from interface: <code><a href="../../../../../../org/apache/hadoop/hbase/io/asyncfs/AsyncFSOutput.html#write-byte:A-">AsyncFSOutput</a></code></span></div> |
| <div class="block">Just call write(b, 0, b.length).</div> |
| <dl> |
| <dt><span class="overrideSpecifyLabel">Specified by:</span></dt> |
| <dd><code><a href="../../../../../../org/apache/hadoop/hbase/io/asyncfs/AsyncFSOutput.html#write-byte:A-">write</a></code> in interface <code><a href="../../../../../../org/apache/hadoop/hbase/io/asyncfs/AsyncFSOutput.html" title="interface in org.apache.hadoop.hbase.io.asyncfs">AsyncFSOutput</a></code></dd> |
| <dt><span class="seeLabel">See Also:</span></dt> |
| <dd><a href="../../../../../../org/apache/hadoop/hbase/io/asyncfs/AsyncFSOutput.html#write-byte:A-int-int-"><code>AsyncFSOutput.write(byte[], int, int)</code></a></dd> |
| </dl> |
| </li> |
| </ul> |
| <a name="write-byte:A-int-int-"> |
| <!-- --> |
| </a> |
| <ul class="blockList"> |
| <li class="blockList"> |
| <h4>write</h4> |
| <pre>public void <a href="../../../../../../src-html/org/apache/hadoop/hbase/io/asyncfs/FanOutOneBlockAsyncDFSOutput.html#line.366">write</a>(byte[] b, |
| int off, |
| int len)</pre> |
| <div class="block"><span class="descfrmTypeLabel">Description copied from interface: <code><a href="../../../../../../org/apache/hadoop/hbase/io/asyncfs/AsyncFSOutput.html#write-byte:A-int-int-">AsyncFSOutput</a></code></span></div> |
| <div class="block">Copy the data into the buffer. Note that you need to call <a href="../../../../../../org/apache/hadoop/hbase/io/asyncfs/AsyncFSOutput.html#flush-boolean-"><code>AsyncFSOutput.flush(boolean)</code></a> to flush the |
| buffer manually.</div> |
| <dl> |
| <dt><span class="overrideSpecifyLabel">Specified by:</span></dt> |
| <dd><code><a href="../../../../../../org/apache/hadoop/hbase/io/asyncfs/AsyncFSOutput.html#write-byte:A-int-int-">write</a></code> in interface <code><a href="../../../../../../org/apache/hadoop/hbase/io/asyncfs/AsyncFSOutput.html" title="interface in org.apache.hadoop.hbase.io.asyncfs">AsyncFSOutput</a></code></dd> |
| </dl> |
| </li> |
| </ul> |
| <a name="buffered--"> |
| <!-- --> |
| </a> |
| <ul class="blockList"> |
| <li class="blockList"> |
| <h4>buffered</h4> |
| <pre>public int <a href="../../../../../../src-html/org/apache/hadoop/hbase/io/asyncfs/FanOutOneBlockAsyncDFSOutput.html#line.372">buffered</a>()</pre> |
| <div class="block"><span class="descfrmTypeLabel">Description copied from interface: <code><a href="../../../../../../org/apache/hadoop/hbase/io/asyncfs/AsyncFSOutput.html#buffered--">AsyncFSOutput</a></code></span></div> |
| <div class="block">Return the current size of buffered data.</div> |
| <dl> |
| <dt><span class="overrideSpecifyLabel">Specified by:</span></dt> |
| <dd><code><a href="../../../../../../org/apache/hadoop/hbase/io/asyncfs/AsyncFSOutput.html#buffered--">buffered</a></code> in interface <code><a href="../../../../../../org/apache/hadoop/hbase/io/asyncfs/AsyncFSOutput.html" title="interface in org.apache.hadoop.hbase.io.asyncfs">AsyncFSOutput</a></code></dd> |
| </dl> |
| </li> |
| </ul> |
| <a name="getPipeline--"> |
| <!-- --> |
| </a> |
| <ul class="blockList"> |
| <li class="blockList"> |
| <h4>getPipeline</h4> |
| <pre>public org.apache.hadoop.hdfs.protocol.DatanodeInfo[] <a href="../../../../../../src-html/org/apache/hadoop/hbase/io/asyncfs/FanOutOneBlockAsyncDFSOutput.html#line.377">getPipeline</a>()</pre> |
| <div class="block"><span class="descfrmTypeLabel">Description copied from interface: <code><a href="../../../../../../org/apache/hadoop/hbase/io/asyncfs/AsyncFSOutput.html#getPipeline--">AsyncFSOutput</a></code></span></div> |
| <div class="block">Return current pipeline. Empty array if no pipeline.</div> |
| <dl> |
| <dt><span class="overrideSpecifyLabel">Specified by:</span></dt> |
| <dd><code><a href="../../../../../../org/apache/hadoop/hbase/io/asyncfs/AsyncFSOutput.html#getPipeline--">getPipeline</a></code> in interface <code><a href="../../../../../../org/apache/hadoop/hbase/io/asyncfs/AsyncFSOutput.html" title="interface in org.apache.hadoop.hbase.io.asyncfs">AsyncFSOutput</a></code></dd> |
| </dl> |
| </li> |
| </ul> |
| <a name="flushBuffer-java.util.concurrent.CompletableFuture-org.apache.hbase.thirdparty.io.netty.buffer.ByteBuf-long-boolean-"> |
| <!-- --> |
| </a> |
| <ul class="blockList"> |
| <li class="blockList"> |
| <h4>flushBuffer</h4> |
| <pre>private void <a href="../../../../../../src-html/org/apache/hadoop/hbase/io/asyncfs/FanOutOneBlockAsyncDFSOutput.html#line.381">flushBuffer</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/util/concurrent/CompletableFuture.html?is-external=true" title="class or interface in java.util.concurrent">CompletableFuture</a><<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Long.html?is-external=true" title="class or interface in java.lang">Long</a>> future, |
| org.apache.hbase.thirdparty.io.netty.buffer.ByteBuf dataBuf, |
| long nextPacketOffsetInBlock, |
| boolean syncBlock)</pre> |
| </li> |
| </ul> |
| <a name="flush0-java.util.concurrent.CompletableFuture-boolean-"> |
| <!-- --> |
| </a> |
| <ul class="blockList"> |
| <li class="blockList"> |
| <h4>flush0</h4> |
| <pre>private void <a href="../../../../../../src-html/org/apache/hadoop/hbase/io/asyncfs/FanOutOneBlockAsyncDFSOutput.html#line.419">flush0</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/util/concurrent/CompletableFuture.html?is-external=true" title="class or interface in java.util.concurrent">CompletableFuture</a><<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Long.html?is-external=true" title="class or interface in java.lang">Long</a>> future, |
| boolean syncBlock)</pre> |
| </li> |
| </ul> |
| <a name="flush-boolean-"> |
| <!-- --> |
| </a> |
| <ul class="blockList"> |
| <li class="blockList"> |
| <h4>flush</h4> |
| <pre>public <a href="https://docs.oracle.com/javase/8/docs/api/java/util/concurrent/CompletableFuture.html?is-external=true" title="class or interface in java.util.concurrent">CompletableFuture</a><<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Long.html?is-external=true" title="class or interface in java.lang">Long</a>> <a href="../../../../../../src-html/org/apache/hadoop/hbase/io/asyncfs/FanOutOneBlockAsyncDFSOutput.html#line.508">flush</a>(boolean syncBlock)</pre> |
| <div class="block">Flush the buffer out to datanodes.</div> |
| <dl> |
| <dt><span class="overrideSpecifyLabel">Specified by:</span></dt> |
| <dd><code><a href="../../../../../../org/apache/hadoop/hbase/io/asyncfs/AsyncFSOutput.html#flush-boolean-">flush</a></code> in interface <code><a href="../../../../../../org/apache/hadoop/hbase/io/asyncfs/AsyncFSOutput.html" title="interface in org.apache.hadoop.hbase.io.asyncfs">AsyncFSOutput</a></code></dd> |
| <dt><span class="paramLabel">Parameters:</span></dt> |
| <dd><code>syncBlock</code> - will call hsync if true, otherwise hflush.</dd> |
| <dt><span class="returnLabel">Returns:</span></dt> |
| <dd>A CompletableFuture that hold the acked length after flushing.</dd> |
| </dl> |
| </li> |
| </ul> |
| <a name="endBlock--"> |
| <!-- --> |
| </a> |
| <ul class="blockList"> |
| <li class="blockList"> |
| <h4>endBlock</h4> |
| <pre>private void <a href="../../../../../../src-html/org/apache/hadoop/hbase/io/asyncfs/FanOutOneBlockAsyncDFSOutput.html#line.514">endBlock</a>() |
| throws <a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre> |
| <dl> |
| <dt><span class="throwsLabel">Throws:</span></dt> |
| <dd><code><a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></code></dd> |
| </dl> |
| </li> |
| </ul> |
| <a name="recoverAndClose-org.apache.hadoop.hbase.util.CancelableProgressable-"> |
| <!-- --> |
| </a> |
| <ul class="blockList"> |
| <li class="blockList"> |
| <h4>recoverAndClose</h4> |
| <pre>public void <a href="../../../../../../src-html/org/apache/hadoop/hbase/io/asyncfs/FanOutOneBlockAsyncDFSOutput.html#line.548">recoverAndClose</a>(<a href="../../../../../../org/apache/hadoop/hbase/util/CancelableProgressable.html" title="interface in org.apache.hadoop.hbase.util">CancelableProgressable</a> reporter) |
| throws <a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre> |
| <div class="block">The close method when error occurred. Now we just call recoverFileLease.</div> |
| <dl> |
| <dt><span class="overrideSpecifyLabel">Specified by:</span></dt> |
| <dd><code><a href="../../../../../../org/apache/hadoop/hbase/io/asyncfs/AsyncFSOutput.html#recoverAndClose-org.apache.hadoop.hbase.util.CancelableProgressable-">recoverAndClose</a></code> in interface <code><a href="../../../../../../org/apache/hadoop/hbase/io/asyncfs/AsyncFSOutput.html" title="interface in org.apache.hadoop.hbase.io.asyncfs">AsyncFSOutput</a></code></dd> |
| <dt><span class="throwsLabel">Throws:</span></dt> |
| <dd><code><a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></code></dd> |
| </dl> |
| </li> |
| </ul> |
| <a name="close--"> |
| <!-- --> |
| </a> |
| <ul class="blockList"> |
| <li class="blockList"> |
| <h4>close</h4> |
| <pre>public void <a href="../../../../../../src-html/org/apache/hadoop/hbase/io/asyncfs/FanOutOneBlockAsyncDFSOutput.html#line.565">close</a>() |
| throws <a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre> |
| <div class="block">End the current block and complete file at namenode. You should call |
| <a href="../../../../../../org/apache/hadoop/hbase/io/asyncfs/FanOutOneBlockAsyncDFSOutput.html#recoverAndClose-org.apache.hadoop.hbase.util.CancelableProgressable-"><code>recoverAndClose(CancelableProgressable)</code></a> if this method throws an exception.</div> |
| <dl> |
| <dt><span class="overrideSpecifyLabel">Specified by:</span></dt> |
| <dd><code><a href="https://docs.oracle.com/javase/8/docs/api/java/io/Closeable.html?is-external=true#close--" title="class or interface in java.io">close</a></code> in interface <code><a href="https://docs.oracle.com/javase/8/docs/api/java/io/Closeable.html?is-external=true" title="class or interface in java.io">Closeable</a></code></dd> |
| <dt><span class="overrideSpecifyLabel">Specified by:</span></dt> |
| <dd><code><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/AutoCloseable.html?is-external=true#close--" title="class or interface in java.lang">close</a></code> in interface <code><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/AutoCloseable.html?is-external=true" title="class or interface in java.lang">AutoCloseable</a></code></dd> |
| <dt><span class="overrideSpecifyLabel">Specified by:</span></dt> |
| <dd><code><a href="../../../../../../org/apache/hadoop/hbase/io/asyncfs/AsyncFSOutput.html#close--">close</a></code> in interface <code><a href="../../../../../../org/apache/hadoop/hbase/io/asyncfs/AsyncFSOutput.html" title="interface in org.apache.hadoop.hbase.io.asyncfs">AsyncFSOutput</a></code></dd> |
| <dt><span class="throwsLabel">Throws:</span></dt> |
| <dd><code><a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></code></dd> |
| </dl> |
| </li> |
| </ul> |
| <a name="isBroken--"> |
| <!-- --> |
| </a> |
| <ul class="blockList"> |
| <li class="blockList"> |
| <h4>isBroken</h4> |
| <pre>public boolean <a href="../../../../../../src-html/org/apache/hadoop/hbase/io/asyncfs/FanOutOneBlockAsyncDFSOutput.html#line.575">isBroken</a>()</pre> |
| <div class="block"><span class="descfrmTypeLabel">Description copied from interface: <code><a href="../../../../../../org/apache/hadoop/hbase/io/asyncfs/AsyncFSOutput.html#isBroken--">AsyncFSOutput</a></code></span></div> |
| <div class="block">Whether the stream is broken.</div> |
| <dl> |
| <dt><span class="overrideSpecifyLabel">Specified by:</span></dt> |
| <dd><code><a href="../../../../../../org/apache/hadoop/hbase/io/asyncfs/AsyncFSOutput.html#isBroken--">isBroken</a></code> in interface <code><a href="../../../../../../org/apache/hadoop/hbase/io/asyncfs/AsyncFSOutput.html" title="interface in org.apache.hadoop.hbase.io.asyncfs">AsyncFSOutput</a></code></dd> |
| </dl> |
| </li> |
| </ul> |
| <a name="getSyncedLength--"> |
| <!-- --> |
| </a> |
| <ul class="blockListLast"> |
| <li class="blockList"> |
| <h4>getSyncedLength</h4> |
| <pre>public long <a href="../../../../../../src-html/org/apache/hadoop/hbase/io/asyncfs/FanOutOneBlockAsyncDFSOutput.html#line.580">getSyncedLength</a>()</pre> |
| <dl> |
| <dt><span class="overrideSpecifyLabel">Specified by:</span></dt> |
| <dd><code><a href="../../../../../../org/apache/hadoop/hbase/io/asyncfs/AsyncFSOutput.html#getSyncedLength--">getSyncedLength</a></code> in interface <code><a href="../../../../../../org/apache/hadoop/hbase/io/asyncfs/AsyncFSOutput.html" title="interface in org.apache.hadoop.hbase.io.asyncfs">AsyncFSOutput</a></code></dd> |
| <dt><span class="returnLabel">Returns:</span></dt> |
| <dd>byteSize success synced to underlying filesystem.</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="class-use/FanOutOneBlockAsyncDFSOutput.html">Use</a></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/hadoop/hbase/io/asyncfs/AsyncFSOutputHelper.html" title="class in org.apache.hadoop.hbase.io.asyncfs"><span class="typeNameLink">Prev Class</span></a></li> |
| <li><a href="../../../../../../org/apache/hadoop/hbase/io/asyncfs/FanOutOneBlockAsyncDFSOutput.AckHandler.html" title="class in org.apache.hadoop.hbase.io.asyncfs"><span class="typeNameLink">Next Class</span></a></li> |
| </ul> |
| <ul class="navList"> |
| <li><a href="../../../../../../index.html?org/apache/hadoop/hbase/io/asyncfs/FanOutOneBlockAsyncDFSOutput.html" target="_top">Frames</a></li> |
| <li><a href="FanOutOneBlockAsyncDFSOutput.html" target="_top">No Frames</a></li> |
| </ul> |
| <ul class="navList" id="allclasses_navbar_bottom"> |
| <li><a href="../../../../../../allclasses-noframe.html">All 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: </li> |
| <li><a href="#nested.class.summary">Nested</a> | </li> |
| <li><a href="#field.summary">Field</a> | </li> |
| <li><a href="#constructor.summary">Constr</a> | </li> |
| <li><a href="#method.summary">Method</a></li> |
| </ul> |
| <ul class="subNavList"> |
| <li>Detail: </li> |
| <li><a href="#field.detail">Field</a> | </li> |
| <li><a href="#constructor.detail">Constr</a> | </li> |
| <li><a href="#method.detail">Method</a></li> |
| </ul> |
| </div> |
| <a name="skip.navbar.bottom"> |
| <!-- --> |
| </a></div> |
| <!-- ======== END OF BOTTOM NAVBAR ======= --> |
| <p class="legalCopy"><small>Copyright © 2007–2021 <a href="https://www.apache.org/">The Apache Software Foundation</a>. All rights reserved.</small></p> |
| </body> |
| </html> |