http://git-wip-us.apache.org/repos/asf/hbase-site/blob/aa3fb87f/devapidocs/org/apache/hadoop/hbase/util/class-use/Pair.html ---------------------------------------------------------------------- diff --git a/devapidocs/org/apache/hadoop/hbase/util/class-use/Pair.html b/devapidocs/org/apache/hadoop/hbase/util/class-use/Pair.html index 9913946..055a934 100644 --- a/devapidocs/org/apache/hadoop/hbase/util/class-use/Pair.html +++ b/devapidocs/org/apache/hadoop/hbase/util/class-use/Pair.html @@ -236,18 +236,22 @@ Input/OutputFormats, a table indexing MapReduce job, and utility methods.</div> <td class="colLast"> </td> </tr> <tr class="altColor"> -<td class="colFirst"><a href="#org.apache.hadoop.hbase.tool">org.apache.hadoop.hbase.tool</a></td> +<td class="colFirst"><a href="#org.apache.hadoop.hbase.thrift2.client">org.apache.hadoop.hbase.thrift2.client</a></td> <td class="colLast"> </td> </tr> <tr class="rowColor"> -<td class="colFirst"><a href="#org.apache.hadoop.hbase.util">org.apache.hadoop.hbase.util</a></td> +<td class="colFirst"><a href="#org.apache.hadoop.hbase.tool">org.apache.hadoop.hbase.tool</a></td> <td class="colLast"> </td> </tr> <tr class="altColor"> -<td class="colFirst"><a href="#org.apache.hadoop.hbase.wal">org.apache.hadoop.hbase.wal</a></td> +<td class="colFirst"><a href="#org.apache.hadoop.hbase.util">org.apache.hadoop.hbase.util</a></td> <td class="colLast"> </td> </tr> <tr class="rowColor"> +<td class="colFirst"><a href="#org.apache.hadoop.hbase.wal">org.apache.hadoop.hbase.wal</a></td> +<td class="colLast"> </td> +</tr> +<tr class="altColor"> <td class="colFirst"><a href="#org.apache.hadoop.hbase.zookeeper">org.apache.hadoop.hbase.zookeeper</a></td> <td class="colLast"> </td> </tr> @@ -1948,6 +1952,40 @@ Input/OutputFormats, a table indexing MapReduce job, and utility methods.</div> </tbody> </table> </li> +<li class="blockList"><a name="org.apache.hadoop.hbase.thrift2.client"> +<!-- --> +</a> +<h3>Uses of <a href="../../../../../../org/apache/hadoop/hbase/util/Pair.html" title="class in org.apache.hadoop.hbase.util">Pair</a> in <a href="../../../../../../org/apache/hadoop/hbase/thrift2/client/package-summary.html">org.apache.hadoop.hbase.thrift2.client</a></h3> +<table class="useSummary" border="0" cellpadding="3" cellspacing="0" summary="Use table, listing methods, and an explanation"> +<caption><span>Methods in <a href="../../../../../../org/apache/hadoop/hbase/thrift2/client/package-summary.html">org.apache.hadoop.hbase.thrift2.client</a> that return <a href="../../../../../../org/apache/hadoop/hbase/util/Pair.html" title="class in org.apache.hadoop.hbase.util">Pair</a></span><span class="tabEnd"> </span></caption> +<tr> +<th class="colFirst" scope="col">Modifier and Type</th> +<th class="colLast" scope="col">Method and Description</th> +</tr> +<tbody> +<tr class="altColor"> +<td class="colFirst"><code><a href="../../../../../../org/apache/hadoop/hbase/util/Pair.html" title="class in org.apache.hadoop.hbase.util">Pair</a><<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Integer.html?is-external=true" title="class or interface in java.lang">Integer</a>,<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Integer.html?is-external=true" title="class or interface in java.lang">Integer</a>></code></td> +<td class="colLast"><span class="typeNameLabel">ThriftAdmin.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/thrift2/client/ThriftAdmin.html#getAlterStatus-byte:A-">getAlterStatus</a></span>(byte[] tableName)</code> </td> +</tr> +<tr class="rowColor"> +<td class="colFirst"><code><a href="../../../../../../org/apache/hadoop/hbase/util/Pair.html" title="class in org.apache.hadoop.hbase.util">Pair</a><<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Integer.html?is-external=true" title="class or interface in java.lang">Integer</a>,<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Integer.html?is-external=true" title="class or interface in java.lang">Integer</a>></code></td> +<td class="colLast"><span class="typeNameLabel">ThriftAdmin.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/thrift2/client/ThriftAdmin.html#getAlterStatus-org.apache.hadoop.hbase.TableName-">getAlterStatus</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/TableName.html" title="class in org.apache.hadoop.hbase">TableName</a> tableName)</code> </td> +</tr> +<tr class="altColor"> +<td class="colFirst"><code><a href="../../../../../../org/apache/hadoop/hbase/util/Pair.html" title="class in org.apache.hadoop.hbase.util">Pair</a><org.apache.hadoop.hbase.thrift2.generated.THBaseService.Client,org.apache.thrift.transport.TTransport></code></td> +<td class="colLast"><span class="typeNameLabel">ThriftConnection.DefaultThriftClientBuilder.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/thrift2/client/ThriftConnection.DefaultThriftClientBuilder.html#getClient--">getClient</a></span>()</code> </td> +</tr> +<tr class="rowColor"> +<td class="colFirst"><code><a href="../../../../../../org/apache/hadoop/hbase/util/Pair.html" title="class in org.apache.hadoop.hbase.util">Pair</a><org.apache.hadoop.hbase.thrift2.generated.THBaseService.Client,org.apache.thrift.transport.TTransport></code></td> +<td class="colLast"><span class="typeNameLabel">ThriftConnection.HTTPThriftClientBuilder.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/thrift2/client/ThriftConnection.HTTPThriftClientBuilder.html#getClient--">getClient</a></span>()</code> </td> +</tr> +<tr class="altColor"> +<td class="colFirst"><code>abstract <a href="../../../../../../org/apache/hadoop/hbase/util/Pair.html" title="class in org.apache.hadoop.hbase.util">Pair</a><org.apache.hadoop.hbase.thrift2.generated.THBaseService.Client,org.apache.thrift.transport.TTransport></code></td> +<td class="colLast"><span class="typeNameLabel">ThriftClientBuilder.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/thrift2/client/ThriftClientBuilder.html#getClient--">getClient</a></span>()</code> </td> +</tr> +</tbody> +</table> +</li> <li class="blockList"><a name="org.apache.hadoop.hbase.tool"> <!-- --> </a>
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/aa3fb87f/devapidocs/org/apache/hadoop/hbase/util/package-tree.html ---------------------------------------------------------------------- diff --git a/devapidocs/org/apache/hadoop/hbase/util/package-tree.html b/devapidocs/org/apache/hadoop/hbase/util/package-tree.html index 25ec8fe..4e1d4c5 100644 --- a/devapidocs/org/apache/hadoop/hbase/util/package-tree.html +++ b/devapidocs/org/apache/hadoop/hbase/util/package-tree.html @@ -541,14 +541,14 @@ <ul> <li type="circle">java.lang.<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Enum.html?is-external=true" title="class or interface in java.lang"><span class="typeNameLink">Enum</span></a><E> (implements java.lang.<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Comparable.html?is-external=true" title="class or interface in java.lang">Comparable</a><T>, java.io.<a href="https://docs.oracle.com/javase/8/docs/api/java/io/Serializable.html?is-external=true" title="class or interface in java.io">Serializable</a>) <ul> -<li type="circle">org.apache.hadoop.hbase.util.<a href="../../../../../org/apache/hadoop/hbase/util/PrettyPrinter.Unit.html" title="enum in org.apache.hadoop.hbase.util"><span class="typeNameLink">PrettyPrinter.Unit</span></a></li> +<li type="circle">org.apache.hadoop.hbase.util.<a href="../../../../../org/apache/hadoop/hbase/util/IdReadWriteLock.ReferenceType.html" title="enum in org.apache.hadoop.hbase.util"><span class="typeNameLink">IdReadWriteLock.ReferenceType</span></a></li> +<li type="circle">org.apache.hadoop.hbase.util.<a href="../../../../../org/apache/hadoop/hbase/util/ChecksumType.html" title="enum in org.apache.hadoop.hbase.util"><span class="typeNameLink">ChecksumType</span></a></li> <li type="circle">org.apache.hadoop.hbase.util.<a href="../../../../../org/apache/hadoop/hbase/util/HBaseFsck.ErrorReporter.ERROR_CODE.html" title="enum in org.apache.hadoop.hbase.util"><span class="typeNameLink">HBaseFsck.ErrorReporter.ERROR_CODE</span></a></li> +<li type="circle">org.apache.hadoop.hbase.util.<a href="../../../../../org/apache/hadoop/hbase/util/PrettyPrinter.Unit.html" title="enum in org.apache.hadoop.hbase.util"><span class="typeNameLink">PrettyPrinter.Unit</span></a></li> +<li type="circle">org.apache.hadoop.hbase.util.<a href="../../../../../org/apache/hadoop/hbase/util/PoolMap.PoolType.html" title="enum in org.apache.hadoop.hbase.util"><span class="typeNameLink">PoolMap.PoolType</span></a></li> +<li type="circle">org.apache.hadoop.hbase.util.<a href="../../../../../org/apache/hadoop/hbase/util/Bytes.LexicographicalComparerHolder.PureJavaComparer.html" title="enum in org.apache.hadoop.hbase.util"><span class="typeNameLink">Bytes.LexicographicalComparerHolder.PureJavaComparer</span></a> (implements org.apache.hadoop.hbase.util.<a href="../../../../../org/apache/hadoop/hbase/util/Bytes.Comparer.html" title="interface in org.apache.hadoop.hbase.util">Bytes.Comparer</a><T>)</li> <li type="circle">org.apache.hadoop.hbase.util.<a href="../../../../../org/apache/hadoop/hbase/util/Order.html" title="enum in org.apache.hadoop.hbase.util"><span class="typeNameLink">Order</span></a></li> <li type="circle">org.apache.hadoop.hbase.util.<a href="../../../../../org/apache/hadoop/hbase/util/Bytes.LexicographicalComparerHolder.UnsafeComparer.html" title="enum in org.apache.hadoop.hbase.util"><span class="typeNameLink">Bytes.LexicographicalComparerHolder.UnsafeComparer</span></a> (implements org.apache.hadoop.hbase.util.<a href="../../../../../org/apache/hadoop/hbase/util/Bytes.Comparer.html" title="interface in org.apache.hadoop.hbase.util">Bytes.Comparer</a><T>)</li> -<li type="circle">org.apache.hadoop.hbase.util.<a href="../../../../../org/apache/hadoop/hbase/util/Bytes.LexicographicalComparerHolder.PureJavaComparer.html" title="enum in org.apache.hadoop.hbase.util"><span class="typeNameLink">Bytes.LexicographicalComparerHolder.PureJavaComparer</span></a> (implements org.apache.hadoop.hbase.util.<a href="../../../../../org/apache/hadoop/hbase/util/Bytes.Comparer.html" title="interface in org.apache.hadoop.hbase.util">Bytes.Comparer</a><T>)</li> -<li type="circle">org.apache.hadoop.hbase.util.<a href="../../../../../org/apache/hadoop/hbase/util/PoolMap.PoolType.html" title="enum in org.apache.hadoop.hbase.util"><span class="typeNameLink">PoolMap.PoolType</span></a></li> -<li type="circle">org.apache.hadoop.hbase.util.<a href="../../../../../org/apache/hadoop/hbase/util/ChecksumType.html" title="enum in org.apache.hadoop.hbase.util"><span class="typeNameLink">ChecksumType</span></a></li> -<li type="circle">org.apache.hadoop.hbase.util.<a href="../../../../../org/apache/hadoop/hbase/util/IdReadWriteLock.ReferenceType.html" title="enum in org.apache.hadoop.hbase.util"><span class="typeNameLink">IdReadWriteLock.ReferenceType</span></a></li> </ul> </li> </ul> http://git-wip-us.apache.org/repos/asf/hbase-site/blob/aa3fb87f/devapidocs/org/apache/hadoop/hbase/util/package-use.html ---------------------------------------------------------------------- diff --git a/devapidocs/org/apache/hadoop/hbase/util/package-use.html b/devapidocs/org/apache/hadoop/hbase/util/package-use.html index 6336a97..7c797bf 100644 --- a/devapidocs/org/apache/hadoop/hbase/util/package-use.html +++ b/devapidocs/org/apache/hadoop/hbase/util/package-use.html @@ -311,14 +311,18 @@ service.</div> </td> </tr> <tr class="rowColor"> -<td class="colFirst"><a href="#org.apache.hadoop.hbase.tool">org.apache.hadoop.hbase.tool</a></td> +<td class="colFirst"><a href="#org.apache.hadoop.hbase.thrift2.client">org.apache.hadoop.hbase.thrift2.client</a></td> <td class="colLast"> </td> </tr> <tr class="altColor"> -<td class="colFirst"><a href="#org.apache.hadoop.hbase.tool.coprocessor">org.apache.hadoop.hbase.tool.coprocessor</a></td> +<td class="colFirst"><a href="#org.apache.hadoop.hbase.tool">org.apache.hadoop.hbase.tool</a></td> <td class="colLast"> </td> </tr> <tr class="rowColor"> +<td class="colFirst"><a href="#org.apache.hadoop.hbase.tool.coprocessor">org.apache.hadoop.hbase.tool.coprocessor</a></td> +<td class="colLast"> </td> +</tr> +<tr class="altColor"> <td class="colFirst"><a href="#org.apache.hadoop.hbase.types">org.apache.hadoop.hbase.types</a></td> <td class="colLast"> <div class="block"> @@ -326,19 +330,19 @@ service.</div> extensible data type API.</div> </td> </tr> -<tr class="altColor"> +<tr class="rowColor"> <td class="colFirst"><a href="#org.apache.hadoop.hbase.util">org.apache.hadoop.hbase.util</a></td> <td class="colLast"> </td> </tr> -<tr class="rowColor"> +<tr class="altColor"> <td class="colFirst"><a href="#org.apache.hadoop.hbase.util.hbck">org.apache.hadoop.hbase.util.hbck</a></td> <td class="colLast"> </td> </tr> -<tr class="altColor"> +<tr class="rowColor"> <td class="colFirst"><a href="#org.apache.hadoop.hbase.wal">org.apache.hadoop.hbase.wal</a></td> <td class="colLast"> </td> </tr> -<tr class="rowColor"> +<tr class="altColor"> <td class="colFirst"><a href="#org.apache.hadoop.hbase.zookeeper">org.apache.hadoop.hbase.zookeeper</a></td> <td class="colLast"> </td> </tr> @@ -1548,6 +1552,23 @@ service.</div> </tbody> </table> </li> +<li class="blockList"><a name="org.apache.hadoop.hbase.thrift2.client"> +<!-- --> +</a> +<table class="useSummary" border="0" cellpadding="3" cellspacing="0" summary="Use table, listing classes, and an explanation"> +<caption><span>Classes in <a href="../../../../../org/apache/hadoop/hbase/util/package-summary.html">org.apache.hadoop.hbase.util</a> used by <a href="../../../../../org/apache/hadoop/hbase/thrift2/client/package-summary.html">org.apache.hadoop.hbase.thrift2.client</a></span><span class="tabEnd"> </span></caption> +<tr> +<th class="colOne" scope="col">Class and Description</th> +</tr> +<tbody> +<tr class="altColor"> +<td class="colOne"><a href="../../../../../org/apache/hadoop/hbase/util/class-use/Pair.html#org.apache.hadoop.hbase.thrift2.client">Pair</a> +<div class="block">A generic class for pairs.</div> +</td> +</tr> +</tbody> +</table> +</li> <li class="blockList"><a name="org.apache.hadoop.hbase.tool"> <!-- --> </a> http://git-wip-us.apache.org/repos/asf/hbase-site/blob/aa3fb87f/devapidocs/overview-frame.html ---------------------------------------------------------------------- diff --git a/devapidocs/overview-frame.html b/devapidocs/overview-frame.html index 8b6c541..1b1e7e5 100644 --- a/devapidocs/overview-frame.html +++ b/devapidocs/overview-frame.html @@ -114,6 +114,7 @@ <li><a href="org/apache/hadoop/hbase/snapshot/package-frame.html" target="packageFrame">org.apache.hadoop.hbase.snapshot</a></li> <li><a href="org/apache/hadoop/hbase/thrift/package-frame.html" target="packageFrame">org.apache.hadoop.hbase.thrift</a></li> <li><a href="org/apache/hadoop/hbase/thrift2/package-frame.html" target="packageFrame">org.apache.hadoop.hbase.thrift2</a></li> +<li><a href="org/apache/hadoop/hbase/thrift2/client/package-frame.html" target="packageFrame">org.apache.hadoop.hbase.thrift2.client</a></li> <li><a href="org/apache/hadoop/hbase/tmpl/master/package-frame.html" target="packageFrame">org.apache.hadoop.hbase.tmpl.master</a></li> <li><a href="org/apache/hadoop/hbase/tmpl/regionserver/package-frame.html" target="packageFrame">org.apache.hadoop.hbase.tmpl.regionserver</a></li> <li><a href="org/apache/hadoop/hbase/tool/package-frame.html" target="packageFrame">org.apache.hadoop.hbase.tool</a></li> http://git-wip-us.apache.org/repos/asf/hbase-site/blob/aa3fb87f/devapidocs/overview-summary.html ---------------------------------------------------------------------- diff --git a/devapidocs/overview-summary.html b/devapidocs/overview-summary.html index 35b02f4..c3c7c17 100644 --- a/devapidocs/overview-summary.html +++ b/devapidocs/overview-summary.html @@ -540,26 +540,30 @@ service.</div> </td> </tr> <tr class="rowColor"> -<td class="colFirst"><a href="org/apache/hadoop/hbase/tmpl/master/package-summary.html">org.apache.hadoop.hbase.tmpl.master</a></td> +<td class="colFirst"><a href="org/apache/hadoop/hbase/thrift2/client/package-summary.html">org.apache.hadoop.hbase.thrift2.client</a></td> <td class="colLast"> </td> </tr> <tr class="altColor"> -<td class="colFirst"><a href="org/apache/hadoop/hbase/tmpl/regionserver/package-summary.html">org.apache.hadoop.hbase.tmpl.regionserver</a></td> +<td class="colFirst"><a href="org/apache/hadoop/hbase/tmpl/master/package-summary.html">org.apache.hadoop.hbase.tmpl.master</a></td> <td class="colLast"> </td> </tr> <tr class="rowColor"> -<td class="colFirst"><a href="org/apache/hadoop/hbase/tool/package-summary.html">org.apache.hadoop.hbase.tool</a></td> +<td class="colFirst"><a href="org/apache/hadoop/hbase/tmpl/regionserver/package-summary.html">org.apache.hadoop.hbase.tmpl.regionserver</a></td> <td class="colLast"> </td> </tr> <tr class="altColor"> -<td class="colFirst"><a href="org/apache/hadoop/hbase/tool/coprocessor/package-summary.html">org.apache.hadoop.hbase.tool.coprocessor</a></td> +<td class="colFirst"><a href="org/apache/hadoop/hbase/tool/package-summary.html">org.apache.hadoop.hbase.tool</a></td> <td class="colLast"> </td> </tr> <tr class="rowColor"> -<td class="colFirst"><a href="org/apache/hadoop/hbase/trace/package-summary.html">org.apache.hadoop.hbase.trace</a></td> +<td class="colFirst"><a href="org/apache/hadoop/hbase/tool/coprocessor/package-summary.html">org.apache.hadoop.hbase.tool.coprocessor</a></td> <td class="colLast"> </td> </tr> <tr class="altColor"> +<td class="colFirst"><a href="org/apache/hadoop/hbase/trace/package-summary.html">org.apache.hadoop.hbase.trace</a></td> +<td class="colLast"> </td> +</tr> +<tr class="rowColor"> <td class="colFirst"><a href="org/apache/hadoop/hbase/types/package-summary.html">org.apache.hadoop.hbase.types</a></td> <td class="colLast"> <div class="block"> @@ -567,43 +571,43 @@ service.</div> extensible data type API.</div> </td> </tr> -<tr class="rowColor"> +<tr class="altColor"> <td class="colFirst"><a href="org/apache/hadoop/hbase/util/package-summary.html">org.apache.hadoop.hbase.util</a></td> <td class="colLast"> </td> </tr> -<tr class="altColor"> +<tr class="rowColor"> <td class="colFirst"><a href="org/apache/hadoop/hbase/util/compaction/package-summary.html">org.apache.hadoop.hbase.util.compaction</a></td> <td class="colLast"> </td> </tr> -<tr class="rowColor"> +<tr class="altColor"> <td class="colFirst"><a href="org/apache/hadoop/hbase/util/hbck/package-summary.html">org.apache.hadoop.hbase.util.hbck</a></td> <td class="colLast"> </td> </tr> -<tr class="altColor"> +<tr class="rowColor"> <td class="colFirst"><a href="org/apache/hadoop/hbase/wal/package-summary.html">org.apache.hadoop.hbase.wal</a></td> <td class="colLast"> </td> </tr> -<tr class="rowColor"> +<tr class="altColor"> <td class="colFirst"><a href="org/apache/hadoop/hbase/zookeeper/package-summary.html">org.apache.hadoop.hbase.zookeeper</a></td> <td class="colLast"> </td> </tr> -<tr class="altColor"> +<tr class="rowColor"> <td class="colFirst"><a href="org/apache/hadoop/metrics2/package-summary.html">org.apache.hadoop.metrics2</a></td> <td class="colLast"> </td> </tr> -<tr class="rowColor"> +<tr class="altColor"> <td class="colFirst"><a href="org/apache/hadoop/metrics2/impl/package-summary.html">org.apache.hadoop.metrics2.impl</a></td> <td class="colLast"> </td> </tr> -<tr class="altColor"> +<tr class="rowColor"> <td class="colFirst"><a href="org/apache/hadoop/metrics2/lib/package-summary.html">org.apache.hadoop.metrics2.lib</a></td> <td class="colLast"> </td> </tr> -<tr class="rowColor"> +<tr class="altColor"> <td class="colFirst"><a href="org/apache/hadoop/metrics2/util/package-summary.html">org.apache.hadoop.metrics2.util</a></td> <td class="colLast"> </td> </tr> -<tr class="altColor"> +<tr class="rowColor"> <td class="colFirst"><a href="org/apache/hbase/archetypes/exemplars/client/package-summary.html">org.apache.hbase.archetypes.exemplars.client</a></td> <td class="colLast"> <div class="block">This package provides fully-functional exemplar Java code demonstrating @@ -611,7 +615,7 @@ service.</div> archetype with hbase-client dependency.</div> </td> </tr> -<tr class="rowColor"> +<tr class="altColor"> <td class="colFirst"><a href="org/apache/hbase/archetypes/exemplars/shaded_client/package-summary.html">org.apache.hbase.archetypes.exemplars.shaded_client</a></td> <td class="colLast"> <div class="block">This package provides fully-functional exemplar Java code demonstrating http://git-wip-us.apache.org/repos/asf/hbase-site/blob/aa3fb87f/devapidocs/overview-tree.html ---------------------------------------------------------------------- diff --git a/devapidocs/overview-tree.html b/devapidocs/overview-tree.html index e66b9e5..94878f5 100644 --- a/devapidocs/overview-tree.html +++ b/devapidocs/overview-tree.html @@ -174,6 +174,7 @@ <li><a href="org/apache/hadoop/hbase/snapshot/package-tree.html">org.apache.hadoop.hbase.snapshot</a>, </li> <li><a href="org/apache/hadoop/hbase/thrift/package-tree.html">org.apache.hadoop.hbase.thrift</a>, </li> <li><a href="org/apache/hadoop/hbase/thrift2/package-tree.html">org.apache.hadoop.hbase.thrift2</a>, </li> +<li><a href="org/apache/hadoop/hbase/thrift2/client/package-tree.html">org.apache.hadoop.hbase.thrift2.client</a>, </li> <li><a href="org/apache/hadoop/hbase/tmpl/master/package-tree.html">org.apache.hadoop.hbase.tmpl.master</a>, </li> <li><a href="org/apache/hadoop/hbase/tmpl/regionserver/package-tree.html">org.apache.hadoop.hbase.tmpl.regionserver</a>, </li> <li><a href="org/apache/hadoop/hbase/tool/package-tree.html">org.apache.hadoop.hbase.tool</a>, </li> @@ -3864,10 +3865,21 @@ <li type="circle">org.apache.hadoop.hbase.util.<a href="org/apache/hadoop/hbase/util/Threads.html" title="class in org.apache.hadoop.hbase.util"><span class="typeNameLink">Threads</span></a></li> <li type="circle">org.apache.hadoop.hbase.util.<a href="org/apache/hadoop/hbase/util/Threads.PrintThreadInfoLazyHolder.html" title="class in org.apache.hadoop.hbase.util"><span class="typeNameLink">Threads.PrintThreadInfoLazyHolder</span></a></li> <li type="circle">org.apache.hadoop.hbase.regionserver.<a href="org/apache/hadoop/hbase/regionserver/ThreadSafeMemStoreSizing.html" title="class in org.apache.hadoop.hbase.regionserver"><span class="typeNameLink">ThreadSafeMemStoreSizing</span></a> (implements org.apache.hadoop.hbase.regionserver.<a href="org/apache/hadoop/hbase/regionserver/MemStoreSizing.html" title="interface in org.apache.hadoop.hbase.regionserver">MemStoreSizing</a>)</li> +<li type="circle">org.apache.hadoop.hbase.thrift2.client.<a href="org/apache/hadoop/hbase/thrift2/client/ThriftAdmin.html" title="class in org.apache.hadoop.hbase.thrift2.client"><span class="typeNameLink">ThriftAdmin</span></a> (implements org.apache.hadoop.hbase.client.<a href="org/apache/hadoop/hbase/client/Admin.html" title="interface in org.apache.hadoop.hbase.client">Admin</a>)</li> +<li type="circle">org.apache.hadoop.hbase.thrift2.client.<a href="org/apache/hadoop/hbase/thrift2/client/ThriftClientBuilder.html" title="class in org.apache.hadoop.hbase.thrift2.client"><span class="typeNameLink">ThriftClientBuilder</span></a> +<ul> +<li type="circle">org.apache.hadoop.hbase.thrift2.client.<a href="org/apache/hadoop/hbase/thrift2/client/ThriftConnection.DefaultThriftClientBuilder.html" title="class in org.apache.hadoop.hbase.thrift2.client"><span class="typeNameLink">ThriftConnection.DefaultThriftClientBuilder</span></a></li> +<li type="circle">org.apache.hadoop.hbase.thrift2.client.<a href="org/apache/hadoop/hbase/thrift2/client/ThriftConnection.HTTPThriftClientBuilder.html" title="class in org.apache.hadoop.hbase.thrift2.client"><span class="typeNameLink">ThriftConnection.HTTPThriftClientBuilder</span></a></li> +</ul> +</li> +<li type="circle">org.apache.hadoop.hbase.thrift2.client.<a href="org/apache/hadoop/hbase/thrift2/client/ThriftConnection.html" title="class in org.apache.hadoop.hbase.thrift2.client"><span class="typeNameLink">ThriftConnection</span></a> (implements org.apache.hadoop.hbase.client.<a href="org/apache/hadoop/hbase/client/Connection.html" title="interface in org.apache.hadoop.hbase.client">Connection</a>)</li> <li type="circle">org.apache.hadoop.hbase.thrift.<a href="org/apache/hadoop/hbase/thrift/ThriftHBaseServiceHandler.ResultScannerWrapper.html" title="class in org.apache.hadoop.hbase.thrift"><span class="typeNameLink">ThriftHBaseServiceHandler.ResultScannerWrapper</span></a></li> <li type="circle">org.apache.hadoop.hbase.thrift.<a href="org/apache/hadoop/hbase/thrift/ThriftHttpServlet.HttpKerberosServerAction.html" title="class in org.apache.hadoop.hbase.thrift"><span class="typeNameLink">ThriftHttpServlet.HttpKerberosServerAction</span></a> (implements java.security.<a href="https://docs.oracle.com/javase/8/docs/api/java/security/PrivilegedExceptionAction.html?is-external=true" title="class or interface in java.security">PrivilegedExceptionAction</a><T>)</li> <li type="circle">org.apache.hadoop.hbase.thrift.<a href="org/apache/hadoop/hbase/thrift/ThriftHttpServlet.RemoteUserIdentity.html" title="class in org.apache.hadoop.hbase.thrift"><span class="typeNameLink">ThriftHttpServlet.RemoteUserIdentity</span></a></li> <li type="circle">org.apache.hadoop.hbase.thrift.<a href="org/apache/hadoop/hbase/thrift/ThriftMetrics.html" title="class in org.apache.hadoop.hbase.thrift"><span class="typeNameLink">ThriftMetrics</span></a></li> +<li type="circle">org.apache.hadoop.hbase.thrift2.client.<a href="org/apache/hadoop/hbase/thrift2/client/ThriftTable.html" title="class in org.apache.hadoop.hbase.thrift2.client"><span class="typeNameLink">ThriftTable</span></a> (implements org.apache.hadoop.hbase.client.<a href="org/apache/hadoop/hbase/client/Table.html" title="interface in org.apache.hadoop.hbase.client">Table</a>)</li> +<li type="circle">org.apache.hadoop.hbase.thrift2.client.<a href="org/apache/hadoop/hbase/thrift2/client/ThriftTable.CheckAndMutateBuilderImpl.html" title="class in org.apache.hadoop.hbase.thrift2.client"><span class="typeNameLink">ThriftTable.CheckAndMutateBuilderImpl</span></a> (implements org.apache.hadoop.hbase.client.<a href="org/apache/hadoop/hbase/client/Table.CheckAndMutateBuilder.html" title="interface in org.apache.hadoop.hbase.client">Table.CheckAndMutateBuilder</a>)</li> +<li type="circle">org.apache.hadoop.hbase.thrift2.client.<a href="org/apache/hadoop/hbase/thrift2/client/ThriftTable.Scanner.html" title="class in org.apache.hadoop.hbase.thrift2.client"><span class="typeNameLink">ThriftTable.Scanner</span></a> (implements org.apache.hadoop.hbase.client.<a href="org/apache/hadoop/hbase/client/ResultScanner.html" title="interface in org.apache.hadoop.hbase.client">ResultScanner</a>)</li> <li type="circle">org.apache.hadoop.hbase.thrift2.<a href="org/apache/hadoop/hbase/thrift2/ThriftUtilities.html" title="class in org.apache.hadoop.hbase.thrift2"><span class="typeNameLink">ThriftUtilities</span></a></li> <li type="circle">org.apache.hadoop.hbase.thrift.<a href="org/apache/hadoop/hbase/thrift/ThriftUtilities.html" title="class in org.apache.hadoop.hbase.thrift"><span class="typeNameLink">ThriftUtilities</span></a></li> <li type="circle">org.apache.hadoop.hbase.regionserver.throttle.<a href="org/apache/hadoop/hbase/regionserver/throttle/ThroughputControlUtil.html" title="class in org.apache.hadoop.hbase.regionserver.throttle"><span class="typeNameLink">ThroughputControlUtil</span></a></li> http://git-wip-us.apache.org/repos/asf/hbase-site/blob/aa3fb87f/devapidocs/package-list ---------------------------------------------------------------------- diff --git a/devapidocs/package-list b/devapidocs/package-list index cda2404..8e99a0a 100644 --- a/devapidocs/package-list +++ b/devapidocs/package-list @@ -99,6 +99,7 @@ org.apache.hadoop.hbase.security.visibility.expression org.apache.hadoop.hbase.snapshot org.apache.hadoop.hbase.thrift org.apache.hadoop.hbase.thrift2 +org.apache.hadoop.hbase.thrift2.client org.apache.hadoop.hbase.tmpl.master org.apache.hadoop.hbase.tmpl.regionserver org.apache.hadoop.hbase.tool http://git-wip-us.apache.org/repos/asf/hbase-site/blob/aa3fb87f/devapidocs/src-html/org/apache/hadoop/hbase/Version.html ---------------------------------------------------------------------- diff --git a/devapidocs/src-html/org/apache/hadoop/hbase/Version.html b/devapidocs/src-html/org/apache/hadoop/hbase/Version.html index 5c282d8..e59e253 100644 --- a/devapidocs/src-html/org/apache/hadoop/hbase/Version.html +++ b/devapidocs/src-html/org/apache/hadoop/hbase/Version.html @@ -18,9 +18,9 @@ <span class="sourceLineNo">010</span> public static final String version = "3.0.0-SNAPSHOT";<a name="line.10"></a> <span class="sourceLineNo">011</span> public static final String revision = "";<a name="line.11"></a> <span class="sourceLineNo">012</span> public static final String user = "jenkins";<a name="line.12"></a> -<span class="sourceLineNo">013</span> public static final String date = "Tue Jan 8 14:48:26 UTC 2019";<a name="line.13"></a> +<span class="sourceLineNo">013</span> public static final String date = "Wed Jan 9 14:41:23 UTC 2019";<a name="line.13"></a> <span class="sourceLineNo">014</span> public static final String url = "git://jenkins-websites1.apache.org/home/jenkins/jenkins-slave/workspace/hbase_generate_website/hbase";<a name="line.14"></a> -<span class="sourceLineNo">015</span> public static final String srcChecksum = "a7a0c59e1859943d6e076d5efcc32eec";<a name="line.15"></a> +<span class="sourceLineNo">015</span> public static final String srcChecksum = "bf24d839a67372cf3472bb6feb6cedfd";<a name="line.15"></a> <span class="sourceLineNo">016</span>}<a name="line.16"></a> http://git-wip-us.apache.org/repos/asf/hbase-site/blob/aa3fb87f/devapidocs/src-html/org/apache/hadoop/hbase/backup/impl/IncrementalBackupManager.NewestLogFilter.html ---------------------------------------------------------------------- diff --git a/devapidocs/src-html/org/apache/hadoop/hbase/backup/impl/IncrementalBackupManager.NewestLogFilter.html b/devapidocs/src-html/org/apache/hadoop/hbase/backup/impl/IncrementalBackupManager.NewestLogFilter.html index 81fc69e..6c58b9a 100644 --- a/devapidocs/src-html/org/apache/hadoop/hbase/backup/impl/IncrementalBackupManager.NewestLogFilter.html +++ b/devapidocs/src-html/org/apache/hadoop/hbase/backup/impl/IncrementalBackupManager.NewestLogFilter.html @@ -47,7 +47,7 @@ <span class="sourceLineNo">039</span>import org.apache.hadoop.hbase.client.Admin;<a name="line.39"></a> <span class="sourceLineNo">040</span>import org.apache.hadoop.hbase.client.Connection;<a name="line.40"></a> <span class="sourceLineNo">041</span>import org.apache.hadoop.hbase.procedure2.store.wal.WALProcedureStore;<a name="line.41"></a> -<span class="sourceLineNo">042</span>import org.apache.hadoop.hbase.util.FSUtils;<a name="line.42"></a> +<span class="sourceLineNo">042</span>import org.apache.hadoop.hbase.util.CommonFSUtils;<a name="line.42"></a> <span class="sourceLineNo">043</span>import org.apache.hadoop.hbase.wal.AbstractFSWALProvider;<a name="line.43"></a> <span class="sourceLineNo">044</span>import org.apache.yetus.audience.InterfaceAudience;<a name="line.44"></a> <span class="sourceLineNo">045</span>import org.slf4j.Logger;<a name="line.45"></a> @@ -251,156 +251,157 @@ <span class="sourceLineNo">243</span> throws IOException {<a name="line.243"></a> <span class="sourceLineNo">244</span> LOG.debug("In getLogFilesForNewBackup()\n" + "olderTimestamps: " + olderTimestamps<a name="line.244"></a> <span class="sourceLineNo">245</span> + "\n newestTimestamps: " + newestTimestamps);<a name="line.245"></a> -<span class="sourceLineNo">246</span> Path rootdir = FSUtils.getRootDir(conf);<a name="line.246"></a> -<span class="sourceLineNo">247</span> Path logDir = new Path(rootdir, HConstants.HREGION_LOGDIR_NAME);<a name="line.247"></a> -<span class="sourceLineNo">248</span> Path oldLogDir = new Path(rootdir, HConstants.HREGION_OLDLOGDIR_NAME);<a name="line.248"></a> -<span class="sourceLineNo">249</span> FileSystem fs = rootdir.getFileSystem(conf);<a name="line.249"></a> -<span class="sourceLineNo">250</span> NewestLogFilter pathFilter = new NewestLogFilter();<a name="line.250"></a> -<span class="sourceLineNo">251</span><a name="line.251"></a> -<span class="sourceLineNo">252</span> List<String> resultLogFiles = new ArrayList<>();<a name="line.252"></a> -<span class="sourceLineNo">253</span> List<String> newestLogs = new ArrayList<>();<a name="line.253"></a> -<span class="sourceLineNo">254</span><a name="line.254"></a> -<span class="sourceLineNo">255</span> /*<a name="line.255"></a> -<span class="sourceLineNo">256</span> * The old region servers and timestamps info we kept in backup system table may be out of sync<a name="line.256"></a> -<span class="sourceLineNo">257</span> * if new region server is added or existing one lost. We'll deal with it here when processing<a name="line.257"></a> -<span class="sourceLineNo">258</span> * the logs. If data in backup system table has more hosts, just ignore it. If the .logs<a name="line.258"></a> -<span class="sourceLineNo">259</span> * directory includes more hosts, the additional hosts will not have old timestamps to compare<a name="line.259"></a> -<span class="sourceLineNo">260</span> * with. We'll just use all the logs in that directory. We always write up-to-date region server<a name="line.260"></a> -<span class="sourceLineNo">261</span> * and timestamp info to backup system table at the end of successful backup.<a name="line.261"></a> -<span class="sourceLineNo">262</span> */<a name="line.262"></a> -<span class="sourceLineNo">263</span> FileStatus[] rss;<a name="line.263"></a> -<span class="sourceLineNo">264</span> Path p;<a name="line.264"></a> -<span class="sourceLineNo">265</span> String host;<a name="line.265"></a> -<span class="sourceLineNo">266</span> Long oldTimeStamp;<a name="line.266"></a> -<span class="sourceLineNo">267</span> String currentLogFile;<a name="line.267"></a> -<span class="sourceLineNo">268</span> long currentLogTS;<a name="line.268"></a> -<span class="sourceLineNo">269</span><a name="line.269"></a> -<span class="sourceLineNo">270</span> // Get the files in .logs.<a name="line.270"></a> -<span class="sourceLineNo">271</span> rss = fs.listStatus(logDir);<a name="line.271"></a> -<span class="sourceLineNo">272</span> for (FileStatus rs : rss) {<a name="line.272"></a> -<span class="sourceLineNo">273</span> p = rs.getPath();<a name="line.273"></a> -<span class="sourceLineNo">274</span> host = BackupUtils.parseHostNameFromLogFile(p);<a name="line.274"></a> -<span class="sourceLineNo">275</span> if (host == null) {<a name="line.275"></a> -<span class="sourceLineNo">276</span> continue;<a name="line.276"></a> -<span class="sourceLineNo">277</span> }<a name="line.277"></a> -<span class="sourceLineNo">278</span> FileStatus[] logs;<a name="line.278"></a> -<span class="sourceLineNo">279</span> oldTimeStamp = olderTimestamps.get(host);<a name="line.279"></a> -<span class="sourceLineNo">280</span> // It is possible that there is no old timestamp in backup system table for this host if<a name="line.280"></a> -<span class="sourceLineNo">281</span> // this region server is newly added after our last backup.<a name="line.281"></a> -<span class="sourceLineNo">282</span> if (oldTimeStamp == null) {<a name="line.282"></a> -<span class="sourceLineNo">283</span> logs = fs.listStatus(p);<a name="line.283"></a> -<span class="sourceLineNo">284</span> } else {<a name="line.284"></a> -<span class="sourceLineNo">285</span> pathFilter.setLastBackupTS(oldTimeStamp);<a name="line.285"></a> -<span class="sourceLineNo">286</span> logs = fs.listStatus(p, pathFilter);<a name="line.286"></a> -<span class="sourceLineNo">287</span> }<a name="line.287"></a> -<span class="sourceLineNo">288</span> for (FileStatus log : logs) {<a name="line.288"></a> -<span class="sourceLineNo">289</span> LOG.debug("currentLogFile: " + log.getPath().toString());<a name="line.289"></a> -<span class="sourceLineNo">290</span> if (AbstractFSWALProvider.isMetaFile(log.getPath())) {<a name="line.290"></a> -<span class="sourceLineNo">291</span> if (LOG.isDebugEnabled()) {<a name="line.291"></a> -<span class="sourceLineNo">292</span> LOG.debug("Skip hbase:meta log file: " + log.getPath().getName());<a name="line.292"></a> -<span class="sourceLineNo">293</span> }<a name="line.293"></a> -<span class="sourceLineNo">294</span> continue;<a name="line.294"></a> -<span class="sourceLineNo">295</span> }<a name="line.295"></a> -<span class="sourceLineNo">296</span> currentLogFile = log.getPath().toString();<a name="line.296"></a> -<span class="sourceLineNo">297</span> resultLogFiles.add(currentLogFile);<a name="line.297"></a> -<span class="sourceLineNo">298</span> currentLogTS = BackupUtils.getCreationTime(log.getPath());<a name="line.298"></a> -<span class="sourceLineNo">299</span><a name="line.299"></a> -<span class="sourceLineNo">300</span> // If newestTimestamps.get(host) is null, means that<a name="line.300"></a> -<span class="sourceLineNo">301</span> // either RS (host) has been restarted recently with different port number<a name="line.301"></a> -<span class="sourceLineNo">302</span> // or RS is down (was decommisioned). In any case, we treat this<a name="line.302"></a> -<span class="sourceLineNo">303</span> // log file as eligible for inclusion into incremental backup log list<a name="line.303"></a> -<span class="sourceLineNo">304</span> Long ts = newestTimestamps.get(host);<a name="line.304"></a> -<span class="sourceLineNo">305</span> if (ts == null) {<a name="line.305"></a> -<span class="sourceLineNo">306</span> LOG.warn("ORPHAN log found: " + log + " host=" + host);<a name="line.306"></a> -<span class="sourceLineNo">307</span> LOG.debug("Known hosts (from newestTimestamps):");<a name="line.307"></a> -<span class="sourceLineNo">308</span> for (String s: newestTimestamps.keySet()) {<a name="line.308"></a> -<span class="sourceLineNo">309</span> LOG.debug(s);<a name="line.309"></a> -<span class="sourceLineNo">310</span> }<a name="line.310"></a> -<span class="sourceLineNo">311</span> }<a name="line.311"></a> -<span class="sourceLineNo">312</span> if (ts == null || currentLogTS > ts) {<a name="line.312"></a> -<span class="sourceLineNo">313</span> newestLogs.add(currentLogFile);<a name="line.313"></a> -<span class="sourceLineNo">314</span> }<a name="line.314"></a> -<span class="sourceLineNo">315</span> }<a name="line.315"></a> -<span class="sourceLineNo">316</span> }<a name="line.316"></a> -<span class="sourceLineNo">317</span><a name="line.317"></a> -<span class="sourceLineNo">318</span> // Include the .oldlogs files too.<a name="line.318"></a> -<span class="sourceLineNo">319</span> FileStatus[] oldlogs = fs.listStatus(oldLogDir);<a name="line.319"></a> -<span class="sourceLineNo">320</span> for (FileStatus oldlog : oldlogs) {<a name="line.320"></a> -<span class="sourceLineNo">321</span> p = oldlog.getPath();<a name="line.321"></a> -<span class="sourceLineNo">322</span> currentLogFile = p.toString();<a name="line.322"></a> -<span class="sourceLineNo">323</span> if (AbstractFSWALProvider.isMetaFile(p)) {<a name="line.323"></a> -<span class="sourceLineNo">324</span> if (LOG.isDebugEnabled()) {<a name="line.324"></a> -<span class="sourceLineNo">325</span> LOG.debug("Skip .meta log file: " + currentLogFile);<a name="line.325"></a> -<span class="sourceLineNo">326</span> }<a name="line.326"></a> -<span class="sourceLineNo">327</span> continue;<a name="line.327"></a> -<span class="sourceLineNo">328</span> }<a name="line.328"></a> -<span class="sourceLineNo">329</span> host = BackupUtils.parseHostFromOldLog(p);<a name="line.329"></a> -<span class="sourceLineNo">330</span> if (host == null) {<a name="line.330"></a> -<span class="sourceLineNo">331</span> continue;<a name="line.331"></a> -<span class="sourceLineNo">332</span> }<a name="line.332"></a> -<span class="sourceLineNo">333</span> currentLogTS = BackupUtils.getCreationTime(p);<a name="line.333"></a> -<span class="sourceLineNo">334</span> oldTimeStamp = olderTimestamps.get(host);<a name="line.334"></a> -<span class="sourceLineNo">335</span> /*<a name="line.335"></a> -<span class="sourceLineNo">336</span> * It is possible that there is no old timestamp in backup system table for this host. At the<a name="line.336"></a> -<span class="sourceLineNo">337</span> * time of our last backup operation, this rs did not exist. The reason can be one of the two:<a name="line.337"></a> -<span class="sourceLineNo">338</span> * 1. The rs already left/crashed. Its logs were moved to .oldlogs. 2. The rs was added after<a name="line.338"></a> -<span class="sourceLineNo">339</span> * our last backup.<a name="line.339"></a> -<span class="sourceLineNo">340</span> */<a name="line.340"></a> -<span class="sourceLineNo">341</span> if (oldTimeStamp == null) {<a name="line.341"></a> -<span class="sourceLineNo">342</span> if (currentLogTS < Long.parseLong(savedStartCode)) {<a name="line.342"></a> -<span class="sourceLineNo">343</span> // This log file is really old, its region server was before our last backup.<a name="line.343"></a> -<span class="sourceLineNo">344</span> continue;<a name="line.344"></a> -<span class="sourceLineNo">345</span> } else {<a name="line.345"></a> -<span class="sourceLineNo">346</span> resultLogFiles.add(currentLogFile);<a name="line.346"></a> -<span class="sourceLineNo">347</span> }<a name="line.347"></a> -<span class="sourceLineNo">348</span> } else if (currentLogTS > oldTimeStamp) {<a name="line.348"></a> -<span class="sourceLineNo">349</span> resultLogFiles.add(currentLogFile);<a name="line.349"></a> -<span class="sourceLineNo">350</span> }<a name="line.350"></a> -<span class="sourceLineNo">351</span><a name="line.351"></a> -<span class="sourceLineNo">352</span> // It is possible that a host in .oldlogs is an obsolete region server<a name="line.352"></a> -<span class="sourceLineNo">353</span> // so newestTimestamps.get(host) here can be null.<a name="line.353"></a> -<span class="sourceLineNo">354</span> // Even if these logs belong to a obsolete region server, we still need<a name="line.354"></a> -<span class="sourceLineNo">355</span> // to include they to avoid loss of edits for backup.<a name="line.355"></a> -<span class="sourceLineNo">356</span> Long newTimestamp = newestTimestamps.get(host);<a name="line.356"></a> -<span class="sourceLineNo">357</span> if (newTimestamp == null || currentLogTS > newTimestamp) {<a name="line.357"></a> -<span class="sourceLineNo">358</span> newestLogs.add(currentLogFile);<a name="line.358"></a> -<span class="sourceLineNo">359</span> }<a name="line.359"></a> -<span class="sourceLineNo">360</span> }<a name="line.360"></a> -<span class="sourceLineNo">361</span> // remove newest log per host because they are still in use<a name="line.361"></a> -<span class="sourceLineNo">362</span> resultLogFiles.removeAll(newestLogs);<a name="line.362"></a> -<span class="sourceLineNo">363</span> return resultLogFiles;<a name="line.363"></a> -<span class="sourceLineNo">364</span> }<a name="line.364"></a> -<span class="sourceLineNo">365</span><a name="line.365"></a> -<span class="sourceLineNo">366</span> static class NewestLogFilter implements PathFilter {<a name="line.366"></a> -<span class="sourceLineNo">367</span> private Long lastBackupTS = 0L;<a name="line.367"></a> -<span class="sourceLineNo">368</span><a name="line.368"></a> -<span class="sourceLineNo">369</span> public NewestLogFilter() {<a name="line.369"></a> -<span class="sourceLineNo">370</span> }<a name="line.370"></a> -<span class="sourceLineNo">371</span><a name="line.371"></a> -<span class="sourceLineNo">372</span> protected void setLastBackupTS(Long ts) {<a name="line.372"></a> -<span class="sourceLineNo">373</span> this.lastBackupTS = ts;<a name="line.373"></a> -<span class="sourceLineNo">374</span> }<a name="line.374"></a> -<span class="sourceLineNo">375</span><a name="line.375"></a> -<span class="sourceLineNo">376</span> @Override<a name="line.376"></a> -<span class="sourceLineNo">377</span> public boolean accept(Path path) {<a name="line.377"></a> -<span class="sourceLineNo">378</span> // skip meta table log -- ts.meta file<a name="line.378"></a> -<span class="sourceLineNo">379</span> if (AbstractFSWALProvider.isMetaFile(path)) {<a name="line.379"></a> -<span class="sourceLineNo">380</span> if (LOG.isDebugEnabled()) {<a name="line.380"></a> -<span class="sourceLineNo">381</span> LOG.debug("Skip .meta log file: " + path.getName());<a name="line.381"></a> -<span class="sourceLineNo">382</span> }<a name="line.382"></a> -<span class="sourceLineNo">383</span> return false;<a name="line.383"></a> -<span class="sourceLineNo">384</span> }<a name="line.384"></a> -<span class="sourceLineNo">385</span> long timestamp;<a name="line.385"></a> -<span class="sourceLineNo">386</span> try {<a name="line.386"></a> -<span class="sourceLineNo">387</span> timestamp = BackupUtils.getCreationTime(path);<a name="line.387"></a> -<span class="sourceLineNo">388</span> return timestamp > lastBackupTS;<a name="line.388"></a> -<span class="sourceLineNo">389</span> } catch (Exception e) {<a name="line.389"></a> -<span class="sourceLineNo">390</span> LOG.warn("Cannot read timestamp of log file " + path);<a name="line.390"></a> -<span class="sourceLineNo">391</span> return false;<a name="line.391"></a> -<span class="sourceLineNo">392</span> }<a name="line.392"></a> -<span class="sourceLineNo">393</span> }<a name="line.393"></a> -<span class="sourceLineNo">394</span> }<a name="line.394"></a> -<span class="sourceLineNo">395</span>}<a name="line.395"></a> +<span class="sourceLineNo">246</span><a name="line.246"></a> +<span class="sourceLineNo">247</span> Path walRootDir = CommonFSUtils.getWALRootDir(conf);<a name="line.247"></a> +<span class="sourceLineNo">248</span> Path logDir = new Path(walRootDir, HConstants.HREGION_LOGDIR_NAME);<a name="line.248"></a> +<span class="sourceLineNo">249</span> Path oldLogDir = new Path(walRootDir, HConstants.HREGION_OLDLOGDIR_NAME);<a name="line.249"></a> +<span class="sourceLineNo">250</span> FileSystem fs = walRootDir.getFileSystem(conf);<a name="line.250"></a> +<span class="sourceLineNo">251</span> NewestLogFilter pathFilter = new NewestLogFilter();<a name="line.251"></a> +<span class="sourceLineNo">252</span><a name="line.252"></a> +<span class="sourceLineNo">253</span> List<String> resultLogFiles = new ArrayList<>();<a name="line.253"></a> +<span class="sourceLineNo">254</span> List<String> newestLogs = new ArrayList<>();<a name="line.254"></a> +<span class="sourceLineNo">255</span><a name="line.255"></a> +<span class="sourceLineNo">256</span> /*<a name="line.256"></a> +<span class="sourceLineNo">257</span> * The old region servers and timestamps info we kept in backup system table may be out of sync<a name="line.257"></a> +<span class="sourceLineNo">258</span> * if new region server is added or existing one lost. We'll deal with it here when processing<a name="line.258"></a> +<span class="sourceLineNo">259</span> * the logs. If data in backup system table has more hosts, just ignore it. If the .logs<a name="line.259"></a> +<span class="sourceLineNo">260</span> * directory includes more hosts, the additional hosts will not have old timestamps to compare<a name="line.260"></a> +<span class="sourceLineNo">261</span> * with. We'll just use all the logs in that directory. We always write up-to-date region server<a name="line.261"></a> +<span class="sourceLineNo">262</span> * and timestamp info to backup system table at the end of successful backup.<a name="line.262"></a> +<span class="sourceLineNo">263</span> */<a name="line.263"></a> +<span class="sourceLineNo">264</span> FileStatus[] rss;<a name="line.264"></a> +<span class="sourceLineNo">265</span> Path p;<a name="line.265"></a> +<span class="sourceLineNo">266</span> String host;<a name="line.266"></a> +<span class="sourceLineNo">267</span> Long oldTimeStamp;<a name="line.267"></a> +<span class="sourceLineNo">268</span> String currentLogFile;<a name="line.268"></a> +<span class="sourceLineNo">269</span> long currentLogTS;<a name="line.269"></a> +<span class="sourceLineNo">270</span><a name="line.270"></a> +<span class="sourceLineNo">271</span> // Get the files in .logs.<a name="line.271"></a> +<span class="sourceLineNo">272</span> rss = fs.listStatus(logDir);<a name="line.272"></a> +<span class="sourceLineNo">273</span> for (FileStatus rs : rss) {<a name="line.273"></a> +<span class="sourceLineNo">274</span> p = rs.getPath();<a name="line.274"></a> +<span class="sourceLineNo">275</span> host = BackupUtils.parseHostNameFromLogFile(p);<a name="line.275"></a> +<span class="sourceLineNo">276</span> if (host == null) {<a name="line.276"></a> +<span class="sourceLineNo">277</span> continue;<a name="line.277"></a> +<span class="sourceLineNo">278</span> }<a name="line.278"></a> +<span class="sourceLineNo">279</span> FileStatus[] logs;<a name="line.279"></a> +<span class="sourceLineNo">280</span> oldTimeStamp = olderTimestamps.get(host);<a name="line.280"></a> +<span class="sourceLineNo">281</span> // It is possible that there is no old timestamp in backup system table for this host if<a name="line.281"></a> +<span class="sourceLineNo">282</span> // this region server is newly added after our last backup.<a name="line.282"></a> +<span class="sourceLineNo">283</span> if (oldTimeStamp == null) {<a name="line.283"></a> +<span class="sourceLineNo">284</span> logs = fs.listStatus(p);<a name="line.284"></a> +<span class="sourceLineNo">285</span> } else {<a name="line.285"></a> +<span class="sourceLineNo">286</span> pathFilter.setLastBackupTS(oldTimeStamp);<a name="line.286"></a> +<span class="sourceLineNo">287</span> logs = fs.listStatus(p, pathFilter);<a name="line.287"></a> +<span class="sourceLineNo">288</span> }<a name="line.288"></a> +<span class="sourceLineNo">289</span> for (FileStatus log : logs) {<a name="line.289"></a> +<span class="sourceLineNo">290</span> LOG.debug("currentLogFile: " + log.getPath().toString());<a name="line.290"></a> +<span class="sourceLineNo">291</span> if (AbstractFSWALProvider.isMetaFile(log.getPath())) {<a name="line.291"></a> +<span class="sourceLineNo">292</span> if (LOG.isDebugEnabled()) {<a name="line.292"></a> +<span class="sourceLineNo">293</span> LOG.debug("Skip hbase:meta log file: " + log.getPath().getName());<a name="line.293"></a> +<span class="sourceLineNo">294</span> }<a name="line.294"></a> +<span class="sourceLineNo">295</span> continue;<a name="line.295"></a> +<span class="sourceLineNo">296</span> }<a name="line.296"></a> +<span class="sourceLineNo">297</span> currentLogFile = log.getPath().toString();<a name="line.297"></a> +<span class="sourceLineNo">298</span> resultLogFiles.add(currentLogFile);<a name="line.298"></a> +<span class="sourceLineNo">299</span> currentLogTS = BackupUtils.getCreationTime(log.getPath());<a name="line.299"></a> +<span class="sourceLineNo">300</span><a name="line.300"></a> +<span class="sourceLineNo">301</span> // If newestTimestamps.get(host) is null, means that<a name="line.301"></a> +<span class="sourceLineNo">302</span> // either RS (host) has been restarted recently with different port number<a name="line.302"></a> +<span class="sourceLineNo">303</span> // or RS is down (was decommisioned). In any case, we treat this<a name="line.303"></a> +<span class="sourceLineNo">304</span> // log file as eligible for inclusion into incremental backup log list<a name="line.304"></a> +<span class="sourceLineNo">305</span> Long ts = newestTimestamps.get(host);<a name="line.305"></a> +<span class="sourceLineNo">306</span> if (ts == null) {<a name="line.306"></a> +<span class="sourceLineNo">307</span> LOG.warn("ORPHAN log found: " + log + " host=" + host);<a name="line.307"></a> +<span class="sourceLineNo">308</span> LOG.debug("Known hosts (from newestTimestamps):");<a name="line.308"></a> +<span class="sourceLineNo">309</span> for (String s: newestTimestamps.keySet()) {<a name="line.309"></a> +<span class="sourceLineNo">310</span> LOG.debug(s);<a name="line.310"></a> +<span class="sourceLineNo">311</span> }<a name="line.311"></a> +<span class="sourceLineNo">312</span> }<a name="line.312"></a> +<span class="sourceLineNo">313</span> if (ts == null || currentLogTS > ts) {<a name="line.313"></a> +<span class="sourceLineNo">314</span> newestLogs.add(currentLogFile);<a name="line.314"></a> +<span class="sourceLineNo">315</span> }<a name="line.315"></a> +<span class="sourceLineNo">316</span> }<a name="line.316"></a> +<span class="sourceLineNo">317</span> }<a name="line.317"></a> +<span class="sourceLineNo">318</span><a name="line.318"></a> +<span class="sourceLineNo">319</span> // Include the .oldlogs files too.<a name="line.319"></a> +<span class="sourceLineNo">320</span> FileStatus[] oldlogs = fs.listStatus(oldLogDir);<a name="line.320"></a> +<span class="sourceLineNo">321</span> for (FileStatus oldlog : oldlogs) {<a name="line.321"></a> +<span class="sourceLineNo">322</span> p = oldlog.getPath();<a name="line.322"></a> +<span class="sourceLineNo">323</span> currentLogFile = p.toString();<a name="line.323"></a> +<span class="sourceLineNo">324</span> if (AbstractFSWALProvider.isMetaFile(p)) {<a name="line.324"></a> +<span class="sourceLineNo">325</span> if (LOG.isDebugEnabled()) {<a name="line.325"></a> +<span class="sourceLineNo">326</span> LOG.debug("Skip .meta log file: " + currentLogFile);<a name="line.326"></a> +<span class="sourceLineNo">327</span> }<a name="line.327"></a> +<span class="sourceLineNo">328</span> continue;<a name="line.328"></a> +<span class="sourceLineNo">329</span> }<a name="line.329"></a> +<span class="sourceLineNo">330</span> host = BackupUtils.parseHostFromOldLog(p);<a name="line.330"></a> +<span class="sourceLineNo">331</span> if (host == null) {<a name="line.331"></a> +<span class="sourceLineNo">332</span> continue;<a name="line.332"></a> +<span class="sourceLineNo">333</span> }<a name="line.333"></a> +<span class="sourceLineNo">334</span> currentLogTS = BackupUtils.getCreationTime(p);<a name="line.334"></a> +<span class="sourceLineNo">335</span> oldTimeStamp = olderTimestamps.get(host);<a name="line.335"></a> +<span class="sourceLineNo">336</span> /*<a name="line.336"></a> +<span class="sourceLineNo">337</span> * It is possible that there is no old timestamp in backup system table for this host. At the<a name="line.337"></a> +<span class="sourceLineNo">338</span> * time of our last backup operation, this rs did not exist. The reason can be one of the two:<a name="line.338"></a> +<span class="sourceLineNo">339</span> * 1. The rs already left/crashed. Its logs were moved to .oldlogs. 2. The rs was added after<a name="line.339"></a> +<span class="sourceLineNo">340</span> * our last backup.<a name="line.340"></a> +<span class="sourceLineNo">341</span> */<a name="line.341"></a> +<span class="sourceLineNo">342</span> if (oldTimeStamp == null) {<a name="line.342"></a> +<span class="sourceLineNo">343</span> if (currentLogTS < Long.parseLong(savedStartCode)) {<a name="line.343"></a> +<span class="sourceLineNo">344</span> // This log file is really old, its region server was before our last backup.<a name="line.344"></a> +<span class="sourceLineNo">345</span> continue;<a name="line.345"></a> +<span class="sourceLineNo">346</span> } else {<a name="line.346"></a> +<span class="sourceLineNo">347</span> resultLogFiles.add(currentLogFile);<a name="line.347"></a> +<span class="sourceLineNo">348</span> }<a name="line.348"></a> +<span class="sourceLineNo">349</span> } else if (currentLogTS > oldTimeStamp) {<a name="line.349"></a> +<span class="sourceLineNo">350</span> resultLogFiles.add(currentLogFile);<a name="line.350"></a> +<span class="sourceLineNo">351</span> }<a name="line.351"></a> +<span class="sourceLineNo">352</span><a name="line.352"></a> +<span class="sourceLineNo">353</span> // It is possible that a host in .oldlogs is an obsolete region server<a name="line.353"></a> +<span class="sourceLineNo">354</span> // so newestTimestamps.get(host) here can be null.<a name="line.354"></a> +<span class="sourceLineNo">355</span> // Even if these logs belong to a obsolete region server, we still need<a name="line.355"></a> +<span class="sourceLineNo">356</span> // to include they to avoid loss of edits for backup.<a name="line.356"></a> +<span class="sourceLineNo">357</span> Long newTimestamp = newestTimestamps.get(host);<a name="line.357"></a> +<span class="sourceLineNo">358</span> if (newTimestamp == null || currentLogTS > newTimestamp) {<a name="line.358"></a> +<span class="sourceLineNo">359</span> newestLogs.add(currentLogFile);<a name="line.359"></a> +<span class="sourceLineNo">360</span> }<a name="line.360"></a> +<span class="sourceLineNo">361</span> }<a name="line.361"></a> +<span class="sourceLineNo">362</span> // remove newest log per host because they are still in use<a name="line.362"></a> +<span class="sourceLineNo">363</span> resultLogFiles.removeAll(newestLogs);<a name="line.363"></a> +<span class="sourceLineNo">364</span> return resultLogFiles;<a name="line.364"></a> +<span class="sourceLineNo">365</span> }<a name="line.365"></a> +<span class="sourceLineNo">366</span><a name="line.366"></a> +<span class="sourceLineNo">367</span> static class NewestLogFilter implements PathFilter {<a name="line.367"></a> +<span class="sourceLineNo">368</span> private Long lastBackupTS = 0L;<a name="line.368"></a> +<span class="sourceLineNo">369</span><a name="line.369"></a> +<span class="sourceLineNo">370</span> public NewestLogFilter() {<a name="line.370"></a> +<span class="sourceLineNo">371</span> }<a name="line.371"></a> +<span class="sourceLineNo">372</span><a name="line.372"></a> +<span class="sourceLineNo">373</span> protected void setLastBackupTS(Long ts) {<a name="line.373"></a> +<span class="sourceLineNo">374</span> this.lastBackupTS = ts;<a name="line.374"></a> +<span class="sourceLineNo">375</span> }<a name="line.375"></a> +<span class="sourceLineNo">376</span><a name="line.376"></a> +<span class="sourceLineNo">377</span> @Override<a name="line.377"></a> +<span class="sourceLineNo">378</span> public boolean accept(Path path) {<a name="line.378"></a> +<span class="sourceLineNo">379</span> // skip meta table log -- ts.meta file<a name="line.379"></a> +<span class="sourceLineNo">380</span> if (AbstractFSWALProvider.isMetaFile(path)) {<a name="line.380"></a> +<span class="sourceLineNo">381</span> if (LOG.isDebugEnabled()) {<a name="line.381"></a> +<span class="sourceLineNo">382</span> LOG.debug("Skip .meta log file: " + path.getName());<a name="line.382"></a> +<span class="sourceLineNo">383</span> }<a name="line.383"></a> +<span class="sourceLineNo">384</span> return false;<a name="line.384"></a> +<span class="sourceLineNo">385</span> }<a name="line.385"></a> +<span class="sourceLineNo">386</span> long timestamp;<a name="line.386"></a> +<span class="sourceLineNo">387</span> try {<a name="line.387"></a> +<span class="sourceLineNo">388</span> timestamp = BackupUtils.getCreationTime(path);<a name="line.388"></a> +<span class="sourceLineNo">389</span> return timestamp > lastBackupTS;<a name="line.389"></a> +<span class="sourceLineNo">390</span> } catch (Exception e) {<a name="line.390"></a> +<span class="sourceLineNo">391</span> LOG.warn("Cannot read timestamp of log file " + path);<a name="line.391"></a> +<span class="sourceLineNo">392</span> return false;<a name="line.392"></a> +<span class="sourceLineNo">393</span> }<a name="line.393"></a> +<span class="sourceLineNo">394</span> }<a name="line.394"></a> +<span class="sourceLineNo">395</span> }<a name="line.395"></a> +<span class="sourceLineNo">396</span>}<a name="line.396"></a>