http://git-wip-us.apache.org/repos/asf/hbase-site/blob/1342ac30/apache_hbase_reference_guide.pdfmarks
----------------------------------------------------------------------
diff --git a/apache_hbase_reference_guide.pdfmarks 
b/apache_hbase_reference_guide.pdfmarks
index 3464d39..1b5a63e 100644
--- a/apache_hbase_reference_guide.pdfmarks
+++ b/apache_hbase_reference_guide.pdfmarks
@@ -2,8 +2,8 @@
   /Author (Apache HBase Team)
   /Subject ()
   /Keywords ()
-  /ModDate (D:20170607144925)
-  /CreationDate (D:20170607144925)
+  /ModDate (D:20170608144928)
+  /CreationDate (D:20170608144928)
   /Creator (Asciidoctor PDF 1.5.0.alpha.6, based on Prawn 1.2.1)
   /Producer ()
   /DOCINFO pdfmark

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/1342ac30/apidocs/org/apache/hadoop/hbase/mapreduce/TableMapReduceUtil.html
----------------------------------------------------------------------
diff --git a/apidocs/org/apache/hadoop/hbase/mapreduce/TableMapReduceUtil.html 
b/apidocs/org/apache/hadoop/hbase/mapreduce/TableMapReduceUtil.html
index 097c420..74bf5be 100644
--- a/apidocs/org/apache/hadoop/hbase/mapreduce/TableMapReduceUtil.html
+++ b/apidocs/org/apache/hadoop/hbase/mapreduce/TableMapReduceUtil.html
@@ -1223,7 +1223,7 @@ public static&nbsp;void&nbsp;<a 
href="../../../../../src-html/org/apache/hadoop/
 <ul class="blockList">
 <li class="blockList">
 <h4>buildDependencyClasspath</h4>
-<pre>public static&nbsp;<a 
href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true";
 title="class or interface in java.lang">String</a>&nbsp;<a 
href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/TableMapReduceUtil.html#line.805">buildDependencyClasspath</a>(org.apache.hadoop.conf.Configuration&nbsp;conf)</pre>
+<pre>public static&nbsp;<a 
href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true";
 title="class or interface in java.lang">String</a>&nbsp;<a 
href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/TableMapReduceUtil.html#line.806">buildDependencyClasspath</a>(org.apache.hadoop.conf.Configuration&nbsp;conf)</pre>
 <div class="block">Returns a classpath string built from the content of the 
"tmpjars" value in <code>conf</code>.
  Also exposed to shell scripts via `bin/hbase mapredcp`.</div>
 </li>
@@ -1234,7 +1234,7 @@ public static&nbsp;void&nbsp;<a 
href="../../../../../src-html/org/apache/hadoop/
 <ul class="blockList">
 <li class="blockList">
 <h4>addDependencyJars</h4>
-<pre>public static&nbsp;void&nbsp;<a 
href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/TableMapReduceUtil.html#line.829">addDependencyJars</a>(org.apache.hadoop.mapreduce.Job&nbsp;job)
+<pre>public static&nbsp;void&nbsp;<a 
href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/TableMapReduceUtil.html#line.830">addDependencyJars</a>(org.apache.hadoop.mapreduce.Job&nbsp;job)
                               throws <a 
href="http://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true";
 title="class or interface in java.io">IOException</a></pre>
 <div class="block">Add the HBase dependency jars as well as jars for any of 
the configured
  job classes to the job configuration, so that JobClient will ship them
@@ -1252,7 +1252,7 @@ public static&nbsp;void&nbsp;<a 
href="../../../../../src-html/org/apache/hadoop/
 <li class="blockList">
 <h4>addDependencyJars</h4>
 <pre><a 
href="http://docs.oracle.com/javase/8/docs/api/java/lang/Deprecated.html?is-external=true";
 title="class or interface in java.lang">@Deprecated</a>
-public static&nbsp;void&nbsp;<a 
href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/TableMapReduceUtil.html#line.855">addDependencyJars</a>(org.apache.hadoop.conf.Configuration&nbsp;conf,
+public static&nbsp;void&nbsp;<a 
href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/TableMapReduceUtil.html#line.856">addDependencyJars</a>(org.apache.hadoop.conf.Configuration&nbsp;conf,
                                                  <a 
href="http://docs.oracle.com/javase/8/docs/api/java/lang/Class.html?is-external=true";
 title="class or interface in java.lang">Class</a>&lt;?&gt;...&nbsp;classes)
                                           throws <a 
href="http://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true";
 title="class or interface in java.io">IOException</a></pre>
 <div class="block"><span class="deprecatedLabel">Deprecated.</span>&nbsp;<span 
class="deprecationComment">rely on <a 
href="../../../../../org/apache/hadoop/hbase/mapreduce/TableMapReduceUtil.html#addDependencyJars-org.apache.hadoop.mapreduce.Job-"><code>addDependencyJars(Job)</code></a>
 instead.</span></div>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/1342ac30/apidocs/src-html/org/apache/hadoop/hbase/mapreduce/TableMapReduceUtil.html
----------------------------------------------------------------------
diff --git 
a/apidocs/src-html/org/apache/hadoop/hbase/mapreduce/TableMapReduceUtil.html 
b/apidocs/src-html/org/apache/hadoop/hbase/mapreduce/TableMapReduceUtil.html
index bd316ac..49f1e8d 100644
--- a/apidocs/src-html/org/apache/hadoop/hbase/mapreduce/TableMapReduceUtil.html
+++ b/apidocs/src-html/org/apache/hadoop/hbase/mapreduce/TableMapReduceUtil.html
@@ -793,245 +793,246 @@
 <span class="sourceLineNo">785</span>      
org.apache.hadoop.hbase.shaded.protobuf.generated.ClientProtos.class, // 
hbase-protocol-shaded<a name="line.785"></a>
 <span class="sourceLineNo">786</span>      
org.apache.hadoop.hbase.client.Put.class,                      // 
hbase-client<a name="line.786"></a>
 <span class="sourceLineNo">787</span>      
org.apache.hadoop.hbase.CompatibilityFactory.class,            // 
hbase-hadoop-compat<a name="line.787"></a>
-<span class="sourceLineNo">788</span>      
org.apache.hadoop.hbase.mapreduce.TableMapper.class,           // 
hbase-server<a name="line.788"></a>
-<span class="sourceLineNo">789</span>      
org.apache.hadoop.hbase.metrics.impl.FastLongHistogram.class,  // 
hbase-metrics<a name="line.789"></a>
-<span class="sourceLineNo">790</span>      
org.apache.hadoop.hbase.metrics.Snapshot.class,                // 
hbase-metrics-api<a name="line.790"></a>
-<span class="sourceLineNo">791</span>      prefixTreeCodecClass, //  
hbase-prefix-tree (if null will be skipped)<a name="line.791"></a>
-<span class="sourceLineNo">792</span>      // pull necessary dependencies<a 
name="line.792"></a>
-<span class="sourceLineNo">793</span>      
org.apache.zookeeper.ZooKeeper.class,<a name="line.793"></a>
-<span class="sourceLineNo">794</span>      io.netty.channel.Channel.class,<a 
name="line.794"></a>
-<span class="sourceLineNo">795</span>      
com.google.protobuf.Message.class,<a name="line.795"></a>
-<span class="sourceLineNo">796</span>      
com.google.common.collect.Lists.class,<a name="line.796"></a>
-<span class="sourceLineNo">797</span>      org.apache.htrace.Trace.class,<a 
name="line.797"></a>
-<span class="sourceLineNo">798</span>      
com.codahale.metrics.MetricRegistry.class);<a name="line.798"></a>
-<span class="sourceLineNo">799</span>  }<a name="line.799"></a>
-<span class="sourceLineNo">800</span><a name="line.800"></a>
-<span class="sourceLineNo">801</span>  /**<a name="line.801"></a>
-<span class="sourceLineNo">802</span>   * Returns a classpath string built 
from the content of the "tmpjars" value in {@code conf}.<a name="line.802"></a>
-<span class="sourceLineNo">803</span>   * Also exposed to shell scripts via 
`bin/hbase mapredcp`.<a name="line.803"></a>
-<span class="sourceLineNo">804</span>   */<a name="line.804"></a>
-<span class="sourceLineNo">805</span>  public static String 
buildDependencyClasspath(Configuration conf) {<a name="line.805"></a>
-<span class="sourceLineNo">806</span>    if (conf == null) {<a 
name="line.806"></a>
-<span class="sourceLineNo">807</span>      throw new 
IllegalArgumentException("Must provide a configuration object.");<a 
name="line.807"></a>
-<span class="sourceLineNo">808</span>    }<a name="line.808"></a>
-<span class="sourceLineNo">809</span>    Set&lt;String&gt; paths = new 
HashSet&lt;&gt;(conf.getStringCollection("tmpjars"));<a name="line.809"></a>
-<span class="sourceLineNo">810</span>    if (paths.isEmpty()) {<a 
name="line.810"></a>
-<span class="sourceLineNo">811</span>      throw new 
IllegalArgumentException("Configuration contains no tmpjars.");<a 
name="line.811"></a>
-<span class="sourceLineNo">812</span>    }<a name="line.812"></a>
-<span class="sourceLineNo">813</span>    StringBuilder sb = new 
StringBuilder();<a name="line.813"></a>
-<span class="sourceLineNo">814</span>    for (String s : paths) {<a 
name="line.814"></a>
-<span class="sourceLineNo">815</span>      // entries can take the form 
'file:/path/to/file.jar'.<a name="line.815"></a>
-<span class="sourceLineNo">816</span>      int idx = s.indexOf(":");<a 
name="line.816"></a>
-<span class="sourceLineNo">817</span>      if (idx != -1) s = s.substring(idx 
+ 1);<a name="line.817"></a>
-<span class="sourceLineNo">818</span>      if (sb.length() &gt; 0) 
sb.append(File.pathSeparator);<a name="line.818"></a>
-<span class="sourceLineNo">819</span>      sb.append(s);<a name="line.819"></a>
-<span class="sourceLineNo">820</span>    }<a name="line.820"></a>
-<span class="sourceLineNo">821</span>    return sb.toString();<a 
name="line.821"></a>
-<span class="sourceLineNo">822</span>  }<a name="line.822"></a>
-<span class="sourceLineNo">823</span><a name="line.823"></a>
-<span class="sourceLineNo">824</span>  /**<a name="line.824"></a>
-<span class="sourceLineNo">825</span>   * Add the HBase dependency jars as 
well as jars for any of the configured<a name="line.825"></a>
-<span class="sourceLineNo">826</span>   * job classes to the job 
configuration, so that JobClient will ship them<a name="line.826"></a>
-<span class="sourceLineNo">827</span>   * to the cluster and add them to the 
DistributedCache.<a name="line.827"></a>
-<span class="sourceLineNo">828</span>   */<a name="line.828"></a>
-<span class="sourceLineNo">829</span>  public static void 
addDependencyJars(Job job) throws IOException {<a name="line.829"></a>
-<span class="sourceLineNo">830</span>    
addHBaseDependencyJars(job.getConfiguration());<a name="line.830"></a>
-<span class="sourceLineNo">831</span>    try {<a name="line.831"></a>
-<span class="sourceLineNo">832</span>      
addDependencyJarsForClasses(job.getConfiguration(),<a name="line.832"></a>
-<span class="sourceLineNo">833</span>          // when making changes here, 
consider also mapred.TableMapReduceUtil<a name="line.833"></a>
-<span class="sourceLineNo">834</span>          // pull job classes<a 
name="line.834"></a>
-<span class="sourceLineNo">835</span>          job.getMapOutputKeyClass(),<a 
name="line.835"></a>
-<span class="sourceLineNo">836</span>          job.getMapOutputValueClass(),<a 
name="line.836"></a>
-<span class="sourceLineNo">837</span>          job.getInputFormatClass(),<a 
name="line.837"></a>
-<span class="sourceLineNo">838</span>          job.getOutputKeyClass(),<a 
name="line.838"></a>
-<span class="sourceLineNo">839</span>          job.getOutputValueClass(),<a 
name="line.839"></a>
-<span class="sourceLineNo">840</span>          job.getOutputFormatClass(),<a 
name="line.840"></a>
-<span class="sourceLineNo">841</span>          job.getPartitionerClass(),<a 
name="line.841"></a>
-<span class="sourceLineNo">842</span>          job.getCombinerClass());<a 
name="line.842"></a>
-<span class="sourceLineNo">843</span>    } catch (ClassNotFoundException e) 
{<a name="line.843"></a>
-<span class="sourceLineNo">844</span>      throw new IOException(e);<a 
name="line.844"></a>
-<span class="sourceLineNo">845</span>    }<a name="line.845"></a>
-<span class="sourceLineNo">846</span>  }<a name="line.846"></a>
-<span class="sourceLineNo">847</span><a name="line.847"></a>
-<span class="sourceLineNo">848</span>  /**<a name="line.848"></a>
-<span class="sourceLineNo">849</span>   * Add the jars containing the given 
classes to the job's configuration<a name="line.849"></a>
-<span class="sourceLineNo">850</span>   * such that JobClient will ship them 
to the cluster and add them to<a name="line.850"></a>
-<span class="sourceLineNo">851</span>   * the DistributedCache.<a 
name="line.851"></a>
-<span class="sourceLineNo">852</span>   * @deprecated rely on {@link 
#addDependencyJars(Job)} instead.<a name="line.852"></a>
-<span class="sourceLineNo">853</span>   */<a name="line.853"></a>
-<span class="sourceLineNo">854</span>  @Deprecated<a name="line.854"></a>
-<span class="sourceLineNo">855</span>  public static void 
addDependencyJars(Configuration conf,<a name="line.855"></a>
-<span class="sourceLineNo">856</span>      Class&lt;?&gt;... classes) throws 
IOException {<a name="line.856"></a>
-<span class="sourceLineNo">857</span>    LOG.warn("The 
addDependencyJars(Configuration, Class&lt;?&gt;...) method has been deprecated 
since it"<a name="line.857"></a>
-<span class="sourceLineNo">858</span>             + " is easy to use 
incorrectly. Most users should rely on addDependencyJars(Job) " +<a 
name="line.858"></a>
-<span class="sourceLineNo">859</span>             "instead. See HBASE-8386 for 
more details.");<a name="line.859"></a>
-<span class="sourceLineNo">860</span>    addDependencyJarsForClasses(conf, 
classes);<a name="line.860"></a>
-<span class="sourceLineNo">861</span>  }<a name="line.861"></a>
-<span class="sourceLineNo">862</span><a name="line.862"></a>
-<span class="sourceLineNo">863</span>  /**<a name="line.863"></a>
-<span class="sourceLineNo">864</span>   * Add the jars containing the given 
classes to the job's configuration<a name="line.864"></a>
-<span class="sourceLineNo">865</span>   * such that JobClient will ship them 
to the cluster and add them to<a name="line.865"></a>
-<span class="sourceLineNo">866</span>   * the DistributedCache.<a 
name="line.866"></a>
-<span class="sourceLineNo">867</span>   *<a name="line.867"></a>
-<span class="sourceLineNo">868</span>   * N.B. that this method at most adds 
one jar per class given. If there is more than one<a name="line.868"></a>
-<span class="sourceLineNo">869</span>   * jar available containing a class 
with the same name as a given class, we don't define<a name="line.869"></a>
-<span class="sourceLineNo">870</span>   * which of those jars might be 
chosen.<a name="line.870"></a>
-<span class="sourceLineNo">871</span>   *<a name="line.871"></a>
-<span class="sourceLineNo">872</span>   * @param conf The Hadoop Configuration 
to modify<a name="line.872"></a>
-<span class="sourceLineNo">873</span>   * @param classes will add just those 
dependencies needed to find the given classes<a name="line.873"></a>
-<span class="sourceLineNo">874</span>   * @throws IOException if an underlying 
library call fails.<a name="line.874"></a>
-<span class="sourceLineNo">875</span>   */<a name="line.875"></a>
-<span class="sourceLineNo">876</span>  @InterfaceAudience.Private<a 
name="line.876"></a>
-<span class="sourceLineNo">877</span>  public static void 
addDependencyJarsForClasses(Configuration conf,<a name="line.877"></a>
-<span class="sourceLineNo">878</span>      Class&lt;?&gt;... classes) throws 
IOException {<a name="line.878"></a>
-<span class="sourceLineNo">879</span><a name="line.879"></a>
-<span class="sourceLineNo">880</span>    FileSystem localFs = 
FileSystem.getLocal(conf);<a name="line.880"></a>
-<span class="sourceLineNo">881</span>    Set&lt;String&gt; jars = new 
HashSet&lt;&gt;();<a name="line.881"></a>
-<span class="sourceLineNo">882</span>    // Add jars that are already in the 
tmpjars variable<a name="line.882"></a>
-<span class="sourceLineNo">883</span>    
jars.addAll(conf.getStringCollection("tmpjars"));<a name="line.883"></a>
-<span class="sourceLineNo">884</span><a name="line.884"></a>
-<span class="sourceLineNo">885</span>    // add jars as we find them to a map 
of contents jar name so that we can avoid<a name="line.885"></a>
-<span class="sourceLineNo">886</span>    // creating new jars for classes that 
have already been packaged.<a name="line.886"></a>
-<span class="sourceLineNo">887</span>    Map&lt;String, String&gt; 
packagedClasses = new HashMap&lt;&gt;();<a name="line.887"></a>
-<span class="sourceLineNo">888</span><a name="line.888"></a>
-<span class="sourceLineNo">889</span>    // Add jars containing the specified 
classes<a name="line.889"></a>
-<span class="sourceLineNo">890</span>    for (Class&lt;?&gt; clazz : classes) 
{<a name="line.890"></a>
-<span class="sourceLineNo">891</span>      if (clazz == null) continue;<a 
name="line.891"></a>
-<span class="sourceLineNo">892</span><a name="line.892"></a>
-<span class="sourceLineNo">893</span>      Path path = findOrCreateJar(clazz, 
localFs, packagedClasses);<a name="line.893"></a>
-<span class="sourceLineNo">894</span>      if (path == null) {<a 
name="line.894"></a>
-<span class="sourceLineNo">895</span>        LOG.warn("Could not find jar for 
class " + clazz +<a name="line.895"></a>
-<span class="sourceLineNo">896</span>                 " in order to ship it to 
the cluster.");<a name="line.896"></a>
-<span class="sourceLineNo">897</span>        continue;<a name="line.897"></a>
-<span class="sourceLineNo">898</span>      }<a name="line.898"></a>
-<span class="sourceLineNo">899</span>      if (!localFs.exists(path)) {<a 
name="line.899"></a>
-<span class="sourceLineNo">900</span>        LOG.warn("Could not validate jar 
file " + path + " for class "<a name="line.900"></a>
-<span class="sourceLineNo">901</span>                 + clazz);<a 
name="line.901"></a>
-<span class="sourceLineNo">902</span>        continue;<a name="line.902"></a>
-<span class="sourceLineNo">903</span>      }<a name="line.903"></a>
-<span class="sourceLineNo">904</span>      jars.add(path.toString());<a 
name="line.904"></a>
-<span class="sourceLineNo">905</span>    }<a name="line.905"></a>
-<span class="sourceLineNo">906</span>    if (jars.isEmpty()) return;<a 
name="line.906"></a>
-<span class="sourceLineNo">907</span><a name="line.907"></a>
-<span class="sourceLineNo">908</span>    conf.set("tmpjars", 
StringUtils.arrayToString(jars.toArray(new String[jars.size()])));<a 
name="line.908"></a>
-<span class="sourceLineNo">909</span>  }<a name="line.909"></a>
-<span class="sourceLineNo">910</span><a name="line.910"></a>
-<span class="sourceLineNo">911</span>  /**<a name="line.911"></a>
-<span class="sourceLineNo">912</span>   * Finds the Jar for a class or creates 
it if it doesn't exist. If the class is in<a name="line.912"></a>
-<span class="sourceLineNo">913</span>   * a directory in the classpath, it 
creates a Jar on the fly with the<a name="line.913"></a>
-<span class="sourceLineNo">914</span>   * contents of the directory and 
returns the path to that Jar. If a Jar is<a name="line.914"></a>
-<span class="sourceLineNo">915</span>   * created, it is created in the system 
temporary directory. Otherwise,<a name="line.915"></a>
-<span class="sourceLineNo">916</span>   * returns an existing jar that 
contains a class of the same name. Maintains<a name="line.916"></a>
-<span class="sourceLineNo">917</span>   * a mapping from jar contents to the 
tmp jar created.<a name="line.917"></a>
-<span class="sourceLineNo">918</span>   * @param my_class the class to find.<a 
name="line.918"></a>
-<span class="sourceLineNo">919</span>   * @param fs the FileSystem with which 
to qualify the returned path.<a name="line.919"></a>
-<span class="sourceLineNo">920</span>   * @param packagedClasses a map of 
class name to path.<a name="line.920"></a>
-<span class="sourceLineNo">921</span>   * @return a jar file that contains the 
class.<a name="line.921"></a>
-<span class="sourceLineNo">922</span>   * @throws IOException<a 
name="line.922"></a>
-<span class="sourceLineNo">923</span>   */<a name="line.923"></a>
-<span class="sourceLineNo">924</span>  private static Path 
findOrCreateJar(Class&lt;?&gt; my_class, FileSystem fs,<a name="line.924"></a>
-<span class="sourceLineNo">925</span>      Map&lt;String, String&gt; 
packagedClasses)<a name="line.925"></a>
-<span class="sourceLineNo">926</span>  throws IOException {<a 
name="line.926"></a>
-<span class="sourceLineNo">927</span>    // attempt to locate an existing jar 
for the class.<a name="line.927"></a>
-<span class="sourceLineNo">928</span>    String jar = 
findContainingJar(my_class, packagedClasses);<a name="line.928"></a>
-<span class="sourceLineNo">929</span>    if (null == jar || jar.isEmpty()) {<a 
name="line.929"></a>
-<span class="sourceLineNo">930</span>      jar = getJar(my_class);<a 
name="line.930"></a>
-<span class="sourceLineNo">931</span>      updateMap(jar, packagedClasses);<a 
name="line.931"></a>
-<span class="sourceLineNo">932</span>    }<a name="line.932"></a>
-<span class="sourceLineNo">933</span><a name="line.933"></a>
-<span class="sourceLineNo">934</span>    if (null == jar || jar.isEmpty()) {<a 
name="line.934"></a>
-<span class="sourceLineNo">935</span>      return null;<a name="line.935"></a>
-<span class="sourceLineNo">936</span>    }<a name="line.936"></a>
-<span class="sourceLineNo">937</span><a name="line.937"></a>
-<span class="sourceLineNo">938</span>    LOG.debug(String.format("For class 
%s, using jar %s", my_class.getName(), jar));<a name="line.938"></a>
-<span class="sourceLineNo">939</span>    return new 
Path(jar).makeQualified(fs);<a name="line.939"></a>
-<span class="sourceLineNo">940</span>  }<a name="line.940"></a>
-<span class="sourceLineNo">941</span><a name="line.941"></a>
-<span class="sourceLineNo">942</span>  /**<a name="line.942"></a>
-<span class="sourceLineNo">943</span>   * Add entries to 
&lt;code&gt;packagedClasses&lt;/code&gt; corresponding to class files<a 
name="line.943"></a>
-<span class="sourceLineNo">944</span>   * contained in 
&lt;code&gt;jar&lt;/code&gt;.<a name="line.944"></a>
-<span class="sourceLineNo">945</span>   * @param jar The jar who's content to 
list.<a name="line.945"></a>
-<span class="sourceLineNo">946</span>   * @param packagedClasses map[class 
-&gt; jar]<a name="line.946"></a>
-<span class="sourceLineNo">947</span>   */<a name="line.947"></a>
-<span class="sourceLineNo">948</span>  private static void updateMap(String 
jar, Map&lt;String, String&gt; packagedClasses) throws IOException {<a 
name="line.948"></a>
-<span class="sourceLineNo">949</span>    if (null == jar || jar.isEmpty()) {<a 
name="line.949"></a>
-<span class="sourceLineNo">950</span>      return;<a name="line.950"></a>
-<span class="sourceLineNo">951</span>    }<a name="line.951"></a>
-<span class="sourceLineNo">952</span>    ZipFile zip = null;<a 
name="line.952"></a>
-<span class="sourceLineNo">953</span>    try {<a name="line.953"></a>
-<span class="sourceLineNo">954</span>      zip = new ZipFile(jar);<a 
name="line.954"></a>
-<span class="sourceLineNo">955</span>      for (Enumeration&lt;? extends 
ZipEntry&gt; iter = zip.entries(); iter.hasMoreElements();) {<a 
name="line.955"></a>
-<span class="sourceLineNo">956</span>        ZipEntry entry = 
iter.nextElement();<a name="line.956"></a>
-<span class="sourceLineNo">957</span>        if 
(entry.getName().endsWith("class")) {<a name="line.957"></a>
-<span class="sourceLineNo">958</span>          
packagedClasses.put(entry.getName(), jar);<a name="line.958"></a>
-<span class="sourceLineNo">959</span>        }<a name="line.959"></a>
-<span class="sourceLineNo">960</span>      }<a name="line.960"></a>
-<span class="sourceLineNo">961</span>    } finally {<a name="line.961"></a>
-<span class="sourceLineNo">962</span>      if (null != zip) zip.close();<a 
name="line.962"></a>
-<span class="sourceLineNo">963</span>    }<a name="line.963"></a>
-<span class="sourceLineNo">964</span>  }<a name="line.964"></a>
-<span class="sourceLineNo">965</span><a name="line.965"></a>
-<span class="sourceLineNo">966</span>  /**<a name="line.966"></a>
-<span class="sourceLineNo">967</span>   * Find a jar that contains a class of 
the same name, if any. It will return<a name="line.967"></a>
-<span class="sourceLineNo">968</span>   * a jar file, even if that is not the 
first thing on the class path that<a name="line.968"></a>
-<span class="sourceLineNo">969</span>   * has a class with the same name. 
Looks first on the classpath and then in<a name="line.969"></a>
-<span class="sourceLineNo">970</span>   * the 
&lt;code&gt;packagedClasses&lt;/code&gt; map.<a name="line.970"></a>
-<span class="sourceLineNo">971</span>   * @param my_class the class to find.<a 
name="line.971"></a>
-<span class="sourceLineNo">972</span>   * @return a jar file that contains the 
class, or null.<a name="line.972"></a>
-<span class="sourceLineNo">973</span>   * @throws IOException<a 
name="line.973"></a>
-<span class="sourceLineNo">974</span>   */<a name="line.974"></a>
-<span class="sourceLineNo">975</span>  private static String 
findContainingJar(Class&lt;?&gt; my_class, Map&lt;String, String&gt; 
packagedClasses)<a name="line.975"></a>
-<span class="sourceLineNo">976</span>      throws IOException {<a 
name="line.976"></a>
-<span class="sourceLineNo">977</span>    ClassLoader loader = 
my_class.getClassLoader();<a name="line.977"></a>
-<span class="sourceLineNo">978</span><a name="line.978"></a>
-<span class="sourceLineNo">979</span>    String class_file = 
my_class.getName().replaceAll("\\.", "/") + ".class";<a name="line.979"></a>
-<span class="sourceLineNo">980</span><a name="line.980"></a>
-<span class="sourceLineNo">981</span>    if (loader != null) {<a 
name="line.981"></a>
-<span class="sourceLineNo">982</span>      // first search the classpath<a 
name="line.982"></a>
-<span class="sourceLineNo">983</span>      for (Enumeration&lt;URL&gt; itr = 
loader.getResources(class_file); itr.hasMoreElements();) {<a 
name="line.983"></a>
-<span class="sourceLineNo">984</span>        URL url = itr.nextElement();<a 
name="line.984"></a>
-<span class="sourceLineNo">985</span>        if 
("jar".equals(url.getProtocol())) {<a name="line.985"></a>
-<span class="sourceLineNo">986</span>          String toReturn = 
url.getPath();<a name="line.986"></a>
-<span class="sourceLineNo">987</span>          if 
(toReturn.startsWith("file:")) {<a name="line.987"></a>
-<span class="sourceLineNo">988</span>            toReturn = 
toReturn.substring("file:".length());<a name="line.988"></a>
-<span class="sourceLineNo">989</span>          }<a name="line.989"></a>
-<span class="sourceLineNo">990</span>          // URLDecoder is a misnamed 
class, since it actually decodes<a name="line.990"></a>
-<span class="sourceLineNo">991</span>          // x-www-form-urlencoded MIME 
type rather than actual<a name="line.991"></a>
-<span class="sourceLineNo">992</span>          // URL encoding (which the file 
path has). Therefore it would<a name="line.992"></a>
-<span class="sourceLineNo">993</span>          // decode +s to ' 's which is 
incorrect (spaces are actually<a name="line.993"></a>
-<span class="sourceLineNo">994</span>          // either unencoded or encoded 
as "%20"). Replace +s first, so<a name="line.994"></a>
-<span class="sourceLineNo">995</span>          // that they are kept sacred 
during the decoding process.<a name="line.995"></a>
-<span class="sourceLineNo">996</span>          toReturn = 
toReturn.replaceAll("\\+", "%2B");<a name="line.996"></a>
-<span class="sourceLineNo">997</span>          toReturn = 
URLDecoder.decode(toReturn, "UTF-8");<a name="line.997"></a>
-<span class="sourceLineNo">998</span>          return 
toReturn.replaceAll("!.*$", "");<a name="line.998"></a>
-<span class="sourceLineNo">999</span>        }<a name="line.999"></a>
-<span class="sourceLineNo">1000</span>      }<a name="line.1000"></a>
-<span class="sourceLineNo">1001</span>    }<a name="line.1001"></a>
-<span class="sourceLineNo">1002</span><a name="line.1002"></a>
-<span class="sourceLineNo">1003</span>    // now look in any jars we've 
packaged using JarFinder. Returns null when<a name="line.1003"></a>
-<span class="sourceLineNo">1004</span>    // no jar is found.<a 
name="line.1004"></a>
-<span class="sourceLineNo">1005</span>    return 
packagedClasses.get(class_file);<a name="line.1005"></a>
-<span class="sourceLineNo">1006</span>  }<a name="line.1006"></a>
-<span class="sourceLineNo">1007</span><a name="line.1007"></a>
-<span class="sourceLineNo">1008</span>  /**<a name="line.1008"></a>
-<span class="sourceLineNo">1009</span>   * Invoke 'getJar' on a custom 
JarFinder implementation. Useful for some job<a name="line.1009"></a>
-<span class="sourceLineNo">1010</span>   * configuration contexts (HBASE-8140) 
and also for testing on MRv2.<a name="line.1010"></a>
-<span class="sourceLineNo">1011</span>   * check if we have HADOOP-9426.<a 
name="line.1011"></a>
-<span class="sourceLineNo">1012</span>   * @param my_class the class to 
find.<a name="line.1012"></a>
-<span class="sourceLineNo">1013</span>   * @return a jar file that contains 
the class, or null.<a name="line.1013"></a>
-<span class="sourceLineNo">1014</span>   */<a name="line.1014"></a>
-<span class="sourceLineNo">1015</span>  private static String 
getJar(Class&lt;?&gt; my_class) {<a name="line.1015"></a>
-<span class="sourceLineNo">1016</span>    String ret = null;<a 
name="line.1016"></a>
-<span class="sourceLineNo">1017</span>    try {<a name="line.1017"></a>
-<span class="sourceLineNo">1018</span>      ret = 
JarFinder.getJar(my_class);<a name="line.1018"></a>
-<span class="sourceLineNo">1019</span>    } catch (Exception e) {<a 
name="line.1019"></a>
-<span class="sourceLineNo">1020</span>      // toss all other exceptions, 
related to reflection failure<a name="line.1020"></a>
-<span class="sourceLineNo">1021</span>      throw new RuntimeException("getJar 
invocation failed.", e);<a name="line.1021"></a>
-<span class="sourceLineNo">1022</span>    }<a name="line.1022"></a>
-<span class="sourceLineNo">1023</span><a name="line.1023"></a>
-<span class="sourceLineNo">1024</span>    return ret;<a name="line.1024"></a>
-<span class="sourceLineNo">1025</span>  }<a name="line.1025"></a>
-<span class="sourceLineNo">1026</span>}<a name="line.1026"></a>
+<span class="sourceLineNo">788</span>      
org.apache.hadoop.hbase.mapreduce.JobUtil.class,               // 
hbase-hadoop2-compat<a name="line.788"></a>
+<span class="sourceLineNo">789</span>      
org.apache.hadoop.hbase.mapreduce.TableMapper.class,           // 
hbase-server<a name="line.789"></a>
+<span class="sourceLineNo">790</span>      
org.apache.hadoop.hbase.metrics.impl.FastLongHistogram.class,  // 
hbase-metrics<a name="line.790"></a>
+<span class="sourceLineNo">791</span>      
org.apache.hadoop.hbase.metrics.Snapshot.class,                // 
hbase-metrics-api<a name="line.791"></a>
+<span class="sourceLineNo">792</span>      prefixTreeCodecClass, //  
hbase-prefix-tree (if null will be skipped)<a name="line.792"></a>
+<span class="sourceLineNo">793</span>      // pull necessary dependencies<a 
name="line.793"></a>
+<span class="sourceLineNo">794</span>      
org.apache.zookeeper.ZooKeeper.class,<a name="line.794"></a>
+<span class="sourceLineNo">795</span>      io.netty.channel.Channel.class,<a 
name="line.795"></a>
+<span class="sourceLineNo">796</span>      
com.google.protobuf.Message.class,<a name="line.796"></a>
+<span class="sourceLineNo">797</span>      
com.google.common.collect.Lists.class,<a name="line.797"></a>
+<span class="sourceLineNo">798</span>      org.apache.htrace.Trace.class,<a 
name="line.798"></a>
+<span class="sourceLineNo">799</span>      
com.codahale.metrics.MetricRegistry.class);<a name="line.799"></a>
+<span class="sourceLineNo">800</span>  }<a name="line.800"></a>
+<span class="sourceLineNo">801</span><a name="line.801"></a>
+<span class="sourceLineNo">802</span>  /**<a name="line.802"></a>
+<span class="sourceLineNo">803</span>   * Returns a classpath string built 
from the content of the "tmpjars" value in {@code conf}.<a name="line.803"></a>
+<span class="sourceLineNo">804</span>   * Also exposed to shell scripts via 
`bin/hbase mapredcp`.<a name="line.804"></a>
+<span class="sourceLineNo">805</span>   */<a name="line.805"></a>
+<span class="sourceLineNo">806</span>  public static String 
buildDependencyClasspath(Configuration conf) {<a name="line.806"></a>
+<span class="sourceLineNo">807</span>    if (conf == null) {<a 
name="line.807"></a>
+<span class="sourceLineNo">808</span>      throw new 
IllegalArgumentException("Must provide a configuration object.");<a 
name="line.808"></a>
+<span class="sourceLineNo">809</span>    }<a name="line.809"></a>
+<span class="sourceLineNo">810</span>    Set&lt;String&gt; paths = new 
HashSet&lt;&gt;(conf.getStringCollection("tmpjars"));<a name="line.810"></a>
+<span class="sourceLineNo">811</span>    if (paths.isEmpty()) {<a 
name="line.811"></a>
+<span class="sourceLineNo">812</span>      throw new 
IllegalArgumentException("Configuration contains no tmpjars.");<a 
name="line.812"></a>
+<span class="sourceLineNo">813</span>    }<a name="line.813"></a>
+<span class="sourceLineNo">814</span>    StringBuilder sb = new 
StringBuilder();<a name="line.814"></a>
+<span class="sourceLineNo">815</span>    for (String s : paths) {<a 
name="line.815"></a>
+<span class="sourceLineNo">816</span>      // entries can take the form 
'file:/path/to/file.jar'.<a name="line.816"></a>
+<span class="sourceLineNo">817</span>      int idx = s.indexOf(":");<a 
name="line.817"></a>
+<span class="sourceLineNo">818</span>      if (idx != -1) s = s.substring(idx 
+ 1);<a name="line.818"></a>
+<span class="sourceLineNo">819</span>      if (sb.length() &gt; 0) 
sb.append(File.pathSeparator);<a name="line.819"></a>
+<span class="sourceLineNo">820</span>      sb.append(s);<a name="line.820"></a>
+<span class="sourceLineNo">821</span>    }<a name="line.821"></a>
+<span class="sourceLineNo">822</span>    return sb.toString();<a 
name="line.822"></a>
+<span class="sourceLineNo">823</span>  }<a name="line.823"></a>
+<span class="sourceLineNo">824</span><a name="line.824"></a>
+<span class="sourceLineNo">825</span>  /**<a name="line.825"></a>
+<span class="sourceLineNo">826</span>   * Add the HBase dependency jars as 
well as jars for any of the configured<a name="line.826"></a>
+<span class="sourceLineNo">827</span>   * job classes to the job 
configuration, so that JobClient will ship them<a name="line.827"></a>
+<span class="sourceLineNo">828</span>   * to the cluster and add them to the 
DistributedCache.<a name="line.828"></a>
+<span class="sourceLineNo">829</span>   */<a name="line.829"></a>
+<span class="sourceLineNo">830</span>  public static void 
addDependencyJars(Job job) throws IOException {<a name="line.830"></a>
+<span class="sourceLineNo">831</span>    
addHBaseDependencyJars(job.getConfiguration());<a name="line.831"></a>
+<span class="sourceLineNo">832</span>    try {<a name="line.832"></a>
+<span class="sourceLineNo">833</span>      
addDependencyJarsForClasses(job.getConfiguration(),<a name="line.833"></a>
+<span class="sourceLineNo">834</span>          // when making changes here, 
consider also mapred.TableMapReduceUtil<a name="line.834"></a>
+<span class="sourceLineNo">835</span>          // pull job classes<a 
name="line.835"></a>
+<span class="sourceLineNo">836</span>          job.getMapOutputKeyClass(),<a 
name="line.836"></a>
+<span class="sourceLineNo">837</span>          job.getMapOutputValueClass(),<a 
name="line.837"></a>
+<span class="sourceLineNo">838</span>          job.getInputFormatClass(),<a 
name="line.838"></a>
+<span class="sourceLineNo">839</span>          job.getOutputKeyClass(),<a 
name="line.839"></a>
+<span class="sourceLineNo">840</span>          job.getOutputValueClass(),<a 
name="line.840"></a>
+<span class="sourceLineNo">841</span>          job.getOutputFormatClass(),<a 
name="line.841"></a>
+<span class="sourceLineNo">842</span>          job.getPartitionerClass(),<a 
name="line.842"></a>
+<span class="sourceLineNo">843</span>          job.getCombinerClass());<a 
name="line.843"></a>
+<span class="sourceLineNo">844</span>    } catch (ClassNotFoundException e) 
{<a name="line.844"></a>
+<span class="sourceLineNo">845</span>      throw new IOException(e);<a 
name="line.845"></a>
+<span class="sourceLineNo">846</span>    }<a name="line.846"></a>
+<span class="sourceLineNo">847</span>  }<a name="line.847"></a>
+<span class="sourceLineNo">848</span><a name="line.848"></a>
+<span class="sourceLineNo">849</span>  /**<a name="line.849"></a>
+<span class="sourceLineNo">850</span>   * Add the jars containing the given 
classes to the job's configuration<a name="line.850"></a>
+<span class="sourceLineNo">851</span>   * such that JobClient will ship them 
to the cluster and add them to<a name="line.851"></a>
+<span class="sourceLineNo">852</span>   * the DistributedCache.<a 
name="line.852"></a>
+<span class="sourceLineNo">853</span>   * @deprecated rely on {@link 
#addDependencyJars(Job)} instead.<a name="line.853"></a>
+<span class="sourceLineNo">854</span>   */<a name="line.854"></a>
+<span class="sourceLineNo">855</span>  @Deprecated<a name="line.855"></a>
+<span class="sourceLineNo">856</span>  public static void 
addDependencyJars(Configuration conf,<a name="line.856"></a>
+<span class="sourceLineNo">857</span>      Class&lt;?&gt;... classes) throws 
IOException {<a name="line.857"></a>
+<span class="sourceLineNo">858</span>    LOG.warn("The 
addDependencyJars(Configuration, Class&lt;?&gt;...) method has been deprecated 
since it"<a name="line.858"></a>
+<span class="sourceLineNo">859</span>             + " is easy to use 
incorrectly. Most users should rely on addDependencyJars(Job) " +<a 
name="line.859"></a>
+<span class="sourceLineNo">860</span>             "instead. See HBASE-8386 for 
more details.");<a name="line.860"></a>
+<span class="sourceLineNo">861</span>    addDependencyJarsForClasses(conf, 
classes);<a name="line.861"></a>
+<span class="sourceLineNo">862</span>  }<a name="line.862"></a>
+<span class="sourceLineNo">863</span><a name="line.863"></a>
+<span class="sourceLineNo">864</span>  /**<a name="line.864"></a>
+<span class="sourceLineNo">865</span>   * Add the jars containing the given 
classes to the job's configuration<a name="line.865"></a>
+<span class="sourceLineNo">866</span>   * such that JobClient will ship them 
to the cluster and add them to<a name="line.866"></a>
+<span class="sourceLineNo">867</span>   * the DistributedCache.<a 
name="line.867"></a>
+<span class="sourceLineNo">868</span>   *<a name="line.868"></a>
+<span class="sourceLineNo">869</span>   * N.B. that this method at most adds 
one jar per class given. If there is more than one<a name="line.869"></a>
+<span class="sourceLineNo">870</span>   * jar available containing a class 
with the same name as a given class, we don't define<a name="line.870"></a>
+<span class="sourceLineNo">871</span>   * which of those jars might be 
chosen.<a name="line.871"></a>
+<span class="sourceLineNo">872</span>   *<a name="line.872"></a>
+<span class="sourceLineNo">873</span>   * @param conf The Hadoop Configuration 
to modify<a name="line.873"></a>
+<span class="sourceLineNo">874</span>   * @param classes will add just those 
dependencies needed to find the given classes<a name="line.874"></a>
+<span class="sourceLineNo">875</span>   * @throws IOException if an underlying 
library call fails.<a name="line.875"></a>
+<span class="sourceLineNo">876</span>   */<a name="line.876"></a>
+<span class="sourceLineNo">877</span>  @InterfaceAudience.Private<a 
name="line.877"></a>
+<span class="sourceLineNo">878</span>  public static void 
addDependencyJarsForClasses(Configuration conf,<a name="line.878"></a>
+<span class="sourceLineNo">879</span>      Class&lt;?&gt;... classes) throws 
IOException {<a name="line.879"></a>
+<span class="sourceLineNo">880</span><a name="line.880"></a>
+<span class="sourceLineNo">881</span>    FileSystem localFs = 
FileSystem.getLocal(conf);<a name="line.881"></a>
+<span class="sourceLineNo">882</span>    Set&lt;String&gt; jars = new 
HashSet&lt;&gt;();<a name="line.882"></a>
+<span class="sourceLineNo">883</span>    // Add jars that are already in the 
tmpjars variable<a name="line.883"></a>
+<span class="sourceLineNo">884</span>    
jars.addAll(conf.getStringCollection("tmpjars"));<a name="line.884"></a>
+<span class="sourceLineNo">885</span><a name="line.885"></a>
+<span class="sourceLineNo">886</span>    // add jars as we find them to a map 
of contents jar name so that we can avoid<a name="line.886"></a>
+<span class="sourceLineNo">887</span>    // creating new jars for classes that 
have already been packaged.<a name="line.887"></a>
+<span class="sourceLineNo">888</span>    Map&lt;String, String&gt; 
packagedClasses = new HashMap&lt;&gt;();<a name="line.888"></a>
+<span class="sourceLineNo">889</span><a name="line.889"></a>
+<span class="sourceLineNo">890</span>    // Add jars containing the specified 
classes<a name="line.890"></a>
+<span class="sourceLineNo">891</span>    for (Class&lt;?&gt; clazz : classes) 
{<a name="line.891"></a>
+<span class="sourceLineNo">892</span>      if (clazz == null) continue;<a 
name="line.892"></a>
+<span class="sourceLineNo">893</span><a name="line.893"></a>
+<span class="sourceLineNo">894</span>      Path path = findOrCreateJar(clazz, 
localFs, packagedClasses);<a name="line.894"></a>
+<span class="sourceLineNo">895</span>      if (path == null) {<a 
name="line.895"></a>
+<span class="sourceLineNo">896</span>        LOG.warn("Could not find jar for 
class " + clazz +<a name="line.896"></a>
+<span class="sourceLineNo">897</span>                 " in order to ship it to 
the cluster.");<a name="line.897"></a>
+<span class="sourceLineNo">898</span>        continue;<a name="line.898"></a>
+<span class="sourceLineNo">899</span>      }<a name="line.899"></a>
+<span class="sourceLineNo">900</span>      if (!localFs.exists(path)) {<a 
name="line.900"></a>
+<span class="sourceLineNo">901</span>        LOG.warn("Could not validate jar 
file " + path + " for class "<a name="line.901"></a>
+<span class="sourceLineNo">902</span>                 + clazz);<a 
name="line.902"></a>
+<span class="sourceLineNo">903</span>        continue;<a name="line.903"></a>
+<span class="sourceLineNo">904</span>      }<a name="line.904"></a>
+<span class="sourceLineNo">905</span>      jars.add(path.toString());<a 
name="line.905"></a>
+<span class="sourceLineNo">906</span>    }<a name="line.906"></a>
+<span class="sourceLineNo">907</span>    if (jars.isEmpty()) return;<a 
name="line.907"></a>
+<span class="sourceLineNo">908</span><a name="line.908"></a>
+<span class="sourceLineNo">909</span>    conf.set("tmpjars", 
StringUtils.arrayToString(jars.toArray(new String[jars.size()])));<a 
name="line.909"></a>
+<span class="sourceLineNo">910</span>  }<a name="line.910"></a>
+<span class="sourceLineNo">911</span><a name="line.911"></a>
+<span class="sourceLineNo">912</span>  /**<a name="line.912"></a>
+<span class="sourceLineNo">913</span>   * Finds the Jar for a class or creates 
it if it doesn't exist. If the class is in<a name="line.913"></a>
+<span class="sourceLineNo">914</span>   * a directory in the classpath, it 
creates a Jar on the fly with the<a name="line.914"></a>
+<span class="sourceLineNo">915</span>   * contents of the directory and 
returns the path to that Jar. If a Jar is<a name="line.915"></a>
+<span class="sourceLineNo">916</span>   * created, it is created in the system 
temporary directory. Otherwise,<a name="line.916"></a>
+<span class="sourceLineNo">917</span>   * returns an existing jar that 
contains a class of the same name. Maintains<a name="line.917"></a>
+<span class="sourceLineNo">918</span>   * a mapping from jar contents to the 
tmp jar created.<a name="line.918"></a>
+<span class="sourceLineNo">919</span>   * @param my_class the class to find.<a 
name="line.919"></a>
+<span class="sourceLineNo">920</span>   * @param fs the FileSystem with which 
to qualify the returned path.<a name="line.920"></a>
+<span class="sourceLineNo">921</span>   * @param packagedClasses a map of 
class name to path.<a name="line.921"></a>
+<span class="sourceLineNo">922</span>   * @return a jar file that contains the 
class.<a name="line.922"></a>
+<span class="sourceLineNo">923</span>   * @throws IOException<a 
name="line.923"></a>
+<span class="sourceLineNo">924</span>   */<a name="line.924"></a>
+<span class="sourceLineNo">925</span>  private static Path 
findOrCreateJar(Class&lt;?&gt; my_class, FileSystem fs,<a name="line.925"></a>
+<span class="sourceLineNo">926</span>      Map&lt;String, String&gt; 
packagedClasses)<a name="line.926"></a>
+<span class="sourceLineNo">927</span>  throws IOException {<a 
name="line.927"></a>
+<span class="sourceLineNo">928</span>    // attempt to locate an existing jar 
for the class.<a name="line.928"></a>
+<span class="sourceLineNo">929</span>    String jar = 
findContainingJar(my_class, packagedClasses);<a name="line.929"></a>
+<span class="sourceLineNo">930</span>    if (null == jar || jar.isEmpty()) {<a 
name="line.930"></a>
+<span class="sourceLineNo">931</span>      jar = getJar(my_class);<a 
name="line.931"></a>
+<span class="sourceLineNo">932</span>      updateMap(jar, packagedClasses);<a 
name="line.932"></a>
+<span class="sourceLineNo">933</span>    }<a name="line.933"></a>
+<span class="sourceLineNo">934</span><a name="line.934"></a>
+<span class="sourceLineNo">935</span>    if (null == jar || jar.isEmpty()) {<a 
name="line.935"></a>
+<span class="sourceLineNo">936</span>      return null;<a name="line.936"></a>
+<span class="sourceLineNo">937</span>    }<a name="line.937"></a>
+<span class="sourceLineNo">938</span><a name="line.938"></a>
+<span class="sourceLineNo">939</span>    LOG.debug(String.format("For class 
%s, using jar %s", my_class.getName(), jar));<a name="line.939"></a>
+<span class="sourceLineNo">940</span>    return new 
Path(jar).makeQualified(fs);<a name="line.940"></a>
+<span class="sourceLineNo">941</span>  }<a name="line.941"></a>
+<span class="sourceLineNo">942</span><a name="line.942"></a>
+<span class="sourceLineNo">943</span>  /**<a name="line.943"></a>
+<span class="sourceLineNo">944</span>   * Add entries to 
&lt;code&gt;packagedClasses&lt;/code&gt; corresponding to class files<a 
name="line.944"></a>
+<span class="sourceLineNo">945</span>   * contained in 
&lt;code&gt;jar&lt;/code&gt;.<a name="line.945"></a>
+<span class="sourceLineNo">946</span>   * @param jar The jar who's content to 
list.<a name="line.946"></a>
+<span class="sourceLineNo">947</span>   * @param packagedClasses map[class 
-&gt; jar]<a name="line.947"></a>
+<span class="sourceLineNo">948</span>   */<a name="line.948"></a>
+<span class="sourceLineNo">949</span>  private static void updateMap(String 
jar, Map&lt;String, String&gt; packagedClasses) throws IOException {<a 
name="line.949"></a>
+<span class="sourceLineNo">950</span>    if (null == jar || jar.isEmpty()) {<a 
name="line.950"></a>
+<span class="sourceLineNo">951</span>      return;<a name="line.951"></a>
+<span class="sourceLineNo">952</span>    }<a name="line.952"></a>
+<span class="sourceLineNo">953</span>    ZipFile zip = null;<a 
name="line.953"></a>
+<span class="sourceLineNo">954</span>    try {<a name="line.954"></a>
+<span class="sourceLineNo">955</span>      zip = new ZipFile(jar);<a 
name="line.955"></a>
+<span class="sourceLineNo">956</span>      for (Enumeration&lt;? extends 
ZipEntry&gt; iter = zip.entries(); iter.hasMoreElements();) {<a 
name="line.956"></a>
+<span class="sourceLineNo">957</span>        ZipEntry entry = 
iter.nextElement();<a name="line.957"></a>
+<span class="sourceLineNo">958</span>        if 
(entry.getName().endsWith("class")) {<a name="line.958"></a>
+<span class="sourceLineNo">959</span>          
packagedClasses.put(entry.getName(), jar);<a name="line.959"></a>
+<span class="sourceLineNo">960</span>        }<a name="line.960"></a>
+<span class="sourceLineNo">961</span>      }<a name="line.961"></a>
+<span class="sourceLineNo">962</span>    } finally {<a name="line.962"></a>
+<span class="sourceLineNo">963</span>      if (null != zip) zip.close();<a 
name="line.963"></a>
+<span class="sourceLineNo">964</span>    }<a name="line.964"></a>
+<span class="sourceLineNo">965</span>  }<a name="line.965"></a>
+<span class="sourceLineNo">966</span><a name="line.966"></a>
+<span class="sourceLineNo">967</span>  /**<a name="line.967"></a>
+<span class="sourceLineNo">968</span>   * Find a jar that contains a class of 
the same name, if any. It will return<a name="line.968"></a>
+<span class="sourceLineNo">969</span>   * a jar file, even if that is not the 
first thing on the class path that<a name="line.969"></a>
+<span class="sourceLineNo">970</span>   * has a class with the same name. 
Looks first on the classpath and then in<a name="line.970"></a>
+<span class="sourceLineNo">971</span>   * the 
&lt;code&gt;packagedClasses&lt;/code&gt; map.<a name="line.971"></a>
+<span class="sourceLineNo">972</span>   * @param my_class the class to find.<a 
name="line.972"></a>
+<span class="sourceLineNo">973</span>   * @return a jar file that contains the 
class, or null.<a name="line.973"></a>
+<span class="sourceLineNo">974</span>   * @throws IOException<a 
name="line.974"></a>
+<span class="sourceLineNo">975</span>   */<a name="line.975"></a>
+<span class="sourceLineNo">976</span>  private static String 
findContainingJar(Class&lt;?&gt; my_class, Map&lt;String, String&gt; 
packagedClasses)<a name="line.976"></a>
+<span class="sourceLineNo">977</span>      throws IOException {<a 
name="line.977"></a>
+<span class="sourceLineNo">978</span>    ClassLoader loader = 
my_class.getClassLoader();<a name="line.978"></a>
+<span class="sourceLineNo">979</span><a name="line.979"></a>
+<span class="sourceLineNo">980</span>    String class_file = 
my_class.getName().replaceAll("\\.", "/") + ".class";<a name="line.980"></a>
+<span class="sourceLineNo">981</span><a name="line.981"></a>
+<span class="sourceLineNo">982</span>    if (loader != null) {<a 
name="line.982"></a>
+<span class="sourceLineNo">983</span>      // first search the classpath<a 
name="line.983"></a>
+<span class="sourceLineNo">984</span>      for (Enumeration&lt;URL&gt; itr = 
loader.getResources(class_file); itr.hasMoreElements();) {<a 
name="line.984"></a>
+<span class="sourceLineNo">985</span>        URL url = itr.nextElement();<a 
name="line.985"></a>
+<span class="sourceLineNo">986</span>        if 
("jar".equals(url.getProtocol())) {<a name="line.986"></a>
+<span class="sourceLineNo">987</span>          String toReturn = 
url.getPath();<a name="line.987"></a>
+<span class="sourceLineNo">988</span>          if 
(toReturn.startsWith("file:")) {<a name="line.988"></a>
+<span class="sourceLineNo">989</span>            toReturn = 
toReturn.substring("file:".length());<a name="line.989"></a>
+<span class="sourceLineNo">990</span>          }<a name="line.990"></a>
+<span class="sourceLineNo">991</span>          // URLDecoder is a misnamed 
class, since it actually decodes<a name="line.991"></a>
+<span class="sourceLineNo">992</span>          // x-www-form-urlencoded MIME 
type rather than actual<a name="line.992"></a>
+<span class="sourceLineNo">993</span>          // URL encoding (which the file 
path has). Therefore it would<a name="line.993"></a>
+<span class="sourceLineNo">994</span>          // decode +s to ' 's which is 
incorrect (spaces are actually<a name="line.994"></a>
+<span class="sourceLineNo">995</span>          // either unencoded or encoded 
as "%20"). Replace +s first, so<a name="line.995"></a>
+<span class="sourceLineNo">996</span>          // that they are kept sacred 
during the decoding process.<a name="line.996"></a>
+<span class="sourceLineNo">997</span>          toReturn = 
toReturn.replaceAll("\\+", "%2B");<a name="line.997"></a>
+<span class="sourceLineNo">998</span>          toReturn = 
URLDecoder.decode(toReturn, "UTF-8");<a name="line.998"></a>
+<span class="sourceLineNo">999</span>          return 
toReturn.replaceAll("!.*$", "");<a name="line.999"></a>
+<span class="sourceLineNo">1000</span>        }<a name="line.1000"></a>
+<span class="sourceLineNo">1001</span>      }<a name="line.1001"></a>
+<span class="sourceLineNo">1002</span>    }<a name="line.1002"></a>
+<span class="sourceLineNo">1003</span><a name="line.1003"></a>
+<span class="sourceLineNo">1004</span>    // now look in any jars we've 
packaged using JarFinder. Returns null when<a name="line.1004"></a>
+<span class="sourceLineNo">1005</span>    // no jar is found.<a 
name="line.1005"></a>
+<span class="sourceLineNo">1006</span>    return 
packagedClasses.get(class_file);<a name="line.1006"></a>
+<span class="sourceLineNo">1007</span>  }<a name="line.1007"></a>
+<span class="sourceLineNo">1008</span><a name="line.1008"></a>
+<span class="sourceLineNo">1009</span>  /**<a name="line.1009"></a>
+<span class="sourceLineNo">1010</span>   * Invoke 'getJar' on a custom 
JarFinder implementation. Useful for some job<a name="line.1010"></a>
+<span class="sourceLineNo">1011</span>   * configuration contexts (HBASE-8140) 
and also for testing on MRv2.<a name="line.1011"></a>
+<span class="sourceLineNo">1012</span>   * check if we have HADOOP-9426.<a 
name="line.1012"></a>
+<span class="sourceLineNo">1013</span>   * @param my_class the class to 
find.<a name="line.1013"></a>
+<span class="sourceLineNo">1014</span>   * @return a jar file that contains 
the class, or null.<a name="line.1014"></a>
+<span class="sourceLineNo">1015</span>   */<a name="line.1015"></a>
+<span class="sourceLineNo">1016</span>  private static String 
getJar(Class&lt;?&gt; my_class) {<a name="line.1016"></a>
+<span class="sourceLineNo">1017</span>    String ret = null;<a 
name="line.1017"></a>
+<span class="sourceLineNo">1018</span>    try {<a name="line.1018"></a>
+<span class="sourceLineNo">1019</span>      ret = 
JarFinder.getJar(my_class);<a name="line.1019"></a>
+<span class="sourceLineNo">1020</span>    } catch (Exception e) {<a 
name="line.1020"></a>
+<span class="sourceLineNo">1021</span>      // toss all other exceptions, 
related to reflection failure<a name="line.1021"></a>
+<span class="sourceLineNo">1022</span>      throw new RuntimeException("getJar 
invocation failed.", e);<a name="line.1022"></a>
+<span class="sourceLineNo">1023</span>    }<a name="line.1023"></a>
+<span class="sourceLineNo">1024</span><a name="line.1024"></a>
+<span class="sourceLineNo">1025</span>    return ret;<a name="line.1025"></a>
+<span class="sourceLineNo">1026</span>  }<a name="line.1026"></a>
+<span class="sourceLineNo">1027</span>}<a name="line.1027"></a>
 
 
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/1342ac30/book.html
----------------------------------------------------------------------
diff --git a/book.html b/book.html
index 05774fe..8a529e9 100644
--- a/book.html
+++ b/book.html
@@ -5975,7 +5975,7 @@ for warning about incompatible changes). All effort will 
be made to provide a de
 <div class="ulist">
 <ul>
 <li>
-<p>InterfaceAudience: captures the intended audience, possible values are 
Public (for end users and external projects), LimitedPrivate (for other 
Projects, Coprocessors or other plugin points), and Private (for internal 
use).</p>
+<p>InterfaceAudience: captures the intended audience, possible values are 
Public (for end users and external projects), LimitedPrivate (for other 
Projects, Coprocessors or other plugin points), and Private (for internal use). 
Notice that, you may find that the classes which are declared as IA.Private are 
used as parameter or return value for the interfaces which are declared as 
IA.LimitedPrivate. This is possible. You should treat the IA.Private object as 
a monolithic object, which means you can use it as a parameter to call other 
methods, or return it, but you should never try to access its methods or 
fields.</p>
 </li>
 <li>
 <p>InterfaceStability: describes what types of interface changes are 
permitted. Possible values are Stable, Evolving, Unstable, and Deprecated. 
Notice that this annotation is only valid for classes which are marked as 
IA.LimitedPrivate. The stability of IA.Public classes is only related to the 
upgrade type(major, minor or patch). And for IA.Private classes, there is no 
guarantee on the stability between releases. Refer to the Compatibility Matrix 
above for more details.</p>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/1342ac30/bulk-loads.html
----------------------------------------------------------------------
diff --git a/bulk-loads.html b/bulk-loads.html
index 9d2a1fd..984a058 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="20170607" />
+    <meta name="Date-Revision-yyyymmdd" content="20170608" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase &#x2013;  
       Bulk Loads in Apache HBase (TM)
@@ -311,7 +311,7 @@ under the License. -->
                         <a href="https://www.apache.org/";>The Apache Software 
Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 
2017-06-07</li>
+                  <li id="publishDate" class="pull-right">Last Published: 
2017-06-08</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/1342ac30/checkstyle-aggregate.html
----------------------------------------------------------------------
diff --git a/checkstyle-aggregate.html b/checkstyle-aggregate.html
index 1a5d42a..66fac9a 100644
--- a/checkstyle-aggregate.html
+++ b/checkstyle-aggregate.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="20170607" />
+    <meta name="Date-Revision-yyyymmdd" content="20170608" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase &#x2013; Checkstyle Results</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" 
/>
@@ -7306,12 +7306,12 @@
 <td><a class="externalLink" 
href="http://checkstyle.sourceforge.net/config_javadoc.html#JavadocTagContinuationIndentation";>JavadocTagContinuationIndentation</a>
 <ul>
 <li>offset: <tt>&quot;2&quot;</tt></li></ul></td>
-<td>779</td>
+<td>791</td>
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td></tr>
 <tr class="b">
 <td></td>
 <td><a class="externalLink" 
href="http://checkstyle.sourceforge.net/config_javadoc.html#NonEmptyAtclauseDescription";>NonEmptyAtclauseDescription</a></td>
-<td>3218</td>
+<td>3206</td>
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td></tr>
 <tr class="a">
 <td>misc</td>
@@ -13017,7 +13017,7 @@
 <tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
-<td>NonEmptyAtclauseDescription</td>
+<td>JavadocTagContinuationIndentation</td>
 <td>Javadoc comment at column 43 has parse error. Missed HTML close tag 
'TableName'. Sometimes it means that close tag missed for one of previous 
tags.</td>
 <td>181</td></tr>
 <tr class="b">
@@ -16170,7 +16170,7 @@
 <tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
-<td>NonEmptyAtclauseDescription</td>
+<td>JavadocTagContinuationIndentation</td>
 <td>Javadoc comment at column 64 has parse error. Missed HTML close tag 
'code'. Sometimes it means that close tag missed for one of previous tags.</td>
 <td>1957</td></tr>
 <tr class="b">
@@ -20778,7 +20778,7 @@
 <tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
-<td>NonEmptyAtclauseDescription</td>
+<td>JavadocTagContinuationIndentation</td>
 <td>Javadoc comment at column 37 has parse error. Details: no viable 
alternative at input '&lt;ColumnFamily,' while parsing HTML_ELEMENT</td>
 <td>29</td></tr></table></div>
 <div class="section">
@@ -36363,7 +36363,7 @@
 <tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
-<td>NonEmptyAtclauseDescription</td>
+<td>JavadocTagContinuationIndentation</td>
 <td>Javadoc comment at column 80 has parse error. Details: no viable 
alternative at input '&lt;TableName&gt; tables)\n   * Used when region 
startKeys of each table is available, input as &lt;TableName,' while parsing 
HTML_TAG</td>
 <td>206</td></tr>
 <tr class="b">
@@ -36393,19 +36393,19 @@
 <tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
-<td>NonEmptyAtclauseDescription</td>
+<td>JavadocTagContinuationIndentation</td>
 <td>Javadoc comment at column 66 has parse error. Details: no viable 
alternative at input '&lt;table,' while parsing HTML_ELEMENT</td>
 <td>334</td></tr>
 <tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
-<td>NonEmptyAtclauseDescription</td>
+<td>JavadocTagContinuationIndentation</td>
 <td>Javadoc comment at column 66 has parse error. Details: no viable 
alternative at input '&lt;table,' while parsing HTML_ELEMENT</td>
 <td>342</td></tr>
 <tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
-<td>NonEmptyAtclauseDescription</td>
+<td>JavadocTagContinuationIndentation</td>
 <td>Javadoc comment at column 32 has parse error. Details: no viable 
alternative at input '&lt;tableName,' while parsing HTML_ELEMENT</td>
 <td>351</td></tr>
 <tr class="a">
@@ -36417,7 +36417,7 @@
 <tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
-<td>NonEmptyAtclauseDescription</td>
+<td>JavadocTagContinuationIndentation</td>
 <td>Javadoc comment at column 24 has parse error. Details: no viable 
alternative at input '&lt;tableName,' while parsing HTML_ELEMENT</td>
 <td>379</td></tr>
 <tr class="a">
@@ -36429,7 +36429,7 @@
 <tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
-<td>NonEmptyAtclauseDescription</td>
+<td>JavadocTagContinuationIndentation</td>
 <td>Javadoc comment at column 43 has parse error. Details: no viable 
alternative at input '&lt;table,' while parsing HTML_ELEMENT</td>
 <td>421</td></tr>
 <tr class="a">
@@ -36447,7 +36447,7 @@
 <tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
-<td>NonEmptyAtclauseDescription</td>
+<td>JavadocTagContinuationIndentation</td>
 <td>Javadoc comment at column 36 has parse error. Details: no viable 
alternative at input '&lt;TableName,' while parsing HTML_ELEMENT</td>
 <td>487</td></tr></table></div>
 <div class="section">
@@ -37313,49 +37313,49 @@
 <td>blocks</td>
 <td>NeedBraces</td>
 <td>'if' construct must use '{}'s.</td>
-<td>817</td></tr>
+<td>818</td></tr>
 <tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>blocks</td>
 <td>NeedBraces</td>
 <td>'if' construct must use '{}'s.</td>
-<td>818</td></tr>
+<td>819</td></tr>
 <tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>blocks</td>
 <td>NeedBraces</td>
 <td>'if' construct must use '{}'s.</td>
-<td>891</td></tr>
+<td>892</td></tr>
 <tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>blocks</td>
 <td>NeedBraces</td>
 <td>'if' construct must use '{}'s.</td>
-<td>906</td></tr>
+<td>907</td></tr>
 <tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
-<td>922</td></tr>
+<td>923</td></tr>
 <tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>sizes</td>
 <td>LineLength</td>
 <td>Line is longer than 100 characters (found 101).</td>
-<td>948</td></tr>
+<td>949</td></tr>
 <tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>blocks</td>
 <td>NeedBraces</td>
 <td>'if' construct must use '{}'s.</td>
-<td>962</td></tr>
+<td>963</td></tr>
 <tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
-<td>973</td></tr></table></div>
+<td>974</td></tr></table></div>
 <div class="section">
 <h3 
id="org.apache.hadoop.hbase.mapreduce.TableMapper.java">org/apache/hadoop/hbase/mapreduce/TableMapper.java</h3>
 <table border="0" class="table table-striped">
@@ -51033,7 +51033,7 @@
 <tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
-<td>NonEmptyAtclauseDescription</td>
+<td>JavadocTagContinuationIndentation</td>
 <td>Javadoc comment at column 60 has parse error. Missed HTML close tag 
'Comparable'. Sometimes it means that close tag missed for one of previous 
tags.</td>
 <td>28</td></tr>
 <tr class="b">
@@ -87357,7 +87357,7 @@
 <tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
-<td>NonEmptyAtclauseDescription</td>
+<td>JavadocTagContinuationIndentation</td>
 <td>Javadoc comment at column 33 has parse error. It is forbidden to close 
singleton HTML tags. Tag: br.</td>
 <td>63</td></tr>
 <tr class="a">
@@ -106731,7 +106731,7 @@
                         <a href="https://www.apache.org/";>The Apache Software 
Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 
2017-06-07</li>
+                  <li id="publishDate" class="pull-right">Last Published: 
2017-06-08</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/1342ac30/coc.html
----------------------------------------------------------------------
diff --git a/coc.html b/coc.html
index 2a27411..a5d28a8 100644
--- a/coc.html
+++ b/coc.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="20170607" />
+    <meta name="Date-Revision-yyyymmdd" content="20170608" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase &#x2013; 
       Code of Conduct Policy
@@ -380,7 +380,7 @@ email to <a class="externalLink" 
href="mailto:[email protected]";>the priv
                         <a href="https://www.apache.org/";>The Apache Software 
Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 
2017-06-07</li>
+                  <li id="publishDate" class="pull-right">Last Published: 
2017-06-08</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/1342ac30/cygwin.html
----------------------------------------------------------------------
diff --git a/cygwin.html b/cygwin.html
index 1138359..10f6c30 100644
--- a/cygwin.html
+++ b/cygwin.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="20170607" />
+    <meta name="Date-Revision-yyyymmdd" content="20170608" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase &#x2013; Installing Apache HBase (TM) on Windows using 
Cygwin</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" 
/>
@@ -679,7 +679,7 @@ Now your <b>HBase </b>server is running, <b>start 
coding</b> and build that next
                         <a href="https://www.apache.org/";>The Apache Software 
Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 
2017-06-07</li>
+                  <li id="publishDate" class="pull-right">Last Published: 
2017-06-08</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/1342ac30/dependencies.html
----------------------------------------------------------------------
diff --git a/dependencies.html b/dependencies.html
index 628b753..9f5d23d 100644
--- a/dependencies.html
+++ b/dependencies.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="20170607" />
+    <meta name="Date-Revision-yyyymmdd" content="20170608" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase &#x2013; Project Dependencies</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" 
/>
@@ -524,7 +524,7 @@
                         <a href="https://www.apache.org/";>The Apache Software 
Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 
2017-06-07</li>
+                  <li id="publishDate" class="pull-right">Last Published: 
2017-06-08</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/1342ac30/dependency-convergence.html
----------------------------------------------------------------------
diff --git a/dependency-convergence.html b/dependency-convergence.html
index 294f48e..41b237c 100644
--- a/dependency-convergence.html
+++ b/dependency-convergence.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="20170607" />
+    <meta name="Date-Revision-yyyymmdd" content="20170608" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase &#x2013; Reactor Dependency Convergence</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" 
/>
@@ -1850,7 +1850,7 @@
                         <a href="https://www.apache.org/";>The Apache Software 
Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 
2017-06-07</li>
+                  <li id="publishDate" class="pull-right">Last Published: 
2017-06-08</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/1342ac30/dependency-info.html
----------------------------------------------------------------------
diff --git a/dependency-info.html b/dependency-info.html
index f96625f..21a53d8 100644
--- a/dependency-info.html
+++ b/dependency-info.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="20170607" />
+    <meta name="Date-Revision-yyyymmdd" content="20170608" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase &#x2013; Dependency Information</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" 
/>
@@ -318,7 +318,7 @@
                         <a href="https://www.apache.org/";>The Apache Software 
Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 
2017-06-07</li>
+                  <li id="publishDate" class="pull-right">Last Published: 
2017-06-08</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/1342ac30/dependency-management.html
----------------------------------------------------------------------
diff --git a/dependency-management.html b/dependency-management.html
index 472cbcc..f729b47 100644
--- a/dependency-management.html
+++ b/dependency-management.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="20170607" />
+    <meta name="Date-Revision-yyyymmdd" content="20170608" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase &#x2013; Project Dependency Management</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" 
/>
@@ -894,7 +894,7 @@
                         <a href="https://www.apache.org/";>The Apache Software 
Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 
2017-06-07</li>
+                  <li id="publishDate" class="pull-right">Last Published: 
2017-06-08</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/1342ac30/devapidocs/constant-values.html
----------------------------------------------------------------------
diff --git a/devapidocs/constant-values.html b/devapidocs/constant-values.html
index 97c388a..e0297f9 100644
--- a/devapidocs/constant-values.html
+++ b/devapidocs/constant-values.html
@@ -3822,21 +3822,21 @@
 <!--   -->
 </a><code>public&nbsp;static&nbsp;final&nbsp;<a 
href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true";
 title="class or interface in java.lang">String</a></code></td>
 <td><code><a 
href="org/apache/hadoop/hbase/Version.html#date">date</a></code></td>
-<td class="colLast"><code>"Wed Jun  7 14:39:09 UTC 2017"</code></td>
+<td class="colLast"><code>"Thu Jun  8 14:39:10 UTC 2017"</code></td>
 </tr>
 <tr class="rowColor">
 <td class="colFirst"><a name="org.apache.hadoop.hbase.Version.revision">
 <!--   -->
 </a><code>public&nbsp;static&nbsp;final&nbsp;<a 
href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true";
 title="class or interface in java.lang">String</a></code></td>
 <td><code><a 
href="org/apache/hadoop/hbase/Version.html#revision">revision</a></code></td>
-<td 
class="colLast"><code>"0eeafa04f26f2388602a7c74b496e6682716f50a"</code></td>
+<td 
class="colLast"><code>"f17fa223b57faad02f10b3be24dae64c34996b62"</code></td>
 </tr>
 <tr class="altColor">
 <td class="colFirst"><a name="org.apache.hadoop.hbase.Version.srcChecksum">
 <!--   -->
 </a><code>public&nbsp;static&nbsp;final&nbsp;<a 
href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true";
 title="class or interface in java.lang">String</a></code></td>
 <td><code><a 
href="org/apache/hadoop/hbase/Version.html#srcChecksum">srcChecksum</a></code></td>
-<td class="colLast"><code>"1a271947d0abb73023034c9060a5ccd2"</code></td>
+<td class="colLast"><code>"a4f4a52fd05ed8ead6956de4e164c742"</code></td>
 </tr>
 <tr class="rowColor">
 <td class="colFirst"><a name="org.apache.hadoop.hbase.Version.url">

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/1342ac30/devapidocs/org/apache/hadoop/hbase/mapreduce/TableMapReduceUtil.html
----------------------------------------------------------------------
diff --git 
a/devapidocs/org/apache/hadoop/hbase/mapreduce/TableMapReduceUtil.html 
b/devapidocs/org/apache/hadoop/hbase/mapreduce/TableMapReduceUtil.html
index b802de0..19d16ef 100644
--- a/devapidocs/org/apache/hadoop/hbase/mapreduce/TableMapReduceUtil.html
+++ b/devapidocs/org/apache/hadoop/hbase/mapreduce/TableMapReduceUtil.html
@@ -1297,7 +1297,7 @@ public static&nbsp;void&nbsp;<a 
href="../../../../../src-html/org/apache/hadoop/
 <ul class="blockList">
 <li class="blockList">
 <h4>buildDependencyClasspath</h4>
-<pre>public static&nbsp;<a 
href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true";
 title="class or interface in java.lang">String</a>&nbsp;<a 
href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/TableMapReduceUtil.html#line.805">buildDependencyClasspath</a>(org.apache.hadoop.conf.Configuration&nbsp;conf)</pre>
+<pre>public static&nbsp;<a 
href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true";
 title="class or interface in java.lang">String</a>&nbsp;<a 
href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/TableMapReduceUtil.html#line.806">buildDependencyClasspath</a>(org.apache.hadoop.conf.Configuration&nbsp;conf)</pre>
 <div class="block">Returns a classpath string built from the content of the 
"tmpjars" value in <code>conf</code>.
  Also exposed to shell scripts via `bin/hbase mapredcp`.</div>
 </li>
@@ -1308,7 +1308,7 @@ public static&nbsp;void&nbsp;<a 
href="../../../../../src-html/org/apache/hadoop/
 <ul class="blockList">
 <li class="blockList">
 <h4>addDependencyJars</h4>
-<pre>public static&nbsp;void&nbsp;<a 
href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/TableMapReduceUtil.html#line.829">addDependencyJars</a>(org.apache.hadoop.mapreduce.Job&nbsp;job)
+<pre>public static&nbsp;void&nbsp;<a 
href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/TableMapReduceUtil.html#line.830">addDependencyJars</a>(org.apache.hadoop.mapreduce.Job&nbsp;job)
                               throws <a 
href="http://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true";
 title="class or interface in java.io">IOException</a></pre>
 <div class="block">Add the HBase dependency jars as well as jars for any of 
the configured
  job classes to the job configuration, so that JobClient will ship them
@@ -1326,7 +1326,7 @@ public static&nbsp;void&nbsp;<a 
href="../../../../../src-html/org/apache/hadoop/
 <li class="blockList">
 <h4>addDependencyJars</h4>
 <pre><a 
href="http://docs.oracle.com/javase/8/docs/api/java/lang/Deprecated.html?is-external=true";
 title="class or interface in java.lang">@Deprecated</a>
-public static&nbsp;void&nbsp;<a 
href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/TableMapReduceUtil.html#line.855">addDependencyJars</a>(org.apache.hadoop.conf.Configuration&nbsp;conf,
+public static&nbsp;void&nbsp;<a 
href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/TableMapReduceUtil.html#line.856">addDependencyJars</a>(org.apache.hadoop.conf.Configuration&nbsp;conf,
                                                  <a 
href="http://docs.oracle.com/javase/8/docs/api/java/lang/Class.html?is-external=true";
 title="class or interface in java.lang">Class</a>&lt;?&gt;...&nbsp;classes)
                                           throws <a 
href="http://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true";
 title="class or interface in java.io">IOException</a></pre>
 <div class="block"><span class="deprecatedLabel">Deprecated.</span>&nbsp;<span 
class="deprecationComment">rely on <a 
href="../../../../../org/apache/hadoop/hbase/mapreduce/TableMapReduceUtil.html#addDependencyJars-org.apache.hadoop.mapreduce.Job-"><code>addDependencyJars(Job)</code></a>
 instead.</span></div>
@@ -1346,7 +1346,7 @@ public static&nbsp;void&nbsp;<a 
href="../../../../../src-html/org/apache/hadoop/
 <li class="blockList">
 <h4>addDependencyJarsForClasses</h4>
 <pre><a 
href="../../../../../org/apache/hadoop/hbase/classification/InterfaceAudience.Private.html"
 title="annotation in 
org.apache.hadoop.hbase.classification">@InterfaceAudience.Private</a>
-public static&nbsp;void&nbsp;<a 
href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/TableMapReduceUtil.html#line.877">addDependencyJarsForClasses</a>(org.apache.hadoop.conf.Configuration&nbsp;conf,
+public static&nbsp;void&nbsp;<a 
href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/TableMapReduceUtil.html#line.878">addDependencyJarsForClasses</a>(org.apache.hadoop.conf.Configuration&nbsp;conf,
                                                                           <a 
href="http://docs.oracle.com/javase/8/docs/api/java/lang/Class.html?is-external=true";
 title="class or interface in java.lang">Class</a>&lt;?&gt;...&nbsp;classes)
                                                                    throws <a 
href="http://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true";
 title="class or interface in java.io">IOException</a></pre>
 <div class="block">Add the jars containing the given classes to the job's 
configuration
@@ -1371,7 +1371,7 @@ public static&nbsp;void&nbsp;<a 
href="../../../../../src-html/org/apache/hadoop/
 <ul class="blockList">
 <li class="blockList">
 <h4>findOrCreateJar</h4>
-<pre>private static&nbsp;org.apache.hadoop.fs.Path&nbsp;<a 
href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/TableMapReduceUtil.html#line.924">findOrCreateJar</a>(<a
 
href="http://docs.oracle.com/javase/8/docs/api/java/lang/Class.html?is-external=true";
 title="class or interface in java.lang">Class</a>&lt;?&gt;&nbsp;my_class,
+<pre>private static&nbsp;org.apache.hadoop.fs.Path&nbsp;<a 
href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/TableMapReduceUtil.html#line.925">findOrCreateJar</a>(<a
 
href="http://docs.oracle.com/javase/8/docs/api/java/lang/Class.html?is-external=true";
 title="class or interface in java.lang">Class</a>&lt;?&gt;&nbsp;my_class,
                                                          
org.apache.hadoop.fs.FileSystem&nbsp;fs,
                                                          <a 
href="http://docs.oracle.com/javase/8/docs/api/java/util/Map.html?is-external=true";
 title="class or interface in java.util">Map</a>&lt;<a 
href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true";
 title="class or interface in java.lang">String</a>,<a 
href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true";
 title="class or interface in java.lang">String</a>&gt;&nbsp;packagedClasses)
                                                   throws <a 
href="http://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true";
 title="class or interface in java.io">IOException</a></pre>
@@ -1399,7 +1399,7 @@ public static&nbsp;void&nbsp;<a 
href="../../../../../src-html/org/apache/hadoop/
 <ul class="blockList">
 <li class="blockList">
 <h4>updateMap</h4>
-<pre>private static&nbsp;void&nbsp;<a 
href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/TableMapReduceUtil.html#line.948">updateMap</a>(<a
 
href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true";
 title="class or interface in java.lang">String</a>&nbsp;jar,
+<pre>private static&nbsp;void&nbsp;<a 
href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/TableMapReduceUtil.html#line.949">updateMap</a>(<a
 
href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true";
 title="class or interface in java.lang">String</a>&nbsp;jar,
                               <a 
href="http://docs.oracle.com/javase/8/docs/api/java/util/Map.html?is-external=true";
 title="class or interface in java.util">Map</a>&lt;<a 
href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true";
 title="class or interface in java.lang">String</a>,<a 
href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true";
 title="class or interface in java.lang">String</a>&gt;&nbsp;packagedClasses)
                        throws <a 
href="http://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true";
 title="class or interface in java.io">IOException</a></pre>
 <div class="block">Add entries to <code>packagedClasses</code> corresponding 
to class files
@@ -1419,7 +1419,7 @@ public static&nbsp;void&nbsp;<a 
href="../../../../../src-html/org/apache/hadoop/
 <ul class="blockList">
 <li class="blockList">
 <h4>findContainingJar</h4>
-<pre>private static&nbsp;<a 
href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true";
 title="class or interface in java.lang">String</a>&nbsp;<a 
href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/TableMapReduceUtil.html#line.975">findContainingJar</a>(<a
 
href="http://docs.oracle.com/javase/8/docs/api/java/lang/Class.html?is-external=true";
 title="class or interface in java.lang">Class</a>&lt;?&gt;&nbsp;my_class,
+<pre>private static&nbsp;<a 
href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true";
 title="class or interface in java.lang">String</a>&nbsp;<a 
href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/TableMapReduceUtil.html#line.976">findContainingJar</a>(<a
 
href="http://docs.oracle.com/javase/8/docs/api/java/lang/Class.html?is-external=true";
 title="class or interface in java.lang">Class</a>&lt;?&gt;&nbsp;my_class,
                                         <a 
href="http://docs.oracle.com/javase/8/docs/api/java/util/Map.html?is-external=true";
 title="class or interface in java.util">Map</a>&lt;<a 
href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true";
 title="class or interface in java.lang">String</a>,<a 
href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true";
 title="class or interface in java.lang">String</a>&gt;&nbsp;packagedClasses)
                                  throws <a 
href="http://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true";
 title="class or interface in java.io">IOException</a></pre>
 <div class="block">Find a jar that contains a class of the same name, if any. 
It will return
@@ -1442,7 +1442,7 @@ public static&nbsp;void&nbsp;<a 
href="../../../../../src-html/org/apache/hadoop/
 <ul class="blockListLast">
 <li class="blockList">
 <h4>getJar</h4>
-<pre>private static&nbsp;<a 
href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true";
 title="class or interface in java.lang">String</a>&nbsp;<a 
href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/TableMapReduceUtil.html#line.1015">getJar</a>(<a
 
href="http://docs.oracle.com/javase/8/docs/api/java/lang/Class.html?is-external=true";
 title="class or interface in java.lang">Class</a>&lt;?&gt;&nbsp;my_class)</pre>
+<pre>private static&nbsp;<a 
href="http://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true";
 title="class or interface in java.lang">String</a>&nbsp;<a 
href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/TableMapReduceUtil.html#line.1016">getJar</a>(<a
 
href="http://docs.oracle.com/javase/8/docs/api/java/lang/Class.html?is-external=true";
 title="class or interface in java.lang">Class</a>&lt;?&gt;&nbsp;my_class)</pre>
 <div class="block">Invoke 'getJar' on a custom JarFinder implementation. 
Useful for some job
  configuration contexts (HBASE-8140) and also for testing on MRv2.
  check if we have HADOOP-9426.</div>

Reply via email to