http://git-wip-us.apache.org/repos/asf/hbase-site/blob/c7e84622/book.html
----------------------------------------------------------------------
diff --git a/book.html b/book.html
index d244150..876f41c 100644
--- a/book.html
+++ b/book.html
@@ -4,11 +4,11 @@
 <meta charset="UTF-8">
 <!--[if IE]><meta http-equiv="X-UA-Compatible" content="IE=edge"><![endif]-->
 <meta name="viewport" content="width=device-width, initial-scale=1.0">
-<meta name="generator" content="Asciidoctor 1.5.2">
+<meta name="generator" content="Asciidoctor 1.5.3">
 <meta name="author" content="Apache HBase Team">
 <title>Apache HBase &#8482; Reference Guide</title>
 <link rel="stylesheet" href="./hbase.css">
-<link rel="stylesheet" 
href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/4.2.0/css/font-awesome.min.css";>
+<link rel="stylesheet" 
href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/4.4.0/css/font-awesome.min.css";>
 <link rel="stylesheet" href="./coderay-asciidoctor.css">
 </head>
 <body class="book toc2 toc-left">
@@ -261,17 +261,22 @@
 <li><a href="#_integration_testing_with_an_hbase_mini_cluster">154. 
Integration Testing with an HBase Mini-Cluster</a></li>
 </ul>
 </li>
+<li><a href="#protobuf">Protobuf in HBase</a>
+<ul class="sectlevel1">
+<li><a href="#_protobuf">155. Protobuf</a></li>
+</ul>
+</li>
 <li><a href="#zookeeper">ZooKeeper</a>
 <ul class="sectlevel1">
-<li><a href="#_using_existing_zookeeper_ensemble">155. Using existing 
ZooKeeper ensemble</a></li>
-<li><a href="#zk.sasl.auth">156. SASL Authentication with ZooKeeper</a></li>
+<li><a href="#_using_existing_zookeeper_ensemble">156. Using existing 
ZooKeeper ensemble</a></li>
+<li><a href="#zk.sasl.auth">157. SASL Authentication with ZooKeeper</a></li>
 </ul>
 </li>
 <li><a href="#community">Community</a>
 <ul class="sectlevel1">
-<li><a href="#_decisions">157. Decisions</a></li>
-<li><a href="#community.roles">158. Community Roles</a></li>
-<li><a href="#hbase.commit.msg.format">159. Commit Message format</a></li>
+<li><a href="#_decisions">158. Decisions</a></li>
+<li><a href="#community.roles">159. Community Roles</a></li>
+<li><a href="#hbase.commit.msg.format">160. Commit Message format</a></li>
 </ul>
 </li>
 <li><a href="#_appendix">Appendix</a>
@@ -281,7 +286,7 @@
 <li><a href="#hbck.in.depth">Appendix C: hbck In Depth</a></li>
 <li><a href="#appendix_acl_matrix">Appendix D: Access Control Matrix</a></li>
 <li><a href="#compression">Appendix E: Compression and Data Block Encoding In 
HBase</a></li>
-<li><a href="#data.block.encoding.enable">160. Enable Data Block 
Encoding</a></li>
+<li><a href="#data.block.encoding.enable">161. Enable Data Block 
Encoding</a></li>
 <li><a href="#sql">Appendix F: SQL over HBase</a></li>
 <li><a href="#ycsb">Appendix G: YCSB</a></li>
 <li><a href="#_hfile_format_2">Appendix H: HFile format</a></li>
@@ -290,8 +295,8 @@
 <li><a href="#asf">Appendix K: HBase and the Apache Software 
Foundation</a></li>
 <li><a href="#orca">Appendix L: Apache HBase Orca</a></li>
 <li><a href="#tracing">Appendix M: Enabling Dapper-like Tracing in 
HBase</a></li>
-<li><a href="#tracing.client.modifications">161. Client Modifications</a></li>
-<li><a href="#tracing.client.shell">162. Tracing from HBase Shell</a></li>
+<li><a href="#tracing.client.modifications">162. Client Modifications</a></li>
+<li><a href="#tracing.client.shell">163. Tracing from HBase Shell</a></li>
 <li><a href="#hbase.rpc">Appendix N: 0.95 RPC Specification</a></li>
 </ul>
 </li>
@@ -5243,7 +5248,7 @@ example9</code></pre>
 <div class="listingblock">
 <div class="content">
 <pre># The java implementation to use.
-export JAVA_HOME=/usr/java/jdk1.7.0/
+export JAVA_HOME=/usr/java/jdk1.8.0/
 
 # The maximum amount of heap to use. Default is left to JVM default.
 export HBASE_HEAPSIZE=4G</pre>
@@ -5816,7 +5821,7 @@ It may be possible to skip across 
versions&#8201;&#8212;&#8201;for example go fr
 <p>APIs available in a patch version will be available in all later patch 
versions. However, new APIs may be added which will not be available in earlier 
patch versions.</p>
 </li>
 <li>
-<p>New APIs introduced in a patch version will only be added in a source 
compatible way <span class="footnote">[<a id="_footnoteref_1" class="footnote" 
href="#_footnote_1" title="View footnote.">1</a>]</span>: i.e. code that 
implements public APIs will continue to compile.</p>
+<p>New APIs introduced in a patch version will only be added in a source 
compatible way <sup class="footnote">[<a id="_footnoteref_1" class="footnote" 
href="#_footnote_1" title="View footnote.">1</a>]</sup>: i.e. code that 
implements public APIs will continue to compile.</p>
 </li>
 <li>
 <p>Example: A user using a newly deprecated API does not need to modify 
application code with HBase API calls until the next major version.</p>
@@ -5880,7 +5885,7 @@ It may be possible to skip across 
versions&#8201;&#8212;&#8201;for example go fr
 <div class="title">Summary</div>
 <ul>
 <li>
-<p>A patch upgrade is a drop-in replacement. Any change that is not Java 
binary and source compatible would not be allowed.<span class="footnote">[<a 
id="_footnoteref_2" class="footnote" href="#_footnote_2" title="View 
footnote.">2</a>]</span> Downgrading versions within patch releases may not be 
compatible.</p>
+<p>A patch upgrade is a drop-in replacement. Any change that is not Java 
binary and source compatible would not be allowed.<sup class="footnote">[<a 
id="_footnoteref_2" class="footnote" href="#_footnote_2" title="View 
footnote.">2</a>]</sup> Downgrading versions within patch releases may not be 
compatible.</p>
 </li>
 <li>
 <p>A minor upgrade requires no application/client code modification. Ideally 
it would be a drop-in replacement but client code, coprocessors, filters, etc 
might have to be recompiled if new jars are used.</p>
@@ -5891,7 +5896,7 @@ It may be possible to skip across 
versions&#8201;&#8212;&#8201;for example go fr
 </ul>
 </div>
 <table class="tableblock frame-all grid-all spread">
-<caption class="title">Table 3. Compatibility Matrix <span 
class="footnote">[<a id="_footnoteref_3" class="footnote" href="#_footnote_3" 
title="View footnote.">3</a>]</span></caption>
+<caption class="title">Table 3. Compatibility Matrix <sup class="footnote">[<a 
id="_footnoteref_3" class="footnote" href="#_footnote_3" title="View 
footnote.">3</a>]</sup></caption>
 <colgroup>
 <col style="width: 25%;">
 <col style="width: 25%;">
@@ -5919,7 +5924,7 @@ It may be possible to skip across 
versions&#8201;&#8212;&#8201;for example go fr
 </tr>
 <tr>
 <td class="tableblock halign-left valign-top"><p class="tableblock">File 
Format Compatibility</p></td>
-<td class="tableblock halign-left valign-top"><p class="tableblock">N <span 
class="footnote">[<a id="_footnoteref_4" class="footnote" href="#_footnote_4" 
title="View footnote.">4</a>]</span></p></td>
+<td class="tableblock halign-left valign-top"><p class="tableblock">N <sup 
class="footnote">[<a id="_footnoteref_4" class="footnote" href="#_footnote_4" 
title="View footnote.">4</a>]</sup></p></td>
 <td class="tableblock halign-left valign-top"><p class="tableblock">Y</p></td>
 <td class="tableblock halign-left valign-top"><p class="tableblock">Y</p></td>
 </tr>
@@ -15757,31 +15762,51 @@ If you use HBase shell, the general command pattern 
is as follows:</p>
 <tbody>
 <tr>
 <td class="tableblock halign-left valign-top"><p 
class="tableblock"><code>hbase.hstore.compaction.date.tiered.max.storefile.age.millis</code></p></td>
-<td class="tableblock halign-left valign-top"><div><div class="paragraph">
+<td class="tableblock halign-left valign-top"><div><div id="toc" class="toc">
+<div id="toctitle">Contents</div>
+
+</div>
+<div class="paragraph">
 <p>Files with max-timestamp smaller than this will no longer be 
compacted.Default at Long.MAX_VALUE.</p>
 </div></div></td>
 </tr>
 <tr>
 <td class="tableblock halign-left valign-top"><p 
class="tableblock"><code>hbase.hstore.compaction.date.tiered.base.window.millis</code></p></td>
-<td class="tableblock halign-left valign-top"><div><div class="paragraph">
+<td class="tableblock halign-left valign-top"><div><div id="toc" class="toc">
+<div id="toctitle">Contents</div>
+
+</div>
+<div class="paragraph">
 <p>Base window size in milliseconds. Default at 6 hours.</p>
 </div></div></td>
 </tr>
 <tr>
 <td class="tableblock halign-left valign-top"><p 
class="tableblock"><code>hbase.hstore.compaction.date.tiered.windows.per.tier</code></p></td>
-<td class="tableblock halign-left valign-top"><div><div class="paragraph">
+<td class="tableblock halign-left valign-top"><div><div id="toc" class="toc">
+<div id="toctitle">Contents</div>
+
+</div>
+<div class="paragraph">
 <p>Number of windows per tier. Default at 4.</p>
 </div></div></td>
 </tr>
 <tr>
 <td class="tableblock halign-left valign-top"><p 
class="tableblock"><code>hbase.hstore.compaction.date.tiered.incoming.window.min</code></p></td>
-<td class="tableblock halign-left valign-top"><div><div class="paragraph">
+<td class="tableblock halign-left valign-top"><div><div id="toc" class="toc">
+<div id="toctitle">Contents</div>
+
+</div>
+<div class="paragraph">
 <p>Minimal number of files to compact in the incoming window. Set it to 
expected number of files in the window to avoid wasteful compaction. Default at 
6.</p>
 </div></div></td>
 </tr>
 <tr>
 <td class="tableblock halign-left valign-top"><p 
class="tableblock"><code>hbase.hstore.compaction.date.tiered.window.policy.class</code></p></td>
-<td class="tableblock halign-left valign-top"><div><div class="paragraph">
+<td class="tableblock halign-left valign-top"><div><div id="toc" class="toc">
+<div id="toctitle">Contents</div>
+
+</div>
+<div class="paragraph">
 <p>The policy to select store files within the same time window. It doesn’t 
apply to the incoming window. Default at exploring compaction. This is to avoid 
wasteful compaction.</p>
 </div></div></td>
 </tr>
@@ -15937,7 +15962,11 @@ For example, if your regions are 30 GB, 12 x 2.5 GB 
stripes might be a good star
 <tbody>
 <tr>
 <td class="tableblock halign-left valign-top"><p 
class="tableblock"><code>hbase.store.stripe.initialStripeCount</code></p></td>
-<td class="tableblock halign-left valign-top"><div><div class="paragraph">
+<td class="tableblock halign-left valign-top"><div><div id="toc" class="toc">
+<div id="toctitle">Contents</div>
+
+</div>
+<div class="paragraph">
 <p>The number of stripes to create when stripe compaction is enabled. You can 
use it as follows:</p>
 </div>
 <div class="ulist">
@@ -15962,7 +15991,11 @@ one hash prefix per region, pre-splitting may make 
sense.</p>
 </tr>
 <tr>
 <td class="tableblock halign-left valign-top"><p 
class="tableblock"><code>hbase.store.stripe.sizeToSplit</code></p></td>
-<td class="tableblock halign-left valign-top"><div><div class="paragraph">
+<td class="tableblock halign-left valign-top"><div><div id="toc" class="toc">
+<div id="toctitle">Contents</div>
+
+</div>
+<div class="paragraph">
 <p>The maximum size a stripe grows before splitting. Use this in
 conjunction with <code>hbase.store.stripe.splitPartCount</code> to
 control the target stripe size (<code>sizeToSplit = splitPartsCount * target
@@ -15971,7 +16004,11 @@ stripe size</code>), according to the above sizing 
considerations.</p>
 </tr>
 <tr>
 <td class="tableblock halign-left valign-top"><p 
class="tableblock"><code>hbase.store.stripe.splitPartCount</code></p></td>
-<td class="tableblock halign-left valign-top"><div><div class="paragraph">
+<td class="tableblock halign-left valign-top"><div><div id="toc" class="toc">
+<div id="toctitle">Contents</div>
+
+</div>
+<div class="paragraph">
 <p>The number of new stripes to create when splitting a stripe. The default is 
2, which is appropriate for most cases. For non-uniform row keys, you can 
experiment with increasing the number to 3 or 4, to isolate the arriving 
updates into narrower slice of the region without additional splits being 
required.</p>
 </div></div></td>
 </tr>
@@ -19507,14 +19544,14 @@ which implements the <code>WalObserver</code> 
interface and will not break if ne
 </div>
 </div>
 <div class="sect2">
-<h3 id="_endpoint_coprocessor"><a class="anchor" 
href="#_endpoint_coprocessor"></a>87.2. Endpoint Coprocessor</h3>
+<h3 id="cpeps"><a class="anchor" href="#cpeps"></a>87.2. Endpoint 
Coprocessor</h3>
 <div class="paragraph">
 <p>Endpoint processors allow you to perform computation at the location of the 
data.
 See <a href="#cp_analogies">Coprocessor Analogy</a>. An example is the need to 
calculate a running
 average or summation for an entire table which spans hundreds of regions.</p>
 </div>
 <div class="paragraph">
-<p>In contract to observer coprocessors, where your code is run transparently, 
endpoint
+<p>In contrast to observer coprocessors, where your code is run transparently, 
endpoint
 coprocessors must be explicitly invoked using the
 <a 
href="https://hbase.apache.org/devapidocs/org/apache/hadoop/hbase/client/Table.html#coprocessorService%28java.lang.Class,%20byte%5B%5D,%20byte%5B%5D,%20org.apache.hadoop.hbase.client.coprocessor.Batch.Call%29";>CoprocessorService()</a>
 method available in
@@ -19534,6 +19571,18 @@ HBase cluster from 0.94 or earlier to 0.96 or later, 
you need to reimplement you
 coprocessor.</p>
 </div>
 <div class="paragraph">
+<p>Coprocessor Endpoints should make no use of HBase internals and
+only avail of public APIs; ideally a CPEP should depend on Interfaces
+and data structures only. This is not always possible but beware
+that doing so makes the Endpoint brittle, liable to breakage as HBase
+internals evolve. HBase internal APIs annotated as private or evolving
+do not have to respect semantic versioning rules or general java rules on
+deprecation before removal. While generated protobuf files are
+absent the hbase audience annotations&#8201;&#8212;&#8201;they are created by 
the
+protobuf protoc tool which knows nothing of how HBase 
works&#8201;&#8212;&#8201;they should be consided 
<code>@InterfaceAudience.Private</code> so are liable to
+change.</p>
+</div>
+<div class="paragraph">
 <p><a href="#cp_example">Examples</a> provides working examples of endpoint 
coprocessors.</p>
 </div>
 </div>
@@ -19605,7 +19654,7 @@ Ties are broken arbitrarily.</p>
 </div>
 </li>
 <li>
-<p>Put your code HBase&#8217;s classpath. One easy way to do this is to drop 
the jar
+<p>Put your code on HBase&#8217;s classpath. One easy way to do this is to 
drop the jar
 (containing you code and all the dependencies) into the <code>lib/</code> 
directory in the
 HBase installation.</p>
 </li>
@@ -19710,10 +19759,9 @@ it in HDFS.<br>
 <a href="https://issues.apache.org/jira/browse/HBASE-14548";>HBASE-14548</a> 
allows a directory containing the jars
 or some wildcards to be specified, such as: 
hdfs://&lt;namenode&gt;:&lt;port&gt;/user/&lt;hadoop-user&gt;/ or
 hdfs://&lt;namenode&gt;:&lt;port&gt;/user/&lt;hadoop-user&gt;/*.jar. Please 
note that if a directory is specified,
-all jar files(.jar) directly in the directory are added,
-but it does not search files in the subtree rooted in the directory.
-And do not contain any wildcard if you would like to specify a directory.
-This enhancement applies to the ways of using the JAVA API as well.</p>
+all jar files(.jar) in the directory are added. It does not search for files 
in sub-directories.
+Do not use a wildcard if you would like to specify a directory. This 
enhancement applies to the
+usage via the JAVA API as well.</p>
 </li>
 <li>
 <p>Class name: The full class name of the Coprocessor.</p>
@@ -24877,7 +24925,7 @@ In this case, or if you are in a OLAP environment and 
require having locality, t
 <div class="sectionbody">
 <div class="paragraph">
 <p>HBase emits metrics which adhere to the <a 
href="http://hadoop.apache.org/core/docs/current/api/org/apache/hadoop/metrics/package-summary.html";>Hadoop
 metrics</a> API.
-Starting with HBase 0.95<span class="footnote">[<a id="_footnoteref_5" 
class="footnote" href="#_footnote_5" title="View footnote.">5</a>]</span>, 
HBase is configured to emit a default set of metrics with a default sampling 
period of every 10 seconds.
+Starting with HBase 0.95<sup class="footnote">[<a id="_footnoteref_5" 
class="footnote" href="#_footnote_5" title="View footnote.">5</a>]</sup>, HBase 
is configured to emit a default set of metrics with a default sampling period 
of every 10 seconds.
 You can use HBase metrics in conjunction with Ganglia.
 You can also filter which metrics are emitted and extend the metrics framework 
to capture custom metrics appropriate for your environment.</p>
 </div>
@@ -25851,7 +25899,7 @@ The new layout will be:</p>
 <div class="sect2">
 <h3 id="_replication_metrics"><a class="anchor" 
href="#_replication_metrics"></a>134.5. Replication Metrics</h3>
 <div class="paragraph">
-<p>The following metrics are exposed at the global region server level and 
(since HBase 0.95) at the peer level:</p>
+<p>The following metrics are exposed at the global region server level and at 
the peer level:</p>
 </div>
 <div class="dlist">
 <dl>
@@ -25871,6 +25919,34 @@ The new layout will be:</p>
 <dd>
 <p>age of last batch that was shipped by the replication source</p>
 </dd>
+<dt class="hdlist1"><code>source.completedLogs</code></dt>
+<dd>
+<p>The number of write-ahead-log files that have completed their acknowledged 
sending to the peer associated with this source. Increments to this metric are 
a part of normal operation of HBase replication.</p>
+</dd>
+<dt class="hdlist1"><code>source.completedRecoverQueues</code></dt>
+<dd>
+<p>The number of recovery queues this source has completed sending to the 
associated peer. Increments to this metric are a part of normal recovery of 
HBase replication in the face of failed Region Servers.</p>
+</dd>
+<dt class="hdlist1"><code>source.uncleanlyClosedLogs</code></dt>
+<dd>
+<p>The number of write-ahead-log files the replication system considered 
completed after reaching the end of readable entries in the face of an 
uncleanly closed file.</p>
+</dd>
+<dt 
class="hdlist1"><code>source.ignoredUncleanlyClosedLogContentsInBytes</code></dt>
+<dd>
+<p>When a write-ahead-log file is not closed cleanly, there will likely be 
some entry that has been partially serialized. This metric contains the number 
of bytes of such entries the HBase replication system believes were remaining 
at the end of files skipped in the face of an uncleanly closed file. Those 
bytes should either be in different file or represent a client write that was 
not acknowledged.</p>
+</dd>
+<dt class="hdlist1"><code>source.restartedLogReading</code></dt>
+<dd>
+<p>The number of times the HBase replication system detected that it failed to 
correctly parse a cleanly closed write-ahead-log file. In this circumstance, 
the system replays the entire log from the beginning, ensuring that no edits 
fail to be acknowledged by the associated peer. Increments to this metric 
indicate that the HBase replication system is having difficulty correctly 
handling failures in the underlying distributed storage system. No dataloss 
should occur, but you should check Region Server log files for details of the 
failures.</p>
+</dd>
+<dt class="hdlist1"><code>source.repeatedLogFileBytes</code></dt>
+<dd>
+<p>When the HBase replication system determines that it needs to replay a 
given write-ahead-log file, this metric is incremented by the number of bytes 
the replication system believes had already been acknowledged by the associated 
peer prior to starting over.</p>
+</dd>
+<dt class="hdlist1"><code>source.closedLogsWithUnknownFileLength</code></dt>
+<dd>
+<p>Incremented when the HBase replication system believes it is at the end of 
a write-ahead-log file but it can not determine the length of that file in the 
underlying distributed storage system. Could indicate dataloss since the 
replication system is unable to determine if the end of readable entries lines 
up with the expected end of the file. You should check Region Server log files 
for details of the failures.</p>
+</dd>
 </dl>
 </div>
 </div>
@@ -29895,6 +29971,152 @@ Starting the mini-cluster takes about 20-30 seconds, 
but that should be appropri
 </div>
 </div>
 </div>
+<h1 id="protobuf" class="sect0"><a class="anchor" 
href="#protobuf"></a>Protobuf in HBase</h1>
+<div class="openblock partintro">
+<div class="content">
+HBase uses Google&#8217;s <a href="http://protobuf.protobufs";>protobufs</a> 
wherever
+it persists metadata&#8201;&#8212;&#8201;in the tail of hfiles or Cells 
written by
+HBase into the system hbase;meta table or when HBase writes znodes
+to zookeeper, etc.&#8201;&#8212;&#8201;and when it passes objects over the 
wire making
+<a href="#hbase.rpc">RPCs</a>. HBase uses protobufs to describe the RPC
+Interfaces (Services) we expose to clients, for example the <code>Admin</code> 
and <code>Client</code>
+Interfaces that the RegionServer fields,
+or specifying the arbitrary extensions added by developers via our
+<a href="#cp">Coprocessor Endpoint</a> mechanism.
+In this chapter we go into detail for  developers who are looking to
+understand better how it all works. This chapter is of particular
+use to those who would amend or extend HBase functionality.
+</div>
+</div>
+<div class="sect1">
+<h2 id="_protobuf"><a class="anchor" href="#_protobuf"></a>155. Protobuf</h2>
+<div class="sectionbody">
+<div class="paragraph">
+<p>With protobuf, you describe serializations and services in a 
<code>.protos</code> file.
+You then feed these descriptors to a protobuf tool, the <code>protoc</code> 
binary,
+to generate classes that can marshall and unmarshall the described 
serializations
+and field the specified Services.</p>
+</div>
+<div class="paragraph">
+<p>See the <code>README.txt</code> in the HBase sub-modules for detail on how
+to run the class generation on a per-module basis;
+e.g. see <code>hbase-protocol/README.txt</code> for how to generated protobuf 
classes
+in the hbase-protocol module.</p>
+</div>
+<div class="paragraph">
+<p>In HBase, <code>.proto</code> files are either in the 
<code>hbase-protocol</code> module, a module
+dedicated to hosting the common proto files and the protoc generated classes
+that HBase uses internally serializing metadata or, for extensions to hbase
+such as REST or Coprocessor Endpoints that need their own descriptors, their
+protos are located inside the function&#8217;s hosting module: e.g. 
<code>hbase-rest</code>
+is home to the REST proto files and the <code>hbase-rsgroup</code> table 
grouping
+Coprocessor Endpoint has all protos that have to do with table grouping.</p>
+</div>
+<div class="paragraph">
+<p>Protos are hosted by the module that makes use of them. While
+this makes it so generation of protobuf classes is distributed, done
+per module, we do it this way so modules encapsulate all to do with
+the functionality they bring to hbase.</p>
+</div>
+<div class="paragraph">
+<p>Extensions whether REST or Coprocessor Endpoints will make use
+of core HBase protos found back in the hbase-protocol module. They&#8217;ll
+use these core protos when they want to serialize a Cell or a Put or
+refer to a particular node via ServerName, etc., as part of providing the
+CPEP Service. Going forward, after the release of hbase-2.0.0, this
+practice needs to whither. We&#8217;ll make plain why in the later
+<a href="#shaded.protobuf">hbase-2.0.0</a> section.</p>
+</div>
+<div class="sect2">
+<h3 id="shaded.protobuf"><a class="anchor" href="#shaded.protobuf"></a>155.1. 
hbase-2.0.0 and the shading of protobufs (HBASE-15638)</h3>
+<div class="paragraph">
+<p>As of hbase-2.0.0, our protobuf usage gets a little more involved. HBase
+core protobuf references are offset so as to refer to a private,
+bundled protobuf. Core stops referring to protobuf
+classes at com.google.protobuf.* and instead references protobuf at
+the HBase-specific offset
+org.apache.hadoop.hbase.shaded.com.google.protobuf.*.  We do this indirection
+so hbase core can evolve its protobuf version independent of whatever our
+dependencies rely on. For instance, HDFS serializes using protobuf.
+HDFS is on our CLASSPATH. Without the above described indirection, our
+protobuf versions would have to align. HBase would be stuck
+on the HDFS protobuf version until HDFS decided upgrade. HBase
+and HDFS verions would be tied.</p>
+</div>
+<div class="paragraph">
+<p>We had to move on from protobuf-2.5.0 because we need facilities
+added in protobuf-3.1.0; in particular being able to save on
+copies and avoiding bringing protobufs onheap for
+serialization/deserialization.</p>
+</div>
+<div class="paragraph">
+<p>In hbase-2.0.0, we introduced a new module, 
<code>hbase-protocol-shaded</code>
+inside which we contained all to do with protobuf and its subsequent
+relocation/shading. This module is in essence a copy of much of the old
+<code>hbase-protocol</code> but with an extra shading/relocation step (see the 
<code>README.txt</code>
+and the <code>poms.xml</code> in this module for more on how to trigger this
+effect and how it all works). Core was moved to depend on this new
+module.</p>
+</div>
+<div class="paragraph">
+<p>That said, a complication arises around Coprocessor Endpoints (CPEPs).
+CPEPs depend on public HBase APIs that reference protobuf classes at
+<code>com.google.protobuf.*</code> explicitly. For example, in our Table 
Interface
+we have the below as the means by which you obtain a CPEP Service
+to make invocations against:</p>
+</div>
+<div class="listingblock">
+<div class="content">
+<pre class="CodeRay highlight"><code data-lang="java">...
+  &lt;T <span class="directive">extends</span> 
com.google.protobuf.Service,R&gt; <span 
class="predefined-type">Map</span>&lt;<span class="type">byte</span><span 
class="type">[]</span>,R&gt; coprocessorService(
+   <span class="predefined-type">Class</span>&lt;T&gt; service, <span 
class="type">byte</span><span class="type">[]</span> startKey, <span 
class="type">byte</span><span class="type">[]</span> endKey,
+     org.apache.hadoop.hbase.client.coprocessor.Batch.Call&lt;T,R&gt; callable)
+  <span class="directive">throws</span> com.google.protobuf.ServiceException, 
<span class="predefined-type">Throwable</span></code></pre>
+</div>
+</div>
+<div class="paragraph">
+<p>Existing CPEPs will have made reference to core HBase protobufs
+specifying ServerNames or carrying Mutations.
+So as to continue being able to service CPEPs and their references
+to <code>com.google.protobuf.<strong></code> across the upgrade to hbase-2.0.0 
and beyond,
+HBase needs to be able to deal with both
+<code>com.google.protobuf.</strong></code> references and its internal offset
+<code>org.apache.hadoop.hbase.shaded.com.google.protobuf.*</code> 
protobufs.</p>
+</div>
+<div class="paragraph">
+<p>The <code>hbase-protocol-shaded</code> module hosts all
+protobufs used by HBase core as well as the internal shaded version of
+protobufs that hbase depends on. hbase-client and hbase-server, etc.,
+depend on this module.</p>
+</div>
+<div class="paragraph">
+<p>But for the vestigial CPEP references to the (non-shaded) content of
+<code>hbase-protocol</code>, we keep around most of this  module going forward
+just so it is available to CPEPs.  Retaining the most of 
<code>hbase-protocol</code>
+makes for overlapping, 'duplicated' proto instances where some exist as
+non-shaded/non-relocated here in their old module
+location but also in the new location, shaded under
+<code>hbase-protocol-shaded</code>. In other words, there is an instance
+of the generated protobuf class
+<code>org.apache.hadoop.hbase.protobuf.generated.ServerName</code>
+in hbase-protocol and another generated instance that is the same in all
+regards except its protobuf references are to the internal shaded
+version at 
<code>org.apache.hadoop.hbase.shaded.protobuf.generated.ServerName</code>
+(note the 'shaded' addition in the middle of the package name).</p>
+</div>
+<div class="paragraph">
+<p>If you extend a proto in <code>hbase-protocol-shaded</code> for  internal 
use,
+consider extending it also in
+<code>hbase-protocol</code> (and regenerating).</p>
+</div>
+<div class="paragraph">
+<p>Going forward, we will provide a new module of common types for use
+by CPEPs that will have the same guarantees against change as does our
+public API. TODO.</p>
+</div>
+</div>
+</div>
+</div>
 <h1 id="zookeeper" class="sect0"><a class="anchor" 
href="#zookeeper"></a>ZooKeeper</h1>
 <div class="openblock partintro">
 <div class="content">
@@ -30016,7 +30238,7 @@ zookeeper could start dropping sessions if it has to 
run through a directory of
 </div>
 </div>
 <div class="sect1">
-<h2 id="_using_existing_zookeeper_ensemble"><a class="anchor" 
href="#_using_existing_zookeeper_ensemble"></a>155. Using existing ZooKeeper 
ensemble</h2>
+<h2 id="_using_existing_zookeeper_ensemble"><a class="anchor" 
href="#_using_existing_zookeeper_ensemble"></a>156. Using existing ZooKeeper 
ensemble</h2>
 <div class="sectionbody">
 <div class="paragraph">
 <p>To point HBase at an existing ZooKeeper cluster, one that is not managed by 
HBase, set <code>HBASE_MANAGES_ZK</code> in <em>conf/hbase-env.sh</em> to 
false</p>
@@ -30053,7 +30275,7 @@ Additionally, see the <a 
href="http://wiki.apache.org/hadoop/ZooKeeper/FAQ#A7";>Z
 </div>
 </div>
 <div class="sect1">
-<h2 id="zk.sasl.auth"><a class="anchor" href="#zk.sasl.auth"></a>156. SASL 
Authentication with ZooKeeper</h2>
+<h2 id="zk.sasl.auth"><a class="anchor" href="#zk.sasl.auth"></a>157. SASL 
Authentication with ZooKeeper</h2>
 <div class="sectionbody">
 <div class="paragraph">
 <p>Newer releases of Apache HBase (&gt;= 0.92) will support connecting to a 
ZooKeeper Quorum that supports SASL authentication (which is available in 
ZooKeeper versions 3.4.0 or later).</p>
@@ -30063,7 +30285,7 @@ Additionally, see the <a 
href="http://wiki.apache.org/hadoop/ZooKeeper/FAQ#A7";>Z
 ZooKeeper/HBase mutual authentication (<a 
href="https://issues.apache.org/jira/browse/HBASE-2418";>HBASE-2418</a>) is 
required as part of a complete secure HBase configuration (<a 
href="https://issues.apache.org/jira/browse/HBASE-3025";>HBASE-3025</a>). For 
simplicity of explication, this section ignores additional configuration 
required (Secure HDFS and Coprocessor configuration). It&#8217;s recommended to 
begin with an HBase-managed ZooKeeper configuration (as opposed to a standalone 
ZooKeeper quorum) for ease of learning.</p>
 </div>
 <div class="sect2">
-<h3 id="_operating_system_prerequisites"><a class="anchor" 
href="#_operating_system_prerequisites"></a>156.1. Operating System 
Prerequisites</h3>
+<h3 id="_operating_system_prerequisites"><a class="anchor" 
href="#_operating_system_prerequisites"></a>157.1. Operating System 
Prerequisites</h3>
 <div class="paragraph">
 <p>You need to have a working Kerberos KDC setup.
 For each <code>$HOST</code> that will run a ZooKeeper server, you should have 
a principle <code>zookeeper/$HOST</code>.
@@ -30099,7 +30321,7 @@ The ZooKeeper client and server libraries manage their 
own ticket refreshment by
 </div>
 </div>
 <div class="sect2">
-<h3 id="_hbase_managed_zookeeper_configuration"><a class="anchor" 
href="#_hbase_managed_zookeeper_configuration"></a>156.2. HBase-managed 
ZooKeeper Configuration</h3>
+<h3 id="_hbase_managed_zookeeper_configuration"><a class="anchor" 
href="#_hbase_managed_zookeeper_configuration"></a>157.2. HBase-managed 
ZooKeeper Configuration</h3>
 <div class="paragraph">
 <p>On each node that will run a zookeeper, a master, or a regionserver, create 
a <a 
href="http://docs.oracle.com/javase/1.4.2/docs/guide/security/jgss/tutorials/LoginConfigFile.html";>JAAS</a>
        configuration file in the conf directory of the node&#8217;s 
<em>HBASE_HOME</em>        directory that looks like the following:</p>
 </div>
@@ -30191,7 +30413,7 @@ bin/hbase regionserver start</pre>
 </div>
 </div>
 <div class="sect2">
-<h3 id="_external_zookeeper_configuration"><a class="anchor" 
href="#_external_zookeeper_configuration"></a>156.3. External ZooKeeper 
Configuration</h3>
+<h3 id="_external_zookeeper_configuration"><a class="anchor" 
href="#_external_zookeeper_configuration"></a>157.3. External ZooKeeper 
Configuration</h3>
 <div class="paragraph">
 <p>Add a JAAS configuration file that looks like:</p>
 </div>
@@ -30292,7 +30514,7 @@ bin/hbase regionserver start</pre>
 </div>
 </div>
 <div class="sect2">
-<h3 id="_zookeeper_server_authentication_log_output"><a class="anchor" 
href="#_zookeeper_server_authentication_log_output"></a>156.4. ZooKeeper Server 
Authentication Log Output</h3>
+<h3 id="_zookeeper_server_authentication_log_output"><a class="anchor" 
href="#_zookeeper_server_authentication_log_output"></a>157.4. ZooKeeper Server 
Authentication Log Output</h3>
 <div class="paragraph">
 <p>If the configuration above is successful, you should see something similar 
to the following in your ZooKeeper server logs:</p>
 </div>
@@ -30314,7 +30536,7 @@ bin/hbase regionserver start</pre>
 </div>
 </div>
 <div class="sect2">
-<h3 id="_zookeeper_client_authentication_log_output"><a class="anchor" 
href="#_zookeeper_client_authentication_log_output"></a>156.5. ZooKeeper Client 
Authentication Log Output</h3>
+<h3 id="_zookeeper_client_authentication_log_output"><a class="anchor" 
href="#_zookeeper_client_authentication_log_output"></a>157.5. ZooKeeper Client 
Authentication Log Output</h3>
 <div class="paragraph">
 <p>On the ZooKeeper client side (HBase master or regionserver), you should see 
something similar to the following:</p>
 </div>
@@ -30335,7 +30557,7 @@ bin/hbase regionserver start</pre>
 </div>
 </div>
 <div class="sect2">
-<h3 id="_configuration_from_scratch"><a class="anchor" 
href="#_configuration_from_scratch"></a>156.6. Configuration from Scratch</h3>
+<h3 id="_configuration_from_scratch"><a class="anchor" 
href="#_configuration_from_scratch"></a>157.6. Configuration from Scratch</h3>
 <div class="paragraph">
 <p>This has been tested on the current standard Amazon Linux AMI.
 First setup KDC and principals as described above.
@@ -30361,9 +30583,9 @@ bin/hbase regionserver &amp;</pre>
 </div>
 </div>
 <div class="sect2">
-<h3 id="_future_improvements"><a class="anchor" 
href="#_future_improvements"></a>156.7. Future improvements</h3>
+<h3 id="_future_improvements"><a class="anchor" 
href="#_future_improvements"></a>157.7. Future improvements</h3>
 <div class="sect3">
-<h4 id="_fix_target_cached_classpath_txt"><a class="anchor" 
href="#_fix_target_cached_classpath_txt"></a>156.7.1. Fix 
target/cached_classpath.txt</h4>
+<h4 id="_fix_target_cached_classpath_txt"><a class="anchor" 
href="#_fix_target_cached_classpath_txt"></a>157.7.1. Fix 
target/cached_classpath.txt</h4>
 <div class="paragraph">
 <p>You must override the standard hadoop-core jar file from the 
<code>target/cached_classpath.txt</code> file with the version containing the 
HADOOP-7070 fix.
 You can use the following script to do this:</p>
@@ -30376,13 +30598,13 @@ mv target/tmp.txt target/cached_classpath.txt</pre>
 </div>
 </div>
 <div class="sect3">
-<h4 id="_set_jaas_configuration_programmatically"><a class="anchor" 
href="#_set_jaas_configuration_programmatically"></a>156.7.2. Set JAAS 
configuration programmatically</h4>
+<h4 id="_set_jaas_configuration_programmatically"><a class="anchor" 
href="#_set_jaas_configuration_programmatically"></a>157.7.2. Set JAAS 
configuration programmatically</h4>
 <div class="paragraph">
 <p>This would avoid the need for a separate Hadoop jar that fixes <a 
href="https://issues.apache.org/jira/browse/HADOOP-7070";>HADOOP-7070</a>.</p>
 </div>
 </div>
 <div class="sect3">
-<h4 
id="_elimination_of_code_kerberos_removehostfromprincipal_code_and_kerberos_removerealmfromprincipal"><a
 class="anchor" 
href="#_elimination_of_code_kerberos_removehostfromprincipal_code_and_kerberos_removerealmfromprincipal"></a>156.7.3.
 Elimination of <code>kerberos.removeHostFromPrincipal</code> 
and`kerberos.removeRealmFromPrincipal`</h4>
+<h4 
id="_elimination_of_code_kerberos_removehostfromprincipal_code_and_kerberos_removerealmfromprincipal"><a
 class="anchor" 
href="#_elimination_of_code_kerberos_removehostfromprincipal_code_and_kerberos_removerealmfromprincipal"></a>157.7.3.
 Elimination of <code>kerberos.removeHostFromPrincipal</code> 
and`kerberos.removeRealmFromPrincipal`</h4>
 
 </div>
 </div>
@@ -30390,7 +30612,7 @@ mv target/tmp.txt target/cached_classpath.txt</pre>
 </div>
 <h1 id="community" class="sect0"><a class="anchor" 
href="#community"></a>Community</h1>
 <div class="sect1">
-<h2 id="_decisions"><a class="anchor" href="#_decisions"></a>157. 
Decisions</h2>
+<h2 id="_decisions"><a class="anchor" href="#_decisions"></a>158. 
Decisions</h2>
 <div class="sectionbody">
 <div class="paragraph">
 <div class="title">Feature Branches</div>
@@ -30462,7 +30684,7 @@ We also are currently in violation of this basic 
tenet&#8201;&#8212;&#8201;repli
 </div>
 </div>
 <div class="sect1">
-<h2 id="community.roles"><a class="anchor" href="#community.roles"></a>158. 
Community Roles</h2>
+<h2 id="community.roles"><a class="anchor" href="#community.roles"></a>159. 
Community Roles</h2>
 <div class="sectionbody">
 <div id="owner" class="paragraph">
 <div class="title">Component Owner/Lieutenant</div>
@@ -30489,7 +30711,7 @@ Owners do not need to be committers.</p>
 </div>
 </div>
 <div class="sect1">
-<h2 id="hbase.commit.msg.format"><a class="anchor" 
href="#hbase.commit.msg.format"></a>159. Commit Message format</h2>
+<h2 id="hbase.commit.msg.format"><a class="anchor" 
href="#hbase.commit.msg.format"></a>160. Commit Message format</h2>
 <div class="sectionbody">
 <div class="paragraph">
 <p>We <a href="http://search-hadoop.com/m/Gwxwl10cFHa1";>agreed</a> to the 
following Git commit message format:</p>
@@ -30736,47 +30958,75 @@ is available at <a 
href="http://asciidoctor.org/docs/user-manual/"; class="bare">
 <tr>
 <td class="tableblock halign-left valign-top"><p class="tableblock">A 
paragraph</p></td>
 <td class="tableblock halign-left valign-top"><p class="tableblock">a 
paragraph</p></td>
-<td class="tableblock halign-left valign-top"><div><div class="paragraph">
+<td class="tableblock halign-left valign-top"><div><div id="toc" class="toc">
+<div id="toctitle">Contents</div>
+
+</div>
+<div class="paragraph">
 <p>Just type some text with a blank line at the top and bottom.</p>
 </div></div></td>
 </tr>
 <tr>
 <td class="tableblock halign-left valign-top"><p class="tableblock">Add line 
breaks within a paragraph without adding blank lines</p></td>
 <td class="tableblock halign-left valign-top"><p class="tableblock">Manual 
line breaks</p></td>
-<td class="tableblock halign-left valign-top"><div><div class="paragraph">
+<td class="tableblock halign-left valign-top"><div><div id="toc" class="toc">
+<div id="toctitle">Contents</div>
+
+</div>
+<div class="paragraph">
 <p>This will break + at the plus sign. Or prefix the whole paragraph with a 
line containing '[%hardbreaks]'</p>
 </div></div></td>
 </tr>
 <tr>
 <td class="tableblock halign-left valign-top"><p class="tableblock">Give a 
title to anything</p></td>
 <td class="tableblock halign-left valign-top"><p class="tableblock">Colored 
italic bold differently-sized text</p></td>
-<td class="tableblock halign-left valign-top"><div></div></td>
+<td class="tableblock halign-left valign-top"><div><div id="toc" class="toc">
+<div id="toctitle">Contents</div>
+
+</div>
+</div></td>
 </tr>
 <tr>
 <td class="tableblock halign-left valign-top"><p class="tableblock">In-Line 
Code or commands</p></td>
 <td class="tableblock halign-left valign-top"><p 
class="tableblock">monospace</p></td>
-<td class="tableblock halign-left valign-top"><div><div class="paragraph">
+<td class="tableblock halign-left valign-top"><div><div id="toc" class="toc">
+<div id="toctitle">Contents</div>
+
+</div>
+<div class="paragraph">
 <p>`text`</p>
 </div></div></td>
 </tr>
 <tr>
 <td class="tableblock halign-left valign-top"><p class="tableblock">In-line 
literal content (things to be typed exactly as shown)</p></td>
 <td class="tableblock halign-left valign-top"><p class="tableblock">bold 
mono</p></td>
-<td class="tableblock halign-left valign-top"><div><div class="paragraph">
+<td class="tableblock halign-left valign-top"><div><div id="toc" class="toc">
+<div id="toctitle">Contents</div>
+
+</div>
+<div class="paragraph">
 <p>*`typethis`*</p>
 </div></div></td>
 </tr>
 <tr>
 <td class="tableblock halign-left valign-top"><p class="tableblock">In-line 
replaceable content (things to substitute with your own values)</p></td>
 <td class="tableblock halign-left valign-top"><p class="tableblock">bold 
italic mono</p></td>
-<td class="tableblock halign-left valign-top"><div><div class="paragraph">
+<td class="tableblock halign-left valign-top"><div><div id="toc" class="toc">
+<div id="toctitle">Contents</div>
+
+</div>
+<div class="paragraph">
 <p>*_typesomething_*</p>
 </div></div></td>
 </tr>
 <tr>
 <td class="tableblock halign-left valign-top"><p class="tableblock">Code 
blocks with highlighting</p></td>
 <td class="tableblock halign-left valign-top"><p class="tableblock">monospace, 
highlighted, preserve space</p></td>
-<td class="tableblock halign-left valign-top"><div><div class="literalblock">
+<td class="tableblock halign-left valign-top"><div><div id="toc" class="toc">
+<div id="toctitle">Contents</div>
+
+</div>
+<div class="literalblock">
 <div class="content">
 <pre>[source,java]
 ----
@@ -30789,7 +31039,11 @@ is available at <a 
href="http://asciidoctor.org/docs/user-manual/"; class="bare">
 <tr>
 <td class="tableblock halign-left valign-top"><p class="tableblock">Code block 
included from a separate file</p></td>
 <td class="tableblock halign-left valign-top"><p class="tableblock">included 
just as though it were part of the main file</p></td>
-<td class="tableblock halign-left valign-top"><div><div class="literalblock">
+<td class="tableblock halign-left valign-top"><div><div id="toc" class="toc">
+<div id="toctitle">Contents</div>
+
+</div>
+<div class="literalblock">
 <div class="content">
 <pre>[source,ruby]
 ----
@@ -30801,21 +31055,33 @@ include\::path/to/app.rb[]
 <tr>
 <td class="tableblock halign-left valign-top"><p class="tableblock">Include 
only part of a separate file</p></td>
 <td class="tableblock halign-left valign-top"><p class="tableblock">Similar to 
Javadoc</p></td>
-<td class="tableblock halign-left valign-top"><div><div class="paragraph">
+<td class="tableblock halign-left valign-top"><div><div id="toc" class="toc">
+<div id="toctitle">Contents</div>
+
+</div>
+<div class="paragraph">
 <p>See <a href="http://asciidoctor.org/docs/user-manual/#by-tagged-regions"; 
class="bare">http://asciidoctor.org/docs/user-manual/#by-tagged-regions</a></p>
 </div></div></td>
 </tr>
 <tr>
 <td class="tableblock halign-left valign-top"><p class="tableblock">Filenames, 
directory names, new terms</p></td>
 <td class="tableblock halign-left valign-top"><p 
class="tableblock">italic</p></td>
-<td class="tableblock halign-left valign-top"><div><div class="paragraph">
+<td class="tableblock halign-left valign-top"><div><div id="toc" class="toc">
+<div id="toctitle">Contents</div>
+
+</div>
+<div class="paragraph">
 <p>_hbase-default.xml_</p>
 </div></div></td>
 </tr>
 <tr>
 <td class="tableblock halign-left valign-top"><p class="tableblock">External 
naked URLs</p></td>
 <td class="tableblock halign-left valign-top"><p class="tableblock">A link 
with the URL as link text</p></td>
-<td class="tableblock halign-left valign-top"><div><div class="listingblock">
+<td class="tableblock halign-left valign-top"><div><div id="toc" class="toc">
+<div id="toctitle">Contents</div>
+
+</div>
+<div class="listingblock">
 <div class="content">
 <pre>link:http://www.google.com</pre>
 </div>
@@ -30824,7 +31090,11 @@ include\::path/to/app.rb[]
 <tr>
 <td class="tableblock halign-left valign-top"><p class="tableblock">External 
URLs with text</p></td>
 <td class="tableblock halign-left valign-top"><p class="tableblock">A link 
with arbitrary link text</p></td>
-<td class="tableblock halign-left valign-top"><div><div class="listingblock">
+<td class="tableblock halign-left valign-top"><div><div id="toc" class="toc">
+<div id="toctitle">Contents</div>
+
+</div>
+<div class="listingblock">
 <div class="content">
 <pre>link:http://www.google.com[Google]</pre>
 </div>
@@ -30833,7 +31103,11 @@ include\::path/to/app.rb[]
 <tr>
 <td class="tableblock halign-left valign-top"><p class="tableblock">Create an 
internal anchor to cross-reference</p></td>
 <td class="tableblock halign-left valign-top"><p class="tableblock">not 
rendered</p></td>
-<td class="tableblock halign-left valign-top"><div><div class="listingblock">
+<td class="tableblock halign-left valign-top"><div><div id="toc" class="toc">
+<div id="toctitle">Contents</div>
+
+</div>
+<div class="listingblock">
 <div class="content">
 <pre>[[anchor_name]]</pre>
 </div>
@@ -30842,7 +31116,11 @@ include\::path/to/app.rb[]
 <tr>
 <td class="tableblock halign-left valign-top"><p 
class="tableblock">Cross-reference an existing anchor using its default 
title</p></td>
 <td class="tableblock halign-left valign-top"><p class="tableblock">an 
internal hyperlink using the element title if available, otherwise using the 
anchor name</p></td>
-<td class="tableblock halign-left valign-top"><div><div class="listingblock">
+<td class="tableblock halign-left valign-top"><div><div id="toc" class="toc">
+<div id="toctitle">Contents</div>
+
+</div>
+<div class="listingblock">
 <div class="content">
 <pre>&lt;&lt;anchor_name&gt;&gt;</pre>
 </div>
@@ -30851,7 +31129,11 @@ include\::path/to/app.rb[]
 <tr>
 <td class="tableblock halign-left valign-top"><p 
class="tableblock">Cross-reference an existing anchor using custom text</p></td>
 <td class="tableblock halign-left valign-top"><p class="tableblock">an 
internal hyperlink using arbitrary text</p></td>
-<td class="tableblock halign-left valign-top"><div><div class="listingblock">
+<td class="tableblock halign-left valign-top"><div><div id="toc" class="toc">
+<div id="toctitle">Contents</div>
+
+</div>
+<div class="listingblock">
 <div class="content">
 <pre>&lt;&lt;anchor_name,Anchor Text&gt;&gt;</pre>
 </div>
@@ -30860,7 +31142,11 @@ include\::path/to/app.rb[]
 <tr>
 <td class="tableblock halign-left valign-top"><p class="tableblock">A block 
image</p></td>
 <td class="tableblock halign-left valign-top"><p class="tableblock">The image 
with alt text</p></td>
-<td class="tableblock halign-left valign-top"><div><div class="listingblock">
+<td class="tableblock halign-left valign-top"><div><div id="toc" class="toc">
+<div id="toctitle">Contents</div>
+
+</div>
+<div class="listingblock">
 <div class="content">
 <pre>image::sunset.jpg[Alt Text]</pre>
 </div>
@@ -30872,7 +31158,11 @@ include\::path/to/app.rb[]
 <tr>
 <td class="tableblock halign-left valign-top"><p class="tableblock">An inline 
image</p></td>
 <td class="tableblock halign-left valign-top"><p class="tableblock">The image 
with alt text, as part of the text flow</p></td>
-<td class="tableblock halign-left valign-top"><div><div class="listingblock">
+<td class="tableblock halign-left valign-top"><div><div id="toc" class="toc">
+<div id="toctitle">Contents</div>
+
+</div>
+<div class="listingblock">
 <div class="content">
 <pre>image:sunset.jpg [Alt Text]</pre>
 </div>
@@ -30884,7 +31174,11 @@ include\::path/to/app.rb[]
 <tr>
 <td class="tableblock halign-left valign-top"><p class="tableblock">Link to a 
remote image</p></td>
 <td class="tableblock halign-left valign-top"><p class="tableblock">show an 
image hosted elsewhere</p></td>
-<td class="tableblock halign-left valign-top"><div><div class="listingblock">
+<td class="tableblock halign-left valign-top"><div><div id="toc" class="toc">
+<div id="toctitle">Contents</div>
+
+</div>
+<div class="listingblock">
 <div class="content">
 <pre>image::http://inkscape.org/doc/examples/tux.svg[Tux,250,350]</pre>
 </div>
@@ -30896,14 +31190,22 @@ include\::path/to/app.rb[]
 <tr>
 <td class="tableblock halign-left valign-top"><p class="tableblock">Add 
dimensions or a URL to the image</p></td>
 <td class="tableblock halign-left valign-top"><p 
class="tableblock">depends</p></td>
-<td class="tableblock halign-left valign-top"><div><div class="paragraph">
+<td class="tableblock halign-left valign-top"><div><div id="toc" class="toc">
+<div id="toctitle">Contents</div>
+
+</div>
+<div class="paragraph">
 <p>inside the brackets after the alt text, specify width, height and/or 
link="http://my_link.com";</p>
 </div></div></td>
 </tr>
 <tr>
 <td class="tableblock halign-left valign-top"><p class="tableblock">A 
footnote</p></td>
 <td class="tableblock halign-left valign-top"><p class="tableblock">subscript 
link which takes you to the footnote</p></td>
-<td class="tableblock halign-left valign-top"><div><div class="listingblock">
+<td class="tableblock halign-left valign-top"><div><div id="toc" class="toc">
+<div id="toctitle">Contents</div>
+
+</div>
+<div class="listingblock">
 <div class="content">
 <pre>Some text.footnote:[The footnote text.]</pre>
 </div>
@@ -30912,7 +31214,11 @@ include\::path/to/app.rb[]
 <tr>
 <td class="tableblock halign-left valign-top"><p class="tableblock">A note or 
warning with no title</p></td>
 <td class="tableblock halign-left valign-top"><p class="tableblock">The 
admonition image followed by the admonition</p></td>
-<td class="tableblock halign-left valign-top"><div><div class="listingblock">
+<td class="tableblock halign-left valign-top"><div><div id="toc" class="toc">
+<div id="toctitle">Contents</div>
+
+</div>
+<div class="listingblock">
 <div class="content">
 <pre>NOTE:My note here</pre>
 </div>
@@ -30926,7 +31232,11 @@ include\::path/to/app.rb[]
 <tr>
 <td class="tableblock halign-left valign-top"><p class="tableblock">A complex 
note</p></td>
 <td class="tableblock halign-left valign-top"><p class="tableblock">The note 
has a title and/or multiple paragraphs and/or code blocks or lists, etc</p></td>
-<td class="tableblock halign-left valign-top"><div><div class="literalblock">
+<td class="tableblock halign-left valign-top"><div><div id="toc" class="toc">
+<div id="toctitle">Contents</div>
+
+</div>
+<div class="literalblock">
 <div class="content">
 <pre>.The Title
 [NOTE]
@@ -30942,7 +31252,11 @@ some source code
 <tr>
 <td class="tableblock halign-left valign-top"><p class="tableblock">Bullet 
lists</p></td>
 <td class="tableblock halign-left valign-top"><p class="tableblock">bullet 
lists</p></td>
-<td class="tableblock halign-left valign-top"><div><div class="listingblock">
+<td class="tableblock halign-left valign-top"><div><div id="toc" class="toc">
+<div id="toctitle">Contents</div>
+
+</div>
+<div class="listingblock">
 <div class="content">
 <pre>* list item 1</pre>
 </div>
@@ -30954,7 +31268,11 @@ some source code
 <tr>
 <td class="tableblock halign-left valign-top"><p class="tableblock">Numbered 
lists</p></td>
 <td class="tableblock halign-left valign-top"><p class="tableblock">numbered 
list</p></td>
-<td class="tableblock halign-left valign-top"><div><div class="listingblock">
+<td class="tableblock halign-left valign-top"><div><div id="toc" class="toc">
+<div id="toctitle">Contents</div>
+
+</div>
+<div class="listingblock">
 <div class="content">
 <pre>. list item 2</pre>
 </div>
@@ -30966,7 +31284,11 @@ some source code
 <tr>
 <td class="tableblock halign-left valign-top"><p 
class="tableblock">Checklists</p></td>
 <td class="tableblock halign-left valign-top"><p class="tableblock">Checked or 
unchecked boxes</p></td>
-<td class="tableblock halign-left valign-top"><div><div class="paragraph">
+<td class="tableblock halign-left valign-top"><div><div id="toc" class="toc">
+<div id="toctitle">Contents</div>
+
+</div>
+<div class="paragraph">
 <p>Checked:</p>
 </div>
 <div class="listingblock">
@@ -30986,7 +31308,11 @@ some source code
 <tr>
 <td class="tableblock halign-left valign-top"><p class="tableblock">Multiple 
levels of lists</p></td>
 <td class="tableblock halign-left valign-top"><p class="tableblock">bulleted 
or numbered or combo</p></td>
-<td class="tableblock halign-left valign-top"><div><div class="listingblock">
+<td class="tableblock halign-left valign-top"><div><div id="toc" class="toc">
+<div id="toctitle">Contents</div>
+
+</div>
+<div class="listingblock">
 <div class="content">
 <pre>. Numbered (1), at top level
 * Bullet (2), nested under 1
@@ -31001,7 +31327,11 @@ some source code
 <tr>
 <td class="tableblock halign-left valign-top"><p class="tableblock">Labelled 
lists / variablelists</p></td>
 <td class="tableblock halign-left valign-top"><p class="tableblock">a list 
item title or summary followed by content</p></td>
-<td class="tableblock halign-left valign-top"><div><div class="listingblock">
+<td class="tableblock halign-left valign-top"><div><div id="toc" class="toc">
+<div id="toctitle">Contents</div>
+
+</div>
+<div class="listingblock">
 <div class="content">
 <pre>Title:: content
 
@@ -31013,7 +31343,11 @@ Title::
 <tr>
 <td class="tableblock halign-left valign-top"><p class="tableblock">Sidebars, 
quotes, or other blocks of text</p></td>
 <td class="tableblock halign-left valign-top"><p class="tableblock">a block of 
text, formatted differently from the default</p></td>
-<td class="tableblock halign-left valign-top"><div><div class="paragraph">
+<td class="tableblock halign-left valign-top"><div><div id="toc" class="toc">
+<div id="toctitle">Contents</div>
+
+</div>
+<div class="paragraph">
 <p>Delimited using different delimiters,
 see <a href="http://asciidoctor.org/docs/user-manual/#built-in-blocks-summary"; 
class="bare">http://asciidoctor.org/docs/user-manual/#built-in-blocks-summary</a>.
 Some of the examples above use delimiters like ...., ----,====.</p>
@@ -31048,7 +31382,11 @@ ____</pre>
 <tr>
 <td class="tableblock halign-left valign-top"><p class="tableblock">Nested 
Sections</p></td>
 <td class="tableblock halign-left valign-top"><p class="tableblock">chapter, 
section, sub-section, etc</p></td>
-<td class="tableblock halign-left valign-top"><div><div class="listingblock">
+<td class="tableblock halign-left valign-top"><div><div id="toc" class="toc">
+<div id="toctitle">Contents</div>
+
+</div>
+<div class="listingblock">
 <div class="content">
 <pre>= Book (or chapter if the chapter can be built alone, see the leveloffset 
info below)
 
@@ -31066,7 +31404,11 @@ ____</pre>
 <tr>
 <td class="tableblock halign-left valign-top"><p class="tableblock">Include 
one file from another</p></td>
 <td class="tableblock halign-left valign-top"><p class="tableblock">Content is 
included as though it were inline</p></td>
-<td class="tableblock halign-left valign-top"><div><div class="listingblock">
+<td class="tableblock halign-left valign-top"><div><div id="toc" class="toc">
+<div id="toctitle">Contents</div>
+
+</div>
+<div class="listingblock">
 <div class="content">
 <pre>include::[/path/to/file.adoc]</pre>
 </div>
@@ -31078,21 +31420,33 @@ ____</pre>
 <tr>
 <td class="tableblock halign-left valign-top"><p class="tableblock">A 
table</p></td>
 <td class="tableblock halign-left valign-top"><p class="tableblock">a 
table</p></td>
-<td class="tableblock halign-left valign-top"><div><div class="paragraph">
+<td class="tableblock halign-left valign-top"><div><div id="toc" class="toc">
+<div id="toctitle">Contents</div>
+
+</div>
+<div class="paragraph">
 <p>See <a href="http://asciidoctor.org/docs/user-manual/#tables"; 
class="bare">http://asciidoctor.org/docs/user-manual/#tables</a>. Generally 
rows are separated by newlines and columns by pipes</p>
 </div></div></td>
 </tr>
 <tr>
 <td class="tableblock halign-left valign-top"><p class="tableblock">Comment 
out a single line</p></td>
 <td class="tableblock halign-left valign-top"><p class="tableblock">A  line is 
skipped during rendering</p></td>
-<td class="tableblock halign-left valign-top"><div><div class="paragraph">
+<td class="tableblock halign-left valign-top"><div><div id="toc" class="toc">
+<div id="toctitle">Contents</div>
+
+</div>
+<div class="paragraph">
 <p><code>// This line won&#8217;t show up</code></p>
 </div></div></td>
 </tr>
 <tr>
 <td class="tableblock halign-left valign-top"><p class="tableblock">Comment 
out a block</p></td>
 <td class="tableblock halign-left valign-top"><p class="tableblock">A section 
of the file is skipped during rendering</p></td>
-<td class="tableblock halign-left valign-top"><div><div class="listingblock">
+<td class="tableblock halign-left valign-top"><div><div id="toc" class="toc">
+<div id="toctitle">Contents</div>
+
+</div>
+<div class="listingblock">
 <div class="content">
 <pre>////
 Nothing between the slashes will show up.
@@ -31103,7 +31457,11 @@ Nothing between the slashes will show up.
 <tr>
 <td class="tableblock halign-left valign-top"><p class="tableblock">Highlight 
text for review</p></td>
 <td class="tableblock halign-left valign-top"><p class="tableblock">text shows 
up with yellow background</p></td>
-<td class="tableblock halign-left valign-top"><div><div class="listingblock">
+<td class="tableblock halign-left valign-top"><div><div id="toc" class="toc">
+<div id="toctitle">Contents</div>
+
+</div>
+<div class="listingblock">
 <div class="content">
 <pre>Test between #hash marks# is highlighted yellow.</pre>
 </div>
@@ -32731,7 +33089,7 @@ Options:
 </div>
 </div>
 <div class="sect1">
-<h2 id="data.block.encoding.enable"><a class="anchor" 
href="#data.block.encoding.enable"></a>160. Enable Data Block Encoding</h2>
+<h2 id="data.block.encoding.enable"><a class="anchor" 
href="#data.block.encoding.enable"></a>161. Enable Data Block Encoding</h2>
 <div class="sectionbody">
 <div class="paragraph">
 <p>Codecs are built into HBase so no extra configuration is needed.
@@ -33649,7 +34007,7 @@ The <code>LocalFileSpanReceiver</code> looks in 
<em>hbase-site.xml</em>      for
 </div>
 </div>
 <div class="sect1">
-<h2 id="tracing.client.modifications"><a class="anchor" 
href="#tracing.client.modifications"></a>161. Client Modifications</h2>
+<h2 id="tracing.client.modifications"><a class="anchor" 
href="#tracing.client.modifications"></a>162. Client Modifications</h2>
 <div class="sectionbody">
 <div class="paragraph">
 <p>In order to turn on tracing in your client code, you must initialize the 
module sending spans to receiver once per client process.</p>
@@ -33707,7 +34065,7 @@ See the HTrace <em>README</em> for more information on 
Samplers.</p>
 </div>
 </div>
 <div class="sect1">
-<h2 id="tracing.client.shell"><a class="anchor" 
href="#tracing.client.shell"></a>162. Tracing from HBase Shell</h2>
+<h2 id="tracing.client.shell"><a class="anchor" 
href="#tracing.client.shell"></a>163. Tracing from HBase Shell</h2>
 <div class="sectionbody">
 <div class="paragraph">
 <p>You can use <code>trace</code> command for tracing requests from HBase 
Shell. <code>trace 'start'</code> command turns on tracing and <code>trace 
'stop'</code> command turns off tracing.</p>
@@ -34017,7 +34375,7 @@ The server will return cellblocks compressed using this 
same compressor as long
 <div id="footer">
 <div id="footer-text">
 Version 2.0.0-SNAPSHOT<br>
-Last updated 2016-09-29 14:44:28 +00:00
+Last updated 2016-10-06 14:31:45 UTC
 </div>
 </div>
 </body>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/c7e84622/bulk-loads.html
----------------------------------------------------------------------
diff --git a/bulk-loads.html b/bulk-loads.html
index ea211c3..a41fa28 100644
--- a/bulk-loads.html
+++ b/bulk-loads.html
@@ -7,7 +7,7 @@
   <head>
     <meta charset="UTF-8" />
     <meta name="viewport" content="width=device-width, initial-scale=1.0" />
-    <meta name="Date-Revision-yyyymmdd" content="20160929" />
+    <meta name="Date-Revision-yyyymmdd" content="20161009" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase &#x2013;  
       Bulk Loads in Apache HBase (TM)
@@ -305,7 +305,7 @@ under the License. -->
                         <a href="http://www.apache.org/";>The Apache Software 
Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 
2016-09-29</li>
+                  <li id="publishDate" class="pull-right">Last Published: 
2016-10-09</li>
             </p>
                 </div>
 

Reply via email to