http://git-wip-us.apache.org/repos/asf/hbase-site/blob/22cff34f/apidocs/src-html/org/apache/hadoop/hbase/snapshot/SnapshotInfo.html
----------------------------------------------------------------------
diff --git 
a/apidocs/src-html/org/apache/hadoop/hbase/snapshot/SnapshotInfo.html 
b/apidocs/src-html/org/apache/hadoop/hbase/snapshot/SnapshotInfo.html
index 608d19a..f42fb90 100644
--- a/apidocs/src-html/org/apache/hadoop/hbase/snapshot/SnapshotInfo.html
+++ b/apidocs/src-html/org/apache/hadoop/hbase/snapshot/SnapshotInfo.html
@@ -606,119 +606,118 @@
 <span class="sourceLineNo">598</span>    Path snapshotDir = 
SnapshotDescriptionUtils.getSnapshotsDir(rootDir);<a name="line.598"></a>
 <span class="sourceLineNo">599</span>    FileStatus[] snapshots = 
fs.listStatus(snapshotDir,<a name="line.599"></a>
 <span class="sourceLineNo">600</span>        new 
SnapshotDescriptionUtils.CompletedSnaphotDirectoriesFilter(fs));<a 
name="line.600"></a>
-<span class="sourceLineNo">601</span>    List&lt;SnapshotDescription&gt; 
snapshotLists =<a name="line.601"></a>
-<span class="sourceLineNo">602</span>      new 
ArrayList&lt;SnapshotDescription&gt;(snapshots.length);<a name="line.602"></a>
-<span class="sourceLineNo">603</span>    for (FileStatus snapshotDirStat: 
snapshots) {<a name="line.603"></a>
-<span class="sourceLineNo">604</span>      HBaseProtos.SnapshotDescription 
snapshotDesc =<a name="line.604"></a>
-<span class="sourceLineNo">605</span>          
SnapshotDescriptionUtils.readSnapshotInfo(fs, snapshotDirStat.getPath());<a 
name="line.605"></a>
-<span class="sourceLineNo">606</span>      
snapshotLists.add(ProtobufUtil.createSnapshotDesc(snapshotDesc));<a 
name="line.606"></a>
-<span class="sourceLineNo">607</span>    }<a name="line.607"></a>
-<span class="sourceLineNo">608</span>    return snapshotLists;<a 
name="line.608"></a>
-<span class="sourceLineNo">609</span>  }<a name="line.609"></a>
-<span class="sourceLineNo">610</span><a name="line.610"></a>
-<span class="sourceLineNo">611</span>  /**<a name="line.611"></a>
-<span class="sourceLineNo">612</span>   * Gets the store files map for 
snapshot<a name="line.612"></a>
-<span class="sourceLineNo">613</span>   * @param conf the {@link 
Configuration} to use<a name="line.613"></a>
-<span class="sourceLineNo">614</span>   * @param snapshot {@link 
SnapshotDescription} to get stats from<a name="line.614"></a>
-<span class="sourceLineNo">615</span>   * @param exec the {@link 
ExecutorService} to use<a name="line.615"></a>
-<span class="sourceLineNo">616</span>   * @param filesMap {@link Map} the map 
to put the mapping entries<a name="line.616"></a>
-<span class="sourceLineNo">617</span>   * @param uniqueHFilesArchiveSize 
{@link AtomicLong} the accumulated store file size in archive<a 
name="line.617"></a>
-<span class="sourceLineNo">618</span>   * @param uniqueHFilesSize {@link 
AtomicLong} the accumulated store file size shared<a name="line.618"></a>
-<span class="sourceLineNo">619</span>   * @param uniqueHFilesMobSize {@link 
AtomicLong} the accumulated mob store file size shared<a name="line.619"></a>
-<span class="sourceLineNo">620</span>   * @return the snapshot stats<a 
name="line.620"></a>
-<span class="sourceLineNo">621</span>   */<a name="line.621"></a>
-<span class="sourceLineNo">622</span>  private static void 
getSnapshotFilesMap(final Configuration conf,<a name="line.622"></a>
-<span class="sourceLineNo">623</span>      final SnapshotDescription snapshot, 
final ExecutorService exec,<a name="line.623"></a>
-<span class="sourceLineNo">624</span>      final ConcurrentHashMap&lt;Path, 
Integer&gt; filesMap,<a name="line.624"></a>
-<span class="sourceLineNo">625</span>      final AtomicLong 
uniqueHFilesArchiveSize, final AtomicLong uniqueHFilesSize,<a 
name="line.625"></a>
-<span class="sourceLineNo">626</span>      final AtomicLong 
uniqueHFilesMobSize) throws IOException {<a name="line.626"></a>
-<span class="sourceLineNo">627</span>    HBaseProtos.SnapshotDescription 
snapshotDesc =<a name="line.627"></a>
-<span class="sourceLineNo">628</span>        
ProtobufUtil.createHBaseProtosSnapshotDesc(snapshot);<a name="line.628"></a>
-<span class="sourceLineNo">629</span>    Path rootDir = 
FSUtils.getRootDir(conf);<a name="line.629"></a>
-<span class="sourceLineNo">630</span>    final FileSystem fs = 
FileSystem.get(rootDir.toUri(), conf);<a name="line.630"></a>
-<span class="sourceLineNo">631</span><a name="line.631"></a>
-<span class="sourceLineNo">632</span>    Path snapshotDir = 
SnapshotDescriptionUtils.getCompletedSnapshotDir(snapshotDesc, rootDir);<a 
name="line.632"></a>
-<span class="sourceLineNo">633</span>    SnapshotManifest manifest = 
SnapshotManifest.open(conf, fs, snapshotDir, snapshotDesc);<a 
name="line.633"></a>
-<span class="sourceLineNo">634</span>    
SnapshotReferenceUtil.concurrentVisitReferencedFiles(conf, fs, manifest, 
exec,<a name="line.634"></a>
-<span class="sourceLineNo">635</span>        new 
SnapshotReferenceUtil.SnapshotVisitor() {<a name="line.635"></a>
-<span class="sourceLineNo">636</span>          @Override public void 
storeFile(final HRegionInfo regionInfo, final String family,<a 
name="line.636"></a>
-<span class="sourceLineNo">637</span>              final 
SnapshotRegionManifest.StoreFile storeFile) throws IOException {<a 
name="line.637"></a>
-<span class="sourceLineNo">638</span>            if 
(!storeFile.hasReference()) {<a name="line.638"></a>
-<span class="sourceLineNo">639</span>              HFileLink link = 
HFileLink.build(conf, snapshot.getTableName(),<a name="line.639"></a>
-<span class="sourceLineNo">640</span>                  
regionInfo.getEncodedName(), family, storeFile.getName());<a 
name="line.640"></a>
-<span class="sourceLineNo">641</span>              long size;<a 
name="line.641"></a>
-<span class="sourceLineNo">642</span>              Integer count;<a 
name="line.642"></a>
-<span class="sourceLineNo">643</span>              Path p;<a 
name="line.643"></a>
-<span class="sourceLineNo">644</span>              AtomicLong al;<a 
name="line.644"></a>
-<span class="sourceLineNo">645</span>              int c = 0;<a 
name="line.645"></a>
-<span class="sourceLineNo">646</span><a name="line.646"></a>
-<span class="sourceLineNo">647</span>              if 
(fs.exists(link.getArchivePath())) {<a name="line.647"></a>
-<span class="sourceLineNo">648</span>                p = 
link.getArchivePath();<a name="line.648"></a>
-<span class="sourceLineNo">649</span>                al = 
uniqueHFilesArchiveSize;<a name="line.649"></a>
-<span class="sourceLineNo">650</span>                size = 
fs.getFileStatus(p).getLen();<a name="line.650"></a>
-<span class="sourceLineNo">651</span>              } else if 
(fs.exists(link.getMobPath())) {<a name="line.651"></a>
-<span class="sourceLineNo">652</span>                p = link.getMobPath();<a 
name="line.652"></a>
-<span class="sourceLineNo">653</span>                al = 
uniqueHFilesMobSize;<a name="line.653"></a>
-<span class="sourceLineNo">654</span>                size = 
fs.getFileStatus(p).getLen();<a name="line.654"></a>
-<span class="sourceLineNo">655</span>              } else {<a 
name="line.655"></a>
-<span class="sourceLineNo">656</span>                p = 
link.getOriginPath();<a name="line.656"></a>
-<span class="sourceLineNo">657</span>                al = uniqueHFilesSize;<a 
name="line.657"></a>
-<span class="sourceLineNo">658</span>                size = 
link.getFileStatus(fs).getLen();<a name="line.658"></a>
-<span class="sourceLineNo">659</span>              }<a name="line.659"></a>
-<span class="sourceLineNo">660</span><a name="line.660"></a>
-<span class="sourceLineNo">661</span>              // If it has been counted, 
do not double count<a name="line.661"></a>
-<span class="sourceLineNo">662</span>              count = filesMap.get(p);<a 
name="line.662"></a>
-<span class="sourceLineNo">663</span>              if (count != null) {<a 
name="line.663"></a>
-<span class="sourceLineNo">664</span>                c = count.intValue();<a 
name="line.664"></a>
-<span class="sourceLineNo">665</span>              } else {<a 
name="line.665"></a>
-<span class="sourceLineNo">666</span>                al.addAndGet(size);<a 
name="line.666"></a>
-<span class="sourceLineNo">667</span>              }<a name="line.667"></a>
-<span class="sourceLineNo">668</span><a name="line.668"></a>
-<span class="sourceLineNo">669</span>              filesMap.put(p, ++c);<a 
name="line.669"></a>
-<span class="sourceLineNo">670</span>            }<a name="line.670"></a>
-<span class="sourceLineNo">671</span>          }<a name="line.671"></a>
-<span class="sourceLineNo">672</span>        });<a name="line.672"></a>
-<span class="sourceLineNo">673</span>  }<a name="line.673"></a>
-<span class="sourceLineNo">674</span><a name="line.674"></a>
-<span class="sourceLineNo">675</span>  /**<a name="line.675"></a>
-<span class="sourceLineNo">676</span>   * Returns the map of store files based 
on path for all snapshots<a name="line.676"></a>
-<span class="sourceLineNo">677</span>   * @param conf the {@link 
Configuration} to use<a name="line.677"></a>
-<span class="sourceLineNo">678</span>   * @param uniqueHFilesArchiveSize pass 
out the size for store files in archive<a name="line.678"></a>
-<span class="sourceLineNo">679</span>   * @param uniqueHFilesSize pass out the 
size for store files shared<a name="line.679"></a>
-<span class="sourceLineNo">680</span>   * @param uniqueHFilesMobSize pass out 
the size for mob store files shared<a name="line.680"></a>
-<span class="sourceLineNo">681</span>   * @return the map of store files<a 
name="line.681"></a>
-<span class="sourceLineNo">682</span>   */<a name="line.682"></a>
-<span class="sourceLineNo">683</span>  public static Map&lt;Path, Integer&gt; 
getSnapshotsFilesMap(final Configuration conf,<a name="line.683"></a>
-<span class="sourceLineNo">684</span>      AtomicLong uniqueHFilesArchiveSize, 
AtomicLong uniqueHFilesSize,<a name="line.684"></a>
-<span class="sourceLineNo">685</span>      AtomicLong uniqueHFilesMobSize) 
throws IOException {<a name="line.685"></a>
-<span class="sourceLineNo">686</span>    List&lt;SnapshotDescription&gt; 
snapshotList = getSnapshotList(conf);<a name="line.686"></a>
+<span class="sourceLineNo">601</span>    List&lt;SnapshotDescription&gt; 
snapshotLists = new ArrayList&lt;&gt;(snapshots.length);<a name="line.601"></a>
+<span class="sourceLineNo">602</span>    for (FileStatus snapshotDirStat: 
snapshots) {<a name="line.602"></a>
+<span class="sourceLineNo">603</span>      HBaseProtos.SnapshotDescription 
snapshotDesc =<a name="line.603"></a>
+<span class="sourceLineNo">604</span>          
SnapshotDescriptionUtils.readSnapshotInfo(fs, snapshotDirStat.getPath());<a 
name="line.604"></a>
+<span class="sourceLineNo">605</span>      
snapshotLists.add(ProtobufUtil.createSnapshotDesc(snapshotDesc));<a 
name="line.605"></a>
+<span class="sourceLineNo">606</span>    }<a name="line.606"></a>
+<span class="sourceLineNo">607</span>    return snapshotLists;<a 
name="line.607"></a>
+<span class="sourceLineNo">608</span>  }<a name="line.608"></a>
+<span class="sourceLineNo">609</span><a name="line.609"></a>
+<span class="sourceLineNo">610</span>  /**<a name="line.610"></a>
+<span class="sourceLineNo">611</span>   * Gets the store files map for 
snapshot<a name="line.611"></a>
+<span class="sourceLineNo">612</span>   * @param conf the {@link 
Configuration} to use<a name="line.612"></a>
+<span class="sourceLineNo">613</span>   * @param snapshot {@link 
SnapshotDescription} to get stats from<a name="line.613"></a>
+<span class="sourceLineNo">614</span>   * @param exec the {@link 
ExecutorService} to use<a name="line.614"></a>
+<span class="sourceLineNo">615</span>   * @param filesMap {@link Map} the map 
to put the mapping entries<a name="line.615"></a>
+<span class="sourceLineNo">616</span>   * @param uniqueHFilesArchiveSize 
{@link AtomicLong} the accumulated store file size in archive<a 
name="line.616"></a>
+<span class="sourceLineNo">617</span>   * @param uniqueHFilesSize {@link 
AtomicLong} the accumulated store file size shared<a name="line.617"></a>
+<span class="sourceLineNo">618</span>   * @param uniqueHFilesMobSize {@link 
AtomicLong} the accumulated mob store file size shared<a name="line.618"></a>
+<span class="sourceLineNo">619</span>   * @return the snapshot stats<a 
name="line.619"></a>
+<span class="sourceLineNo">620</span>   */<a name="line.620"></a>
+<span class="sourceLineNo">621</span>  private static void 
getSnapshotFilesMap(final Configuration conf,<a name="line.621"></a>
+<span class="sourceLineNo">622</span>      final SnapshotDescription snapshot, 
final ExecutorService exec,<a name="line.622"></a>
+<span class="sourceLineNo">623</span>      final ConcurrentHashMap&lt;Path, 
Integer&gt; filesMap,<a name="line.623"></a>
+<span class="sourceLineNo">624</span>      final AtomicLong 
uniqueHFilesArchiveSize, final AtomicLong uniqueHFilesSize,<a 
name="line.624"></a>
+<span class="sourceLineNo">625</span>      final AtomicLong 
uniqueHFilesMobSize) throws IOException {<a name="line.625"></a>
+<span class="sourceLineNo">626</span>    HBaseProtos.SnapshotDescription 
snapshotDesc =<a name="line.626"></a>
+<span class="sourceLineNo">627</span>        
ProtobufUtil.createHBaseProtosSnapshotDesc(snapshot);<a name="line.627"></a>
+<span class="sourceLineNo">628</span>    Path rootDir = 
FSUtils.getRootDir(conf);<a name="line.628"></a>
+<span class="sourceLineNo">629</span>    final FileSystem fs = 
FileSystem.get(rootDir.toUri(), conf);<a name="line.629"></a>
+<span class="sourceLineNo">630</span><a name="line.630"></a>
+<span class="sourceLineNo">631</span>    Path snapshotDir = 
SnapshotDescriptionUtils.getCompletedSnapshotDir(snapshotDesc, rootDir);<a 
name="line.631"></a>
+<span class="sourceLineNo">632</span>    SnapshotManifest manifest = 
SnapshotManifest.open(conf, fs, snapshotDir, snapshotDesc);<a 
name="line.632"></a>
+<span class="sourceLineNo">633</span>    
SnapshotReferenceUtil.concurrentVisitReferencedFiles(conf, fs, manifest, 
exec,<a name="line.633"></a>
+<span class="sourceLineNo">634</span>        new 
SnapshotReferenceUtil.SnapshotVisitor() {<a name="line.634"></a>
+<span class="sourceLineNo">635</span>          @Override public void 
storeFile(final HRegionInfo regionInfo, final String family,<a 
name="line.635"></a>
+<span class="sourceLineNo">636</span>              final 
SnapshotRegionManifest.StoreFile storeFile) throws IOException {<a 
name="line.636"></a>
+<span class="sourceLineNo">637</span>            if 
(!storeFile.hasReference()) {<a name="line.637"></a>
+<span class="sourceLineNo">638</span>              HFileLink link = 
HFileLink.build(conf, snapshot.getTableName(),<a name="line.638"></a>
+<span class="sourceLineNo">639</span>                  
regionInfo.getEncodedName(), family, storeFile.getName());<a 
name="line.639"></a>
+<span class="sourceLineNo">640</span>              long size;<a 
name="line.640"></a>
+<span class="sourceLineNo">641</span>              Integer count;<a 
name="line.641"></a>
+<span class="sourceLineNo">642</span>              Path p;<a 
name="line.642"></a>
+<span class="sourceLineNo">643</span>              AtomicLong al;<a 
name="line.643"></a>
+<span class="sourceLineNo">644</span>              int c = 0;<a 
name="line.644"></a>
+<span class="sourceLineNo">645</span><a name="line.645"></a>
+<span class="sourceLineNo">646</span>              if 
(fs.exists(link.getArchivePath())) {<a name="line.646"></a>
+<span class="sourceLineNo">647</span>                p = 
link.getArchivePath();<a name="line.647"></a>
+<span class="sourceLineNo">648</span>                al = 
uniqueHFilesArchiveSize;<a name="line.648"></a>
+<span class="sourceLineNo">649</span>                size = 
fs.getFileStatus(p).getLen();<a name="line.649"></a>
+<span class="sourceLineNo">650</span>              } else if 
(fs.exists(link.getMobPath())) {<a name="line.650"></a>
+<span class="sourceLineNo">651</span>                p = link.getMobPath();<a 
name="line.651"></a>
+<span class="sourceLineNo">652</span>                al = 
uniqueHFilesMobSize;<a name="line.652"></a>
+<span class="sourceLineNo">653</span>                size = 
fs.getFileStatus(p).getLen();<a name="line.653"></a>
+<span class="sourceLineNo">654</span>              } else {<a 
name="line.654"></a>
+<span class="sourceLineNo">655</span>                p = 
link.getOriginPath();<a name="line.655"></a>
+<span class="sourceLineNo">656</span>                al = uniqueHFilesSize;<a 
name="line.656"></a>
+<span class="sourceLineNo">657</span>                size = 
link.getFileStatus(fs).getLen();<a name="line.657"></a>
+<span class="sourceLineNo">658</span>              }<a name="line.658"></a>
+<span class="sourceLineNo">659</span><a name="line.659"></a>
+<span class="sourceLineNo">660</span>              // If it has been counted, 
do not double count<a name="line.660"></a>
+<span class="sourceLineNo">661</span>              count = filesMap.get(p);<a 
name="line.661"></a>
+<span class="sourceLineNo">662</span>              if (count != null) {<a 
name="line.662"></a>
+<span class="sourceLineNo">663</span>                c = count.intValue();<a 
name="line.663"></a>
+<span class="sourceLineNo">664</span>              } else {<a 
name="line.664"></a>
+<span class="sourceLineNo">665</span>                al.addAndGet(size);<a 
name="line.665"></a>
+<span class="sourceLineNo">666</span>              }<a name="line.666"></a>
+<span class="sourceLineNo">667</span><a name="line.667"></a>
+<span class="sourceLineNo">668</span>              filesMap.put(p, ++c);<a 
name="line.668"></a>
+<span class="sourceLineNo">669</span>            }<a name="line.669"></a>
+<span class="sourceLineNo">670</span>          }<a name="line.670"></a>
+<span class="sourceLineNo">671</span>        });<a name="line.671"></a>
+<span class="sourceLineNo">672</span>  }<a name="line.672"></a>
+<span class="sourceLineNo">673</span><a name="line.673"></a>
+<span class="sourceLineNo">674</span>  /**<a name="line.674"></a>
+<span class="sourceLineNo">675</span>   * Returns the map of store files based 
on path for all snapshots<a name="line.675"></a>
+<span class="sourceLineNo">676</span>   * @param conf the {@link 
Configuration} to use<a name="line.676"></a>
+<span class="sourceLineNo">677</span>   * @param uniqueHFilesArchiveSize pass 
out the size for store files in archive<a name="line.677"></a>
+<span class="sourceLineNo">678</span>   * @param uniqueHFilesSize pass out the 
size for store files shared<a name="line.678"></a>
+<span class="sourceLineNo">679</span>   * @param uniqueHFilesMobSize pass out 
the size for mob store files shared<a name="line.679"></a>
+<span class="sourceLineNo">680</span>   * @return the map of store files<a 
name="line.680"></a>
+<span class="sourceLineNo">681</span>   */<a name="line.681"></a>
+<span class="sourceLineNo">682</span>  public static Map&lt;Path, Integer&gt; 
getSnapshotsFilesMap(final Configuration conf,<a name="line.682"></a>
+<span class="sourceLineNo">683</span>      AtomicLong uniqueHFilesArchiveSize, 
AtomicLong uniqueHFilesSize,<a name="line.683"></a>
+<span class="sourceLineNo">684</span>      AtomicLong uniqueHFilesMobSize) 
throws IOException {<a name="line.684"></a>
+<span class="sourceLineNo">685</span>    List&lt;SnapshotDescription&gt; 
snapshotList = getSnapshotList(conf);<a name="line.685"></a>
+<span class="sourceLineNo">686</span><a name="line.686"></a>
 <span class="sourceLineNo">687</span><a name="line.687"></a>
-<span class="sourceLineNo">688</span><a name="line.688"></a>
-<span class="sourceLineNo">689</span>    if (snapshotList.isEmpty()) {<a 
name="line.689"></a>
-<span class="sourceLineNo">690</span>      return Collections.emptyMap();<a 
name="line.690"></a>
-<span class="sourceLineNo">691</span>    }<a name="line.691"></a>
-<span class="sourceLineNo">692</span><a name="line.692"></a>
-<span class="sourceLineNo">693</span>    ConcurrentHashMap&lt;Path, 
Integer&gt; fileMap = new ConcurrentHashMap&lt;&gt;();<a name="line.693"></a>
-<span class="sourceLineNo">694</span><a name="line.694"></a>
-<span class="sourceLineNo">695</span>    ExecutorService exec = 
SnapshotManifest.createExecutor(conf, "SnapshotsFilesMapping");<a 
name="line.695"></a>
-<span class="sourceLineNo">696</span><a name="line.696"></a>
-<span class="sourceLineNo">697</span>    try {<a name="line.697"></a>
-<span class="sourceLineNo">698</span>      for (final SnapshotDescription 
snapshot : snapshotList) {<a name="line.698"></a>
-<span class="sourceLineNo">699</span>        getSnapshotFilesMap(conf, 
snapshot, exec, fileMap, uniqueHFilesArchiveSize,<a name="line.699"></a>
-<span class="sourceLineNo">700</span>            uniqueHFilesSize, 
uniqueHFilesMobSize);<a name="line.700"></a>
-<span class="sourceLineNo">701</span>      }<a name="line.701"></a>
-<span class="sourceLineNo">702</span>    } finally {<a name="line.702"></a>
-<span class="sourceLineNo">703</span>      exec.shutdown();<a 
name="line.703"></a>
-<span class="sourceLineNo">704</span>    }<a name="line.704"></a>
-<span class="sourceLineNo">705</span><a name="line.705"></a>
-<span class="sourceLineNo">706</span>    return fileMap;<a name="line.706"></a>
-<span class="sourceLineNo">707</span>  }<a name="line.707"></a>
+<span class="sourceLineNo">688</span>    if (snapshotList.isEmpty()) {<a 
name="line.688"></a>
+<span class="sourceLineNo">689</span>      return Collections.emptyMap();<a 
name="line.689"></a>
+<span class="sourceLineNo">690</span>    }<a name="line.690"></a>
+<span class="sourceLineNo">691</span><a name="line.691"></a>
+<span class="sourceLineNo">692</span>    ConcurrentHashMap&lt;Path, 
Integer&gt; fileMap = new ConcurrentHashMap&lt;&gt;();<a name="line.692"></a>
+<span class="sourceLineNo">693</span><a name="line.693"></a>
+<span class="sourceLineNo">694</span>    ExecutorService exec = 
SnapshotManifest.createExecutor(conf, "SnapshotsFilesMapping");<a 
name="line.694"></a>
+<span class="sourceLineNo">695</span><a name="line.695"></a>
+<span class="sourceLineNo">696</span>    try {<a name="line.696"></a>
+<span class="sourceLineNo">697</span>      for (final SnapshotDescription 
snapshot : snapshotList) {<a name="line.697"></a>
+<span class="sourceLineNo">698</span>        getSnapshotFilesMap(conf, 
snapshot, exec, fileMap, uniqueHFilesArchiveSize,<a name="line.698"></a>
+<span class="sourceLineNo">699</span>            uniqueHFilesSize, 
uniqueHFilesMobSize);<a name="line.699"></a>
+<span class="sourceLineNo">700</span>      }<a name="line.700"></a>
+<span class="sourceLineNo">701</span>    } finally {<a name="line.701"></a>
+<span class="sourceLineNo">702</span>      exec.shutdown();<a 
name="line.702"></a>
+<span class="sourceLineNo">703</span>    }<a name="line.703"></a>
+<span class="sourceLineNo">704</span><a name="line.704"></a>
+<span class="sourceLineNo">705</span>    return fileMap;<a name="line.705"></a>
+<span class="sourceLineNo">706</span>  }<a name="line.706"></a>
+<span class="sourceLineNo">707</span><a name="line.707"></a>
 <span class="sourceLineNo">708</span><a name="line.708"></a>
-<span class="sourceLineNo">709</span><a name="line.709"></a>
-<span class="sourceLineNo">710</span>  public static void main(String[] args) 
{<a name="line.710"></a>
-<span class="sourceLineNo">711</span>    new 
SnapshotInfo().doStaticMain(args);<a name="line.711"></a>
-<span class="sourceLineNo">712</span>  }<a name="line.712"></a>
-<span class="sourceLineNo">713</span>}<a name="line.713"></a>
+<span class="sourceLineNo">709</span>  public static void main(String[] args) 
{<a name="line.709"></a>
+<span class="sourceLineNo">710</span>    new 
SnapshotInfo().doStaticMain(args);<a name="line.710"></a>
+<span class="sourceLineNo">711</span>  }<a name="line.711"></a>
+<span class="sourceLineNo">712</span>}<a name="line.712"></a>
 
 
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/22cff34f/apidocs/src-html/org/apache/hadoop/hbase/types/StructBuilder.html
----------------------------------------------------------------------
diff --git a/apidocs/src-html/org/apache/hadoop/hbase/types/StructBuilder.html 
b/apidocs/src-html/org/apache/hadoop/hbase/types/StructBuilder.html
index e22a251..81d9266 100644
--- a/apidocs/src-html/org/apache/hadoop/hbase/types/StructBuilder.html
+++ b/apidocs/src-html/org/apache/hadoop/hbase/types/StructBuilder.html
@@ -38,7 +38,7 @@
 <span class="sourceLineNo">030</span>@InterfaceStability.Evolving<a 
name="line.30"></a>
 <span class="sourceLineNo">031</span>public class StructBuilder {<a 
name="line.31"></a>
 <span class="sourceLineNo">032</span><a name="line.32"></a>
-<span class="sourceLineNo">033</span>  protected final 
List&lt;DataType&lt;?&gt;&gt; fields = new 
ArrayList&lt;DataType&lt;?&gt;&gt;();<a name="line.33"></a>
+<span class="sourceLineNo">033</span>  protected final 
List&lt;DataType&lt;?&gt;&gt; fields = new ArrayList&lt;&gt;();<a 
name="line.33"></a>
 <span class="sourceLineNo">034</span><a name="line.34"></a>
 <span class="sourceLineNo">035</span>  /**<a name="line.35"></a>
 <span class="sourceLineNo">036</span>   * Create an empty {@code 
StructBuilder}.<a name="line.36"></a>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/22cff34f/apidocs/src-html/org/apache/hadoop/hbase/util/ByteRangeUtils.html
----------------------------------------------------------------------
diff --git a/apidocs/src-html/org/apache/hadoop/hbase/util/ByteRangeUtils.html 
b/apidocs/src-html/org/apache/hadoop/hbase/util/ByteRangeUtils.html
index f6d2601..91f2d1c 100644
--- a/apidocs/src-html/org/apache/hadoop/hbase/util/ByteRangeUtils.html
+++ b/apidocs/src-html/org/apache/hadoop/hbase/util/ByteRangeUtils.html
@@ -57,7 +57,7 @@
 <span class="sourceLineNo">049</span><a name="line.49"></a>
 <span class="sourceLineNo">050</span>  public static ArrayList&lt;byte[]&gt; 
copyToNewArrays(Collection&lt;ByteRange&gt; ranges) {<a name="line.50"></a>
 <span class="sourceLineNo">051</span>    if (ranges == null) {<a 
name="line.51"></a>
-<span class="sourceLineNo">052</span>      return new 
ArrayList&lt;byte[]&gt;(0);<a name="line.52"></a>
+<span class="sourceLineNo">052</span>      return new ArrayList&lt;&gt;(0);<a 
name="line.52"></a>
 <span class="sourceLineNo">053</span>    }<a name="line.53"></a>
 <span class="sourceLineNo">054</span>    ArrayList&lt;byte[]&gt; arrays = 
Lists.newArrayListWithCapacity(ranges.size());<a name="line.54"></a>
 <span class="sourceLineNo">055</span>    for (ByteRange range : ranges) {<a 
name="line.55"></a>
@@ -68,7 +68,7 @@
 <span class="sourceLineNo">060</span><a name="line.60"></a>
 <span class="sourceLineNo">061</span>  public static 
ArrayList&lt;ByteRange&gt; fromArrays(Collection&lt;byte[]&gt; arrays) {<a 
name="line.61"></a>
 <span class="sourceLineNo">062</span>    if (arrays == null) {<a 
name="line.62"></a>
-<span class="sourceLineNo">063</span>      return new 
ArrayList&lt;ByteRange&gt;(0);<a name="line.63"></a>
+<span class="sourceLineNo">063</span>      return new ArrayList&lt;&gt;(0);<a 
name="line.63"></a>
 <span class="sourceLineNo">064</span>    }<a name="line.64"></a>
 <span class="sourceLineNo">065</span>    ArrayList&lt;ByteRange&gt; ranges = 
Lists.newArrayListWithCapacity(arrays.size());<a name="line.65"></a>
 <span class="sourceLineNo">066</span>    for (byte[] array : arrays) {<a 
name="line.66"></a>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/22cff34f/apidocs/src-html/org/apache/hadoop/hbase/util/Counter.html
----------------------------------------------------------------------
diff --git a/apidocs/src-html/org/apache/hadoop/hbase/util/Counter.html 
b/apidocs/src-html/org/apache/hadoop/hbase/util/Counter.html
index 9eaa194..fb1cd2e 100644
--- a/apidocs/src-html/org/apache/hadoop/hbase/util/Counter.html
+++ b/apidocs/src-html/org/apache/hadoop/hbase/util/Counter.html
@@ -102,7 +102,7 @@
 <span class="sourceLineNo">094</span>  }<a name="line.94"></a>
 <span class="sourceLineNo">095</span><a name="line.95"></a>
 <span class="sourceLineNo">096</span>  private Counter(Cell initCell) {<a 
name="line.96"></a>
-<span class="sourceLineNo">097</span>    containerRef = new 
AtomicReference&lt;Container&gt;(new Container(initCell));<a name="line.97"></a>
+<span class="sourceLineNo">097</span>    containerRef = new 
AtomicReference&lt;&gt;(new Container(initCell));<a name="line.97"></a>
 <span class="sourceLineNo">098</span>  }<a name="line.98"></a>
 <span class="sourceLineNo">099</span><a name="line.99"></a>
 <span class="sourceLineNo">100</span>  private static int hash() {<a 
name="line.100"></a>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/22cff34f/apidocs/src-html/org/apache/hadoop/hbase/util/EncryptionTest.html
----------------------------------------------------------------------
diff --git a/apidocs/src-html/org/apache/hadoop/hbase/util/EncryptionTest.html 
b/apidocs/src-html/org/apache/hadoop/hbase/util/EncryptionTest.html
index b719325..580ed2a 100644
--- a/apidocs/src-html/org/apache/hadoop/hbase/util/EncryptionTest.html
+++ b/apidocs/src-html/org/apache/hadoop/hbase/util/EncryptionTest.html
@@ -48,122 +48,121 @@
 <span class="sourceLineNo">040</span>public class EncryptionTest {<a 
name="line.40"></a>
 <span class="sourceLineNo">041</span>  private static final Log LOG = 
LogFactory.getLog(EncryptionTest.class);<a name="line.41"></a>
 <span class="sourceLineNo">042</span><a name="line.42"></a>
-<span class="sourceLineNo">043</span>  static final Map&lt;String, Boolean&gt; 
keyProviderResults = new ConcurrentHashMap&lt;String, Boolean&gt;();<a 
name="line.43"></a>
-<span class="sourceLineNo">044</span>  static final Map&lt;String, Boolean&gt; 
cipherProviderResults =<a name="line.44"></a>
-<span class="sourceLineNo">045</span>    new ConcurrentHashMap&lt;String, 
Boolean&gt;();<a name="line.45"></a>
-<span class="sourceLineNo">046</span>  static final Map&lt;String, Boolean&gt; 
cipherResults = new ConcurrentHashMap&lt;String, Boolean&gt;();<a 
name="line.46"></a>
-<span class="sourceLineNo">047</span><a name="line.47"></a>
-<span class="sourceLineNo">048</span>  private EncryptionTest() {<a 
name="line.48"></a>
-<span class="sourceLineNo">049</span>  }<a name="line.49"></a>
-<span class="sourceLineNo">050</span><a name="line.50"></a>
-<span class="sourceLineNo">051</span>  /**<a name="line.51"></a>
-<span class="sourceLineNo">052</span>   * Check that the configured key 
provider can be loaded and initialized, or<a name="line.52"></a>
-<span class="sourceLineNo">053</span>   * throw an exception.<a 
name="line.53"></a>
-<span class="sourceLineNo">054</span>   *<a name="line.54"></a>
-<span class="sourceLineNo">055</span>   * @param conf<a name="line.55"></a>
-<span class="sourceLineNo">056</span>   * @throws IOException<a 
name="line.56"></a>
-<span class="sourceLineNo">057</span>   */<a name="line.57"></a>
-<span class="sourceLineNo">058</span>  public static void 
testKeyProvider(final Configuration conf) throws IOException {<a 
name="line.58"></a>
-<span class="sourceLineNo">059</span>    String providerClassName = 
conf.get(HConstants.CRYPTO_KEYPROVIDER_CONF_KEY,<a name="line.59"></a>
-<span class="sourceLineNo">060</span>      
KeyStoreKeyProvider.class.getName());<a name="line.60"></a>
-<span class="sourceLineNo">061</span>    Boolean result = 
keyProviderResults.get(providerClassName);<a name="line.61"></a>
-<span class="sourceLineNo">062</span>    if (result == null) {<a 
name="line.62"></a>
-<span class="sourceLineNo">063</span>      try {<a name="line.63"></a>
-<span class="sourceLineNo">064</span>        
Encryption.getKeyProvider(conf);<a name="line.64"></a>
-<span class="sourceLineNo">065</span>        
keyProviderResults.put(providerClassName, true);<a name="line.65"></a>
-<span class="sourceLineNo">066</span>      } catch (Exception e) { // most 
likely a RuntimeException<a name="line.66"></a>
-<span class="sourceLineNo">067</span>        
keyProviderResults.put(providerClassName, false);<a name="line.67"></a>
-<span class="sourceLineNo">068</span>        throw new IOException("Key 
provider " + providerClassName + " failed test: " +<a name="line.68"></a>
-<span class="sourceLineNo">069</span>          e.getMessage(), e);<a 
name="line.69"></a>
-<span class="sourceLineNo">070</span>      }<a name="line.70"></a>
-<span class="sourceLineNo">071</span>    } else if (result.booleanValue() == 
false) {<a name="line.71"></a>
-<span class="sourceLineNo">072</span>      throw new IOException("Key provider 
" + providerClassName + " previously failed test");<a name="line.72"></a>
-<span class="sourceLineNo">073</span>    }<a name="line.73"></a>
-<span class="sourceLineNo">074</span>  }<a name="line.74"></a>
-<span class="sourceLineNo">075</span><a name="line.75"></a>
-<span class="sourceLineNo">076</span>  /**<a name="line.76"></a>
-<span class="sourceLineNo">077</span>   * Check that the configured cipher 
provider can be loaded and initialized, or<a name="line.77"></a>
-<span class="sourceLineNo">078</span>   * throw an exception.<a 
name="line.78"></a>
-<span class="sourceLineNo">079</span>   *<a name="line.79"></a>
-<span class="sourceLineNo">080</span>   * @param conf<a name="line.80"></a>
-<span class="sourceLineNo">081</span>   * @throws IOException<a 
name="line.81"></a>
-<span class="sourceLineNo">082</span>   */<a name="line.82"></a>
-<span class="sourceLineNo">083</span>  public static void 
testCipherProvider(final Configuration conf) throws IOException {<a 
name="line.83"></a>
-<span class="sourceLineNo">084</span>    String providerClassName = 
conf.get(HConstants.CRYPTO_CIPHERPROVIDER_CONF_KEY,<a name="line.84"></a>
-<span class="sourceLineNo">085</span>      
DefaultCipherProvider.class.getName());<a name="line.85"></a>
-<span class="sourceLineNo">086</span>    Boolean result = 
cipherProviderResults.get(providerClassName);<a name="line.86"></a>
-<span class="sourceLineNo">087</span>    if (result == null) {<a 
name="line.87"></a>
-<span class="sourceLineNo">088</span>      try {<a name="line.88"></a>
-<span class="sourceLineNo">089</span>        
Encryption.getCipherProvider(conf);<a name="line.89"></a>
-<span class="sourceLineNo">090</span>        
cipherProviderResults.put(providerClassName, true);<a name="line.90"></a>
-<span class="sourceLineNo">091</span>      } catch (Exception e) { // most 
likely a RuntimeException<a name="line.91"></a>
-<span class="sourceLineNo">092</span>        
cipherProviderResults.put(providerClassName, false);<a name="line.92"></a>
-<span class="sourceLineNo">093</span>        throw new IOException("Cipher 
provider " + providerClassName + " failed test: " +<a name="line.93"></a>
-<span class="sourceLineNo">094</span>          e.getMessage(), e);<a 
name="line.94"></a>
-<span class="sourceLineNo">095</span>      }<a name="line.95"></a>
-<span class="sourceLineNo">096</span>    } else if (result.booleanValue() == 
false) {<a name="line.96"></a>
-<span class="sourceLineNo">097</span>      throw new IOException("Cipher 
provider " + providerClassName + " previously failed test");<a 
name="line.97"></a>
-<span class="sourceLineNo">098</span>    }<a name="line.98"></a>
-<span class="sourceLineNo">099</span>  }<a name="line.99"></a>
-<span class="sourceLineNo">100</span><a name="line.100"></a>
-<span class="sourceLineNo">101</span>  /**<a name="line.101"></a>
-<span class="sourceLineNo">102</span>   * Check that the specified cipher can 
be loaded and initialized, or throw<a name="line.102"></a>
-<span class="sourceLineNo">103</span>   * an exception. Verifies key and 
cipher provider configuration as a<a name="line.103"></a>
-<span class="sourceLineNo">104</span>   * prerequisite for cipher 
verification.<a name="line.104"></a>
-<span class="sourceLineNo">105</span>   *<a name="line.105"></a>
-<span class="sourceLineNo">106</span>   * @param conf<a name="line.106"></a>
-<span class="sourceLineNo">107</span>   * @param cipher<a name="line.107"></a>
-<span class="sourceLineNo">108</span>   * @param key<a name="line.108"></a>
-<span class="sourceLineNo">109</span>   * @throws IOException<a 
name="line.109"></a>
-<span class="sourceLineNo">110</span>   */<a name="line.110"></a>
-<span class="sourceLineNo">111</span>  public static void testEncryption(final 
Configuration conf, final String cipher,<a name="line.111"></a>
-<span class="sourceLineNo">112</span>      byte[] key) throws IOException {<a 
name="line.112"></a>
-<span class="sourceLineNo">113</span>    if (cipher == null) {<a 
name="line.113"></a>
-<span class="sourceLineNo">114</span>      return;<a name="line.114"></a>
-<span class="sourceLineNo">115</span>    }<a name="line.115"></a>
-<span class="sourceLineNo">116</span>    testKeyProvider(conf);<a 
name="line.116"></a>
-<span class="sourceLineNo">117</span>    testCipherProvider(conf);<a 
name="line.117"></a>
-<span class="sourceLineNo">118</span>    Boolean result = 
cipherResults.get(cipher);<a name="line.118"></a>
-<span class="sourceLineNo">119</span>    if (result == null) {<a 
name="line.119"></a>
-<span class="sourceLineNo">120</span>      try {<a name="line.120"></a>
-<span class="sourceLineNo">121</span>        Encryption.Context context = 
Encryption.newContext(conf);<a name="line.121"></a>
-<span class="sourceLineNo">122</span>        
context.setCipher(Encryption.getCipher(conf, cipher));<a name="line.122"></a>
-<span class="sourceLineNo">123</span>        if (key == null) {<a 
name="line.123"></a>
-<span class="sourceLineNo">124</span>          // Make a random key since one 
was not provided<a name="line.124"></a>
-<span class="sourceLineNo">125</span>          
context.setKey(context.getCipher().getRandomKey());<a name="line.125"></a>
-<span class="sourceLineNo">126</span>        } else {<a name="line.126"></a>
-<span class="sourceLineNo">127</span>          // This will be a wrapped key 
from schema<a name="line.127"></a>
-<span class="sourceLineNo">128</span>          
context.setKey(EncryptionUtil.unwrapKey(conf,<a name="line.128"></a>
-<span class="sourceLineNo">129</span>            
conf.get(HConstants.CRYPTO_MASTERKEY_NAME_CONF_KEY, "hbase"),<a 
name="line.129"></a>
-<span class="sourceLineNo">130</span>            key));<a name="line.130"></a>
-<span class="sourceLineNo">131</span>        }<a name="line.131"></a>
-<span class="sourceLineNo">132</span>        byte[] iv = null;<a 
name="line.132"></a>
-<span class="sourceLineNo">133</span>        if 
(context.getCipher().getIvLength() &gt; 0) {<a name="line.133"></a>
-<span class="sourceLineNo">134</span>          iv = new 
byte[context.getCipher().getIvLength()];<a name="line.134"></a>
-<span class="sourceLineNo">135</span>          Bytes.random(iv);<a 
name="line.135"></a>
-<span class="sourceLineNo">136</span>        }<a name="line.136"></a>
-<span class="sourceLineNo">137</span>        byte[] plaintext = new 
byte[1024];<a name="line.137"></a>
-<span class="sourceLineNo">138</span>        Bytes.random(plaintext);<a 
name="line.138"></a>
-<span class="sourceLineNo">139</span>        ByteArrayOutputStream out = new 
ByteArrayOutputStream();<a name="line.139"></a>
-<span class="sourceLineNo">140</span>        Encryption.encrypt(out, new 
ByteArrayInputStream(plaintext), context, iv);<a name="line.140"></a>
-<span class="sourceLineNo">141</span>        byte[] ciphertext = 
out.toByteArray();<a name="line.141"></a>
-<span class="sourceLineNo">142</span>        out.reset();<a 
name="line.142"></a>
-<span class="sourceLineNo">143</span>        Encryption.decrypt(out, new 
ByteArrayInputStream(ciphertext), plaintext.length,<a name="line.143"></a>
-<span class="sourceLineNo">144</span>          context, iv);<a 
name="line.144"></a>
-<span class="sourceLineNo">145</span>        byte[] test = 
out.toByteArray();<a name="line.145"></a>
-<span class="sourceLineNo">146</span>        if (!Bytes.equals(plaintext, 
test)) {<a name="line.146"></a>
-<span class="sourceLineNo">147</span>          throw new IOException("Did not 
pass encrypt/decrypt test");<a name="line.147"></a>
-<span class="sourceLineNo">148</span>        }<a name="line.148"></a>
-<span class="sourceLineNo">149</span>        cipherResults.put(cipher, 
true);<a name="line.149"></a>
-<span class="sourceLineNo">150</span>      } catch (Exception e) {<a 
name="line.150"></a>
-<span class="sourceLineNo">151</span>        cipherResults.put(cipher, 
false);<a name="line.151"></a>
-<span class="sourceLineNo">152</span>        throw new IOException("Cipher " + 
cipher + " failed test: " + e.getMessage(), e);<a name="line.152"></a>
-<span class="sourceLineNo">153</span>      }<a name="line.153"></a>
-<span class="sourceLineNo">154</span>    } else if (result.booleanValue() == 
false) {<a name="line.154"></a>
-<span class="sourceLineNo">155</span>      throw new IOException("Cipher " + 
cipher + " previously failed test");<a name="line.155"></a>
-<span class="sourceLineNo">156</span>    }<a name="line.156"></a>
-<span class="sourceLineNo">157</span>  }<a name="line.157"></a>
-<span class="sourceLineNo">158</span>}<a name="line.158"></a>
+<span class="sourceLineNo">043</span>  static final Map&lt;String, Boolean&gt; 
keyProviderResults = new ConcurrentHashMap&lt;&gt;();<a name="line.43"></a>
+<span class="sourceLineNo">044</span>  static final Map&lt;String, Boolean&gt; 
cipherProviderResults = new ConcurrentHashMap&lt;&gt;();<a name="line.44"></a>
+<span class="sourceLineNo">045</span>  static final Map&lt;String, Boolean&gt; 
cipherResults = new ConcurrentHashMap&lt;&gt;();<a name="line.45"></a>
+<span class="sourceLineNo">046</span><a name="line.46"></a>
+<span class="sourceLineNo">047</span>  private EncryptionTest() {<a 
name="line.47"></a>
+<span class="sourceLineNo">048</span>  }<a name="line.48"></a>
+<span class="sourceLineNo">049</span><a name="line.49"></a>
+<span class="sourceLineNo">050</span>  /**<a name="line.50"></a>
+<span class="sourceLineNo">051</span>   * Check that the configured key 
provider can be loaded and initialized, or<a name="line.51"></a>
+<span class="sourceLineNo">052</span>   * throw an exception.<a 
name="line.52"></a>
+<span class="sourceLineNo">053</span>   *<a name="line.53"></a>
+<span class="sourceLineNo">054</span>   * @param conf<a name="line.54"></a>
+<span class="sourceLineNo">055</span>   * @throws IOException<a 
name="line.55"></a>
+<span class="sourceLineNo">056</span>   */<a name="line.56"></a>
+<span class="sourceLineNo">057</span>  public static void 
testKeyProvider(final Configuration conf) throws IOException {<a 
name="line.57"></a>
+<span class="sourceLineNo">058</span>    String providerClassName = 
conf.get(HConstants.CRYPTO_KEYPROVIDER_CONF_KEY,<a name="line.58"></a>
+<span class="sourceLineNo">059</span>      
KeyStoreKeyProvider.class.getName());<a name="line.59"></a>
+<span class="sourceLineNo">060</span>    Boolean result = 
keyProviderResults.get(providerClassName);<a name="line.60"></a>
+<span class="sourceLineNo">061</span>    if (result == null) {<a 
name="line.61"></a>
+<span class="sourceLineNo">062</span>      try {<a name="line.62"></a>
+<span class="sourceLineNo">063</span>        
Encryption.getKeyProvider(conf);<a name="line.63"></a>
+<span class="sourceLineNo">064</span>        
keyProviderResults.put(providerClassName, true);<a name="line.64"></a>
+<span class="sourceLineNo">065</span>      } catch (Exception e) { // most 
likely a RuntimeException<a name="line.65"></a>
+<span class="sourceLineNo">066</span>        
keyProviderResults.put(providerClassName, false);<a name="line.66"></a>
+<span class="sourceLineNo">067</span>        throw new IOException("Key 
provider " + providerClassName + " failed test: " +<a name="line.67"></a>
+<span class="sourceLineNo">068</span>          e.getMessage(), e);<a 
name="line.68"></a>
+<span class="sourceLineNo">069</span>      }<a name="line.69"></a>
+<span class="sourceLineNo">070</span>    } else if (result.booleanValue() == 
false) {<a name="line.70"></a>
+<span class="sourceLineNo">071</span>      throw new IOException("Key provider 
" + providerClassName + " previously failed test");<a name="line.71"></a>
+<span class="sourceLineNo">072</span>    }<a name="line.72"></a>
+<span class="sourceLineNo">073</span>  }<a name="line.73"></a>
+<span class="sourceLineNo">074</span><a name="line.74"></a>
+<span class="sourceLineNo">075</span>  /**<a name="line.75"></a>
+<span class="sourceLineNo">076</span>   * Check that the configured cipher 
provider can be loaded and initialized, or<a name="line.76"></a>
+<span class="sourceLineNo">077</span>   * throw an exception.<a 
name="line.77"></a>
+<span class="sourceLineNo">078</span>   *<a name="line.78"></a>
+<span class="sourceLineNo">079</span>   * @param conf<a name="line.79"></a>
+<span class="sourceLineNo">080</span>   * @throws IOException<a 
name="line.80"></a>
+<span class="sourceLineNo">081</span>   */<a name="line.81"></a>
+<span class="sourceLineNo">082</span>  public static void 
testCipherProvider(final Configuration conf) throws IOException {<a 
name="line.82"></a>
+<span class="sourceLineNo">083</span>    String providerClassName = 
conf.get(HConstants.CRYPTO_CIPHERPROVIDER_CONF_KEY,<a name="line.83"></a>
+<span class="sourceLineNo">084</span>      
DefaultCipherProvider.class.getName());<a name="line.84"></a>
+<span class="sourceLineNo">085</span>    Boolean result = 
cipherProviderResults.get(providerClassName);<a name="line.85"></a>
+<span class="sourceLineNo">086</span>    if (result == null) {<a 
name="line.86"></a>
+<span class="sourceLineNo">087</span>      try {<a name="line.87"></a>
+<span class="sourceLineNo">088</span>        
Encryption.getCipherProvider(conf);<a name="line.88"></a>
+<span class="sourceLineNo">089</span>        
cipherProviderResults.put(providerClassName, true);<a name="line.89"></a>
+<span class="sourceLineNo">090</span>      } catch (Exception e) { // most 
likely a RuntimeException<a name="line.90"></a>
+<span class="sourceLineNo">091</span>        
cipherProviderResults.put(providerClassName, false);<a name="line.91"></a>
+<span class="sourceLineNo">092</span>        throw new IOException("Cipher 
provider " + providerClassName + " failed test: " +<a name="line.92"></a>
+<span class="sourceLineNo">093</span>          e.getMessage(), e);<a 
name="line.93"></a>
+<span class="sourceLineNo">094</span>      }<a name="line.94"></a>
+<span class="sourceLineNo">095</span>    } else if (result.booleanValue() == 
false) {<a name="line.95"></a>
+<span class="sourceLineNo">096</span>      throw new IOException("Cipher 
provider " + providerClassName + " previously failed test");<a 
name="line.96"></a>
+<span class="sourceLineNo">097</span>    }<a name="line.97"></a>
+<span class="sourceLineNo">098</span>  }<a name="line.98"></a>
+<span class="sourceLineNo">099</span><a name="line.99"></a>
+<span class="sourceLineNo">100</span>  /**<a name="line.100"></a>
+<span class="sourceLineNo">101</span>   * Check that the specified cipher can 
be loaded and initialized, or throw<a name="line.101"></a>
+<span class="sourceLineNo">102</span>   * an exception. Verifies key and 
cipher provider configuration as a<a name="line.102"></a>
+<span class="sourceLineNo">103</span>   * prerequisite for cipher 
verification.<a name="line.103"></a>
+<span class="sourceLineNo">104</span>   *<a name="line.104"></a>
+<span class="sourceLineNo">105</span>   * @param conf<a name="line.105"></a>
+<span class="sourceLineNo">106</span>   * @param cipher<a name="line.106"></a>
+<span class="sourceLineNo">107</span>   * @param key<a name="line.107"></a>
+<span class="sourceLineNo">108</span>   * @throws IOException<a 
name="line.108"></a>
+<span class="sourceLineNo">109</span>   */<a name="line.109"></a>
+<span class="sourceLineNo">110</span>  public static void testEncryption(final 
Configuration conf, final String cipher,<a name="line.110"></a>
+<span class="sourceLineNo">111</span>      byte[] key) throws IOException {<a 
name="line.111"></a>
+<span class="sourceLineNo">112</span>    if (cipher == null) {<a 
name="line.112"></a>
+<span class="sourceLineNo">113</span>      return;<a name="line.113"></a>
+<span class="sourceLineNo">114</span>    }<a name="line.114"></a>
+<span class="sourceLineNo">115</span>    testKeyProvider(conf);<a 
name="line.115"></a>
+<span class="sourceLineNo">116</span>    testCipherProvider(conf);<a 
name="line.116"></a>
+<span class="sourceLineNo">117</span>    Boolean result = 
cipherResults.get(cipher);<a name="line.117"></a>
+<span class="sourceLineNo">118</span>    if (result == null) {<a 
name="line.118"></a>
+<span class="sourceLineNo">119</span>      try {<a name="line.119"></a>
+<span class="sourceLineNo">120</span>        Encryption.Context context = 
Encryption.newContext(conf);<a name="line.120"></a>
+<span class="sourceLineNo">121</span>        
context.setCipher(Encryption.getCipher(conf, cipher));<a name="line.121"></a>
+<span class="sourceLineNo">122</span>        if (key == null) {<a 
name="line.122"></a>
+<span class="sourceLineNo">123</span>          // Make a random key since one 
was not provided<a name="line.123"></a>
+<span class="sourceLineNo">124</span>          
context.setKey(context.getCipher().getRandomKey());<a name="line.124"></a>
+<span class="sourceLineNo">125</span>        } else {<a name="line.125"></a>
+<span class="sourceLineNo">126</span>          // This will be a wrapped key 
from schema<a name="line.126"></a>
+<span class="sourceLineNo">127</span>          
context.setKey(EncryptionUtil.unwrapKey(conf,<a name="line.127"></a>
+<span class="sourceLineNo">128</span>            
conf.get(HConstants.CRYPTO_MASTERKEY_NAME_CONF_KEY, "hbase"),<a 
name="line.128"></a>
+<span class="sourceLineNo">129</span>            key));<a name="line.129"></a>
+<span class="sourceLineNo">130</span>        }<a name="line.130"></a>
+<span class="sourceLineNo">131</span>        byte[] iv = null;<a 
name="line.131"></a>
+<span class="sourceLineNo">132</span>        if 
(context.getCipher().getIvLength() &gt; 0) {<a name="line.132"></a>
+<span class="sourceLineNo">133</span>          iv = new 
byte[context.getCipher().getIvLength()];<a name="line.133"></a>
+<span class="sourceLineNo">134</span>          Bytes.random(iv);<a 
name="line.134"></a>
+<span class="sourceLineNo">135</span>        }<a name="line.135"></a>
+<span class="sourceLineNo">136</span>        byte[] plaintext = new 
byte[1024];<a name="line.136"></a>
+<span class="sourceLineNo">137</span>        Bytes.random(plaintext);<a 
name="line.137"></a>
+<span class="sourceLineNo">138</span>        ByteArrayOutputStream out = new 
ByteArrayOutputStream();<a name="line.138"></a>
+<span class="sourceLineNo">139</span>        Encryption.encrypt(out, new 
ByteArrayInputStream(plaintext), context, iv);<a name="line.139"></a>
+<span class="sourceLineNo">140</span>        byte[] ciphertext = 
out.toByteArray();<a name="line.140"></a>
+<span class="sourceLineNo">141</span>        out.reset();<a 
name="line.141"></a>
+<span class="sourceLineNo">142</span>        Encryption.decrypt(out, new 
ByteArrayInputStream(ciphertext), plaintext.length,<a name="line.142"></a>
+<span class="sourceLineNo">143</span>          context, iv);<a 
name="line.143"></a>
+<span class="sourceLineNo">144</span>        byte[] test = 
out.toByteArray();<a name="line.144"></a>
+<span class="sourceLineNo">145</span>        if (!Bytes.equals(plaintext, 
test)) {<a name="line.145"></a>
+<span class="sourceLineNo">146</span>          throw new IOException("Did not 
pass encrypt/decrypt test");<a name="line.146"></a>
+<span class="sourceLineNo">147</span>        }<a name="line.147"></a>
+<span class="sourceLineNo">148</span>        cipherResults.put(cipher, 
true);<a name="line.148"></a>
+<span class="sourceLineNo">149</span>      } catch (Exception e) {<a 
name="line.149"></a>
+<span class="sourceLineNo">150</span>        cipherResults.put(cipher, 
false);<a name="line.150"></a>
+<span class="sourceLineNo">151</span>        throw new IOException("Cipher " + 
cipher + " failed test: " + e.getMessage(), e);<a name="line.151"></a>
+<span class="sourceLineNo">152</span>      }<a name="line.152"></a>
+<span class="sourceLineNo">153</span>    } else if (result.booleanValue() == 
false) {<a name="line.153"></a>
+<span class="sourceLineNo">154</span>      throw new IOException("Cipher " + 
cipher + " previously failed test");<a name="line.154"></a>
+<span class="sourceLineNo">155</span>    }<a name="line.155"></a>
+<span class="sourceLineNo">156</span>  }<a name="line.156"></a>
+<span class="sourceLineNo">157</span>}<a name="line.157"></a>
 
 
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/22cff34f/apidocs/src-html/org/apache/hadoop/hbase/util/OrderedBytes.html
----------------------------------------------------------------------
diff --git a/apidocs/src-html/org/apache/hadoop/hbase/util/OrderedBytes.html 
b/apidocs/src-html/org/apache/hadoop/hbase/util/OrderedBytes.html
index 804d5fb..cd07094 100644
--- a/apidocs/src-html/org/apache/hadoop/hbase/util/OrderedBytes.html
+++ b/apidocs/src-html/org/apache/hadoop/hbase/util/OrderedBytes.html
@@ -349,7 +349,7 @@
 <span class="sourceLineNo">341</span><a name="line.341"></a>
 <span class="sourceLineNo">342</span>  /**<a name="line.342"></a>
 <span class="sourceLineNo">343</span>   * Perform unsigned comparison between 
two long values. Conforms to the same interface as<a name="line.343"></a>
-<span class="sourceLineNo">344</span>   * {@link Comparator#compare(Object, 
Object)}.<a name="line.344"></a>
+<span class="sourceLineNo">344</span>   * {@link 
org.apache.hadoop.hbase.CellComparator#COMPARATOR#compare(Object, Object)}.<a 
name="line.344"></a>
 <span class="sourceLineNo">345</span>   */<a name="line.345"></a>
 <span class="sourceLineNo">346</span>  private static int unsignedCmp(long x1, 
long x2) {<a name="line.346"></a>
 <span class="sourceLineNo">347</span>    int cmp;<a name="line.347"></a>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/22cff34f/apidocs/src-html/org/apache/hadoop/hbase/util/Pair.html
----------------------------------------------------------------------
diff --git a/apidocs/src-html/org/apache/hadoop/hbase/util/Pair.html 
b/apidocs/src-html/org/apache/hadoop/hbase/util/Pair.html
index 1fc3f98..dae63a9 100644
--- a/apidocs/src-html/org/apache/hadoop/hbase/util/Pair.html
+++ b/apidocs/src-html/org/apache/hadoop/hbase/util/Pair.html
@@ -72,7 +72,7 @@
 <span class="sourceLineNo">064</span>   * @return a new pair containing the 
passed arguments<a name="line.64"></a>
 <span class="sourceLineNo">065</span>   */<a name="line.65"></a>
 <span class="sourceLineNo">066</span>  public static &lt;T1,T2&gt; 
Pair&lt;T1,T2&gt; newPair(T1 a, T2 b) {<a name="line.66"></a>
-<span class="sourceLineNo">067</span>    return new Pair&lt;T1,T2&gt;(a, b);<a 
name="line.67"></a>
+<span class="sourceLineNo">067</span>    return new Pair&lt;&gt;(a, b);<a 
name="line.67"></a>
 <span class="sourceLineNo">068</span>  }<a name="line.68"></a>
 <span class="sourceLineNo">069</span>  <a name="line.69"></a>
 <span class="sourceLineNo">070</span>  /**<a name="line.70"></a>

Reply via email to