You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@hbase.apache.org by gi...@apache.org on 2017/12/03 15:18:11 UTC

[01/51] [partial] hbase-site git commit: Published site at .

Repository: hbase-site
Updated Branches:
  refs/heads/asf-site 21e0e1161 -> c54c242b2


http://git-wip-us.apache.org/repos/asf/hbase-site/blob/c54c242b/testdevapidocs/overview-tree.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/overview-tree.html b/testdevapidocs/overview-tree.html
index cfa835f..af906f2 100644
--- a/testdevapidocs/overview-tree.html
+++ b/testdevapidocs/overview-tree.html
@@ -2683,6 +2683,7 @@
 <li type="circle">org.apache.hadoop.hbase.coprocessor.<a href="org/apache/hadoop/hbase/coprocessor/TestImportExport.html" title="class in org.apache.hadoop.hbase.coprocessor"><span class="typeNameLink">TestImportExport</span></a></li>
 </ul>
 </li>
+<li type="circle">org.apache.hadoop.hbase.mapreduce.<a href="org/apache/hadoop/hbase/mapreduce/TestImportExport.TableWALActionListener.html" title="class in org.apache.hadoop.hbase.mapreduce"><span class="typeNameLink">TestImportExport.TableWALActionListener</span></a> (implements org.apache.hadoop.hbase.regionserver.wal.WALActionsListener)</li>
 <li type="circle">org.apache.hadoop.hbase.mapreduce.<a href="org/apache/hadoop/hbase/mapreduce/TestImportTsv.html" title="class in org.apache.hadoop.hbase.mapreduce"><span class="typeNameLink">TestImportTsv</span></a> (implements org.apache.hadoop.conf.Configurable)</li>
 <li type="circle">org.apache.hadoop.hbase.mapreduce.<a href="org/apache/hadoop/hbase/mapreduce/TestImportTsvParser.html" title="class in org.apache.hadoop.hbase.mapreduce"><span class="typeNameLink">TestImportTsvParser</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.mapreduce.<a href="org/apache/hadoop/hbase/mapreduce/TestImportTSVWithOperationAttributes.html" title="class in org.apache.hadoop.hbase.mapreduce"><span class="typeNameLink">TestImportTSVWithOperationAttributes</span></a> (implements org.apache.hadoop.conf.Configurable)</li>
@@ -2996,6 +2997,7 @@
 <li type="circle">org.apache.hadoop.hbase.client.<a href="org/apache/hadoop/hbase/client/TestRawAsyncTableLimitedScanWithFilter.html" title="class in org.apache.hadoop.hbase.client"><span class="typeNameLink">TestRawAsyncTableLimitedScanWithFilter</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.client.<a href="org/apache/hadoop/hbase/client/TestRawAsyncTablePartialScan.html" title="class in org.apache.hadoop.hbase.client"><span class="typeNameLink">TestRawAsyncTablePartialScan</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.types.<a href="org/apache/hadoop/hbase/types/TestRawString.html" title="class in org.apache.hadoop.hbase.types"><span class="typeNameLink">TestRawString</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.zookeeper.<a href="org/apache/hadoop/hbase/zookeeper/TestReadOnlyZKClient.html" title="class in org.apache.hadoop.hbase.zookeeper"><span class="typeNameLink">TestReadOnlyZKClient</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.zookeeper.<a href="org/apache/hadoop/hbase/zookeeper/TestRecoverableZooKeeper.html" title="class in org.apache.hadoop.hbase.zookeeper"><span class="typeNameLink">TestRecoverableZooKeeper</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.regionserver.<a href="org/apache/hadoop/hbase/regionserver/TestRecoveredEdits.html" title="class in org.apache.hadoop.hbase.regionserver"><span class="typeNameLink">TestRecoveredEdits</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.metrics.impl.<a href="org/apache/hadoop/hbase/metrics/impl/TestRefCountingMap.html" title="class in org.apache.hadoop.hbase.metrics.impl"><span class="typeNameLink">TestRefCountingMap</span></a></li>
@@ -3480,14 +3482,22 @@
 <li type="circle">org.apache.hadoop.hbase.security.visibility.<a href="org/apache/hadoop/hbase/security/visibility/TestVisibilityLablesWithGroups.html" title="class in org.apache.hadoop.hbase.security.visibility"><span class="typeNameLink">TestVisibilityLablesWithGroups</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.security.visibility.<a href="org/apache/hadoop/hbase/security/visibility/TestVisibilityWithCheckAuths.html" title="class in org.apache.hadoop.hbase.security.visibility"><span class="typeNameLink">TestVisibilityWithCheckAuths</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.regionserver.wal.<a href="org/apache/hadoop/hbase/regionserver/wal/TestWALActionsListener.html" title="class in org.apache.hadoop.hbase.regionserver.wal"><span class="typeNameLink">TestWALActionsListener</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.regionserver.wal.<a href="org/apache/hadoop/hbase/regionserver/wal/TestWALActionsListener.DummyWALActionsListener.html" title="class in org.apache.hadoop.hbase.regionserver.wal"><span class="typeNameLink">TestWALActionsListener.DummyWALActionsListener</span></a> (implements org.apache.hadoop.hbase.regionserver.wal.WALActionsListener)
+<ul>
+<li type="circle">org.apache.hadoop.hbase.regionserver.<a href="org/apache/hadoop/hbase/regionserver/TestHRegionServerBulkLoad.FindBulkHBaseListener.html" title="class in org.apache.hadoop.hbase.regionserver"><span class="typeNameLink">TestHRegionServerBulkLoad.FindBulkHBaseListener</span></a></li>
+</ul>
+</li>
 <li type="circle">org.apache.hadoop.hbase.regionserver.<a href="org/apache/hadoop/hbase/regionserver/TestWalAndCompactingMemStoreFlush.html" title="class in org.apache.hadoop.hbase.regionserver"><span class="typeNameLink">TestWalAndCompactingMemStoreFlush</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.regionserver.<a href="org/apache/hadoop/hbase/regionserver/TestWalAndCompactingMemStoreFlush.ConcurrentPutRunnable.html" title="class in org.apache.hadoop.hbase.regionserver"><span class="typeNameLink">TestWalAndCompactingMemStoreFlush.ConcurrentPutRunnable</span></a> (implements java.lang.<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Runnable.html?is-external=true" title="class or interface in java.lang">Runnable</a>)</li>
 <li type="circle">org.apache.hadoop.hbase.regionserver.wal.<a href="org/apache/hadoop/hbase/regionserver/wal/TestWALCellCodecWithCompression.html" title="class in org.apache.hadoop.hbase.regionserver.wal"><span class="typeNameLink">TestWALCellCodecWithCompression</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.replication.regionserver.<a href="org/apache/hadoop/hbase/replication/regionserver/TestWALEntryStream.html" title="class in org.apache.hadoop.hbase.replication.regionserver"><span class="typeNameLink">TestWALEntryStream</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.replication.regionserver.<a href="org/apache/hadoop/hbase/replication/regionserver/TestWALEntryStream.PathWatcher.html" title="class in org.apache.hadoop.hbase.replication.regionserver"><span class="typeNameLink">TestWALEntryStream.PathWatcher</span></a> (implements org.apache.hadoop.hbase.regionserver.wal.WALActionsListener)</li>
 <li type="circle">org.apache.hadoop.hbase.wal.<a href="org/apache/hadoop/hbase/wal/TestWALFactory.html" title="class in org.apache.hadoop.hbase.wal"><span class="typeNameLink">TestWALFactory</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.wal.<a href="org/apache/hadoop/hbase/wal/TestWALFactory.DumbWALActionsListener.html" title="class in org.apache.hadoop.hbase.wal"><span class="typeNameLink">TestWALFactory.DumbWALActionsListener</span></a> (implements org.apache.hadoop.hbase.regionserver.wal.WALActionsListener)</li>
 <li type="circle">org.apache.hadoop.hbase.wal.<a href="org/apache/hadoop/hbase/wal/TestWALFiltering.html" title="class in org.apache.hadoop.hbase.wal"><span class="typeNameLink">TestWALFiltering</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.regionserver.<a href="org/apache/hadoop/hbase/regionserver/TestWALLockup.html" title="class in org.apache.hadoop.hbase.regionserver"><span class="typeNameLink">TestWALLockup</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.regionserver.<a href="org/apache/hadoop/hbase/regionserver/TestWALLockup.DummyServer.html" title="class in org.apache.hadoop.hbase.regionserver"><span class="typeNameLink">TestWALLockup.DummyServer</span></a> (implements org.apache.hadoop.hbase.Server)</li>
+<li type="circle">org.apache.hadoop.hbase.regionserver.<a href="org/apache/hadoop/hbase/regionserver/TestWALLockup.DummyWALActionsListener.html" title="class in org.apache.hadoop.hbase.regionserver"><span class="typeNameLink">TestWALLockup.DummyWALActionsListener</span></a> (implements org.apache.hadoop.hbase.regionserver.wal.WALActionsListener)</li>
 <li type="circle">org.apache.hadoop.hbase.wal.<a href="org/apache/hadoop/hbase/wal/TestWALMethods.html" title="class in org.apache.hadoop.hbase.wal"><span class="typeNameLink">TestWALMethods</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.regionserver.<a href="org/apache/hadoop/hbase/regionserver/TestWALMonotonicallyIncreasingSeqId.html" title="class in org.apache.hadoop.hbase.regionserver"><span class="typeNameLink">TestWALMonotonicallyIncreasingSeqId</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.coprocessor.<a href="org/apache/hadoop/hbase/coprocessor/TestWALObserver.html" title="class in org.apache.hadoop.hbase.coprocessor"><span class="typeNameLink">TestWALObserver</span></a></li>
@@ -3678,19 +3688,6 @@
 </li>
 <li type="circle">org.apache.hadoop.hbase.security.visibility.<a href="org/apache/hadoop/hbase/security/visibility/VisibilityTestUtil.html" title="class in org.apache.hadoop.hbase.security.visibility"><span class="typeNameLink">VisibilityTestUtil</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.<a href="org/apache/hadoop/hbase/Waiter.html" title="class in org.apache.hadoop.hbase"><span class="typeNameLink">Waiter</span></a></li>
-<li type="circle">org.apache.hadoop.hbase.regionserver.wal.WALActionsListener.Base (implements org.apache.hadoop.hbase.regionserver.wal.WALActionsListener)
-<ul>
-<li type="circle">org.apache.hadoop.hbase.mapreduce.<a href="org/apache/hadoop/hbase/mapreduce/TestImportExport.TableWALActionListener.html" title="class in org.apache.hadoop.hbase.mapreduce"><span class="typeNameLink">TestImportExport.TableWALActionListener</span></a></li>
-<li type="circle">org.apache.hadoop.hbase.regionserver.wal.<a href="org/apache/hadoop/hbase/regionserver/wal/TestWALActionsListener.DummyWALActionsListener.html" title="class in org.apache.hadoop.hbase.regionserver.wal"><span class="typeNameLink">TestWALActionsListener.DummyWALActionsListener</span></a>
-<ul>
-<li type="circle">org.apache.hadoop.hbase.regionserver.<a href="org/apache/hadoop/hbase/regionserver/TestHRegionServerBulkLoad.FindBulkHBaseListener.html" title="class in org.apache.hadoop.hbase.regionserver"><span class="typeNameLink">TestHRegionServerBulkLoad.FindBulkHBaseListener</span></a></li>
-</ul>
-</li>
-<li type="circle">org.apache.hadoop.hbase.replication.regionserver.<a href="org/apache/hadoop/hbase/replication/regionserver/TestWALEntryStream.PathWatcher.html" title="class in org.apache.hadoop.hbase.replication.regionserver"><span class="typeNameLink">TestWALEntryStream.PathWatcher</span></a></li>
-<li type="circle">org.apache.hadoop.hbase.wal.<a href="org/apache/hadoop/hbase/wal/TestWALFactory.DumbWALActionsListener.html" title="class in org.apache.hadoop.hbase.wal"><span class="typeNameLink">TestWALFactory.DumbWALActionsListener</span></a></li>
-<li type="circle">org.apache.hadoop.hbase.regionserver.<a href="org/apache/hadoop/hbase/regionserver/TestWALLockup.DummyWALActionsListener.html" title="class in org.apache.hadoop.hbase.regionserver"><span class="typeNameLink">TestWALLockup.DummyWALActionsListener</span></a></li>
-</ul>
-</li>
 <li type="circle">org.apache.hadoop.hbase.regionserver.wal.WALCellCodec (implements org.apache.hadoop.hbase.codec.Codec)
 <ul>
 <li type="circle">org.apache.hadoop.hbase.regionserver.wal.<a href="org/apache/hadoop/hbase/regionserver/wal/TestCustomWALCellCodec.CustomWALCellCodec.html" title="class in org.apache.hadoop.hbase.regionserver.wal"><span class="typeNameLink">TestCustomWALCellCodec.CustomWALCellCodec</span></a></li>
@@ -3800,6 +3797,7 @@
 <li type="circle">org.apache.hadoop.hbase.<a href="org/apache/hadoop/hbase/Waiter.ExplainingPredicate.html" title="interface in org.apache.hadoop.hbase"><span class="typeNameLink">Waiter.ExplainingPredicate</span></a>&lt;E&gt;</li>
 </ul>
 </li>
+<li type="circle">org.apache.hadoop.hbase.testclassification.<a href="org/apache/hadoop/hbase/testclassification/ZKTests.html" title="interface in org.apache.hadoop.hbase.testclassification"><span class="typeNameLink">ZKTests</span></a></li>
 </ul>
 <h2 title="Enum Hierarchy">Enum Hierarchy</h2>
 <ul>


[15/51] [partial] hbase-site git commit: Published site at .

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/c54c242b/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/HStore.html
----------------------------------------------------------------------
diff --git a/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/HStore.html b/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/HStore.html
index 64ba75d..6cb35af 100644
--- a/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/HStore.html
+++ b/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/HStore.html
@@ -56,2149 +56,2149 @@
 <span class="sourceLineNo">048</span>import java.util.function.ToLongFunction;<a name="line.48"></a>
 <span class="sourceLineNo">049</span>import java.util.stream.Collectors;<a name="line.49"></a>
 <span class="sourceLineNo">050</span>import java.util.stream.LongStream;<a name="line.50"></a>
-<span class="sourceLineNo">051</span><a name="line.51"></a>
-<span class="sourceLineNo">052</span>import org.apache.commons.logging.Log;<a name="line.52"></a>
-<span class="sourceLineNo">053</span>import org.apache.commons.logging.LogFactory;<a name="line.53"></a>
-<span class="sourceLineNo">054</span>import org.apache.hadoop.conf.Configuration;<a name="line.54"></a>
-<span class="sourceLineNo">055</span>import org.apache.hadoop.fs.FileSystem;<a name="line.55"></a>
-<span class="sourceLineNo">056</span>import org.apache.hadoop.fs.Path;<a name="line.56"></a>
-<span class="sourceLineNo">057</span>import org.apache.hadoop.hbase.Cell;<a name="line.57"></a>
-<span class="sourceLineNo">058</span>import org.apache.hadoop.hbase.CellComparator;<a name="line.58"></a>
-<span class="sourceLineNo">059</span>import org.apache.hadoop.hbase.CellUtil;<a name="line.59"></a>
-<span class="sourceLineNo">060</span>import org.apache.hadoop.hbase.CompoundConfiguration;<a name="line.60"></a>
-<span class="sourceLineNo">061</span>import org.apache.hadoop.hbase.HConstants;<a name="line.61"></a>
-<span class="sourceLineNo">062</span>import org.apache.hadoop.hbase.MemoryCompactionPolicy;<a name="line.62"></a>
-<span class="sourceLineNo">063</span>import org.apache.hadoop.hbase.TableName;<a name="line.63"></a>
-<span class="sourceLineNo">064</span>import org.apache.hadoop.hbase.backup.FailedArchiveException;<a name="line.64"></a>
-<span class="sourceLineNo">065</span>import org.apache.hadoop.hbase.client.ColumnFamilyDescriptor;<a name="line.65"></a>
-<span class="sourceLineNo">066</span>import org.apache.hadoop.hbase.client.RegionInfo;<a name="line.66"></a>
-<span class="sourceLineNo">067</span>import org.apache.hadoop.hbase.client.Scan;<a name="line.67"></a>
-<span class="sourceLineNo">068</span>import org.apache.hadoop.hbase.conf.ConfigurationManager;<a name="line.68"></a>
-<span class="sourceLineNo">069</span>import org.apache.hadoop.hbase.conf.PropagatingConfigurationObserver;<a name="line.69"></a>
-<span class="sourceLineNo">070</span>import org.apache.hadoop.hbase.io.HeapSize;<a name="line.70"></a>
-<span class="sourceLineNo">071</span>import org.apache.hadoop.hbase.io.compress.Compression;<a name="line.71"></a>
-<span class="sourceLineNo">072</span>import org.apache.hadoop.hbase.io.crypto.Encryption;<a name="line.72"></a>
-<span class="sourceLineNo">073</span>import org.apache.hadoop.hbase.io.hfile.CacheConfig;<a name="line.73"></a>
-<span class="sourceLineNo">074</span>import org.apache.hadoop.hbase.io.hfile.HFile;<a name="line.74"></a>
-<span class="sourceLineNo">075</span>import org.apache.hadoop.hbase.io.hfile.HFileContext;<a name="line.75"></a>
-<span class="sourceLineNo">076</span>import org.apache.hadoop.hbase.io.hfile.HFileContextBuilder;<a name="line.76"></a>
-<span class="sourceLineNo">077</span>import org.apache.hadoop.hbase.io.hfile.HFileDataBlockEncoder;<a name="line.77"></a>
-<span class="sourceLineNo">078</span>import org.apache.hadoop.hbase.io.hfile.HFileDataBlockEncoderImpl;<a name="line.78"></a>
-<span class="sourceLineNo">079</span>import org.apache.hadoop.hbase.io.hfile.HFileScanner;<a name="line.79"></a>
-<span class="sourceLineNo">080</span>import org.apache.hadoop.hbase.io.hfile.InvalidHFileException;<a name="line.80"></a>
-<span class="sourceLineNo">081</span>import org.apache.hadoop.hbase.monitoring.MonitoredTask;<a name="line.81"></a>
-<span class="sourceLineNo">082</span>import org.apache.hadoop.hbase.regionserver.compactions.CompactionContext;<a name="line.82"></a>
-<span class="sourceLineNo">083</span>import org.apache.hadoop.hbase.regionserver.compactions.CompactionLifeCycleTracker;<a name="line.83"></a>
-<span class="sourceLineNo">084</span>import org.apache.hadoop.hbase.regionserver.compactions.CompactionProgress;<a name="line.84"></a>
-<span class="sourceLineNo">085</span>import org.apache.hadoop.hbase.regionserver.compactions.CompactionRequestImpl;<a name="line.85"></a>
-<span class="sourceLineNo">086</span>import org.apache.hadoop.hbase.regionserver.compactions.DefaultCompactor;<a name="line.86"></a>
-<span class="sourceLineNo">087</span>import org.apache.hadoop.hbase.regionserver.compactions.OffPeakHours;<a name="line.87"></a>
-<span class="sourceLineNo">088</span>import org.apache.hadoop.hbase.regionserver.querymatcher.ScanQueryMatcher;<a name="line.88"></a>
-<span class="sourceLineNo">089</span>import org.apache.hadoop.hbase.regionserver.throttle.ThroughputController;<a name="line.89"></a>
-<span class="sourceLineNo">090</span>import org.apache.hadoop.hbase.regionserver.wal.WALUtil;<a name="line.90"></a>
-<span class="sourceLineNo">091</span>import org.apache.hadoop.hbase.security.EncryptionUtil;<a name="line.91"></a>
-<span class="sourceLineNo">092</span>import org.apache.hadoop.hbase.security.User;<a name="line.92"></a>
-<span class="sourceLineNo">093</span>import org.apache.hadoop.hbase.util.Bytes;<a name="line.93"></a>
-<span class="sourceLineNo">094</span>import org.apache.hadoop.hbase.util.ChecksumType;<a name="line.94"></a>
-<span class="sourceLineNo">095</span>import org.apache.hadoop.hbase.util.ClassSize;<a name="line.95"></a>
-<span class="sourceLineNo">096</span>import org.apache.hadoop.hbase.util.EnvironmentEdgeManager;<a name="line.96"></a>
-<span class="sourceLineNo">097</span>import org.apache.hadoop.hbase.util.Pair;<a name="line.97"></a>
-<span class="sourceLineNo">098</span>import org.apache.hadoop.hbase.util.ReflectionUtils;<a name="line.98"></a>
-<span class="sourceLineNo">099</span>import org.apache.hadoop.util.StringUtils;<a name="line.99"></a>
-<span class="sourceLineNo">100</span>import org.apache.hadoop.util.StringUtils.TraditionalBinaryPrefix;<a name="line.100"></a>
-<span class="sourceLineNo">101</span>import org.apache.yetus.audience.InterfaceAudience;<a name="line.101"></a>
-<span class="sourceLineNo">102</span><a name="line.102"></a>
-<span class="sourceLineNo">103</span>import org.apache.hadoop.hbase.shaded.com.google.common.annotations.VisibleForTesting;<a name="line.103"></a>
-<span class="sourceLineNo">104</span>import org.apache.hadoop.hbase.shaded.com.google.common.base.Preconditions;<a name="line.104"></a>
-<span class="sourceLineNo">105</span>import org.apache.hadoop.hbase.shaded.com.google.common.collect.ImmutableCollection;<a name="line.105"></a>
-<span class="sourceLineNo">106</span>import org.apache.hadoop.hbase.shaded.com.google.common.collect.ImmutableList;<a name="line.106"></a>
-<span class="sourceLineNo">107</span>import org.apache.hadoop.hbase.shaded.com.google.common.collect.Lists;<a name="line.107"></a>
-<span class="sourceLineNo">108</span>import org.apache.hadoop.hbase.shaded.com.google.common.collect.Sets;<a name="line.108"></a>
-<span class="sourceLineNo">109</span>import org.apache.hadoop.hbase.shaded.protobuf.ProtobufUtil;<a name="line.109"></a>
-<span class="sourceLineNo">110</span>import org.apache.hadoop.hbase.shaded.protobuf.generated.WALProtos.CompactionDescriptor;<a name="line.110"></a>
-<span class="sourceLineNo">111</span><a name="line.111"></a>
-<span class="sourceLineNo">112</span>/**<a name="line.112"></a>
-<span class="sourceLineNo">113</span> * A Store holds a column family in a Region.  Its a memstore and a set of zero<a name="line.113"></a>
-<span class="sourceLineNo">114</span> * or more StoreFiles, which stretch backwards over time.<a name="line.114"></a>
-<span class="sourceLineNo">115</span> *<a name="line.115"></a>
-<span class="sourceLineNo">116</span> * &lt;p&gt;There's no reason to consider append-logging at this level; all logging<a name="line.116"></a>
-<span class="sourceLineNo">117</span> * and locking is handled at the HRegion level.  Store just provides<a name="line.117"></a>
-<span class="sourceLineNo">118</span> * services to manage sets of StoreFiles.  One of the most important of those<a name="line.118"></a>
-<span class="sourceLineNo">119</span> * services is compaction services where files are aggregated once they pass<a name="line.119"></a>
-<span class="sourceLineNo">120</span> * a configurable threshold.<a name="line.120"></a>
-<span class="sourceLineNo">121</span> *<a name="line.121"></a>
-<span class="sourceLineNo">122</span> * &lt;p&gt;Locking and transactions are handled at a higher level.  This API should<a name="line.122"></a>
-<span class="sourceLineNo">123</span> * not be called directly but by an HRegion manager.<a name="line.123"></a>
-<span class="sourceLineNo">124</span> */<a name="line.124"></a>
-<span class="sourceLineNo">125</span>@InterfaceAudience.Private<a name="line.125"></a>
-<span class="sourceLineNo">126</span>public class HStore implements Store, HeapSize, StoreConfigInformation, PropagatingConfigurationObserver {<a name="line.126"></a>
-<span class="sourceLineNo">127</span>  public static final String MEMSTORE_CLASS_NAME = "hbase.regionserver.memstore.class";<a name="line.127"></a>
-<span class="sourceLineNo">128</span>  public static final String COMPACTCHECKER_INTERVAL_MULTIPLIER_KEY =<a name="line.128"></a>
-<span class="sourceLineNo">129</span>      "hbase.server.compactchecker.interval.multiplier";<a name="line.129"></a>
-<span class="sourceLineNo">130</span>  public static final String BLOCKING_STOREFILES_KEY = "hbase.hstore.blockingStoreFiles";<a name="line.130"></a>
-<span class="sourceLineNo">131</span>  public static final String BLOCK_STORAGE_POLICY_KEY = "hbase.hstore.block.storage.policy";<a name="line.131"></a>
-<span class="sourceLineNo">132</span>  // keep in accordance with HDFS default storage policy<a name="line.132"></a>
-<span class="sourceLineNo">133</span>  public static final String DEFAULT_BLOCK_STORAGE_POLICY = "HOT";<a name="line.133"></a>
-<span class="sourceLineNo">134</span>  public static final int DEFAULT_COMPACTCHECKER_INTERVAL_MULTIPLIER = 1000;<a name="line.134"></a>
-<span class="sourceLineNo">135</span>  public static final int DEFAULT_BLOCKING_STOREFILE_COUNT = 10;<a name="line.135"></a>
-<span class="sourceLineNo">136</span><a name="line.136"></a>
-<span class="sourceLineNo">137</span>  private static final Log LOG = LogFactory.getLog(HStore.class);<a name="line.137"></a>
-<span class="sourceLineNo">138</span><a name="line.138"></a>
-<span class="sourceLineNo">139</span>  protected final MemStore memstore;<a name="line.139"></a>
-<span class="sourceLineNo">140</span>  // This stores directory in the filesystem.<a name="line.140"></a>
-<span class="sourceLineNo">141</span>  protected final HRegion region;<a name="line.141"></a>
-<span class="sourceLineNo">142</span>  private final ColumnFamilyDescriptor family;<a name="line.142"></a>
-<span class="sourceLineNo">143</span>  private final HRegionFileSystem fs;<a name="line.143"></a>
-<span class="sourceLineNo">144</span>  protected Configuration conf;<a name="line.144"></a>
-<span class="sourceLineNo">145</span>  protected CacheConfig cacheConf;<a name="line.145"></a>
-<span class="sourceLineNo">146</span>  private long lastCompactSize = 0;<a name="line.146"></a>
-<span class="sourceLineNo">147</span>  volatile boolean forceMajor = false;<a name="line.147"></a>
-<span class="sourceLineNo">148</span>  /* how many bytes to write between status checks */<a name="line.148"></a>
-<span class="sourceLineNo">149</span>  static int closeCheckInterval = 0;<a name="line.149"></a>
-<span class="sourceLineNo">150</span>  private volatile long storeSize = 0L;<a name="line.150"></a>
-<span class="sourceLineNo">151</span>  private volatile long totalUncompressedBytes = 0L;<a name="line.151"></a>
-<span class="sourceLineNo">152</span><a name="line.152"></a>
-<span class="sourceLineNo">153</span>  /**<a name="line.153"></a>
-<span class="sourceLineNo">154</span>   * RWLock for store operations.<a name="line.154"></a>
-<span class="sourceLineNo">155</span>   * Locked in shared mode when the list of component stores is looked at:<a name="line.155"></a>
-<span class="sourceLineNo">156</span>   *   - all reads/writes to table data<a name="line.156"></a>
-<span class="sourceLineNo">157</span>   *   - checking for split<a name="line.157"></a>
-<span class="sourceLineNo">158</span>   * Locked in exclusive mode when the list of component stores is modified:<a name="line.158"></a>
-<span class="sourceLineNo">159</span>   *   - closing<a name="line.159"></a>
-<span class="sourceLineNo">160</span>   *   - completing a compaction<a name="line.160"></a>
-<span class="sourceLineNo">161</span>   */<a name="line.161"></a>
-<span class="sourceLineNo">162</span>  final ReentrantReadWriteLock lock = new ReentrantReadWriteLock();<a name="line.162"></a>
-<span class="sourceLineNo">163</span>  /**<a name="line.163"></a>
-<span class="sourceLineNo">164</span>   * Lock specific to archiving compacted store files.  This avoids races around<a name="line.164"></a>
-<span class="sourceLineNo">165</span>   * the combination of retrieving the list of compacted files and moving them to<a name="line.165"></a>
-<span class="sourceLineNo">166</span>   * the archive directory.  Since this is usually a background process (other than<a name="line.166"></a>
-<span class="sourceLineNo">167</span>   * on close), we don't want to handle this with the store write lock, which would<a name="line.167"></a>
-<span class="sourceLineNo">168</span>   * block readers and degrade performance.<a name="line.168"></a>
-<span class="sourceLineNo">169</span>   *<a name="line.169"></a>
-<span class="sourceLineNo">170</span>   * Locked by:<a name="line.170"></a>
-<span class="sourceLineNo">171</span>   *   - CompactedHFilesDispatchHandler via closeAndArchiveCompactedFiles()<a name="line.171"></a>
-<span class="sourceLineNo">172</span>   *   - close()<a name="line.172"></a>
-<span class="sourceLineNo">173</span>   */<a name="line.173"></a>
-<span class="sourceLineNo">174</span>  final ReentrantLock archiveLock = new ReentrantLock();<a name="line.174"></a>
-<span class="sourceLineNo">175</span><a name="line.175"></a>
-<span class="sourceLineNo">176</span>  private final boolean verifyBulkLoads;<a name="line.176"></a>
-<span class="sourceLineNo">177</span><a name="line.177"></a>
-<span class="sourceLineNo">178</span>  private ScanInfo scanInfo;<a name="line.178"></a>
-<span class="sourceLineNo">179</span><a name="line.179"></a>
-<span class="sourceLineNo">180</span>  // TODO: ideally, this should be part of storeFileManager, as we keep passing this to it.<a name="line.180"></a>
-<span class="sourceLineNo">181</span>  final List&lt;HStoreFile&gt; filesCompacting = Lists.newArrayList();<a name="line.181"></a>
-<span class="sourceLineNo">182</span><a name="line.182"></a>
-<span class="sourceLineNo">183</span>  // All access must be synchronized.<a name="line.183"></a>
-<span class="sourceLineNo">184</span>  private final Set&lt;ChangedReadersObserver&gt; changedReaderObservers =<a name="line.184"></a>
-<span class="sourceLineNo">185</span>    Collections.newSetFromMap(new ConcurrentHashMap&lt;ChangedReadersObserver, Boolean&gt;());<a name="line.185"></a>
-<span class="sourceLineNo">186</span><a name="line.186"></a>
-<span class="sourceLineNo">187</span>  protected final int blocksize;<a name="line.187"></a>
-<span class="sourceLineNo">188</span>  private HFileDataBlockEncoder dataBlockEncoder;<a name="line.188"></a>
-<span class="sourceLineNo">189</span><a name="line.189"></a>
-<span class="sourceLineNo">190</span>  /** Checksum configuration */<a name="line.190"></a>
-<span class="sourceLineNo">191</span>  protected ChecksumType checksumType;<a name="line.191"></a>
-<span class="sourceLineNo">192</span>  protected int bytesPerChecksum;<a name="line.192"></a>
-<span class="sourceLineNo">193</span><a name="line.193"></a>
-<span class="sourceLineNo">194</span>  // Comparing KeyValues<a name="line.194"></a>
-<span class="sourceLineNo">195</span>  protected final CellComparator comparator;<a name="line.195"></a>
-<span class="sourceLineNo">196</span><a name="line.196"></a>
-<span class="sourceLineNo">197</span>  final StoreEngine&lt;?, ?, ?, ?&gt; storeEngine;<a name="line.197"></a>
-<span class="sourceLineNo">198</span><a name="line.198"></a>
-<span class="sourceLineNo">199</span>  private static final AtomicBoolean offPeakCompactionTracker = new AtomicBoolean();<a name="line.199"></a>
-<span class="sourceLineNo">200</span>  private volatile OffPeakHours offPeakHours;<a name="line.200"></a>
-<span class="sourceLineNo">201</span><a name="line.201"></a>
-<span class="sourceLineNo">202</span>  private static final int DEFAULT_FLUSH_RETRIES_NUMBER = 10;<a name="line.202"></a>
-<span class="sourceLineNo">203</span>  private int flushRetriesNumber;<a name="line.203"></a>
-<span class="sourceLineNo">204</span>  private int pauseTime;<a name="line.204"></a>
-<span class="sourceLineNo">205</span><a name="line.205"></a>
-<span class="sourceLineNo">206</span>  private long blockingFileCount;<a name="line.206"></a>
-<span class="sourceLineNo">207</span>  private int compactionCheckMultiplier;<a name="line.207"></a>
-<span class="sourceLineNo">208</span>  protected Encryption.Context cryptoContext = Encryption.Context.NONE;<a name="line.208"></a>
-<span class="sourceLineNo">209</span><a name="line.209"></a>
-<span class="sourceLineNo">210</span>  private volatile long flushedCellsCount = 0;<a name="line.210"></a>
-<span class="sourceLineNo">211</span>  private volatile long compactedCellsCount = 0;<a name="line.211"></a>
-<span class="sourceLineNo">212</span>  private volatile long majorCompactedCellsCount = 0;<a name="line.212"></a>
-<span class="sourceLineNo">213</span>  private volatile long flushedCellsSize = 0;<a name="line.213"></a>
-<span class="sourceLineNo">214</span>  private volatile long flushedOutputFileSize = 0;<a name="line.214"></a>
-<span class="sourceLineNo">215</span>  private volatile long compactedCellsSize = 0;<a name="line.215"></a>
-<span class="sourceLineNo">216</span>  private volatile long majorCompactedCellsSize = 0;<a name="line.216"></a>
-<span class="sourceLineNo">217</span><a name="line.217"></a>
-<span class="sourceLineNo">218</span>  /**<a name="line.218"></a>
-<span class="sourceLineNo">219</span>   * Constructor<a name="line.219"></a>
-<span class="sourceLineNo">220</span>   * @param region<a name="line.220"></a>
-<span class="sourceLineNo">221</span>   * @param family HColumnDescriptor for this column<a name="line.221"></a>
-<span class="sourceLineNo">222</span>   * @param confParam configuration object<a name="line.222"></a>
-<span class="sourceLineNo">223</span>   * failed.  Can be null.<a name="line.223"></a>
-<span class="sourceLineNo">224</span>   * @throws IOException<a name="line.224"></a>
-<span class="sourceLineNo">225</span>   */<a name="line.225"></a>
-<span class="sourceLineNo">226</span>  protected HStore(final HRegion region, final ColumnFamilyDescriptor family,<a name="line.226"></a>
-<span class="sourceLineNo">227</span>      final Configuration confParam) throws IOException {<a name="line.227"></a>
-<span class="sourceLineNo">228</span><a name="line.228"></a>
-<span class="sourceLineNo">229</span>    this.fs = region.getRegionFileSystem();<a name="line.229"></a>
-<span class="sourceLineNo">230</span><a name="line.230"></a>
-<span class="sourceLineNo">231</span>    // Assemble the store's home directory and Ensure it exists.<a name="line.231"></a>
-<span class="sourceLineNo">232</span>    fs.createStoreDir(family.getNameAsString());<a name="line.232"></a>
-<span class="sourceLineNo">233</span>    this.region = region;<a name="line.233"></a>
-<span class="sourceLineNo">234</span>    this.family = family;<a name="line.234"></a>
-<span class="sourceLineNo">235</span>    // 'conf' renamed to 'confParam' b/c we use this.conf in the constructor<a name="line.235"></a>
-<span class="sourceLineNo">236</span>    // CompoundConfiguration will look for keys in reverse order of addition, so we'd<a name="line.236"></a>
-<span class="sourceLineNo">237</span>    // add global config first, then table and cf overrides, then cf metadata.<a name="line.237"></a>
-<span class="sourceLineNo">238</span>    this.conf = new CompoundConfiguration()<a name="line.238"></a>
-<span class="sourceLineNo">239</span>      .add(confParam)<a name="line.239"></a>
-<span class="sourceLineNo">240</span>      .addBytesMap(region.getTableDescriptor().getValues())<a name="line.240"></a>
-<span class="sourceLineNo">241</span>      .addStringMap(family.getConfiguration())<a name="line.241"></a>
-<span class="sourceLineNo">242</span>      .addBytesMap(family.getValues());<a name="line.242"></a>
-<span class="sourceLineNo">243</span>    this.blocksize = family.getBlocksize();<a name="line.243"></a>
-<span class="sourceLineNo">244</span><a name="line.244"></a>
-<span class="sourceLineNo">245</span>    // set block storage policy for store directory<a name="line.245"></a>
-<span class="sourceLineNo">246</span>    String policyName = family.getStoragePolicy();<a name="line.246"></a>
-<span class="sourceLineNo">247</span>    if (null == policyName) {<a name="line.247"></a>
-<span class="sourceLineNo">248</span>      policyName = this.conf.get(BLOCK_STORAGE_POLICY_KEY, DEFAULT_BLOCK_STORAGE_POLICY);<a name="line.248"></a>
-<span class="sourceLineNo">249</span>    }<a name="line.249"></a>
-<span class="sourceLineNo">250</span>    this.fs.setStoragePolicy(family.getNameAsString(), policyName.trim());<a name="line.250"></a>
-<span class="sourceLineNo">251</span><a name="line.251"></a>
-<span class="sourceLineNo">252</span>    this.dataBlockEncoder =<a name="line.252"></a>
-<span class="sourceLineNo">253</span>        new HFileDataBlockEncoderImpl(family.getDataBlockEncoding());<a name="line.253"></a>
-<span class="sourceLineNo">254</span><a name="line.254"></a>
-<span class="sourceLineNo">255</span>    this.comparator = region.getCellComparator();<a name="line.255"></a>
-<span class="sourceLineNo">256</span>    // used by ScanQueryMatcher<a name="line.256"></a>
-<span class="sourceLineNo">257</span>    long timeToPurgeDeletes =<a name="line.257"></a>
-<span class="sourceLineNo">258</span>        Math.max(conf.getLong("hbase.hstore.time.to.purge.deletes", 0), 0);<a name="line.258"></a>
-<span class="sourceLineNo">259</span>    LOG.trace("Time to purge deletes set to " + timeToPurgeDeletes +<a name="line.259"></a>
-<span class="sourceLineNo">260</span>        "ms in store " + this);<a name="line.260"></a>
-<span class="sourceLineNo">261</span>    // Get TTL<a name="line.261"></a>
-<span class="sourceLineNo">262</span>    long ttl = determineTTLFromFamily(family);<a name="line.262"></a>
-<span class="sourceLineNo">263</span>    // Why not just pass a HColumnDescriptor in here altogether?  Even if have<a name="line.263"></a>
-<span class="sourceLineNo">264</span>    // to clone it?<a name="line.264"></a>
-<span class="sourceLineNo">265</span>    scanInfo = new ScanInfo(conf, family, ttl, timeToPurgeDeletes, this.comparator);<a name="line.265"></a>
-<span class="sourceLineNo">266</span>    MemoryCompactionPolicy inMemoryCompaction = null;<a name="line.266"></a>
-<span class="sourceLineNo">267</span>    if (this.getTableName().isSystemTable()) {<a name="line.267"></a>
-<span class="sourceLineNo">268</span>      inMemoryCompaction = MemoryCompactionPolicy<a name="line.268"></a>
-<span class="sourceLineNo">269</span>          .valueOf(conf.get("hbase.systemtables.compacting.memstore.type", "NONE"));<a name="line.269"></a>
-<span class="sourceLineNo">270</span>    } else {<a name="line.270"></a>
-<span class="sourceLineNo">271</span>      inMemoryCompaction = family.getInMemoryCompaction();<a name="line.271"></a>
-<span class="sourceLineNo">272</span>    }<a name="line.272"></a>
-<span class="sourceLineNo">273</span>    if (inMemoryCompaction == null) {<a name="line.273"></a>
-<span class="sourceLineNo">274</span>      inMemoryCompaction =<a name="line.274"></a>
-<span class="sourceLineNo">275</span>          MemoryCompactionPolicy.valueOf(conf.get(CompactingMemStore.COMPACTING_MEMSTORE_TYPE_KEY,<a name="line.275"></a>
-<span class="sourceLineNo">276</span>            CompactingMemStore.COMPACTING_MEMSTORE_TYPE_DEFAULT));<a name="line.276"></a>
-<span class="sourceLineNo">277</span>    }<a name="line.277"></a>
-<span class="sourceLineNo">278</span>    String className;<a name="line.278"></a>
-<span class="sourceLineNo">279</span>    switch (inMemoryCompaction) {<a name="line.279"></a>
-<span class="sourceLineNo">280</span>      case NONE:<a name="line.280"></a>
-<span class="sourceLineNo">281</span>        className = DefaultMemStore.class.getName();<a name="line.281"></a>
-<span class="sourceLineNo">282</span>        this.memstore = ReflectionUtils.newInstance(DefaultMemStore.class,<a name="line.282"></a>
-<span class="sourceLineNo">283</span>            new Object[] { conf, this.comparator });<a name="line.283"></a>
-<span class="sourceLineNo">284</span>        break;<a name="line.284"></a>
-<span class="sourceLineNo">285</span>      default:<a name="line.285"></a>
-<span class="sourceLineNo">286</span>        Class&lt;? extends CompactingMemStore&gt; clz = conf.getClass(MEMSTORE_CLASS_NAME,<a name="line.286"></a>
-<span class="sourceLineNo">287</span>          CompactingMemStore.class, CompactingMemStore.class);<a name="line.287"></a>
-<span class="sourceLineNo">288</span>        className = clz.getName();<a name="line.288"></a>
-<span class="sourceLineNo">289</span>        this.memstore = ReflectionUtils.newInstance(clz, new Object[] { conf, this.comparator, this,<a name="line.289"></a>
-<span class="sourceLineNo">290</span>            this.getHRegion().getRegionServicesForStores(), inMemoryCompaction });<a name="line.290"></a>
-<span class="sourceLineNo">291</span>    }<a name="line.291"></a>
-<span class="sourceLineNo">292</span>    LOG.info("Memstore class name is " + className);<a name="line.292"></a>
-<span class="sourceLineNo">293</span>    this.offPeakHours = OffPeakHours.getInstance(conf);<a name="line.293"></a>
-<span class="sourceLineNo">294</span><a name="line.294"></a>
-<span class="sourceLineNo">295</span>    // Setting up cache configuration for this family<a name="line.295"></a>
-<span class="sourceLineNo">296</span>    createCacheConf(family);<a name="line.296"></a>
-<span class="sourceLineNo">297</span><a name="line.297"></a>
-<span class="sourceLineNo">298</span>    this.verifyBulkLoads = conf.getBoolean("hbase.hstore.bulkload.verify", false);<a name="line.298"></a>
-<span class="sourceLineNo">299</span><a name="line.299"></a>
-<span class="sourceLineNo">300</span>    this.blockingFileCount =<a name="line.300"></a>
-<span class="sourceLineNo">301</span>        conf.getInt(BLOCKING_STOREFILES_KEY, DEFAULT_BLOCKING_STOREFILE_COUNT);<a name="line.301"></a>
-<span class="sourceLineNo">302</span>    this.compactionCheckMultiplier = conf.getInt(<a name="line.302"></a>
-<span class="sourceLineNo">303</span>        COMPACTCHECKER_INTERVAL_MULTIPLIER_KEY, DEFAULT_COMPACTCHECKER_INTERVAL_MULTIPLIER);<a name="line.303"></a>
-<span class="sourceLineNo">304</span>    if (this.compactionCheckMultiplier &lt;= 0) {<a name="line.304"></a>
-<span class="sourceLineNo">305</span>      LOG.error("Compaction check period multiplier must be positive, setting default: "<a name="line.305"></a>
-<span class="sourceLineNo">306</span>          + DEFAULT_COMPACTCHECKER_INTERVAL_MULTIPLIER);<a name="line.306"></a>
-<span class="sourceLineNo">307</span>      this.compactionCheckMultiplier = DEFAULT_COMPACTCHECKER_INTERVAL_MULTIPLIER;<a name="line.307"></a>
-<span class="sourceLineNo">308</span>    }<a name="line.308"></a>
-<span class="sourceLineNo">309</span><a name="line.309"></a>
-<span class="sourceLineNo">310</span>    if (HStore.closeCheckInterval == 0) {<a name="line.310"></a>
-<span class="sourceLineNo">311</span>      HStore.closeCheckInterval = conf.getInt(<a name="line.311"></a>
-<span class="sourceLineNo">312</span>          "hbase.hstore.close.check.interval", 10*1000*1000 /* 10 MB */);<a name="line.312"></a>
-<span class="sourceLineNo">313</span>    }<a name="line.313"></a>
-<span class="sourceLineNo">314</span><a name="line.314"></a>
-<span class="sourceLineNo">315</span>    this.storeEngine = createStoreEngine(this, this.conf, this.comparator);<a name="line.315"></a>
-<span class="sourceLineNo">316</span>    this.storeEngine.getStoreFileManager().loadFiles(loadStoreFiles());<a name="line.316"></a>
-<span class="sourceLineNo">317</span><a name="line.317"></a>
-<span class="sourceLineNo">318</span>    // Initialize checksum type from name. The names are CRC32, CRC32C, etc.<a name="line.318"></a>
-<span class="sourceLineNo">319</span>    this.checksumType = getChecksumType(conf);<a name="line.319"></a>
-<span class="sourceLineNo">320</span>    // initilize bytes per checksum<a name="line.320"></a>
-<span class="sourceLineNo">321</span>    this.bytesPerChecksum = getBytesPerChecksum(conf);<a name="line.321"></a>
-<span class="sourceLineNo">322</span>    flushRetriesNumber = conf.getInt(<a name="line.322"></a>
-<span class="sourceLineNo">323</span>        "hbase.hstore.flush.retries.number", DEFAULT_FLUSH_RETRIES_NUMBER);<a name="line.323"></a>
-<span class="sourceLineNo">324</span>    pauseTime = conf.getInt(HConstants.HBASE_SERVER_PAUSE, HConstants.DEFAULT_HBASE_SERVER_PAUSE);<a name="line.324"></a>
-<span class="sourceLineNo">325</span>    if (flushRetriesNumber &lt;= 0) {<a name="line.325"></a>
-<span class="sourceLineNo">326</span>      throw new IllegalArgumentException(<a name="line.326"></a>
-<span class="sourceLineNo">327</span>          "hbase.hstore.flush.retries.number must be &gt; 0, not "<a name="line.327"></a>
-<span class="sourceLineNo">328</span>              + flushRetriesNumber);<a name="line.328"></a>
-<span class="sourceLineNo">329</span>    }<a name="line.329"></a>
-<span class="sourceLineNo">330</span>    cryptoContext = EncryptionUtil.createEncryptionContext(conf, family);<a name="line.330"></a>
-<span class="sourceLineNo">331</span>  }<a name="line.331"></a>
-<span class="sourceLineNo">332</span><a name="line.332"></a>
-<span class="sourceLineNo">333</span>  /**<a name="line.333"></a>
-<span class="sourceLineNo">334</span>   * Creates the cache config.<a name="line.334"></a>
-<span class="sourceLineNo">335</span>   * @param family The current column family.<a name="line.335"></a>
-<span class="sourceLineNo">336</span>   */<a name="line.336"></a>
-<span class="sourceLineNo">337</span>  protected void createCacheConf(final ColumnFamilyDescriptor family) {<a name="line.337"></a>
-<span class="sourceLineNo">338</span>    this.cacheConf = new CacheConfig(conf, family);<a name="line.338"></a>
-<span class="sourceLineNo">339</span>  }<a name="line.339"></a>
-<span class="sourceLineNo">340</span><a name="line.340"></a>
-<span class="sourceLineNo">341</span>  /**<a name="line.341"></a>
-<span class="sourceLineNo">342</span>   * Creates the store engine configured for the given Store.<a name="line.342"></a>
-<span class="sourceLineNo">343</span>   * @param store The store. An unfortunate dependency needed due to it<a name="line.343"></a>
-<span class="sourceLineNo">344</span>   *              being passed to coprocessors via the compactor.<a name="line.344"></a>
-<span class="sourceLineNo">345</span>   * @param conf Store configuration.<a name="line.345"></a>
-<span class="sourceLineNo">346</span>   * @param kvComparator KVComparator for storeFileManager.<a name="line.346"></a>
-<span class="sourceLineNo">347</span>   * @return StoreEngine to use.<a name="line.347"></a>
-<span class="sourceLineNo">348</span>   */<a name="line.348"></a>
-<span class="sourceLineNo">349</span>  protected StoreEngine&lt;?, ?, ?, ?&gt; createStoreEngine(HStore store, Configuration conf,<a name="line.349"></a>
-<span class="sourceLineNo">350</span>      CellComparator kvComparator) throws IOException {<a name="line.350"></a>
-<span class="sourceLineNo">351</span>    return StoreEngine.create(store, conf, comparator);<a name="line.351"></a>
-<span class="sourceLineNo">352</span>  }<a name="line.352"></a>
-<span class="sourceLineNo">353</span><a name="line.353"></a>
-<span class="sourceLineNo">354</span>  /**<a name="line.354"></a>
-<span class="sourceLineNo">355</span>   * @param family<a name="line.355"></a>
-<span class="sourceLineNo">356</span>   * @return TTL in seconds of the specified family<a name="line.356"></a>
-<span class="sourceLineNo">357</span>   */<a name="line.357"></a>
-<span class="sourceLineNo">358</span>  public static long determineTTLFromFamily(final ColumnFamilyDescriptor family) {<a name="line.358"></a>
-<span class="sourceLineNo">359</span>    // HCD.getTimeToLive returns ttl in seconds.  Convert to milliseconds.<a name="line.359"></a>
-<span class="sourceLineNo">360</span>    long ttl = family.getTimeToLive();<a name="line.360"></a>
-<span class="sourceLineNo">361</span>    if (ttl == HConstants.FOREVER) {<a name="line.361"></a>
-<span class="sourceLineNo">362</span>      // Default is unlimited ttl.<a name="line.362"></a>
-<span class="sourceLineNo">363</span>      ttl = Long.MAX_VALUE;<a name="line.363"></a>
-<span class="sourceLineNo">364</span>    } else if (ttl == -1) {<a name="line.364"></a>
-<span class="sourceLineNo">365</span>      ttl = Long.MAX_VALUE;<a name="line.365"></a>
-<span class="sourceLineNo">366</span>    } else {<a name="line.366"></a>
-<span class="sourceLineNo">367</span>      // Second -&gt; ms adjust for user data<a name="line.367"></a>
-<span class="sourceLineNo">368</span>      ttl *= 1000;<a name="line.368"></a>
-<span class="sourceLineNo">369</span>    }<a name="line.369"></a>
-<span class="sourceLineNo">370</span>    return ttl;<a name="line.370"></a>
-<span class="sourceLineNo">371</span>  }<a name="line.371"></a>
-<span class="sourceLineNo">372</span><a name="line.372"></a>
-<span class="sourceLineNo">373</span>  @Override<a name="line.373"></a>
-<span class="sourceLineNo">374</span>  public String getColumnFamilyName() {<a name="line.374"></a>
-<span class="sourceLineNo">375</span>    return this.family.getNameAsString();<a name="line.375"></a>
-<span class="sourceLineNo">376</span>  }<a name="line.376"></a>
-<span class="sourceLineNo">377</span><a name="line.377"></a>
-<span class="sourceLineNo">378</span>  @Override<a name="line.378"></a>
-<span class="sourceLineNo">379</span>  public TableName getTableName() {<a name="line.379"></a>
-<span class="sourceLineNo">380</span>    return this.getRegionInfo().getTable();<a name="line.380"></a>
-<span class="sourceLineNo">381</span>  }<a name="line.381"></a>
-<span class="sourceLineNo">382</span><a name="line.382"></a>
-<span class="sourceLineNo">383</span>  @Override<a name="line.383"></a>
-<span class="sourceLineNo">384</span>  public FileSystem getFileSystem() {<a name="line.384"></a>
-<span class="sourceLineNo">385</span>    return this.fs.getFileSystem();<a name="line.385"></a>
-<span class="sourceLineNo">386</span>  }<a name="line.386"></a>
-<span class="sourceLineNo">387</span><a name="line.387"></a>
-<span class="sourceLineNo">388</span>  public HRegionFileSystem getRegionFileSystem() {<a name="line.388"></a>
-<span class="sourceLineNo">389</span>    return this.fs;<a name="line.389"></a>
-<span class="sourceLineNo">390</span>  }<a name="line.390"></a>
-<span class="sourceLineNo">391</span><a name="line.391"></a>
-<span class="sourceLineNo">392</span>  /* Implementation of StoreConfigInformation */<a name="line.392"></a>
-<span class="sourceLineNo">393</span>  @Override<a name="line.393"></a>
-<span class="sourceLineNo">394</span>  public long getStoreFileTtl() {<a name="line.394"></a>
-<span class="sourceLineNo">395</span>    // TTL only applies if there's no MIN_VERSIONs setting on the column.<a name="line.395"></a>
-<span class="sourceLineNo">396</span>    return (this.scanInfo.getMinVersions() == 0) ? this.scanInfo.getTtl() : Long.MAX_VALUE;<a name="line.396"></a>
-<span class="sourceLineNo">397</span>  }<a name="line.397"></a>
-<span class="sourceLineNo">398</span><a name="line.398"></a>
-<span class="sourceLineNo">399</span>  @Override<a name="line.399"></a>
-<span class="sourceLineNo">400</span>  public long getMemStoreFlushSize() {<a name="line.400"></a>
-<span class="sourceLineNo">401</span>    // TODO: Why is this in here?  The flushsize of the region rather than the store?  St.Ack<a name="line.401"></a>
-<span class="sourceLineNo">402</span>    return this.region.memstoreFlushSize;<a name="line.402"></a>
-<span class="sourceLineNo">403</span>  }<a name="line.403"></a>
-<span class="sourceLineNo">404</span><a name="line.404"></a>
-<span class="sourceLineNo">405</span>  @Override<a name="line.405"></a>
-<span class="sourceLineNo">406</span>  public MemStoreSize getFlushableSize() {<a name="line.406"></a>
-<span class="sourceLineNo">407</span>    return this.memstore.getFlushableSize();<a name="line.407"></a>
-<span class="sourceLineNo">408</span>  }<a name="line.408"></a>
-<span class="sourceLineNo">409</span><a name="line.409"></a>
-<span class="sourceLineNo">410</span>  @Override<a name="line.410"></a>
-<span class="sourceLineNo">411</span>  public MemStoreSize getSnapshotSize() {<a name="line.411"></a>
-<span class="sourceLineNo">412</span>    return this.memstore.getSnapshotSize();<a name="line.412"></a>
-<span class="sourceLineNo">413</span>  }<a name="line.413"></a>
-<span class="sourceLineNo">414</span><a name="line.414"></a>
-<span class="sourceLineNo">415</span>  @Override<a name="line.415"></a>
-<span class="sourceLineNo">416</span>  public long getCompactionCheckMultiplier() {<a name="line.416"></a>
-<span class="sourceLineNo">417</span>    return this.compactionCheckMultiplier;<a name="line.417"></a>
-<span class="sourceLineNo">418</span>  }<a name="line.418"></a>
-<span class="sourceLineNo">419</span><a name="line.419"></a>
-<span class="sourceLineNo">420</span>  @Override<a name="line.420"></a>
-<span class="sourceLineNo">421</span>  public long getBlockingFileCount() {<a name="line.421"></a>
-<span class="sourceLineNo">422</span>    return blockingFileCount;<a name="line.422"></a>
-<span class="sourceLineNo">423</span>  }<a name="line.423"></a>
-<span class="sourceLineNo">424</span>  /* End implementation of StoreConfigInformation */<a name="line.424"></a>
-<span class="sourceLineNo">425</span><a name="line.425"></a>
-<span class="sourceLineNo">426</span>  /**<a name="line.426"></a>
-<span class="sourceLineNo">427</span>   * Returns the configured bytesPerChecksum value.<a name="line.427"></a>
-<span class="sourceLineNo">428</span>   * @param conf The configuration<a name="line.428"></a>
-<span class="sourceLineNo">429</span>   * @return The bytesPerChecksum that is set in the configuration<a name="line.429"></a>
-<span class="sourceLineNo">430</span>   */<a name="line.430"></a>
-<span class="sourceLineNo">431</span>  public static int getBytesPerChecksum(Configuration conf) {<a name="line.431"></a>
-<span class="sourceLineNo">432</span>    return conf.getInt(HConstants.BYTES_PER_CHECKSUM,<a name="line.432"></a>
-<span class="sourceLineNo">433</span>                       HFile.DEFAULT_BYTES_PER_CHECKSUM);<a name="line.433"></a>
-<span class="sourceLineNo">434</span>  }<a name="line.434"></a>
-<span class="sourceLineNo">435</span><a name="line.435"></a>
-<span class="sourceLineNo">436</span>  /**<a name="line.436"></a>
-<span class="sourceLineNo">437</span>   * Returns the configured checksum algorithm.<a name="line.437"></a>
-<span class="sourceLineNo">438</span>   * @param conf The configuration<a name="line.438"></a>
-<span class="sourceLineNo">439</span>   * @return The checksum algorithm that is set in the configuration<a name="line.439"></a>
-<span class="sourceLineNo">440</span>   */<a name="line.440"></a>
-<span class="sourceLineNo">441</span>  public static ChecksumType getChecksumType(Configuration conf) {<a name="line.441"></a>
-<span class="sourceLineNo">442</span>    String checksumName = conf.get(HConstants.CHECKSUM_TYPE_NAME);<a name="line.442"></a>
-<span class="sourceLineNo">443</span>    if (checksumName == null) {<a name="line.443"></a>
-<span class="sourceLineNo">444</span>      return ChecksumType.getDefaultChecksumType();<a name="line.444"></a>
-<span class="sourceLineNo">445</span>    } else {<a name="line.445"></a>
-<span class="sourceLineNo">446</span>      return ChecksumType.nameToType(checksumName);<a name="line.446"></a>
-<span class="sourceLineNo">447</span>    }<a name="line.447"></a>
-<span class="sourceLineNo">448</span>  }<a name="line.448"></a>
-<span class="sourceLineNo">449</span><a name="line.449"></a>
-<span class="sourceLineNo">450</span>  /**<a name="line.450"></a>
-<span class="sourceLineNo">451</span>   * @return how many bytes to write between status checks<a name="line.451"></a>
-<span class="sourceLineNo">452</span>   */<a name="line.452"></a>
-<span class="sourceLineNo">453</span>  public static int getCloseCheckInterval() {<a name="line.453"></a>
-<span class="sourceLineNo">454</span>    return closeCheckInterval;<a name="line.454"></a>
-<span class="sourceLineNo">455</span>  }<a name="line.455"></a>
-<span class="sourceLineNo">456</span><a name="line.456"></a>
-<span class="sourceLineNo">457</span>  @Override<a name="line.457"></a>
-<span class="sourceLineNo">458</span>  public ColumnFamilyDescriptor getColumnFamilyDescriptor() {<a name="line.458"></a>
-<span class="sourceLineNo">459</span>    return this.family;<a name="line.459"></a>
-<span class="sourceLineNo">460</span>  }<a name="line.460"></a>
-<span class="sourceLineNo">461</span><a name="line.461"></a>
-<span class="sourceLineNo">462</span>  @Override<a name="line.462"></a>
-<span class="sourceLineNo">463</span>  public OptionalLong getMaxSequenceId() {<a name="line.463"></a>
-<span class="sourceLineNo">464</span>    return StoreUtils.getMaxSequenceIdInList(this.getStorefiles());<a name="line.464"></a>
-<span class="sourceLineNo">465</span>  }<a name="line.465"></a>
-<span class="sourceLineNo">466</span><a name="line.466"></a>
-<span class="sourceLineNo">467</span>  @Override<a name="line.467"></a>
-<span class="sourceLineNo">468</span>  public OptionalLong getMaxMemStoreTS() {<a name="line.468"></a>
-<span class="sourceLineNo">469</span>    return StoreUtils.getMaxMemStoreTSInList(this.getStorefiles());<a name="line.469"></a>
-<span class="sourceLineNo">470</span>  }<a name="line.470"></a>
-<span class="sourceLineNo">471</span><a name="line.471"></a>
-<span class="sourceLineNo">472</span>  /**<a name="line.472"></a>
-<span class="sourceLineNo">473</span>   * @param tabledir {@link Path} to where the table is being stored<a name="line.473"></a>
-<span class="sourceLineNo">474</span>   * @param hri {@link RegionInfo} for the region.<a name="line.474"></a>
-<span class="sourceLineNo">475</span>   * @param family {@link ColumnFamilyDescriptor} describing the column family<a name="line.475"></a>
-<span class="sourceLineNo">476</span>   * @return Path to family/Store home directory.<a name="line.476"></a>
-<span class="sourceLineNo">477</span>   */<a name="line.477"></a>
-<span class="sourceLineNo">478</span>  @Deprecated<a name="line.478"></a>
-<span class="sourceLineNo">479</span>  public static Path getStoreHomedir(final Path tabledir,<a name="line.479"></a>
-<span class="sourceLineNo">480</span>      final RegionInfo hri, final byte[] family) {<a name="line.480"></a>
-<span class="sourceLineNo">481</span>    return getStoreHomedir(tabledir, hri.getEncodedName(), family);<a name="line.481"></a>
-<span class="sourceLineNo">482</span>  }<a name="line.482"></a>
-<span class="sourceLineNo">483</span><a name="line.483"></a>
-<span class="sourceLineNo">484</span>  /**<a name="line.484"></a>
-<span class="sourceLineNo">485</span>   * @param tabledir {@link Path} to where the table is being stored<a name="line.485"></a>
-<span class="sourceLineNo">486</span>   * @param encodedName Encoded region name.<a name="line.486"></a>
-<span class="sourceLineNo">487</span>   * @param family {@link ColumnFamilyDescriptor} describing the column family<a name="line.487"></a>
-<span class="sourceLineNo">488</span>   * @return Path to family/Store home directory.<a name="line.488"></a>
-<span class="sourceLineNo">489</span>   */<a name="line.489"></a>
-<span class="sourceLineNo">490</span>  @Deprecated<a name="line.490"></a>
-<span class="sourceLineNo">491</span>  public static Path getStoreHomedir(final Path tabledir,<a name="line.491"></a>
-<span class="sourceLineNo">492</span>      final String encodedName, final byte[] family) {<a name="line.492"></a>
-<span class="sourceLineNo">493</span>    return new Path(tabledir, new Path(encodedName, Bytes.toString(family)));<a name="line.493"></a>
-<span class="sourceLineNo">494</span>  }<a name="line.494"></a>
-<span class="sourceLineNo">495</span><a name="line.495"></a>
-<span class="sourceLineNo">496</span>  /**<a name="line.496"></a>
-<span class="sourceLineNo">497</span>   * @return the data block encoder<a name="line.497"></a>
-<span class="sourceLineNo">498</span>   */<a name="line.498"></a>
-<span class="sourceLineNo">499</span>  public HFileDataBlockEncoder getDataBlockEncoder() {<a name="line.499"></a>
-<span class="sourceLineNo">500</span>    return dataBlockEncoder;<a name="line.500"></a>
-<span class="sourceLineNo">501</span>  }<a name="line.501"></a>
-<span class="sourceLineNo">502</span><a name="line.502"></a>
-<span class="sourceLineNo">503</span>  /**<a name="line.503"></a>
-<span class="sourceLineNo">504</span>   * Should be used only in tests.<a name="line.504"></a>
-<span class="sourceLineNo">505</span>   * @param blockEncoder the block delta encoder to use<a name="line.505"></a>
-<span class="sourceLineNo">506</span>   */<a name="line.506"></a>
-<span class="sourceLineNo">507</span>  void setDataBlockEncoderInTest(HFileDataBlockEncoder blockEncoder) {<a name="line.507"></a>
-<span class="sourceLineNo">508</span>    this.dataBlockEncoder = blockEncoder;<a name="line.508"></a>
-<span class="sourceLineNo">509</span>  }<a name="line.509"></a>
-<span class="sourceLineNo">510</span><a name="line.510"></a>
-<span class="sourceLineNo">511</span>  /**<a name="line.511"></a>
-<span class="sourceLineNo">512</span>   * Creates an unsorted list of StoreFile loaded in parallel<a name="line.512"></a>
-<span class="sourceLineNo">513</span>   * from the given directory.<a name="line.513"></a>
-<span class="sourceLineNo">514</span>   * @throws IOException<a name="line.514"></a>
-<span class="sourceLineNo">515</span>   */<a name="line.515"></a>
-<span class="sourceLineNo">516</span>  private List&lt;HStoreFile&gt; loadStoreFiles() throws IOException {<a name="line.516"></a>
-<span class="sourceLineNo">517</span>    Collection&lt;StoreFileInfo&gt; files = fs.getStoreFiles(getColumnFamilyName());<a name="line.517"></a>
-<span class="sourceLineNo">518</span>    return openStoreFiles(files);<a name="line.518"></a>
-<span class="sourceLineNo">519</span>  }<a name="line.519"></a>
-<span class="sourceLineNo">520</span><a name="line.520"></a>
-<span class="sourceLineNo">521</span>  private List&lt;HStoreFile&gt; openStoreFiles(Collection&lt;StoreFileInfo&gt; files) throws IOException {<a name="line.521"></a>
-<span class="sourceLineNo">522</span>    if (files == null || files.isEmpty()) {<a name="line.522"></a>
-<span class="sourceLineNo">523</span>      return new ArrayList&lt;&gt;();<a name="line.523"></a>
-<span class="sourceLineNo">524</span>    }<a name="line.524"></a>
-<span class="sourceLineNo">525</span>    // initialize the thread pool for opening store files in parallel..<a name="line.525"></a>
-<span class="sourceLineNo">526</span>    ThreadPoolExecutor storeFileOpenerThreadPool =<a name="line.526"></a>
-<span class="sourceLineNo">527</span>      this.region.getStoreFileOpenAndCloseThreadPool("StoreFileOpenerThread-" +<a name="line.527"></a>
-<span class="sourceLineNo">528</span>          this.getColumnFamilyName());<a name="line.528"></a>
-<span class="sourceLineNo">529</span>    CompletionService&lt;HStoreFile&gt; completionService = new ExecutorCompletionService&lt;&gt;(storeFileOpenerThreadPool);<a name="line.529"></a>
-<span class="sourceLineNo">530</span><a name="line.530"></a>
-<span class="sourceLineNo">531</span>    int totalValidStoreFile = 0;<a name="line.531"></a>
-<span class="sourceLineNo">532</span>    for (StoreFileInfo storeFileInfo : files) {<a name="line.532"></a>
-<span class="sourceLineNo">533</span>      // open each store file in parallel<a name="line.533"></a>
-<span class="sourceLineNo">534</span>      completionService.submit(() -&gt; this.createStoreFileAndReader(storeFileInfo));<a name="line.534"></a>
-<span class="sourceLineNo">535</span>      totalValidStoreFile++;<a name="line.535"></a>
-<span class="sourceLineNo">536</span>    }<a name="line.536"></a>
-<span class="sourceLineNo">537</span><a name="line.537"></a>
-<span class="sourceLineNo">538</span>    ArrayList&lt;HStoreFile&gt; results = new ArrayList&lt;&gt;(files.size());<a name="line.538"></a>
-<span class="sourceLineNo">539</span>    IOException ioe = null;<a name="line.539"></a>
-<span class="sourceLineNo">540</span>    try {<a name="line.540"></a>
-<span class="sourceLineNo">541</span>      for (int i = 0; i &lt; totalValidStoreFile; i++) {<a name="line.541"></a>
-<span class="sourceLineNo">542</span>        try {<a name="line.542"></a>
-<span class="sourceLineNo">543</span>          HStoreFile storeFile = completionService.take().get();<a name="line.543"></a>
-<span class="sourceLineNo">544</span>          if (storeFile != null) {<a name="line.544"></a>
-<span class="sourceLineNo">545</span>            long length = storeFile.getReader().length();<a name="line.545"></a>
-<span class="sourceLineNo">546</span>            this.storeSize += length;<a name="line.546"></a>
-<span class="sourceLineNo">547</span>            this.totalUncompressedBytes += storeFile.getReader().getTotalUncompressedBytes();<a name="line.547"></a>
-<span class="sourceLineNo">548</span>            if (LOG.isDebugEnabled()) {<a name="line.548"></a>
-<span class="sourceLineNo">549</span>              LOG.debug("loaded " + storeFile.toStringDetailed());<a name="line.549"></a>
-<span class="sourceLineNo">550</span>            }<a name="line.550"></a>
-<span class="sourceLineNo">551</span>            results.add(storeFile);<a name="line.551"></a>
-<span class="sourceLineNo">552</span>          }<a name="line.552"></a>
-<span class="sourceLineNo">553</span>        } catch (InterruptedException e) {<a name="line.553"></a>
-<span class="sourceLineNo">554</span>          if (ioe == null) ioe = new InterruptedIOException(e.getMessage());<a name="line.554"></a>
-<span class="sourceLineNo">555</span>        } catch (ExecutionException e) {<a name="line.555"></a>
-<span class="sourceLineNo">556</span>          if (ioe == null) ioe = new IOException(e.getCause());<a name="line.556"></a>
-<span class="sourceLineNo">557</span>        }<a name="line.557"></a>
-<span class="sourceLineNo">558</span>      }<a name="line.558"></a>
-<span class="sourceLineNo">559</span>    } finally {<a name="line.559"></a>
-<span class="sourceLineNo">560</span>      storeFileOpenerThreadPool.shutdownNow();<a name="line.560"></a>
-<span class="sourceLineNo">561</span>    }<a name="line.561"></a>
-<span class="sourceLineNo">562</span>    if (ioe != null) {<a name="line.562"></a>
-<span class="sourceLineNo">563</span>      // close StoreFile readers<a name="line.563"></a>
-<span class="sourceLineNo">564</span>      boolean evictOnClose =<a name="line.564"></a>
-<span class="sourceLineNo">565</span>          cacheConf != null? cacheConf.shouldEvictOnClose(): true;<a name="line.565"></a>
-<span class="sourceLineNo">566</span>      for (HStoreFile file : results) {<a name="line.566"></a>
-<span class="sourceLineNo">567</span>        try {<a name="line.567"></a>
-<span class="sourceLineNo">568</span>          if (file != null) file.closeStoreFile(evictOnClose);<a name="line.568"></a>
-<span class="sourceLineNo">569</span>        } catch (IOException e) {<a name="line.569"></a>
-<span class="sourceLineNo">570</span>          LOG.warn(e.getMessage());<a name="line.570"></a>
-<span class="sourceLineNo">571</span>        }<a name="line.571"></a>
-<span class="sourceLineNo">572</span>      }<a name="line.572"></a>
-<span class="sourceLineNo">573</span>      throw ioe;<a name="line.573"></a>
-<span class="sourceLineNo">574</span>    }<a name="line.574"></a>
-<span class="sourceLineNo">575</span><a name="line.575"></a>
-<span class="sourceLineNo">576</span>    return results;<a name="line.576"></a>
-<span class="sourceLineNo">577</span>  }<a name="line.577"></a>
-<span class="sourceLineNo">578</span><a name="line.578"></a>
-<span class="sourceLineNo">579</span>  @Override<a name="line.579"></a>
-<span class="sourceLineNo">580</span>  public void refreshStoreFiles() throws IOException {<a name="line.580"></a>
-<span class="sourceLineNo">581</span>    Collection&lt;StoreFileInfo&gt; newFiles = fs.getStoreFiles(getColumnFamilyName());<a name="line.581"></a>
-<span class="sourceLineNo">582</span>    refreshStoreFilesInternal(newFiles);<a name="line.582"></a>
-<span class="sourceLineNo">583</span>  }<a name="line.583"></a>
-<span class="sourceLineNo">584</span><a name="line.584"></a>
-<span class="sourceLineNo">585</span>  /**<a name="line.585"></a>
-<span class="sourceLineNo">586</span>   * Replaces the store files that the store has with the given files. Mainly used by secondary<a name="line.586"></a>
-<span class="sourceLineNo">587</span>   * region replicas to keep up to date with the primary region files.<a name="line.587"></a>
-<span class="sourceLineNo">588</span>   * @throws IOException<a name="line.588"></a>
-<span class="sourceLineNo">589</span>   */<a name="line.589"></a>
-<span class="sourceLineNo">590</span>  public void refreshStoreFiles(Collection&lt;String&gt; newFiles) throws IOException {<a name="line.590"></a>
-<span class="sourceLineNo">591</span>    List&lt;StoreFileInfo&gt; storeFiles = new ArrayList&lt;&gt;(newFiles.size());<a name="line.591"></a>
-<span class="sourceLineNo">592</span>    for (String file : newFiles) {<a name="line.592"></a>
-<span class="sourceLineNo">593</span>      storeFiles.add(fs.getStoreFileInfo(getColumnFamilyName(), file));<a name="line.593"></a>
-<span class="sourceLineNo">594</span>    }<a name="line.594"></a>
-<span class="sourceLineNo">595</span>    refreshStoreFilesInternal(storeFiles);<a name="line.595"></a>
-<span class="sourceLineNo">596</span>  }<a name="line.596"></a>
-<span class="sourceLineNo">597</span><a name="line.597"></a>
-<span class="sourceLineNo">598</span>  /**<a name="line.598"></a>
-<span class="sourceLineNo">599</span>   * Checks the underlying store files, and opens the files that  have not<a name="line.599"></a>
-<span class="sourceLineNo">600</span>   * been opened, and removes the store file readers for store files no longer<a name="line.600"></a>
-<span class="sourceLineNo">601</span>   * available. Mainly used by secondary region replicas to keep up to date with<a name="line.601"></a>
-<span class="sourceLineNo">602</span>   * the primary region files.<a name="line.602"></a>
-<span class="sourceLineNo">603</span>   * @throws IOException<a name="line.603"></a>
-<span class="sourceLineNo">604</span>   */<a name="line.604"></a>
-<span class="sourceLineNo">605</span>  private void refreshStoreFilesInternal(Collection&lt;StoreFileInfo&gt; newFiles) throws IOException {<a name="line.605"></a>
-<span class="sourceLineNo">606</span>    StoreFileManager sfm = storeEngine.getStoreFileManager();<a name="line.606"></a>
-<span class="sourceLineNo">607</span>    Collection&lt;HStoreFile&gt; currentFiles = sfm.getStorefiles();<a name="line.607"></a>
-<span class="sourceLineNo">608</span>    Collection&lt;HStoreFile&gt; compactedFiles = sfm.getCompactedfiles();<a name="line.608"></a>
-<span class="sourceLineNo">609</span>    if (currentFiles == null) currentFiles = Collections.emptySet();<a name="line.609"></a>
-<span class="sourceLineNo">610</span>    if (newFiles == null) newFiles = Collections.emptySet();<a name="line.610"></a>
-<span class="sourceLineNo">611</span>    if (compactedFiles == null) compactedFiles = Collections.emptySet();<a name="line.611"></a>
-<span class="sourceLineNo">612</span><a name="line.612"></a>
-<span class="sourceLineNo">613</span>    HashMap&lt;StoreFileInfo, HStoreFile&gt; currentFilesSet = new HashMap&lt;&gt;(currentFiles.size());<a name="line.613"></a>
-<span class="sourceLineNo">614</span>    for (HStoreFile sf : currentFiles) {<a name="line.614"></a>
-<span class="sourceLineNo">615</span>      currentFilesSet.put(sf.getFileInfo(), sf);<a name="line.615"></a>
-<span class="sourceLineNo">616</span>    }<a name="line.616"></a>
-<span class="sourceLineNo">617</span>    HashMap&lt;StoreFileInfo, HStoreFile&gt; compactedFilesSet = new HashMap&lt;&gt;(compactedFiles.size());<a name="line.617"></a>
-<span class="sourceLineNo">618</span>    for (HStoreFile sf : compactedFiles) {<a name="line.618"></a>
-<span class="sourceLineNo">619</span>      compactedFilesSet.put(sf.getFileInfo(), sf);<a name="line.619"></a>
-<span class="sourceLineNo">620</span>    }<a name="line.620"></a>
-<span class="sourceLineNo">621</span><a name="line.621"></a>
-<span class="sourceLineNo">622</span>    Set&lt;StoreFileInfo&gt; newFilesSet = new HashSet&lt;StoreFileInfo&gt;(newFiles);<a name="line.622"></a>
-<span class="sourceLineNo">623</span>    // Exclude the files that have already been compacted<a name="line.623"></a>
-<span class="sourceLineNo">624</span>    newFilesSet = Sets.difference(newFilesSet, compactedFilesSet.keySet());<a name="line.624"></a>
-<span class="sourceLineNo">625</span>    Set&lt;StoreFileInfo&gt; toBeAddedFiles = Sets.difference(newFilesSet, currentFilesSet.keySet());<a name="line.625"></a>
-<span class="sourceLineNo">626</span>    Set&lt;StoreFileInfo&gt; toBeRemovedFiles = Sets.difference(currentFilesSet.keySet(), newFilesSet);<a name="line.626"></a>
-<span class="sourceLineNo">627</span><a name="line.627"></a>
-<span class="sourceLineNo">628</span>    if (toBeAddedFiles.isEmpty() &amp;&amp; toBeRemovedFiles.isEmpty()) {<a name="line.628"></a>
-<span class="sourceLineNo">629</span>      return;<a name="line.629"></a>
-<span class="sourceLineNo">630</span>    }<a name="line.630"></a>
-<span class="sourceLineNo">631</span><a name="line.631"></a>
-<span class="sourceLineNo">632</span>    LOG.info("Refreshing store files for region " + this.getRegionInfo().getRegionNameAsString()<a name="line.632"></a>
-<span class="sourceLineNo">633</span>      + " files to add: " + toBeAddedFiles + " files to remove: " + toBeRemovedFiles);<a name="line.633"></a>
-<span class="sourceLineNo">634</span><a name="line.634"></a>
-<span class="sourceLineNo">635</span>    Set&lt;HStoreFile&gt; toBeRemovedStoreFiles = new HashSet&lt;&gt;(toBeRemovedFiles.size());<a name="line.635"></a>
-<span class="sourceLineNo">636</span>    for (StoreFileInfo sfi : toBeRemovedFiles) {<a name="line.636"></a>
-<span class="sourceLineNo">637</span>      toBeRemovedStoreFiles.add(currentFilesSet.get(sfi));<a name="line.637"></a>
-<span class="sourceLineNo">638</span>    }<a name="line.638"></a>
-<span class="sourceLineNo">639</span><a name="line.639"></a>
-<span class="sourceLineNo">640</span>    // try to open the files<a name="line.640"></a>
-<span class="sourceLineNo">641</span>    List&lt;HStoreFile&gt; openedFiles = openStoreFiles(toBeAddedFiles);<a name="line.641"></a>
-<span class="sourceLineNo">642</span><a name="line.642"></a>
-<span class="sourceLineNo">643</span>    // propogate the file changes to the underlying store file manager<a name="line.643"></a>
-<span class="sourceLineNo">644</span>    replaceStoreFiles(toBeRemovedStoreFiles, openedFiles); //won't throw an exception<a name="line.644"></a>
-<span class="sourceLineNo">645</span><a name="line.645"></a>
-<span class="sourceLineNo">646</span>    // Advance the memstore read point to be at least the new store files seqIds so that<a name="line.646"></a>
-<span class="sourceLineNo">647</span>    // readers might pick it up. This assumes that the store is not getting any writes (otherwise<a name="line.647"></a>
-<span class="sourceLineNo">648</span>    // in-flight transactions might be made visible)<a name="line.648"></a>
-<span class="sourceLineNo">649</span>    if (!toBeAddedFiles.isEmpty()) {<a name="line.649"></a>
-<span class="sourceLineNo">650</span>      // we must have the max sequence id here as we do have several store files<a name="line.650"></a>
-<span class="sourceLineNo">651</span>      region.getMVCC().advanceTo(this.getMaxSequenceId().getAsLong());<a name="line.651"></a>
-<span class="sourceLineNo">652</span>    }<a name="line.652"></a>
-<span class="sourceLineNo">653</span><a name="line.653"></a>
-<span class="sourceLineNo">654</span>    completeCompaction(toBeRemovedStoreFiles);<a name="line.654"></a>
-<span class="sourceLineNo">655</span>  }<a name="line.655"></a>
-<span class="sourceLineNo">656</span><a name="line.656"></a>
-<span class="sourceLineNo">657</span>  private HStoreFile createStoreFileAndReader(final Path p) throws IOException {<a name="line.657"></a>
-<span class="sourceLineNo">658</span>    StoreFileInfo info = new StoreFileInfo(conf, this.getFileSystem(), p);<a name="line.658"></a>
-<span class="sourceLineNo">659</span>    return createStoreFileAndReader(info);<a name="line.659"></a>
-<span class="sourceLineNo">660</span>  }<a name="line.660"></a>
-<span class="sourceLineNo">661</span><a name="line.661"></a>
-<span class="sourceLineNo">662</span>  private HStoreFile createStoreFileAndReader(StoreFileInfo info) throws IOException {<a name="line.662"></a>
-<span class="sourceLineNo">663</span>    info.setRegionCoprocessorHost(this.region.getCoprocessorHost());<a name="line.663"></a>
-<span class="sourceLineNo">664</span>    HStoreFile storeFile = new HStoreFile(this.getFileSystem(), info, this.conf, this.cacheConf,<a name="line.664"></a>
-<span class="sourceLineNo">665</span>        this.family.getBloomFilterType(), isPrimaryReplicaStore());<a name="line.665"></a>
-<span class="sourceLineNo">666</span>    storeFile.initReader();<a name="line.666"></a>
-<span class="sourceLineNo">667</span>    return storeFile;<a name="line.667"></a>
-<span class="sourceLineNo">668</span>  }<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>   * This message intends to inform the MemStore that next coming updates<a name="line.671"></a>
-<span class="sourceLineNo">672</span>   * are going to be part of the replaying edits from WAL<a name="line.672"></a>
-<span class="sourceLineNo">673</span>   */<a name="line.673"></a>
-<span class="sourceLineNo">674</span>  public void startReplayingFromWAL(){<a name="line.674"></a>
-<span class="sourceLineNo">675</span>    this.memstore.startReplayingFromWAL();<a name="line.675"></a>
-<span class="sourceLineNo">676</span>  }<a name="line.676"></a>
-<span class="sourceLineNo">677</span><a name="line.677"></a>
-<span class="sourceLineNo">678</span>  /**<a name="line.678"></a>
-<span class="sourceLineNo">679</span>   * This message intends to inform the MemStore that the replaying edits from WAL<a name="line.679"></a>
-<span class="sourceLineNo">680</span>   * are done<a name="line.680"></a>
-<span class="sourceLineNo">681</span>   */<a name="line.681"></a>
-<span class="sourceLineNo">682</span>  public void stopReplayingFromWAL(){<a name="line.682"></a>
-<span class="sourceLineNo">683</span>    this.memstore.stopReplayingFromWAL();<a name="line.683"></a>
-<span class="sourceLineNo">684</span>  }<a name="line.684"></a>
-<span class="sourceLineNo">685</span><a name="line.685"></a>
-<span class="sourceLineNo">686</span>  /**<a name="line.686"></a>
-<span class="sourceLineNo">687</span>   * Adds a value to the memstore<a name="line.687"></a>
-<span class="sourceLineNo">688</span>   */<a name="line.688"></a>
-<span class="sourceLineNo">689</span>  public void add(final Cell cell, MemStoreSizing memstoreSizing) {<a name="line.689"></a>
-<span class="sourceLineNo">690</span>    lock.readLock().lock();<a name="line.690"></a>
-<span class="sourceLineNo">691</span>    try {<a name="line.691"></a>
-<span class="sourceLineNo">692</span>       this.memstore.add(cell, memstoreSizing);<a name="line.692"></a>
-<span class="sourceLineNo">693</span>    } finally {<a name="line.693"></a>
-<span class="sourceLineNo">694</span>      lock.readLock().unlock();<a name="line.694"></a>
-<span class="sourceLineNo">695</span>    }<a name="line.695"></a>
-<span class="sourceLineNo">696</span>  }<a name="line.696"></a>
-<span class="sourceLineNo">697</span><a name="line.697"></a>
-<span class="sourceLineNo">698</span>  /**<a name="line.698"></a>
-<span class="sourceLineNo">699</span>   * Adds the specified value to the memstore<a name="line.699"></a>
-<span class="sourceLineNo">700</span>   */<a name="line.700"></a>
-<span class="sourceLineNo">701</span>  public void add(final Iterable&lt;Cell&gt; cells, MemStoreSizing memstoreSizing) {<a name="line.701"></a>
-<span class="sourceLineNo">702</span>    lock.readLock().lock();<a name="line.702"></a>
-<span class="sourceLineNo">703</span>    try {<a name="line.703"></a>
-<span class="sourceLineNo">704</span>      memstore.add(cells, memstoreSizing);<a name="line.704"></a>
-<span class="sourceLineNo">705</span>    } finally {<a name="line.705"></a>
-<span class="sourceLineNo">706</span>      lock.readLock().unlock();<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>  @Override<a name="line.710"></a>
-<span class="sourceLineNo">711</span>  public long timeOfOldestEdit() {<a name="line.711"></a>
-<span class="sourceLineNo">712</span>    return memstore.timeOfOldestEdit();<a name="line.712"></a>
-<span class="sourceLineNo">713</span>  }<a name="line.713"></a>
-<span class="sourceLineNo">714</span><a name="line.714"></a>
-<span class="sourceLineNo">715</span>  /**<a name="line.715"></a>
-<span class="sourceLineNo">716</span>   * @return All store files.<a name="line.716"></a>
-<span class="sourceLineNo">717</span>   */<a name="line.717"></a>
-<span class="sourceLineNo">718</span>  @Override<a name="line.718"></a>
-<span class="sourceLineNo">719</span>  public Collection&lt;HStoreFile&gt; getStorefiles() {<a name="line.719"></a>
-<span class="sourceLineNo">720</span>    return this.storeEngine.getStoreFileManager().getStorefiles();<a name="line.720"></a>
-<span class="sourceLineNo">721</span>  }<a name="line.721"></a>
-<span class="sourceLineNo">722</span><a name="line.722"></a>
-<span class="sourceLineNo">723</span>  @Override<a name="line.723"></a>
-<span class="sourceLineNo">724</span>  public Collection&lt;HStoreFile&gt; getCompactedFiles() {<a name="line.724"></a>
-<span class="sourceLineNo">725</span>    return this.storeEngine.getStoreFileManager().getCompactedfiles();<a name="line.725"></a>
-<span class="sourceLineNo">726</span>  }<a name="line.726"></a>
-<span class="sourceLineNo">727</span><a name="line.727"></a>
-<span class="sourceLineNo">728</span>  /**<a name="line.728"></a>
-<span class="sourceLineNo">729</span>   * This throws a WrongRegionException if the HFile does not fit in this region, or an<a name="line.729"></a>
-<span class="sourceLineNo">730</span>   * InvalidHFileException if the HFile is not valid.<a name="line.730"></a>
-<span class="sourceLineNo">731</span>   */<a name="line.731"></a>
-<span class="sourceLineNo">732</span>  public void assertBulkLoadHFileOk(Path srcPath) throws IOException {<a name="line.732"></a>
-<span class="sourceLineNo">733</span>    HFile.Reader reader  = null;<a name="line.733"></a>
-<span class="sourceLineNo">734</span>    try {<a name="line.734"></a>
-<span class="sourceLineNo">735</span>      LOG.info("Validating hfile at " + srcPath + " for inclusion in "<a name="line.735"></a>
-<span class="sourceLineNo">736</span>          + "store " + this + " region " + this.getRegionInfo().getRegionNameAsString());<a name="line.736"></a>
-<span class="sourceLineNo">737</span>      reader = HFile.createReader(srcPath.getFileSystem(conf), srcPath, cacheConf,<a name="line.737"></a>
-<span class="sourceLineNo">738</span>        isPrimaryReplicaStore(), conf);<a name="line.738"></a>
-<span class="sourceLineNo">739</span>      reader.loadFileInfo();<a name="line.739"></a>
-<span class="sourceLineNo">740</span><a name="line.740"></a>
-<span class="sourceLineNo">741</span>      Optional&lt;byte[]&gt; firstKey = reader.getFirstRowKey();<a name="line.741"></a>
-<span class="sourceLineNo">742</span>      Preconditions.checkState(firstKey.isPresent(), "First key can not be null");<a name="line.742"></a>
-<span class="sourceLineNo">743</span>      Optional&lt;Cell&gt; lk = reader.getLastKey();<a name="line.743"></a>
-<span class="sourceLineNo">744</span>      Preconditions.checkState(lk.isPresent(), "Last key can not be null");<a name="line.744"></a>
-<span class="sourceLineNo">745</span>      byte[] lastKey =  CellUtil.cloneRow(lk.get());<a name="line.745"></a>
-<span class="sourceLineNo">746</span><a name="line.746"></a>
-<span class="sourceLineNo">747</span>      LOG.debug("HFile bounds: first=" + Bytes.toStringBinary(firstKey.get()) +<a name="line.747"></a>
-<span class="sourceLineNo">748</span>          " last=" + Bytes.toStringBinary(lastKey));<a name="line.748"></a>
-<span class="sourceLineNo">749</span>      LOG.debug("Region bounds: first=" +<a name="line.749"></a>
-<span class="sourceLineNo">750</span>          Bytes.toStringBinary(getRegionInfo().getStartKey()) +<a name="line.750"></a>
-<span class="sourceLineNo">751</span>          " last=" + Bytes.toStringBinary(getRegionInfo().getEndKey()));<a name="line.751"></a>
-<span class="sourceLineNo">752</span><a name="line.752"></a>
-<span class="sourceLineNo">753</span>      if (!this.getRegionInfo().containsRange(firstKey.get(), lastKey)) {<a name="line.753"></a>
-<span class="sourceLineNo">754</span>        throw new WrongRegionException(<a name="line.754"></a>
-<span class="sourceLineNo">755</span>            "Bulk load file " + srcPath.toString() + " does not fit inside region "<a name="line.755"></a>
-<span class="sourceLineNo">756</span>            + this.getRegionInfo().getRegionNameAsString());<a name="line.756"></a>
-<span class="sourceLineNo">757</span>      }<a name="line.757"></a>
-<span class="sourceLineNo">758</span><a name="line.758"></a>
-<span class="sourceLineNo">759</span>      if(reader.length() &gt; conf.getLong(HConstants.HREGION_MAX_FILESIZE,<a name="line.759"></a>
-<span class="sourceLineNo">760</span>          HConstants.DEFAULT_MAX_FILE_SIZE)) {<a name="line.760"></a>
-<span class="sourceLineNo">761</span>        LOG.warn("Trying to bulk load hfile " + srcPath.toString() + " with size: " +<a name="line.761"></a>
-<span class="sourceLineNo">762</span>            reader.length() + " bytes can be problematic as it may lead to oversplitting.");<a name="line.762"></a>
-<span class="sourceLineNo">763</span>      }<a name="line.763"></a>
-<span class="sourceLineNo">764</span><a name="line.764"></a>
-<span class="sourceLineNo">765</span>      if (verifyBulkLoads) {<a name="line.765"></a>
-<span class="sourceLineNo">766</span>        long verificationStartTime = EnvironmentEdgeManager.currentTime();<a name="line.766"></a>
-<span class="sourceLineNo">767</span>        LOG.info("Full verification started for bulk load hfile: " + srcPath.toString());<a name="line.767"></a>
-<span class="sourceLineNo">768</span>        Cell prevCell = null;<a name="line.768"></a>
-<span class="sourceLineNo">769</span>        HFileScanner scanner = reader.getScanner(false, false, false);<a name="line.769"></a>
-<span class="sourceLineNo">770</span>        scanner.seekTo();<a name="line.770"></a>
-<span class="sourceLineNo">771</span>        do {<a name="line.771"></a>
-<span class="sourceLineNo">772</span>          Cell cell = scanner.getCell();<a name="line.772"></a>
-<span class="sourceLineNo">773</span>          if (prevCell != null) {<a name="line.773"></a>
-<span class="sourceLineNo">774</span>            if (comparator.compareRows(prevCell, cell) &gt; 0) {<a name="line.774"></a>
-<span class="sourceLineNo">775</span>              throw new InvalidHFileException("Previous row is greater than"<a name="line.775"></a>
-<span class="sourceLineNo">776</span>                  + " current row: path=" + srcPath + " previous="<a name="line.776"></a>
-<span class="sourceLineNo">777</span>                  + CellUtil.getCellKeyAsString(prevCell) + " current="<a name="line.777"></a>
-<span class="sourceLineNo">778</span>                  + CellUtil.getCellKeyAsString(cell));<a name="line.778"></a>
-<span class="sourceLineNo">779</span>            }<a name="line.779"></a>
-<span class="sourceLineNo">780</span>            if (CellComparator.getInstance().compareFamilies(prevCell, cell) != 0) {<a name="line.780"></a>
-<span class="sourceLineNo">781</span>              throw new InvalidHFileException("Previous key had different"<a name="line.781"></a>
-<span class="sourceLineNo">782</span>                  + " family compared to current key: path=" + srcPath<a name="line.782"></a>
-<span class="sourceLineNo">783</span>                  + " previous="<a name="line.783"></a>
-<span class="sourceLineNo">784</span>                  + Bytes.toStringBinary(prevCell.getFamilyArray(), prevCell.getFamilyOffset(),<a name="line.784"></a>
-<span class="sourceLineNo">785</span>                      prevCell.getFamilyLength())<a name="line.785"></a>
-<span class="sourceLineNo">786</span>                  + " current="<a name="line.786"></a>
-<span class="sourceLineNo">787</span>                  + Bytes.toStringBinary(cell.getFamilyArray(), cell.getFamilyOffset(),<a name="line.787"></a>
-<span class="sourceLineNo">788</span>                      cell.getFamilyLength()));<a name="line.788"></a>
-<span class="sourceLineNo">789</span>            }<a name="line.789"></a>
-<span class="sourceLineNo">790</span>          }<a name="line.790"></a>
-<span class="sourceLineNo">791</span>          prevCell = cell;<a name="line.791"></a>
-<span class="sourceLineNo">792</span>        } while (scanner.next());<a name="line.792"></a>
-<span class="sourceLineNo">793</span>      LOG.info("Full verification complete for bulk load hfile: " + srcPath.toString()<a name="line.793"></a>
-<span class="sourceLineNo">794</span>         + " took " + (EnvironmentEdgeManager.currentTime() - verificationStartTime)<a name="line.794"></a>
-<span class="sourceLineNo">795</span>         + " ms");<a name="line.795"></a>
-<span class="sourceLineNo">796</span>      }<a name="line.796"></a>
-<span class="sourceLineNo">797</span>    } finally {<a name="line.797"></a>
-<span class="sourceLineNo">798</span>      if (reader != null) reader.close();<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>  /**<a name="line.802"></a>
-<span class="sourceLineNo">803</span>   * This method should only be called from Region. It is assumed that the ranges of values in the<a name="line.803"></a>
-<span class="sourceLineNo">804</span>   * HFile fit within the stores assigned region. (assertBulkLoadHFileOk checks this)<a name="line.804"></a>
-<span class="sourceLineNo">805</span>   *<a name="line.805"></a>
-<span class="sourceLineNo">806</span>   * @param srcPathStr<a name="line.806"></a>
-<span class="sourceLineNo">807</span>   * @param seqNum sequence Id associated with the HFile<a name="line.807"></a>
-<span class="sourceLineNo">808</span>   */<a name="line.808"></a>
-<span class="sourceLineNo">809</span>  public Pair&lt;Path, Path&gt; preBulkLoadHFile(String srcPathStr, long seqNum) throws IOException {<a name="line.809"></a>
-<span class="sourceLineNo">810</span>    Path srcPath = new Path(srcPathStr);<a name="line.810"></a>
-<span class="sourceLineNo">811</span>    return fs.bulkLoadStoreFile(getColumnFamilyName(), srcPath, seqNum);<a name="line.811"></a>
-<span class="sourceLineNo">812</span>  }<a name="line.812"></a>
-<span class="sourceLineNo">813</span><a name="line.813"></a>
-<span class="sourceLineNo">814</span>  public Path bulkLoadHFile(byte[] family, String srcPathStr, Path dstPath) throws IOException {<a name="line.814"></a>
-<span class="sourceLineNo">815</span>    Path srcPath = new Path(srcPathStr);<a name="line.815"></a>
-<span class="sourceLineNo">816</span>    try {<a name="line.816"></a>
-<span class="sourceLineNo">817</span>      fs.commitStoreFile(srcPath, dstPath);<a name="line.817"></a>
-<span class="sourceLineNo">818</span>    } finally {<a name="line.818"></a>
-<span class="sourceLineNo">819</span>      if (this.getCoprocessorHost() != null) {<a name="line.819"></a>
-<span class="sourceLineNo">820</span>        this.getCoprocessorHost().postCommitStoreFile(family, srcPath, dstPath);<a name="line.820"></a>
-<span class="sourceLineNo">821</span>      }<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>    LOG.info("Loaded HFile " + srcPath + " into store '" + getColumnFamilyName() + "' as "<a name="line.824"></a>
-<span class="sourceLineNo">825</span>        + dstPath + " - updating store file list.");<a name="line.825"></a>
-<span class="sourceLineNo">826</span><a name="line.826"></a>
-<span class="sourceLineNo">827</span>    HStoreFile sf = createStoreFileAndReader(dstPath);<a name="line.827"></a>
-<span class="sourceLineNo">828</span>    bulkLoadHFile(sf);<a name="line.828"></a>
-<span class="sourceLineNo">829</span><a name="line.829"></a>
-<span class="sourceLineNo">830</span>    LOG.info("Successfully loaded store file " + srcPath + " into store " + this<a name="line.830"></a>
-<span class="sourceLineNo">831</span>        + " (new location: " + dstPath + ")");<a name="line.831"></a>
-<span class="sourceLineNo">832</span><a name="line.832"></a>
-<span class="sourceLineNo">833</span>    return dstPath;<a name="line.833"></a>
-<span class="sourceLineNo">834</span>  }<a name="line.834"></a>
-<span class="sourceLineNo">835</span><a name="line.835"></a>
-<span class="sourceLineNo">836</span>  public void bulkLoadHFile(StoreFileInfo fileInfo) throws IOException {<a name="line.836"></a>
-<span class="sourceLineNo">837</span>    HStoreFile sf = createStoreFileAndReader(fileInfo);<a name="line.837"></a>
-<span class="sourceLineNo">838</span>    bulkLoadHFile(sf);<a name="line.838"></a>
-<span class="sourceLineNo">839</span>  }<a name="line.839"></a>
-<span class="sourceLineNo">840</span><a name="line.840"></a>
-<span class="sourceLineNo">841</span>  private void bulkLoadHFile(HStoreFile sf) throws IOException {<a name="line.841"></a>
-<span class="sourceLineNo">842</span>    StoreFileReader r = sf.getReader();<a name="line.842"></a>
-<span class="sourceLineNo">843</span>    this.storeSize += r.length();<a name="line.843"></a>
-<span class="sourceLineNo">844</span>    this.totalUncompressedBytes += r.getTotalUncompressedBytes();<a name="line.844"></a>
-<span class="sourceLineNo">845</span><a name="line.845"></a>
-<span class="sourceLineNo">846</span>    // Append the new storefile into the list<a name="line.846"></a>
-<span class="sourceLineNo">847</span>    this.lock.writeLock().lock();<a name="line.847"></a>
-<span class="sourceLineNo">848</span>    try {<a name="line.848"></a>
-<span class="sourceLineNo">849</span>      this.storeEngine.getStoreFileManager().insertNewFiles(Lists.newArrayList(sf));<a name="line.849"></a>
-<span class="sourceLineNo">850</span>    } finally {<a name="line.850"></a>
-<span class="sourceLineNo">851</span>      // We need the lock, as long as we are updating the storeFiles<a name="line.851"></a>
-<span class="sourceLineNo">852</span>      // or changing the memstore. Let us release it before calling<a name="line.852"></a>
-<span class="sourceLineNo">853</span>      // notifyChangeReadersObservers. See HBASE-4485 for a possible<a name="line.853"></a>
-<span class="sourceLineNo">854</span>      // deadlock scenario that could have happened if continue to hold<a name="line.854"></a>
-<span class="sourceLineNo">855</span>      // the lock.<a name="line.855"></a>
-<span class="sourceLineNo">856</span>      this.lock.writeLock().unlock();<a name="line.856"></a>
-<span class="sourceLineNo">857</span>    }<a name="line.857"></a>
-<span class="sourceLineNo">858</span>    LOG.info("Loaded HFile " + sf.getFileInfo() + " into store '" + getColumnFamilyName());<a name="line.858"></a>
-<span class="sourceLineNo">859</span>    if (LOG.isTraceEnabled()) {<a name="line.859"></a>
-<span class="sourceLineNo">860</span>      String traceMessage = "BULK LOAD time,size,store size,store files ["<a name="line.860"></a>
-<span class="sourceLineNo">861</span>          + EnvironmentEdgeManager.currentTime() + "," + r.length() + "," + storeSize<a name="line.861"></a>
-<span class="sourceLineNo">862</span>          + "," + storeEngine.getStoreFileManager().getStorefileCount() + "]";<a name="line.862"></a>
-<span class="sourceLineNo">863</span>      LOG.trace(traceMessage);<a name="line.863"></a>
-<span class="sourceLineNo">864</span>    }<a name="line.864"></a>
-<span class="sourceLineNo">865</span>  }<a name="line.865"></a>
-<span class="sourceLineNo">866</span><a name="line.866"></a>
-<span class="sourceLineNo">867</span>  /**<a name="line.867"></a>
-<span class="sourceLineNo">868</span>   * Close all the readers We don't need to worry about subsequent requests because the Region holds<a name="line.868"></a>
-<span class="sourceLineNo">869</span>   * a write lock that will prevent any more reads or writes.<a name="line.869"></a>
-<span class="sourceLineNo">870</span>   * @return the {@link StoreFile StoreFiles} that were previously being used.<a name="line.870"></a>
-<span class="sourceLineNo">871</span>   * @throws IOException on failure<a name="line.871"></a>
-<span class="sourceLineNo">872</span>   */<a name="line.872"></a>
-<span class="sourceLineNo">873</span>  public ImmutableCollection&lt;HStoreFile&gt; close() throws IOException {<a name="line.873"></a>
-<span class="sourceLineNo">874</span>    this.archiveLock.lock();<a name="line.874"></a>
-<span class="sourceLineNo">875</span>    this.lock.writeLock().lock();<a name="line.875"></a>
-<span class="sourceLineNo">876</span>    try {<a name="line.876"></a>
-<span class="sourceLineNo">877</span>      // Clear so metrics doesn't find them.<a name="line.877"></a>
-<span class="sourceLineNo">878</span>      ImmutableCollection&lt;HStoreFile&gt; result = storeEngine.getStoreFileManager().clearFiles();<a name="line.878"></a>
-<span class="sourceLineNo">879</span>      Collection&lt;HStoreFile&gt; compactedfiles =<a name="line.879"></a>
-<span class="sourceLineNo">880</span>          storeEngine.getStoreFileManager().clearCompactedFiles();<a name="line.880"></a>
-<span class="sourceLineNo">881</span>      // clear the compacted files<a name="line.881"></a>
-<span class="sourceLineNo">882</span>      if (compactedfiles != null &amp;&amp; !compactedfiles.isEmpty()) {<a name="line.882"></a>
-<span class="sourceLineNo">883</span>        removeCompactedfiles(compactedfiles);<a name="line.883"></a>
-<span class="sourceLineNo">884</span>      }<a name="line.884"></a>
-<span class="sourceLineNo">885</span>      if (!result.isEmpty()) {<a name="line.885"></a>
-<span class="sourceLineNo">886</span>        // initialize the thread pool for closing store files in parallel.<a name="line.886"></a>
-<span class="sourceLineNo">887</span>        ThreadPoolExecutor storeFileCloserThreadPool = this.region<a name="line.887"></a>
-<span class="sourceLineNo">888</span>            .getStoreFileOpenAndCloseThreadPool("StoreFileCloserThread-"<a name="line.888"></a>
-<span class="sourceLineNo">889</span>                + this.getColumnFamilyName());<a name="line.889"></a>
-<span class="sourceLineNo">890</span><a name="line.890"></a>
-<span class="sourceLineNo">891</span>        // close each store file in parallel<a name="line.891"></a>
-<span class="sourceLineNo">892</span>        CompletionService&lt;Void&gt; completionService =<a name="line.892"></a>
-<span class="sourceLineNo">893</span>          new ExecutorCompletionService&lt;&gt;(storeFileCloserThreadPool);<a name="line.893"></a>
-<span class="sourceLineNo">894</span>        for (HStoreFile f : result) {<a name="line.894"></a>
-<span class="sourceLineNo">895</span>          completionService.submit(new Callable&lt;Void&gt;() {<a name="line.895"></a>
-<span class="sourceLineNo">896</span>            @Override<a name="line.896"></a>
-<span class="sourceLineNo">897</span>            public Void call() throws IOException {<a name="line.897"></a>
-<span class="sourceLineNo">898</span>              boolean evictOnClose =<a name="line.898"></a>
-<span class="sourceLineNo">899</span>                  cacheConf != null? cacheConf.shouldEvictOnClose(): true;<a name="line.899"></a>
-<span class="sourceLineNo">900</span>              f.closeStoreFile(evictOnClose);<a name="line.900"></a>
-<span class="sourceLineNo">901</span>              return null;<a name="line.901"></a>
-<span class="sourceLineNo">902</span>            }<a name="line.902"></a>
-<span class="sourceLineNo">903</span>          });<a name="line.903"></a>
-<span class="sourceLineNo">904</span>        }<a name="line.904"></a>
-<span class="sourceLineNo">905</span><a name="line.905"></a>
-<span class="sourceLineNo">906</span>        IOException ioe = null;<a name="line.906"></a>
-<span class="sourceLineNo">907</span>        try {<a name="line.907"></a>
-<span class="sourceLineNo">908</span>          for (int i = 0; i &lt; result.size(); i++) {<a name="line.908"></a>
-<span class="sourceLineNo">909</span>            try {<a name="line.909"></a>
-<span class="sourceLineNo">910</span>              Future&lt;Void&gt; future = completionService.take();<a name="line.910"></a>
-<span class="sourceLineNo">911</span>              future.get();<a name="line.911"></a>
-<span class="sourceLineNo">912</span>            } catch (InterruptedException e) {<a name="line.912"></a>
-<span class="sourceLineNo">913</span>              if (ioe == null) {<a name="line.913"></a>
-<span class="sourceLineNo">914</span>                ioe = new InterruptedIOException();<a name="line.914"></a>
-<span class="sourceLineNo">915</span>                ioe.initCause(e);<a name="line.915"></a>
-<span class="sourceLineNo">916</span>              }<a name="line.916"></a>
-<span class="sourceLineNo">917</span>            } catch (ExecutionException e) {<a name="line.917"></a>
-<span class="sourceLineNo">918</span>              if (ioe == null) ioe = new IOException(e.getCause());<a name="line.918"></a>
-<span class="sourceLineNo">919</span>            }<a name="line.919"></a>
-<span class="sourceLineNo">920</span>          }<a name="line.920"></a>
-<span class="sourceLineNo">921</span>        } finally {<a name="line.921"></a>
-<span class="sourceLineNo">922</span>          storeFileCloserThreadPool.shutdownNow();<a name="line.922"></a>
-<span class="sourceLineNo">923</span>        }<a name="line.923"></a>
-<span class="sourceLineNo">924</span>        if (ioe != null) throw ioe;<a name="line.924"></a>
-<span class="sourceLineNo">925</span>      }<a name="line.925"></a>
-<span class="sourceLineNo">926</span>      LOG.info("Closed " + this);<a name="line.926"></a>
-<span class="sourceLineNo">927</span>      return result;<a name="line.927"></a>
-<span class="sourceLineNo">928</span>    } finally {<a name="line.928"></a>
-<span class="sourceLineNo">929</span>      this.lock.writeLock().unlock();<a name="line.929"></a>
-<span class="sourceLineNo">930</span>      this.archiveLock.unlock();<a name="line.930"></a>
-<span class="sourceLineNo">931</span>    }<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>  /**<a name="line.934

<TRUNCATED>

[49/51] [partial] hbase-site git commit: Published site at .

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/c54c242b/checkstyle-aggregate.html
----------------------------------------------------------------------
diff --git a/checkstyle-aggregate.html b/checkstyle-aggregate.html
index e486bb8..718d005 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="20171202" />
+    <meta name="Date-Revision-yyyymmdd" content="20171203" />
     <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" />
@@ -286,10 +286,10 @@
 <th><img src="images/icon_warning_sml.gif" alt="" />&#160;Warnings</th>
 <th><img src="images/icon_error_sml.gif" alt="" />&#160;Errors</th></tr>
 <tr class="b">
-<td>3444</td>
+<td>3447</td>
 <td>0</td>
 <td>0</td>
-<td>20767</td></tr></table></div>
+<td>20747</td></tr></table></div>
 <div class="section">
 <h2><a name="Files"></a>Files</h2>
 <table border="0" class="table table-striped">
@@ -372,7 +372,7 @@
 <td><a href="#org.apache.hadoop.hbase.CellScanner.java">org/apache/hadoop/hbase/CellScanner.java</a></td>
 <td>0</td>
 <td>0</td>
-<td>1</td></tr>
+<td>2</td></tr>
 <tr class="a">
 <td><a href="#org.apache.hadoop.hbase.CellUtil.java">org/apache/hadoop/hbase/CellUtil.java</a></td>
 <td>0</td>
@@ -2042,7 +2042,7 @@
 <td><a href="#org.apache.hadoop.hbase.client.RpcRetryingCallerImpl.java">org/apache/hadoop/hbase/client/RpcRetryingCallerImpl.java</a></td>
 <td>0</td>
 <td>0</td>
-<td>4</td></tr>
+<td>2</td></tr>
 <tr class="a">
 <td><a href="#org.apache.hadoop.hbase.client.RpcRetryingCallerWithReadReplicas.java">org/apache/hadoop/hbase/client/RpcRetryingCallerWithReadReplicas.java</a></td>
 <td>0</td>
@@ -2634,20 +2634,10 @@
 <td>0</td>
 <td>3</td></tr>
 <tr class="a">
-<td><a href="#org.apache.hadoop.hbase.client.TestZKAsyncRegistry.java">org/apache/hadoop/hbase/client/TestZKAsyncRegistry.java</a></td>
-<td>0</td>
-<td>0</td>
-<td>15</td></tr>
-<tr class="b">
 <td><a href="#org.apache.hadoop.hbase.client.VersionInfoUtil.java">org/apache/hadoop/hbase/client/VersionInfoUtil.java</a></td>
 <td>0</td>
 <td>0</td>
 <td>2</td></tr>
-<tr class="a">
-<td><a href="#org.apache.hadoop.hbase.client.ZKAsyncRegistry.java">org/apache/hadoop/hbase/client/ZKAsyncRegistry.java</a></td>
-<td>0</td>
-<td>0</td>
-<td>1</td></tr>
 <tr class="b">
 <td><a href="#org.apache.hadoop.hbase.client.backoff.ClientBackoffPolicyFactory.java">org/apache/hadoop/hbase/client/backoff/ClientBackoffPolicyFactory.java</a></td>
 <td>0</td>
@@ -4712,7 +4702,7 @@
 <td><a href="#org.apache.hadoop.hbase.ipc.BlockingRpcConnection.java">org/apache/hadoop/hbase/ipc/BlockingRpcConnection.java</a></td>
 <td>0</td>
 <td>0</td>
-<td>3</td></tr>
+<td>2</td></tr>
 <tr class="a">
 <td><a href="#org.apache.hadoop.hbase.ipc.BufferCallBeforeInitHandler.java">org/apache/hadoop/hbase/ipc/BufferCallBeforeInitHandler.java</a></td>
 <td>0</td>
@@ -8387,7 +8377,7 @@
 <td><a href="#org.apache.hadoop.hbase.regionserver.StoreFlushContext.java">org/apache/hadoop/hbase/regionserver/StoreFlushContext.java</a></td>
 <td>0</td>
 <td>0</td>
-<td>5</td></tr>
+<td>4</td></tr>
 <tr class="b">
 <td><a href="#org.apache.hadoop.hbase.regionserver.StoreFlusher.java">org/apache/hadoop/hbase/regionserver/StoreFlusher.java</a></td>
 <td>0</td>
@@ -9437,7 +9427,7 @@
 <td><a href="#org.apache.hadoop.hbase.regionserver.wal.WALActionsListener.java">org/apache/hadoop/hbase/regionserver/wal/WALActionsListener.java</a></td>
 <td>0</td>
 <td>0</td>
-<td>6</td></tr>
+<td>5</td></tr>
 <tr class="b">
 <td><a href="#org.apache.hadoop.hbase.regionserver.wal.WALCellCodec.java">org/apache/hadoop/hbase/regionserver/wal/WALCellCodec.java</a></td>
 <td>0</td>
@@ -12932,7 +12922,7 @@
 <li>sortStaticImportsAlphabetically: <tt>&quot;true&quot;</tt></li>
 <li>groups: <tt>&quot;*,org.apache.hadoop.hbase.shaded&quot;</tt></li>
 <li>option: <tt>&quot;top&quot;</tt></li></ul></td>
-<td>2527</td>
+<td>2521</td>
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td></tr>
 <tr class="a">
 <td></td>
@@ -12944,7 +12934,7 @@
 <td><a class="externalLink" href="http://checkstyle.sourceforge.net/config_imports.html#UnusedImports">UnusedImports</a>
 <ul>
 <li>processJavadoc: <tt>&quot;true&quot;</tt></li></ul></td>
-<td>220</td>
+<td>221</td>
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td></tr>
 <tr class="a">
 <td>indentation</td>
@@ -12955,19 +12945,19 @@
 <li>caseIndent: <tt>&quot;2&quot;</tt></li>
 <li>basicOffset: <tt>&quot;2&quot;</tt></li>
 <li>lineWrappingIndentation: <tt>&quot;2&quot;</tt></li></ul></td>
-<td>6263</td>
+<td>6248</td>
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td></tr>
 <tr class="b">
 <td>javadoc</td>
 <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>843</td>
+<td>861</td>
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td></tr>
 <tr class="a">
 <td></td>
 <td><a class="externalLink" href="http://checkstyle.sourceforge.net/config_javadoc.html#NonEmptyAtclauseDescription">NonEmptyAtclauseDescription</a></td>
-<td>4333</td>
+<td>4315</td>
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td></tr>
 <tr class="b">
 <td>misc</td>
@@ -13680,428 +13670,434 @@
 <th>Line</th></tr>
 <tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
+<td>imports</td>
+<td>UnusedImports</td>
+<td>Unused import - org.apache.yetus.audience.InterfaceStability.</td>
+<td>24</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>61</td></tr></table></div>
+<td>60</td></tr></table></div>
 <div class="section">
 <h3 id="org.apache.hadoop.hbase.CellUtil.java">org/apache/hadoop/hbase/CellUtil.java</h3>
 <table border="0" class="table table-striped">
-<tr class="b">
+<tr class="a">
 <th>Severity</th>
 <th>Category</th>
 <th>Rule</th>
 <th>Message</th>
 <th>Line</th></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>imports</td>
 <td>ImportOrder</td>
 <td>Wrong order for 'org.apache.hadoop.hbase.util.ByteBufferUtils' import.</td>
 <td>41</td></tr>
-<tr class="b">
+<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>142</td></tr>
-<tr class="a">
+<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>155</td></tr>
-<tr class="b">
+<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>156</td></tr>
-<tr class="a">
+<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>372</td></tr>
-<tr class="b">
+<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>373</td></tr>
-<tr class="a">
+<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>374</td></tr>
-<tr class="b">
+<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>385</td></tr>
-<tr class="a">
+<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>386</td></tr>
-<tr class="b">
+<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>387</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>annotation</td>
 <td>MissingDeprecated</td>
 <td>Must include both @java.lang.Deprecated annotation and @deprecated Javadoc tag with description.</td>
 <td>398</td></tr>
-<tr class="b">
+<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>416</td></tr>
-<tr class="a">
+<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>518</td></tr>
-<tr class="b">
+<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>530</td></tr>
-<tr class="a">
+<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>531</td></tr>
-<tr class="b">
+<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>548</td></tr>
-<tr class="a">
+<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>549</td></tr>
-<tr class="b">
+<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>550</td></tr>
-<tr class="a">
+<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>603</td></tr>
-<tr class="b">
+<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>621</td></tr>
-<tr class="a">
+<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>624</td></tr>
-<tr class="b">
+<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>632</td></tr>
-<tr class="a">
+<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>636</td></tr>
-<tr class="b">
+<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>641</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>JavadocTagContinuationIndentation</td>
 <td>Line continuation have incorrect indentation level, expected level should be 2.</td>
 <td>643</td></tr>
-<tr class="b">
+<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>646</td></tr>
-<tr class="a">
+<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>666</td></tr>
-<tr class="b">
+<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>676</td></tr>
-<tr class="a">
+<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>682</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>JavadocTagContinuationIndentation</td>
 <td>Line continuation have incorrect indentation level, expected level should be 2.</td>
 <td>691</td></tr>
-<tr class="a">
+<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>709</td></tr>
-<tr class="b">
+<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>724</td></tr>
-<tr class="a">
+<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>725</td></tr>
-<tr class="b">
+<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>822</td></tr>
-<tr class="a">
+<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>836</td></tr>
-<tr class="b">
+<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>850</td></tr>
-<tr class="a">
+<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>865</td></tr>
-<tr class="b">
+<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>992</td></tr>
-<tr class="a">
+<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>1019</td></tr>
-<tr class="b">
+<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>1032</td></tr>
-<tr class="a">
+<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>1033</td></tr>
-<tr class="b">
+<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>1034</td></tr>
-<tr class="a">
+<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>1113</td></tr>
-<tr class="b">
+<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>1114</td></tr>
-<tr class="a">
+<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>1125</td></tr>
-<tr class="b">
+<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>1126</td></tr>
-<tr class="a">
+<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>1137</td></tr>
-<tr class="b">
+<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>1151</td></tr>
-<tr class="a">
+<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>1152</td></tr>
-<tr class="b">
+<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>1165</td></tr>
-<tr class="a">
+<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>1191</td></tr>
-<tr class="b">
+<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>1205</td></tr>
-<tr class="a">
+<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 107).</td>
 <td>1212</td></tr>
-<tr class="b">
+<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>1221</td></tr>
-<tr class="a">
+<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>1231</td></tr>
-<tr class="b">
+<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>1252</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>JavadocTagContinuationIndentation</td>
 <td>Line continuation have incorrect indentation level, expected level should be 2.</td>
 <td>1254</td></tr>
-<tr class="b">
+<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>1264</td></tr>
-<tr class="a">
+<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>1265</td></tr>
-<tr class="b">
+<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>1266</td></tr>
-<tr class="a">
+<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>1267</td></tr>
-<tr class="b">
+<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>1268</td></tr>
-<tr class="a">
+<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>1359</td></tr>
-<tr class="b">
+<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>1360</td></tr>
-<tr class="a">
+<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>1366</td></tr>
-<tr class="b">
+<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>1389</td></tr>
-<tr class="a">
+<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>1390</td></tr>
-<tr class="b">
+<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>1475</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>blocks</td>
 <td>NeedBraces</td>
@@ -14110,37 +14106,37 @@
 <div class="section">
 <h3 id="org.apache.hadoop.hbase.ChoreService.java">org/apache/hadoop/hbase/ChoreService.java</h3>
 <table border="0" class="table table-striped">
-<tr class="b">
+<tr class="a">
 <th>Severity</th>
 <th>Category</th>
 <th>Rule</th>
 <th>Message</th>
 <th>Line</th></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>imports</td>
 <td>ImportOrder</td>
 <td>Wrong order for 'org.apache.commons.logging.Log' import.</td>
 <td>31</td></tr>
-<tr class="b">
+<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>171</td></tr>
-<tr class="a">
+<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>301</td></tr>
-<tr class="b">
+<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>373</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>blocks</td>
 <td>NeedBraces</td>
@@ -14149,31 +14145,31 @@
 <div class="section">
 <h3 id="org.apache.hadoop.hbase.ClassFinder.java">org/apache/hadoop/hbase/ClassFinder.java</h3>
 <table border="0" class="table table-striped">
-<tr class="b">
+<tr class="a">
 <th>Severity</th>
 <th>Category</th>
 <th>Rule</th>
 <th>Message</th>
 <th>Line</th></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>blocks</td>
 <td>LeftCurly</td>
 <td>'{' at column 54 should have line break after.</td>
 <td>70</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>blocks</td>
 <td>LeftCurly</td>
 <td>'{' at column 46 should have line break after.</td>
 <td>71</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>blocks</td>
 <td>LeftCurly</td>
 <td>'{' at column 40 should have line break after.</td>
 <td>72</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>blocks</td>
 <td>LeftCurly</td>
@@ -14182,31 +14178,31 @@
 <div class="section">
 <h3 id="org.apache.hadoop.hbase.ClusterId.java">org/apache/hadoop/hbase/ClusterId.java</h3>
 <table border="0" class="table table-striped">
-<tr class="a">
+<tr class="b">
 <th>Severity</th>
 <th>Category</th>
 <th>Rule</th>
 <th>Message</th>
 <th>Line</th></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>imports</td>
 <td>ImportOrder</td>
 <td>Wrong order for 'org.apache.hadoop.hbase.exceptions.DeserializationException' import.</td>
 <td>25</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>imports</td>
 <td>ImportOrder</td>
 <td>Wrong order for 'org.apache.hadoop.hbase.util.Bytes' import.</td>
 <td>28</td></tr>
-<tr class="b">
+<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>60</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
@@ -14215,13 +14211,13 @@
 <div class="section">
 <h3 id="org.apache.hadoop.hbase.ClusterManager.java">org/apache/hadoop/hbase/ClusterManager.java</h3>
 <table border="0" class="table table-striped">
-<tr class="b">
+<tr class="a">
 <th>Severity</th>
 <th>Category</th>
 <th>Rule</th>
 <th>Message</th>
 <th>Line</th></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>sizes</td>
 <td>LineLength</td>
@@ -14230,31 +14226,31 @@
 <div class="section">
 <h3 id="org.apache.hadoop.hbase.ClusterStatus.java">org/apache/hadoop/hbase/ClusterStatus.java</h3>
 <table border="0" class="table table-striped">
-<tr class="b">
+<tr class="a">
 <th>Severity</th>
 <th>Category</th>
 <th>Rule</th>
 <th>Message</th>
 <th>Line</th></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>imports</td>
 <td>ImportOrder</td>
 <td>Wrong order for 'org.apache.yetus.audience.InterfaceAudience' import.</td>
 <td>30</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>imports</td>
 <td>ImportOrder</td>
 <td>Wrong order for 'org.apache.hadoop.hbase.master.RegionState' import.</td>
 <td>31</td></tr>
-<tr class="a">
+<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>290</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>design</td>
 <td>FinalClass</td>
@@ -14263,13 +14259,13 @@
 <div class="section">
 <h3 id="org.apache.hadoop.hbase.CompatibilityFactory.java">org/apache/hadoop/hbase/CompatibilityFactory.java</h3>
 <table border="0" class="table table-striped">
-<tr class="a">
+<tr class="b">
 <th>Severity</th>
 <th>Category</th>
 <th>Rule</th>
 <th>Message</th>
 <th>Line</th></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>imports</td>
 <td>ImportOrder</td>
@@ -14278,13 +14274,13 @@
 <div class="section">
 <h3 id="org.apache.hadoop.hbase.CompatibilitySingletonFactory.java">org/apache/hadoop/hbase/CompatibilitySingletonFactory.java</h3>
 <table border="0" class="table table-striped">
-<tr class="a">
+<tr class="b">
 <th>Severity</th>
 <th>Category</th>
 <th>Rule</th>
 <th>Message</th>
 <th>Line</th></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>imports</td>
 <td>ImportOrder</td>
@@ -14293,31 +14289,31 @@
 <div class="section">
 <h3 id="org.apache.hadoop.hbase.CompoundConfiguration.java">org/apache/hadoop/hbase/CompoundConfiguration.java</h3>
 <table border="0" class="table table-striped">
-<tr class="a">
+<tr class="b">
 <th>Severity</th>
 <th>Category</th>
 <th>Rule</th>
 <th>Message</th>
 <th>Line</th></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>imports</td>
 <td>ImportOrder</td>
 <td>Wrong order for 'org.apache.hadoop.hbase.util.Bytes' import.</td>
 <td>34</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>indentation</td>
 <td>Indentation</td>
 <td>'member def modifier' have incorrect indentation level 3, expected level should be 4.</td>
 <td>78</td></tr>
-<tr class="b">
+<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>182</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>blocks</td>
 <td>NeedBraces</td>
@@ -14326,13 +14322,13 @@
 <div class="section">
 <h3 id="org.apache.hadoop.hbase.CoordinatedStateException.java">org/apache/hadoop/hbase/CoordinatedStateException.java</h3>
 <table border="0" class="table table-striped">
-<tr class="b">
+<tr class="a">
 <th>Severity</th>
 <th>Category</th>
 <th>Rule</th>
 <th>Message</th>
 <th>Line</th></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>imports</td>
 <td>ImportOrder</td>
@@ -14341,13 +14337,13 @@
 <div class="section">
 <h3 id="org.apache.hadoop.hbase.CoordinatedStateManager.java">org/apache/hadoop/hbase/CoordinatedStateManager.java</h3>
 <table border="0" class="table table-striped">
-<tr class="b">
+<tr class="a">
 <th>Severity</th>
 <th>Category</th>
 <th>Rule</th>
 <th>Message</th>
 <th>Line</th></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>imports</td>
 <td>ImportOrder</td>
@@ -14356,19 +14352,19 @@
 <div class="section">
 <h3 id="org.apache.hadoop.hbase.Coprocessor.java">org/apache/hadoop/hbase/Coprocessor.java</h3>
 <table border="0" class="table table-striped">
-<tr class="b">
+<tr class="a">
 <th>Severity</th>
 <th>Category</th>
 <th>Rule</th>
 <th>Message</th>
 <th>Line</th></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>imports</td>
 <td>ImportOrder</td>
 <td>Wrong order for 'com.google.protobuf.Service' import.</td>
 <td>25</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>JavadocTagContinuationIndentation</td>
@@ -14377,37 +14373,37 @@
 <div class="section">
 <h3 id="org.apache.hadoop.hbase.DistributedHBaseCluster.java">org/apache/hadoop/hbase/DistributedHBaseCluster.java</h3>
 <table border="0" class="table table-striped">
-<tr class="a">
+<tr class="b">
 <th>Severity</th>
 <th>Category</th>
 <th>Rule</th>
 <th>Message</th>
 <th>Line</th></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>imports</td>
 <td>ImportOrder</td>
 <td>Wrong order for 'org.apache.hadoop.hbase.client.Admin' import.</td>
 <td>31</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>imports</td>
 <td>ImportOrder</td>
 <td>Wrong order for 'org.apache.hadoop.hbase.util.Bytes' import.</td>
 <td>41</td></tr>
-<tr class="b">
+<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>80</td></tr>
-<tr class="a">
+<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>437</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>blocks</td>
 <td>NeedBraces</td>
@@ -14416,25 +14412,25 @@
 <div class="section">
 <h3 id="org.apache.hadoop.hbase.DoNotRetryIOException.java">org/apache/hadoop/hbase/DoNotRetryIOException.java</h3>
 <table border="0" class="table table-striped">
-<tr class="a">
+<tr class="b">
 <th>Severity</th>
 <th>Category</th>
 <th>Rule</th>
 <th>Message</th>
 <th>Line</th></tr>
-<tr class="b">
+<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>40</td></tr>
-<tr class="a">
+<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>47</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
@@ -14443,13 +14439,13 @@
 <div class="section">
 <h3 id="org.apache.hadoop.hbase.DroppedSnapshotException.java">org/apache/hadoop/hbase/DroppedSnapshotException.java</h3>
 <table border="0" class="table table-striped">
-<tr class="a">
+<tr class="b">
 <th>Severity</th>
 <th>Category</th>
 <th>Rule</th>
 <th>Message</th>
 <th>Line</th></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
@@ -14458,13 +14454,13 @@
 <div class="section">
 <h3 id="org.apache.hadoop.hbase.ExtendedCell.java">org/apache/hadoop/hbase/ExtendedCell.java</h3>
 <table border="0" class="table table-striped">
-<tr class="a">
+<tr class="b">
 <th>Severity</th>
 <th>Category</th>
 <th>Rule</th>
 <th>Message</th>
 <th>Line</th></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
@@ -14473,13 +14469,13 @@
 <div class="section">
 <h3 id="org.apache.hadoop.hbase.ExtendedCellBuilderImpl.java">org/apache/hadoop/hbase/ExtendedCellBuilderImpl.java</h3>
 <table border="0" class="table table-striped">
-<tr class="a">
+<tr class="b">
 <th>Severity</th>
 <th>Category</th>
 <th>Rule</th>
 <th>Message</th>
 <th>Line</th></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>imports</td>
 <td>ImportOrder</td>
@@ -14488,25 +14484,25 @@
 <div class="section">
 <h3 id="org.apache.hadoop.hbase.GenericTestUtils.java">org/apache/hadoop/hbase/GenericTestUtils.java</h3>
 <table border="0" class="table table-striped">
-<tr class="a">
+<tr class="b">
 <th>Severity</th>
 <th>Category</th>
 <th>Rule</th>
 <th>Message</th>
 <th>Line</th></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>blocks</td>
 <td>LeftCurly</td>
 <td>'{' at column 3 should be on the previous line.</td>
 <td>104</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>design</td>
 <td>FinalClass</td>
 <td>Class LogCapturer should be declared as final.</td>
 <td>120</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>blocks</td>
 <td>NeedBraces</td>
@@ -14515,31 +14511,31 @@
 <div class="section">
 <h3 id="org.apache.hadoop.hbase.HBaseCluster.java">org/apache/hadoop/hbase/HBaseCluster.java</h3>
 <table border="0" class="table table-striped">
-<tr class="a">
+<tr class="b">
 <th>Severity</th>
 <th>Category</th>
 <th>Rule</th>
 <th>Message</th>
 <th>Line</th></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>imports</td>
 <td>ImportOrder</td>
 <td>Wrong order for 'org.apache.hadoop.conf.Configurable' import.</td>
 <td>26</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>imports</td>
 <td>ImportOrder</td>
 <td>Wrong order for 'org.apache.hadoop.hbase.util.Threads' import.</td>
 <td>31</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>JavadocTagContinuationIndentation</td>
 <td>Line continuation have incorrect indentation level, expected level should be 2.</td>
 <td>353</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
@@ -14548,25 +14544,25 @@
 <div class="section">
 <h3 id="org.apache.hadoop.hbase.HBaseClusterManager.java">org/apache/hadoop/hbase/HBaseClusterManager.java</h3>
 <table border="0" class="table table-striped">
-<tr class="b">
+<tr class="a">
 <th>Severity</th>
 <th>Category</th>
 <th>Rule</th>
 <th>Message</th>
 <th>Line</th></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>imports</td>
 <td>ImportOrder</td>
 <td>Wrong order for 'org.apache.commons.logging.Log' import.</td>
 <td>28</td></tr>
-<tr class="b">
+<tr class="a">
 <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 104).</td>
 <td>68</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>sizes</td>
 <td>LineLength</td>
@@ -14575,91 +14571,91 @@
 <div class="section">
 <h3 id="org.apache.hadoop.hbase.HBaseCommonTestingUtility.java">org/apache/hadoop/hbase/HBaseCommonTestingUtility.java</h3>
 <table border="0" class="table table-striped">
-<tr class="b">
+<tr class="a">
 <th>Severity</th>
 <th>Category</th>
 <th>Rule</th>
 <th>Message</th>
 <th>Line</th></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>imports</td>
 <td>ImportOrder</td>
 <td>Wrong order for 'org.apache.hadoop.hbase.io.compress.Compression' import.</td>
 <td>33</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>indentation</td>
 <td>Indentation</td>
 <td>'array initialization' child have incorrect indentation level 6, expected level should be 4.</td>
 <td>59</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>JavadocTagContinuationIndentation</td>
 <td>Line continuation have incorrect indentation level, expected level should be 2.</td>
 <td>99</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>JavadocTagContinuationIndentation</td>
 <td>Line continuation have incorrect indentation level, expected level should be 2.</td>
 <td>100</td></tr>
-<tr class="a">
+<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>110</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>JavadocTagContinuationIndentation</td>
 <td>Line continuation have incorrect indentation level, expected level should be 2.</td>
 <td>113</td></tr>
-<tr class="a">
+<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>134</td></tr>
-<tr class="b">
+<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>152</td></tr>
-<tr class="a">
+<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>167</td></tr>
-<tr class="b">
+<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>180</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>JavadocTagContinuationIndentation</td>
 <td>Line continuation have incorrect indentation level, expected level should be 2.</td>
 <td>192</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>JavadocTagContinuationIndentation</td>
 <td>Line continuation have incorrect indentation level, expected level should be 2.</td>
 <td>193</td></tr>
-<tr class="a">
+<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>206</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>blocks</td>
 <td>NeedBraces</td>
@@ -14668,49 +14664,49 @@
 <div class="section">
 <h3 id="org.apache.hadoop.hbase.HBaseConfiguration.java">org/apache/hadoop/hbase/HBaseConfiguration.java</h3>
 <table border="0" class="table table-striped">
-<tr class="a">
+<tr class="b">
 <th>Severity</th>
 <th>Category</th>
 <th>Rule</th>
 <th>Message</th>
 <th>Line</th></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>imports</td>
 <td>ImportOrder</td>
 <td>Wrong order for 'org.apache.hadoop.hbase.util.VersionInfo' import.</td>
 <td>29</td></tr>
-<tr class="a">
+<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>66</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>JavadocTagContinuationIndentation</td>
 <td>Line continuation have incorrect indentation level, expected level should be 2.</td>
 <td>100</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>indentation</td>
 <td>Indentation</td>
 <td>'catch' child have incorrect indentation level 7, expected level should be 6.</td>
 <td>164</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>JavadocTagContinuationIndentation</td>
 <td>Line continuation have incorrect indentation level, expected level should be 2.</td>
 <td>181</td></tr>
-<tr class="a">
+<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>210</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
@@ -14719,217 +14715,217 @@
 <div class="section">
 <h3 id="org.apache.hadoop.hbase.HBaseTestCase.java">org/apache/hadoop/hbase/HBaseTestCase.java</h3>
 <table border="0" class="table table-striped">
-<tr class="a">
+<tr class="b">
 <th>Severity</th>
 <th>Category</th>
 <th>Rule</th>
 <th>Message</th>
 <th>Line</th></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>imports</td>
 <td>ImportOrder</td>
 <td>Wrong order for 'junit.framework.AssertionFailedError' import.</td>
 <td>42</td></tr>
-<tr class="a">
+<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>89</td></tr>
-<tr class="b">
+<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>139</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>indentation</td>
 <td>Indentation</td>
 <td>'method def modifier' have incorrect indentation level 4, expected level should be 2.</td>
 <td>142</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>indentation</td>
 <td>Indentation</td>
 <td>'method def' child have incorrect indentation level 6, expected level should be 4.</td>
 <td>143</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>indentation</td>
 <td>Indentation</td>
 <td>'method def rcurly' have incorrect indentation level 4, expected level should be 2.</td>
 <td>144</td></tr>
-<tr class="b">
+<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>149</td></tr>
-<tr class="a">
+<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>150</td></tr>
-<tr class="b">
+<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>151</td></tr>
-<tr class="a">
+<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>153</td></tr>
-<tr class="b">
+<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>222</td></tr>
-<tr class="a">
+<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>223</td></tr>
-<tr class="b">
+<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>224</td></tr>
-<tr class="a">
+<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>225</td></tr>
-<tr class="b">
+<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>248</td></tr>
-<tr class="a">
+<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>266</td></tr>
-<tr class="b">
+<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>284</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>indentation</td>
 <td>Indentation</td>
 <td>'method def' child have incorrect indentation level 6, expected level should be 4.</td>
 <td>366</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>indentation</td>
 <td>Indentation</td>
 <td>'method def' child have incorrect indentation level 6, expected level should be 4.</td>
 <td>367</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>indentation</td>
 <td>Indentation</td>
 <td>'method def' child have incorrect indentation level 6, expected level should be 4.</td>
 <td>368</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>indentation</td>
 <td>Indentation</td>
 <td>'method def' child have incorrect indentation level 6, expected level should be 4.</td>
 <td>369</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>indentation</td>
 <td>Indentation</td>
 <td>'method def' child have incorrect indentation level 6, expected level should be 4.</td>
 <td>371</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>indentation</td>
 <td>Indentation</td>
 <td>'if' have incorrect indentation level 6, expected level should be 4.</td>
 <td>373</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>indentation</td>
 <td>Indentation</td>
 <td>'if' child have incorrect indentation level 8, expected level should be 6.</td>
 <td>374</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>indentation</td>
 <td>Indentation</td>
 <td>'if rcurly' have incorrect indentation level 6, expected level should be 4.</td>
 <td>376</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>indentation</td>
 <td>Indentation</td>
 <td>'if' have incorrect indentation level 8, expected level should be 6.</td>
 <td>377</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>indentation</td>
 <td>Indentation</td>
 <td>'if' child have incorrect indentation level 10, expected level should be 8.</td>
 <td>378</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>indentation</td>
 <td>Indentation</td>
 <td>'if rcurly' have incorrect indentation level 8, expected level should be 6.</td>
 <td>381</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>indentation</td>
 <td>Indentation</td>
 <td>'if' have incorrect indentation level 8, expected level should be 6.</td>
 <td>382</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>indentation</td>
 <td>Indentation</td>
 <td>'if' child have incorrect indentation level 10, expected level should be 8.</td>
 <td>383</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>indentation</td>
 <td>Indentation</td>
 <td>'if rcurly' have incorrect indentation level 8, expected level should be 6.</td>
 <td>386</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>indentation</td>
 <td>Indentation</td>
 <td>'else rcurly' have incorrect indentation level 6, expected level should be 4.</td>
 <td>387</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>indentation</td>
 <td>Indentation</td>
 <td>'method def rcurly' have incorrect indentation level 4, expected level should be 2.</td>
 <td>388</td></tr>
-<tr class="a">
+<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>393</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
@@ -14938,1723 +14934,1723 @@
 <div class="section">
 <h3 id="org.apache.hadoop.hbase.HBaseTestingUtility.java">org/apache/hadoop/hbase/HBaseTestingUtility.java</h3>
 <table border="0" class="table table-striped">
-<tr class="a">
+<tr class="b">
 <th>Severity</th>
 <th>Category</th>
 <th>Rule</th>
 <th>Message</th>
 <th>Line</th></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>imports</td>
 <td>ImportOrder</td>
 <td>Wrong order for 'edu.umd.cs.findbugs.annotations.Nullable' import.</td>
 <td>54</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>imports</td>
 <td>ImportOrder</td>
 <td>Wrong order for 'org.apache.hadoop.hbase.client.Admin' import.</td>
 <td>75</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>imports</td>
 <td>ImportOrder</td>
 <td>Wrong order for 'org.apache.hadoop.hbase.util.Bytes' import.</td>
 <td>123</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>imports</td>
 <td>ImportOrder</td>
 <td>Wrong order for 'org.apache.hadoop.hbase.client.ColumnFamilyDescriptor' import.</td>
 <td>151</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>indentation</td>
 <td>Indentation</td>
 <td>'member def modifier' have incorrect indentation level 3, expected level should be 2.</td>
 <td>175</td></tr>
-<tr class="a">
+<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>373</td></tr>
-<tr class="b">
+<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>375</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>indentation</td>
 <td>Indentation</td>
 <td>'if' child have incorrect indentation level 7, expected level should be 8.</td>
 <td>452</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>indentation</td>
 <td>Indentation</td>
 <td>'method call' child have incorrect indentation level 9, expected level should be 10.</td>
 <td>453</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>indentation</td>
 <td>Indentation</td>
 <td>'method call' child have incorrect indentation level 9, expected level should be 10.</td>
 <td>454</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>indentation</td>
 <td>Indentation</td>
 <td>'method call' child have incorrect indentation level 9, expected level should be 10.</td>
 <td>455</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>indentation</td>
 <td>Indentation</td>
 <td>'method call rparen' have incorrect indentation level 7, expected level should be 8.</td>
 <td>456</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>JavadocTagContinuationIndentation</td>
 <td>Line continuation have incorrect indentation level, expected level should be 2.</td>
 <td>468</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>JavadocTagContinuationIndentation</td>
 <td>Line continuation have incorrect indentation level, expected level should be 2.</td>
 <td>500</td></tr>
-<tr class="b">
+<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>524</td></tr>
-<tr class="a">
+<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>581</td></tr>
-<tr class="b">
+<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>585</td></tr>
-<tr class="a">
+<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>593</td></tr>
-<tr class="b">
+<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>597</td></tr>
-<tr class="a">
+<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>605</td></tr>
-<tr class="b">
+<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>615</td></tr>
-<tr class="a">
+<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>630</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>misc</td>
 <td>ArrayTypeStyle</td>
 <td>Array brackets at illegal position.</td>
 <td>634</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>whitespace</td>
 <td>ParenPad</td>
 <td>'(' is followed by whitespace.</td>
 <td>636</td></tr>
-<tr class="b">
+<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>648</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>misc</td>
 <td>ArrayTypeStyle</td>
 <td>Array brackets at illegal position.</td>
 <td>652</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>misc</td>
 <td>ArrayTypeStyle</td>
 <td>Array brackets at illegal position.</td>
 <td>689</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>misc</td>
 <td>ArrayTypeStyle</td>
 <td>Array brackets at illegal position.</td>
 <td>689</td></tr>
-<tr class="b">
+<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>783</td></tr>
-<tr class="a">
+<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>798</td></tr>
-<tr class="b">
+<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>808</td></tr>
-<tr class="a">
+<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>810</td></tr>
-<tr class="b">
+<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>863</td></tr>
-<tr class="a">
+<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>875</td></tr>
-<tr class="b">
+<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>885</td></tr>
-<tr class="a">
+<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>897</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>JavadocTagContinuationIndentation</td>
 <td>Line continuation have incorrect indentation level, expected level should be 2.</td>
 <td>912</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>JavadocTagContinuationIndentation</td>
 <td>Line continuation have incorrect indentation level, expected level should be 2.</td>
 <td>913</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>JavadocTagContinuationIndentation</td>
 <td>Line continuation have incorrect indentation level, expected level should be 2.</td>
 <td>914</td></tr>
-<tr class="a">
+<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>915</td></tr>
-<tr class="b">
+<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>932</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>indentation</td>
 <td>Indentation</td>
 <td>'method def' child have incorrect indentation level 6, expected level should be 4.</td>
 <td>939</td></tr>
-<tr class="b">
+<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>944</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>JavadocTagContinuationIndentation</td>
 <td>Line continuation have incorrect indentation level, expected level should be 2.</td>
 <td>967</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>JavadocTagContinuationIndentation</td>
 <td>Line continuation have incorrect indentation level, expected level should be 2.</td>
 <td>968</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>JavadocTagContinuationIndentation</td>
 <td>Line continuation have incorrect indentation level, expected level should be 2.</td>
 <td>970</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>JavadocTagContinuationIndentation</td>
 <td>Line continuation have incorrect indentation level, expected level should be 2.</td>
 <td>971</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>JavadocTagContinuationIndentation</td>
 <td>Line continuation have incorrect indentation level, expected level should be 2.</td>
 <td>972</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>JavadocTagContinuationIndentation</td>
 <td>Line continuation have incorrect indentation level, expected level should be 2.</td>
 <td>973</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>JavadocTagContinuationIndentation</td>
 <td>Line continuation have incorrect indentation level, expected level should be 2.</td>
 <td>974</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>JavadocTagContinuationIndentation</td>
 <td>Line continuation have incorrect indentation level, expected level should be 2.</td>
 <td>975</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>JavadocTagContinuationIndentation</td>
 <td>Line continuation have incorrect indentation level, expected level should be 2.</td>
 <td>977</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>JavadocTagContinuationIndentation</td>
 <td>Line continuation have incorrect indentation level, expected level should be 2.</td>
 <td>978</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>JavadocTagContinuationIndentation</td>
 <td>Line continuation have incorrect indentation level, expected level should be 2.</td>
 <td>979</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>JavadocTagContinuationIndentation</td>
 <td>Line continuation have incorrect indentation level, expected level should be 2.</td>
 <td>980</td></tr>
-<tr class="a">
+<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>981</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>JavadocTagContinuationIndentation</td>
 <td>Line continuation have incorrect indentation level, expected level should be 2.</td>
 <td>1006</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>JavadocTagContinuationIndentation</td>
 <td>Line continuation have incorrect indentation level, expected level should be 2.</td>
 <td>1007</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>JavadocTagContinuationIndentation</td>
 <td>Line continuation have incorrect indentation level, expected level should be 2.</td>
 <td>1009</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>JavadocTagContinuationIndentation</td>
 <td>Line continuation have incorrect indentation level, expected level should be 2.</td>
 <td>1010</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>JavadocTagContinuationIndentation</td>
 <td>Line continuation have incorrect indentation level, expected level should be 2.</td>
 <td>1011</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>JavadocTagContinuationIndentation</td>
 <td>Line continuation have incorrect indentation level, expected level should be 2.</td>
 <td>1012</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>JavadocTagContinuationIndentation</td>
 <td>Line continuation have incorrect indentation level, expected level should be 2.</td>
 <td>1013</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>JavadocTagContinuationIndentation</td>
 <td>Line continuation have incorrect indentation level, expected level should be 2.</td>
 <td>1014</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>JavadocTagContinuationIndentation</td>
 <td>Line continuation have incorrect indentation level, expected level should be 2.</td>
 <td>1016</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>JavadocTagContinuationIndentation</td>
 <td>Line continuation have incorrect indentation level, expected level should be 2.</td>
 <td>1017</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>JavadocTagContinuationIndentation</td>
 <td>Line continuation have incorrect indentation level, expected level should be 2.</td>
 <td>1018</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>JavadocTagContinuationIndentation</td>
 <td>Line continuation have incorrect indentation level, expected level should be 2.</td>
 <td>1019</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>JavadocTagContinuationIndentation</td>
 <td>Line continuation have incorrect indentation level, expected level should be 2.</td>
 <td>1022</td></tr>
-<tr class="a">
+<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>1023</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>JavadocTagContinuationIndentation</td>
 <td>Line continuation have incorrect indentation level, expected level should be 2.</td>
 <td>1049</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>blocks</td>
 <td>NeedBraces</td>
 <td>'else' construct must use '{}'s.</td>
 <td>1078</td></tr>
-<tr class="b">
+<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>1099</td></tr>
-<tr class="a">
+<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>1100</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>JavadocTagContinuationIndentation</td>
 <td>Line continuation have incorrect indentation level, expected level should be 2.</td>
 <td>1102</td></tr>
-<tr class="a">
+<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>1104</td></tr>
-<tr class="b">
+<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>1105</td></tr>
-<tr class="a">
+<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>1154</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>blocks</td>
 <td>EmptyBlock</td>
 <td>Must have at least one statement.</td>
 <td>1166</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>JavadocTagContinuationIndentation</td>
 <td>Line continuation have incorrect indentation level, expected level should be 2.</td>
 <td>1177</td></tr>
-<tr class="b">
+<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>1190</td></tr>
-<tr class="a">
+<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>1212</td></tr>
-<tr class="b">
+<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>1226</td></tr>
-<tr class="a">
+<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>1256</td></tr>
-<tr class="b">
+<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>1271</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>JavadocTagContinuationIndentation</td>
 <td>Line continuation have incorrect indentation level, expected level should be 2.</td>
 <td>1283</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>JavadocTagContinuationIndentation</td>
 <td>Line continuation have incorrect indentation level, expected level should be 2.</td>
 <td>1284</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>JavadocTagContinuationIndentation</td>
 <td>Line continuation have incorrect indentation level, expected level should be 2.</td>
 <td>1285</td></tr>
-<tr class="b">
+<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>1287</td></tr>
-<tr class="a">
+<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>1302</td></tr>
-<tr class="b">
+<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>1315</td></tr>
-<tr class="a">
+<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>1337</td></tr>
-<tr class="b">
+<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>1345</td></tr>
-<tr class="a">
+<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>1353</td></tr>
-<tr class="b">
+<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>1361</td></tr>
-<tr class="a">
+<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>1369</td></tr>
-<tr class="b">
+<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>1370</td></tr>
-<tr class="a">
+<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>1372</td></tr>
-<tr class="b">
+<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>1381</td></tr>
-<tr class="a">
+<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>1382</td></tr>
-<tr class="b">
+<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>1384</td></tr>
-<tr class="a">
+<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>1397</td></tr>
-<tr class="b">
+<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>1398</td></tr>
-<tr class="a">
+<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>1400</td></tr>
-<tr class="b">
+<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>1409</td></tr>
-<tr class="a">
+<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>1410</td></tr>
-<tr class="b">
+<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>1411</td></tr>
-<tr class="a">
+<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>1413</td></tr>
-<tr class="b">
+<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>1417</td></tr>
-<tr class="a">
+<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>1427</td></tr>
-<tr class="b">
+<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>1428</td></tr>
-<tr class="a">
+<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>1430</td></tr>
-<tr class="b">
+<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>1439</td></tr>
-<tr class="a">
+<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>1440</td></tr>
-<tr class="b">
+<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>1442</td></tr>
-<tr class="a">
+<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>1450</td></tr>
-<tr class="b">
+<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>1451</td></tr>
-<tr class="a">
+<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>1452</td></tr>
-<tr class="b">
+<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>1454</td></tr>
-<tr class="a">
+<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>1475</td></tr>
-<tr class="b">
+<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>1476</td></tr>
-<tr class="a">
+<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>1479</td></tr>
-<tr class="b">
+<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>1488</td></tr>
-<tr class="a">
+<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>1489</td></tr>
-<tr class="b">
+<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>1490</td></tr>
-<tr class="a">
+<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>1493</td></tr>
-<tr class="b">
+<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>1516</td></tr>
-<tr class="a">
+<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>1517</td></tr>
-<tr class="b">
+<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>1519</td></tr>
-<tr class="a">
+<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>1532</td></tr>
-<tr class="b">
+<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>1533</td></tr>
-<tr class="a">
+<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>1534</td></tr>
-<tr class="b">
+<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>1537</td></tr>
-<tr class="a">
+<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>1546</td></tr>
-<tr class="b">
+<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>1547</td></tr>
-<tr class="a">
+<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>1548</td></tr>
-<tr class="b">
+<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>1550</td></tr>
-<tr class="a">
+<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>1559</td></tr>
-<tr class="b">
+<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>1560</td></tr>
-<tr class="a">
+<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>1561</td></tr>
-<tr class="b">
+<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>1563</td></tr>
-<tr class="a">
+<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>1572</td></tr>
-<tr class="b">
+<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>1573</td></tr>
-<tr class="a">
+<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>1574</td></tr>
-<tr class="b">
+<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>1575</td></tr>
-<tr class="a">
+<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>1577</td></tr>
-<tr class="b">
+<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>1595</td></tr>
-<tr class="a">
+<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>1596</td></tr>
-<tr class="b">
+<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>1597</td></tr>
-<tr class="a">
+<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>1599</td></tr>
-<tr class="b">
+<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>1608</td></tr>
-<tr class="a">
+<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>1609</td></tr>
-<tr class="b">
+<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>1610</td></tr>
-<tr class="a">
+<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>1611</

<TRUNCATED>

[26/51] [partial] hbase-site git commit: Published site at .

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/c54c242b/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/HRegion.FlushResultImpl.html
----------------------------------------------------------------------
diff --git a/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/HRegion.FlushResultImpl.html b/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/HRegion.FlushResultImpl.html
index 3edfbef..9707b2c 100644
--- a/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/HRegion.FlushResultImpl.html
+++ b/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/HRegion.FlushResultImpl.html
@@ -2459,5936 +2459,5935 @@
 <span class="sourceLineNo">2451</span>      }<a name="line.2451"></a>
 <span class="sourceLineNo">2452</span><a name="line.2452"></a>
 <span class="sourceLineNo">2453</span>      for (HStore s : storesToFlush) {<a name="line.2453"></a>
-<span class="sourceLineNo">2454</span>        MemStoreSize flushableSize = s.getFlushableSize();<a name="line.2454"></a>
-<span class="sourceLineNo">2455</span>        totalSizeOfFlushableStores.incMemStoreSize(flushableSize);<a name="line.2455"></a>
-<span class="sourceLineNo">2456</span>        storeFlushCtxs.put(s.getColumnFamilyDescriptor().getName(),<a name="line.2456"></a>
-<span class="sourceLineNo">2457</span>          s.createFlushContext(flushOpSeqId, tracker));<a name="line.2457"></a>
-<span class="sourceLineNo">2458</span>        // for writing stores to WAL<a name="line.2458"></a>
-<span class="sourceLineNo">2459</span>        committedFiles.put(s.getColumnFamilyDescriptor().getName(), null);<a name="line.2459"></a>
-<span class="sourceLineNo">2460</span>        storeFlushableSize.put(s.getColumnFamilyDescriptor().getName(), flushableSize);<a name="line.2460"></a>
-<span class="sourceLineNo">2461</span>      }<a name="line.2461"></a>
-<span class="sourceLineNo">2462</span><a name="line.2462"></a>
-<span class="sourceLineNo">2463</span>      // write the snapshot start to WAL<a name="line.2463"></a>
-<span class="sourceLineNo">2464</span>      if (wal != null &amp;&amp; !writestate.readOnly) {<a name="line.2464"></a>
-<span class="sourceLineNo">2465</span>        FlushDescriptor desc = ProtobufUtil.toFlushDescriptor(FlushAction.START_FLUSH,<a name="line.2465"></a>
-<span class="sourceLineNo">2466</span>            getRegionInfo(), flushOpSeqId, committedFiles);<a name="line.2466"></a>
-<span class="sourceLineNo">2467</span>        // No sync. Sync is below where no updates lock and we do FlushAction.COMMIT_FLUSH<a name="line.2467"></a>
-<span class="sourceLineNo">2468</span>        WALUtil.writeFlushMarker(wal, this.getReplicationScope(), getRegionInfo(), desc, false,<a name="line.2468"></a>
-<span class="sourceLineNo">2469</span>            mvcc);<a name="line.2469"></a>
-<span class="sourceLineNo">2470</span>      }<a name="line.2470"></a>
-<span class="sourceLineNo">2471</span><a name="line.2471"></a>
-<span class="sourceLineNo">2472</span>      // Prepare flush (take a snapshot)<a name="line.2472"></a>
-<span class="sourceLineNo">2473</span>      for (StoreFlushContext flush : storeFlushCtxs.values()) {<a name="line.2473"></a>
-<span class="sourceLineNo">2474</span>        flush.prepare();<a name="line.2474"></a>
-<span class="sourceLineNo">2475</span>      }<a name="line.2475"></a>
-<span class="sourceLineNo">2476</span>    } catch (IOException ex) {<a name="line.2476"></a>
-<span class="sourceLineNo">2477</span>      doAbortFlushToWAL(wal, flushOpSeqId, committedFiles);<a name="line.2477"></a>
-<span class="sourceLineNo">2478</span>      throw ex;<a name="line.2478"></a>
-<span class="sourceLineNo">2479</span>    } finally {<a name="line.2479"></a>
-<span class="sourceLineNo">2480</span>      this.updatesLock.writeLock().unlock();<a name="line.2480"></a>
-<span class="sourceLineNo">2481</span>    }<a name="line.2481"></a>
-<span class="sourceLineNo">2482</span>    String s = "Finished memstore snapshotting " + this + ", syncing WAL and waiting on mvcc, " +<a name="line.2482"></a>
-<span class="sourceLineNo">2483</span>        "flushsize=" + totalSizeOfFlushableStores;<a name="line.2483"></a>
-<span class="sourceLineNo">2484</span>    status.setStatus(s);<a name="line.2484"></a>
-<span class="sourceLineNo">2485</span>    doSyncOfUnflushedWALChanges(wal, getRegionInfo());<a name="line.2485"></a>
-<span class="sourceLineNo">2486</span>    return new PrepareFlushResult(storeFlushCtxs, committedFiles, storeFlushableSize, startTime,<a name="line.2486"></a>
-<span class="sourceLineNo">2487</span>        flushOpSeqId, flushedSeqId, totalSizeOfFlushableStores);<a name="line.2487"></a>
-<span class="sourceLineNo">2488</span>  }<a name="line.2488"></a>
-<span class="sourceLineNo">2489</span><a name="line.2489"></a>
-<span class="sourceLineNo">2490</span>  /**<a name="line.2490"></a>
-<span class="sourceLineNo">2491</span>   * Utility method broken out of internalPrepareFlushCache so that method is smaller.<a name="line.2491"></a>
-<span class="sourceLineNo">2492</span>   */<a name="line.2492"></a>
-<span class="sourceLineNo">2493</span>  private void logFatLineOnFlush(Collection&lt;HStore&gt; storesToFlush, long sequenceId) {<a name="line.2493"></a>
-<span class="sourceLineNo">2494</span>    if (!LOG.isInfoEnabled()) {<a name="line.2494"></a>
-<span class="sourceLineNo">2495</span>      return;<a name="line.2495"></a>
-<span class="sourceLineNo">2496</span>    }<a name="line.2496"></a>
-<span class="sourceLineNo">2497</span>    // Log a fat line detailing what is being flushed.<a name="line.2497"></a>
-<span class="sourceLineNo">2498</span>    StringBuilder perCfExtras = null;<a name="line.2498"></a>
-<span class="sourceLineNo">2499</span>    if (!isAllFamilies(storesToFlush)) {<a name="line.2499"></a>
-<span class="sourceLineNo">2500</span>      perCfExtras = new StringBuilder();<a name="line.2500"></a>
-<span class="sourceLineNo">2501</span>      for (HStore store: storesToFlush) {<a name="line.2501"></a>
-<span class="sourceLineNo">2502</span>        perCfExtras.append("; ").append(store.getColumnFamilyName());<a name="line.2502"></a>
-<span class="sourceLineNo">2503</span>        perCfExtras.append("=")<a name="line.2503"></a>
-<span class="sourceLineNo">2504</span>            .append(StringUtils.byteDesc(store.getFlushableSize().getDataSize()));<a name="line.2504"></a>
-<span class="sourceLineNo">2505</span>      }<a name="line.2505"></a>
-<span class="sourceLineNo">2506</span>    }<a name="line.2506"></a>
-<span class="sourceLineNo">2507</span>    LOG.info("Flushing " + + storesToFlush.size() + "/" + stores.size() +<a name="line.2507"></a>
-<span class="sourceLineNo">2508</span>        " column families, memstore=" + StringUtils.byteDesc(this.memstoreDataSize.get()) +<a name="line.2508"></a>
-<span class="sourceLineNo">2509</span>        ((perCfExtras != null &amp;&amp; perCfExtras.length() &gt; 0)? perCfExtras.toString(): "") +<a name="line.2509"></a>
-<span class="sourceLineNo">2510</span>        ((wal != null) ? "" : "; WAL is null, using passed sequenceid=" + sequenceId));<a name="line.2510"></a>
-<span class="sourceLineNo">2511</span>  }<a name="line.2511"></a>
-<span class="sourceLineNo">2512</span><a name="line.2512"></a>
-<span class="sourceLineNo">2513</span>  private void doAbortFlushToWAL(final WAL wal, final long flushOpSeqId,<a name="line.2513"></a>
-<span class="sourceLineNo">2514</span>      final Map&lt;byte[], List&lt;Path&gt;&gt; committedFiles) {<a name="line.2514"></a>
-<span class="sourceLineNo">2515</span>    if (wal == null) return;<a name="line.2515"></a>
-<span class="sourceLineNo">2516</span>    try {<a name="line.2516"></a>
-<span class="sourceLineNo">2517</span>      FlushDescriptor desc = ProtobufUtil.toFlushDescriptor(FlushAction.ABORT_FLUSH,<a name="line.2517"></a>
-<span class="sourceLineNo">2518</span>          getRegionInfo(), flushOpSeqId, committedFiles);<a name="line.2518"></a>
-<span class="sourceLineNo">2519</span>      WALUtil.writeFlushMarker(wal, this.getReplicationScope(), getRegionInfo(), desc, false,<a name="line.2519"></a>
-<span class="sourceLineNo">2520</span>          mvcc);<a name="line.2520"></a>
-<span class="sourceLineNo">2521</span>    } catch (Throwable t) {<a name="line.2521"></a>
-<span class="sourceLineNo">2522</span>      LOG.warn("Received unexpected exception trying to write ABORT_FLUSH marker to WAL:" +<a name="line.2522"></a>
-<span class="sourceLineNo">2523</span>          StringUtils.stringifyException(t));<a name="line.2523"></a>
-<span class="sourceLineNo">2524</span>      // ignore this since we will be aborting the RS with DSE.<a name="line.2524"></a>
-<span class="sourceLineNo">2525</span>    }<a name="line.2525"></a>
-<span class="sourceLineNo">2526</span>    // we have called wal.startCacheFlush(), now we have to abort it<a name="line.2526"></a>
-<span class="sourceLineNo">2527</span>    wal.abortCacheFlush(this.getRegionInfo().getEncodedNameAsBytes());<a name="line.2527"></a>
-<span class="sourceLineNo">2528</span>  }<a name="line.2528"></a>
-<span class="sourceLineNo">2529</span><a name="line.2529"></a>
-<span class="sourceLineNo">2530</span>  /**<a name="line.2530"></a>
-<span class="sourceLineNo">2531</span>   * Sync unflushed WAL changes. See HBASE-8208 for details<a name="line.2531"></a>
-<span class="sourceLineNo">2532</span>   */<a name="line.2532"></a>
-<span class="sourceLineNo">2533</span>  private static void doSyncOfUnflushedWALChanges(final WAL wal, final RegionInfo hri)<a name="line.2533"></a>
-<span class="sourceLineNo">2534</span>  throws IOException {<a name="line.2534"></a>
-<span class="sourceLineNo">2535</span>    if (wal == null) {<a name="line.2535"></a>
-<span class="sourceLineNo">2536</span>      return;<a name="line.2536"></a>
-<span class="sourceLineNo">2537</span>    }<a name="line.2537"></a>
-<span class="sourceLineNo">2538</span>    try {<a name="line.2538"></a>
-<span class="sourceLineNo">2539</span>      wal.sync(); // ensure that flush marker is sync'ed<a name="line.2539"></a>
-<span class="sourceLineNo">2540</span>    } catch (IOException ioe) {<a name="line.2540"></a>
-<span class="sourceLineNo">2541</span>      wal.abortCacheFlush(hri.getEncodedNameAsBytes());<a name="line.2541"></a>
-<span class="sourceLineNo">2542</span>      throw ioe;<a name="line.2542"></a>
-<span class="sourceLineNo">2543</span>    }<a name="line.2543"></a>
-<span class="sourceLineNo">2544</span>  }<a name="line.2544"></a>
-<span class="sourceLineNo">2545</span><a name="line.2545"></a>
-<span class="sourceLineNo">2546</span>  /**<a name="line.2546"></a>
-<span class="sourceLineNo">2547</span>   * @return True if passed Set is all families in the region.<a name="line.2547"></a>
-<span class="sourceLineNo">2548</span>   */<a name="line.2548"></a>
-<span class="sourceLineNo">2549</span>  private boolean isAllFamilies(Collection&lt;HStore&gt; families) {<a name="line.2549"></a>
-<span class="sourceLineNo">2550</span>    return families == null || this.stores.size() == families.size();<a name="line.2550"></a>
-<span class="sourceLineNo">2551</span>  }<a name="line.2551"></a>
-<span class="sourceLineNo">2552</span><a name="line.2552"></a>
-<span class="sourceLineNo">2553</span>  /**<a name="line.2553"></a>
-<span class="sourceLineNo">2554</span>   * Writes a marker to WAL indicating a flush is requested but cannot be complete due to various<a name="line.2554"></a>
-<span class="sourceLineNo">2555</span>   * reasons. Ignores exceptions from WAL. Returns whether the write succeeded.<a name="line.2555"></a>
-<span class="sourceLineNo">2556</span>   * @param wal<a name="line.2556"></a>
-<span class="sourceLineNo">2557</span>   * @return whether WAL write was successful<a name="line.2557"></a>
-<span class="sourceLineNo">2558</span>   */<a name="line.2558"></a>
-<span class="sourceLineNo">2559</span>  private boolean writeFlushRequestMarkerToWAL(WAL wal, boolean writeFlushWalMarker) {<a name="line.2559"></a>
-<span class="sourceLineNo">2560</span>    if (writeFlushWalMarker &amp;&amp; wal != null &amp;&amp; !writestate.readOnly) {<a name="line.2560"></a>
-<span class="sourceLineNo">2561</span>      FlushDescriptor desc = ProtobufUtil.toFlushDescriptor(FlushAction.CANNOT_FLUSH,<a name="line.2561"></a>
-<span class="sourceLineNo">2562</span>        getRegionInfo(), -1, new TreeMap&lt;&gt;(Bytes.BYTES_COMPARATOR));<a name="line.2562"></a>
-<span class="sourceLineNo">2563</span>      try {<a name="line.2563"></a>
-<span class="sourceLineNo">2564</span>        WALUtil.writeFlushMarker(wal, this.getReplicationScope(), getRegionInfo(), desc, true,<a name="line.2564"></a>
-<span class="sourceLineNo">2565</span>            mvcc);<a name="line.2565"></a>
-<span class="sourceLineNo">2566</span>        return true;<a name="line.2566"></a>
-<span class="sourceLineNo">2567</span>      } catch (IOException e) {<a name="line.2567"></a>
-<span class="sourceLineNo">2568</span>        LOG.warn(getRegionInfo().getEncodedName() + " : "<a name="line.2568"></a>
-<span class="sourceLineNo">2569</span>            + "Received exception while trying to write the flush request to wal", e);<a name="line.2569"></a>
-<span class="sourceLineNo">2570</span>      }<a name="line.2570"></a>
-<span class="sourceLineNo">2571</span>    }<a name="line.2571"></a>
-<span class="sourceLineNo">2572</span>    return false;<a name="line.2572"></a>
-<span class="sourceLineNo">2573</span>  }<a name="line.2573"></a>
-<span class="sourceLineNo">2574</span><a name="line.2574"></a>
-<span class="sourceLineNo">2575</span>  @edu.umd.cs.findbugs.annotations.SuppressWarnings(value="NN_NAKED_NOTIFY",<a name="line.2575"></a>
-<span class="sourceLineNo">2576</span>      justification="Intentional; notify is about completed flush")<a name="line.2576"></a>
-<span class="sourceLineNo">2577</span>  protected FlushResultImpl internalFlushCacheAndCommit(WAL wal, MonitoredTask status,<a name="line.2577"></a>
-<span class="sourceLineNo">2578</span>      PrepareFlushResult prepareResult, Collection&lt;HStore&gt; storesToFlush) throws IOException {<a name="line.2578"></a>
-<span class="sourceLineNo">2579</span>    // prepare flush context is carried via PrepareFlushResult<a name="line.2579"></a>
-<span class="sourceLineNo">2580</span>    TreeMap&lt;byte[], StoreFlushContext&gt; storeFlushCtxs = prepareResult.storeFlushCtxs;<a name="line.2580"></a>
-<span class="sourceLineNo">2581</span>    TreeMap&lt;byte[], List&lt;Path&gt;&gt; committedFiles = prepareResult.committedFiles;<a name="line.2581"></a>
-<span class="sourceLineNo">2582</span>    long startTime = prepareResult.startTime;<a name="line.2582"></a>
-<span class="sourceLineNo">2583</span>    long flushOpSeqId = prepareResult.flushOpSeqId;<a name="line.2583"></a>
-<span class="sourceLineNo">2584</span>    long flushedSeqId = prepareResult.flushedSeqId;<a name="line.2584"></a>
-<span class="sourceLineNo">2585</span><a name="line.2585"></a>
-<span class="sourceLineNo">2586</span>    String s = "Flushing stores of " + this;<a name="line.2586"></a>
-<span class="sourceLineNo">2587</span>    status.setStatus(s);<a name="line.2587"></a>
-<span class="sourceLineNo">2588</span>    if (LOG.isTraceEnabled()) LOG.trace(s);<a name="line.2588"></a>
-<span class="sourceLineNo">2589</span><a name="line.2589"></a>
-<span class="sourceLineNo">2590</span>    // Any failure from here on out will be catastrophic requiring server<a name="line.2590"></a>
-<span class="sourceLineNo">2591</span>    // restart so wal content can be replayed and put back into the memstore.<a name="line.2591"></a>
-<span class="sourceLineNo">2592</span>    // Otherwise, the snapshot content while backed up in the wal, it will not<a name="line.2592"></a>
-<span class="sourceLineNo">2593</span>    // be part of the current running servers state.<a name="line.2593"></a>
-<span class="sourceLineNo">2594</span>    boolean compactionRequested = false;<a name="line.2594"></a>
-<span class="sourceLineNo">2595</span>    long flushedOutputFileSize = 0;<a name="line.2595"></a>
-<span class="sourceLineNo">2596</span>    try {<a name="line.2596"></a>
-<span class="sourceLineNo">2597</span>      // A.  Flush memstore to all the HStores.<a name="line.2597"></a>
-<span class="sourceLineNo">2598</span>      // Keep running vector of all store files that includes both old and the<a name="line.2598"></a>
-<span class="sourceLineNo">2599</span>      // just-made new flush store file. The new flushed file is still in the<a name="line.2599"></a>
-<span class="sourceLineNo">2600</span>      // tmp directory.<a name="line.2600"></a>
-<span class="sourceLineNo">2601</span><a name="line.2601"></a>
-<span class="sourceLineNo">2602</span>      for (StoreFlushContext flush : storeFlushCtxs.values()) {<a name="line.2602"></a>
-<span class="sourceLineNo">2603</span>        flush.flushCache(status);<a name="line.2603"></a>
-<span class="sourceLineNo">2604</span>      }<a name="line.2604"></a>
-<span class="sourceLineNo">2605</span><a name="line.2605"></a>
-<span class="sourceLineNo">2606</span>      // Switch snapshot (in memstore) -&gt; new hfile (thus causing<a name="line.2606"></a>
-<span class="sourceLineNo">2607</span>      // all the store scanners to reset/reseek).<a name="line.2607"></a>
-<span class="sourceLineNo">2608</span>      Iterator&lt;HStore&gt; it = storesToFlush.iterator();<a name="line.2608"></a>
-<span class="sourceLineNo">2609</span>      // stores.values() and storeFlushCtxs have same order<a name="line.2609"></a>
-<span class="sourceLineNo">2610</span>      for (StoreFlushContext flush : storeFlushCtxs.values()) {<a name="line.2610"></a>
-<span class="sourceLineNo">2611</span>        boolean needsCompaction = flush.commit(status);<a name="line.2611"></a>
-<span class="sourceLineNo">2612</span>        if (needsCompaction) {<a name="line.2612"></a>
-<span class="sourceLineNo">2613</span>          compactionRequested = true;<a name="line.2613"></a>
-<span class="sourceLineNo">2614</span>        }<a name="line.2614"></a>
-<span class="sourceLineNo">2615</span>        byte[] storeName = it.next().getColumnFamilyDescriptor().getName();<a name="line.2615"></a>
-<span class="sourceLineNo">2616</span>        List&lt;Path&gt; storeCommittedFiles = flush.getCommittedFiles();<a name="line.2616"></a>
-<span class="sourceLineNo">2617</span>        committedFiles.put(storeName, storeCommittedFiles);<a name="line.2617"></a>
-<span class="sourceLineNo">2618</span>        // Flush committed no files, indicating flush is empty or flush was canceled<a name="line.2618"></a>
-<span class="sourceLineNo">2619</span>        if (storeCommittedFiles == null || storeCommittedFiles.isEmpty()) {<a name="line.2619"></a>
-<span class="sourceLineNo">2620</span>          MemStoreSize storeFlushableSize = prepareResult.storeFlushableSize.get(storeName);<a name="line.2620"></a>
-<span class="sourceLineNo">2621</span>          prepareResult.totalFlushableSize.decMemStoreSize(storeFlushableSize);<a name="line.2621"></a>
-<span class="sourceLineNo">2622</span>        }<a name="line.2622"></a>
-<span class="sourceLineNo">2623</span>        flushedOutputFileSize += flush.getOutputFileSize();<a name="line.2623"></a>
-<span class="sourceLineNo">2624</span>      }<a name="line.2624"></a>
-<span class="sourceLineNo">2625</span>      storeFlushCtxs.clear();<a name="line.2625"></a>
-<span class="sourceLineNo">2626</span><a name="line.2626"></a>
-<span class="sourceLineNo">2627</span>      // Set down the memstore size by amount of flush.<a name="line.2627"></a>
-<span class="sourceLineNo">2628</span>      this.decrMemStoreSize(prepareResult.totalFlushableSize);<a name="line.2628"></a>
-<span class="sourceLineNo">2629</span><a name="line.2629"></a>
-<span class="sourceLineNo">2630</span>      if (wal != null) {<a name="line.2630"></a>
-<span class="sourceLineNo">2631</span>        // write flush marker to WAL. If fail, we should throw DroppedSnapshotException<a name="line.2631"></a>
-<span class="sourceLineNo">2632</span>        FlushDescriptor desc = ProtobufUtil.toFlushDescriptor(FlushAction.COMMIT_FLUSH,<a name="line.2632"></a>
-<span class="sourceLineNo">2633</span>          getRegionInfo(), flushOpSeqId, committedFiles);<a name="line.2633"></a>
-<span class="sourceLineNo">2634</span>        WALUtil.writeFlushMarker(wal, this.getReplicationScope(), getRegionInfo(), desc, true,<a name="line.2634"></a>
-<span class="sourceLineNo">2635</span>            mvcc);<a name="line.2635"></a>
-<span class="sourceLineNo">2636</span>      }<a name="line.2636"></a>
-<span class="sourceLineNo">2637</span>    } catch (Throwable t) {<a name="line.2637"></a>
-<span class="sourceLineNo">2638</span>      // An exception here means that the snapshot was not persisted.<a name="line.2638"></a>
-<span class="sourceLineNo">2639</span>      // The wal needs to be replayed so its content is restored to memstore.<a name="line.2639"></a>
-<span class="sourceLineNo">2640</span>      // Currently, only a server restart will do this.<a name="line.2640"></a>
-<span class="sourceLineNo">2641</span>      // We used to only catch IOEs but its possible that we'd get other<a name="line.2641"></a>
-<span class="sourceLineNo">2642</span>      // exceptions -- e.g. HBASE-659 was about an NPE -- so now we catch<a name="line.2642"></a>
-<span class="sourceLineNo">2643</span>      // all and sundry.<a name="line.2643"></a>
-<span class="sourceLineNo">2644</span>      if (wal != null) {<a name="line.2644"></a>
-<span class="sourceLineNo">2645</span>        try {<a name="line.2645"></a>
-<span class="sourceLineNo">2646</span>          FlushDescriptor desc = ProtobufUtil.toFlushDescriptor(FlushAction.ABORT_FLUSH,<a name="line.2646"></a>
-<span class="sourceLineNo">2647</span>            getRegionInfo(), flushOpSeqId, committedFiles);<a name="line.2647"></a>
-<span class="sourceLineNo">2648</span>          WALUtil.writeFlushMarker(wal, this.replicationScope, getRegionInfo(), desc, false, mvcc);<a name="line.2648"></a>
-<span class="sourceLineNo">2649</span>        } catch (Throwable ex) {<a name="line.2649"></a>
-<span class="sourceLineNo">2650</span>          LOG.warn(getRegionInfo().getEncodedName() + " : "<a name="line.2650"></a>
-<span class="sourceLineNo">2651</span>              + "failed writing ABORT_FLUSH marker to WAL", ex);<a name="line.2651"></a>
-<span class="sourceLineNo">2652</span>          // ignore this since we will be aborting the RS with DSE.<a name="line.2652"></a>
-<span class="sourceLineNo">2653</span>        }<a name="line.2653"></a>
-<span class="sourceLineNo">2654</span>        wal.abortCacheFlush(this.getRegionInfo().getEncodedNameAsBytes());<a name="line.2654"></a>
-<span class="sourceLineNo">2655</span>      }<a name="line.2655"></a>
-<span class="sourceLineNo">2656</span>      DroppedSnapshotException dse = new DroppedSnapshotException("region: " +<a name="line.2656"></a>
-<span class="sourceLineNo">2657</span>          Bytes.toStringBinary(getRegionInfo().getRegionName()));<a name="line.2657"></a>
-<span class="sourceLineNo">2658</span>      dse.initCause(t);<a name="line.2658"></a>
-<span class="sourceLineNo">2659</span>      status.abort("Flush failed: " + StringUtils.stringifyException(t));<a name="line.2659"></a>
-<span class="sourceLineNo">2660</span><a name="line.2660"></a>
-<span class="sourceLineNo">2661</span>      // Callers for flushcache() should catch DroppedSnapshotException and abort the region server.<a name="line.2661"></a>
-<span class="sourceLineNo">2662</span>      // However, since we may have the region read lock, we cannot call close(true) here since<a name="line.2662"></a>
-<span class="sourceLineNo">2663</span>      // we cannot promote to a write lock. Instead we are setting closing so that all other region<a name="line.2663"></a>
-<span class="sourceLineNo">2664</span>      // operations except for close will be rejected.<a name="line.2664"></a>
-<span class="sourceLineNo">2665</span>      this.closing.set(true);<a name="line.2665"></a>
-<span class="sourceLineNo">2666</span><a name="line.2666"></a>
-<span class="sourceLineNo">2667</span>      if (rsServices != null) {<a name="line.2667"></a>
-<span class="sourceLineNo">2668</span>        // This is a safeguard against the case where the caller fails to explicitly handle aborting<a name="line.2668"></a>
-<span class="sourceLineNo">2669</span>        rsServices.abort("Replay of WAL required. Forcing server shutdown", dse);<a name="line.2669"></a>
-<span class="sourceLineNo">2670</span>      }<a name="line.2670"></a>
-<span class="sourceLineNo">2671</span><a name="line.2671"></a>
-<span class="sourceLineNo">2672</span>      throw dse;<a name="line.2672"></a>
-<span class="sourceLineNo">2673</span>    }<a name="line.2673"></a>
-<span class="sourceLineNo">2674</span><a name="line.2674"></a>
-<span class="sourceLineNo">2675</span>    // If we get to here, the HStores have been written.<a name="line.2675"></a>
-<span class="sourceLineNo">2676</span>    if (wal != null) {<a name="line.2676"></a>
-<span class="sourceLineNo">2677</span>      wal.completeCacheFlush(this.getRegionInfo().getEncodedNameAsBytes());<a name="line.2677"></a>
-<span class="sourceLineNo">2678</span>    }<a name="line.2678"></a>
-<span class="sourceLineNo">2679</span><a name="line.2679"></a>
-<span class="sourceLineNo">2680</span>    // Record latest flush time<a name="line.2680"></a>
-<span class="sourceLineNo">2681</span>    for (HStore store: storesToFlush) {<a name="line.2681"></a>
-<span class="sourceLineNo">2682</span>      this.lastStoreFlushTimeMap.put(store, startTime);<a name="line.2682"></a>
-<span class="sourceLineNo">2683</span>    }<a name="line.2683"></a>
-<span class="sourceLineNo">2684</span><a name="line.2684"></a>
-<span class="sourceLineNo">2685</span>    this.maxFlushedSeqId = flushedSeqId;<a name="line.2685"></a>
-<span class="sourceLineNo">2686</span>    this.lastFlushOpSeqId = flushOpSeqId;<a name="line.2686"></a>
-<span class="sourceLineNo">2687</span><a name="line.2687"></a>
-<span class="sourceLineNo">2688</span>    // C. Finally notify anyone waiting on memstore to clear:<a name="line.2688"></a>
-<span class="sourceLineNo">2689</span>    // e.g. checkResources().<a name="line.2689"></a>
-<span class="sourceLineNo">2690</span>    synchronized (this) {<a name="line.2690"></a>
-<span class="sourceLineNo">2691</span>      notifyAll(); // FindBugs NN_NAKED_NOTIFY<a name="line.2691"></a>
-<span class="sourceLineNo">2692</span>    }<a name="line.2692"></a>
-<span class="sourceLineNo">2693</span><a name="line.2693"></a>
-<span class="sourceLineNo">2694</span>    long time = EnvironmentEdgeManager.currentTime() - startTime;<a name="line.2694"></a>
-<span class="sourceLineNo">2695</span>    long memstoresize = this.memstoreDataSize.get();<a name="line.2695"></a>
-<span class="sourceLineNo">2696</span>    String msg = "Finished memstore flush of ~"<a name="line.2696"></a>
-<span class="sourceLineNo">2697</span>        + StringUtils.byteDesc(prepareResult.totalFlushableSize.getDataSize()) + "/"<a name="line.2697"></a>
-<span class="sourceLineNo">2698</span>        + prepareResult.totalFlushableSize.getDataSize() + ", currentsize="<a name="line.2698"></a>
-<span class="sourceLineNo">2699</span>        + StringUtils.byteDesc(memstoresize) + "/" + memstoresize<a name="line.2699"></a>
-<span class="sourceLineNo">2700</span>        + " for region " + this + " in " + time + "ms, sequenceid="<a name="line.2700"></a>
-<span class="sourceLineNo">2701</span>        + flushOpSeqId +  ", compaction requested=" + compactionRequested<a name="line.2701"></a>
-<span class="sourceLineNo">2702</span>        + ((wal == null) ? "; wal=null" : "");<a name="line.2702"></a>
-<span class="sourceLineNo">2703</span>    LOG.info(msg);<a name="line.2703"></a>
-<span class="sourceLineNo">2704</span>    status.setStatus(msg);<a name="line.2704"></a>
-<span class="sourceLineNo">2705</span><a name="line.2705"></a>
-<span class="sourceLineNo">2706</span>    if (rsServices != null &amp;&amp; rsServices.getMetrics() != null) {<a name="line.2706"></a>
-<span class="sourceLineNo">2707</span>      rsServices.getMetrics().updateFlush(time - startTime,<a name="line.2707"></a>
-<span class="sourceLineNo">2708</span>          prepareResult.totalFlushableSize.getDataSize(), flushedOutputFileSize);<a name="line.2708"></a>
-<span class="sourceLineNo">2709</span>    }<a name="line.2709"></a>
-<span class="sourceLineNo">2710</span><a name="line.2710"></a>
-<span class="sourceLineNo">2711</span>    return new FlushResultImpl(compactionRequested ?<a name="line.2711"></a>
-<span class="sourceLineNo">2712</span>        FlushResult.Result.FLUSHED_COMPACTION_NEEDED :<a name="line.2712"></a>
-<span class="sourceLineNo">2713</span>          FlushResult.Result.FLUSHED_NO_COMPACTION_NEEDED, flushOpSeqId);<a name="line.2713"></a>
-<span class="sourceLineNo">2714</span>  }<a name="line.2714"></a>
-<span class="sourceLineNo">2715</span><a name="line.2715"></a>
-<span class="sourceLineNo">2716</span>  /**<a name="line.2716"></a>
-<span class="sourceLineNo">2717</span>   * Method to safely get the next sequence number.<a name="line.2717"></a>
-<span class="sourceLineNo">2718</span>   * @return Next sequence number unassociated with any actual edit.<a name="line.2718"></a>
-<span class="sourceLineNo">2719</span>   * @throws IOException<a name="line.2719"></a>
-<span class="sourceLineNo">2720</span>   */<a name="line.2720"></a>
-<span class="sourceLineNo">2721</span>  @VisibleForTesting<a name="line.2721"></a>
-<span class="sourceLineNo">2722</span>  protected long getNextSequenceId(final WAL wal) throws IOException {<a name="line.2722"></a>
-<span class="sourceLineNo">2723</span>    WriteEntry we = mvcc.begin();<a name="line.2723"></a>
-<span class="sourceLineNo">2724</span>    mvcc.completeAndWait(we);<a name="line.2724"></a>
-<span class="sourceLineNo">2725</span>    return we.getWriteNumber();<a name="line.2725"></a>
-<span class="sourceLineNo">2726</span>  }<a name="line.2726"></a>
-<span class="sourceLineNo">2727</span><a name="line.2727"></a>
-<span class="sourceLineNo">2728</span>  //////////////////////////////////////////////////////////////////////////////<a name="line.2728"></a>
-<span class="sourceLineNo">2729</span>  // get() methods for client use.<a name="line.2729"></a>
-<span class="sourceLineNo">2730</span>  //////////////////////////////////////////////////////////////////////////////<a name="line.2730"></a>
-<span class="sourceLineNo">2731</span><a name="line.2731"></a>
-<span class="sourceLineNo">2732</span>  @Override<a name="line.2732"></a>
-<span class="sourceLineNo">2733</span>  public RegionScannerImpl getScanner(Scan scan) throws IOException {<a name="line.2733"></a>
-<span class="sourceLineNo">2734</span>   return getScanner(scan, null);<a name="line.2734"></a>
-<span class="sourceLineNo">2735</span>  }<a name="line.2735"></a>
-<span class="sourceLineNo">2736</span><a name="line.2736"></a>
-<span class="sourceLineNo">2737</span>  @Override<a name="line.2737"></a>
-<span class="sourceLineNo">2738</span>  public RegionScannerImpl getScanner(Scan scan, List&lt;KeyValueScanner&gt; additionalScanners)<a name="line.2738"></a>
-<span class="sourceLineNo">2739</span>      throws IOException {<a name="line.2739"></a>
-<span class="sourceLineNo">2740</span>    return getScanner(scan, additionalScanners, HConstants.NO_NONCE, HConstants.NO_NONCE);<a name="line.2740"></a>
-<span class="sourceLineNo">2741</span>  }<a name="line.2741"></a>
-<span class="sourceLineNo">2742</span><a name="line.2742"></a>
-<span class="sourceLineNo">2743</span>  private RegionScannerImpl getScanner(Scan scan, List&lt;KeyValueScanner&gt; additionalScanners,<a name="line.2743"></a>
-<span class="sourceLineNo">2744</span>      long nonceGroup, long nonce) throws IOException {<a name="line.2744"></a>
-<span class="sourceLineNo">2745</span>    startRegionOperation(Operation.SCAN);<a name="line.2745"></a>
-<span class="sourceLineNo">2746</span>    try {<a name="line.2746"></a>
-<span class="sourceLineNo">2747</span>      // Verify families are all valid<a name="line.2747"></a>
-<span class="sourceLineNo">2748</span>      if (!scan.hasFamilies()) {<a name="line.2748"></a>
-<span class="sourceLineNo">2749</span>        // Adding all families to scanner<a name="line.2749"></a>
-<span class="sourceLineNo">2750</span>        for (byte[] family : this.htableDescriptor.getColumnFamilyNames()) {<a name="line.2750"></a>
-<span class="sourceLineNo">2751</span>          scan.addFamily(family);<a name="line.2751"></a>
-<span class="sourceLineNo">2752</span>        }<a name="line.2752"></a>
-<span class="sourceLineNo">2753</span>      } else {<a name="line.2753"></a>
-<span class="sourceLineNo">2754</span>        for (byte[] family : scan.getFamilyMap().keySet()) {<a name="line.2754"></a>
-<span class="sourceLineNo">2755</span>          checkFamily(family);<a name="line.2755"></a>
-<span class="sourceLineNo">2756</span>        }<a name="line.2756"></a>
-<span class="sourceLineNo">2757</span>      }<a name="line.2757"></a>
-<span class="sourceLineNo">2758</span>      return instantiateRegionScanner(scan, additionalScanners, nonceGroup, nonce);<a name="line.2758"></a>
-<span class="sourceLineNo">2759</span>    } finally {<a name="line.2759"></a>
-<span class="sourceLineNo">2760</span>      closeRegionOperation(Operation.SCAN);<a name="line.2760"></a>
-<span class="sourceLineNo">2761</span>    }<a name="line.2761"></a>
-<span class="sourceLineNo">2762</span>  }<a name="line.2762"></a>
-<span class="sourceLineNo">2763</span><a name="line.2763"></a>
-<span class="sourceLineNo">2764</span>  protected RegionScanner instantiateRegionScanner(Scan scan,<a name="line.2764"></a>
-<span class="sourceLineNo">2765</span>      List&lt;KeyValueScanner&gt; additionalScanners) throws IOException {<a name="line.2765"></a>
-<span class="sourceLineNo">2766</span>    return instantiateRegionScanner(scan, additionalScanners, HConstants.NO_NONCE,<a name="line.2766"></a>
-<span class="sourceLineNo">2767</span>      HConstants.NO_NONCE);<a name="line.2767"></a>
-<span class="sourceLineNo">2768</span>  }<a name="line.2768"></a>
-<span class="sourceLineNo">2769</span><a name="line.2769"></a>
-<span class="sourceLineNo">2770</span>  protected RegionScannerImpl instantiateRegionScanner(Scan scan,<a name="line.2770"></a>
-<span class="sourceLineNo">2771</span>      List&lt;KeyValueScanner&gt; additionalScanners, long nonceGroup, long nonce) throws IOException {<a name="line.2771"></a>
-<span class="sourceLineNo">2772</span>    if (scan.isReversed()) {<a name="line.2772"></a>
-<span class="sourceLineNo">2773</span>      if (scan.getFilter() != null) {<a name="line.2773"></a>
-<span class="sourceLineNo">2774</span>        scan.getFilter().setReversed(true);<a name="line.2774"></a>
-<span class="sourceLineNo">2775</span>      }<a name="line.2775"></a>
-<span class="sourceLineNo">2776</span>      return new ReversedRegionScannerImpl(scan, additionalScanners, this);<a name="line.2776"></a>
-<span class="sourceLineNo">2777</span>    }<a name="line.2777"></a>
-<span class="sourceLineNo">2778</span>    return new RegionScannerImpl(scan, additionalScanners, this, nonceGroup, nonce);<a name="line.2778"></a>
-<span class="sourceLineNo">2779</span>  }<a name="line.2779"></a>
-<span class="sourceLineNo">2780</span><a name="line.2780"></a>
-<span class="sourceLineNo">2781</span>  /**<a name="line.2781"></a>
-<span class="sourceLineNo">2782</span>   * Prepare a delete for a row mutation processor<a name="line.2782"></a>
-<span class="sourceLineNo">2783</span>   * @param delete The passed delete is modified by this method. WARNING!<a name="line.2783"></a>
-<span class="sourceLineNo">2784</span>   * @throws IOException<a name="line.2784"></a>
-<span class="sourceLineNo">2785</span>   */<a name="line.2785"></a>
-<span class="sourceLineNo">2786</span>  public void prepareDelete(Delete delete) throws IOException {<a name="line.2786"></a>
-<span class="sourceLineNo">2787</span>    // Check to see if this is a deleteRow insert<a name="line.2787"></a>
-<span class="sourceLineNo">2788</span>    if(delete.getFamilyCellMap().isEmpty()){<a name="line.2788"></a>
-<span class="sourceLineNo">2789</span>      for(byte [] family : this.htableDescriptor.getColumnFamilyNames()){<a name="line.2789"></a>
-<span class="sourceLineNo">2790</span>        // Don't eat the timestamp<a name="line.2790"></a>
-<span class="sourceLineNo">2791</span>        delete.addFamily(family, delete.getTimeStamp());<a name="line.2791"></a>
-<span class="sourceLineNo">2792</span>      }<a name="line.2792"></a>
-<span class="sourceLineNo">2793</span>    } else {<a name="line.2793"></a>
-<span class="sourceLineNo">2794</span>      for(byte [] family : delete.getFamilyCellMap().keySet()) {<a name="line.2794"></a>
-<span class="sourceLineNo">2795</span>        if(family == null) {<a name="line.2795"></a>
-<span class="sourceLineNo">2796</span>          throw new NoSuchColumnFamilyException("Empty family is invalid");<a name="line.2796"></a>
-<span class="sourceLineNo">2797</span>        }<a name="line.2797"></a>
-<span class="sourceLineNo">2798</span>        checkFamily(family);<a name="line.2798"></a>
-<span class="sourceLineNo">2799</span>      }<a name="line.2799"></a>
-<span class="sourceLineNo">2800</span>    }<a name="line.2800"></a>
-<span class="sourceLineNo">2801</span>  }<a name="line.2801"></a>
-<span class="sourceLineNo">2802</span><a name="line.2802"></a>
-<span class="sourceLineNo">2803</span>  @Override<a name="line.2803"></a>
-<span class="sourceLineNo">2804</span>  public void delete(Delete delete) throws IOException {<a name="line.2804"></a>
-<span class="sourceLineNo">2805</span>    checkReadOnly();<a name="line.2805"></a>
-<span class="sourceLineNo">2806</span>    checkResources();<a name="line.2806"></a>
-<span class="sourceLineNo">2807</span>    startRegionOperation(Operation.DELETE);<a name="line.2807"></a>
-<span class="sourceLineNo">2808</span>    try {<a name="line.2808"></a>
-<span class="sourceLineNo">2809</span>      // All edits for the given row (across all column families) must happen atomically.<a name="line.2809"></a>
-<span class="sourceLineNo">2810</span>      doBatchMutate(delete);<a name="line.2810"></a>
-<span class="sourceLineNo">2811</span>    } finally {<a name="line.2811"></a>
-<span class="sourceLineNo">2812</span>      closeRegionOperation(Operation.DELETE);<a name="line.2812"></a>
-<span class="sourceLineNo">2813</span>    }<a name="line.2813"></a>
-<span class="sourceLineNo">2814</span>  }<a name="line.2814"></a>
-<span class="sourceLineNo">2815</span><a name="line.2815"></a>
-<span class="sourceLineNo">2816</span>  /**<a name="line.2816"></a>
-<span class="sourceLineNo">2817</span>   * Row needed by below method.<a name="line.2817"></a>
-<span class="sourceLineNo">2818</span>   */<a name="line.2818"></a>
-<span class="sourceLineNo">2819</span>  private static final byte [] FOR_UNIT_TESTS_ONLY = Bytes.toBytes("ForUnitTestsOnly");<a name="line.2819"></a>
-<span class="sourceLineNo">2820</span><a name="line.2820"></a>
-<span class="sourceLineNo">2821</span>  /**<a name="line.2821"></a>
-<span class="sourceLineNo">2822</span>   * This is used only by unit tests. Not required to be a public API.<a name="line.2822"></a>
-<span class="sourceLineNo">2823</span>   * @param familyMap map of family to edits for the given family.<a name="line.2823"></a>
-<span class="sourceLineNo">2824</span>   * @throws IOException<a name="line.2824"></a>
-<span class="sourceLineNo">2825</span>   */<a name="line.2825"></a>
-<span class="sourceLineNo">2826</span>  void delete(NavigableMap&lt;byte[], List&lt;Cell&gt;&gt; familyMap,<a name="line.2826"></a>
-<span class="sourceLineNo">2827</span>      Durability durability) throws IOException {<a name="line.2827"></a>
-<span class="sourceLineNo">2828</span>    Delete delete = new Delete(FOR_UNIT_TESTS_ONLY);<a name="line.2828"></a>
-<span class="sourceLineNo">2829</span>    delete.setFamilyCellMap(familyMap);<a name="line.2829"></a>
-<span class="sourceLineNo">2830</span>    delete.setDurability(durability);<a name="line.2830"></a>
-<span class="sourceLineNo">2831</span>    doBatchMutate(delete);<a name="line.2831"></a>
-<span class="sourceLineNo">2832</span>  }<a name="line.2832"></a>
-<span class="sourceLineNo">2833</span><a name="line.2833"></a>
-<span class="sourceLineNo">2834</span>  /**<a name="line.2834"></a>
-<span class="sourceLineNo">2835</span>   * Set up correct timestamps in the KVs in Delete object.<a name="line.2835"></a>
-<span class="sourceLineNo">2836</span>   * &lt;p&gt;Caller should have the row and region locks.<a name="line.2836"></a>
-<span class="sourceLineNo">2837</span>   * @param mutation<a name="line.2837"></a>
-<span class="sourceLineNo">2838</span>   * @param familyMap<a name="line.2838"></a>
-<span class="sourceLineNo">2839</span>   * @param byteNow<a name="line.2839"></a>
-<span class="sourceLineNo">2840</span>   * @throws IOException<a name="line.2840"></a>
-<span class="sourceLineNo">2841</span>   */<a name="line.2841"></a>
-<span class="sourceLineNo">2842</span>  public void prepareDeleteTimestamps(Mutation mutation, Map&lt;byte[], List&lt;Cell&gt;&gt; familyMap,<a name="line.2842"></a>
-<span class="sourceLineNo">2843</span>      byte[] byteNow) throws IOException {<a name="line.2843"></a>
-<span class="sourceLineNo">2844</span>    for (Map.Entry&lt;byte[], List&lt;Cell&gt;&gt; e : familyMap.entrySet()) {<a name="line.2844"></a>
-<span class="sourceLineNo">2845</span><a name="line.2845"></a>
-<span class="sourceLineNo">2846</span>      byte[] family = e.getKey();<a name="line.2846"></a>
-<span class="sourceLineNo">2847</span>      List&lt;Cell&gt; cells = e.getValue();<a name="line.2847"></a>
-<span class="sourceLineNo">2848</span>      assert cells instanceof RandomAccess;<a name="line.2848"></a>
-<span class="sourceLineNo">2849</span><a name="line.2849"></a>
-<span class="sourceLineNo">2850</span>      Map&lt;byte[], Integer&gt; kvCount = new TreeMap&lt;&gt;(Bytes.BYTES_COMPARATOR);<a name="line.2850"></a>
-<span class="sourceLineNo">2851</span>      int listSize = cells.size();<a name="line.2851"></a>
-<span class="sourceLineNo">2852</span>      for (int i=0; i &lt; listSize; i++) {<a name="line.2852"></a>
-<span class="sourceLineNo">2853</span>        Cell cell = cells.get(i);<a name="line.2853"></a>
-<span class="sourceLineNo">2854</span>        //  Check if time is LATEST, change to time of most recent addition if so<a name="line.2854"></a>
-<span class="sourceLineNo">2855</span>        //  This is expensive.<a name="line.2855"></a>
-<span class="sourceLineNo">2856</span>        if (cell.getTimestamp() == HConstants.LATEST_TIMESTAMP<a name="line.2856"></a>
-<span class="sourceLineNo">2857</span>            &amp;&amp; PrivateCellUtil.isDeleteType(cell)) {<a name="line.2857"></a>
-<span class="sourceLineNo">2858</span>          byte[] qual = CellUtil.cloneQualifier(cell);<a name="line.2858"></a>
-<span class="sourceLineNo">2859</span><a name="line.2859"></a>
-<span class="sourceLineNo">2860</span>          Integer count = kvCount.get(qual);<a name="line.2860"></a>
-<span class="sourceLineNo">2861</span>          if (count == null) {<a name="line.2861"></a>
-<span class="sourceLineNo">2862</span>            kvCount.put(qual, 1);<a name="line.2862"></a>
-<span class="sourceLineNo">2863</span>          } else {<a name="line.2863"></a>
-<span class="sourceLineNo">2864</span>            kvCount.put(qual, count + 1);<a name="line.2864"></a>
-<span class="sourceLineNo">2865</span>          }<a name="line.2865"></a>
-<span class="sourceLineNo">2866</span>          count = kvCount.get(qual);<a name="line.2866"></a>
-<span class="sourceLineNo">2867</span><a name="line.2867"></a>
-<span class="sourceLineNo">2868</span>          Get get = new Get(CellUtil.cloneRow(cell));<a name="line.2868"></a>
-<span class="sourceLineNo">2869</span>          get.setMaxVersions(count);<a name="line.2869"></a>
-<span class="sourceLineNo">2870</span>          get.addColumn(family, qual);<a name="line.2870"></a>
-<span class="sourceLineNo">2871</span>          if (coprocessorHost != null) {<a name="line.2871"></a>
-<span class="sourceLineNo">2872</span>            if (!coprocessorHost.prePrepareTimeStampForDeleteVersion(mutation, cell,<a name="line.2872"></a>
-<span class="sourceLineNo">2873</span>                byteNow, get)) {<a name="line.2873"></a>
-<span class="sourceLineNo">2874</span>              updateDeleteLatestVersionTimeStamp(cell, get, count, byteNow);<a name="line.2874"></a>
-<span class="sourceLineNo">2875</span>            }<a name="line.2875"></a>
-<span class="sourceLineNo">2876</span>          } else {<a name="line.2876"></a>
-<span class="sourceLineNo">2877</span>            updateDeleteLatestVersionTimeStamp(cell, get, count, byteNow);<a name="line.2877"></a>
-<span class="sourceLineNo">2878</span>          }<a name="line.2878"></a>
-<span class="sourceLineNo">2879</span>        } else {<a name="line.2879"></a>
-<span class="sourceLineNo">2880</span>          PrivateCellUtil.updateLatestStamp(cell, byteNow, 0);<a name="line.2880"></a>
-<span class="sourceLineNo">2881</span>        }<a name="line.2881"></a>
-<span class="sourceLineNo">2882</span>      }<a name="line.2882"></a>
-<span class="sourceLineNo">2883</span>    }<a name="line.2883"></a>
-<span class="sourceLineNo">2884</span>  }<a name="line.2884"></a>
-<span class="sourceLineNo">2885</span><a name="line.2885"></a>
-<span class="sourceLineNo">2886</span>  void updateDeleteLatestVersionTimeStamp(Cell cell, Get get, int count, byte[] byteNow)<a name="line.2886"></a>
-<span class="sourceLineNo">2887</span>      throws IOException {<a name="line.2887"></a>
-<span class="sourceLineNo">2888</span>    List&lt;Cell&gt; result = get(get, false);<a name="line.2888"></a>
-<span class="sourceLineNo">2889</span><a name="line.2889"></a>
-<span class="sourceLineNo">2890</span>    if (result.size() &lt; count) {<a name="line.2890"></a>
-<span class="sourceLineNo">2891</span>      // Nothing to delete<a name="line.2891"></a>
-<span class="sourceLineNo">2892</span>      PrivateCellUtil.updateLatestStamp(cell, byteNow, 0);<a name="line.2892"></a>
-<span class="sourceLineNo">2893</span>      return;<a name="line.2893"></a>
-<span class="sourceLineNo">2894</span>    }<a name="line.2894"></a>
-<span class="sourceLineNo">2895</span>    if (result.size() &gt; count) {<a name="line.2895"></a>
-<span class="sourceLineNo">2896</span>      throw new RuntimeException("Unexpected size: " + result.size());<a name="line.2896"></a>
-<span class="sourceLineNo">2897</span>    }<a name="line.2897"></a>
-<span class="sourceLineNo">2898</span>    Cell getCell = result.get(count - 1);<a name="line.2898"></a>
-<span class="sourceLineNo">2899</span>    PrivateCellUtil.setTimestamp(cell, getCell.getTimestamp());<a name="line.2899"></a>
-<span class="sourceLineNo">2900</span>  }<a name="line.2900"></a>
-<span class="sourceLineNo">2901</span><a name="line.2901"></a>
-<span class="sourceLineNo">2902</span>  @Override<a name="line.2902"></a>
-<span class="sourceLineNo">2903</span>  public void put(Put put) throws IOException {<a name="line.2903"></a>
-<span class="sourceLineNo">2904</span>    checkReadOnly();<a name="line.2904"></a>
-<span class="sourceLineNo">2905</span><a name="line.2905"></a>
-<span class="sourceLineNo">2906</span>    // Do a rough check that we have resources to accept a write.  The check is<a name="line.2906"></a>
-<span class="sourceLineNo">2907</span>    // 'rough' in that between the resource check and the call to obtain a<a name="line.2907"></a>
-<span class="sourceLineNo">2908</span>    // read lock, resources may run out.  For now, the thought is that this<a name="line.2908"></a>
-<span class="sourceLineNo">2909</span>    // will be extremely rare; we'll deal with it when it happens.<a name="line.2909"></a>
-<span class="sourceLineNo">2910</span>    checkResources();<a name="line.2910"></a>
-<span class="sourceLineNo">2911</span>    startRegionOperation(Operation.PUT);<a name="line.2911"></a>
-<span class="sourceLineNo">2912</span>    try {<a name="line.2912"></a>
-<span class="sourceLineNo">2913</span>      // All edits for the given row (across all column families) must happen atomically.<a name="line.2913"></a>
-<span class="sourceLineNo">2914</span>      doBatchMutate(put);<a name="line.2914"></a>
-<span class="sourceLineNo">2915</span>    } finally {<a name="line.2915"></a>
-<span class="sourceLineNo">2916</span>      closeRegionOperation(Operation.PUT);<a name="line.2916"></a>
-<span class="sourceLineNo">2917</span>    }<a name="line.2917"></a>
-<span class="sourceLineNo">2918</span>  }<a name="line.2918"></a>
-<span class="sourceLineNo">2919</span><a name="line.2919"></a>
-<span class="sourceLineNo">2920</span>  /**<a name="line.2920"></a>
-<span class="sourceLineNo">2921</span>   * Class that tracks the progress of a batch operations, accumulating status codes and tracking<a name="line.2921"></a>
-<span class="sourceLineNo">2922</span>   * the index at which processing is proceeding. These batch operations may get split into<a name="line.2922"></a>
-<span class="sourceLineNo">2923</span>   * mini-batches for processing.<a name="line.2923"></a>
-<span class="sourceLineNo">2924</span>   */<a name="line.2924"></a>
-<span class="sourceLineNo">2925</span>  private abstract static class BatchOperation&lt;T&gt; {<a name="line.2925"></a>
-<span class="sourceLineNo">2926</span>    protected final T[] operations;<a name="line.2926"></a>
-<span class="sourceLineNo">2927</span>    protected final OperationStatus[] retCodeDetails;<a name="line.2927"></a>
-<span class="sourceLineNo">2928</span>    protected final WALEdit[] walEditsFromCoprocessors;<a name="line.2928"></a>
-<span class="sourceLineNo">2929</span>    // reference family cell maps directly so coprocessors can mutate them if desired<a name="line.2929"></a>
-<span class="sourceLineNo">2930</span>    protected final Map&lt;byte[], List&lt;Cell&gt;&gt;[] familyCellMaps;<a name="line.2930"></a>
-<span class="sourceLineNo">2931</span><a name="line.2931"></a>
-<span class="sourceLineNo">2932</span>    protected final HRegion region;<a name="line.2932"></a>
-<span class="sourceLineNo">2933</span>    protected int nextIndexToProcess = 0;<a name="line.2933"></a>
-<span class="sourceLineNo">2934</span>    protected final ObservedExceptionsInBatch observedExceptions;<a name="line.2934"></a>
-<span class="sourceLineNo">2935</span>    //Durability of the batch (highest durability of all operations)<a name="line.2935"></a>
-<span class="sourceLineNo">2936</span>    protected Durability durability;<a name="line.2936"></a>
-<span class="sourceLineNo">2937</span>    protected boolean atomic = false;<a name="line.2937"></a>
-<span class="sourceLineNo">2938</span><a name="line.2938"></a>
-<span class="sourceLineNo">2939</span>    public BatchOperation(final HRegion region, T[] operations) {<a name="line.2939"></a>
-<span class="sourceLineNo">2940</span>      this.operations = operations;<a name="line.2940"></a>
-<span class="sourceLineNo">2941</span>      this.retCodeDetails = new OperationStatus[operations.length];<a name="line.2941"></a>
-<span class="sourceLineNo">2942</span>      Arrays.fill(this.retCodeDetails, OperationStatus.NOT_RUN);<a name="line.2942"></a>
-<span class="sourceLineNo">2943</span>      this.walEditsFromCoprocessors = new WALEdit[operations.length];<a name="line.2943"></a>
-<span class="sourceLineNo">2944</span>      familyCellMaps = new Map[operations.length];<a name="line.2944"></a>
-<span class="sourceLineNo">2945</span><a name="line.2945"></a>
-<span class="sourceLineNo">2946</span>      this.region = region;<a name="line.2946"></a>
-<span class="sourceLineNo">2947</span>      observedExceptions = new ObservedExceptionsInBatch();<a name="line.2947"></a>
-<span class="sourceLineNo">2948</span>      durability = Durability.USE_DEFAULT;<a name="line.2948"></a>
-<span class="sourceLineNo">2949</span>    }<a name="line.2949"></a>
-<span class="sourceLineNo">2950</span><a name="line.2950"></a>
-<span class="sourceLineNo">2951</span>    /**<a name="line.2951"></a>
-<span class="sourceLineNo">2952</span>     * Visitor interface for batch operations<a name="line.2952"></a>
-<span class="sourceLineNo">2953</span>     */<a name="line.2953"></a>
-<span class="sourceLineNo">2954</span>    @FunctionalInterface<a name="line.2954"></a>
-<span class="sourceLineNo">2955</span>    public interface Visitor {<a name="line.2955"></a>
-<span class="sourceLineNo">2956</span>      /**<a name="line.2956"></a>
-<span class="sourceLineNo">2957</span>       * @param index operation index<a name="line.2957"></a>
-<span class="sourceLineNo">2958</span>       * @return If true continue visiting remaining entries, break otherwise<a name="line.2958"></a>
-<span class="sourceLineNo">2959</span>       */<a name="line.2959"></a>
-<span class="sourceLineNo">2960</span>      boolean visit(int index) throws IOException;<a name="line.2960"></a>
-<span class="sourceLineNo">2961</span>    }<a name="line.2961"></a>
-<span class="sourceLineNo">2962</span><a name="line.2962"></a>
-<span class="sourceLineNo">2963</span>    /**<a name="line.2963"></a>
-<span class="sourceLineNo">2964</span>     * Helper method for visiting pending/ all batch operations<a name="line.2964"></a>
-<span class="sourceLineNo">2965</span>     */<a name="line.2965"></a>
-<span class="sourceLineNo">2966</span>    public void visitBatchOperations(boolean pendingOnly, int lastIndexExclusive, Visitor visitor)<a name="line.2966"></a>
-<span class="sourceLineNo">2967</span>        throws IOException {<a name="line.2967"></a>
-<span class="sourceLineNo">2968</span>      assert lastIndexExclusive &lt;= this.size();<a name="line.2968"></a>
-<span class="sourceLineNo">2969</span>      for (int i = nextIndexToProcess; i &lt; lastIndexExclusive; i++) {<a name="line.2969"></a>
-<span class="sourceLineNo">2970</span>        if (!pendingOnly || isOperationPending(i)) {<a name="line.2970"></a>
-<span class="sourceLineNo">2971</span>          if (!visitor.visit(i)) {<a name="line.2971"></a>
-<span class="sourceLineNo">2972</span>            break;<a name="line.2972"></a>
-<span class="sourceLineNo">2973</span>          }<a name="line.2973"></a>
-<span class="sourceLineNo">2974</span>        }<a name="line.2974"></a>
-<span class="sourceLineNo">2975</span>      }<a name="line.2975"></a>
-<span class="sourceLineNo">2976</span>    }<a name="line.2976"></a>
-<span class="sourceLineNo">2977</span><a name="line.2977"></a>
-<span class="sourceLineNo">2978</span>    public abstract Mutation getMutation(int index);<a name="line.2978"></a>
-<span class="sourceLineNo">2979</span>    public abstract long getNonceGroup(int index);<a name="line.2979"></a>
-<span class="sourceLineNo">2980</span>    public abstract long getNonce(int index);<a name="line.2980"></a>
-<span class="sourceLineNo">2981</span>    /** This method is potentially expensive and useful mostly for non-replay CP path. */<a name="line.2981"></a>
-<span class="sourceLineNo">2982</span>    public abstract Mutation[] getMutationsForCoprocs();<a name="line.2982"></a>
-<span class="sourceLineNo">2983</span>    public abstract boolean isInReplay();<a name="line.2983"></a>
-<span class="sourceLineNo">2984</span>    public abstract long getOrigLogSeqNum();<a name="line.2984"></a>
-<span class="sourceLineNo">2985</span>    public abstract void startRegionOperation() throws IOException;<a name="line.2985"></a>
-<span class="sourceLineNo">2986</span>    public abstract void closeRegionOperation() throws IOException;<a name="line.2986"></a>
-<span class="sourceLineNo">2987</span><a name="line.2987"></a>
-<span class="sourceLineNo">2988</span>    /**<a name="line.2988"></a>
-<span class="sourceLineNo">2989</span>     * Validates each mutation and prepares a batch for write. If necessary (non-replay case), runs<a name="line.2989"></a>
-<span class="sourceLineNo">2990</span>     * CP prePut()/ preDelete() hooks for all mutations in a batch. This is intended to operate on<a name="line.2990"></a>
-<span class="sourceLineNo">2991</span>     * entire batch and will be called from outside of class to check and prepare batch. This can<a name="line.2991"></a>
-<span class="sourceLineNo">2992</span>     * be implemented by calling helper method {@link #checkAndPrepareMutation(int, long)} in a<a name="line.2992"></a>
-<span class="sourceLineNo">2993</span>     * 'for' loop over mutations.<a name="line.2993"></a>
-<span class="sourceLineNo">2994</span>     */<a name="line.2994"></a>
-<span class="sourceLineNo">2995</span>    public abstract void checkAndPrepare() throws IOException;<a name="line.2995"></a>
-<span class="sourceLineNo">2996</span><a name="line.2996"></a>
-<span class="sourceLineNo">2997</span>    /**<a name="line.2997"></a>
-<span class="sourceLineNo">2998</span>     * Implement any Put request specific check and prepare logic here. Please refer to<a name="line.2998"></a>
-<span class="sourceLineNo">2999</span>     * {@link #checkAndPrepareMutation(Mutation, long)} for how its used.<a name="line.2999"></a>
-<span class="sourceLineNo">3000</span>     */<a name="line.3000"></a>
-<span class="sourceLineNo">3001</span>    protected abstract void checkAndPreparePut(final Put p) throws IOException;<a name="line.3001"></a>
-<span class="sourceLineNo">3002</span><a name="line.3002"></a>
-<span class="sourceLineNo">3003</span>    /**<a name="line.3003"></a>
-<span class="sourceLineNo">3004</span>     *  If necessary, calls preBatchMutate() CP hook for a mini-batch and updates metrics, cell<a name="line.3004"></a>
-<span class="sourceLineNo">3005</span>     *  count, tags and timestamp for all cells of all operations in a mini-batch.<a name="line.3005"></a>
-<span class="sourceLineNo">3006</span>     */<a name="line.3006"></a>
-<span class="sourceLineNo">3007</span>    public abstract void prepareMiniBatchOperations(MiniBatchOperationInProgress&lt;Mutation&gt;<a name="line.3007"></a>
-<span class="sourceLineNo">3008</span>        miniBatchOp, long timestamp, final List&lt;RowLock&gt; acquiredRowLocks) throws IOException;<a name="line.3008"></a>
-<span class="sourceLineNo">3009</span><a name="line.3009"></a>
-<span class="sourceLineNo">3010</span>    /**<a name="line.3010"></a>
-<span class="sourceLineNo">3011</span>     * Write mini-batch operations to MemStore<a name="line.3011"></a>
-<span class="sourceLineNo">3012</span>     */<a name="line.3012"></a>
-<span class="sourceLineNo">3013</span>    public abstract WriteEntry writeMiniBatchOperationsToMemStore(<a name="line.3013"></a>
-<span class="sourceLineNo">3014</span>        final MiniBatchOperationInProgress&lt;Mutation&gt; miniBatchOp, final WriteEntry writeEntry)<a name="line.3014"></a>
-<span class="sourceLineNo">3015</span>        throws IOException;<a name="line.3015"></a>
-<span class="sourceLineNo">3016</span><a name="line.3016"></a>
-<span class="sourceLineNo">3017</span>    protected void writeMiniBatchOperationsToMemStore(<a name="line.3017"></a>
-<span class="sourceLineNo">3018</span>        final MiniBatchOperationInProgress&lt;Mutation&gt; miniBatchOp, final long writeNumber)<a name="line.3018"></a>
-<span class="sourceLineNo">3019</span>        throws IOException {<a name="line.3019"></a>
-<span class="sourceLineNo">3020</span>      MemStoreSizing memStoreAccounting = new MemStoreSizing();<a name="line.3020"></a>
-<span class="sourceLineNo">3021</span>      visitBatchOperations(true, miniBatchOp.getLastIndexExclusive(), (int index) -&gt; {<a name="line.3021"></a>
-<span class="sourceLineNo">3022</span>        // We need to update the sequence id for following reasons.<a name="line.3022"></a>
-<span class="sourceLineNo">3023</span>        // 1) If the op is in replay mode, FSWALEntry#stampRegionSequenceId won't stamp sequence id.<a name="line.3023"></a>
-<span class="sourceLineNo">3024</span>        // 2) If no WAL, FSWALEntry won't be used<a name="line.3024"></a>
-<span class="sourceLineNo">3025</span>        // we use durability of the original mutation for the mutation passed by CP.<a name="line.3025"></a>
-<span class="sourceLineNo">3026</span>        if (isInReplay() || getMutation(index).getDurability() == Durability.SKIP_WAL) {<a name="line.3026"></a>
-<span class="sourceLineNo">3027</span>          region.updateSequenceId(familyCellMaps[index].values(), writeNumber);<a name="line.3027"></a>
-<span class="sourceLineNo">3028</span>        }<a name="line.3028"></a>
-<span class="sourceLineNo">3029</span>        applyFamilyMapToMemStore(familyCellMaps[index], memStoreAccounting);<a name="line.3029"></a>
-<span class="sourceLineNo">3030</span>        return true;<a name="line.3030"></a>
-<span class="sourceLineNo">3031</span>      });<a name="line.3031"></a>
-<span class="sourceLineNo">3032</span>      // update memStore size<a name="line.3032"></a>
-<span class="sourceLineNo">3033</span>      region.addAndGetMemStoreSize(memStoreAccounting);<a name="line.3033"></a>
-<span class="sourceLineNo">3034</span>    }<a name="line.3034"></a>
-<span class="sourceLineNo">3035</span><a name="line.3035"></a>
-<span class="sourceLineNo">3036</span>    public boolean isDone() {<a name="line.3036"></a>
-<span class="sourceLineNo">3037</span>      return nextIndexToProcess == operations.length;<a name="line.3037"></a>
-<span class="sourceLineNo">3038</span>    }<a name="line.3038"></a>
-<span class="sourceLineNo">3039</span><a name="line.3039"></a>
-<span class="sourceLineNo">3040</span>    public int size() {<a name="line.3040"></a>
-<span class="sourceLineNo">3041</span>      return operations.length;<a name="line.3041"></a>
-<span class="sourceLineNo">3042</span>    }<a name="line.3042"></a>
-<span class="sourceLineNo">3043</span><a name="line.3043"></a>
-<span class="sourceLineNo">3044</span>    public boolean isOperationPending(int index) {<a name="line.3044"></a>
-<span class="sourceLineNo">3045</span>      return retCodeDetails[index].getOperationStatusCode() == OperationStatusCode.NOT_RUN;<a name="line.3045"></a>
-<span class="sourceLineNo">3046</span>    }<a name="line.3046"></a>
-<span class="sourceLineNo">3047</span><a name="line.3047"></a>
-<span class="sourceLineNo">3048</span>    public List&lt;UUID&gt; getClusterIds() {<a name="line.3048"></a>
-<span class="sourceLineNo">3049</span>      assert size() != 0;<a name="line.3049"></a>
-<span class="sourceLineNo">3050</span>      return getMutation(0).getClusterIds();<a name="line.3050"></a>
-<span class="sourceLineNo">3051</span>    }<a name="line.3051"></a>
-<span class="sourceLineNo">3052</span><a name="line.3052"></a>
-<span class="sourceLineNo">3053</span>    boolean isAtomic() {<a name="line.3053"></a>
-<span class="sourceLineNo">3054</span>      return atomic;<a name="line.3054"></a>
-<span class="sourceLineNo">3055</span>    }<a name="line.3055"></a>
-<span class="sourceLineNo">3056</span><a name="line.3056"></a>
-<span class="sourceLineNo">3057</span>    /**<a name="line.3057"></a>
-<span class="sourceLineNo">3058</span>     * Helper method that checks and prepares only one mutation. This can be used to implement<a name="line.3058"></a>
-<span class="sourceLineNo">3059</span>     * {@link #checkAndPrepare()} for entire Batch.<a name="line.3059"></a>
-<span class="sourceLineNo">3060</span>     * NOTE: As CP prePut()/ preDelete() hooks may modify mutations, this method should be called<a name="line.3060"></a>
-<span class="sourceLineNo">3061</span>     * after prePut()/ preDelete() CP hooks are run for the mutation<a name="line.3061"></a>
-<span class="sourceLineNo">3062</span>     */<a name="line.3062"></a>
-<span class="sourceLineNo">3063</span>    protected void checkAndPrepareMutation(Mutation mutation, final long timestamp)<a name="line.3063"></a>
-<span class="sourceLineNo">3064</span>        throws IOException {<a name="line.3064"></a>
-<span class="sourceLineNo">3065</span>      region.checkRow(mutation.getRow(), "batchMutate");<a name="line.3065"></a>
-<span class="sourceLineNo">3066</span>      if (mutation instanceof Put) {<a name="line.3066"></a>
-<span class="sourceLineNo">3067</span>        // Check the families in the put. If bad, skip this one.<a name="line.3067"></a>
-<span class="sourceLineNo">3068</span>        checkAndPreparePut((Put) mutation);<a name="line.3068"></a>
-<span class="sourceLineNo">3069</span>        region.checkTimestamps(mutation.getFamilyCellMap(), timestamp);<a name="line.3069"></a>
-<span class="sourceLineNo">3070</span>      } else {<a name="line.3070"></a>
-<span class="sourceLineNo">3071</span>        region.prepareDelete((Delete) mutation);<a name="line.3071"></a>
-<span class="sourceLineNo">3072</span>      }<a name="line.3072"></a>
-<span class="sourceLineNo">3073</span>    }<a name="line.3073"></a>
-<span class="sourceLineNo">3074</span><a name="line.3074"></a>
-<span class="sourceLineNo">3075</span>    protected void checkAndPrepareMutation(int index, long timestamp) throws IOException {<a name="line.3075"></a>
-<span class="sourceLineNo">3076</span>      Mutation mutation = getMutation(index);<a name="line.3076"></a>
-<span class="sourceLineNo">3077</span>      try {<a name="line.3077"></a>
-<span class="sourceLineNo">3078</span>        this.checkAndPrepareMutation(mutation, timestamp);<a name="line.3078"></a>
-<span class="sourceLineNo">3079</span><a name="line.3079"></a>
-<span class="sourceLineNo">3080</span>        // store the family map reference to allow for mutations<a name="line.3080"></a>
-<span class="sourceLineNo">3081</span>        familyCellMaps[index] = mutation.getFamilyCellMap();<a name="line.3081"></a>
-<span class="sourceLineNo">3082</span>        // store durability for the batch (highest durability of all operations in the batch)<a name="line.3082"></a>
-<span class="sourceLineNo">3083</span>        Durability tmpDur = region.getEffectiveDurability(mutation.getDurability());<a name="line.3083"></a>
-<span class="sourceLineNo">3084</span>        if (tmpDur.ordinal() &gt; durability.ordinal()) {<a name="line.3084"></a>
-<span class="sourceLineNo">3085</span>          durability = tmpDur;<a name="line.3085"></a>
-<span class="sourceLineNo">3086</span>        }<a name="line.3086"></a>
-<span class="sourceLineNo">3087</span>      } catch (NoSuchColumnFamilyException nscfe) {<a name="line.3087"></a>
-<span class="sourceLineNo">3088</span>        final String msg = "No such column family in batch mutation. ";<a name="line.3088"></a>
-<span class="sourceLineNo">3089</span>        if (observedExceptions.hasSeenNoSuchFamily()) {<a name="line.3089"></a>
-<span class="sourceLineNo">3090</span>          LOG.warn(msg + nscfe.getMessage());<a name="line.3090"></a>
-<span class="sourceLineNo">3091</span>        } else {<a name="line.3091"></a>
-<span class="sourceLineNo">3092</span>          LOG.warn(msg, nscfe);<a name="line.3092"></a>
-<span class="sourceLineNo">3093</span>          observedExceptions.sawNoSuchFamily();<a name="line.3093"></a>
-<span class="sourceLineNo">3094</span>        }<a name="line.3094"></a>
-<span class="sourceLineNo">3095</span>        retCodeDetails[index] = new OperationStatus(<a name="line.3095"></a>
-<span class="sourceLineNo">3096</span>            OperationStatusCode.BAD_FAMILY, nscfe.getMessage());<a name="line.3096"></a>
-<span class="sourceLineNo">3097</span>        if (isAtomic()) { // fail, atomic means all or none<a name="line.3097"></a>
-<span class="sourceLineNo">3098</span>          throw nscfe;<a name="line.3098"></a>
-<span class="sourceLineNo">3099</span>        }<a name="line.3099"></a>
-<span class="sourceLineNo">3100</span>      } catch (FailedSanityCheckException fsce) {<a name="line.3100"></a>
-<span class="sourceLineNo">3101</span>        final String msg = "Batch Mutation did not pass sanity check. ";<a name="line.3101"></a>
-<span class="sourceLineNo">3102</span>        if (observedExceptions.hasSeenFailedSanityCheck()) {<a name="line.3102"></a>
-<span class="sourceLineNo">3103</span>          LOG.warn(msg + fsce.getMessage());<a name="line.3103"></a>
-<span class="sourceLineNo">3104</span>        } else {<a name="line.3104"></a>
-<span class="sourceLineNo">3105</span>          LOG.warn(msg, fsce);<a name="line.3105"></a>
-<span class="sourceLineNo">3106</span>          observedExceptions.sawFailedSanityCheck();<a name="line.3106"></a>
-<span class="sourceLineNo">3107</span>        }<a name="line.3107"></a>
-<span class="sourceLineNo">3108</span>        retCodeDetails[index] = new OperationStatus(<a name="line.3108"></a>
-<span class="sourceLineNo">3109</span>            OperationStatusCode.SANITY_CHECK_FAILURE, fsce.getMessage());<a name="line.3109"></a>
-<span class="sourceLineNo">3110</span>        if (isAtomic()) {<a name="line.3110"></a>
-<span class="sourceLineNo">3111</span>          throw fsce;<a name="line.3111"></a>
-<span class="sourceLineNo">3112</span>        }<a name="line.3112"></a>
-<span class="sourceLineNo">3113</span>      } catch (WrongRegionException we) {<a name="line.3113"></a>
-<span class="sourceLineNo">3114</span>        final String msg = "Batch mutation had a row that does not belong to this region. ";<a name="line.3114"></a>
-<span class="sourceLineNo">3115</span>        if (observedExceptions.hasSeenWrongRegion()) {<a name="line.3115"></a>
-<span class="sourceLineNo">3116</span>          LOG.warn(msg + we.getMessage());<a name="line.3116"></a>
-<span class="sourceLineNo">3117</span>        } else {<a name="line.3117"></a>
-<span class="sourceLineNo">3118</span>          LOG.warn(msg, we);<a name="line.3118"></a>
-<span class="sourceLineNo">3119</span>          observedExceptions.sawWrongRegion();<a name="line.3119"></a>
-<span class="sourceLineNo">3120</span>        }<a name="line.3120"></a>
-<span class="sourceLineNo">3121</span>        retCodeDetails[index] = new OperationStatus(<a name="line.3121"></a>
-<span class="sourceLineNo">3122</span>            OperationStatusCode.SANITY_CHECK_FAILURE, we.getMessage());<a name="line.3122"></a>
-<span class="sourceLineNo">3123</span>        if (isAtomic()) {<a name="line.3123"></a>
-<span class="sourceLineNo">3124</span>          throw we;<a name="line.3124"></a>
-<span class="sourceLineNo">3125</span>        }<a name="line.3125"></a>
-<span class="sourceLineNo">3126</span>      }<a name="line.3126"></a>
-<span class="sourceLineNo">3127</span>    }<a name="line.3127"></a>
-<span class="sourceLineNo">3128</span><a name="line.3128"></a>
-<span class="sourceLineNo">3129</span>    /**<a name="line.3129"></a>
-<span class="sourceLineNo">3130</span>     * Creates Mini-batch of all operations [nextIndexToProcess, lastIndexExclusive) for which<a name="line.3130"></a>
-<span class="sourceLineNo">3131</span>     * a row lock can be acquired. All mutations with locked rows are considered to be<a name="line.3131"></a>
-<span class="sourceLineNo">3132</span>     * In-progress operations and hence the name {@link MiniBatchOperationInProgress}. Mini batch<a name="line.3132"></a>
-<span class="sourceLineNo">3133</span>     * is window over {@link BatchOperation} and contains contiguous pending operations.<a name="line.3133"></a>
-<span class="sourceLineNo">3134</span>     *<a name="line.3134"></a>
-<span class="sourceLineNo">3135</span>     * @param acquiredRowLocks keeps track of rowLocks acquired.<a name="line.3135"></a>
-<span class="sourceLineNo">3136</span>     */<a name="line.3136"></a>
-<span class="sourceLineNo">3137</span>    public MiniBatchOperationInProgress&lt;Mutation&gt; lockRowsAndBuildMiniBatch(<a name="line.3137"></a>
-<span class="sourceLineNo">3138</span>        List&lt;RowLock&gt; acquiredRowLocks) throws IOException {<a name="line.3138"></a>
-<span class="sourceLineNo">3139</span>      int readyToWriteCount = 0;<a name="line.3139"></a>
-<span class="sourceLineNo">3140</span>      int lastIndexExclusive = 0;<a name="line.3140"></a>
-<span class="sourceLineNo">3141</span>      for (; lastIndexExclusive &lt; size(); lastIndexExclusive++) {<a name="line.3141"></a>
-<span class="sourceLineNo">3142</span>        if (!isOperationPending(lastIndexExclusive)) {<a name="line.3142"></a>
-<span class="sourceLineNo">3143</span>          continue;<a name="line.3143"></a>
-<span class="sourceLineNo">3144</span>        }<a name="line.3144"></a>
-<span class="sourceLineNo">3145</span>        Mutation mutation = getMutation(lastIndexExclusive);<a name="line.3145"></a>
-<span class="sourceLineNo">3146</span>        // If we haven't got any rows in our batch, we should block to get the next one.<a name="line.3146"></a>
-<span class="sourceLineNo">3147</span>        RowLock rowLock = null;<a name="line.3147"></a>
-<span class="sourceLineNo">3148</span>        try {<a name="line.3148"></a>
-<span class="sourceLineNo">3149</span>          // if atomic then get exclusive lock, else shared lock<a name="line.3149"></a>
-<span class="sourceLineNo">3150</span>          rowLock = region.getRowLockInternal(mutation.getRow(), !isAtomic());<a name="line.3150"></a>
-<span class="sourceLineNo">3151</span>        } catch (TimeoutIOException e) {<a name="line.3151"></a>
-<span class="sourceLineNo">3152</span>          // We will retry when other exceptions, but we should stop if we timeout .<a name="line.3152"></a>
-<span class="sourceLineNo">3153</span>          throw e;<a name="line.3153"></a>
-<span class="sourceLineNo">3154</span>        } catch (IOException ioe) {<a name="line.3154"></a>
-<span class="sourceLineNo">3155</span>          LOG.warn("Failed getting lock, row=" + Bytes.toStringBinary(mutation.getRow()), ioe);<a name="line.3155"></a>
-<span class="sourceLineNo">3156</span>          if (isAtomic()) { // fail, atomic means all or none<a name="line.3156"></a>
-<span class="sourceLineNo">3157</span>            throw ioe;<a name="line.3157"></a>
-<span class="sourceLineNo">3158</span>          }<a name="line.3158"></a>
-<span class="sourceLineNo">3159</span>        }<a name="line.3159"></a>
-<span class="sourceLineNo">3160</span>        if (rowLock == null) {<a name="line.3160"></a>
-<span class="sourceLineNo">3161</span>          // We failed to grab another lock<a name="line.3161"></a>
-<span class="sourceLineNo">3162</span>          if (isAtomic()) {<a name="line.3162"></a>
-<span class="sourceLineNo">3163</span>            throw new IOException("Can't apply all operations atomically!");<a name="line.3163"></a>
-<span class="sourceLineNo">3164</span>          }<a name="line.3164"></a>
-<span class="sourceLineNo">3165</span>          break; // Stop acquiring more rows for this batch<a name="line.3165"></a>
-<span class="sourceLineNo">3166</span>        } else {<a name="line.3166"></a>
-<span class="sourceLineNo">3167</span>          acquiredRowLocks.add(rowLock);<a name="line.3167"></a>
-<span class="sourceLineNo">3168</span>        }<a name="line.3168"></a>
-<span class="sourceLineNo">3169</span>        readyToWriteCount++;<a name="line.3169"></a>
-<span class="sourceLineNo">3170</span>      }<a name="line.3170"></a>
-<span class="sourceLineNo">3171</span>      return createMiniBatch(lastIndexExclusive, readyToWriteCount);<a name="line.3171"></a>
-<span class="sourceLineNo">3172</span>    }<a name="line.3172"></a>
-<span class="sourceLineNo">3173</span><a name="line.3173"></a>
-<span class="sourceLineNo">3174</span>    protected MiniBatchOperationInProgress&lt;Mutation&gt; createMiniBatch(final int lastIndexExclusive,<a name="line.3174"></a>
-<span class="sourceLineNo">3175</span>        final int readyToWriteCount) {<a name="line.3175"></a>
-<span class="sourceLineNo">3176</span>      return new MiniBatchOperationInProgress&lt;&gt;(getMutationsForCoprocs(), retCodeDetails,<a name="line.3176"></a>
-<span class="sourceLineNo">3177</span>          walEditsFromCoprocessors, nextIndexToProcess, lastIndexExclusive, readyToWriteCount);<a name="line.3177"></a>
-<span class="sourceLineNo">3178</span>    }<a name="line.3178"></a>
-<span class="sourceLineNo">3179</span><a name="line.3179"></a>
-<span class="sourceLineNo">3180</span>    /**<a name="line.3180"></a>
-<span class="sourceLineNo">3181</span>     * Builds separate WALEdit per nonce by applying input mutations. If WALEdits from CP are<a name="line.3181"></a>
-<span class="sourceLineNo">3182</span>     * present, they are merged to result WALEdit.<a name="line.3182"></a>
-<span class="sourceLineNo">3183</span>     */<a name="line.3183"></a>
-<span class="sourceLineNo">3184</span>    public List&lt;Pair&lt;NonceKey, WALEdit&gt;&gt; buildWALEdits(<a name="line.3184"></a>
-<span class="sourceLineNo">3185</span>        final MiniBatchOperationInProgress&lt;Mutation&gt; miniBatchOp) throws IOException {<a name="line.3185"></a>
-<span class="sourceLineNo">3186</span>      List&lt;Pair&lt;NonceKey, WALEdit&gt;&gt; walEdits = new ArrayList&lt;&gt;();<a name="line.3186"></a>
-<span class="sourceLineNo">3187</span><a name="line.3187"></a>
-<span class="sourceLineNo">3188</span>      visitBatchOperations(true, nextIndexToProcess + miniBatchOp.size(), new Visitor() {<a name="line.3188"></a>
-<span class="sourceLineNo">3189</span>        private Pair&lt;NonceKey, WALEdit&gt; curWALEditForNonce;<a name="line.3189"></a>
-<span class="sourceLineNo">3190</span>        @Override<a name="line.3190"></a>
-<span class="sourceLineNo">3191</span>        public boolean visit(int index) throws IOException {<a name="line.3191"></a>
-<span class="sourceLineNo">3192</span>          Mutation m = getMutation(index);<a name="line.3192"></a>
-<span class="sourceLineNo">3193</span>          // we use durability of the original mutation for the mutation passed by CP.<a name="line.3193"></a>
-<span class="sourceLineNo">3194</span>          if (region.getEffectiveDurability(m.getDurability()) == Durability.SKIP_WAL) {<a name="line.3194"></a>
-<span class="sourceLineNo">3195</span>            region.recordMutationWithoutWal(m.getFamilyCellMap());<a name="line.3195"></a>
-<span class="sourceLineNo">3196</span>            return true;<a name="line.3196"></a>
-<span class="sourceLineNo">3197</span>          }<a name="line.3197"></a>
-<span class="sourceLineNo">3198</span><a name="line.3198"></a>
-<span class="sourceLineNo">3199</span>          // the batch may contain multiple nonce keys (replay case). If so, write WALEdit for each.<a name="line.3199"></a>
-<span class="sourceLineNo">3200</span>          // Given how nonce keys are originally written, these should be contiguous.<a name="line.3200"></a>
-<span class="sourceLineNo">3201</span>          // They don't have to be, it will still work, just write more WALEdits than needed.<a name="line.3201"></a>
-<span class="sourceLineNo">3202</span>          long nonceGroup = getNonceGroup(index);<a name="line.3202"></a>
-<span class="sourceLineNo">3203</span>          long nonce = getNonce(index);<a name="line.3203"></a>
-<span class="sourceLineNo">3204</span>          if (curWALEditForNonce == null ||<a name="line.3204"></a>
-<span class="sourceLineNo">3205</span>              curWALEditForNonce.getFirst().getNonceGroup() != nonceGroup ||<a name="line.3205"></a>
-<span class="sourceLineNo">3206</span>              curWALEditForNonce.getFirst().getNonce() != nonce) {<a name="line.3206"></a>
-<span class="sourceLineNo">3207</span>            curWALEditForNonce = new Pair&lt;&gt;(new NonceKey(nonceGroup, nonce),<a name="line.3207"></a>
-<span class="sourceLineNo">3208</span>                new WALEdit(miniBatchOp.getCellCount(), isInReplay()));<a name="line.3208"></a>
-<span class="sourceLineNo">3209</span>            walEdits.add(curWALEditForNonce);<a name="line.3209"></a>
-<span class="sourceLineNo">3210</span>          }<a name="line.3210"></a>
-<span class="sourceLineNo">3211</span>          WALEdit walEdit = curWALEditForNonce.getSecond();<a name="line.3211"></a>
-<span class="sourceLineNo">3212</span><a name="line.3212"></a>
-<span class="sourceLineNo">3213</span>          // Add WAL edits by CP<a name="line.3213"></a>
-<span class="sourceLineNo">3214</span>          WALEdit fromCP = walEditsFromCoprocessors[index];<a name="line.3214"></a>
-<span class="sourceLineNo">3215</span>          if (fromCP != null) {<a name="line.3215"></a>
-<span class="sourceLineNo">3216</span>            for (Cell cell : fromCP.getCells()) {<a name="line.3216"></a>
-<span class="sourceLineNo">3217</span>              walEdit.add(cell);<a name="line.3217"></a>
-<span class="sourceLineNo">3218</span>            }<a name="line.3218"></a>
-<span class="sourceLineNo">3219</span>          }<a name="line.3219"></a>
-<span class="sourceLineNo">3220</span>          addFamilyMapToWALEdit(familyCellMaps[index], walEdit);<a name="line.3220"></a>
-<span class="sourceLineNo">3221</span><a name="line.3221"></a>
-<span class="sourceLineNo">3222</span>          return true;<a name="line.3222"></a>
-<span class="sourceLineNo">3223</span>        }<a name="line.3223"></a>
-<span class="sourceLineNo">3224</span>      });<a name="line.3224"></a>
-<span class="sourceLineNo">3225</span>      return walEdits;<a name="line.3225"></a>
-<span class="sourceLineNo">3226</span>    }<a name="line.3226"></a>
-<span class="sourceLineNo">3227</span><a name="line.3227"></a>
-<span class="sourceLineNo">3228</span>    /**<a name="line.3228"></a>
-<span class="sourceLineNo">3229</span>     * This method completes mini-batch operations by calling postBatchMutate() CP hook (if<a name="line.3229"></a>
-<span class="sourceLineNo">3230</span>     * required) and completing mvcc.<a name="line.3230"></a>
-<span class="sourceLineNo">3231</span>     */<a name="line.3231"></a>
-<span class="sourceLineNo">3232</span>    public void completeMiniBatchOperations(<a name="line.3232"></a>
-<span class="sourceLineNo">3233</span>        final MiniBatchOperationInProgress&lt;Mutation&gt; miniBatchOp, final WriteEntry writeEntry)<a name="line.3233"></a>
-<span class="sourceLineNo">3234</span>        throws IOException {<a name="line.3234"></a>
-<span class="sourceLineNo">3235</span>      if (writeEntry != null) {<a name="line.3235"></a>
-<span class="sourceLineNo">3236</span>        region.mvcc.completeAndWait(writeEntry);<a name="line.3236"></a>
-<span class="sourceLineNo">3237</span>      }<a name="line.3237"></a>
-<span class="sourceLineNo">3238</span>    }<a name="line.3238"></a>
-<span class="sourceLineNo">3239</span><a name="line.3239"></a>
-<span class="sourceLineNo">3240</span>    public void doPostOpCleanupForMiniBatch(<a name="line.3240"></a>
-<span class="sourceLineNo">3241</span>        final MiniBatchOperationInProgress&lt;Mutation&gt; miniBatchOp, final WALEdit walEdit,<a name="line.3241"></a>
-<span class="sourceLineNo">3242</span>        boolean success) throws IOException {}<a name="line.3242"></a>
-<span class="sourceLineNo">3243</span><a name="line.3243"></a>
-<span class="sourceLineNo">3244</span>    /**<a name="line.3244"></a>
-<span class="sourceLineNo">3245</span>     * Atomically apply the given map of family-&gt;edits to the memstore.<a name="line.3245"></a>
-<span class="sourceLineNo">3246</span>     * This handles the consistency control on its own, but the caller<a name="line.3246"></a>
-<span class="sourceLineNo">3247</span>     * should already have locked updatesLock.readLock(). This also does<a name="line.3247"></a>
-<span class="sourceLineNo">3248</span>     * &lt;b&gt;not&lt;/b&gt; check the families for validity.<a name="line.3248"></a>
-<span class="sourceLineNo">3249</span>     *<a name="line.3249"></a>
-<span class="sourceLineNo">3250</span>     * @param familyMap Map of Cells by family<a name="line.3250"></a>
-<span class="sourceLineNo">3251</span>     */<a name="line.3251"></a>
-<span class="sourceLineNo">3252</span>    protected void applyFamilyMapToMemStore(Map&lt;byte[], List&lt;Cell&gt;&gt; familyMap,<a name="line.3252"></a>
-<span class="sourceLineNo">3253</span>        MemStoreSizing memstoreAccounting) throws IOException {<a name="line.3253"></a>
-<span class="sourceLineNo">3254</span>      for (Map.Entry&lt;byte[], List&lt;Cell&gt;&gt; e : familyMap.entrySet()) {<a name="line.3254"></a>
-<span class="sourceLineNo">3255</span>        byte[] family = e.getKey();<a name="line.3255"></a>
-<span class="sourceLineNo">3256</span>        List&lt;Cell&gt; cells = e.getValue();<a name="line.3256"></a>
-<span class="sourceLineNo">3257</span>        assert cells instanceof RandomAccess;<a name="line.3257"></a>
-<span class="sourceLineNo">3258</span>        region.applyToMemStore(region.getStore(family), cells, false, memstoreAccounting);<a name="line.3258"></a>
-<span class="sourceLineNo">3259</span>      }<a name="line.3259"></a>
-<span class="sourceLineNo">3260</span>    }<a name="line.3260"></a>
-<span class="sourceLineNo">3261</span><a name="line.3261"></a>
-<span class="sourceLineNo">3262</span>    /**<a name="line.3262"></a>
-<span class="sourceLineNo">3263</span>     * Append the given map of family-&gt;edits to a WALEdit data structure.<a name="line.3263"></a>
-<span class="sourceLineNo">3264</span>     * This does not write to the WAL itself.<a name="line.3264"></a>
-<span class="sourceLineNo">3265</span>     * @param familyMap map of family-&gt;edits<a name="line.3265"></a>
-<span class="sourceLineNo">3266</span>     * @param walEdit the destination entry to append into<a name="line.3266"></a>
-<span class="sourceLineNo">3267</span>     */<a name="line.3267"></a>
-<span class="sourceLineNo">3268</span>    private void addFamilyMapToWALEdit(Map&lt;byte[], List&lt;Cell&gt;&gt; familyMap,<a name="line.3268"></a>
-<span class="sourceLineNo">3269</span>        WALEdit walEdit) {<a name="line.3269"></a>
-<span class="sourceLineNo">3270</span>      for (List&lt;Cell&gt; edits : familyMap.values()) {<a name="line.3270"></a>
-<span class="sourceLineNo">3271</span>        // Optimization: 'foreach' loop is not used. See:<a name="line.3271"></a>
-<span class="sourceLineNo">3272</span>        // HBASE-12023 HRegion.applyFamilyMapToMemstore creates too many iterator objects<a name="line.3272"></a>
-<span class="sourceLineNo">3273</span>        assert edits instanceof RandomAccess;<a name="line.3273"></a>
-<span class="sourceLineNo">3274</span>        int listSize = edits.size();<a name="line.3274"></a>
-<span class="sourceLineNo">3275</span>        for (int i=0; i &lt; listSize; i++) {<a name="line.3275"></a>
-<span class="sourceLineNo">3276</span>          Cell cell = edits.get(i);<a name="line.3276"></a>
-<span class="sourceLineNo">3277</span>          walEdit.add(cell);<a name="line.3277"></a>
-<span class="sourceLineNo">3278</span>        }<a name="line.3278"></a>
-<span class="sourceLineNo">3279</span>      }<a name="line.3279"></a>
-<span class="sourceLineNo">3280</span>    }<a name="line.3280"></a>
-<span class="sourceLineNo">3281</span>  }<a name="line.3281"></a>
-<span class="sourceLineNo">3282</span><a name="line.3282"></a>
-<span class="sourceLineNo">3283</span>  /**<a name="line.3283"></a>
-<span class="sourceLineNo">3284</span>   * Batch of mutation operations. Base class is shared with {@link ReplayBatchOperation} as most<a name="line.3284"></a>
-<span class="sourceLineNo">3285</span>   * of the logic is same.<a name="line.3285"></a>
-<span class="sourceLineNo">3286</span>   */<a name="line.3286"></a>
-<span class="sourceLineNo">3287</span>  static class MutationBatchOperation extends BatchOperation&lt;Mutation&gt; {<a name="line.3287"></a>
-<span class="sourceLineNo">3288</span>    private long nonceGroup;<a name="line.3288"></a>
-<span class="sourceLineNo">3289</span>    private long nonce;<a name="line.3289"></a>
-<span class="sourceLineNo">3290</span>    public MutationBatchOperation(final HRegion region, Mutation[] operations, boolean atomic,<a name="line.3290"></a>
-<span class="sourceLineNo">3291</span>        long nonceGroup, long nonce) {<a name="line.3291"></a>
-<span class="sourceLineNo">3292</span>      super(region, operations);<a name="line.3292"></a>
-<span class="sourceLineNo">3293</span>      this.atomic = atomic;<a name="line.3293"></a>
-<span class="sourceLineNo">3294</span>      this.nonceGroup = nonceGroup;<a name="line.3294"></a>
-<span class="sourceLineNo">3295</span>      this.nonce = nonce;<a name="line.3295"></a>
-<span class="sourceLineNo">3296</span>    }<a name="line.3296"></a>
-<span class="sourceLineNo">3297</span><a name="line.3297"></a>
-<span class="sourceLineNo">3298</span>    @Override<a name="line.3298"></a>
-<span class="sourceLineNo">3299</span>    public Mutation getMutation(int index) {<a name="line.3299"></a>
-<span class="sourceLineNo">3300</span>      return this.operations[index];<a name="line.3300"></a>
-<span class="sourceLineNo">3301</span>    }<a name="line.3301"></a>
-<span class="sourceLineNo">3302</span><a name="line.3302"></a>
-<span class="sourceLineNo">3303</span>    @Override<a name="line.3303"></a>
-<span class="sourceLineNo">3304</span>    public long getNonceGroup(int index) {<a name="line.3304"></a>
-<span class="sourceLineNo">3305</span>      return nonceGroup;<a name="line.3305"></a>
-<span class="sourceLineNo">3306</span>    }<a name="line.3306"></a>
-<span class="sourceLineNo">3307</span><a name="line.3307"></a>
-<spa

<TRUNCATED>

[14/51] [partial] hbase-site git commit: Published site at .

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/c54c242b/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/LogRoller.html
----------------------------------------------------------------------
diff --git a/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/LogRoller.html b/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/LogRoller.html
index 72713d6..70ea645 100644
--- a/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/LogRoller.html
+++ b/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/LogRoller.html
@@ -77,7 +77,7 @@
 <span class="sourceLineNo">069</span><a name="line.69"></a>
 <span class="sourceLineNo">070</span>  public void addWAL(final WAL wal) {<a name="line.70"></a>
 <span class="sourceLineNo">071</span>    if (null == walNeedsRoll.putIfAbsent(wal, Boolean.FALSE)) {<a name="line.71"></a>
-<span class="sourceLineNo">072</span>      wal.registerWALActionsListener(new WALActionsListener.Base() {<a name="line.72"></a>
+<span class="sourceLineNo">072</span>      wal.registerWALActionsListener(new WALActionsListener() {<a name="line.72"></a>
 <span class="sourceLineNo">073</span>        @Override<a name="line.73"></a>
 <span class="sourceLineNo">074</span>        public void logRollRequested(boolean lowReplicas) {<a name="line.74"></a>
 <span class="sourceLineNo">075</span>          walNeedsRoll.put(wal, Boolean.TRUE);<a name="line.75"></a>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/c54c242b/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/StoreFlushContext.html
----------------------------------------------------------------------
diff --git a/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/StoreFlushContext.html b/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/StoreFlushContext.html
index 8b76f22..acfc040 100644
--- a/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/StoreFlushContext.html
+++ b/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/StoreFlushContext.html
@@ -28,77 +28,75 @@
 <span class="sourceLineNo">020</span><a name="line.20"></a>
 <span class="sourceLineNo">021</span>import java.io.IOException;<a name="line.21"></a>
 <span class="sourceLineNo">022</span>import java.util.List;<a name="line.22"></a>
-<span class="sourceLineNo">023</span><a name="line.23"></a>
-<span class="sourceLineNo">024</span>import org.apache.hadoop.fs.Path;<a name="line.24"></a>
+<span class="sourceLineNo">023</span>import org.apache.hadoop.fs.Path;<a name="line.23"></a>
+<span class="sourceLineNo">024</span>import org.apache.hadoop.hbase.monitoring.MonitoredTask;<a name="line.24"></a>
 <span class="sourceLineNo">025</span>import org.apache.yetus.audience.InterfaceAudience;<a name="line.25"></a>
-<span class="sourceLineNo">026</span>import org.apache.hadoop.hbase.monitoring.MonitoredTask;<a name="line.26"></a>
-<span class="sourceLineNo">027</span><a name="line.27"></a>
-<span class="sourceLineNo">028</span>/**<a name="line.28"></a>
-<span class="sourceLineNo">029</span> * A package protected interface for a store flushing.<a name="line.29"></a>
-<span class="sourceLineNo">030</span> * A store flush context carries the state required to prepare/flush/commit the store's cache.<a name="line.30"></a>
-<span class="sourceLineNo">031</span> */<a name="line.31"></a>
-<span class="sourceLineNo">032</span>@InterfaceAudience.Private<a name="line.32"></a>
-<span class="sourceLineNo">033</span>interface StoreFlushContext {<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>   * Prepare for a store flush (create snapshot)<a name="line.36"></a>
-<span class="sourceLineNo">037</span>   *<a name="line.37"></a>
-<span class="sourceLineNo">038</span>   * Requires pausing writes.<a name="line.38"></a>
-<span class="sourceLineNo">039</span>   *<a name="line.39"></a>
-<span class="sourceLineNo">040</span>   * A very short operation.<a name="line.40"></a>
-<span class="sourceLineNo">041</span>   */<a name="line.41"></a>
-<span class="sourceLineNo">042</span>  void prepare();<a name="line.42"></a>
-<span class="sourceLineNo">043</span><a name="line.43"></a>
-<span class="sourceLineNo">044</span>  /**<a name="line.44"></a>
-<span class="sourceLineNo">045</span>   * Flush the cache (create the new store file)<a name="line.45"></a>
-<span class="sourceLineNo">046</span>   *<a name="line.46"></a>
-<span class="sourceLineNo">047</span>   * A length operation which doesn't require locking out any function<a name="line.47"></a>
-<span class="sourceLineNo">048</span>   * of the store.<a name="line.48"></a>
-<span class="sourceLineNo">049</span>   *<a name="line.49"></a>
-<span class="sourceLineNo">050</span>   * @throws IOException in case the flush fails<a name="line.50"></a>
-<span class="sourceLineNo">051</span>   */<a name="line.51"></a>
-<span class="sourceLineNo">052</span>  void flushCache(MonitoredTask status) throws IOException;<a name="line.52"></a>
-<span class="sourceLineNo">053</span><a name="line.53"></a>
-<span class="sourceLineNo">054</span>  /**<a name="line.54"></a>
-<span class="sourceLineNo">055</span>   * Commit the flush - add the store file to the store and clear the<a name="line.55"></a>
-<span class="sourceLineNo">056</span>   * memstore snapshot.<a name="line.56"></a>
+<span class="sourceLineNo">026</span><a name="line.26"></a>
+<span class="sourceLineNo">027</span>/**<a name="line.27"></a>
+<span class="sourceLineNo">028</span> * A package protected interface for a store flushing.<a name="line.28"></a>
+<span class="sourceLineNo">029</span> * A store flush context carries the state required to prepare/flush/commit the store's cache.<a name="line.29"></a>
+<span class="sourceLineNo">030</span> */<a name="line.30"></a>
+<span class="sourceLineNo">031</span>@InterfaceAudience.Private<a name="line.31"></a>
+<span class="sourceLineNo">032</span>interface StoreFlushContext {<a name="line.32"></a>
+<span class="sourceLineNo">033</span><a name="line.33"></a>
+<span class="sourceLineNo">034</span>  /**<a name="line.34"></a>
+<span class="sourceLineNo">035</span>   * Prepare for a store flush (create snapshot)<a name="line.35"></a>
+<span class="sourceLineNo">036</span>   * Requires pausing writes.<a name="line.36"></a>
+<span class="sourceLineNo">037</span>   * A very short operation.<a name="line.37"></a>
+<span class="sourceLineNo">038</span>   * @return The size of snapshot to flush<a name="line.38"></a>
+<span class="sourceLineNo">039</span>   */<a name="line.39"></a>
+<span class="sourceLineNo">040</span>  MemStoreSize prepare();<a name="line.40"></a>
+<span class="sourceLineNo">041</span><a name="line.41"></a>
+<span class="sourceLineNo">042</span>  /**<a name="line.42"></a>
+<span class="sourceLineNo">043</span>   * Flush the cache (create the new store file)<a name="line.43"></a>
+<span class="sourceLineNo">044</span>   *<a name="line.44"></a>
+<span class="sourceLineNo">045</span>   * A length operation which doesn't require locking out any function<a name="line.45"></a>
+<span class="sourceLineNo">046</span>   * of the store.<a name="line.46"></a>
+<span class="sourceLineNo">047</span>   *<a name="line.47"></a>
+<span class="sourceLineNo">048</span>   * @throws IOException in case the flush fails<a name="line.48"></a>
+<span class="sourceLineNo">049</span>   */<a name="line.49"></a>
+<span class="sourceLineNo">050</span>  void flushCache(MonitoredTask status) throws IOException;<a name="line.50"></a>
+<span class="sourceLineNo">051</span><a name="line.51"></a>
+<span class="sourceLineNo">052</span>  /**<a name="line.52"></a>
+<span class="sourceLineNo">053</span>   * Commit the flush - add the store file to the store and clear the<a name="line.53"></a>
+<span class="sourceLineNo">054</span>   * memstore snapshot.<a name="line.54"></a>
+<span class="sourceLineNo">055</span>   *<a name="line.55"></a>
+<span class="sourceLineNo">056</span>   * Requires pausing scans.<a name="line.56"></a>
 <span class="sourceLineNo">057</span>   *<a name="line.57"></a>
-<span class="sourceLineNo">058</span>   * Requires pausing scans.<a name="line.58"></a>
+<span class="sourceLineNo">058</span>   * A very short operation<a name="line.58"></a>
 <span class="sourceLineNo">059</span>   *<a name="line.59"></a>
-<span class="sourceLineNo">060</span>   * A very short operation<a name="line.60"></a>
-<span class="sourceLineNo">061</span>   *<a name="line.61"></a>
-<span class="sourceLineNo">062</span>   * @return<a name="line.62"></a>
-<span class="sourceLineNo">063</span>   * @throws IOException<a name="line.63"></a>
-<span class="sourceLineNo">064</span>   */<a name="line.64"></a>
-<span class="sourceLineNo">065</span>  boolean commit(MonitoredTask status) throws IOException;<a name="line.65"></a>
-<span class="sourceLineNo">066</span><a name="line.66"></a>
-<span class="sourceLineNo">067</span>  /**<a name="line.67"></a>
-<span class="sourceLineNo">068</span>   * Similar to commit, but called in secondary region replicas for replaying the<a name="line.68"></a>
-<span class="sourceLineNo">069</span>   * flush cache from primary region. Adds the new files to the store, and drops the<a name="line.69"></a>
-<span class="sourceLineNo">070</span>   * snapshot depending on dropMemstoreSnapshot argument.<a name="line.70"></a>
-<span class="sourceLineNo">071</span>   * @param fileNames names of the flushed files<a name="line.71"></a>
-<span class="sourceLineNo">072</span>   * @param dropMemstoreSnapshot whether to drop the prepared memstore snapshot<a name="line.72"></a>
-<span class="sourceLineNo">073</span>   * @throws IOException<a name="line.73"></a>
-<span class="sourceLineNo">074</span>   */<a name="line.74"></a>
-<span class="sourceLineNo">075</span>  void replayFlush(List&lt;String&gt; fileNames, boolean dropMemstoreSnapshot) throws IOException;<a name="line.75"></a>
-<span class="sourceLineNo">076</span><a name="line.76"></a>
-<span class="sourceLineNo">077</span>  /**<a name="line.77"></a>
-<span class="sourceLineNo">078</span>   * Abort the snapshot preparation. Drops the snapshot if any.<a name="line.78"></a>
-<span class="sourceLineNo">079</span>   * @throws IOException<a name="line.79"></a>
-<span class="sourceLineNo">080</span>   */<a name="line.80"></a>
-<span class="sourceLineNo">081</span>  void abort() throws IOException;<a name="line.81"></a>
-<span class="sourceLineNo">082</span><a name="line.82"></a>
-<span class="sourceLineNo">083</span>  /**<a name="line.83"></a>
-<span class="sourceLineNo">084</span>   * Returns the newly committed files from the flush. Called only if commit returns true<a name="line.84"></a>
-<span class="sourceLineNo">085</span>   * @return a list of Paths for new files<a name="line.85"></a>
-<span class="sourceLineNo">086</span>   */<a name="line.86"></a>
-<span class="sourceLineNo">087</span>  List&lt;Path&gt; getCommittedFiles();<a name="line.87"></a>
-<span class="sourceLineNo">088</span><a name="line.88"></a>
-<span class="sourceLineNo">089</span>  /**<a name="line.89"></a>
-<span class="sourceLineNo">090</span>   * @return the total file size for flush output files, in bytes<a name="line.90"></a>
-<span class="sourceLineNo">091</span>   */<a name="line.91"></a>
-<span class="sourceLineNo">092</span>  long getOutputFileSize();<a name="line.92"></a>
-<span class="sourceLineNo">093</span>}<a name="line.93"></a>
+<span class="sourceLineNo">060</span>   * @return<a name="line.60"></a>
+<span class="sourceLineNo">061</span>   * @throws IOException<a name="line.61"></a>
+<span class="sourceLineNo">062</span>   */<a name="line.62"></a>
+<span class="sourceLineNo">063</span>  boolean commit(MonitoredTask status) throws IOException;<a name="line.63"></a>
+<span class="sourceLineNo">064</span><a name="line.64"></a>
+<span class="sourceLineNo">065</span>  /**<a name="line.65"></a>
+<span class="sourceLineNo">066</span>   * Similar to commit, but called in secondary region replicas for replaying the<a name="line.66"></a>
+<span class="sourceLineNo">067</span>   * flush cache from primary region. Adds the new files to the store, and drops the<a name="line.67"></a>
+<span class="sourceLineNo">068</span>   * snapshot depending on dropMemstoreSnapshot argument.<a name="line.68"></a>
+<span class="sourceLineNo">069</span>   * @param fileNames names of the flushed files<a name="line.69"></a>
+<span class="sourceLineNo">070</span>   * @param dropMemstoreSnapshot whether to drop the prepared memstore snapshot<a name="line.70"></a>
+<span class="sourceLineNo">071</span>   * @throws IOException<a name="line.71"></a>
+<span class="sourceLineNo">072</span>   */<a name="line.72"></a>
+<span class="sourceLineNo">073</span>  void replayFlush(List&lt;String&gt; fileNames, boolean dropMemstoreSnapshot) throws IOException;<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>   * Abort the snapshot preparation. Drops the snapshot if any.<a name="line.76"></a>
+<span class="sourceLineNo">077</span>   * @throws IOException<a name="line.77"></a>
+<span class="sourceLineNo">078</span>   */<a name="line.78"></a>
+<span class="sourceLineNo">079</span>  void abort() throws IOException;<a name="line.79"></a>
+<span class="sourceLineNo">080</span><a name="line.80"></a>
+<span class="sourceLineNo">081</span>  /**<a name="line.81"></a>
+<span class="sourceLineNo">082</span>   * Returns the newly committed files from the flush. Called only if commit returns true<a name="line.82"></a>
+<span class="sourceLineNo">083</span>   * @return a list of Paths for new files<a name="line.83"></a>
+<span class="sourceLineNo">084</span>   */<a name="line.84"></a>
+<span class="sourceLineNo">085</span>  List&lt;Path&gt; getCommittedFiles();<a name="line.85"></a>
+<span class="sourceLineNo">086</span><a name="line.86"></a>
+<span class="sourceLineNo">087</span>  /**<a name="line.87"></a>
+<span class="sourceLineNo">088</span>   * @return the total file size for flush output files, in bytes<a name="line.88"></a>
+<span class="sourceLineNo">089</span>   */<a name="line.89"></a>
+<span class="sourceLineNo">090</span>  long getOutputFileSize();<a name="line.90"></a>
+<span class="sourceLineNo">091</span>}<a name="line.91"></a>
 
 
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/c54c242b/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/wal/MetricsWAL.html
----------------------------------------------------------------------
diff --git a/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/wal/MetricsWAL.html b/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/wal/MetricsWAL.html
index ff74f98..78935b8 100644
--- a/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/wal/MetricsWAL.html
+++ b/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/wal/MetricsWAL.html
@@ -44,7 +44,7 @@
 <span class="sourceLineNo">036</span> * single function call and turn it into multiple manipulations of the hadoop metrics system.<a name="line.36"></a>
 <span class="sourceLineNo">037</span> */<a name="line.37"></a>
 <span class="sourceLineNo">038</span>@InterfaceAudience.Private<a name="line.38"></a>
-<span class="sourceLineNo">039</span>public class MetricsWAL extends WALActionsListener.Base {<a name="line.39"></a>
+<span class="sourceLineNo">039</span>public class MetricsWAL implements WALActionsListener {<a name="line.39"></a>
 <span class="sourceLineNo">040</span>  private static final Log LOG = LogFactory.getLog(MetricsWAL.class);<a name="line.40"></a>
 <span class="sourceLineNo">041</span><a name="line.41"></a>
 <span class="sourceLineNo">042</span>  private final MetricsWALSource source;<a name="line.42"></a>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/c54c242b/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/wal/WALActionsListener.Base.html
----------------------------------------------------------------------
diff --git a/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/wal/WALActionsListener.Base.html b/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/wal/WALActionsListener.Base.html
deleted file mode 100644
index 5e965e0..0000000
--- a/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/wal/WALActionsListener.Base.html
+++ /dev/null
@@ -1,223 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<html lang="en">
-<head>
-<title>Source code</title>
-<link rel="stylesheet" type="text/css" href="../../../../../../../stylesheet.css" title="Style">
-</head>
-<body>
-<div class="sourceContainer">
-<pre><span class="sourceLineNo">001</span>/*<a name="line.1"></a>
-<span class="sourceLineNo">002</span> *<a name="line.2"></a>
-<span class="sourceLineNo">003</span> * Licensed to the Apache Software Foundation (ASF) under one<a name="line.3"></a>
-<span class="sourceLineNo">004</span> * or more contributor license agreements.  See the NOTICE file<a name="line.4"></a>
-<span class="sourceLineNo">005</span> * distributed with this work for additional information<a name="line.5"></a>
-<span class="sourceLineNo">006</span> * regarding copyright ownership.  The ASF licenses this file<a name="line.6"></a>
-<span class="sourceLineNo">007</span> * to you under the Apache License, Version 2.0 (the<a name="line.7"></a>
-<span class="sourceLineNo">008</span> * "License"); you may not use this file except in compliance<a name="line.8"></a>
-<span class="sourceLineNo">009</span> * with the License.  You may obtain a copy of the License at<a name="line.9"></a>
-<span class="sourceLineNo">010</span> *<a name="line.10"></a>
-<span class="sourceLineNo">011</span> *     http://www.apache.org/licenses/LICENSE-2.0<a name="line.11"></a>
-<span class="sourceLineNo">012</span> *<a name="line.12"></a>
-<span class="sourceLineNo">013</span> * Unless required by applicable law or agreed to in writing, software<a name="line.13"></a>
-<span class="sourceLineNo">014</span> * distributed under the License is distributed on an "AS IS" BASIS,<a name="line.14"></a>
-<span class="sourceLineNo">015</span> * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.<a name="line.15"></a>
-<span class="sourceLineNo">016</span> * See the License for the specific language governing permissions and<a name="line.16"></a>
-<span class="sourceLineNo">017</span> * limitations under the License.<a name="line.17"></a>
-<span class="sourceLineNo">018</span> */<a name="line.18"></a>
-<span class="sourceLineNo">019</span>package org.apache.hadoop.hbase.regionserver.wal;<a name="line.19"></a>
-<span class="sourceLineNo">020</span><a name="line.20"></a>
-<span class="sourceLineNo">021</span>import java.io.IOException;<a name="line.21"></a>
-<span class="sourceLineNo">022</span><a name="line.22"></a>
-<span class="sourceLineNo">023</span>import org.apache.yetus.audience.InterfaceAudience;<a name="line.23"></a>
-<span class="sourceLineNo">024</span>import org.apache.hadoop.fs.Path;<a name="line.24"></a>
-<span class="sourceLineNo">025</span>import org.apache.hadoop.hbase.HRegionInfo;<a name="line.25"></a>
-<span class="sourceLineNo">026</span><a name="line.26"></a>
-<span class="sourceLineNo">027</span>import org.apache.hadoop.hbase.wal.WALEdit;<a name="line.27"></a>
-<span class="sourceLineNo">028</span>import org.apache.hadoop.hbase.wal.WALKey;<a name="line.28"></a>
-<span class="sourceLineNo">029</span><a name="line.29"></a>
-<span class="sourceLineNo">030</span>/**<a name="line.30"></a>
-<span class="sourceLineNo">031</span> * Get notification of WAL events. The invocations are inline<a name="line.31"></a>
-<span class="sourceLineNo">032</span> * so make sure your implementation is fast else you'll slow hbase.<a name="line.32"></a>
-<span class="sourceLineNo">033</span> */<a name="line.33"></a>
-<span class="sourceLineNo">034</span>@InterfaceAudience.Private<a name="line.34"></a>
-<span class="sourceLineNo">035</span>public interface WALActionsListener {<a name="line.35"></a>
-<span class="sourceLineNo">036</span><a name="line.36"></a>
-<span class="sourceLineNo">037</span>  /**<a name="line.37"></a>
-<span class="sourceLineNo">038</span>   * The WAL is going to be rolled. The oldPath can be null if this is<a name="line.38"></a>
-<span class="sourceLineNo">039</span>   * the first log file from the regionserver.<a name="line.39"></a>
-<span class="sourceLineNo">040</span>   * @param oldPath the path to the old wal<a name="line.40"></a>
-<span class="sourceLineNo">041</span>   * @param newPath the path to the new wal<a name="line.41"></a>
-<span class="sourceLineNo">042</span>   */<a name="line.42"></a>
-<span class="sourceLineNo">043</span>  void preLogRoll(Path oldPath, Path newPath) throws IOException;<a name="line.43"></a>
-<span class="sourceLineNo">044</span><a name="line.44"></a>
-<span class="sourceLineNo">045</span>  /**<a name="line.45"></a>
-<span class="sourceLineNo">046</span>   * The WAL has been rolled. The oldPath can be null if this is<a name="line.46"></a>
-<span class="sourceLineNo">047</span>   * the first log file from the regionserver.<a name="line.47"></a>
-<span class="sourceLineNo">048</span>   * @param oldPath the path to the old wal<a name="line.48"></a>
-<span class="sourceLineNo">049</span>   * @param newPath the path to the new wal<a name="line.49"></a>
-<span class="sourceLineNo">050</span>   */<a name="line.50"></a>
-<span class="sourceLineNo">051</span>  void postLogRoll(Path oldPath, Path newPath) throws IOException;<a name="line.51"></a>
-<span class="sourceLineNo">052</span><a name="line.52"></a>
-<span class="sourceLineNo">053</span>  /**<a name="line.53"></a>
-<span class="sourceLineNo">054</span>   * The WAL is going to be archived.<a name="line.54"></a>
-<span class="sourceLineNo">055</span>   * @param oldPath the path to the old wal<a name="line.55"></a>
-<span class="sourceLineNo">056</span>   * @param newPath the path to the new wal<a name="line.56"></a>
-<span class="sourceLineNo">057</span>   */<a name="line.57"></a>
-<span class="sourceLineNo">058</span>  void preLogArchive(Path oldPath, Path newPath) throws IOException;<a name="line.58"></a>
-<span class="sourceLineNo">059</span><a name="line.59"></a>
-<span class="sourceLineNo">060</span>  /**<a name="line.60"></a>
-<span class="sourceLineNo">061</span>   * The WAL has been archived.<a name="line.61"></a>
-<span class="sourceLineNo">062</span>   * @param oldPath the path to the old wal<a name="line.62"></a>
-<span class="sourceLineNo">063</span>   * @param newPath the path to the new wal<a name="line.63"></a>
-<span class="sourceLineNo">064</span>   */<a name="line.64"></a>
-<span class="sourceLineNo">065</span>  void postLogArchive(Path oldPath, Path newPath) throws IOException;<a name="line.65"></a>
-<span class="sourceLineNo">066</span><a name="line.66"></a>
-<span class="sourceLineNo">067</span>  /**<a name="line.67"></a>
-<span class="sourceLineNo">068</span>   * A request was made that the WAL be rolled.<a name="line.68"></a>
-<span class="sourceLineNo">069</span>   */<a name="line.69"></a>
-<span class="sourceLineNo">070</span>  void logRollRequested(boolean tooFewReplicas);<a name="line.70"></a>
-<span class="sourceLineNo">071</span><a name="line.71"></a>
-<span class="sourceLineNo">072</span>  /**<a name="line.72"></a>
-<span class="sourceLineNo">073</span>   * The WAL is about to close.<a name="line.73"></a>
-<span class="sourceLineNo">074</span>   */<a name="line.74"></a>
-<span class="sourceLineNo">075</span>  void logCloseRequested();<a name="line.75"></a>
-<span class="sourceLineNo">076</span><a name="line.76"></a>
-<span class="sourceLineNo">077</span>  /**<a name="line.77"></a>
-<span class="sourceLineNo">078</span>  * Called before each write.<a name="line.78"></a>
-<span class="sourceLineNo">079</span>  * @param info<a name="line.79"></a>
-<span class="sourceLineNo">080</span>  * @param logKey<a name="line.80"></a>
-<span class="sourceLineNo">081</span>  * @param logEdit<a name="line.81"></a>
-<span class="sourceLineNo">082</span>  */<a name="line.82"></a>
-<span class="sourceLineNo">083</span>  void visitLogEntryBeforeWrite(<a name="line.83"></a>
-<span class="sourceLineNo">084</span>    HRegionInfo info, WALKey logKey, WALEdit logEdit<a name="line.84"></a>
-<span class="sourceLineNo">085</span>  );<a name="line.85"></a>
-<span class="sourceLineNo">086</span><a name="line.86"></a>
-<span class="sourceLineNo">087</span>  /**<a name="line.87"></a>
-<span class="sourceLineNo">088</span>   * @param logKey<a name="line.88"></a>
-<span class="sourceLineNo">089</span>   * @param logEdit TODO: Retire this in favor of<a name="line.89"></a>
-<span class="sourceLineNo">090</span>   *          {@link #visitLogEntryBeforeWrite(HRegionInfo, WALKey, WALEdit)} It only exists to get<a name="line.90"></a>
-<span class="sourceLineNo">091</span>   *          scope when replicating. Scope should be in the WALKey and not need us passing in a<a name="line.91"></a>
-<span class="sourceLineNo">092</span>   *          &lt;code&gt;htd&lt;/code&gt;.<a name="line.92"></a>
-<span class="sourceLineNo">093</span>   * @throws IOException If failed to parse the WALEdit<a name="line.93"></a>
-<span class="sourceLineNo">094</span>   */<a name="line.94"></a>
-<span class="sourceLineNo">095</span>  void visitLogEntryBeforeWrite(WALKey logKey, WALEdit logEdit) throws IOException;<a name="line.95"></a>
-<span class="sourceLineNo">096</span><a name="line.96"></a>
-<span class="sourceLineNo">097</span>  /**<a name="line.97"></a>
-<span class="sourceLineNo">098</span>   * For notification post append to the writer.  Used by metrics system at least.<a name="line.98"></a>
-<span class="sourceLineNo">099</span>   * TODO: Combine this with above.<a name="line.99"></a>
-<span class="sourceLineNo">100</span>   * @param entryLen approx length of cells in this append.<a name="line.100"></a>
-<span class="sourceLineNo">101</span>   * @param elapsedTimeMillis elapsed time in milliseconds.<a name="line.101"></a>
-<span class="sourceLineNo">102</span>   * @param logKey A WAL key<a name="line.102"></a>
-<span class="sourceLineNo">103</span>   * @param logEdit A WAL edit containing list of cells.<a name="line.103"></a>
-<span class="sourceLineNo">104</span>   * @throws IOException if any network or I/O error occurred<a name="line.104"></a>
-<span class="sourceLineNo">105</span>   */<a name="line.105"></a>
-<span class="sourceLineNo">106</span>  void postAppend(final long entryLen, final long elapsedTimeMillis, final WALKey logKey,<a name="line.106"></a>
-<span class="sourceLineNo">107</span>      final WALEdit logEdit) throws IOException;<a name="line.107"></a>
-<span class="sourceLineNo">108</span><a name="line.108"></a>
-<span class="sourceLineNo">109</span>  /**<a name="line.109"></a>
-<span class="sourceLineNo">110</span>   * For notification post writer sync.  Used by metrics system at least.<a name="line.110"></a>
-<span class="sourceLineNo">111</span>   * @param timeInNanos How long the filesystem sync took in nanoseconds.<a name="line.111"></a>
-<span class="sourceLineNo">112</span>   * @param handlerSyncs How many sync handler calls were released by this call to filesystem<a name="line.112"></a>
-<span class="sourceLineNo">113</span>   * sync.<a name="line.113"></a>
-<span class="sourceLineNo">114</span>   */<a name="line.114"></a>
-<span class="sourceLineNo">115</span>  void postSync(final long timeInNanos, final int handlerSyncs);<a name="line.115"></a>
-<span class="sourceLineNo">116</span><a name="line.116"></a>
-<span class="sourceLineNo">117</span>  static class Base implements WALActionsListener {<a name="line.117"></a>
-<span class="sourceLineNo">118</span>    @Override<a name="line.118"></a>
-<span class="sourceLineNo">119</span>    public void preLogRoll(Path oldPath, Path newPath) throws IOException {}<a name="line.119"></a>
-<span class="sourceLineNo">120</span><a name="line.120"></a>
-<span class="sourceLineNo">121</span>    @Override<a name="line.121"></a>
-<span class="sourceLineNo">122</span>    public void postLogRoll(Path oldPath, Path newPath) throws IOException {}<a name="line.122"></a>
-<span class="sourceLineNo">123</span><a name="line.123"></a>
-<span class="sourceLineNo">124</span>    @Override<a name="line.124"></a>
-<span class="sourceLineNo">125</span>    public void preLogArchive(Path oldPath, Path newPath) throws IOException {}<a name="line.125"></a>
-<span class="sourceLineNo">126</span><a name="line.126"></a>
-<span class="sourceLineNo">127</span>    @Override<a name="line.127"></a>
-<span class="sourceLineNo">128</span>    public void postLogArchive(Path oldPath, Path newPath) throws IOException {}<a name="line.128"></a>
-<span class="sourceLineNo">129</span><a name="line.129"></a>
-<span class="sourceLineNo">130</span>    @Override<a name="line.130"></a>
-<span class="sourceLineNo">131</span>    public void logRollRequested(boolean tooFewReplicas) {}<a name="line.131"></a>
-<span class="sourceLineNo">132</span><a name="line.132"></a>
-<span class="sourceLineNo">133</span>    @Override<a name="line.133"></a>
-<span class="sourceLineNo">134</span>    public void logCloseRequested() {}<a name="line.134"></a>
-<span class="sourceLineNo">135</span><a name="line.135"></a>
-<span class="sourceLineNo">136</span>    @Override<a name="line.136"></a>
-<span class="sourceLineNo">137</span>    public void visitLogEntryBeforeWrite(HRegionInfo info, WALKey logKey, WALEdit logEdit) {}<a name="line.137"></a>
-<span class="sourceLineNo">138</span><a name="line.138"></a>
-<span class="sourceLineNo">139</span>    @Override<a name="line.139"></a>
-<span class="sourceLineNo">140</span>    public void visitLogEntryBeforeWrite(WALKey logKey, WALEdit logEdit) throws IOException {<a name="line.140"></a>
-<span class="sourceLineNo">141</span>    }<a name="line.141"></a>
-<span class="sourceLineNo">142</span><a name="line.142"></a>
-<span class="sourceLineNo">143</span>    @Override<a name="line.143"></a>
-<span class="sourceLineNo">144</span>    public void postAppend(final long entryLen, final long elapsedTimeMillis, final WALKey logKey,<a name="line.144"></a>
-<span class="sourceLineNo">145</span>        final WALEdit logEdit) throws IOException {<a name="line.145"></a>
-<span class="sourceLineNo">146</span>    }<a name="line.146"></a>
-<span class="sourceLineNo">147</span><a name="line.147"></a>
-<span class="sourceLineNo">148</span>    @Override<a name="line.148"></a>
-<span class="sourceLineNo">149</span>    public void postSync(final long timeInNanos, final int handlerSyncs) {}<a name="line.149"></a>
-<span class="sourceLineNo">150</span>  }<a name="line.150"></a>
-<span class="sourceLineNo">151</span>}<a name="line.151"></a>
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-</pre>
-</div>
-</body>
-</html>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/c54c242b/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/wal/WALActionsListener.html
----------------------------------------------------------------------
diff --git a/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/wal/WALActionsListener.html b/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/wal/WALActionsListener.html
index 5e965e0..546ff34 100644
--- a/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/wal/WALActionsListener.html
+++ b/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/wal/WALActionsListener.html
@@ -27,136 +27,99 @@
 <span class="sourceLineNo">019</span>package org.apache.hadoop.hbase.regionserver.wal;<a name="line.19"></a>
 <span class="sourceLineNo">020</span><a name="line.20"></a>
 <span class="sourceLineNo">021</span>import java.io.IOException;<a name="line.21"></a>
-<span class="sourceLineNo">022</span><a name="line.22"></a>
-<span class="sourceLineNo">023</span>import org.apache.yetus.audience.InterfaceAudience;<a name="line.23"></a>
-<span class="sourceLineNo">024</span>import org.apache.hadoop.fs.Path;<a name="line.24"></a>
-<span class="sourceLineNo">025</span>import org.apache.hadoop.hbase.HRegionInfo;<a name="line.25"></a>
-<span class="sourceLineNo">026</span><a name="line.26"></a>
-<span class="sourceLineNo">027</span>import org.apache.hadoop.hbase.wal.WALEdit;<a name="line.27"></a>
-<span class="sourceLineNo">028</span>import org.apache.hadoop.hbase.wal.WALKey;<a name="line.28"></a>
-<span class="sourceLineNo">029</span><a name="line.29"></a>
-<span class="sourceLineNo">030</span>/**<a name="line.30"></a>
-<span class="sourceLineNo">031</span> * Get notification of WAL events. The invocations are inline<a name="line.31"></a>
-<span class="sourceLineNo">032</span> * so make sure your implementation is fast else you'll slow hbase.<a name="line.32"></a>
-<span class="sourceLineNo">033</span> */<a name="line.33"></a>
-<span class="sourceLineNo">034</span>@InterfaceAudience.Private<a name="line.34"></a>
-<span class="sourceLineNo">035</span>public interface WALActionsListener {<a name="line.35"></a>
-<span class="sourceLineNo">036</span><a name="line.36"></a>
-<span class="sourceLineNo">037</span>  /**<a name="line.37"></a>
-<span class="sourceLineNo">038</span>   * The WAL is going to be rolled. The oldPath can be null if this is<a name="line.38"></a>
-<span class="sourceLineNo">039</span>   * the first log file from the regionserver.<a name="line.39"></a>
-<span class="sourceLineNo">040</span>   * @param oldPath the path to the old wal<a name="line.40"></a>
-<span class="sourceLineNo">041</span>   * @param newPath the path to the new wal<a name="line.41"></a>
-<span class="sourceLineNo">042</span>   */<a name="line.42"></a>
-<span class="sourceLineNo">043</span>  void preLogRoll(Path oldPath, Path newPath) throws IOException;<a name="line.43"></a>
-<span class="sourceLineNo">044</span><a name="line.44"></a>
-<span class="sourceLineNo">045</span>  /**<a name="line.45"></a>
-<span class="sourceLineNo">046</span>   * The WAL has been rolled. The oldPath can be null if this is<a name="line.46"></a>
-<span class="sourceLineNo">047</span>   * the first log file from the regionserver.<a name="line.47"></a>
-<span class="sourceLineNo">048</span>   * @param oldPath the path to the old wal<a name="line.48"></a>
-<span class="sourceLineNo">049</span>   * @param newPath the path to the new wal<a name="line.49"></a>
-<span class="sourceLineNo">050</span>   */<a name="line.50"></a>
-<span class="sourceLineNo">051</span>  void postLogRoll(Path oldPath, Path newPath) throws IOException;<a name="line.51"></a>
-<span class="sourceLineNo">052</span><a name="line.52"></a>
-<span class="sourceLineNo">053</span>  /**<a name="line.53"></a>
-<span class="sourceLineNo">054</span>   * The WAL is going to be archived.<a name="line.54"></a>
-<span class="sourceLineNo">055</span>   * @param oldPath the path to the old wal<a name="line.55"></a>
-<span class="sourceLineNo">056</span>   * @param newPath the path to the new wal<a name="line.56"></a>
-<span class="sourceLineNo">057</span>   */<a name="line.57"></a>
-<span class="sourceLineNo">058</span>  void preLogArchive(Path oldPath, Path newPath) throws IOException;<a name="line.58"></a>
-<span class="sourceLineNo">059</span><a name="line.59"></a>
-<span class="sourceLineNo">060</span>  /**<a name="line.60"></a>
-<span class="sourceLineNo">061</span>   * The WAL has been archived.<a name="line.61"></a>
-<span class="sourceLineNo">062</span>   * @param oldPath the path to the old wal<a name="line.62"></a>
-<span class="sourceLineNo">063</span>   * @param newPath the path to the new wal<a name="line.63"></a>
-<span class="sourceLineNo">064</span>   */<a name="line.64"></a>
-<span class="sourceLineNo">065</span>  void postLogArchive(Path oldPath, Path newPath) throws IOException;<a name="line.65"></a>
-<span class="sourceLineNo">066</span><a name="line.66"></a>
-<span class="sourceLineNo">067</span>  /**<a name="line.67"></a>
-<span class="sourceLineNo">068</span>   * A request was made that the WAL be rolled.<a name="line.68"></a>
-<span class="sourceLineNo">069</span>   */<a name="line.69"></a>
-<span class="sourceLineNo">070</span>  void logRollRequested(boolean tooFewReplicas);<a name="line.70"></a>
-<span class="sourceLineNo">071</span><a name="line.71"></a>
-<span class="sourceLineNo">072</span>  /**<a name="line.72"></a>
-<span class="sourceLineNo">073</span>   * The WAL is about to close.<a name="line.73"></a>
-<span class="sourceLineNo">074</span>   */<a name="line.74"></a>
-<span class="sourceLineNo">075</span>  void logCloseRequested();<a name="line.75"></a>
-<span class="sourceLineNo">076</span><a name="line.76"></a>
-<span class="sourceLineNo">077</span>  /**<a name="line.77"></a>
-<span class="sourceLineNo">078</span>  * Called before each write.<a name="line.78"></a>
-<span class="sourceLineNo">079</span>  * @param info<a name="line.79"></a>
-<span class="sourceLineNo">080</span>  * @param logKey<a name="line.80"></a>
-<span class="sourceLineNo">081</span>  * @param logEdit<a name="line.81"></a>
-<span class="sourceLineNo">082</span>  */<a name="line.82"></a>
-<span class="sourceLineNo">083</span>  void visitLogEntryBeforeWrite(<a name="line.83"></a>
-<span class="sourceLineNo">084</span>    HRegionInfo info, WALKey logKey, WALEdit logEdit<a name="line.84"></a>
-<span class="sourceLineNo">085</span>  );<a name="line.85"></a>
-<span class="sourceLineNo">086</span><a name="line.86"></a>
-<span class="sourceLineNo">087</span>  /**<a name="line.87"></a>
-<span class="sourceLineNo">088</span>   * @param logKey<a name="line.88"></a>
-<span class="sourceLineNo">089</span>   * @param logEdit TODO: Retire this in favor of<a name="line.89"></a>
-<span class="sourceLineNo">090</span>   *          {@link #visitLogEntryBeforeWrite(HRegionInfo, WALKey, WALEdit)} It only exists to get<a name="line.90"></a>
-<span class="sourceLineNo">091</span>   *          scope when replicating. Scope should be in the WALKey and not need us passing in a<a name="line.91"></a>
-<span class="sourceLineNo">092</span>   *          &lt;code&gt;htd&lt;/code&gt;.<a name="line.92"></a>
-<span class="sourceLineNo">093</span>   * @throws IOException If failed to parse the WALEdit<a name="line.93"></a>
-<span class="sourceLineNo">094</span>   */<a name="line.94"></a>
-<span class="sourceLineNo">095</span>  void visitLogEntryBeforeWrite(WALKey logKey, WALEdit logEdit) throws IOException;<a name="line.95"></a>
-<span class="sourceLineNo">096</span><a name="line.96"></a>
-<span class="sourceLineNo">097</span>  /**<a name="line.97"></a>
-<span class="sourceLineNo">098</span>   * For notification post append to the writer.  Used by metrics system at least.<a name="line.98"></a>
-<span class="sourceLineNo">099</span>   * TODO: Combine this with above.<a name="line.99"></a>
-<span class="sourceLineNo">100</span>   * @param entryLen approx length of cells in this append.<a name="line.100"></a>
-<span class="sourceLineNo">101</span>   * @param elapsedTimeMillis elapsed time in milliseconds.<a name="line.101"></a>
-<span class="sourceLineNo">102</span>   * @param logKey A WAL key<a name="line.102"></a>
-<span class="sourceLineNo">103</span>   * @param logEdit A WAL edit containing list of cells.<a name="line.103"></a>
-<span class="sourceLineNo">104</span>   * @throws IOException if any network or I/O error occurred<a name="line.104"></a>
-<span class="sourceLineNo">105</span>   */<a name="line.105"></a>
-<span class="sourceLineNo">106</span>  void postAppend(final long entryLen, final long elapsedTimeMillis, final WALKey logKey,<a name="line.106"></a>
-<span class="sourceLineNo">107</span>      final WALEdit logEdit) throws IOException;<a name="line.107"></a>
-<span class="sourceLineNo">108</span><a name="line.108"></a>
-<span class="sourceLineNo">109</span>  /**<a name="line.109"></a>
-<span class="sourceLineNo">110</span>   * For notification post writer sync.  Used by metrics system at least.<a name="line.110"></a>
-<span class="sourceLineNo">111</span>   * @param timeInNanos How long the filesystem sync took in nanoseconds.<a name="line.111"></a>
-<span class="sourceLineNo">112</span>   * @param handlerSyncs How many sync handler calls were released by this call to filesystem<a name="line.112"></a>
-<span class="sourceLineNo">113</span>   * sync.<a name="line.113"></a>
-<span class="sourceLineNo">114</span>   */<a name="line.114"></a>
-<span class="sourceLineNo">115</span>  void postSync(final long timeInNanos, final int handlerSyncs);<a name="line.115"></a>
-<span class="sourceLineNo">116</span><a name="line.116"></a>
-<span class="sourceLineNo">117</span>  static class Base implements WALActionsListener {<a name="line.117"></a>
-<span class="sourceLineNo">118</span>    @Override<a name="line.118"></a>
-<span class="sourceLineNo">119</span>    public void preLogRoll(Path oldPath, Path newPath) throws IOException {}<a name="line.119"></a>
-<span class="sourceLineNo">120</span><a name="line.120"></a>
-<span class="sourceLineNo">121</span>    @Override<a name="line.121"></a>
-<span class="sourceLineNo">122</span>    public void postLogRoll(Path oldPath, Path newPath) throws IOException {}<a name="line.122"></a>
-<span class="sourceLineNo">123</span><a name="line.123"></a>
-<span class="sourceLineNo">124</span>    @Override<a name="line.124"></a>
-<span class="sourceLineNo">125</span>    public void preLogArchive(Path oldPath, Path newPath) throws IOException {}<a name="line.125"></a>
-<span class="sourceLineNo">126</span><a name="line.126"></a>
-<span class="sourceLineNo">127</span>    @Override<a name="line.127"></a>
-<span class="sourceLineNo">128</span>    public void postLogArchive(Path oldPath, Path newPath) throws IOException {}<a name="line.128"></a>
-<span class="sourceLineNo">129</span><a name="line.129"></a>
-<span class="sourceLineNo">130</span>    @Override<a name="line.130"></a>
-<span class="sourceLineNo">131</span>    public void logRollRequested(boolean tooFewReplicas) {}<a name="line.131"></a>
-<span class="sourceLineNo">132</span><a name="line.132"></a>
-<span class="sourceLineNo">133</span>    @Override<a name="line.133"></a>
-<span class="sourceLineNo">134</span>    public void logCloseRequested() {}<a name="line.134"></a>
-<span class="sourceLineNo">135</span><a name="line.135"></a>
-<span class="sourceLineNo">136</span>    @Override<a name="line.136"></a>
-<span class="sourceLineNo">137</span>    public void visitLogEntryBeforeWrite(HRegionInfo info, WALKey logKey, WALEdit logEdit) {}<a name="line.137"></a>
-<span class="sourceLineNo">138</span><a name="line.138"></a>
-<span class="sourceLineNo">139</span>    @Override<a name="line.139"></a>
-<span class="sourceLineNo">140</span>    public void visitLogEntryBeforeWrite(WALKey logKey, WALEdit logEdit) throws IOException {<a name="line.140"></a>
-<span class="sourceLineNo">141</span>    }<a name="line.141"></a>
-<span class="sourceLineNo">142</span><a name="line.142"></a>
-<span class="sourceLineNo">143</span>    @Override<a name="line.143"></a>
-<span class="sourceLineNo">144</span>    public void postAppend(final long entryLen, final long elapsedTimeMillis, final WALKey logKey,<a name="line.144"></a>
-<span class="sourceLineNo">145</span>        final WALEdit logEdit) throws IOException {<a name="line.145"></a>
-<span class="sourceLineNo">146</span>    }<a name="line.146"></a>
-<span class="sourceLineNo">147</span><a name="line.147"></a>
-<span class="sourceLineNo">148</span>    @Override<a name="line.148"></a>
-<span class="sourceLineNo">149</span>    public void postSync(final long timeInNanos, final int handlerSyncs) {}<a name="line.149"></a>
-<span class="sourceLineNo">150</span>  }<a name="line.150"></a>
-<span class="sourceLineNo">151</span>}<a name="line.151"></a>
+<span class="sourceLineNo">022</span>import org.apache.hadoop.fs.Path;<a name="line.22"></a>
+<span class="sourceLineNo">023</span>import org.apache.hadoop.hbase.client.RegionInfo;<a name="line.23"></a>
+<span class="sourceLineNo">024</span>import org.apache.hadoop.hbase.wal.WALEdit;<a name="line.24"></a>
+<span class="sourceLineNo">025</span>import org.apache.hadoop.hbase.wal.WALKey;<a name="line.25"></a>
+<span class="sourceLineNo">026</span>import org.apache.yetus.audience.InterfaceAudience;<a name="line.26"></a>
+<span class="sourceLineNo">027</span><a name="line.27"></a>
+<span class="sourceLineNo">028</span>/**<a name="line.28"></a>
+<span class="sourceLineNo">029</span> * Get notification of WAL events. The invocations are inline<a name="line.29"></a>
+<span class="sourceLineNo">030</span> * so make sure your implementation is fast else you'll slow hbase.<a name="line.30"></a>
+<span class="sourceLineNo">031</span> */<a name="line.31"></a>
+<span class="sourceLineNo">032</span>@InterfaceAudience.Private<a name="line.32"></a>
+<span class="sourceLineNo">033</span>public interface WALActionsListener {<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>   * The WAL is going to be rolled. The oldPath can be null if this is<a name="line.36"></a>
+<span class="sourceLineNo">037</span>   * the first log file from the regionserver.<a name="line.37"></a>
+<span class="sourceLineNo">038</span>   * @param oldPath the path to the old wal<a name="line.38"></a>
+<span class="sourceLineNo">039</span>   * @param newPath the path to the new wal<a name="line.39"></a>
+<span class="sourceLineNo">040</span>   */<a name="line.40"></a>
+<span class="sourceLineNo">041</span>  default void preLogRoll(Path oldPath, Path newPath) throws IOException {}<a name="line.41"></a>
+<span class="sourceLineNo">042</span><a name="line.42"></a>
+<span class="sourceLineNo">043</span>  /**<a name="line.43"></a>
+<span class="sourceLineNo">044</span>   * The WAL has been rolled. The oldPath can be null if this is<a name="line.44"></a>
+<span class="sourceLineNo">045</span>   * the first log file from the regionserver.<a name="line.45"></a>
+<span class="sourceLineNo">046</span>   * @param oldPath the path to the old wal<a name="line.46"></a>
+<span class="sourceLineNo">047</span>   * @param newPath the path to the new wal<a name="line.47"></a>
+<span class="sourceLineNo">048</span>   */<a name="line.48"></a>
+<span class="sourceLineNo">049</span>  default void postLogRoll(Path oldPath, Path newPath) throws IOException {}<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>   * The WAL is going to be archived.<a name="line.52"></a>
+<span class="sourceLineNo">053</span>   * @param oldPath the path to the old wal<a name="line.53"></a>
+<span class="sourceLineNo">054</span>   * @param newPath the path to the new wal<a name="line.54"></a>
+<span class="sourceLineNo">055</span>   */<a name="line.55"></a>
+<span class="sourceLineNo">056</span>  default void preLogArchive(Path oldPath, Path newPath) throws IOException {}<a name="line.56"></a>
+<span class="sourceLineNo">057</span><a name="line.57"></a>
+<span class="sourceLineNo">058</span>  /**<a name="line.58"></a>
+<span class="sourceLineNo">059</span>   * The WAL has been archived.<a name="line.59"></a>
+<span class="sourceLineNo">060</span>   * @param oldPath the path to the old wal<a name="line.60"></a>
+<span class="sourceLineNo">061</span>   * @param newPath the path to the new wal<a name="line.61"></a>
+<span class="sourceLineNo">062</span>   */<a name="line.62"></a>
+<span class="sourceLineNo">063</span>  default void postLogArchive(Path oldPath, Path newPath) throws IOException {}<a name="line.63"></a>
+<span class="sourceLineNo">064</span><a name="line.64"></a>
+<span class="sourceLineNo">065</span>  /**<a name="line.65"></a>
+<span class="sourceLineNo">066</span>   * A request was made that the WAL be rolled.<a name="line.66"></a>
+<span class="sourceLineNo">067</span>   */<a name="line.67"></a>
+<span class="sourceLineNo">068</span>  default void logRollRequested(boolean tooFewReplicas) {}<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>
+<span class="sourceLineNo">071</span>   * The WAL is about to close.<a name="line.71"></a>
+<span class="sourceLineNo">072</span>   */<a name="line.72"></a>
+<span class="sourceLineNo">073</span>  default void logCloseRequested() {}<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>  * Called before each write.<a name="line.76"></a>
+<span class="sourceLineNo">077</span>  * @param info<a name="line.77"></a>
+<span class="sourceLineNo">078</span>  * @param logKey<a name="line.78"></a>
+<span class="sourceLineNo">079</span>  * @param logEdit<a name="line.79"></a>
+<span class="sourceLineNo">080</span>  */<a name="line.80"></a>
+<span class="sourceLineNo">081</span>  default void visitLogEntryBeforeWrite(<a name="line.81"></a>
+<span class="sourceLineNo">082</span>    RegionInfo info, WALKey logKey, WALEdit logEdit<a name="line.82"></a>
+<span class="sourceLineNo">083</span>  ) {}<a name="line.83"></a>
+<span class="sourceLineNo">084</span><a name="line.84"></a>
+<span class="sourceLineNo">085</span>  /**<a name="line.85"></a>
+<span class="sourceLineNo">086</span>   * @param logKey<a name="line.86"></a>
+<span class="sourceLineNo">087</span>   * @param logEdit TODO: Retire this in favor of<a name="line.87"></a>
+<span class="sourceLineNo">088</span>   *          {@link #visitLogEntryBeforeWrite(RegionInfo, WALKey, WALEdit)} It only exists to get<a name="line.88"></a>
+<span class="sourceLineNo">089</span>   *          scope when replicating. Scope should be in the WALKey and not need us passing in a<a name="line.89"></a>
+<span class="sourceLineNo">090</span>   *          &lt;code&gt;htd&lt;/code&gt;.<a name="line.90"></a>
+<span class="sourceLineNo">091</span>   * @throws IOException If failed to parse the WALEdit<a name="line.91"></a>
+<span class="sourceLineNo">092</span>   */<a name="line.92"></a>
+<span class="sourceLineNo">093</span>  default void visitLogEntryBeforeWrite(WALKey logKey, WALEdit logEdit) throws IOException {}<a name="line.93"></a>
+<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>   * For notification post append to the writer.  Used by metrics system at least.<a name="line.96"></a>
+<span class="sourceLineNo">097</span>   * TODO: Combine this with above.<a name="line.97"></a>
+<span class="sourceLineNo">098</span>   * @param entryLen approx length of cells in this append.<a name="line.98"></a>
+<span class="sourceLineNo">099</span>   * @param elapsedTimeMillis elapsed time in milliseconds.<a name="line.99"></a>
+<span class="sourceLineNo">100</span>   * @param logKey A WAL key<a name="line.100"></a>
+<span class="sourceLineNo">101</span>   * @param logEdit A WAL edit containing list of cells.<a name="line.101"></a>
+<span class="sourceLineNo">102</span>   * @throws IOException if any network or I/O error occurred<a name="line.102"></a>
+<span class="sourceLineNo">103</span>   */<a name="line.103"></a>
+<span class="sourceLineNo">104</span>  default void postAppend(final long entryLen, final long elapsedTimeMillis, final WALKey logKey,<a name="line.104"></a>
+<span class="sourceLineNo">105</span>      final WALEdit logEdit) throws IOException {}<a name="line.105"></a>
+<span class="sourceLineNo">106</span><a name="line.106"></a>
+<span class="sourceLineNo">107</span>  /**<a name="line.107"></a>
+<span class="sourceLineNo">108</span>   * For notification post writer sync.  Used by metrics system at least.<a name="line.108"></a>
+<span class="sourceLineNo">109</span>   * @param timeInNanos How long the filesystem sync took in nanoseconds.<a name="line.109"></a>
+<span class="sourceLineNo">110</span>   * @param handlerSyncs How many sync handler calls were released by this call to filesystem<a name="line.110"></a>
+<span class="sourceLineNo">111</span>   * sync.<a name="line.111"></a>
+<span class="sourceLineNo">112</span>   */<a name="line.112"></a>
+<span class="sourceLineNo">113</span>  default void postSync(final long timeInNanos, final int handlerSyncs) {}<a name="line.113"></a>
+<span class="sourceLineNo">114</span>}<a name="line.114"></a>
 
 
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/c54c242b/devapidocs/src-html/org/apache/hadoop/hbase/replication/regionserver/Replication.ReplicationStatisticsThread.html
----------------------------------------------------------------------
diff --git a/devapidocs/src-html/org/apache/hadoop/hbase/replication/regionserver/Replication.ReplicationStatisticsThread.html b/devapidocs/src-html/org/apache/hadoop/hbase/replication/regionserver/Replication.ReplicationStatisticsThread.html
index 788e4d1..5e0b22c 100644
--- a/devapidocs/src-html/org/apache/hadoop/hbase/replication/regionserver/Replication.ReplicationStatisticsThread.html
+++ b/devapidocs/src-html/org/apache/hadoop/hbase/replication/regionserver/Replication.ReplicationStatisticsThread.html
@@ -76,8 +76,8 @@
 <span class="sourceLineNo">068</span> * Gateway to Replication.  Used by {@link org.apache.hadoop.hbase.regionserver.HRegionServer}.<a name="line.68"></a>
 <span class="sourceLineNo">069</span> */<a name="line.69"></a>
 <span class="sourceLineNo">070</span>@InterfaceAudience.Private<a name="line.70"></a>
-<span class="sourceLineNo">071</span>public class Replication extends WALActionsListener.Base implements<a name="line.71"></a>
-<span class="sourceLineNo">072</span>  ReplicationSourceService, ReplicationSinkService {<a name="line.72"></a>
+<span class="sourceLineNo">071</span>public class Replication implements<a name="line.71"></a>
+<span class="sourceLineNo">072</span>  ReplicationSourceService, ReplicationSinkService, WALActionsListener {<a name="line.72"></a>
 <span class="sourceLineNo">073</span>  private static final Log LOG =<a name="line.73"></a>
 <span class="sourceLineNo">074</span>      LogFactory.getLog(Replication.class);<a name="line.74"></a>
 <span class="sourceLineNo">075</span>  private boolean replicationForBulkLoadData;<a name="line.75"></a>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/c54c242b/devapidocs/src-html/org/apache/hadoop/hbase/replication/regionserver/Replication.html
----------------------------------------------------------------------
diff --git a/devapidocs/src-html/org/apache/hadoop/hbase/replication/regionserver/Replication.html b/devapidocs/src-html/org/apache/hadoop/hbase/replication/regionserver/Replication.html
index 788e4d1..5e0b22c 100644
--- a/devapidocs/src-html/org/apache/hadoop/hbase/replication/regionserver/Replication.html
+++ b/devapidocs/src-html/org/apache/hadoop/hbase/replication/regionserver/Replication.html
@@ -76,8 +76,8 @@
 <span class="sourceLineNo">068</span> * Gateway to Replication.  Used by {@link org.apache.hadoop.hbase.regionserver.HRegionServer}.<a name="line.68"></a>
 <span class="sourceLineNo">069</span> */<a name="line.69"></a>
 <span class="sourceLineNo">070</span>@InterfaceAudience.Private<a name="line.70"></a>
-<span class="sourceLineNo">071</span>public class Replication extends WALActionsListener.Base implements<a name="line.71"></a>
-<span class="sourceLineNo">072</span>  ReplicationSourceService, ReplicationSinkService {<a name="line.72"></a>
+<span class="sourceLineNo">071</span>public class Replication implements<a name="line.71"></a>
+<span class="sourceLineNo">072</span>  ReplicationSourceService, ReplicationSinkService, WALActionsListener {<a name="line.72"></a>
 <span class="sourceLineNo">073</span>  private static final Log LOG =<a name="line.73"></a>
 <span class="sourceLineNo">074</span>      LogFactory.getLog(Replication.class);<a name="line.74"></a>
 <span class="sourceLineNo">075</span>  private boolean replicationForBulkLoadData;<a name="line.75"></a>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/c54c242b/devapidocs/src-html/org/apache/hadoop/hbase/zookeeper/MiniZooKeeperCluster.html
----------------------------------------------------------------------
diff --git a/devapidocs/src-html/org/apache/hadoop/hbase/zookeeper/MiniZooKeeperCluster.html b/devapidocs/src-html/org/apache/hadoop/hbase/zookeeper/MiniZooKeeperCluster.html
index 1513749..5db3c04 100644
--- a/devapidocs/src-html/org/apache/hadoop/hbase/zookeeper/MiniZooKeeperCluster.html
+++ b/devapidocs/src-html/org/apache/hadoop/hbase/zookeeper/MiniZooKeeperCluster.html
@@ -477,7 +477,11 @@
 <span class="sourceLineNo">469</span>    return activeZKServerIndex &lt; 0 || activeZKServerIndex &gt;= clientPortList.size() ? -1<a name="line.469"></a>
 <span class="sourceLineNo">470</span>        : clientPortList.get(activeZKServerIndex);<a name="line.470"></a>
 <span class="sourceLineNo">471</span>  }<a name="line.471"></a>
-<span class="sourceLineNo">472</span>}<a name="line.472"></a>
+<span class="sourceLineNo">472</span><a name="line.472"></a>
+<span class="sourceLineNo">473</span>  List&lt;ZooKeeperServer&gt; getZooKeeperServers() {<a name="line.473"></a>
+<span class="sourceLineNo">474</span>    return zooKeeperServers;<a name="line.474"></a>
+<span class="sourceLineNo">475</span>  }<a name="line.475"></a>
+<span class="sourceLineNo">476</span>}<a name="line.476"></a>
 
 
 


[31/51] [partial] hbase-site git commit: Published site at .

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/c54c242b/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/HRegion.BatchOperation.Visitor.html
----------------------------------------------------------------------
diff --git a/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/HRegion.BatchOperation.Visitor.html b/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/HRegion.BatchOperation.Visitor.html
index 3edfbef..9707b2c 100644
--- a/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/HRegion.BatchOperation.Visitor.html
+++ b/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/HRegion.BatchOperation.Visitor.html
@@ -2459,5936 +2459,5935 @@
 <span class="sourceLineNo">2451</span>      }<a name="line.2451"></a>
 <span class="sourceLineNo">2452</span><a name="line.2452"></a>
 <span class="sourceLineNo">2453</span>      for (HStore s : storesToFlush) {<a name="line.2453"></a>
-<span class="sourceLineNo">2454</span>        MemStoreSize flushableSize = s.getFlushableSize();<a name="line.2454"></a>
-<span class="sourceLineNo">2455</span>        totalSizeOfFlushableStores.incMemStoreSize(flushableSize);<a name="line.2455"></a>
-<span class="sourceLineNo">2456</span>        storeFlushCtxs.put(s.getColumnFamilyDescriptor().getName(),<a name="line.2456"></a>
-<span class="sourceLineNo">2457</span>          s.createFlushContext(flushOpSeqId, tracker));<a name="line.2457"></a>
-<span class="sourceLineNo">2458</span>        // for writing stores to WAL<a name="line.2458"></a>
-<span class="sourceLineNo">2459</span>        committedFiles.put(s.getColumnFamilyDescriptor().getName(), null);<a name="line.2459"></a>
-<span class="sourceLineNo">2460</span>        storeFlushableSize.put(s.getColumnFamilyDescriptor().getName(), flushableSize);<a name="line.2460"></a>
-<span class="sourceLineNo">2461</span>      }<a name="line.2461"></a>
-<span class="sourceLineNo">2462</span><a name="line.2462"></a>
-<span class="sourceLineNo">2463</span>      // write the snapshot start to WAL<a name="line.2463"></a>
-<span class="sourceLineNo">2464</span>      if (wal != null &amp;&amp; !writestate.readOnly) {<a name="line.2464"></a>
-<span class="sourceLineNo">2465</span>        FlushDescriptor desc = ProtobufUtil.toFlushDescriptor(FlushAction.START_FLUSH,<a name="line.2465"></a>
-<span class="sourceLineNo">2466</span>            getRegionInfo(), flushOpSeqId, committedFiles);<a name="line.2466"></a>
-<span class="sourceLineNo">2467</span>        // No sync. Sync is below where no updates lock and we do FlushAction.COMMIT_FLUSH<a name="line.2467"></a>
-<span class="sourceLineNo">2468</span>        WALUtil.writeFlushMarker(wal, this.getReplicationScope(), getRegionInfo(), desc, false,<a name="line.2468"></a>
-<span class="sourceLineNo">2469</span>            mvcc);<a name="line.2469"></a>
-<span class="sourceLineNo">2470</span>      }<a name="line.2470"></a>
-<span class="sourceLineNo">2471</span><a name="line.2471"></a>
-<span class="sourceLineNo">2472</span>      // Prepare flush (take a snapshot)<a name="line.2472"></a>
-<span class="sourceLineNo">2473</span>      for (StoreFlushContext flush : storeFlushCtxs.values()) {<a name="line.2473"></a>
-<span class="sourceLineNo">2474</span>        flush.prepare();<a name="line.2474"></a>
-<span class="sourceLineNo">2475</span>      }<a name="line.2475"></a>
-<span class="sourceLineNo">2476</span>    } catch (IOException ex) {<a name="line.2476"></a>
-<span class="sourceLineNo">2477</span>      doAbortFlushToWAL(wal, flushOpSeqId, committedFiles);<a name="line.2477"></a>
-<span class="sourceLineNo">2478</span>      throw ex;<a name="line.2478"></a>
-<span class="sourceLineNo">2479</span>    } finally {<a name="line.2479"></a>
-<span class="sourceLineNo">2480</span>      this.updatesLock.writeLock().unlock();<a name="line.2480"></a>
-<span class="sourceLineNo">2481</span>    }<a name="line.2481"></a>
-<span class="sourceLineNo">2482</span>    String s = "Finished memstore snapshotting " + this + ", syncing WAL and waiting on mvcc, " +<a name="line.2482"></a>
-<span class="sourceLineNo">2483</span>        "flushsize=" + totalSizeOfFlushableStores;<a name="line.2483"></a>
-<span class="sourceLineNo">2484</span>    status.setStatus(s);<a name="line.2484"></a>
-<span class="sourceLineNo">2485</span>    doSyncOfUnflushedWALChanges(wal, getRegionInfo());<a name="line.2485"></a>
-<span class="sourceLineNo">2486</span>    return new PrepareFlushResult(storeFlushCtxs, committedFiles, storeFlushableSize, startTime,<a name="line.2486"></a>
-<span class="sourceLineNo">2487</span>        flushOpSeqId, flushedSeqId, totalSizeOfFlushableStores);<a name="line.2487"></a>
-<span class="sourceLineNo">2488</span>  }<a name="line.2488"></a>
-<span class="sourceLineNo">2489</span><a name="line.2489"></a>
-<span class="sourceLineNo">2490</span>  /**<a name="line.2490"></a>
-<span class="sourceLineNo">2491</span>   * Utility method broken out of internalPrepareFlushCache so that method is smaller.<a name="line.2491"></a>
-<span class="sourceLineNo">2492</span>   */<a name="line.2492"></a>
-<span class="sourceLineNo">2493</span>  private void logFatLineOnFlush(Collection&lt;HStore&gt; storesToFlush, long sequenceId) {<a name="line.2493"></a>
-<span class="sourceLineNo">2494</span>    if (!LOG.isInfoEnabled()) {<a name="line.2494"></a>
-<span class="sourceLineNo">2495</span>      return;<a name="line.2495"></a>
-<span class="sourceLineNo">2496</span>    }<a name="line.2496"></a>
-<span class="sourceLineNo">2497</span>    // Log a fat line detailing what is being flushed.<a name="line.2497"></a>
-<span class="sourceLineNo">2498</span>    StringBuilder perCfExtras = null;<a name="line.2498"></a>
-<span class="sourceLineNo">2499</span>    if (!isAllFamilies(storesToFlush)) {<a name="line.2499"></a>
-<span class="sourceLineNo">2500</span>      perCfExtras = new StringBuilder();<a name="line.2500"></a>
-<span class="sourceLineNo">2501</span>      for (HStore store: storesToFlush) {<a name="line.2501"></a>
-<span class="sourceLineNo">2502</span>        perCfExtras.append("; ").append(store.getColumnFamilyName());<a name="line.2502"></a>
-<span class="sourceLineNo">2503</span>        perCfExtras.append("=")<a name="line.2503"></a>
-<span class="sourceLineNo">2504</span>            .append(StringUtils.byteDesc(store.getFlushableSize().getDataSize()));<a name="line.2504"></a>
-<span class="sourceLineNo">2505</span>      }<a name="line.2505"></a>
-<span class="sourceLineNo">2506</span>    }<a name="line.2506"></a>
-<span class="sourceLineNo">2507</span>    LOG.info("Flushing " + + storesToFlush.size() + "/" + stores.size() +<a name="line.2507"></a>
-<span class="sourceLineNo">2508</span>        " column families, memstore=" + StringUtils.byteDesc(this.memstoreDataSize.get()) +<a name="line.2508"></a>
-<span class="sourceLineNo">2509</span>        ((perCfExtras != null &amp;&amp; perCfExtras.length() &gt; 0)? perCfExtras.toString(): "") +<a name="line.2509"></a>
-<span class="sourceLineNo">2510</span>        ((wal != null) ? "" : "; WAL is null, using passed sequenceid=" + sequenceId));<a name="line.2510"></a>
-<span class="sourceLineNo">2511</span>  }<a name="line.2511"></a>
-<span class="sourceLineNo">2512</span><a name="line.2512"></a>
-<span class="sourceLineNo">2513</span>  private void doAbortFlushToWAL(final WAL wal, final long flushOpSeqId,<a name="line.2513"></a>
-<span class="sourceLineNo">2514</span>      final Map&lt;byte[], List&lt;Path&gt;&gt; committedFiles) {<a name="line.2514"></a>
-<span class="sourceLineNo">2515</span>    if (wal == null) return;<a name="line.2515"></a>
-<span class="sourceLineNo">2516</span>    try {<a name="line.2516"></a>
-<span class="sourceLineNo">2517</span>      FlushDescriptor desc = ProtobufUtil.toFlushDescriptor(FlushAction.ABORT_FLUSH,<a name="line.2517"></a>
-<span class="sourceLineNo">2518</span>          getRegionInfo(), flushOpSeqId, committedFiles);<a name="line.2518"></a>
-<span class="sourceLineNo">2519</span>      WALUtil.writeFlushMarker(wal, this.getReplicationScope(), getRegionInfo(), desc, false,<a name="line.2519"></a>
-<span class="sourceLineNo">2520</span>          mvcc);<a name="line.2520"></a>
-<span class="sourceLineNo">2521</span>    } catch (Throwable t) {<a name="line.2521"></a>
-<span class="sourceLineNo">2522</span>      LOG.warn("Received unexpected exception trying to write ABORT_FLUSH marker to WAL:" +<a name="line.2522"></a>
-<span class="sourceLineNo">2523</span>          StringUtils.stringifyException(t));<a name="line.2523"></a>
-<span class="sourceLineNo">2524</span>      // ignore this since we will be aborting the RS with DSE.<a name="line.2524"></a>
-<span class="sourceLineNo">2525</span>    }<a name="line.2525"></a>
-<span class="sourceLineNo">2526</span>    // we have called wal.startCacheFlush(), now we have to abort it<a name="line.2526"></a>
-<span class="sourceLineNo">2527</span>    wal.abortCacheFlush(this.getRegionInfo().getEncodedNameAsBytes());<a name="line.2527"></a>
-<span class="sourceLineNo">2528</span>  }<a name="line.2528"></a>
-<span class="sourceLineNo">2529</span><a name="line.2529"></a>
-<span class="sourceLineNo">2530</span>  /**<a name="line.2530"></a>
-<span class="sourceLineNo">2531</span>   * Sync unflushed WAL changes. See HBASE-8208 for details<a name="line.2531"></a>
-<span class="sourceLineNo">2532</span>   */<a name="line.2532"></a>
-<span class="sourceLineNo">2533</span>  private static void doSyncOfUnflushedWALChanges(final WAL wal, final RegionInfo hri)<a name="line.2533"></a>
-<span class="sourceLineNo">2534</span>  throws IOException {<a name="line.2534"></a>
-<span class="sourceLineNo">2535</span>    if (wal == null) {<a name="line.2535"></a>
-<span class="sourceLineNo">2536</span>      return;<a name="line.2536"></a>
-<span class="sourceLineNo">2537</span>    }<a name="line.2537"></a>
-<span class="sourceLineNo">2538</span>    try {<a name="line.2538"></a>
-<span class="sourceLineNo">2539</span>      wal.sync(); // ensure that flush marker is sync'ed<a name="line.2539"></a>
-<span class="sourceLineNo">2540</span>    } catch (IOException ioe) {<a name="line.2540"></a>
-<span class="sourceLineNo">2541</span>      wal.abortCacheFlush(hri.getEncodedNameAsBytes());<a name="line.2541"></a>
-<span class="sourceLineNo">2542</span>      throw ioe;<a name="line.2542"></a>
-<span class="sourceLineNo">2543</span>    }<a name="line.2543"></a>
-<span class="sourceLineNo">2544</span>  }<a name="line.2544"></a>
-<span class="sourceLineNo">2545</span><a name="line.2545"></a>
-<span class="sourceLineNo">2546</span>  /**<a name="line.2546"></a>
-<span class="sourceLineNo">2547</span>   * @return True if passed Set is all families in the region.<a name="line.2547"></a>
-<span class="sourceLineNo">2548</span>   */<a name="line.2548"></a>
-<span class="sourceLineNo">2549</span>  private boolean isAllFamilies(Collection&lt;HStore&gt; families) {<a name="line.2549"></a>
-<span class="sourceLineNo">2550</span>    return families == null || this.stores.size() == families.size();<a name="line.2550"></a>
-<span class="sourceLineNo">2551</span>  }<a name="line.2551"></a>
-<span class="sourceLineNo">2552</span><a name="line.2552"></a>
-<span class="sourceLineNo">2553</span>  /**<a name="line.2553"></a>
-<span class="sourceLineNo">2554</span>   * Writes a marker to WAL indicating a flush is requested but cannot be complete due to various<a name="line.2554"></a>
-<span class="sourceLineNo">2555</span>   * reasons. Ignores exceptions from WAL. Returns whether the write succeeded.<a name="line.2555"></a>
-<span class="sourceLineNo">2556</span>   * @param wal<a name="line.2556"></a>
-<span class="sourceLineNo">2557</span>   * @return whether WAL write was successful<a name="line.2557"></a>
-<span class="sourceLineNo">2558</span>   */<a name="line.2558"></a>
-<span class="sourceLineNo">2559</span>  private boolean writeFlushRequestMarkerToWAL(WAL wal, boolean writeFlushWalMarker) {<a name="line.2559"></a>
-<span class="sourceLineNo">2560</span>    if (writeFlushWalMarker &amp;&amp; wal != null &amp;&amp; !writestate.readOnly) {<a name="line.2560"></a>
-<span class="sourceLineNo">2561</span>      FlushDescriptor desc = ProtobufUtil.toFlushDescriptor(FlushAction.CANNOT_FLUSH,<a name="line.2561"></a>
-<span class="sourceLineNo">2562</span>        getRegionInfo(), -1, new TreeMap&lt;&gt;(Bytes.BYTES_COMPARATOR));<a name="line.2562"></a>
-<span class="sourceLineNo">2563</span>      try {<a name="line.2563"></a>
-<span class="sourceLineNo">2564</span>        WALUtil.writeFlushMarker(wal, this.getReplicationScope(), getRegionInfo(), desc, true,<a name="line.2564"></a>
-<span class="sourceLineNo">2565</span>            mvcc);<a name="line.2565"></a>
-<span class="sourceLineNo">2566</span>        return true;<a name="line.2566"></a>
-<span class="sourceLineNo">2567</span>      } catch (IOException e) {<a name="line.2567"></a>
-<span class="sourceLineNo">2568</span>        LOG.warn(getRegionInfo().getEncodedName() + " : "<a name="line.2568"></a>
-<span class="sourceLineNo">2569</span>            + "Received exception while trying to write the flush request to wal", e);<a name="line.2569"></a>
-<span class="sourceLineNo">2570</span>      }<a name="line.2570"></a>
-<span class="sourceLineNo">2571</span>    }<a name="line.2571"></a>
-<span class="sourceLineNo">2572</span>    return false;<a name="line.2572"></a>
-<span class="sourceLineNo">2573</span>  }<a name="line.2573"></a>
-<span class="sourceLineNo">2574</span><a name="line.2574"></a>
-<span class="sourceLineNo">2575</span>  @edu.umd.cs.findbugs.annotations.SuppressWarnings(value="NN_NAKED_NOTIFY",<a name="line.2575"></a>
-<span class="sourceLineNo">2576</span>      justification="Intentional; notify is about completed flush")<a name="line.2576"></a>
-<span class="sourceLineNo">2577</span>  protected FlushResultImpl internalFlushCacheAndCommit(WAL wal, MonitoredTask status,<a name="line.2577"></a>
-<span class="sourceLineNo">2578</span>      PrepareFlushResult prepareResult, Collection&lt;HStore&gt; storesToFlush) throws IOException {<a name="line.2578"></a>
-<span class="sourceLineNo">2579</span>    // prepare flush context is carried via PrepareFlushResult<a name="line.2579"></a>
-<span class="sourceLineNo">2580</span>    TreeMap&lt;byte[], StoreFlushContext&gt; storeFlushCtxs = prepareResult.storeFlushCtxs;<a name="line.2580"></a>
-<span class="sourceLineNo">2581</span>    TreeMap&lt;byte[], List&lt;Path&gt;&gt; committedFiles = prepareResult.committedFiles;<a name="line.2581"></a>
-<span class="sourceLineNo">2582</span>    long startTime = prepareResult.startTime;<a name="line.2582"></a>
-<span class="sourceLineNo">2583</span>    long flushOpSeqId = prepareResult.flushOpSeqId;<a name="line.2583"></a>
-<span class="sourceLineNo">2584</span>    long flushedSeqId = prepareResult.flushedSeqId;<a name="line.2584"></a>
-<span class="sourceLineNo">2585</span><a name="line.2585"></a>
-<span class="sourceLineNo">2586</span>    String s = "Flushing stores of " + this;<a name="line.2586"></a>
-<span class="sourceLineNo">2587</span>    status.setStatus(s);<a name="line.2587"></a>
-<span class="sourceLineNo">2588</span>    if (LOG.isTraceEnabled()) LOG.trace(s);<a name="line.2588"></a>
-<span class="sourceLineNo">2589</span><a name="line.2589"></a>
-<span class="sourceLineNo">2590</span>    // Any failure from here on out will be catastrophic requiring server<a name="line.2590"></a>
-<span class="sourceLineNo">2591</span>    // restart so wal content can be replayed and put back into the memstore.<a name="line.2591"></a>
-<span class="sourceLineNo">2592</span>    // Otherwise, the snapshot content while backed up in the wal, it will not<a name="line.2592"></a>
-<span class="sourceLineNo">2593</span>    // be part of the current running servers state.<a name="line.2593"></a>
-<span class="sourceLineNo">2594</span>    boolean compactionRequested = false;<a name="line.2594"></a>
-<span class="sourceLineNo">2595</span>    long flushedOutputFileSize = 0;<a name="line.2595"></a>
-<span class="sourceLineNo">2596</span>    try {<a name="line.2596"></a>
-<span class="sourceLineNo">2597</span>      // A.  Flush memstore to all the HStores.<a name="line.2597"></a>
-<span class="sourceLineNo">2598</span>      // Keep running vector of all store files that includes both old and the<a name="line.2598"></a>
-<span class="sourceLineNo">2599</span>      // just-made new flush store file. The new flushed file is still in the<a name="line.2599"></a>
-<span class="sourceLineNo">2600</span>      // tmp directory.<a name="line.2600"></a>
-<span class="sourceLineNo">2601</span><a name="line.2601"></a>
-<span class="sourceLineNo">2602</span>      for (StoreFlushContext flush : storeFlushCtxs.values()) {<a name="line.2602"></a>
-<span class="sourceLineNo">2603</span>        flush.flushCache(status);<a name="line.2603"></a>
-<span class="sourceLineNo">2604</span>      }<a name="line.2604"></a>
-<span class="sourceLineNo">2605</span><a name="line.2605"></a>
-<span class="sourceLineNo">2606</span>      // Switch snapshot (in memstore) -&gt; new hfile (thus causing<a name="line.2606"></a>
-<span class="sourceLineNo">2607</span>      // all the store scanners to reset/reseek).<a name="line.2607"></a>
-<span class="sourceLineNo">2608</span>      Iterator&lt;HStore&gt; it = storesToFlush.iterator();<a name="line.2608"></a>
-<span class="sourceLineNo">2609</span>      // stores.values() and storeFlushCtxs have same order<a name="line.2609"></a>
-<span class="sourceLineNo">2610</span>      for (StoreFlushContext flush : storeFlushCtxs.values()) {<a name="line.2610"></a>
-<span class="sourceLineNo">2611</span>        boolean needsCompaction = flush.commit(status);<a name="line.2611"></a>
-<span class="sourceLineNo">2612</span>        if (needsCompaction) {<a name="line.2612"></a>
-<span class="sourceLineNo">2613</span>          compactionRequested = true;<a name="line.2613"></a>
-<span class="sourceLineNo">2614</span>        }<a name="line.2614"></a>
-<span class="sourceLineNo">2615</span>        byte[] storeName = it.next().getColumnFamilyDescriptor().getName();<a name="line.2615"></a>
-<span class="sourceLineNo">2616</span>        List&lt;Path&gt; storeCommittedFiles = flush.getCommittedFiles();<a name="line.2616"></a>
-<span class="sourceLineNo">2617</span>        committedFiles.put(storeName, storeCommittedFiles);<a name="line.2617"></a>
-<span class="sourceLineNo">2618</span>        // Flush committed no files, indicating flush is empty or flush was canceled<a name="line.2618"></a>
-<span class="sourceLineNo">2619</span>        if (storeCommittedFiles == null || storeCommittedFiles.isEmpty()) {<a name="line.2619"></a>
-<span class="sourceLineNo">2620</span>          MemStoreSize storeFlushableSize = prepareResult.storeFlushableSize.get(storeName);<a name="line.2620"></a>
-<span class="sourceLineNo">2621</span>          prepareResult.totalFlushableSize.decMemStoreSize(storeFlushableSize);<a name="line.2621"></a>
-<span class="sourceLineNo">2622</span>        }<a name="line.2622"></a>
-<span class="sourceLineNo">2623</span>        flushedOutputFileSize += flush.getOutputFileSize();<a name="line.2623"></a>
-<span class="sourceLineNo">2624</span>      }<a name="line.2624"></a>
-<span class="sourceLineNo">2625</span>      storeFlushCtxs.clear();<a name="line.2625"></a>
-<span class="sourceLineNo">2626</span><a name="line.2626"></a>
-<span class="sourceLineNo">2627</span>      // Set down the memstore size by amount of flush.<a name="line.2627"></a>
-<span class="sourceLineNo">2628</span>      this.decrMemStoreSize(prepareResult.totalFlushableSize);<a name="line.2628"></a>
-<span class="sourceLineNo">2629</span><a name="line.2629"></a>
-<span class="sourceLineNo">2630</span>      if (wal != null) {<a name="line.2630"></a>
-<span class="sourceLineNo">2631</span>        // write flush marker to WAL. If fail, we should throw DroppedSnapshotException<a name="line.2631"></a>
-<span class="sourceLineNo">2632</span>        FlushDescriptor desc = ProtobufUtil.toFlushDescriptor(FlushAction.COMMIT_FLUSH,<a name="line.2632"></a>
-<span class="sourceLineNo">2633</span>          getRegionInfo(), flushOpSeqId, committedFiles);<a name="line.2633"></a>
-<span class="sourceLineNo">2634</span>        WALUtil.writeFlushMarker(wal, this.getReplicationScope(), getRegionInfo(), desc, true,<a name="line.2634"></a>
-<span class="sourceLineNo">2635</span>            mvcc);<a name="line.2635"></a>
-<span class="sourceLineNo">2636</span>      }<a name="line.2636"></a>
-<span class="sourceLineNo">2637</span>    } catch (Throwable t) {<a name="line.2637"></a>
-<span class="sourceLineNo">2638</span>      // An exception here means that the snapshot was not persisted.<a name="line.2638"></a>
-<span class="sourceLineNo">2639</span>      // The wal needs to be replayed so its content is restored to memstore.<a name="line.2639"></a>
-<span class="sourceLineNo">2640</span>      // Currently, only a server restart will do this.<a name="line.2640"></a>
-<span class="sourceLineNo">2641</span>      // We used to only catch IOEs but its possible that we'd get other<a name="line.2641"></a>
-<span class="sourceLineNo">2642</span>      // exceptions -- e.g. HBASE-659 was about an NPE -- so now we catch<a name="line.2642"></a>
-<span class="sourceLineNo">2643</span>      // all and sundry.<a name="line.2643"></a>
-<span class="sourceLineNo">2644</span>      if (wal != null) {<a name="line.2644"></a>
-<span class="sourceLineNo">2645</span>        try {<a name="line.2645"></a>
-<span class="sourceLineNo">2646</span>          FlushDescriptor desc = ProtobufUtil.toFlushDescriptor(FlushAction.ABORT_FLUSH,<a name="line.2646"></a>
-<span class="sourceLineNo">2647</span>            getRegionInfo(), flushOpSeqId, committedFiles);<a name="line.2647"></a>
-<span class="sourceLineNo">2648</span>          WALUtil.writeFlushMarker(wal, this.replicationScope, getRegionInfo(), desc, false, mvcc);<a name="line.2648"></a>
-<span class="sourceLineNo">2649</span>        } catch (Throwable ex) {<a name="line.2649"></a>
-<span class="sourceLineNo">2650</span>          LOG.warn(getRegionInfo().getEncodedName() + " : "<a name="line.2650"></a>
-<span class="sourceLineNo">2651</span>              + "failed writing ABORT_FLUSH marker to WAL", ex);<a name="line.2651"></a>
-<span class="sourceLineNo">2652</span>          // ignore this since we will be aborting the RS with DSE.<a name="line.2652"></a>
-<span class="sourceLineNo">2653</span>        }<a name="line.2653"></a>
-<span class="sourceLineNo">2654</span>        wal.abortCacheFlush(this.getRegionInfo().getEncodedNameAsBytes());<a name="line.2654"></a>
-<span class="sourceLineNo">2655</span>      }<a name="line.2655"></a>
-<span class="sourceLineNo">2656</span>      DroppedSnapshotException dse = new DroppedSnapshotException("region: " +<a name="line.2656"></a>
-<span class="sourceLineNo">2657</span>          Bytes.toStringBinary(getRegionInfo().getRegionName()));<a name="line.2657"></a>
-<span class="sourceLineNo">2658</span>      dse.initCause(t);<a name="line.2658"></a>
-<span class="sourceLineNo">2659</span>      status.abort("Flush failed: " + StringUtils.stringifyException(t));<a name="line.2659"></a>
-<span class="sourceLineNo">2660</span><a name="line.2660"></a>
-<span class="sourceLineNo">2661</span>      // Callers for flushcache() should catch DroppedSnapshotException and abort the region server.<a name="line.2661"></a>
-<span class="sourceLineNo">2662</span>      // However, since we may have the region read lock, we cannot call close(true) here since<a name="line.2662"></a>
-<span class="sourceLineNo">2663</span>      // we cannot promote to a write lock. Instead we are setting closing so that all other region<a name="line.2663"></a>
-<span class="sourceLineNo">2664</span>      // operations except for close will be rejected.<a name="line.2664"></a>
-<span class="sourceLineNo">2665</span>      this.closing.set(true);<a name="line.2665"></a>
-<span class="sourceLineNo">2666</span><a name="line.2666"></a>
-<span class="sourceLineNo">2667</span>      if (rsServices != null) {<a name="line.2667"></a>
-<span class="sourceLineNo">2668</span>        // This is a safeguard against the case where the caller fails to explicitly handle aborting<a name="line.2668"></a>
-<span class="sourceLineNo">2669</span>        rsServices.abort("Replay of WAL required. Forcing server shutdown", dse);<a name="line.2669"></a>
-<span class="sourceLineNo">2670</span>      }<a name="line.2670"></a>
-<span class="sourceLineNo">2671</span><a name="line.2671"></a>
-<span class="sourceLineNo">2672</span>      throw dse;<a name="line.2672"></a>
-<span class="sourceLineNo">2673</span>    }<a name="line.2673"></a>
-<span class="sourceLineNo">2674</span><a name="line.2674"></a>
-<span class="sourceLineNo">2675</span>    // If we get to here, the HStores have been written.<a name="line.2675"></a>
-<span class="sourceLineNo">2676</span>    if (wal != null) {<a name="line.2676"></a>
-<span class="sourceLineNo">2677</span>      wal.completeCacheFlush(this.getRegionInfo().getEncodedNameAsBytes());<a name="line.2677"></a>
-<span class="sourceLineNo">2678</span>    }<a name="line.2678"></a>
-<span class="sourceLineNo">2679</span><a name="line.2679"></a>
-<span class="sourceLineNo">2680</span>    // Record latest flush time<a name="line.2680"></a>
-<span class="sourceLineNo">2681</span>    for (HStore store: storesToFlush) {<a name="line.2681"></a>
-<span class="sourceLineNo">2682</span>      this.lastStoreFlushTimeMap.put(store, startTime);<a name="line.2682"></a>
-<span class="sourceLineNo">2683</span>    }<a name="line.2683"></a>
-<span class="sourceLineNo">2684</span><a name="line.2684"></a>
-<span class="sourceLineNo">2685</span>    this.maxFlushedSeqId = flushedSeqId;<a name="line.2685"></a>
-<span class="sourceLineNo">2686</span>    this.lastFlushOpSeqId = flushOpSeqId;<a name="line.2686"></a>
-<span class="sourceLineNo">2687</span><a name="line.2687"></a>
-<span class="sourceLineNo">2688</span>    // C. Finally notify anyone waiting on memstore to clear:<a name="line.2688"></a>
-<span class="sourceLineNo">2689</span>    // e.g. checkResources().<a name="line.2689"></a>
-<span class="sourceLineNo">2690</span>    synchronized (this) {<a name="line.2690"></a>
-<span class="sourceLineNo">2691</span>      notifyAll(); // FindBugs NN_NAKED_NOTIFY<a name="line.2691"></a>
-<span class="sourceLineNo">2692</span>    }<a name="line.2692"></a>
-<span class="sourceLineNo">2693</span><a name="line.2693"></a>
-<span class="sourceLineNo">2694</span>    long time = EnvironmentEdgeManager.currentTime() - startTime;<a name="line.2694"></a>
-<span class="sourceLineNo">2695</span>    long memstoresize = this.memstoreDataSize.get();<a name="line.2695"></a>
-<span class="sourceLineNo">2696</span>    String msg = "Finished memstore flush of ~"<a name="line.2696"></a>
-<span class="sourceLineNo">2697</span>        + StringUtils.byteDesc(prepareResult.totalFlushableSize.getDataSize()) + "/"<a name="line.2697"></a>
-<span class="sourceLineNo">2698</span>        + prepareResult.totalFlushableSize.getDataSize() + ", currentsize="<a name="line.2698"></a>
-<span class="sourceLineNo">2699</span>        + StringUtils.byteDesc(memstoresize) + "/" + memstoresize<a name="line.2699"></a>
-<span class="sourceLineNo">2700</span>        + " for region " + this + " in " + time + "ms, sequenceid="<a name="line.2700"></a>
-<span class="sourceLineNo">2701</span>        + flushOpSeqId +  ", compaction requested=" + compactionRequested<a name="line.2701"></a>
-<span class="sourceLineNo">2702</span>        + ((wal == null) ? "; wal=null" : "");<a name="line.2702"></a>
-<span class="sourceLineNo">2703</span>    LOG.info(msg);<a name="line.2703"></a>
-<span class="sourceLineNo">2704</span>    status.setStatus(msg);<a name="line.2704"></a>
-<span class="sourceLineNo">2705</span><a name="line.2705"></a>
-<span class="sourceLineNo">2706</span>    if (rsServices != null &amp;&amp; rsServices.getMetrics() != null) {<a name="line.2706"></a>
-<span class="sourceLineNo">2707</span>      rsServices.getMetrics().updateFlush(time - startTime,<a name="line.2707"></a>
-<span class="sourceLineNo">2708</span>          prepareResult.totalFlushableSize.getDataSize(), flushedOutputFileSize);<a name="line.2708"></a>
-<span class="sourceLineNo">2709</span>    }<a name="line.2709"></a>
-<span class="sourceLineNo">2710</span><a name="line.2710"></a>
-<span class="sourceLineNo">2711</span>    return new FlushResultImpl(compactionRequested ?<a name="line.2711"></a>
-<span class="sourceLineNo">2712</span>        FlushResult.Result.FLUSHED_COMPACTION_NEEDED :<a name="line.2712"></a>
-<span class="sourceLineNo">2713</span>          FlushResult.Result.FLUSHED_NO_COMPACTION_NEEDED, flushOpSeqId);<a name="line.2713"></a>
-<span class="sourceLineNo">2714</span>  }<a name="line.2714"></a>
-<span class="sourceLineNo">2715</span><a name="line.2715"></a>
-<span class="sourceLineNo">2716</span>  /**<a name="line.2716"></a>
-<span class="sourceLineNo">2717</span>   * Method to safely get the next sequence number.<a name="line.2717"></a>
-<span class="sourceLineNo">2718</span>   * @return Next sequence number unassociated with any actual edit.<a name="line.2718"></a>
-<span class="sourceLineNo">2719</span>   * @throws IOException<a name="line.2719"></a>
-<span class="sourceLineNo">2720</span>   */<a name="line.2720"></a>
-<span class="sourceLineNo">2721</span>  @VisibleForTesting<a name="line.2721"></a>
-<span class="sourceLineNo">2722</span>  protected long getNextSequenceId(final WAL wal) throws IOException {<a name="line.2722"></a>
-<span class="sourceLineNo">2723</span>    WriteEntry we = mvcc.begin();<a name="line.2723"></a>
-<span class="sourceLineNo">2724</span>    mvcc.completeAndWait(we);<a name="line.2724"></a>
-<span class="sourceLineNo">2725</span>    return we.getWriteNumber();<a name="line.2725"></a>
-<span class="sourceLineNo">2726</span>  }<a name="line.2726"></a>
-<span class="sourceLineNo">2727</span><a name="line.2727"></a>
-<span class="sourceLineNo">2728</span>  //////////////////////////////////////////////////////////////////////////////<a name="line.2728"></a>
-<span class="sourceLineNo">2729</span>  // get() methods for client use.<a name="line.2729"></a>
-<span class="sourceLineNo">2730</span>  //////////////////////////////////////////////////////////////////////////////<a name="line.2730"></a>
-<span class="sourceLineNo">2731</span><a name="line.2731"></a>
-<span class="sourceLineNo">2732</span>  @Override<a name="line.2732"></a>
-<span class="sourceLineNo">2733</span>  public RegionScannerImpl getScanner(Scan scan) throws IOException {<a name="line.2733"></a>
-<span class="sourceLineNo">2734</span>   return getScanner(scan, null);<a name="line.2734"></a>
-<span class="sourceLineNo">2735</span>  }<a name="line.2735"></a>
-<span class="sourceLineNo">2736</span><a name="line.2736"></a>
-<span class="sourceLineNo">2737</span>  @Override<a name="line.2737"></a>
-<span class="sourceLineNo">2738</span>  public RegionScannerImpl getScanner(Scan scan, List&lt;KeyValueScanner&gt; additionalScanners)<a name="line.2738"></a>
-<span class="sourceLineNo">2739</span>      throws IOException {<a name="line.2739"></a>
-<span class="sourceLineNo">2740</span>    return getScanner(scan, additionalScanners, HConstants.NO_NONCE, HConstants.NO_NONCE);<a name="line.2740"></a>
-<span class="sourceLineNo">2741</span>  }<a name="line.2741"></a>
-<span class="sourceLineNo">2742</span><a name="line.2742"></a>
-<span class="sourceLineNo">2743</span>  private RegionScannerImpl getScanner(Scan scan, List&lt;KeyValueScanner&gt; additionalScanners,<a name="line.2743"></a>
-<span class="sourceLineNo">2744</span>      long nonceGroup, long nonce) throws IOException {<a name="line.2744"></a>
-<span class="sourceLineNo">2745</span>    startRegionOperation(Operation.SCAN);<a name="line.2745"></a>
-<span class="sourceLineNo">2746</span>    try {<a name="line.2746"></a>
-<span class="sourceLineNo">2747</span>      // Verify families are all valid<a name="line.2747"></a>
-<span class="sourceLineNo">2748</span>      if (!scan.hasFamilies()) {<a name="line.2748"></a>
-<span class="sourceLineNo">2749</span>        // Adding all families to scanner<a name="line.2749"></a>
-<span class="sourceLineNo">2750</span>        for (byte[] family : this.htableDescriptor.getColumnFamilyNames()) {<a name="line.2750"></a>
-<span class="sourceLineNo">2751</span>          scan.addFamily(family);<a name="line.2751"></a>
-<span class="sourceLineNo">2752</span>        }<a name="line.2752"></a>
-<span class="sourceLineNo">2753</span>      } else {<a name="line.2753"></a>
-<span class="sourceLineNo">2754</span>        for (byte[] family : scan.getFamilyMap().keySet()) {<a name="line.2754"></a>
-<span class="sourceLineNo">2755</span>          checkFamily(family);<a name="line.2755"></a>
-<span class="sourceLineNo">2756</span>        }<a name="line.2756"></a>
-<span class="sourceLineNo">2757</span>      }<a name="line.2757"></a>
-<span class="sourceLineNo">2758</span>      return instantiateRegionScanner(scan, additionalScanners, nonceGroup, nonce);<a name="line.2758"></a>
-<span class="sourceLineNo">2759</span>    } finally {<a name="line.2759"></a>
-<span class="sourceLineNo">2760</span>      closeRegionOperation(Operation.SCAN);<a name="line.2760"></a>
-<span class="sourceLineNo">2761</span>    }<a name="line.2761"></a>
-<span class="sourceLineNo">2762</span>  }<a name="line.2762"></a>
-<span class="sourceLineNo">2763</span><a name="line.2763"></a>
-<span class="sourceLineNo">2764</span>  protected RegionScanner instantiateRegionScanner(Scan scan,<a name="line.2764"></a>
-<span class="sourceLineNo">2765</span>      List&lt;KeyValueScanner&gt; additionalScanners) throws IOException {<a name="line.2765"></a>
-<span class="sourceLineNo">2766</span>    return instantiateRegionScanner(scan, additionalScanners, HConstants.NO_NONCE,<a name="line.2766"></a>
-<span class="sourceLineNo">2767</span>      HConstants.NO_NONCE);<a name="line.2767"></a>
-<span class="sourceLineNo">2768</span>  }<a name="line.2768"></a>
-<span class="sourceLineNo">2769</span><a name="line.2769"></a>
-<span class="sourceLineNo">2770</span>  protected RegionScannerImpl instantiateRegionScanner(Scan scan,<a name="line.2770"></a>
-<span class="sourceLineNo">2771</span>      List&lt;KeyValueScanner&gt; additionalScanners, long nonceGroup, long nonce) throws IOException {<a name="line.2771"></a>
-<span class="sourceLineNo">2772</span>    if (scan.isReversed()) {<a name="line.2772"></a>
-<span class="sourceLineNo">2773</span>      if (scan.getFilter() != null) {<a name="line.2773"></a>
-<span class="sourceLineNo">2774</span>        scan.getFilter().setReversed(true);<a name="line.2774"></a>
-<span class="sourceLineNo">2775</span>      }<a name="line.2775"></a>
-<span class="sourceLineNo">2776</span>      return new ReversedRegionScannerImpl(scan, additionalScanners, this);<a name="line.2776"></a>
-<span class="sourceLineNo">2777</span>    }<a name="line.2777"></a>
-<span class="sourceLineNo">2778</span>    return new RegionScannerImpl(scan, additionalScanners, this, nonceGroup, nonce);<a name="line.2778"></a>
-<span class="sourceLineNo">2779</span>  }<a name="line.2779"></a>
-<span class="sourceLineNo">2780</span><a name="line.2780"></a>
-<span class="sourceLineNo">2781</span>  /**<a name="line.2781"></a>
-<span class="sourceLineNo">2782</span>   * Prepare a delete for a row mutation processor<a name="line.2782"></a>
-<span class="sourceLineNo">2783</span>   * @param delete The passed delete is modified by this method. WARNING!<a name="line.2783"></a>
-<span class="sourceLineNo">2784</span>   * @throws IOException<a name="line.2784"></a>
-<span class="sourceLineNo">2785</span>   */<a name="line.2785"></a>
-<span class="sourceLineNo">2786</span>  public void prepareDelete(Delete delete) throws IOException {<a name="line.2786"></a>
-<span class="sourceLineNo">2787</span>    // Check to see if this is a deleteRow insert<a name="line.2787"></a>
-<span class="sourceLineNo">2788</span>    if(delete.getFamilyCellMap().isEmpty()){<a name="line.2788"></a>
-<span class="sourceLineNo">2789</span>      for(byte [] family : this.htableDescriptor.getColumnFamilyNames()){<a name="line.2789"></a>
-<span class="sourceLineNo">2790</span>        // Don't eat the timestamp<a name="line.2790"></a>
-<span class="sourceLineNo">2791</span>        delete.addFamily(family, delete.getTimeStamp());<a name="line.2791"></a>
-<span class="sourceLineNo">2792</span>      }<a name="line.2792"></a>
-<span class="sourceLineNo">2793</span>    } else {<a name="line.2793"></a>
-<span class="sourceLineNo">2794</span>      for(byte [] family : delete.getFamilyCellMap().keySet()) {<a name="line.2794"></a>
-<span class="sourceLineNo">2795</span>        if(family == null) {<a name="line.2795"></a>
-<span class="sourceLineNo">2796</span>          throw new NoSuchColumnFamilyException("Empty family is invalid");<a name="line.2796"></a>
-<span class="sourceLineNo">2797</span>        }<a name="line.2797"></a>
-<span class="sourceLineNo">2798</span>        checkFamily(family);<a name="line.2798"></a>
-<span class="sourceLineNo">2799</span>      }<a name="line.2799"></a>
-<span class="sourceLineNo">2800</span>    }<a name="line.2800"></a>
-<span class="sourceLineNo">2801</span>  }<a name="line.2801"></a>
-<span class="sourceLineNo">2802</span><a name="line.2802"></a>
-<span class="sourceLineNo">2803</span>  @Override<a name="line.2803"></a>
-<span class="sourceLineNo">2804</span>  public void delete(Delete delete) throws IOException {<a name="line.2804"></a>
-<span class="sourceLineNo">2805</span>    checkReadOnly();<a name="line.2805"></a>
-<span class="sourceLineNo">2806</span>    checkResources();<a name="line.2806"></a>
-<span class="sourceLineNo">2807</span>    startRegionOperation(Operation.DELETE);<a name="line.2807"></a>
-<span class="sourceLineNo">2808</span>    try {<a name="line.2808"></a>
-<span class="sourceLineNo">2809</span>      // All edits for the given row (across all column families) must happen atomically.<a name="line.2809"></a>
-<span class="sourceLineNo">2810</span>      doBatchMutate(delete);<a name="line.2810"></a>
-<span class="sourceLineNo">2811</span>    } finally {<a name="line.2811"></a>
-<span class="sourceLineNo">2812</span>      closeRegionOperation(Operation.DELETE);<a name="line.2812"></a>
-<span class="sourceLineNo">2813</span>    }<a name="line.2813"></a>
-<span class="sourceLineNo">2814</span>  }<a name="line.2814"></a>
-<span class="sourceLineNo">2815</span><a name="line.2815"></a>
-<span class="sourceLineNo">2816</span>  /**<a name="line.2816"></a>
-<span class="sourceLineNo">2817</span>   * Row needed by below method.<a name="line.2817"></a>
-<span class="sourceLineNo">2818</span>   */<a name="line.2818"></a>
-<span class="sourceLineNo">2819</span>  private static final byte [] FOR_UNIT_TESTS_ONLY = Bytes.toBytes("ForUnitTestsOnly");<a name="line.2819"></a>
-<span class="sourceLineNo">2820</span><a name="line.2820"></a>
-<span class="sourceLineNo">2821</span>  /**<a name="line.2821"></a>
-<span class="sourceLineNo">2822</span>   * This is used only by unit tests. Not required to be a public API.<a name="line.2822"></a>
-<span class="sourceLineNo">2823</span>   * @param familyMap map of family to edits for the given family.<a name="line.2823"></a>
-<span class="sourceLineNo">2824</span>   * @throws IOException<a name="line.2824"></a>
-<span class="sourceLineNo">2825</span>   */<a name="line.2825"></a>
-<span class="sourceLineNo">2826</span>  void delete(NavigableMap&lt;byte[], List&lt;Cell&gt;&gt; familyMap,<a name="line.2826"></a>
-<span class="sourceLineNo">2827</span>      Durability durability) throws IOException {<a name="line.2827"></a>
-<span class="sourceLineNo">2828</span>    Delete delete = new Delete(FOR_UNIT_TESTS_ONLY);<a name="line.2828"></a>
-<span class="sourceLineNo">2829</span>    delete.setFamilyCellMap(familyMap);<a name="line.2829"></a>
-<span class="sourceLineNo">2830</span>    delete.setDurability(durability);<a name="line.2830"></a>
-<span class="sourceLineNo">2831</span>    doBatchMutate(delete);<a name="line.2831"></a>
-<span class="sourceLineNo">2832</span>  }<a name="line.2832"></a>
-<span class="sourceLineNo">2833</span><a name="line.2833"></a>
-<span class="sourceLineNo">2834</span>  /**<a name="line.2834"></a>
-<span class="sourceLineNo">2835</span>   * Set up correct timestamps in the KVs in Delete object.<a name="line.2835"></a>
-<span class="sourceLineNo">2836</span>   * &lt;p&gt;Caller should have the row and region locks.<a name="line.2836"></a>
-<span class="sourceLineNo">2837</span>   * @param mutation<a name="line.2837"></a>
-<span class="sourceLineNo">2838</span>   * @param familyMap<a name="line.2838"></a>
-<span class="sourceLineNo">2839</span>   * @param byteNow<a name="line.2839"></a>
-<span class="sourceLineNo">2840</span>   * @throws IOException<a name="line.2840"></a>
-<span class="sourceLineNo">2841</span>   */<a name="line.2841"></a>
-<span class="sourceLineNo">2842</span>  public void prepareDeleteTimestamps(Mutation mutation, Map&lt;byte[], List&lt;Cell&gt;&gt; familyMap,<a name="line.2842"></a>
-<span class="sourceLineNo">2843</span>      byte[] byteNow) throws IOException {<a name="line.2843"></a>
-<span class="sourceLineNo">2844</span>    for (Map.Entry&lt;byte[], List&lt;Cell&gt;&gt; e : familyMap.entrySet()) {<a name="line.2844"></a>
-<span class="sourceLineNo">2845</span><a name="line.2845"></a>
-<span class="sourceLineNo">2846</span>      byte[] family = e.getKey();<a name="line.2846"></a>
-<span class="sourceLineNo">2847</span>      List&lt;Cell&gt; cells = e.getValue();<a name="line.2847"></a>
-<span class="sourceLineNo">2848</span>      assert cells instanceof RandomAccess;<a name="line.2848"></a>
-<span class="sourceLineNo">2849</span><a name="line.2849"></a>
-<span class="sourceLineNo">2850</span>      Map&lt;byte[], Integer&gt; kvCount = new TreeMap&lt;&gt;(Bytes.BYTES_COMPARATOR);<a name="line.2850"></a>
-<span class="sourceLineNo">2851</span>      int listSize = cells.size();<a name="line.2851"></a>
-<span class="sourceLineNo">2852</span>      for (int i=0; i &lt; listSize; i++) {<a name="line.2852"></a>
-<span class="sourceLineNo">2853</span>        Cell cell = cells.get(i);<a name="line.2853"></a>
-<span class="sourceLineNo">2854</span>        //  Check if time is LATEST, change to time of most recent addition if so<a name="line.2854"></a>
-<span class="sourceLineNo">2855</span>        //  This is expensive.<a name="line.2855"></a>
-<span class="sourceLineNo">2856</span>        if (cell.getTimestamp() == HConstants.LATEST_TIMESTAMP<a name="line.2856"></a>
-<span class="sourceLineNo">2857</span>            &amp;&amp; PrivateCellUtil.isDeleteType(cell)) {<a name="line.2857"></a>
-<span class="sourceLineNo">2858</span>          byte[] qual = CellUtil.cloneQualifier(cell);<a name="line.2858"></a>
-<span class="sourceLineNo">2859</span><a name="line.2859"></a>
-<span class="sourceLineNo">2860</span>          Integer count = kvCount.get(qual);<a name="line.2860"></a>
-<span class="sourceLineNo">2861</span>          if (count == null) {<a name="line.2861"></a>
-<span class="sourceLineNo">2862</span>            kvCount.put(qual, 1);<a name="line.2862"></a>
-<span class="sourceLineNo">2863</span>          } else {<a name="line.2863"></a>
-<span class="sourceLineNo">2864</span>            kvCount.put(qual, count + 1);<a name="line.2864"></a>
-<span class="sourceLineNo">2865</span>          }<a name="line.2865"></a>
-<span class="sourceLineNo">2866</span>          count = kvCount.get(qual);<a name="line.2866"></a>
-<span class="sourceLineNo">2867</span><a name="line.2867"></a>
-<span class="sourceLineNo">2868</span>          Get get = new Get(CellUtil.cloneRow(cell));<a name="line.2868"></a>
-<span class="sourceLineNo">2869</span>          get.setMaxVersions(count);<a name="line.2869"></a>
-<span class="sourceLineNo">2870</span>          get.addColumn(family, qual);<a name="line.2870"></a>
-<span class="sourceLineNo">2871</span>          if (coprocessorHost != null) {<a name="line.2871"></a>
-<span class="sourceLineNo">2872</span>            if (!coprocessorHost.prePrepareTimeStampForDeleteVersion(mutation, cell,<a name="line.2872"></a>
-<span class="sourceLineNo">2873</span>                byteNow, get)) {<a name="line.2873"></a>
-<span class="sourceLineNo">2874</span>              updateDeleteLatestVersionTimeStamp(cell, get, count, byteNow);<a name="line.2874"></a>
-<span class="sourceLineNo">2875</span>            }<a name="line.2875"></a>
-<span class="sourceLineNo">2876</span>          } else {<a name="line.2876"></a>
-<span class="sourceLineNo">2877</span>            updateDeleteLatestVersionTimeStamp(cell, get, count, byteNow);<a name="line.2877"></a>
-<span class="sourceLineNo">2878</span>          }<a name="line.2878"></a>
-<span class="sourceLineNo">2879</span>        } else {<a name="line.2879"></a>
-<span class="sourceLineNo">2880</span>          PrivateCellUtil.updateLatestStamp(cell, byteNow, 0);<a name="line.2880"></a>
-<span class="sourceLineNo">2881</span>        }<a name="line.2881"></a>
-<span class="sourceLineNo">2882</span>      }<a name="line.2882"></a>
-<span class="sourceLineNo">2883</span>    }<a name="line.2883"></a>
-<span class="sourceLineNo">2884</span>  }<a name="line.2884"></a>
-<span class="sourceLineNo">2885</span><a name="line.2885"></a>
-<span class="sourceLineNo">2886</span>  void updateDeleteLatestVersionTimeStamp(Cell cell, Get get, int count, byte[] byteNow)<a name="line.2886"></a>
-<span class="sourceLineNo">2887</span>      throws IOException {<a name="line.2887"></a>
-<span class="sourceLineNo">2888</span>    List&lt;Cell&gt; result = get(get, false);<a name="line.2888"></a>
-<span class="sourceLineNo">2889</span><a name="line.2889"></a>
-<span class="sourceLineNo">2890</span>    if (result.size() &lt; count) {<a name="line.2890"></a>
-<span class="sourceLineNo">2891</span>      // Nothing to delete<a name="line.2891"></a>
-<span class="sourceLineNo">2892</span>      PrivateCellUtil.updateLatestStamp(cell, byteNow, 0);<a name="line.2892"></a>
-<span class="sourceLineNo">2893</span>      return;<a name="line.2893"></a>
-<span class="sourceLineNo">2894</span>    }<a name="line.2894"></a>
-<span class="sourceLineNo">2895</span>    if (result.size() &gt; count) {<a name="line.2895"></a>
-<span class="sourceLineNo">2896</span>      throw new RuntimeException("Unexpected size: " + result.size());<a name="line.2896"></a>
-<span class="sourceLineNo">2897</span>    }<a name="line.2897"></a>
-<span class="sourceLineNo">2898</span>    Cell getCell = result.get(count - 1);<a name="line.2898"></a>
-<span class="sourceLineNo">2899</span>    PrivateCellUtil.setTimestamp(cell, getCell.getTimestamp());<a name="line.2899"></a>
-<span class="sourceLineNo">2900</span>  }<a name="line.2900"></a>
-<span class="sourceLineNo">2901</span><a name="line.2901"></a>
-<span class="sourceLineNo">2902</span>  @Override<a name="line.2902"></a>
-<span class="sourceLineNo">2903</span>  public void put(Put put) throws IOException {<a name="line.2903"></a>
-<span class="sourceLineNo">2904</span>    checkReadOnly();<a name="line.2904"></a>
-<span class="sourceLineNo">2905</span><a name="line.2905"></a>
-<span class="sourceLineNo">2906</span>    // Do a rough check that we have resources to accept a write.  The check is<a name="line.2906"></a>
-<span class="sourceLineNo">2907</span>    // 'rough' in that between the resource check and the call to obtain a<a name="line.2907"></a>
-<span class="sourceLineNo">2908</span>    // read lock, resources may run out.  For now, the thought is that this<a name="line.2908"></a>
-<span class="sourceLineNo">2909</span>    // will be extremely rare; we'll deal with it when it happens.<a name="line.2909"></a>
-<span class="sourceLineNo">2910</span>    checkResources();<a name="line.2910"></a>
-<span class="sourceLineNo">2911</span>    startRegionOperation(Operation.PUT);<a name="line.2911"></a>
-<span class="sourceLineNo">2912</span>    try {<a name="line.2912"></a>
-<span class="sourceLineNo">2913</span>      // All edits for the given row (across all column families) must happen atomically.<a name="line.2913"></a>
-<span class="sourceLineNo">2914</span>      doBatchMutate(put);<a name="line.2914"></a>
-<span class="sourceLineNo">2915</span>    } finally {<a name="line.2915"></a>
-<span class="sourceLineNo">2916</span>      closeRegionOperation(Operation.PUT);<a name="line.2916"></a>
-<span class="sourceLineNo">2917</span>    }<a name="line.2917"></a>
-<span class="sourceLineNo">2918</span>  }<a name="line.2918"></a>
-<span class="sourceLineNo">2919</span><a name="line.2919"></a>
-<span class="sourceLineNo">2920</span>  /**<a name="line.2920"></a>
-<span class="sourceLineNo">2921</span>   * Class that tracks the progress of a batch operations, accumulating status codes and tracking<a name="line.2921"></a>
-<span class="sourceLineNo">2922</span>   * the index at which processing is proceeding. These batch operations may get split into<a name="line.2922"></a>
-<span class="sourceLineNo">2923</span>   * mini-batches for processing.<a name="line.2923"></a>
-<span class="sourceLineNo">2924</span>   */<a name="line.2924"></a>
-<span class="sourceLineNo">2925</span>  private abstract static class BatchOperation&lt;T&gt; {<a name="line.2925"></a>
-<span class="sourceLineNo">2926</span>    protected final T[] operations;<a name="line.2926"></a>
-<span class="sourceLineNo">2927</span>    protected final OperationStatus[] retCodeDetails;<a name="line.2927"></a>
-<span class="sourceLineNo">2928</span>    protected final WALEdit[] walEditsFromCoprocessors;<a name="line.2928"></a>
-<span class="sourceLineNo">2929</span>    // reference family cell maps directly so coprocessors can mutate them if desired<a name="line.2929"></a>
-<span class="sourceLineNo">2930</span>    protected final Map&lt;byte[], List&lt;Cell&gt;&gt;[] familyCellMaps;<a name="line.2930"></a>
-<span class="sourceLineNo">2931</span><a name="line.2931"></a>
-<span class="sourceLineNo">2932</span>    protected final HRegion region;<a name="line.2932"></a>
-<span class="sourceLineNo">2933</span>    protected int nextIndexToProcess = 0;<a name="line.2933"></a>
-<span class="sourceLineNo">2934</span>    protected final ObservedExceptionsInBatch observedExceptions;<a name="line.2934"></a>
-<span class="sourceLineNo">2935</span>    //Durability of the batch (highest durability of all operations)<a name="line.2935"></a>
-<span class="sourceLineNo">2936</span>    protected Durability durability;<a name="line.2936"></a>
-<span class="sourceLineNo">2937</span>    protected boolean atomic = false;<a name="line.2937"></a>
-<span class="sourceLineNo">2938</span><a name="line.2938"></a>
-<span class="sourceLineNo">2939</span>    public BatchOperation(final HRegion region, T[] operations) {<a name="line.2939"></a>
-<span class="sourceLineNo">2940</span>      this.operations = operations;<a name="line.2940"></a>
-<span class="sourceLineNo">2941</span>      this.retCodeDetails = new OperationStatus[operations.length];<a name="line.2941"></a>
-<span class="sourceLineNo">2942</span>      Arrays.fill(this.retCodeDetails, OperationStatus.NOT_RUN);<a name="line.2942"></a>
-<span class="sourceLineNo">2943</span>      this.walEditsFromCoprocessors = new WALEdit[operations.length];<a name="line.2943"></a>
-<span class="sourceLineNo">2944</span>      familyCellMaps = new Map[operations.length];<a name="line.2944"></a>
-<span class="sourceLineNo">2945</span><a name="line.2945"></a>
-<span class="sourceLineNo">2946</span>      this.region = region;<a name="line.2946"></a>
-<span class="sourceLineNo">2947</span>      observedExceptions = new ObservedExceptionsInBatch();<a name="line.2947"></a>
-<span class="sourceLineNo">2948</span>      durability = Durability.USE_DEFAULT;<a name="line.2948"></a>
-<span class="sourceLineNo">2949</span>    }<a name="line.2949"></a>
-<span class="sourceLineNo">2950</span><a name="line.2950"></a>
-<span class="sourceLineNo">2951</span>    /**<a name="line.2951"></a>
-<span class="sourceLineNo">2952</span>     * Visitor interface for batch operations<a name="line.2952"></a>
-<span class="sourceLineNo">2953</span>     */<a name="line.2953"></a>
-<span class="sourceLineNo">2954</span>    @FunctionalInterface<a name="line.2954"></a>
-<span class="sourceLineNo">2955</span>    public interface Visitor {<a name="line.2955"></a>
-<span class="sourceLineNo">2956</span>      /**<a name="line.2956"></a>
-<span class="sourceLineNo">2957</span>       * @param index operation index<a name="line.2957"></a>
-<span class="sourceLineNo">2958</span>       * @return If true continue visiting remaining entries, break otherwise<a name="line.2958"></a>
-<span class="sourceLineNo">2959</span>       */<a name="line.2959"></a>
-<span class="sourceLineNo">2960</span>      boolean visit(int index) throws IOException;<a name="line.2960"></a>
-<span class="sourceLineNo">2961</span>    }<a name="line.2961"></a>
-<span class="sourceLineNo">2962</span><a name="line.2962"></a>
-<span class="sourceLineNo">2963</span>    /**<a name="line.2963"></a>
-<span class="sourceLineNo">2964</span>     * Helper method for visiting pending/ all batch operations<a name="line.2964"></a>
-<span class="sourceLineNo">2965</span>     */<a name="line.2965"></a>
-<span class="sourceLineNo">2966</span>    public void visitBatchOperations(boolean pendingOnly, int lastIndexExclusive, Visitor visitor)<a name="line.2966"></a>
-<span class="sourceLineNo">2967</span>        throws IOException {<a name="line.2967"></a>
-<span class="sourceLineNo">2968</span>      assert lastIndexExclusive &lt;= this.size();<a name="line.2968"></a>
-<span class="sourceLineNo">2969</span>      for (int i = nextIndexToProcess; i &lt; lastIndexExclusive; i++) {<a name="line.2969"></a>
-<span class="sourceLineNo">2970</span>        if (!pendingOnly || isOperationPending(i)) {<a name="line.2970"></a>
-<span class="sourceLineNo">2971</span>          if (!visitor.visit(i)) {<a name="line.2971"></a>
-<span class="sourceLineNo">2972</span>            break;<a name="line.2972"></a>
-<span class="sourceLineNo">2973</span>          }<a name="line.2973"></a>
-<span class="sourceLineNo">2974</span>        }<a name="line.2974"></a>
-<span class="sourceLineNo">2975</span>      }<a name="line.2975"></a>
-<span class="sourceLineNo">2976</span>    }<a name="line.2976"></a>
-<span class="sourceLineNo">2977</span><a name="line.2977"></a>
-<span class="sourceLineNo">2978</span>    public abstract Mutation getMutation(int index);<a name="line.2978"></a>
-<span class="sourceLineNo">2979</span>    public abstract long getNonceGroup(int index);<a name="line.2979"></a>
-<span class="sourceLineNo">2980</span>    public abstract long getNonce(int index);<a name="line.2980"></a>
-<span class="sourceLineNo">2981</span>    /** This method is potentially expensive and useful mostly for non-replay CP path. */<a name="line.2981"></a>
-<span class="sourceLineNo">2982</span>    public abstract Mutation[] getMutationsForCoprocs();<a name="line.2982"></a>
-<span class="sourceLineNo">2983</span>    public abstract boolean isInReplay();<a name="line.2983"></a>
-<span class="sourceLineNo">2984</span>    public abstract long getOrigLogSeqNum();<a name="line.2984"></a>
-<span class="sourceLineNo">2985</span>    public abstract void startRegionOperation() throws IOException;<a name="line.2985"></a>
-<span class="sourceLineNo">2986</span>    public abstract void closeRegionOperation() throws IOException;<a name="line.2986"></a>
-<span class="sourceLineNo">2987</span><a name="line.2987"></a>
-<span class="sourceLineNo">2988</span>    /**<a name="line.2988"></a>
-<span class="sourceLineNo">2989</span>     * Validates each mutation and prepares a batch for write. If necessary (non-replay case), runs<a name="line.2989"></a>
-<span class="sourceLineNo">2990</span>     * CP prePut()/ preDelete() hooks for all mutations in a batch. This is intended to operate on<a name="line.2990"></a>
-<span class="sourceLineNo">2991</span>     * entire batch and will be called from outside of class to check and prepare batch. This can<a name="line.2991"></a>
-<span class="sourceLineNo">2992</span>     * be implemented by calling helper method {@link #checkAndPrepareMutation(int, long)} in a<a name="line.2992"></a>
-<span class="sourceLineNo">2993</span>     * 'for' loop over mutations.<a name="line.2993"></a>
-<span class="sourceLineNo">2994</span>     */<a name="line.2994"></a>
-<span class="sourceLineNo">2995</span>    public abstract void checkAndPrepare() throws IOException;<a name="line.2995"></a>
-<span class="sourceLineNo">2996</span><a name="line.2996"></a>
-<span class="sourceLineNo">2997</span>    /**<a name="line.2997"></a>
-<span class="sourceLineNo">2998</span>     * Implement any Put request specific check and prepare logic here. Please refer to<a name="line.2998"></a>
-<span class="sourceLineNo">2999</span>     * {@link #checkAndPrepareMutation(Mutation, long)} for how its used.<a name="line.2999"></a>
-<span class="sourceLineNo">3000</span>     */<a name="line.3000"></a>
-<span class="sourceLineNo">3001</span>    protected abstract void checkAndPreparePut(final Put p) throws IOException;<a name="line.3001"></a>
-<span class="sourceLineNo">3002</span><a name="line.3002"></a>
-<span class="sourceLineNo">3003</span>    /**<a name="line.3003"></a>
-<span class="sourceLineNo">3004</span>     *  If necessary, calls preBatchMutate() CP hook for a mini-batch and updates metrics, cell<a name="line.3004"></a>
-<span class="sourceLineNo">3005</span>     *  count, tags and timestamp for all cells of all operations in a mini-batch.<a name="line.3005"></a>
-<span class="sourceLineNo">3006</span>     */<a name="line.3006"></a>
-<span class="sourceLineNo">3007</span>    public abstract void prepareMiniBatchOperations(MiniBatchOperationInProgress&lt;Mutation&gt;<a name="line.3007"></a>
-<span class="sourceLineNo">3008</span>        miniBatchOp, long timestamp, final List&lt;RowLock&gt; acquiredRowLocks) throws IOException;<a name="line.3008"></a>
-<span class="sourceLineNo">3009</span><a name="line.3009"></a>
-<span class="sourceLineNo">3010</span>    /**<a name="line.3010"></a>
-<span class="sourceLineNo">3011</span>     * Write mini-batch operations to MemStore<a name="line.3011"></a>
-<span class="sourceLineNo">3012</span>     */<a name="line.3012"></a>
-<span class="sourceLineNo">3013</span>    public abstract WriteEntry writeMiniBatchOperationsToMemStore(<a name="line.3013"></a>
-<span class="sourceLineNo">3014</span>        final MiniBatchOperationInProgress&lt;Mutation&gt; miniBatchOp, final WriteEntry writeEntry)<a name="line.3014"></a>
-<span class="sourceLineNo">3015</span>        throws IOException;<a name="line.3015"></a>
-<span class="sourceLineNo">3016</span><a name="line.3016"></a>
-<span class="sourceLineNo">3017</span>    protected void writeMiniBatchOperationsToMemStore(<a name="line.3017"></a>
-<span class="sourceLineNo">3018</span>        final MiniBatchOperationInProgress&lt;Mutation&gt; miniBatchOp, final long writeNumber)<a name="line.3018"></a>
-<span class="sourceLineNo">3019</span>        throws IOException {<a name="line.3019"></a>
-<span class="sourceLineNo">3020</span>      MemStoreSizing memStoreAccounting = new MemStoreSizing();<a name="line.3020"></a>
-<span class="sourceLineNo">3021</span>      visitBatchOperations(true, miniBatchOp.getLastIndexExclusive(), (int index) -&gt; {<a name="line.3021"></a>
-<span class="sourceLineNo">3022</span>        // We need to update the sequence id for following reasons.<a name="line.3022"></a>
-<span class="sourceLineNo">3023</span>        // 1) If the op is in replay mode, FSWALEntry#stampRegionSequenceId won't stamp sequence id.<a name="line.3023"></a>
-<span class="sourceLineNo">3024</span>        // 2) If no WAL, FSWALEntry won't be used<a name="line.3024"></a>
-<span class="sourceLineNo">3025</span>        // we use durability of the original mutation for the mutation passed by CP.<a name="line.3025"></a>
-<span class="sourceLineNo">3026</span>        if (isInReplay() || getMutation(index).getDurability() == Durability.SKIP_WAL) {<a name="line.3026"></a>
-<span class="sourceLineNo">3027</span>          region.updateSequenceId(familyCellMaps[index].values(), writeNumber);<a name="line.3027"></a>
-<span class="sourceLineNo">3028</span>        }<a name="line.3028"></a>
-<span class="sourceLineNo">3029</span>        applyFamilyMapToMemStore(familyCellMaps[index], memStoreAccounting);<a name="line.3029"></a>
-<span class="sourceLineNo">3030</span>        return true;<a name="line.3030"></a>
-<span class="sourceLineNo">3031</span>      });<a name="line.3031"></a>
-<span class="sourceLineNo">3032</span>      // update memStore size<a name="line.3032"></a>
-<span class="sourceLineNo">3033</span>      region.addAndGetMemStoreSize(memStoreAccounting);<a name="line.3033"></a>
-<span class="sourceLineNo">3034</span>    }<a name="line.3034"></a>
-<span class="sourceLineNo">3035</span><a name="line.3035"></a>
-<span class="sourceLineNo">3036</span>    public boolean isDone() {<a name="line.3036"></a>
-<span class="sourceLineNo">3037</span>      return nextIndexToProcess == operations.length;<a name="line.3037"></a>
-<span class="sourceLineNo">3038</span>    }<a name="line.3038"></a>
-<span class="sourceLineNo">3039</span><a name="line.3039"></a>
-<span class="sourceLineNo">3040</span>    public int size() {<a name="line.3040"></a>
-<span class="sourceLineNo">3041</span>      return operations.length;<a name="line.3041"></a>
-<span class="sourceLineNo">3042</span>    }<a name="line.3042"></a>
-<span class="sourceLineNo">3043</span><a name="line.3043"></a>
-<span class="sourceLineNo">3044</span>    public boolean isOperationPending(int index) {<a name="line.3044"></a>
-<span class="sourceLineNo">3045</span>      return retCodeDetails[index].getOperationStatusCode() == OperationStatusCode.NOT_RUN;<a name="line.3045"></a>
-<span class="sourceLineNo">3046</span>    }<a name="line.3046"></a>
-<span class="sourceLineNo">3047</span><a name="line.3047"></a>
-<span class="sourceLineNo">3048</span>    public List&lt;UUID&gt; getClusterIds() {<a name="line.3048"></a>
-<span class="sourceLineNo">3049</span>      assert size() != 0;<a name="line.3049"></a>
-<span class="sourceLineNo">3050</span>      return getMutation(0).getClusterIds();<a name="line.3050"></a>
-<span class="sourceLineNo">3051</span>    }<a name="line.3051"></a>
-<span class="sourceLineNo">3052</span><a name="line.3052"></a>
-<span class="sourceLineNo">3053</span>    boolean isAtomic() {<a name="line.3053"></a>
-<span class="sourceLineNo">3054</span>      return atomic;<a name="line.3054"></a>
-<span class="sourceLineNo">3055</span>    }<a name="line.3055"></a>
-<span class="sourceLineNo">3056</span><a name="line.3056"></a>
-<span class="sourceLineNo">3057</span>    /**<a name="line.3057"></a>
-<span class="sourceLineNo">3058</span>     * Helper method that checks and prepares only one mutation. This can be used to implement<a name="line.3058"></a>
-<span class="sourceLineNo">3059</span>     * {@link #checkAndPrepare()} for entire Batch.<a name="line.3059"></a>
-<span class="sourceLineNo">3060</span>     * NOTE: As CP prePut()/ preDelete() hooks may modify mutations, this method should be called<a name="line.3060"></a>
-<span class="sourceLineNo">3061</span>     * after prePut()/ preDelete() CP hooks are run for the mutation<a name="line.3061"></a>
-<span class="sourceLineNo">3062</span>     */<a name="line.3062"></a>
-<span class="sourceLineNo">3063</span>    protected void checkAndPrepareMutation(Mutation mutation, final long timestamp)<a name="line.3063"></a>
-<span class="sourceLineNo">3064</span>        throws IOException {<a name="line.3064"></a>
-<span class="sourceLineNo">3065</span>      region.checkRow(mutation.getRow(), "batchMutate");<a name="line.3065"></a>
-<span class="sourceLineNo">3066</span>      if (mutation instanceof Put) {<a name="line.3066"></a>
-<span class="sourceLineNo">3067</span>        // Check the families in the put. If bad, skip this one.<a name="line.3067"></a>
-<span class="sourceLineNo">3068</span>        checkAndPreparePut((Put) mutation);<a name="line.3068"></a>
-<span class="sourceLineNo">3069</span>        region.checkTimestamps(mutation.getFamilyCellMap(), timestamp);<a name="line.3069"></a>
-<span class="sourceLineNo">3070</span>      } else {<a name="line.3070"></a>
-<span class="sourceLineNo">3071</span>        region.prepareDelete((Delete) mutation);<a name="line.3071"></a>
-<span class="sourceLineNo">3072</span>      }<a name="line.3072"></a>
-<span class="sourceLineNo">3073</span>    }<a name="line.3073"></a>
-<span class="sourceLineNo">3074</span><a name="line.3074"></a>
-<span class="sourceLineNo">3075</span>    protected void checkAndPrepareMutation(int index, long timestamp) throws IOException {<a name="line.3075"></a>
-<span class="sourceLineNo">3076</span>      Mutation mutation = getMutation(index);<a name="line.3076"></a>
-<span class="sourceLineNo">3077</span>      try {<a name="line.3077"></a>
-<span class="sourceLineNo">3078</span>        this.checkAndPrepareMutation(mutation, timestamp);<a name="line.3078"></a>
-<span class="sourceLineNo">3079</span><a name="line.3079"></a>
-<span class="sourceLineNo">3080</span>        // store the family map reference to allow for mutations<a name="line.3080"></a>
-<span class="sourceLineNo">3081</span>        familyCellMaps[index] = mutation.getFamilyCellMap();<a name="line.3081"></a>
-<span class="sourceLineNo">3082</span>        // store durability for the batch (highest durability of all operations in the batch)<a name="line.3082"></a>
-<span class="sourceLineNo">3083</span>        Durability tmpDur = region.getEffectiveDurability(mutation.getDurability());<a name="line.3083"></a>
-<span class="sourceLineNo">3084</span>        if (tmpDur.ordinal() &gt; durability.ordinal()) {<a name="line.3084"></a>
-<span class="sourceLineNo">3085</span>          durability = tmpDur;<a name="line.3085"></a>
-<span class="sourceLineNo">3086</span>        }<a name="line.3086"></a>
-<span class="sourceLineNo">3087</span>      } catch (NoSuchColumnFamilyException nscfe) {<a name="line.3087"></a>
-<span class="sourceLineNo">3088</span>        final String msg = "No such column family in batch mutation. ";<a name="line.3088"></a>
-<span class="sourceLineNo">3089</span>        if (observedExceptions.hasSeenNoSuchFamily()) {<a name="line.3089"></a>
-<span class="sourceLineNo">3090</span>          LOG.warn(msg + nscfe.getMessage());<a name="line.3090"></a>
-<span class="sourceLineNo">3091</span>        } else {<a name="line.3091"></a>
-<span class="sourceLineNo">3092</span>          LOG.warn(msg, nscfe);<a name="line.3092"></a>
-<span class="sourceLineNo">3093</span>          observedExceptions.sawNoSuchFamily();<a name="line.3093"></a>
-<span class="sourceLineNo">3094</span>        }<a name="line.3094"></a>
-<span class="sourceLineNo">3095</span>        retCodeDetails[index] = new OperationStatus(<a name="line.3095"></a>
-<span class="sourceLineNo">3096</span>            OperationStatusCode.BAD_FAMILY, nscfe.getMessage());<a name="line.3096"></a>
-<span class="sourceLineNo">3097</span>        if (isAtomic()) { // fail, atomic means all or none<a name="line.3097"></a>
-<span class="sourceLineNo">3098</span>          throw nscfe;<a name="line.3098"></a>
-<span class="sourceLineNo">3099</span>        }<a name="line.3099"></a>
-<span class="sourceLineNo">3100</span>      } catch (FailedSanityCheckException fsce) {<a name="line.3100"></a>
-<span class="sourceLineNo">3101</span>        final String msg = "Batch Mutation did not pass sanity check. ";<a name="line.3101"></a>
-<span class="sourceLineNo">3102</span>        if (observedExceptions.hasSeenFailedSanityCheck()) {<a name="line.3102"></a>
-<span class="sourceLineNo">3103</span>          LOG.warn(msg + fsce.getMessage());<a name="line.3103"></a>
-<span class="sourceLineNo">3104</span>        } else {<a name="line.3104"></a>
-<span class="sourceLineNo">3105</span>          LOG.warn(msg, fsce);<a name="line.3105"></a>
-<span class="sourceLineNo">3106</span>          observedExceptions.sawFailedSanityCheck();<a name="line.3106"></a>
-<span class="sourceLineNo">3107</span>        }<a name="line.3107"></a>
-<span class="sourceLineNo">3108</span>        retCodeDetails[index] = new OperationStatus(<a name="line.3108"></a>
-<span class="sourceLineNo">3109</span>            OperationStatusCode.SANITY_CHECK_FAILURE, fsce.getMessage());<a name="line.3109"></a>
-<span class="sourceLineNo">3110</span>        if (isAtomic()) {<a name="line.3110"></a>
-<span class="sourceLineNo">3111</span>          throw fsce;<a name="line.3111"></a>
-<span class="sourceLineNo">3112</span>        }<a name="line.3112"></a>
-<span class="sourceLineNo">3113</span>      } catch (WrongRegionException we) {<a name="line.3113"></a>
-<span class="sourceLineNo">3114</span>        final String msg = "Batch mutation had a row that does not belong to this region. ";<a name="line.3114"></a>
-<span class="sourceLineNo">3115</span>        if (observedExceptions.hasSeenWrongRegion()) {<a name="line.3115"></a>
-<span class="sourceLineNo">3116</span>          LOG.warn(msg + we.getMessage());<a name="line.3116"></a>
-<span class="sourceLineNo">3117</span>        } else {<a name="line.3117"></a>
-<span class="sourceLineNo">3118</span>          LOG.warn(msg, we);<a name="line.3118"></a>
-<span class="sourceLineNo">3119</span>          observedExceptions.sawWrongRegion();<a name="line.3119"></a>
-<span class="sourceLineNo">3120</span>        }<a name="line.3120"></a>
-<span class="sourceLineNo">3121</span>        retCodeDetails[index] = new OperationStatus(<a name="line.3121"></a>
-<span class="sourceLineNo">3122</span>            OperationStatusCode.SANITY_CHECK_FAILURE, we.getMessage());<a name="line.3122"></a>
-<span class="sourceLineNo">3123</span>        if (isAtomic()) {<a name="line.3123"></a>
-<span class="sourceLineNo">3124</span>          throw we;<a name="line.3124"></a>
-<span class="sourceLineNo">3125</span>        }<a name="line.3125"></a>
-<span class="sourceLineNo">3126</span>      }<a name="line.3126"></a>
-<span class="sourceLineNo">3127</span>    }<a name="line.3127"></a>
-<span class="sourceLineNo">3128</span><a name="line.3128"></a>
-<span class="sourceLineNo">3129</span>    /**<a name="line.3129"></a>
-<span class="sourceLineNo">3130</span>     * Creates Mini-batch of all operations [nextIndexToProcess, lastIndexExclusive) for which<a name="line.3130"></a>
-<span class="sourceLineNo">3131</span>     * a row lock can be acquired. All mutations with locked rows are considered to be<a name="line.3131"></a>
-<span class="sourceLineNo">3132</span>     * In-progress operations and hence the name {@link MiniBatchOperationInProgress}. Mini batch<a name="line.3132"></a>
-<span class="sourceLineNo">3133</span>     * is window over {@link BatchOperation} and contains contiguous pending operations.<a name="line.3133"></a>
-<span class="sourceLineNo">3134</span>     *<a name="line.3134"></a>
-<span class="sourceLineNo">3135</span>     * @param acquiredRowLocks keeps track of rowLocks acquired.<a name="line.3135"></a>
-<span class="sourceLineNo">3136</span>     */<a name="line.3136"></a>
-<span class="sourceLineNo">3137</span>    public MiniBatchOperationInProgress&lt;Mutation&gt; lockRowsAndBuildMiniBatch(<a name="line.3137"></a>
-<span class="sourceLineNo">3138</span>        List&lt;RowLock&gt; acquiredRowLocks) throws IOException {<a name="line.3138"></a>
-<span class="sourceLineNo">3139</span>      int readyToWriteCount = 0;<a name="line.3139"></a>
-<span class="sourceLineNo">3140</span>      int lastIndexExclusive = 0;<a name="line.3140"></a>
-<span class="sourceLineNo">3141</span>      for (; lastIndexExclusive &lt; size(); lastIndexExclusive++) {<a name="line.3141"></a>
-<span class="sourceLineNo">3142</span>        if (!isOperationPending(lastIndexExclusive)) {<a name="line.3142"></a>
-<span class="sourceLineNo">3143</span>          continue;<a name="line.3143"></a>
-<span class="sourceLineNo">3144</span>        }<a name="line.3144"></a>
-<span class="sourceLineNo">3145</span>        Mutation mutation = getMutation(lastIndexExclusive);<a name="line.3145"></a>
-<span class="sourceLineNo">3146</span>        // If we haven't got any rows in our batch, we should block to get the next one.<a name="line.3146"></a>
-<span class="sourceLineNo">3147</span>        RowLock rowLock = null;<a name="line.3147"></a>
-<span class="sourceLineNo">3148</span>        try {<a name="line.3148"></a>
-<span class="sourceLineNo">3149</span>          // if atomic then get exclusive lock, else shared lock<a name="line.3149"></a>
-<span class="sourceLineNo">3150</span>          rowLock = region.getRowLockInternal(mutation.getRow(), !isAtomic());<a name="line.3150"></a>
-<span class="sourceLineNo">3151</span>        } catch (TimeoutIOException e) {<a name="line.3151"></a>
-<span class="sourceLineNo">3152</span>          // We will retry when other exceptions, but we should stop if we timeout .<a name="line.3152"></a>
-<span class="sourceLineNo">3153</span>          throw e;<a name="line.3153"></a>
-<span class="sourceLineNo">3154</span>        } catch (IOException ioe) {<a name="line.3154"></a>
-<span class="sourceLineNo">3155</span>          LOG.warn("Failed getting lock, row=" + Bytes.toStringBinary(mutation.getRow()), ioe);<a name="line.3155"></a>
-<span class="sourceLineNo">3156</span>          if (isAtomic()) { // fail, atomic means all or none<a name="line.3156"></a>
-<span class="sourceLineNo">3157</span>            throw ioe;<a name="line.3157"></a>
-<span class="sourceLineNo">3158</span>          }<a name="line.3158"></a>
-<span class="sourceLineNo">3159</span>        }<a name="line.3159"></a>
-<span class="sourceLineNo">3160</span>        if (rowLock == null) {<a name="line.3160"></a>
-<span class="sourceLineNo">3161</span>          // We failed to grab another lock<a name="line.3161"></a>
-<span class="sourceLineNo">3162</span>          if (isAtomic()) {<a name="line.3162"></a>
-<span class="sourceLineNo">3163</span>            throw new IOException("Can't apply all operations atomically!");<a name="line.3163"></a>
-<span class="sourceLineNo">3164</span>          }<a name="line.3164"></a>
-<span class="sourceLineNo">3165</span>          break; // Stop acquiring more rows for this batch<a name="line.3165"></a>
-<span class="sourceLineNo">3166</span>        } else {<a name="line.3166"></a>
-<span class="sourceLineNo">3167</span>          acquiredRowLocks.add(rowLock);<a name="line.3167"></a>
-<span class="sourceLineNo">3168</span>        }<a name="line.3168"></a>
-<span class="sourceLineNo">3169</span>        readyToWriteCount++;<a name="line.3169"></a>
-<span class="sourceLineNo">3170</span>      }<a name="line.3170"></a>
-<span class="sourceLineNo">3171</span>      return createMiniBatch(lastIndexExclusive, readyToWriteCount);<a name="line.3171"></a>
-<span class="sourceLineNo">3172</span>    }<a name="line.3172"></a>
-<span class="sourceLineNo">3173</span><a name="line.3173"></a>
-<span class="sourceLineNo">3174</span>    protected MiniBatchOperationInProgress&lt;Mutation&gt; createMiniBatch(final int lastIndexExclusive,<a name="line.3174"></a>
-<span class="sourceLineNo">3175</span>        final int readyToWriteCount) {<a name="line.3175"></a>
-<span class="sourceLineNo">3176</span>      return new MiniBatchOperationInProgress&lt;&gt;(getMutationsForCoprocs(), retCodeDetails,<a name="line.3176"></a>
-<span class="sourceLineNo">3177</span>          walEditsFromCoprocessors, nextIndexToProcess, lastIndexExclusive, readyToWriteCount);<a name="line.3177"></a>
-<span class="sourceLineNo">3178</span>    }<a name="line.3178"></a>
-<span class="sourceLineNo">3179</span><a name="line.3179"></a>
-<span class="sourceLineNo">3180</span>    /**<a name="line.3180"></a>
-<span class="sourceLineNo">3181</span>     * Builds separate WALEdit per nonce by applying input mutations. If WALEdits from CP are<a name="line.3181"></a>
-<span class="sourceLineNo">3182</span>     * present, they are merged to result WALEdit.<a name="line.3182"></a>
-<span class="sourceLineNo">3183</span>     */<a name="line.3183"></a>
-<span class="sourceLineNo">3184</span>    public List&lt;Pair&lt;NonceKey, WALEdit&gt;&gt; buildWALEdits(<a name="line.3184"></a>
-<span class="sourceLineNo">3185</span>        final MiniBatchOperationInProgress&lt;Mutation&gt; miniBatchOp) throws IOException {<a name="line.3185"></a>
-<span class="sourceLineNo">3186</span>      List&lt;Pair&lt;NonceKey, WALEdit&gt;&gt; walEdits = new ArrayList&lt;&gt;();<a name="line.3186"></a>
-<span class="sourceLineNo">3187</span><a name="line.3187"></a>
-<span class="sourceLineNo">3188</span>      visitBatchOperations(true, nextIndexToProcess + miniBatchOp.size(), new Visitor() {<a name="line.3188"></a>
-<span class="sourceLineNo">3189</span>        private Pair&lt;NonceKey, WALEdit&gt; curWALEditForNonce;<a name="line.3189"></a>
-<span class="sourceLineNo">3190</span>        @Override<a name="line.3190"></a>
-<span class="sourceLineNo">3191</span>        public boolean visit(int index) throws IOException {<a name="line.3191"></a>
-<span class="sourceLineNo">3192</span>          Mutation m = getMutation(index);<a name="line.3192"></a>
-<span class="sourceLineNo">3193</span>          // we use durability of the original mutation for the mutation passed by CP.<a name="line.3193"></a>
-<span class="sourceLineNo">3194</span>          if (region.getEffectiveDurability(m.getDurability()) == Durability.SKIP_WAL) {<a name="line.3194"></a>
-<span class="sourceLineNo">3195</span>            region.recordMutationWithoutWal(m.getFamilyCellMap());<a name="line.3195"></a>
-<span class="sourceLineNo">3196</span>            return true;<a name="line.3196"></a>
-<span class="sourceLineNo">3197</span>          }<a name="line.3197"></a>
-<span class="sourceLineNo">3198</span><a name="line.3198"></a>
-<span class="sourceLineNo">3199</span>          // the batch may contain multiple nonce keys (replay case). If so, write WALEdit for each.<a name="line.3199"></a>
-<span class="sourceLineNo">3200</span>          // Given how nonce keys are originally written, these should be contiguous.<a name="line.3200"></a>
-<span class="sourceLineNo">3201</span>          // They don't have to be, it will still work, just write more WALEdits than needed.<a name="line.3201"></a>
-<span class="sourceLineNo">3202</span>          long nonceGroup = getNonceGroup(index);<a name="line.3202"></a>
-<span class="sourceLineNo">3203</span>          long nonce = getNonce(index);<a name="line.3203"></a>
-<span class="sourceLineNo">3204</span>          if (curWALEditForNonce == null ||<a name="line.3204"></a>
-<span class="sourceLineNo">3205</span>              curWALEditForNonce.getFirst().getNonceGroup() != nonceGroup ||<a name="line.3205"></a>
-<span class="sourceLineNo">3206</span>              curWALEditForNonce.getFirst().getNonce() != nonce) {<a name="line.3206"></a>
-<span class="sourceLineNo">3207</span>            curWALEditForNonce = new Pair&lt;&gt;(new NonceKey(nonceGroup, nonce),<a name="line.3207"></a>
-<span class="sourceLineNo">3208</span>                new WALEdit(miniBatchOp.getCellCount(), isInReplay()));<a name="line.3208"></a>
-<span class="sourceLineNo">3209</span>            walEdits.add(curWALEditForNonce);<a name="line.3209"></a>
-<span class="sourceLineNo">3210</span>          }<a name="line.3210"></a>
-<span class="sourceLineNo">3211</span>          WALEdit walEdit = curWALEditForNonce.getSecond();<a name="line.3211"></a>
-<span class="sourceLineNo">3212</span><a name="line.3212"></a>
-<span class="sourceLineNo">3213</span>          // Add WAL edits by CP<a name="line.3213"></a>
-<span class="sourceLineNo">3214</span>          WALEdit fromCP = walEditsFromCoprocessors[index];<a name="line.3214"></a>
-<span class="sourceLineNo">3215</span>          if (fromCP != null) {<a name="line.3215"></a>
-<span class="sourceLineNo">3216</span>            for (Cell cell : fromCP.getCells()) {<a name="line.3216"></a>
-<span class="sourceLineNo">3217</span>              walEdit.add(cell);<a name="line.3217"></a>
-<span class="sourceLineNo">3218</span>            }<a name="line.3218"></a>
-<span class="sourceLineNo">3219</span>          }<a name="line.3219"></a>
-<span class="sourceLineNo">3220</span>          addFamilyMapToWALEdit(familyCellMaps[index], walEdit);<a name="line.3220"></a>
-<span class="sourceLineNo">3221</span><a name="line.3221"></a>
-<span class="sourceLineNo">3222</span>          return true;<a name="line.3222"></a>
-<span class="sourceLineNo">3223</span>        }<a name="line.3223"></a>
-<span class="sourceLineNo">3224</span>      });<a name="line.3224"></a>
-<span class="sourceLineNo">3225</span>      return walEdits;<a name="line.3225"></a>
-<span class="sourceLineNo">3226</span>    }<a name="line.3226"></a>
-<span class="sourceLineNo">3227</span><a name="line.3227"></a>
-<span class="sourceLineNo">3228</span>    /**<a name="line.3228"></a>
-<span class="sourceLineNo">3229</span>     * This method completes mini-batch operations by calling postBatchMutate() CP hook (if<a name="line.3229"></a>
-<span class="sourceLineNo">3230</span>     * required) and completing mvcc.<a name="line.3230"></a>
-<span class="sourceLineNo">3231</span>     */<a name="line.3231"></a>
-<span class="sourceLineNo">3232</span>    public void completeMiniBatchOperations(<a name="line.3232"></a>
-<span class="sourceLineNo">3233</span>        final MiniBatchOperationInProgress&lt;Mutation&gt; miniBatchOp, final WriteEntry writeEntry)<a name="line.3233"></a>
-<span class="sourceLineNo">3234</span>        throws IOException {<a name="line.3234"></a>
-<span class="sourceLineNo">3235</span>      if (writeEntry != null) {<a name="line.3235"></a>
-<span class="sourceLineNo">3236</span>        region.mvcc.completeAndWait(writeEntry);<a name="line.3236"></a>
-<span class="sourceLineNo">3237</span>      }<a name="line.3237"></a>
-<span class="sourceLineNo">3238</span>    }<a name="line.3238"></a>
-<span class="sourceLineNo">3239</span><a name="line.3239"></a>
-<span class="sourceLineNo">3240</span>    public void doPostOpCleanupForMiniBatch(<a name="line.3240"></a>
-<span class="sourceLineNo">3241</span>        final MiniBatchOperationInProgress&lt;Mutation&gt; miniBatchOp, final WALEdit walEdit,<a name="line.3241"></a>
-<span class="sourceLineNo">3242</span>        boolean success) throws IOException {}<a name="line.3242"></a>
-<span class="sourceLineNo">3243</span><a name="line.3243"></a>
-<span class="sourceLineNo">3244</span>    /**<a name="line.3244"></a>
-<span class="sourceLineNo">3245</span>     * Atomically apply the given map of family-&gt;edits to the memstore.<a name="line.3245"></a>
-<span class="sourceLineNo">3246</span>     * This handles the consistency control on its own, but the caller<a name="line.3246"></a>
-<span class="sourceLineNo">3247</span>     * should already have locked updatesLock.readLock(). This also does<a name="line.3247"></a>
-<span class="sourceLineNo">3248</span>     * &lt;b&gt;not&lt;/b&gt; check the families for validity.<a name="line.3248"></a>
-<span class="sourceLineNo">3249</span>     *<a name="line.3249"></a>
-<span class="sourceLineNo">3250</span>     * @param familyMap Map of Cells by family<a name="line.3250"></a>
-<span class="sourceLineNo">3251</span>     */<a name="line.3251"></a>
-<span class="sourceLineNo">3252</span>    protected void applyFamilyMapToMemStore(Map&lt;byte[], List&lt;Cell&gt;&gt; familyMap,<a name="line.3252"></a>
-<span class="sourceLineNo">3253</span>        MemStoreSizing memstoreAccounting) throws IOException {<a name="line.3253"></a>
-<span class="sourceLineNo">3254</span>      for (Map.Entry&lt;byte[], List&lt;Cell&gt;&gt; e : familyMap.entrySet()) {<a name="line.3254"></a>
-<span class="sourceLineNo">3255</span>        byte[] family = e.getKey();<a name="line.3255"></a>
-<span class="sourceLineNo">3256</span>        List&lt;Cell&gt; cells = e.getValue();<a name="line.3256"></a>
-<span class="sourceLineNo">3257</span>        assert cells instanceof RandomAccess;<a name="line.3257"></a>
-<span class="sourceLineNo">3258</span>        region.applyToMemStore(region.getStore(family), cells, false, memstoreAccounting);<a name="line.3258"></a>
-<span class="sourceLineNo">3259</span>      }<a name="line.3259"></a>
-<span class="sourceLineNo">3260</span>    }<a name="line.3260"></a>
-<span class="sourceLineNo">3261</span><a name="line.3261"></a>
-<span class="sourceLineNo">3262</span>    /**<a name="line.3262"></a>
-<span class="sourceLineNo">3263</span>     * Append the given map of family-&gt;edits to a WALEdit data structure.<a name="line.3263"></a>
-<span class="sourceLineNo">3264</span>     * This does not write to the WAL itself.<a name="line.3264"></a>
-<span class="sourceLineNo">3265</span>     * @param familyMap map of family-&gt;edits<a name="line.3265"></a>
-<span class="sourceLineNo">3266</span>     * @param walEdit the destination entry to append into<a name="line.3266"></a>
-<span class="sourceLineNo">3267</span>     */<a name="line.3267"></a>
-<span class="sourceLineNo">3268</span>    private void addFamilyMapToWALEdit(Map&lt;byte[], List&lt;Cell&gt;&gt; familyMap,<a name="line.3268"></a>
-<span class="sourceLineNo">3269</span>        WALEdit walEdit) {<a name="line.3269"></a>
-<span class="sourceLineNo">3270</span>      for (List&lt;Cell&gt; edits : familyMap.values()) {<a name="line.3270"></a>
-<span class="sourceLineNo">3271</span>        // Optimization: 'foreach' loop is not used. See:<a name="line.3271"></a>
-<span class="sourceLineNo">3272</span>        // HBASE-12023 HRegion.applyFamilyMapToMemstore creates too many iterator objects<a name="line.3272"></a>
-<span class="sourceLineNo">3273</span>        assert edits instanceof RandomAccess;<a name="line.3273"></a>
-<span class="sourceLineNo">3274</span>        int listSize = edits.size();<a name="line.3274"></a>
-<span class="sourceLineNo">3275</span>        for (int i=0; i &lt; listSize; i++) {<a name="line.3275"></a>
-<span class="sourceLineNo">3276</span>          Cell cell = edits.get(i);<a name="line.3276"></a>
-<span class="sourceLineNo">3277</span>          walEdit.add(cell);<a name="line.3277"></a>
-<span class="sourceLineNo">3278</span>        }<a name="line.3278"></a>
-<span class="sourceLineNo">3279</span>      }<a name="line.3279"></a>
-<span class="sourceLineNo">3280</span>    }<a name="line.3280"></a>
-<span class="sourceLineNo">3281</span>  }<a name="line.3281"></a>
-<span class="sourceLineNo">3282</span><a name="line.3282"></a>
-<span class="sourceLineNo">3283</span>  /**<a name="line.3283"></a>
-<span class="sourceLineNo">3284</span>   * Batch of mutation operations. Base class is shared with {@link ReplayBatchOperation} as most<a name="line.3284"></a>
-<span class="sourceLineNo">3285</span>   * of the logic is same.<a name="line.3285"></a>
-<span class="sourceLineNo">3286</span>   */<a name="line.3286"></a>
-<span class="sourceLineNo">3287</span>  static class MutationBatchOperation extends BatchOperation&lt;Mutation&gt; {<a name="line.3287"></a>
-<span class="sourceLineNo">3288</span>    private long nonceGroup;<a name="line.3288"></a>
-<span class="sourceLineNo">3289</span>    private long nonce;<a name="line.3289"></a>
-<span class="sourceLineNo">3290</span>    public MutationBatchOperation(final HRegion region, Mutation[] operations, boolean atomic,<a name="line.3290"></a>
-<span class="sourceLineNo">3291</span>        long nonceGroup, long nonce) {<a name="line.3291"></a>
-<span class="sourceLineNo">3292</span>      super(region, operations);<a name="line.3292"></a>
-<span class="sourceLineNo">3293</span>      this.atomic = atomic;<a name="line.3293"></a>
-<span class="sourceLineNo">3294</span>      this.nonceGroup = nonceGroup;<a name="line.3294"></a>
-<span class="sourceLineNo">3295</span>      this.nonce = nonce;<a name="line.3295"></a>
-<span class="sourceLineNo">3296</span>    }<a name="line.3296"></a>
-<span class="sourceLineNo">3297</span><a name="line.3297"></a>
-<span class="sourceLineNo">3298</span>    @Override<a name="line.3298"></a>
-<span class="sourceLineNo">3299</span>    public Mutation getMutation(int index) {<a name="line.3299"></a>
-<span class="sourceLineNo">3300</span>      return this.operations[index];<a name="line.3300"></a>
-<span class="sourceLineNo">3301</span>    }<a name="line.3301"></a>
-<span class="sourceLineNo">3302</span><a name="line.3302"></a>
-<span class="sourceLineNo">3303</span>    @Override<a name="line.3303"></a>
-<span class="sourceLineNo">3304</span>    public long getNonceGroup(int index) {<a name="line.3304"></a>
-<span class="sourceLineNo">3305</span>      return nonceGroup;<a name="line.3305"></a>
-<span class="sourceLineNo">3306</span>    }<a name="line.3306"></a>
-<span class="sourceLineNo">3307</

<TRUNCATED>

[45/51] [partial] hbase-site git commit: Published site at .

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/c54c242b/devapidocs/org/apache/hadoop/hbase/client/class-use/RegionInfo.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/client/class-use/RegionInfo.html b/devapidocs/org/apache/hadoop/hbase/client/class-use/RegionInfo.html
index e9b93ad..6b003aa 100644
--- a/devapidocs/org/apache/hadoop/hbase/client/class-use/RegionInfo.html
+++ b/devapidocs/org/apache/hadoop/hbase/client/class-use/RegionInfo.html
@@ -5431,6 +5431,14 @@ Input/OutputFormats, a table indexing MapReduce job, and utility methods.</div>
                                      com.lmax.disruptor.RingBuffer&lt;<a href="../../../../../../org/apache/hadoop/hbase/regionserver/wal/RingBufferTruck.html" title="class in org.apache.hadoop.hbase.regionserver.wal">RingBufferTruck</a>&gt;&nbsp;ringBuffer)</code>&nbsp;</td>
 </tr>
 <tr class="rowColor">
+<td class="colFirst"><code>default void</code></td>
+<td class="colLast"><span class="typeNameLabel">WALActionsListener.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/regionserver/wal/WALActionsListener.html#visitLogEntryBeforeWrite-org.apache.hadoop.hbase.client.RegionInfo-org.apache.hadoop.hbase.wal.WALKey-org.apache.hadoop.hbase.wal.WALEdit-">visitLogEntryBeforeWrite</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/client/RegionInfo.html" title="interface in org.apache.hadoop.hbase.client">RegionInfo</a>&nbsp;info,
+                        <a href="../../../../../../org/apache/hadoop/hbase/wal/WALKey.html" title="class in org.apache.hadoop.hbase.wal">WALKey</a>&nbsp;logKey,
+                        <a href="../../../../../../org/apache/hadoop/hbase/wal/WALEdit.html" title="class in org.apache.hadoop.hbase.wal">WALEdit</a>&nbsp;logEdit)</code>
+<div class="block">Called before each write.</div>
+</td>
+</tr>
+<tr class="altColor">
 <td class="colFirst"><code>static <a href="../../../../../../org/apache/hadoop/hbase/wal/WALKey.html" title="class in org.apache.hadoop.hbase.wal">WALKey</a></code></td>
 <td class="colLast"><span class="typeNameLabel">WALUtil.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/regionserver/wal/WALUtil.html#writeBulkLoadMarkerAndSync-org.apache.hadoop.hbase.wal.WAL-java.util.NavigableMap-org.apache.hadoop.hbase.client.RegionInfo-org.apache.hadoop.hbase.shaded.protobuf.generated.WALProtos.BulkLoadDescriptor-org.apache.hadoop.hbase.regionserver.MultiVersionConcurrencyControl-">writeBulkLoadMarkerAndSync</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/wal/WAL.html" title="interface in org.apache.hadoop.hbase.wal">WAL</a>&nbsp;wal,
                           <a href="http://docs.oracle.com/javase/8/docs/api/java/util/NavigableMap.html?is-external=true" title="class or interface in java.util">NavigableMap</a>&lt;byte[],<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Integer.html?is-external=true" title="class or interface in java.lang">Integer</a>&gt;&nbsp;replicationScope,
@@ -5440,7 +5448,7 @@ Input/OutputFormats, a table indexing MapReduce job, and utility methods.</div>
 <div class="block">Write a log marker that a bulk load has succeeded and is about to be committed.</div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>static <a href="../../../../../../org/apache/hadoop/hbase/wal/WALKey.html" title="class in org.apache.hadoop.hbase.wal">WALKey</a></code></td>
 <td class="colLast"><span class="typeNameLabel">WALUtil.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/regionserver/wal/WALUtil.html#writeCompactionMarker-org.apache.hadoop.hbase.wal.WAL-java.util.NavigableMap-org.apache.hadoop.hbase.client.RegionInfo-org.apache.hadoop.hbase.shaded.protobuf.generated.WALProtos.CompactionDescriptor-org.apache.hadoop.hbase.regionserver.MultiVersionConcurrencyControl-">writeCompactionMarker</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/wal/WAL.html" title="interface in org.apache.hadoop.hbase.wal">WAL</a>&nbsp;wal,
                      <a href="http://docs.oracle.com/javase/8/docs/api/java/util/NavigableMap.html?is-external=true" title="class or interface in java.util">NavigableMap</a>&lt;byte[],<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Integer.html?is-external=true" title="class or interface in java.lang">Integer</a>&gt;&nbsp;replicationScope,
@@ -5450,7 +5458,7 @@ Input/OutputFormats, a table indexing MapReduce job, and utility methods.</div>
 <div class="block">Write the marker that a compaction has succeeded and is about to be committed.</div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>static <a href="../../../../../../org/apache/hadoop/hbase/wal/WALKey.html" title="class in org.apache.hadoop.hbase.wal">WALKey</a></code></td>
 <td class="colLast"><span class="typeNameLabel">WALUtil.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/regionserver/wal/WALUtil.html#writeFlushMarker-org.apache.hadoop.hbase.wal.WAL-java.util.NavigableMap-org.apache.hadoop.hbase.client.RegionInfo-org.apache.hadoop.hbase.shaded.protobuf.generated.WALProtos.FlushDescriptor-boolean-org.apache.hadoop.hbase.regionserver.MultiVersionConcurrencyControl-">writeFlushMarker</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/wal/WAL.html" title="interface in org.apache.hadoop.hbase.wal">WAL</a>&nbsp;wal,
                 <a href="http://docs.oracle.com/javase/8/docs/api/java/util/NavigableMap.html?is-external=true" title="class or interface in java.util">NavigableMap</a>&lt;byte[],<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Integer.html?is-external=true" title="class or interface in java.lang">Integer</a>&gt;&nbsp;replicationScope,
@@ -5461,7 +5469,7 @@ Input/OutputFormats, a table indexing MapReduce job, and utility methods.</div>
 <div class="block">Write a flush marker indicating a start / abort or a complete of a region flush</div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>private static <a href="../../../../../../org/apache/hadoop/hbase/wal/WALKey.html" title="class in org.apache.hadoop.hbase.wal">WALKey</a></code></td>
 <td class="colLast"><span class="typeNameLabel">WALUtil.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/regionserver/wal/WALUtil.html#writeMarker-org.apache.hadoop.hbase.wal.WAL-java.util.NavigableMap-org.apache.hadoop.hbase.client.RegionInfo-org.apache.hadoop.hbase.wal.WALEdit-org.apache.hadoop.hbase.regionserver.MultiVersionConcurrencyControl-">writeMarker</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/wal/WAL.html" title="interface in org.apache.hadoop.hbase.wal">WAL</a>&nbsp;wal,
            <a href="http://docs.oracle.com/javase/8/docs/api/java/util/NavigableMap.html?is-external=true" title="class or interface in java.util">NavigableMap</a>&lt;byte[],<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Integer.html?is-external=true" title="class or interface in java.lang">Integer</a>&gt;&nbsp;replicationScope,
@@ -5469,7 +5477,7 @@ Input/OutputFormats, a table indexing MapReduce job, and utility methods.</div>
            <a href="../../../../../../org/apache/hadoop/hbase/wal/WALEdit.html" title="class in org.apache.hadoop.hbase.wal">WALEdit</a>&nbsp;edit,
            <a href="../../../../../../org/apache/hadoop/hbase/regionserver/MultiVersionConcurrencyControl.html" title="class in org.apache.hadoop.hbase.regionserver">MultiVersionConcurrencyControl</a>&nbsp;mvcc)</code>&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>static <a href="../../../../../../org/apache/hadoop/hbase/wal/WALKey.html" title="class in org.apache.hadoop.hbase.wal">WALKey</a></code></td>
 <td class="colLast"><span class="typeNameLabel">WALUtil.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/regionserver/wal/WALUtil.html#writeRegionEventMarker-org.apache.hadoop.hbase.wal.WAL-java.util.NavigableMap-org.apache.hadoop.hbase.client.RegionInfo-org.apache.hadoop.hbase.shaded.protobuf.generated.WALProtos.RegionEventDescriptor-org.apache.hadoop.hbase.regionserver.MultiVersionConcurrencyControl-">writeRegionEventMarker</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/wal/WAL.html" title="interface in org.apache.hadoop.hbase.wal">WAL</a>&nbsp;wal,
                       <a href="http://docs.oracle.com/javase/8/docs/api/java/util/NavigableMap.html?is-external=true" title="class or interface in java.util">NavigableMap</a>&lt;byte[],<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Integer.html?is-external=true" title="class or interface in java.lang">Integer</a>&gt;&nbsp;replicationScope,

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/c54c242b/devapidocs/org/apache/hadoop/hbase/client/class-use/ZKAsyncRegistry.Converter.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/client/class-use/ZKAsyncRegistry.Converter.html b/devapidocs/org/apache/hadoop/hbase/client/class-use/ZKAsyncRegistry.Converter.html
new file mode 100644
index 0000000..408a435
--- /dev/null
+++ b/devapidocs/org/apache/hadoop/hbase/client/class-use/ZKAsyncRegistry.Converter.html
@@ -0,0 +1,168 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<!-- NewPage -->
+<html lang="en">
+<head>
+<!-- Generated by javadoc -->
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title>Uses of Interface org.apache.hadoop.hbase.client.ZKAsyncRegistry.Converter (Apache HBase 3.0.0-SNAPSHOT API)</title>
+<link rel="stylesheet" type="text/css" href="../../../../../../stylesheet.css" title="Style">
+<script type="text/javascript" src="../../../../../../script.js"></script>
+</head>
+<body>
+<script type="text/javascript"><!--
+    try {
+        if (location.href.indexOf('is-external=true') == -1) {
+            parent.document.title="Uses of Interface org.apache.hadoop.hbase.client.ZKAsyncRegistry.Converter (Apache HBase 3.0.0-SNAPSHOT API)";
+        }
+    }
+    catch(err) {
+    }
+//-->
+</script>
+<noscript>
+<div>JavaScript is disabled on your browser.</div>
+</noscript>
+<!-- ========= START OF TOP NAVBAR ======= -->
+<div class="topNav"><a name="navbar.top">
+<!--   -->
+</a>
+<div class="skipNav"><a href="#skip.navbar.top" title="Skip navigation links">Skip navigation links</a></div>
+<a name="navbar.top.firstrow">
+<!--   -->
+</a>
+<ul class="navList" title="Navigation">
+<li><a href="../../../../../../overview-summary.html">Overview</a></li>
+<li><a href="../package-summary.html">Package</a></li>
+<li><a href="../../../../../../org/apache/hadoop/hbase/client/ZKAsyncRegistry.Converter.html" title="interface in org.apache.hadoop.hbase.client">Class</a></li>
+<li class="navBarCell1Rev">Use</li>
+<li><a href="../../../../../../overview-tree.html">Tree</a></li>
+<li><a href="../../../../../../deprecated-list.html">Deprecated</a></li>
+<li><a href="../../../../../../index-all.html">Index</a></li>
+<li><a href="../../../../../../help-doc.html">Help</a></li>
+</ul>
+</div>
+<div class="subNav">
+<ul class="navList">
+<li>Prev</li>
+<li>Next</li>
+</ul>
+<ul class="navList">
+<li><a href="../../../../../../index.html?org/apache/hadoop/hbase/client/class-use/ZKAsyncRegistry.Converter.html" target="_top">Frames</a></li>
+<li><a href="ZKAsyncRegistry.Converter.html" target="_top">No&nbsp;Frames</a></li>
+</ul>
+<ul class="navList" id="allclasses_navbar_top">
+<li><a href="../../../../../../allclasses-noframe.html">All&nbsp;Classes</a></li>
+</ul>
+<div>
+<script type="text/javascript"><!--
+  allClassesLink = document.getElementById("allclasses_navbar_top");
+  if(window==top) {
+    allClassesLink.style.display = "block";
+  }
+  else {
+    allClassesLink.style.display = "none";
+  }
+  //-->
+</script>
+</div>
+<a name="skip.navbar.top">
+<!--   -->
+</a></div>
+<!-- ========= END OF TOP NAVBAR ========= -->
+<div class="header">
+<h2 title="Uses of Interface org.apache.hadoop.hbase.client.ZKAsyncRegistry.Converter" class="title">Uses of Interface<br>org.apache.hadoop.hbase.client.ZKAsyncRegistry.Converter</h2>
+</div>
+<div class="classUseContainer">
+<ul class="blockList">
+<li class="blockList">
+<table class="useSummary" border="0" cellpadding="3" cellspacing="0" summary="Use table, listing packages, and an explanation">
+<caption><span>Packages that use <a href="../../../../../../org/apache/hadoop/hbase/client/ZKAsyncRegistry.Converter.html" title="interface in org.apache.hadoop.hbase.client">ZKAsyncRegistry.Converter</a></span><span class="tabEnd">&nbsp;</span></caption>
+<tr>
+<th class="colFirst" scope="col">Package</th>
+<th class="colLast" scope="col">Description</th>
+</tr>
+<tbody>
+<tr class="altColor">
+<td class="colFirst"><a href="#org.apache.hadoop.hbase.client">org.apache.hadoop.hbase.client</a></td>
+<td class="colLast">
+<div class="block">Provides HBase Client</div>
+</td>
+</tr>
+</tbody>
+</table>
+</li>
+<li class="blockList">
+<ul class="blockList">
+<li class="blockList"><a name="org.apache.hadoop.hbase.client">
+<!--   -->
+</a>
+<h3>Uses of <a href="../../../../../../org/apache/hadoop/hbase/client/ZKAsyncRegistry.Converter.html" title="interface in org.apache.hadoop.hbase.client">ZKAsyncRegistry.Converter</a> in <a href="../../../../../../org/apache/hadoop/hbase/client/package-summary.html">org.apache.hadoop.hbase.client</a></h3>
+<table class="useSummary" border="0" cellpadding="3" cellspacing="0" summary="Use table, listing methods, and an explanation">
+<caption><span>Methods in <a href="../../../../../../org/apache/hadoop/hbase/client/package-summary.html">org.apache.hadoop.hbase.client</a> with parameters of type <a href="../../../../../../org/apache/hadoop/hbase/client/ZKAsyncRegistry.Converter.html" title="interface in org.apache.hadoop.hbase.client">ZKAsyncRegistry.Converter</a></span><span class="tabEnd">&nbsp;</span></caption>
+<tr>
+<th class="colFirst" scope="col">Modifier and Type</th>
+<th class="colLast" scope="col">Method and Description</th>
+</tr>
+<tbody>
+<tr class="altColor">
+<td class="colFirst"><code>private &lt;T&gt;&nbsp;<a href="http://docs.oracle.com/javase/8/docs/api/java/util/concurrent/CompletableFuture.html?is-external=true" title="class or interface in java.util.concurrent">CompletableFuture</a>&lt;T&gt;</code></td>
+<td class="colLast"><span class="typeNameLabel">ZKAsyncRegistry.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/client/ZKAsyncRegistry.html#getAndConvert-java.lang.String-org.apache.hadoop.hbase.client.ZKAsyncRegistry.Converter-">getAndConvert</a></span>(<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;path,
+             <a href="../../../../../../org/apache/hadoop/hbase/client/ZKAsyncRegistry.Converter.html" title="interface in org.apache.hadoop.hbase.client">ZKAsyncRegistry.Converter</a>&lt;T&gt;&nbsp;converter)</code>&nbsp;</td>
+</tr>
+</tbody>
+</table>
+</li>
+</ul>
+</li>
+</ul>
+</div>
+<!-- ======= START OF BOTTOM NAVBAR ====== -->
+<div class="bottomNav"><a name="navbar.bottom">
+<!--   -->
+</a>
+<div class="skipNav"><a href="#skip.navbar.bottom" title="Skip navigation links">Skip navigation links</a></div>
+<a name="navbar.bottom.firstrow">
+<!--   -->
+</a>
+<ul class="navList" title="Navigation">
+<li><a href="../../../../../../overview-summary.html">Overview</a></li>
+<li><a href="../package-summary.html">Package</a></li>
+<li><a href="../../../../../../org/apache/hadoop/hbase/client/ZKAsyncRegistry.Converter.html" title="interface in org.apache.hadoop.hbase.client">Class</a></li>
+<li class="navBarCell1Rev">Use</li>
+<li><a href="../../../../../../overview-tree.html">Tree</a></li>
+<li><a href="../../../../../../deprecated-list.html">Deprecated</a></li>
+<li><a href="../../../../../../index-all.html">Index</a></li>
+<li><a href="../../../../../../help-doc.html">Help</a></li>
+</ul>
+</div>
+<div class="subNav">
+<ul class="navList">
+<li>Prev</li>
+<li>Next</li>
+</ul>
+<ul class="navList">
+<li><a href="../../../../../../index.html?org/apache/hadoop/hbase/client/class-use/ZKAsyncRegistry.Converter.html" target="_top">Frames</a></li>
+<li><a href="ZKAsyncRegistry.Converter.html" target="_top">No&nbsp;Frames</a></li>
+</ul>
+<ul class="navList" id="allclasses_navbar_bottom">
+<li><a href="../../../../../../allclasses-noframe.html">All&nbsp;Classes</a></li>
+</ul>
+<div>
+<script type="text/javascript"><!--
+  allClassesLink = document.getElementById("allclasses_navbar_bottom");
+  if(window==top) {
+    allClassesLink.style.display = "block";
+  }
+  else {
+    allClassesLink.style.display = "none";
+  }
+  //-->
+</script>
+</div>
+<a name="skip.navbar.bottom">
+<!--   -->
+</a></div>
+<!-- ======== END OF BOTTOM NAVBAR ======= -->
+<p class="legalCopy"><small>Copyright &#169; 2007&#x2013;2017 <a href="https://www.apache.org/">The Apache Software Foundation</a>. All rights reserved.</small></p>
+</body>
+</html>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/c54c242b/devapidocs/org/apache/hadoop/hbase/client/class-use/ZKAsyncRegistry.CuratorEventProcessor.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/client/class-use/ZKAsyncRegistry.CuratorEventProcessor.html b/devapidocs/org/apache/hadoop/hbase/client/class-use/ZKAsyncRegistry.CuratorEventProcessor.html
deleted file mode 100644
index b49a69b..0000000
--- a/devapidocs/org/apache/hadoop/hbase/client/class-use/ZKAsyncRegistry.CuratorEventProcessor.html
+++ /dev/null
@@ -1,169 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<!-- NewPage -->
-<html lang="en">
-<head>
-<!-- Generated by javadoc -->
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<title>Uses of Interface org.apache.hadoop.hbase.client.ZKAsyncRegistry.CuratorEventProcessor (Apache HBase 3.0.0-SNAPSHOT API)</title>
-<link rel="stylesheet" type="text/css" href="../../../../../../stylesheet.css" title="Style">
-<script type="text/javascript" src="../../../../../../script.js"></script>
-</head>
-<body>
-<script type="text/javascript"><!--
-    try {
-        if (location.href.indexOf('is-external=true') == -1) {
-            parent.document.title="Uses of Interface org.apache.hadoop.hbase.client.ZKAsyncRegistry.CuratorEventProcessor (Apache HBase 3.0.0-SNAPSHOT API)";
-        }
-    }
-    catch(err) {
-    }
-//-->
-</script>
-<noscript>
-<div>JavaScript is disabled on your browser.</div>
-</noscript>
-<!-- ========= START OF TOP NAVBAR ======= -->
-<div class="topNav"><a name="navbar.top">
-<!--   -->
-</a>
-<div class="skipNav"><a href="#skip.navbar.top" title="Skip navigation links">Skip navigation links</a></div>
-<a name="navbar.top.firstrow">
-<!--   -->
-</a>
-<ul class="navList" title="Navigation">
-<li><a href="../../../../../../overview-summary.html">Overview</a></li>
-<li><a href="../package-summary.html">Package</a></li>
-<li><a href="../../../../../../org/apache/hadoop/hbase/client/ZKAsyncRegistry.CuratorEventProcessor.html" title="interface in org.apache.hadoop.hbase.client">Class</a></li>
-<li class="navBarCell1Rev">Use</li>
-<li><a href="../../../../../../overview-tree.html">Tree</a></li>
-<li><a href="../../../../../../deprecated-list.html">Deprecated</a></li>
-<li><a href="../../../../../../index-all.html">Index</a></li>
-<li><a href="../../../../../../help-doc.html">Help</a></li>
-</ul>
-</div>
-<div class="subNav">
-<ul class="navList">
-<li>Prev</li>
-<li>Next</li>
-</ul>
-<ul class="navList">
-<li><a href="../../../../../../index.html?org/apache/hadoop/hbase/client/class-use/ZKAsyncRegistry.CuratorEventProcessor.html" target="_top">Frames</a></li>
-<li><a href="ZKAsyncRegistry.CuratorEventProcessor.html" target="_top">No&nbsp;Frames</a></li>
-</ul>
-<ul class="navList" id="allclasses_navbar_top">
-<li><a href="../../../../../../allclasses-noframe.html">All&nbsp;Classes</a></li>
-</ul>
-<div>
-<script type="text/javascript"><!--
-  allClassesLink = document.getElementById("allclasses_navbar_top");
-  if(window==top) {
-    allClassesLink.style.display = "block";
-  }
-  else {
-    allClassesLink.style.display = "none";
-  }
-  //-->
-</script>
-</div>
-<a name="skip.navbar.top">
-<!--   -->
-</a></div>
-<!-- ========= END OF TOP NAVBAR ========= -->
-<div class="header">
-<h2 title="Uses of Interface org.apache.hadoop.hbase.client.ZKAsyncRegistry.CuratorEventProcessor" class="title">Uses of Interface<br>org.apache.hadoop.hbase.client.ZKAsyncRegistry.CuratorEventProcessor</h2>
-</div>
-<div class="classUseContainer">
-<ul class="blockList">
-<li class="blockList">
-<table class="useSummary" border="0" cellpadding="3" cellspacing="0" summary="Use table, listing packages, and an explanation">
-<caption><span>Packages that use <a href="../../../../../../org/apache/hadoop/hbase/client/ZKAsyncRegistry.CuratorEventProcessor.html" title="interface in org.apache.hadoop.hbase.client">ZKAsyncRegistry.CuratorEventProcessor</a></span><span class="tabEnd">&nbsp;</span></caption>
-<tr>
-<th class="colFirst" scope="col">Package</th>
-<th class="colLast" scope="col">Description</th>
-</tr>
-<tbody>
-<tr class="altColor">
-<td class="colFirst"><a href="#org.apache.hadoop.hbase.client">org.apache.hadoop.hbase.client</a></td>
-<td class="colLast">
-<div class="block">Provides HBase Client</div>
-</td>
-</tr>
-</tbody>
-</table>
-</li>
-<li class="blockList">
-<ul class="blockList">
-<li class="blockList"><a name="org.apache.hadoop.hbase.client">
-<!--   -->
-</a>
-<h3>Uses of <a href="../../../../../../org/apache/hadoop/hbase/client/ZKAsyncRegistry.CuratorEventProcessor.html" title="interface in org.apache.hadoop.hbase.client">ZKAsyncRegistry.CuratorEventProcessor</a> in <a href="../../../../../../org/apache/hadoop/hbase/client/package-summary.html">org.apache.hadoop.hbase.client</a></h3>
-<table class="useSummary" border="0" cellpadding="3" cellspacing="0" summary="Use table, listing methods, and an explanation">
-<caption><span>Methods in <a href="../../../../../../org/apache/hadoop/hbase/client/package-summary.html">org.apache.hadoop.hbase.client</a> with parameters of type <a href="../../../../../../org/apache/hadoop/hbase/client/ZKAsyncRegistry.CuratorEventProcessor.html" title="interface in org.apache.hadoop.hbase.client">ZKAsyncRegistry.CuratorEventProcessor</a></span><span class="tabEnd">&nbsp;</span></caption>
-<tr>
-<th class="colFirst" scope="col">Modifier and Type</th>
-<th class="colLast" scope="col">Method and Description</th>
-</tr>
-<tbody>
-<tr class="altColor">
-<td class="colFirst"><code>private static &lt;T&gt;&nbsp;<a href="http://docs.oracle.com/javase/8/docs/api/java/util/concurrent/CompletableFuture.html?is-external=true" title="class or interface in java.util.concurrent">CompletableFuture</a>&lt;T&gt;</code></td>
-<td class="colLast"><span class="typeNameLabel">ZKAsyncRegistry.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/client/ZKAsyncRegistry.html#exec-org.apache.curator.framework.api.BackgroundPathable-java.lang.String-org.apache.hadoop.hbase.client.ZKAsyncRegistry.CuratorEventProcessor-">exec</a></span>(org.apache.curator.framework.api.BackgroundPathable&lt;?&gt;&nbsp;opBuilder,
-    <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;path,
-    <a href="../../../../../../org/apache/hadoop/hbase/client/ZKAsyncRegistry.CuratorEventProcessor.html" title="interface in org.apache.hadoop.hbase.client">ZKAsyncRegistry.CuratorEventProcessor</a>&lt;T&gt;&nbsp;processor)</code>&nbsp;</td>
-</tr>
-</tbody>
-</table>
-</li>
-</ul>
-</li>
-</ul>
-</div>
-<!-- ======= START OF BOTTOM NAVBAR ====== -->
-<div class="bottomNav"><a name="navbar.bottom">
-<!--   -->
-</a>
-<div class="skipNav"><a href="#skip.navbar.bottom" title="Skip navigation links">Skip navigation links</a></div>
-<a name="navbar.bottom.firstrow">
-<!--   -->
-</a>
-<ul class="navList" title="Navigation">
-<li><a href="../../../../../../overview-summary.html">Overview</a></li>
-<li><a href="../package-summary.html">Package</a></li>
-<li><a href="../../../../../../org/apache/hadoop/hbase/client/ZKAsyncRegistry.CuratorEventProcessor.html" title="interface in org.apache.hadoop.hbase.client">Class</a></li>
-<li class="navBarCell1Rev">Use</li>
-<li><a href="../../../../../../overview-tree.html">Tree</a></li>
-<li><a href="../../../../../../deprecated-list.html">Deprecated</a></li>
-<li><a href="../../../../../../index-all.html">Index</a></li>
-<li><a href="../../../../../../help-doc.html">Help</a></li>
-</ul>
-</div>
-<div class="subNav">
-<ul class="navList">
-<li>Prev</li>
-<li>Next</li>
-</ul>
-<ul class="navList">
-<li><a href="../../../../../../index.html?org/apache/hadoop/hbase/client/class-use/ZKAsyncRegistry.CuratorEventProcessor.html" target="_top">Frames</a></li>
-<li><a href="ZKAsyncRegistry.CuratorEventProcessor.html" target="_top">No&nbsp;Frames</a></li>
-</ul>
-<ul class="navList" id="allclasses_navbar_bottom">
-<li><a href="../../../../../../allclasses-noframe.html">All&nbsp;Classes</a></li>
-</ul>
-<div>
-<script type="text/javascript"><!--
-  allClassesLink = document.getElementById("allclasses_navbar_bottom");
-  if(window==top) {
-    allClassesLink.style.display = "block";
-  }
-  else {
-    allClassesLink.style.display = "none";
-  }
-  //-->
-</script>
-</div>
-<a name="skip.navbar.bottom">
-<!--   -->
-</a></div>
-<!-- ======== END OF BOTTOM NAVBAR ======= -->
-<p class="legalCopy"><small>Copyright &#169; 2007&#x2013;2017 <a href="https://www.apache.org/">The Apache Software Foundation</a>. All rights reserved.</small></p>
-</body>
-</html>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/c54c242b/devapidocs/org/apache/hadoop/hbase/client/package-frame.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/client/package-frame.html b/devapidocs/org/apache/hadoop/hbase/client/package-frame.html
index 2625abb..6c99ba9 100644
--- a/devapidocs/org/apache/hadoop/hbase/client/package-frame.html
+++ b/devapidocs/org/apache/hadoop/hbase/client/package-frame.html
@@ -72,7 +72,7 @@
 <li><a href="Table.html" title="interface in org.apache.hadoop.hbase.client" target="classFrame"><span class="interfaceName">Table</span></a></li>
 <li><a href="TableBuilder.html" title="interface in org.apache.hadoop.hbase.client" target="classFrame"><span class="interfaceName">TableBuilder</span></a></li>
 <li><a href="TableDescriptor.html" title="interface in org.apache.hadoop.hbase.client" target="classFrame"><span class="interfaceName">TableDescriptor</span></a></li>
-<li><a href="ZKAsyncRegistry.CuratorEventProcessor.html" title="interface in org.apache.hadoop.hbase.client" target="classFrame"><span class="interfaceName">ZKAsyncRegistry.CuratorEventProcessor</span></a></li>
+<li><a href="ZKAsyncRegistry.Converter.html" title="interface in org.apache.hadoop.hbase.client" target="classFrame"><span class="interfaceName">ZKAsyncRegistry.Converter</span></a></li>
 </ul>
 <h2 title="Classes">Classes</h2>
 <ul title="Classes">

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/c54c242b/devapidocs/org/apache/hadoop/hbase/client/package-summary.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/client/package-summary.html b/devapidocs/org/apache/hadoop/hbase/client/package-summary.html
index e7719aa..13eae48 100644
--- a/devapidocs/org/apache/hadoop/hbase/client/package-summary.html
+++ b/devapidocs/org/apache/hadoop/hbase/client/package-summary.html
@@ -422,7 +422,7 @@
 </td>
 </tr>
 <tr class="rowColor">
-<td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/client/ZKAsyncRegistry.CuratorEventProcessor.html" title="interface in org.apache.hadoop.hbase.client">ZKAsyncRegistry.CuratorEventProcessor</a>&lt;T&gt;</td>
+<td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/client/ZKAsyncRegistry.Converter.html" title="interface in org.apache.hadoop.hbase.client">ZKAsyncRegistry.Converter</a>&lt;T&gt;</td>
 <td class="colLast">&nbsp;</td>
 </tr>
 </tbody>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/c54c242b/devapidocs/org/apache/hadoop/hbase/client/package-tree.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/client/package-tree.html b/devapidocs/org/apache/hadoop/hbase/client/package-tree.html
index efe6f5a..bf0dbbc 100644
--- a/devapidocs/org/apache/hadoop/hbase/client/package-tree.html
+++ b/devapidocs/org/apache/hadoop/hbase/client/package-tree.html
@@ -534,7 +534,7 @@
 <li type="circle">org.apache.hadoop.hbase.client.<a href="../../../../../org/apache/hadoop/hbase/client/StatisticTrackable.html" title="interface in org.apache.hadoop.hbase.client"><span class="typeNameLink">StatisticTrackable</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.client.<a href="../../../../../org/apache/hadoop/hbase/client/TableBuilder.html" title="interface in org.apache.hadoop.hbase.client"><span class="typeNameLink">TableBuilder</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.client.<a href="../../../../../org/apache/hadoop/hbase/client/TableDescriptor.html" title="interface in org.apache.hadoop.hbase.client"><span class="typeNameLink">TableDescriptor</span></a></li>
-<li type="circle">org.apache.hadoop.hbase.client.<a href="../../../../../org/apache/hadoop/hbase/client/ZKAsyncRegistry.CuratorEventProcessor.html" title="interface in org.apache.hadoop.hbase.client"><span class="typeNameLink">ZKAsyncRegistry.CuratorEventProcessor</span></a>&lt;T&gt;</li>
+<li type="circle">org.apache.hadoop.hbase.client.<a href="../../../../../org/apache/hadoop/hbase/client/ZKAsyncRegistry.Converter.html" title="interface in org.apache.hadoop.hbase.client"><span class="typeNameLink">ZKAsyncRegistry.Converter</span></a>&lt;T&gt;</li>
 </ul>
 <h2 title="Enum Hierarchy">Enum Hierarchy</h2>
 <ul>
@@ -542,24 +542,24 @@
 <ul>
 <li type="circle">java.lang.<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Enum.html?is-external=true" title="class or interface in java.lang"><span class="typeNameLink">Enum</span></a>&lt;E&gt; (implements java.lang.<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Comparable.html?is-external=true" title="class or interface in java.lang">Comparable</a>&lt;T&gt;, java.io.<a href="http://docs.oracle.com/javase/8/docs/api/java/io/Serializable.html?is-external=true" title="class or interface in java.io">Serializable</a>)
 <ul>
-<li type="circle">org.apache.hadoop.hbase.client.<a href="../../../../../org/apache/hadoop/hbase/client/IsolationLevel.html" title="enum in org.apache.hadoop.hbase.client"><span class="typeNameLink">IsolationLevel</span></a></li>
-<li type="circle">org.apache.hadoop.hbase.client.<a href="../../../../../org/apache/hadoop/hbase/client/ScannerCallable.MoreResults.html" title="enum in org.apache.hadoop.hbase.client"><span class="typeNameLink">ScannerCallable.MoreResults</span></a></li>
-<li type="circle">org.apache.hadoop.hbase.client.<a href="../../../../../org/apache/hadoop/hbase/client/AsyncProcessTask.SubmittedRows.html" title="enum in org.apache.hadoop.hbase.client"><span class="typeNameLink">AsyncProcessTask.SubmittedRows</span></a></li>
-<li type="circle">org.apache.hadoop.hbase.client.<a href="../../../../../org/apache/hadoop/hbase/client/RequestController.ReturnCode.html" title="enum in org.apache.hadoop.hbase.client"><span class="typeNameLink">RequestController.ReturnCode</span></a></li>
-<li type="circle">org.apache.hadoop.hbase.client.<a href="../../../../../org/apache/hadoop/hbase/client/MobCompactPartitionPolicy.html" title="enum in org.apache.hadoop.hbase.client"><span class="typeNameLink">MobCompactPartitionPolicy</span></a></li>
-<li type="circle">org.apache.hadoop.hbase.client.<a href="../../../../../org/apache/hadoop/hbase/client/AsyncRequestFutureImpl.Retry.html" title="enum in org.apache.hadoop.hbase.client"><span class="typeNameLink">AsyncRequestFutureImpl.Retry</span></a></li>
-<li type="circle">org.apache.hadoop.hbase.client.<a href="../../../../../org/apache/hadoop/hbase/client/Consistency.html" title="enum in org.apache.hadoop.hbase.client"><span class="typeNameLink">Consistency</span></a></li>
-<li type="circle">org.apache.hadoop.hbase.client.<a href="../../../../../org/apache/hadoop/hbase/client/AsyncScanSingleRegionRpcRetryingCaller.ScanControllerState.html" title="enum in org.apache.hadoop.hbase.client"><span class="typeNameLink">AsyncScanSingleRegionRpcRetryingCaller.ScanControllerState</span></a></li>
-<li type="circle">org.apache.hadoop.hbase.client.<a href="../../../../../org/apache/hadoop/hbase/client/Durability.html" title="enum in org.apache.hadoop.hbase.client"><span class="typeNameLink">Durability</span></a></li>
-<li type="circle">org.apache.hadoop.hbase.client.<a href="../../../../../org/apache/hadoop/hbase/client/AsyncScanSingleRegionRpcRetryingCaller.ScanResumerState.html" title="enum in org.apache.hadoop.hbase.client"><span class="typeNameLink">AsyncScanSingleRegionRpcRetryingCaller.ScanResumerState</span></a></li>
-<li type="circle">org.apache.hadoop.hbase.client.<a href="../../../../../org/apache/hadoop/hbase/client/Scan.ReadType.html" title="enum in org.apache.hadoop.hbase.client"><span class="typeNameLink">Scan.ReadType</span></a></li>
-<li type="circle">org.apache.hadoop.hbase.client.<a href="../../../../../org/apache/hadoop/hbase/client/CompactType.html" title="enum in org.apache.hadoop.hbase.client"><span class="typeNameLink">CompactType</span></a></li>
-<li type="circle">org.apache.hadoop.hbase.client.<a href="../../../../../org/apache/hadoop/hbase/client/AbstractResponse.ResponseType.html" title="enum in org.apache.hadoop.hbase.client"><span class="typeNameLink">AbstractResponse.ResponseType</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.client.<a href="../../../../../org/apache/hadoop/hbase/client/SnapshotType.html" title="enum in org.apache.hadoop.hbase.client"><span class="typeNameLink">SnapshotType</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.client.<a href="../../../../../org/apache/hadoop/hbase/client/RegionLocateType.html" title="enum in org.apache.hadoop.hbase.client"><span class="typeNameLink">RegionLocateType</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.client.<a href="../../../../../org/apache/hadoop/hbase/client/AbstractResponse.ResponseType.html" title="enum in org.apache.hadoop.hbase.client"><span class="typeNameLink">AbstractResponse.ResponseType</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.client.<a href="../../../../../org/apache/hadoop/hbase/client/AsyncRequestFutureImpl.Retry.html" title="enum in org.apache.hadoop.hbase.client"><span class="typeNameLink">AsyncRequestFutureImpl.Retry</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.client.<a href="../../../../../org/apache/hadoop/hbase/client/MasterSwitchType.html" title="enum in org.apache.hadoop.hbase.client"><span class="typeNameLink">MasterSwitchType</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.client.<a href="../../../../../org/apache/hadoop/hbase/client/CompactionState.html" title="enum in org.apache.hadoop.hbase.client"><span class="typeNameLink">CompactionState</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.client.<a href="../../../../../org/apache/hadoop/hbase/client/Scan.ReadType.html" title="enum in org.apache.hadoop.hbase.client"><span class="typeNameLink">Scan.ReadType</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.client.<a href="../../../../../org/apache/hadoop/hbase/client/MobCompactPartitionPolicy.html" title="enum in org.apache.hadoop.hbase.client"><span class="typeNameLink">MobCompactPartitionPolicy</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.client.<a href="../../../../../org/apache/hadoop/hbase/client/TableState.State.html" title="enum in org.apache.hadoop.hbase.client"><span class="typeNameLink">TableState.State</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.client.<a href="../../../../../org/apache/hadoop/hbase/client/AsyncScanSingleRegionRpcRetryingCaller.ScanResumerState.html" title="enum in org.apache.hadoop.hbase.client"><span class="typeNameLink">AsyncScanSingleRegionRpcRetryingCaller.ScanResumerState</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.client.<a href="../../../../../org/apache/hadoop/hbase/client/ScannerCallable.MoreResults.html" title="enum in org.apache.hadoop.hbase.client"><span class="typeNameLink">ScannerCallable.MoreResults</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.client.<a href="../../../../../org/apache/hadoop/hbase/client/RequestController.ReturnCode.html" title="enum in org.apache.hadoop.hbase.client"><span class="typeNameLink">RequestController.ReturnCode</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.client.<a href="../../../../../org/apache/hadoop/hbase/client/Durability.html" title="enum in org.apache.hadoop.hbase.client"><span class="typeNameLink">Durability</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.client.<a href="../../../../../org/apache/hadoop/hbase/client/IsolationLevel.html" title="enum in org.apache.hadoop.hbase.client"><span class="typeNameLink">IsolationLevel</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.client.<a href="../../../../../org/apache/hadoop/hbase/client/Consistency.html" title="enum in org.apache.hadoop.hbase.client"><span class="typeNameLink">Consistency</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.client.<a href="../../../../../org/apache/hadoop/hbase/client/CompactType.html" title="enum in org.apache.hadoop.hbase.client"><span class="typeNameLink">CompactType</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.client.<a href="../../../../../org/apache/hadoop/hbase/client/AsyncProcessTask.SubmittedRows.html" title="enum in org.apache.hadoop.hbase.client"><span class="typeNameLink">AsyncProcessTask.SubmittedRows</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.client.<a href="../../../../../org/apache/hadoop/hbase/client/AsyncScanSingleRegionRpcRetryingCaller.ScanControllerState.html" title="enum in org.apache.hadoop.hbase.client"><span class="typeNameLink">AsyncScanSingleRegionRpcRetryingCaller.ScanControllerState</span></a></li>
 </ul>
 </li>
 </ul>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/c54c242b/devapidocs/org/apache/hadoop/hbase/client/package-use.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/client/package-use.html b/devapidocs/org/apache/hadoop/hbase/client/package-use.html
index b37dee0..4c55736 100644
--- a/devapidocs/org/apache/hadoop/hbase/client/package-use.html
+++ b/devapidocs/org/apache/hadoop/hbase/client/package-use.html
@@ -1559,7 +1559,7 @@ service.</div>
 <td class="colOne"><a href="../../../../../org/apache/hadoop/hbase/client/class-use/TableState.State.html#org.apache.hadoop.hbase.client">TableState.State</a>&nbsp;</td>
 </tr>
 <tr class="altColor">
-<td class="colOne"><a href="../../../../../org/apache/hadoop/hbase/client/class-use/ZKAsyncRegistry.CuratorEventProcessor.html#org.apache.hadoop.hbase.client">ZKAsyncRegistry.CuratorEventProcessor</a>&nbsp;</td>
+<td class="colOne"><a href="../../../../../org/apache/hadoop/hbase/client/class-use/ZKAsyncRegistry.Converter.html#org.apache.hadoop.hbase.client">ZKAsyncRegistry.Converter</a>&nbsp;</td>
 </tr>
 </tbody>
 </table>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/c54c242b/devapidocs/org/apache/hadoop/hbase/exceptions/class-use/DeserializationException.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/exceptions/class-use/DeserializationException.html b/devapidocs/org/apache/hadoop/hbase/exceptions/class-use/DeserializationException.html
index c2d6906..5b18535 100644
--- a/devapidocs/org/apache/hadoop/hbase/exceptions/class-use/DeserializationException.html
+++ b/devapidocs/org/apache/hadoop/hbase/exceptions/class-use/DeserializationException.html
@@ -213,7 +213,7 @@
 </tr>
 <tr class="altColor">
 <td class="colFirst"><code>private static <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 class="colLast"><span class="typeNameLabel">ZKAsyncRegistry.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/client/ZKAsyncRegistry.html#getClusterId-org.apache.curator.framework.api.CuratorEvent-">getClusterId</a></span>(org.apache.curator.framework.api.CuratorEvent&nbsp;event)</code>&nbsp;</td>
+<td class="colLast"><span class="typeNameLabel">ZKAsyncRegistry.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/client/ZKAsyncRegistry.html#getClusterId-byte:A-">getClusterId</a></span>(byte[]&nbsp;data)</code>&nbsp;</td>
 </tr>
 <tr class="rowColor">
 <td class="colFirst"><code>static <a href="../../../../../../org/apache/hadoop/hbase/client/TableDescriptor.html" title="interface in org.apache.hadoop.hbase.client">TableDescriptor</a></code></td>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/c54c242b/devapidocs/org/apache/hadoop/hbase/filter/package-tree.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/filter/package-tree.html b/devapidocs/org/apache/hadoop/hbase/filter/package-tree.html
index 2eb2f74..2c57415 100644
--- a/devapidocs/org/apache/hadoop/hbase/filter/package-tree.html
+++ b/devapidocs/org/apache/hadoop/hbase/filter/package-tree.html
@@ -185,10 +185,10 @@
 <li type="circle">org.apache.hadoop.hbase.filter.<a href="../../../../../org/apache/hadoop/hbase/filter/FuzzyRowFilter.SatisfiesCode.html" title="enum in org.apache.hadoop.hbase.filter"><span class="typeNameLink">FuzzyRowFilter.SatisfiesCode</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.filter.<a href="../../../../../org/apache/hadoop/hbase/filter/BitComparator.BitwiseOp.html" title="enum in org.apache.hadoop.hbase.filter"><span class="typeNameLink">BitComparator.BitwiseOp</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.filter.<a href="../../../../../org/apache/hadoop/hbase/filter/RegexStringComparator.EngineType.html" title="enum in org.apache.hadoop.hbase.filter"><span class="typeNameLink">RegexStringComparator.EngineType</span></a></li>
-<li type="circle">org.apache.hadoop.hbase.filter.<a href="../../../../../org/apache/hadoop/hbase/filter/Filter.ReturnCode.html" title="enum in org.apache.hadoop.hbase.filter"><span class="typeNameLink">Filter.ReturnCode</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.filter.<a href="../../../../../org/apache/hadoop/hbase/filter/FilterList.Operator.html" title="enum in org.apache.hadoop.hbase.filter"><span class="typeNameLink">FilterList.Operator</span></a></li>
-<li type="circle">org.apache.hadoop.hbase.filter.<a href="../../../../../org/apache/hadoop/hbase/filter/FuzzyRowFilter.Order.html" title="enum in org.apache.hadoop.hbase.filter"><span class="typeNameLink">FuzzyRowFilter.Order</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.filter.<a href="../../../../../org/apache/hadoop/hbase/filter/Filter.ReturnCode.html" title="enum in org.apache.hadoop.hbase.filter"><span class="typeNameLink">Filter.ReturnCode</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.filter.<a href="../../../../../org/apache/hadoop/hbase/filter/FilterWrapper.FilterRowRetCode.html" title="enum in org.apache.hadoop.hbase.filter"><span class="typeNameLink">FilterWrapper.FilterRowRetCode</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.filter.<a href="../../../../../org/apache/hadoop/hbase/filter/FuzzyRowFilter.Order.html" title="enum in org.apache.hadoop.hbase.filter"><span class="typeNameLink">FuzzyRowFilter.Order</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.filter.<a href="../../../../../org/apache/hadoop/hbase/filter/CompareFilter.CompareOp.html" title="enum in org.apache.hadoop.hbase.filter"><span class="typeNameLink">CompareFilter.CompareOp</span></a></li>
 </ul>
 </li>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/c54c242b/devapidocs/org/apache/hadoop/hbase/io/hfile/package-tree.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/io/hfile/package-tree.html b/devapidocs/org/apache/hadoop/hbase/io/hfile/package-tree.html
index 79b4a97..c1c54db 100644
--- a/devapidocs/org/apache/hadoop/hbase/io/hfile/package-tree.html
+++ b/devapidocs/org/apache/hadoop/hbase/io/hfile/package-tree.html
@@ -273,12 +273,12 @@
 <ul>
 <li type="circle">java.lang.<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Enum.html?is-external=true" title="class or interface in java.lang"><span class="typeNameLink">Enum</span></a>&lt;E&gt; (implements java.lang.<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Comparable.html?is-external=true" title="class or interface in java.lang">Comparable</a>&lt;T&gt;, java.io.<a href="http://docs.oracle.com/javase/8/docs/api/java/io/Serializable.html?is-external=true" title="class or interface in java.io">Serializable</a>)
 <ul>
-<li type="circle">org.apache.hadoop.hbase.io.hfile.<a href="../../../../../../org/apache/hadoop/hbase/io/hfile/BlockType.html" title="enum in org.apache.hadoop.hbase.io.hfile"><span class="typeNameLink">BlockType</span></a></li>
-<li type="circle">org.apache.hadoop.hbase.io.hfile.<a href="../../../../../../org/apache/hadoop/hbase/io/hfile/BlockType.BlockCategory.html" title="enum in org.apache.hadoop.hbase.io.hfile"><span class="typeNameLink">BlockType.BlockCategory</span></a></li>
-<li type="circle">org.apache.hadoop.hbase.io.hfile.<a href="../../../../../../org/apache/hadoop/hbase/io/hfile/Cacheable.MemoryType.html" title="enum in org.apache.hadoop.hbase.io.hfile"><span class="typeNameLink">Cacheable.MemoryType</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.io.hfile.<a href="../../../../../../org/apache/hadoop/hbase/io/hfile/BlockPriority.html" title="enum in org.apache.hadoop.hbase.io.hfile"><span class="typeNameLink">BlockPriority</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.io.hfile.<a href="../../../../../../org/apache/hadoop/hbase/io/hfile/Cacheable.MemoryType.html" title="enum in org.apache.hadoop.hbase.io.hfile"><span class="typeNameLink">Cacheable.MemoryType</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.io.hfile.<a href="../../../../../../org/apache/hadoop/hbase/io/hfile/HFileBlock.Writer.State.html" title="enum in org.apache.hadoop.hbase.io.hfile"><span class="typeNameLink">HFileBlock.Writer.State</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.io.hfile.<a href="../../../../../../org/apache/hadoop/hbase/io/hfile/BlockType.BlockCategory.html" title="enum in org.apache.hadoop.hbase.io.hfile"><span class="typeNameLink">BlockType.BlockCategory</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.io.hfile.<a href="../../../../../../org/apache/hadoop/hbase/io/hfile/CacheConfig.ExternalBlockCaches.html" title="enum in org.apache.hadoop.hbase.io.hfile"><span class="typeNameLink">CacheConfig.ExternalBlockCaches</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.io.hfile.<a href="../../../../../../org/apache/hadoop/hbase/io/hfile/BlockType.html" title="enum in org.apache.hadoop.hbase.io.hfile"><span class="typeNameLink">BlockType</span></a></li>
 </ul>
 </li>
 </ul>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/c54c242b/devapidocs/org/apache/hadoop/hbase/ipc/BlockingRpcConnection.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/ipc/BlockingRpcConnection.html b/devapidocs/org/apache/hadoop/hbase/ipc/BlockingRpcConnection.html
index 6300280..1e85c60 100644
--- a/devapidocs/org/apache/hadoop/hbase/ipc/BlockingRpcConnection.html
+++ b/devapidocs/org/apache/hadoop/hbase/ipc/BlockingRpcConnection.html
@@ -580,7 +580,7 @@ implements <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Runnable.
 <ul class="blockList">
 <li class="blockList">
 <h4>handleConnectionFailure</h4>
-<pre>private&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/ipc/BlockingRpcConnection.html#line.283">handleConnectionFailure</a>(int&nbsp;curRetries,
+<pre>private&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/ipc/BlockingRpcConnection.html#line.291">handleConnectionFailure</a>(int&nbsp;curRetries,
                                      int&nbsp;maxRetries,
                                      <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>&nbsp;ioe)
                               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>
@@ -604,7 +604,7 @@ implements <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Runnable.
 <ul class="blockList">
 <li class="blockList">
 <h4>waitForWork</h4>
-<pre>private&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/ipc/BlockingRpcConnection.html#line.308">waitForWork</a>()</pre>
+<pre>private&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/ipc/BlockingRpcConnection.html#line.319">waitForWork</a>()</pre>
 </li>
 </ul>
 <a name="run--">
@@ -613,7 +613,7 @@ implements <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Runnable.
 <ul class="blockList">
 <li class="blockList">
 <h4>run</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/ipc/BlockingRpcConnection.html#line.332">run</a>()</pre>
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/ipc/BlockingRpcConnection.html#line.343">run</a>()</pre>
 <dl>
 <dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
 <dd><code><a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Runnable.html?is-external=true#run--" title="class or interface in java.lang">run</a></code>&nbsp;in interface&nbsp;<code><a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Runnable.html?is-external=true" title="class or interface in java.lang">Runnable</a></code></dd>
@@ -626,7 +626,7 @@ implements <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Runnable.
 <ul class="blockList">
 <li class="blockList">
 <h4>disposeSasl</h4>
-<pre>private&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/ipc/BlockingRpcConnection.html#line.344">disposeSasl</a>()</pre>
+<pre>private&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/ipc/BlockingRpcConnection.html#line.355">disposeSasl</a>()</pre>
 </li>
 </ul>
 <a name="setupSaslConnection-java.io.InputStream-java.io.OutputStream-">
@@ -635,7 +635,7 @@ implements <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Runnable.
 <ul class="blockList">
 <li class="blockList">
 <h4>setupSaslConnection</h4>
-<pre>private&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/ipc/BlockingRpcConnection.html#line.351">setupSaslConnection</a>(<a href="http://docs.oracle.com/javase/8/docs/api/java/io/InputStream.html?is-external=true" title="class or interface in java.io">InputStream</a>&nbsp;in2,
+<pre>private&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/ipc/BlockingRpcConnection.html#line.362">setupSaslConnection</a>(<a href="http://docs.oracle.com/javase/8/docs/api/java/io/InputStream.html?is-external=true" title="class or interface in java.io">InputStream</a>&nbsp;in2,
                                     <a href="http://docs.oracle.com/javase/8/docs/api/java/io/OutputStream.html?is-external=true" title="class or interface in java.io">OutputStream</a>&nbsp;out2)
                              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>
 <dl>
@@ -650,7 +650,7 @@ implements <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Runnable.
 <ul class="blockList">
 <li class="blockList">
 <h4>handleSaslConnectionFailure</h4>
-<pre>private&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/ipc/BlockingRpcConnection.html#line.374">handleSaslConnectionFailure</a>(int&nbsp;currRetries,
+<pre>private&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/ipc/BlockingRpcConnection.html#line.385">handleSaslConnectionFailure</a>(int&nbsp;currRetries,
                                          int&nbsp;maxRetries,
                                          <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Exception.html?is-external=true" title="class or interface in java.lang">Exception</a>&nbsp;ex,
                                          org.apache.hadoop.security.UserGroupInformation&nbsp;user)
@@ -681,7 +681,7 @@ implements <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Runnable.
 <ul class="blockList">
 <li class="blockList">
 <h4>setupIOstreams</h4>
-<pre>private&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/ipc/BlockingRpcConnection.html#line.418">setupIOstreams</a>()
+<pre>private&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/ipc/BlockingRpcConnection.html#line.430">setupIOstreams</a>()
                      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>
 <dl>
 <dt><span class="throwsLabel">Throws:</span></dt>
@@ -695,7 +695,7 @@ implements <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Runnable.
 <ul class="blockList">
 <li class="blockList">
 <h4>writeConnectionHeaderPreamble</h4>
-<pre>private&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/ipc/BlockingRpcConnection.html#line.512">writeConnectionHeaderPreamble</a>(<a href="http://docs.oracle.com/javase/8/docs/api/java/io/OutputStream.html?is-external=true" title="class or interface in java.io">OutputStream</a>&nbsp;out)
+<pre>private&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/ipc/BlockingRpcConnection.html#line.524">writeConnectionHeaderPreamble</a>(<a href="http://docs.oracle.com/javase/8/docs/api/java/io/OutputStream.html?is-external=true" title="class or interface in java.io">OutputStream</a>&nbsp;out)
                                     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">Write the RPC header: <code>&lt;MAGIC WORD -- 'HBas'&gt; &lt;ONEBYTE_VERSION&gt; &lt;ONEBYTE_AUTH_TYPE&gt;</code></div>
 <dl>
@@ -710,7 +710,7 @@ implements <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Runnable.
 <ul class="blockList">
 <li class="blockList">
 <h4>writeConnectionHeader</h4>
-<pre>private&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/ipc/BlockingRpcConnection.html#line.520">writeConnectionHeader</a>()
+<pre>private&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/ipc/BlockingRpcConnection.html#line.532">writeConnectionHeader</a>()
                             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">Write the connection header.</div>
 <dl>
@@ -725,7 +725,7 @@ implements <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Runnable.
 <ul class="blockList">
 <li class="blockList">
 <h4>processResponseForConnectionHeader</h4>
-<pre>private&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/ipc/BlockingRpcConnection.html#line.538">processResponseForConnectionHeader</a>()
+<pre>private&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/ipc/BlockingRpcConnection.html#line.550">processResponseForConnectionHeader</a>()
                                          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>
 <dl>
 <dt><span class="throwsLabel">Throws:</span></dt>
@@ -739,7 +739,7 @@ implements <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Runnable.
 <ul class="blockList">
 <li class="blockList">
 <h4>negotiateCryptoAes</h4>
-<pre>private&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/ipc/BlockingRpcConnection.html#line.566">negotiateCryptoAes</a>(org.apache.hadoop.hbase.shaded.protobuf.generated.RPCProtos.CryptoCipherMeta&nbsp;cryptoCipherMeta)
+<pre>private&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/ipc/BlockingRpcConnection.html#line.578">negotiateCryptoAes</a>(org.apache.hadoop.hbase.shaded.protobuf.generated.RPCProtos.CryptoCipherMeta&nbsp;cryptoCipherMeta)
                          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>
 <dl>
 <dt><span class="throwsLabel">Throws:</span></dt>
@@ -753,7 +753,7 @@ implements <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Runnable.
 <ul class="blockList">
 <li class="blockList">
 <h4>tracedWriteRequest</h4>
-<pre>private&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/ipc/BlockingRpcConnection.html#line.575">tracedWriteRequest</a>(<a href="../../../../../org/apache/hadoop/hbase/ipc/Call.html" title="class in org.apache.hadoop.hbase.ipc">Call</a>&nbsp;call)
+<pre>private&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/ipc/BlockingRpcConnection.html#line.587">tracedWriteRequest</a>(<a href="../../../../../org/apache/hadoop/hbase/ipc/Call.html" title="class in org.apache.hadoop.hbase.ipc">Call</a>&nbsp;call)
                          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>
 <dl>
 <dt><span class="throwsLabel">Throws:</span></dt>
@@ -767,7 +767,7 @@ implements <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Runnable.
 <ul class="blockList">
 <li class="blockList">
 <h4>writeRequest</h4>
-<pre>private&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/ipc/BlockingRpcConnection.html#line.587">writeRequest</a>(<a href="../../../../../org/apache/hadoop/hbase/ipc/Call.html" title="class in org.apache.hadoop.hbase.ipc">Call</a>&nbsp;call)
+<pre>private&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/ipc/BlockingRpcConnection.html#line.599">writeRequest</a>(<a href="../../../../../org/apache/hadoop/hbase/ipc/Call.html" title="class in org.apache.hadoop.hbase.ipc">Call</a>&nbsp;call)
                    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">Initiates a call by sending the parameter to the remote server. Note: this is not called from
  the Connection thread, but by other threads.</div>
@@ -785,7 +785,7 @@ implements <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Runnable.
 <ul class="blockList">
 <li class="blockList">
 <h4>readResponse</h4>
-<pre>private&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/ipc/BlockingRpcConnection.html#line.626">readResponse</a>()</pre>
+<pre>private&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/ipc/BlockingRpcConnection.html#line.638">readResponse</a>()</pre>
 </li>
 </ul>
 <a name="callTimeout-org.apache.hadoop.hbase.ipc.Call-">
@@ -794,7 +794,7 @@ implements <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Runnable.
 <ul class="blockList">
 <li class="blockList">
 <h4>callTimeout</h4>
-<pre>protected&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/ipc/BlockingRpcConnection.html#line.707">callTimeout</a>(<a href="../../../../../org/apache/hadoop/hbase/ipc/Call.html" title="class in org.apache.hadoop.hbase.ipc">Call</a>&nbsp;call)</pre>
+<pre>protected&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/ipc/BlockingRpcConnection.html#line.719">callTimeout</a>(<a href="../../../../../org/apache/hadoop/hbase/ipc/Call.html" title="class in org.apache.hadoop.hbase.ipc">Call</a>&nbsp;call)</pre>
 <dl>
 <dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
 <dd><code><a href="../../../../../org/apache/hadoop/hbase/ipc/RpcConnection.html#callTimeout-org.apache.hadoop.hbase.ipc.Call-">callTimeout</a></code>&nbsp;in class&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/ipc/RpcConnection.html" title="class in org.apache.hadoop.hbase.ipc">RpcConnection</a></code></dd>
@@ -807,7 +807,7 @@ implements <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Runnable.
 <ul class="blockList">
 <li class="blockList">
 <h4>closeSocket</h4>
-<pre>private&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/ipc/BlockingRpcConnection.html#line.713">closeSocket</a>()</pre>
+<pre>private&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/ipc/BlockingRpcConnection.html#line.725">closeSocket</a>()</pre>
 </li>
 </ul>
 <a name="closeConn-java.io.IOException-">
@@ -816,7 +816,7 @@ implements <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Runnable.
 <ul class="blockList">
 <li class="blockList">
 <h4>closeConn</h4>
-<pre>private&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/ipc/BlockingRpcConnection.html#line.723">closeConn</a>(<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>&nbsp;e)</pre>
+<pre>private&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/ipc/BlockingRpcConnection.html#line.735">closeConn</a>(<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>&nbsp;e)</pre>
 </li>
 </ul>
 <a name="shutdown--">
@@ -825,7 +825,7 @@ implements <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Runnable.
 <ul class="blockList">
 <li class="blockList">
 <h4>shutdown</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/ipc/BlockingRpcConnection.html#line.741">shutdown</a>()</pre>
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/ipc/BlockingRpcConnection.html#line.753">shutdown</a>()</pre>
 <div class="block"><span class="descfrmTypeLabel">Description copied from class:&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/ipc/RpcConnection.html#shutdown--">RpcConnection</a></code></span></div>
 <div class="block">Just close connection. Do not need to remove from connection pool.</div>
 <dl>
@@ -840,7 +840,7 @@ implements <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Runnable.
 <ul class="blockList">
 <li class="blockList">
 <h4>cleanupConnection</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/ipc/BlockingRpcConnection.html#line.750">cleanupConnection</a>()</pre>
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/ipc/BlockingRpcConnection.html#line.762">cleanupConnection</a>()</pre>
 <div class="block"><span class="descfrmTypeLabel">Description copied from class:&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/ipc/RpcConnection.html#cleanupConnection--">RpcConnection</a></code></span></div>
 <div class="block">Does the clean up work after the connection is removed from the connection pool</div>
 <dl>
@@ -855,7 +855,7 @@ implements <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Runnable.
 <ul class="blockList">
 <li class="blockList">
 <h4>sendRequest</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/ipc/BlockingRpcConnection.html#line.755">sendRequest</a>(<a href="../../../../../org/apache/hadoop/hbase/ipc/Call.html" title="class in org.apache.hadoop.hbase.ipc">Call</a>&nbsp;call,
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/ipc/BlockingRpcConnection.html#line.767">sendRequest</a>(<a href="../../../../../org/apache/hadoop/hbase/ipc/Call.html" title="class in org.apache.hadoop.hbase.ipc">Call</a>&nbsp;call,
                         <a href="../../../../../org/apache/hadoop/hbase/ipc/HBaseRpcController.html" title="interface in org.apache.hadoop.hbase.ipc">HBaseRpcController</a>&nbsp;pcrc)
                  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>
 <dl>
@@ -872,7 +872,7 @@ implements <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Runnable.
 <ul class="blockListLast">
 <li class="blockList">
 <h4>isActive</h4>
-<pre>public&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/ipc/BlockingRpcConnection.html#line.789">isActive</a>()</pre>
+<pre>public&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/ipc/BlockingRpcConnection.html#line.801">isActive</a>()</pre>
 <div class="block"><span class="descfrmTypeLabel">Description copied from class:&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/ipc/RpcConnection.html#isActive--">RpcConnection</a></code></span></div>
 <div class="block">Tell the idle connection sweeper whether we could be swept.</div>
 <dl>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/c54c242b/devapidocs/org/apache/hadoop/hbase/ipc/package-tree.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/ipc/package-tree.html b/devapidocs/org/apache/hadoop/hbase/ipc/package-tree.html
index b6878c2..676ef1a 100644
--- a/devapidocs/org/apache/hadoop/hbase/ipc/package-tree.html
+++ b/devapidocs/org/apache/hadoop/hbase/ipc/package-tree.html
@@ -348,9 +348,9 @@
 <ul>
 <li type="circle">java.lang.<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Enum.html?is-external=true" title="class or interface in java.lang"><span class="typeNameLink">Enum</span></a>&lt;E&gt; (implements java.lang.<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Comparable.html?is-external=true" title="class or interface in java.lang">Comparable</a>&lt;T&gt;, java.io.<a href="http://docs.oracle.com/javase/8/docs/api/java/io/Serializable.html?is-external=true" title="class or interface in java.io">Serializable</a>)
 <ul>
-<li type="circle">org.apache.hadoop.hbase.ipc.<a href="../../../../../org/apache/hadoop/hbase/ipc/CallEvent.Type.html" title="enum in org.apache.hadoop.hbase.ipc"><span class="typeNameLink">CallEvent.Type</span></a></li>
-<li type="circle">org.apache.hadoop.hbase.ipc.<a href="../../../../../org/apache/hadoop/hbase/ipc/BufferCallBeforeInitHandler.BufferCallAction.html" title="enum in org.apache.hadoop.hbase.ipc"><span class="typeNameLink">BufferCallBeforeInitHandler.BufferCallAction</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.ipc.<a href="../../../../../org/apache/hadoop/hbase/ipc/MetricsHBaseServerSourceFactoryImpl.SourceStorage.html" title="enum in org.apache.hadoop.hbase.ipc"><span class="typeNameLink">MetricsHBaseServerSourceFactoryImpl.SourceStorage</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.ipc.<a href="../../../../../org/apache/hadoop/hbase/ipc/BufferCallBeforeInitHandler.BufferCallAction.html" title="enum in org.apache.hadoop.hbase.ipc"><span class="typeNameLink">BufferCallBeforeInitHandler.BufferCallAction</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.ipc.<a href="../../../../../org/apache/hadoop/hbase/ipc/CallEvent.Type.html" title="enum in org.apache.hadoop.hbase.ipc"><span class="typeNameLink">CallEvent.Type</span></a></li>
 </ul>
 </li>
 </ul>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/c54c242b/devapidocs/org/apache/hadoop/hbase/mapreduce/package-tree.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/mapreduce/package-tree.html b/devapidocs/org/apache/hadoop/hbase/mapreduce/package-tree.html
index b371b2d..15195db 100644
--- a/devapidocs/org/apache/hadoop/hbase/mapreduce/package-tree.html
+++ b/devapidocs/org/apache/hadoop/hbase/mapreduce/package-tree.html
@@ -293,8 +293,8 @@
 <ul>
 <li type="circle">java.lang.<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Enum.html?is-external=true" title="class or interface in java.lang"><span class="typeNameLink">Enum</span></a>&lt;E&gt; (implements java.lang.<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Comparable.html?is-external=true" title="class or interface in java.lang">Comparable</a>&lt;T&gt;, java.io.<a href="http://docs.oracle.com/javase/8/docs/api/java/io/Serializable.html?is-external=true" title="class or interface in java.io">Serializable</a>)
 <ul>
-<li type="circle">org.apache.hadoop.hbase.mapreduce.<a href="../../../../../org/apache/hadoop/hbase/mapreduce/TableSplit.Version.html" title="enum in org.apache.hadoop.hbase.mapreduce"><span class="typeNameLink">TableSplit.Version</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.mapreduce.<a href="../../../../../org/apache/hadoop/hbase/mapreduce/SyncTable.SyncMapper.Counter.html" title="enum in org.apache.hadoop.hbase.mapreduce"><span class="typeNameLink">SyncTable.SyncMapper.Counter</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.mapreduce.<a href="../../../../../org/apache/hadoop/hbase/mapreduce/TableSplit.Version.html" title="enum in org.apache.hadoop.hbase.mapreduce"><span class="typeNameLink">TableSplit.Version</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.mapreduce.<a href="../../../../../org/apache/hadoop/hbase/mapreduce/RowCounter.RowCounterMapper.Counters.html" title="enum in org.apache.hadoop.hbase.mapreduce"><span class="typeNameLink">RowCounter.RowCounterMapper.Counters</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.mapreduce.<a href="../../../../../org/apache/hadoop/hbase/mapreduce/CellCounter.CellCounterMapper.Counters.html" title="enum in org.apache.hadoop.hbase.mapreduce"><span class="typeNameLink">CellCounter.CellCounterMapper.Counters</span></a></li>
 </ul>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/c54c242b/devapidocs/org/apache/hadoop/hbase/master/balancer/package-tree.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/master/balancer/package-tree.html b/devapidocs/org/apache/hadoop/hbase/master/balancer/package-tree.html
index 2450aaa..a01cdad 100644
--- a/devapidocs/org/apache/hadoop/hbase/master/balancer/package-tree.html
+++ b/devapidocs/org/apache/hadoop/hbase/master/balancer/package-tree.html
@@ -197,8 +197,8 @@
 <ul>
 <li type="circle">java.lang.<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Enum.html?is-external=true" title="class or interface in java.lang"><span class="typeNameLink">Enum</span></a>&lt;E&gt; (implements java.lang.<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Comparable.html?is-external=true" title="class or interface in java.lang">Comparable</a>&lt;T&gt;, java.io.<a href="http://docs.oracle.com/javase/8/docs/api/java/io/Serializable.html?is-external=true" title="class or interface in java.io">Serializable</a>)
 <ul>
-<li type="circle">org.apache.hadoop.hbase.master.balancer.<a href="../../../../../../org/apache/hadoop/hbase/master/balancer/BaseLoadBalancer.Cluster.LocalityType.html" title="enum in org.apache.hadoop.hbase.master.balancer"><span class="typeNameLink">BaseLoadBalancer.Cluster.LocalityType</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.master.balancer.<a href="../../../../../../org/apache/hadoop/hbase/master/balancer/BaseLoadBalancer.Cluster.Action.Type.html" title="enum in org.apache.hadoop.hbase.master.balancer"><span class="typeNameLink">BaseLoadBalancer.Cluster.Action.Type</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.master.balancer.<a href="../../../../../../org/apache/hadoop/hbase/master/balancer/BaseLoadBalancer.Cluster.LocalityType.html" title="enum in org.apache.hadoop.hbase.master.balancer"><span class="typeNameLink">BaseLoadBalancer.Cluster.LocalityType</span></a></li>
 </ul>
 </li>
 </ul>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/c54c242b/devapidocs/org/apache/hadoop/hbase/master/package-tree.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/master/package-tree.html b/devapidocs/org/apache/hadoop/hbase/master/package-tree.html
index f4d158c..8f8fcdb 100644
--- a/devapidocs/org/apache/hadoop/hbase/master/package-tree.html
+++ b/devapidocs/org/apache/hadoop/hbase/master/package-tree.html
@@ -332,9 +332,9 @@
 <ul>
 <li type="circle">java.lang.<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Enum.html?is-external=true" title="class or interface in java.lang"><span class="typeNameLink">Enum</span></a>&lt;E&gt; (implements java.lang.<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Comparable.html?is-external=true" title="class or interface in java.lang">Comparable</a>&lt;T&gt;, java.io.<a href="http://docs.oracle.com/javase/8/docs/api/java/io/Serializable.html?is-external=true" title="class or interface in java.io">Serializable</a>)
 <ul>
-<li type="circle">org.apache.hadoop.hbase.master.<a href="../../../../../org/apache/hadoop/hbase/master/RegionState.State.html" title="enum in org.apache.hadoop.hbase.master"><span class="typeNameLink">RegionState.State</span></a></li>
-<li type="circle">org.apache.hadoop.hbase.master.<a href="../../../../../org/apache/hadoop/hbase/master/MasterRpcServices.BalanceSwitchMode.html" title="enum in org.apache.hadoop.hbase.master"><span class="typeNameLink">MasterRpcServices.BalanceSwitchMode</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.master.<a href="../../../../../org/apache/hadoop/hbase/master/SplitLogManager.TerminationStatus.html" title="enum in org.apache.hadoop.hbase.master"><span class="typeNameLink">SplitLogManager.TerminationStatus</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.master.<a href="../../../../../org/apache/hadoop/hbase/master/MasterRpcServices.BalanceSwitchMode.html" title="enum in org.apache.hadoop.hbase.master"><span class="typeNameLink">MasterRpcServices.BalanceSwitchMode</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.master.<a href="../../../../../org/apache/hadoop/hbase/master/RegionState.State.html" title="enum in org.apache.hadoop.hbase.master"><span class="typeNameLink">RegionState.State</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.master.<a href="../../../../../org/apache/hadoop/hbase/master/SplitLogManager.ResubmitDirective.html" title="enum in org.apache.hadoop.hbase.master"><span class="typeNameLink">SplitLogManager.ResubmitDirective</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.master.<a href="../../../../../org/apache/hadoop/hbase/master/MetricsMasterSourceFactoryImpl.FactoryStorage.html" title="enum in org.apache.hadoop.hbase.master"><span class="typeNameLink">MetricsMasterSourceFactoryImpl.FactoryStorage</span></a></li>
 </ul>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/c54c242b/devapidocs/org/apache/hadoop/hbase/monitoring/package-tree.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/monitoring/package-tree.html b/devapidocs/org/apache/hadoop/hbase/monitoring/package-tree.html
index c43c370..d264c19 100644
--- a/devapidocs/org/apache/hadoop/hbase/monitoring/package-tree.html
+++ b/devapidocs/org/apache/hadoop/hbase/monitoring/package-tree.html
@@ -125,8 +125,8 @@
 <ul>
 <li type="circle">java.lang.<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Enum.html?is-external=true" title="class or interface in java.lang"><span class="typeNameLink">Enum</span></a>&lt;E&gt; (implements java.lang.<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Comparable.html?is-external=true" title="class or interface in java.lang">Comparable</a>&lt;T&gt;, java.io.<a href="http://docs.oracle.com/javase/8/docs/api/java/io/Serializable.html?is-external=true" title="class or interface in java.io">Serializable</a>)
 <ul>
-<li type="circle">org.apache.hadoop.hbase.monitoring.<a href="../../../../../org/apache/hadoop/hbase/monitoring/TaskMonitor.TaskFilter.TaskType.html" title="enum in org.apache.hadoop.hbase.monitoring"><span class="typeNameLink">TaskMonitor.TaskFilter.TaskType</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.monitoring.<a href="../../../../../org/apache/hadoop/hbase/monitoring/MonitoredTask.State.html" title="enum in org.apache.hadoop.hbase.monitoring"><span class="typeNameLink">MonitoredTask.State</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.monitoring.<a href="../../../../../org/apache/hadoop/hbase/monitoring/TaskMonitor.TaskFilter.TaskType.html" title="enum in org.apache.hadoop.hbase.monitoring"><span class="typeNameLink">TaskMonitor.TaskFilter.TaskType</span></a></li>
 </ul>
 </li>
 </ul>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/c54c242b/devapidocs/org/apache/hadoop/hbase/package-tree.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/package-tree.html b/devapidocs/org/apache/hadoop/hbase/package-tree.html
index 1733fb6..a227c10 100644
--- a/devapidocs/org/apache/hadoop/hbase/package-tree.html
+++ b/devapidocs/org/apache/hadoop/hbase/package-tree.html
@@ -438,18 +438,18 @@
 <ul>
 <li type="circle">java.lang.<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Enum.html?is-external=true" title="class or interface in java.lang"><span class="typeNameLink">Enum</span></a>&lt;E&gt; (implements java.lang.<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Comparable.html?is-external=true" title="class or interface in java.lang">Comparable</a>&lt;T&gt;, java.io.<a href="http://docs.oracle.com/javase/8/docs/api/java/io/Serializable.html?is-external=true" title="class or interface in java.io">Serializable</a>)
 <ul>
-<li type="circle">org.apache.hadoop.hbase.<a href="../../../../org/apache/hadoop/hbase/CellBuilder.DataType.html" title="enum in org.apache.hadoop.hbase"><span class="typeNameLink">CellBuilder.DataType</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.<a href="../../../../org/apache/hadoop/hbase/MetaTableAccessor.QueryType.html" title="enum in org.apache.hadoop.hbase"><span class="typeNameLink">MetaTableAccessor.QueryType</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.<a href="../../../../org/apache/hadoop/hbase/HealthChecker.HealthCheckerExitStatus.html" title="enum in org.apache.hadoop.hbase"><span class="typeNameLink">HealthChecker.HealthCheckerExitStatus</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.<a href="../../../../org/apache/hadoop/hbase/MemoryCompactionPolicy.html" title="enum in org.apache.hadoop.hbase"><span class="typeNameLink">MemoryCompactionPolicy</span></a></li>
-<li type="circle">org.apache.hadoop.hbase.<a href="../../../../org/apache/hadoop/hbase/KeepDeletedCells.html" title="enum in org.apache.hadoop.hbase"><span class="typeNameLink">KeepDeletedCells</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.<a href="../../../../org/apache/hadoop/hbase/HConstants.OperationStatusCode.html" title="enum in org.apache.hadoop.hbase"><span class="typeNameLink">HConstants.OperationStatusCode</span></a></li>
-<li type="circle">org.apache.hadoop.hbase.<a href="../../../../org/apache/hadoop/hbase/ProcedureState.html" title="enum in org.apache.hadoop.hbase"><span class="typeNameLink">ProcedureState</span></a></li>
-<li type="circle">org.apache.hadoop.hbase.<a href="../../../../org/apache/hadoop/hbase/MetaTableAccessor.QueryType.html" title="enum in org.apache.hadoop.hbase"><span class="typeNameLink">MetaTableAccessor.QueryType</span></a></li>
-<li type="circle">org.apache.hadoop.hbase.<a href="../../../../org/apache/hadoop/hbase/ClusterStatus.Option.html" title="enum in org.apache.hadoop.hbase"><span class="typeNameLink">ClusterStatus.Option</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.<a href="../../../../org/apache/hadoop/hbase/CompatibilitySingletonFactory.SingletonStorage.html" title="enum in org.apache.hadoop.hbase"><span class="typeNameLink">CompatibilitySingletonFactory.SingletonStorage</span></a></li>
-<li type="circle">org.apache.hadoop.hbase.<a href="../../../../org/apache/hadoop/hbase/Coprocessor.State.html" title="enum in org.apache.hadoop.hbase"><span class="typeNameLink">Coprocessor.State</span></a></li>
-<li type="circle">org.apache.hadoop.hbase.<a href="../../../../org/apache/hadoop/hbase/HealthChecker.HealthCheckerExitStatus.html" title="enum in org.apache.hadoop.hbase"><span class="typeNameLink">HealthChecker.HealthCheckerExitStatus</span></a></li>
-<li type="circle">org.apache.hadoop.hbase.<a href="../../../../org/apache/hadoop/hbase/CellBuilderType.html" title="enum in org.apache.hadoop.hbase"><span class="typeNameLink">CellBuilderType</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.<a href="../../../../org/apache/hadoop/hbase/ProcedureState.html" title="enum in org.apache.hadoop.hbase"><span class="typeNameLink">ProcedureState</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.<a href="../../../../org/apache/hadoop/hbase/KeepDeletedCells.html" title="enum in org.apache.hadoop.hbase"><span class="typeNameLink">KeepDeletedCells</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.<a href="../../../../org/apache/hadoop/hbase/KeyValue.Type.html" title="enum in org.apache.hadoop.hbase"><span class="typeNameLink">KeyValue.Type</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.<a href="../../../../org/apache/hadoop/hbase/CellBuilder.DataType.html" title="enum in org.apache.hadoop.hbase"><span class="typeNameLink">CellBuilder.DataType</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.<a href="../../../../org/apache/hadoop/hbase/CellBuilderType.html" title="enum in org.apache.hadoop.hbase"><span class="typeNameLink">CellBuilderType</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.<a href="../../../../org/apache/hadoop/hbase/Coprocessor.State.html" title="enum in org.apache.hadoop.hbase"><span class="typeNameLink">Coprocessor.State</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.<a href="../../../../org/apache/hadoop/hbase/ClusterStatus.Option.html" title="enum in org.apache.hadoop.hbase"><span class="typeNameLink">ClusterStatus.Option</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.<a href="../../../../org/apache/hadoop/hbase/CompareOperator.html" title="enum in org.apache.hadoop.hbase"><span class="typeNameLink">CompareOperator</span></a></li>
 </ul>
 </li>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/c54c242b/devapidocs/org/apache/hadoop/hbase/package-use.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/package-use.html b/devapidocs/org/apache/hadoop/hbase/package-use.html
index dda7b8d..24af7e7 100644
--- a/devapidocs/org/apache/hadoop/hbase/package-use.html
+++ b/devapidocs/org/apache/hadoop/hbase/package-use.html
@@ -2895,14 +2895,6 @@ service.</div>
 <div class="block">All hbase specific IOExceptions should be subclasses of HBaseIOException</div>
 </td>
 </tr>
-<tr class="altColor">
-<td class="colOne"><a href="../../../../org/apache/hadoop/hbase/class-use/HRegionInfo.html#org.apache.hadoop.hbase.regionserver.wal">HRegionInfo</a>
-<div class="block"><span class="deprecatedLabel">Deprecated.</span>&nbsp;
-<div class="block"><span class="deprecationComment">As of release 2.0.0, this will be removed in HBase 3.0.0.
-             use <a href="../../../../org/apache/hadoop/hbase/client/RegionInfoBuilder.html" title="class in org.apache.hadoop.hbase.client"><code>RegionInfoBuilder</code></a> to build <a href="../../../../org/apache/hadoop/hbase/client/RegionInfo.html" title="interface in org.apache.hadoop.hbase.client"><code>RegionInfo</code></a>.</span></div>
-</div>
-</td>
-</tr>
 </tbody>
 </table>
 </li>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/c54c242b/devapidocs/org/apache/hadoop/hbase/procedure2/package-tree.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/procedure2/package-tree.html b/devapidocs/org/apache/hadoop/hbase/procedure2/package-tree.html
index 8598438..927642b 100644
--- a/devapidocs/org/apache/hadoop/hbase/procedure2/package-tree.html
+++ b/devapidocs/org/apache/hadoop/hbase/procedure2/package-tree.html
@@ -203,11 +203,11 @@
 <ul>
 <li type="circle">java.lang.<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Enum.html?is-external=true" title="class or interface in java.lang"><span class="typeNameLink">Enum</span></a>&lt;E&gt; (implements java.lang.<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Comparable.html?is-external=true" title="class or interface in java.lang">Comparable</a>&lt;T&gt;, java.io.<a href="http://docs.oracle.com/javase/8/docs/api/java/io/Serializable.html?is-external=true" title="class or interface in java.io">Serializable</a>)
 <ul>
-<li type="circle">org.apache.hadoop.hbase.procedure2.<a href="../../../../../org/apache/hadoop/hbase/procedure2/LockedResourceType.html" title="enum in org.apache.hadoop.hbase.procedure2"><span class="typeNameLink">LockedResourceType</span></a></li>
-<li type="circle">org.apache.hadoop.hbase.procedure2.<a href="../../../../../org/apache/hadoop/hbase/procedure2/Procedure.LockState.html" title="enum in org.apache.hadoop.hbase.procedure2"><span class="typeNameLink">Procedure.LockState</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.procedure2.<a href="../../../../../org/apache/hadoop/hbase/procedure2/RootProcedureState.State.html" title="enum in org.apache.hadoop.hbase.procedure2"><span class="typeNameLink">RootProcedureState.State</span></a></li>
-<li type="circle">org.apache.hadoop.hbase.procedure2.<a href="../../../../../org/apache/hadoop/hbase/procedure2/LockType.html" title="enum in org.apache.hadoop.hbase.procedure2"><span class="typeNameLink">LockType</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.procedure2.<a href="../../../../../org/apache/hadoop/hbase/procedure2/LockedResourceType.html" title="enum in org.apache.hadoop.hbase.procedure2"><span class="typeNameLink">LockedResourceType</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.procedure2.<a href="../../../../../org/apache/hadoop/hbase/procedure2/StateMachineProcedure.Flow.html" title="enum in org.apache.hadoop.hbase.procedure2"><span class="typeNameLink">StateMachineProcedure.Flow</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.procedure2.<a href="../../../../../org/apache/hadoop/hbase/procedure2/LockType.html" title="enum in org.apache.hadoop.hbase.procedure2"><span class="typeNameLink">LockType</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.procedure2.<a href="../../../../../org/apache/hadoop/hbase/procedure2/Procedure.LockState.html" title="enum in org.apache.hadoop.hbase.procedure2"><span class="typeNameLink">Procedure.LockState</span></a></li>
 </ul>
 </li>
 </ul>


[27/51] [partial] hbase-site git commit: Published site at .

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/c54c242b/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/HRegion.FlushResult.html
----------------------------------------------------------------------
diff --git a/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/HRegion.FlushResult.html b/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/HRegion.FlushResult.html
index 3edfbef..9707b2c 100644
--- a/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/HRegion.FlushResult.html
+++ b/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/HRegion.FlushResult.html
@@ -2459,5936 +2459,5935 @@
 <span class="sourceLineNo">2451</span>      }<a name="line.2451"></a>
 <span class="sourceLineNo">2452</span><a name="line.2452"></a>
 <span class="sourceLineNo">2453</span>      for (HStore s : storesToFlush) {<a name="line.2453"></a>
-<span class="sourceLineNo">2454</span>        MemStoreSize flushableSize = s.getFlushableSize();<a name="line.2454"></a>
-<span class="sourceLineNo">2455</span>        totalSizeOfFlushableStores.incMemStoreSize(flushableSize);<a name="line.2455"></a>
-<span class="sourceLineNo">2456</span>        storeFlushCtxs.put(s.getColumnFamilyDescriptor().getName(),<a name="line.2456"></a>
-<span class="sourceLineNo">2457</span>          s.createFlushContext(flushOpSeqId, tracker));<a name="line.2457"></a>
-<span class="sourceLineNo">2458</span>        // for writing stores to WAL<a name="line.2458"></a>
-<span class="sourceLineNo">2459</span>        committedFiles.put(s.getColumnFamilyDescriptor().getName(), null);<a name="line.2459"></a>
-<span class="sourceLineNo">2460</span>        storeFlushableSize.put(s.getColumnFamilyDescriptor().getName(), flushableSize);<a name="line.2460"></a>
-<span class="sourceLineNo">2461</span>      }<a name="line.2461"></a>
-<span class="sourceLineNo">2462</span><a name="line.2462"></a>
-<span class="sourceLineNo">2463</span>      // write the snapshot start to WAL<a name="line.2463"></a>
-<span class="sourceLineNo">2464</span>      if (wal != null &amp;&amp; !writestate.readOnly) {<a name="line.2464"></a>
-<span class="sourceLineNo">2465</span>        FlushDescriptor desc = ProtobufUtil.toFlushDescriptor(FlushAction.START_FLUSH,<a name="line.2465"></a>
-<span class="sourceLineNo">2466</span>            getRegionInfo(), flushOpSeqId, committedFiles);<a name="line.2466"></a>
-<span class="sourceLineNo">2467</span>        // No sync. Sync is below where no updates lock and we do FlushAction.COMMIT_FLUSH<a name="line.2467"></a>
-<span class="sourceLineNo">2468</span>        WALUtil.writeFlushMarker(wal, this.getReplicationScope(), getRegionInfo(), desc, false,<a name="line.2468"></a>
-<span class="sourceLineNo">2469</span>            mvcc);<a name="line.2469"></a>
-<span class="sourceLineNo">2470</span>      }<a name="line.2470"></a>
-<span class="sourceLineNo">2471</span><a name="line.2471"></a>
-<span class="sourceLineNo">2472</span>      // Prepare flush (take a snapshot)<a name="line.2472"></a>
-<span class="sourceLineNo">2473</span>      for (StoreFlushContext flush : storeFlushCtxs.values()) {<a name="line.2473"></a>
-<span class="sourceLineNo">2474</span>        flush.prepare();<a name="line.2474"></a>
-<span class="sourceLineNo">2475</span>      }<a name="line.2475"></a>
-<span class="sourceLineNo">2476</span>    } catch (IOException ex) {<a name="line.2476"></a>
-<span class="sourceLineNo">2477</span>      doAbortFlushToWAL(wal, flushOpSeqId, committedFiles);<a name="line.2477"></a>
-<span class="sourceLineNo">2478</span>      throw ex;<a name="line.2478"></a>
-<span class="sourceLineNo">2479</span>    } finally {<a name="line.2479"></a>
-<span class="sourceLineNo">2480</span>      this.updatesLock.writeLock().unlock();<a name="line.2480"></a>
-<span class="sourceLineNo">2481</span>    }<a name="line.2481"></a>
-<span class="sourceLineNo">2482</span>    String s = "Finished memstore snapshotting " + this + ", syncing WAL and waiting on mvcc, " +<a name="line.2482"></a>
-<span class="sourceLineNo">2483</span>        "flushsize=" + totalSizeOfFlushableStores;<a name="line.2483"></a>
-<span class="sourceLineNo">2484</span>    status.setStatus(s);<a name="line.2484"></a>
-<span class="sourceLineNo">2485</span>    doSyncOfUnflushedWALChanges(wal, getRegionInfo());<a name="line.2485"></a>
-<span class="sourceLineNo">2486</span>    return new PrepareFlushResult(storeFlushCtxs, committedFiles, storeFlushableSize, startTime,<a name="line.2486"></a>
-<span class="sourceLineNo">2487</span>        flushOpSeqId, flushedSeqId, totalSizeOfFlushableStores);<a name="line.2487"></a>
-<span class="sourceLineNo">2488</span>  }<a name="line.2488"></a>
-<span class="sourceLineNo">2489</span><a name="line.2489"></a>
-<span class="sourceLineNo">2490</span>  /**<a name="line.2490"></a>
-<span class="sourceLineNo">2491</span>   * Utility method broken out of internalPrepareFlushCache so that method is smaller.<a name="line.2491"></a>
-<span class="sourceLineNo">2492</span>   */<a name="line.2492"></a>
-<span class="sourceLineNo">2493</span>  private void logFatLineOnFlush(Collection&lt;HStore&gt; storesToFlush, long sequenceId) {<a name="line.2493"></a>
-<span class="sourceLineNo">2494</span>    if (!LOG.isInfoEnabled()) {<a name="line.2494"></a>
-<span class="sourceLineNo">2495</span>      return;<a name="line.2495"></a>
-<span class="sourceLineNo">2496</span>    }<a name="line.2496"></a>
-<span class="sourceLineNo">2497</span>    // Log a fat line detailing what is being flushed.<a name="line.2497"></a>
-<span class="sourceLineNo">2498</span>    StringBuilder perCfExtras = null;<a name="line.2498"></a>
-<span class="sourceLineNo">2499</span>    if (!isAllFamilies(storesToFlush)) {<a name="line.2499"></a>
-<span class="sourceLineNo">2500</span>      perCfExtras = new StringBuilder();<a name="line.2500"></a>
-<span class="sourceLineNo">2501</span>      for (HStore store: storesToFlush) {<a name="line.2501"></a>
-<span class="sourceLineNo">2502</span>        perCfExtras.append("; ").append(store.getColumnFamilyName());<a name="line.2502"></a>
-<span class="sourceLineNo">2503</span>        perCfExtras.append("=")<a name="line.2503"></a>
-<span class="sourceLineNo">2504</span>            .append(StringUtils.byteDesc(store.getFlushableSize().getDataSize()));<a name="line.2504"></a>
-<span class="sourceLineNo">2505</span>      }<a name="line.2505"></a>
-<span class="sourceLineNo">2506</span>    }<a name="line.2506"></a>
-<span class="sourceLineNo">2507</span>    LOG.info("Flushing " + + storesToFlush.size() + "/" + stores.size() +<a name="line.2507"></a>
-<span class="sourceLineNo">2508</span>        " column families, memstore=" + StringUtils.byteDesc(this.memstoreDataSize.get()) +<a name="line.2508"></a>
-<span class="sourceLineNo">2509</span>        ((perCfExtras != null &amp;&amp; perCfExtras.length() &gt; 0)? perCfExtras.toString(): "") +<a name="line.2509"></a>
-<span class="sourceLineNo">2510</span>        ((wal != null) ? "" : "; WAL is null, using passed sequenceid=" + sequenceId));<a name="line.2510"></a>
-<span class="sourceLineNo">2511</span>  }<a name="line.2511"></a>
-<span class="sourceLineNo">2512</span><a name="line.2512"></a>
-<span class="sourceLineNo">2513</span>  private void doAbortFlushToWAL(final WAL wal, final long flushOpSeqId,<a name="line.2513"></a>
-<span class="sourceLineNo">2514</span>      final Map&lt;byte[], List&lt;Path&gt;&gt; committedFiles) {<a name="line.2514"></a>
-<span class="sourceLineNo">2515</span>    if (wal == null) return;<a name="line.2515"></a>
-<span class="sourceLineNo">2516</span>    try {<a name="line.2516"></a>
-<span class="sourceLineNo">2517</span>      FlushDescriptor desc = ProtobufUtil.toFlushDescriptor(FlushAction.ABORT_FLUSH,<a name="line.2517"></a>
-<span class="sourceLineNo">2518</span>          getRegionInfo(), flushOpSeqId, committedFiles);<a name="line.2518"></a>
-<span class="sourceLineNo">2519</span>      WALUtil.writeFlushMarker(wal, this.getReplicationScope(), getRegionInfo(), desc, false,<a name="line.2519"></a>
-<span class="sourceLineNo">2520</span>          mvcc);<a name="line.2520"></a>
-<span class="sourceLineNo">2521</span>    } catch (Throwable t) {<a name="line.2521"></a>
-<span class="sourceLineNo">2522</span>      LOG.warn("Received unexpected exception trying to write ABORT_FLUSH marker to WAL:" +<a name="line.2522"></a>
-<span class="sourceLineNo">2523</span>          StringUtils.stringifyException(t));<a name="line.2523"></a>
-<span class="sourceLineNo">2524</span>      // ignore this since we will be aborting the RS with DSE.<a name="line.2524"></a>
-<span class="sourceLineNo">2525</span>    }<a name="line.2525"></a>
-<span class="sourceLineNo">2526</span>    // we have called wal.startCacheFlush(), now we have to abort it<a name="line.2526"></a>
-<span class="sourceLineNo">2527</span>    wal.abortCacheFlush(this.getRegionInfo().getEncodedNameAsBytes());<a name="line.2527"></a>
-<span class="sourceLineNo">2528</span>  }<a name="line.2528"></a>
-<span class="sourceLineNo">2529</span><a name="line.2529"></a>
-<span class="sourceLineNo">2530</span>  /**<a name="line.2530"></a>
-<span class="sourceLineNo">2531</span>   * Sync unflushed WAL changes. See HBASE-8208 for details<a name="line.2531"></a>
-<span class="sourceLineNo">2532</span>   */<a name="line.2532"></a>
-<span class="sourceLineNo">2533</span>  private static void doSyncOfUnflushedWALChanges(final WAL wal, final RegionInfo hri)<a name="line.2533"></a>
-<span class="sourceLineNo">2534</span>  throws IOException {<a name="line.2534"></a>
-<span class="sourceLineNo">2535</span>    if (wal == null) {<a name="line.2535"></a>
-<span class="sourceLineNo">2536</span>      return;<a name="line.2536"></a>
-<span class="sourceLineNo">2537</span>    }<a name="line.2537"></a>
-<span class="sourceLineNo">2538</span>    try {<a name="line.2538"></a>
-<span class="sourceLineNo">2539</span>      wal.sync(); // ensure that flush marker is sync'ed<a name="line.2539"></a>
-<span class="sourceLineNo">2540</span>    } catch (IOException ioe) {<a name="line.2540"></a>
-<span class="sourceLineNo">2541</span>      wal.abortCacheFlush(hri.getEncodedNameAsBytes());<a name="line.2541"></a>
-<span class="sourceLineNo">2542</span>      throw ioe;<a name="line.2542"></a>
-<span class="sourceLineNo">2543</span>    }<a name="line.2543"></a>
-<span class="sourceLineNo">2544</span>  }<a name="line.2544"></a>
-<span class="sourceLineNo">2545</span><a name="line.2545"></a>
-<span class="sourceLineNo">2546</span>  /**<a name="line.2546"></a>
-<span class="sourceLineNo">2547</span>   * @return True if passed Set is all families in the region.<a name="line.2547"></a>
-<span class="sourceLineNo">2548</span>   */<a name="line.2548"></a>
-<span class="sourceLineNo">2549</span>  private boolean isAllFamilies(Collection&lt;HStore&gt; families) {<a name="line.2549"></a>
-<span class="sourceLineNo">2550</span>    return families == null || this.stores.size() == families.size();<a name="line.2550"></a>
-<span class="sourceLineNo">2551</span>  }<a name="line.2551"></a>
-<span class="sourceLineNo">2552</span><a name="line.2552"></a>
-<span class="sourceLineNo">2553</span>  /**<a name="line.2553"></a>
-<span class="sourceLineNo">2554</span>   * Writes a marker to WAL indicating a flush is requested but cannot be complete due to various<a name="line.2554"></a>
-<span class="sourceLineNo">2555</span>   * reasons. Ignores exceptions from WAL. Returns whether the write succeeded.<a name="line.2555"></a>
-<span class="sourceLineNo">2556</span>   * @param wal<a name="line.2556"></a>
-<span class="sourceLineNo">2557</span>   * @return whether WAL write was successful<a name="line.2557"></a>
-<span class="sourceLineNo">2558</span>   */<a name="line.2558"></a>
-<span class="sourceLineNo">2559</span>  private boolean writeFlushRequestMarkerToWAL(WAL wal, boolean writeFlushWalMarker) {<a name="line.2559"></a>
-<span class="sourceLineNo">2560</span>    if (writeFlushWalMarker &amp;&amp; wal != null &amp;&amp; !writestate.readOnly) {<a name="line.2560"></a>
-<span class="sourceLineNo">2561</span>      FlushDescriptor desc = ProtobufUtil.toFlushDescriptor(FlushAction.CANNOT_FLUSH,<a name="line.2561"></a>
-<span class="sourceLineNo">2562</span>        getRegionInfo(), -1, new TreeMap&lt;&gt;(Bytes.BYTES_COMPARATOR));<a name="line.2562"></a>
-<span class="sourceLineNo">2563</span>      try {<a name="line.2563"></a>
-<span class="sourceLineNo">2564</span>        WALUtil.writeFlushMarker(wal, this.getReplicationScope(), getRegionInfo(), desc, true,<a name="line.2564"></a>
-<span class="sourceLineNo">2565</span>            mvcc);<a name="line.2565"></a>
-<span class="sourceLineNo">2566</span>        return true;<a name="line.2566"></a>
-<span class="sourceLineNo">2567</span>      } catch (IOException e) {<a name="line.2567"></a>
-<span class="sourceLineNo">2568</span>        LOG.warn(getRegionInfo().getEncodedName() + " : "<a name="line.2568"></a>
-<span class="sourceLineNo">2569</span>            + "Received exception while trying to write the flush request to wal", e);<a name="line.2569"></a>
-<span class="sourceLineNo">2570</span>      }<a name="line.2570"></a>
-<span class="sourceLineNo">2571</span>    }<a name="line.2571"></a>
-<span class="sourceLineNo">2572</span>    return false;<a name="line.2572"></a>
-<span class="sourceLineNo">2573</span>  }<a name="line.2573"></a>
-<span class="sourceLineNo">2574</span><a name="line.2574"></a>
-<span class="sourceLineNo">2575</span>  @edu.umd.cs.findbugs.annotations.SuppressWarnings(value="NN_NAKED_NOTIFY",<a name="line.2575"></a>
-<span class="sourceLineNo">2576</span>      justification="Intentional; notify is about completed flush")<a name="line.2576"></a>
-<span class="sourceLineNo">2577</span>  protected FlushResultImpl internalFlushCacheAndCommit(WAL wal, MonitoredTask status,<a name="line.2577"></a>
-<span class="sourceLineNo">2578</span>      PrepareFlushResult prepareResult, Collection&lt;HStore&gt; storesToFlush) throws IOException {<a name="line.2578"></a>
-<span class="sourceLineNo">2579</span>    // prepare flush context is carried via PrepareFlushResult<a name="line.2579"></a>
-<span class="sourceLineNo">2580</span>    TreeMap&lt;byte[], StoreFlushContext&gt; storeFlushCtxs = prepareResult.storeFlushCtxs;<a name="line.2580"></a>
-<span class="sourceLineNo">2581</span>    TreeMap&lt;byte[], List&lt;Path&gt;&gt; committedFiles = prepareResult.committedFiles;<a name="line.2581"></a>
-<span class="sourceLineNo">2582</span>    long startTime = prepareResult.startTime;<a name="line.2582"></a>
-<span class="sourceLineNo">2583</span>    long flushOpSeqId = prepareResult.flushOpSeqId;<a name="line.2583"></a>
-<span class="sourceLineNo">2584</span>    long flushedSeqId = prepareResult.flushedSeqId;<a name="line.2584"></a>
-<span class="sourceLineNo">2585</span><a name="line.2585"></a>
-<span class="sourceLineNo">2586</span>    String s = "Flushing stores of " + this;<a name="line.2586"></a>
-<span class="sourceLineNo">2587</span>    status.setStatus(s);<a name="line.2587"></a>
-<span class="sourceLineNo">2588</span>    if (LOG.isTraceEnabled()) LOG.trace(s);<a name="line.2588"></a>
-<span class="sourceLineNo">2589</span><a name="line.2589"></a>
-<span class="sourceLineNo">2590</span>    // Any failure from here on out will be catastrophic requiring server<a name="line.2590"></a>
-<span class="sourceLineNo">2591</span>    // restart so wal content can be replayed and put back into the memstore.<a name="line.2591"></a>
-<span class="sourceLineNo">2592</span>    // Otherwise, the snapshot content while backed up in the wal, it will not<a name="line.2592"></a>
-<span class="sourceLineNo">2593</span>    // be part of the current running servers state.<a name="line.2593"></a>
-<span class="sourceLineNo">2594</span>    boolean compactionRequested = false;<a name="line.2594"></a>
-<span class="sourceLineNo">2595</span>    long flushedOutputFileSize = 0;<a name="line.2595"></a>
-<span class="sourceLineNo">2596</span>    try {<a name="line.2596"></a>
-<span class="sourceLineNo">2597</span>      // A.  Flush memstore to all the HStores.<a name="line.2597"></a>
-<span class="sourceLineNo">2598</span>      // Keep running vector of all store files that includes both old and the<a name="line.2598"></a>
-<span class="sourceLineNo">2599</span>      // just-made new flush store file. The new flushed file is still in the<a name="line.2599"></a>
-<span class="sourceLineNo">2600</span>      // tmp directory.<a name="line.2600"></a>
-<span class="sourceLineNo">2601</span><a name="line.2601"></a>
-<span class="sourceLineNo">2602</span>      for (StoreFlushContext flush : storeFlushCtxs.values()) {<a name="line.2602"></a>
-<span class="sourceLineNo">2603</span>        flush.flushCache(status);<a name="line.2603"></a>
-<span class="sourceLineNo">2604</span>      }<a name="line.2604"></a>
-<span class="sourceLineNo">2605</span><a name="line.2605"></a>
-<span class="sourceLineNo">2606</span>      // Switch snapshot (in memstore) -&gt; new hfile (thus causing<a name="line.2606"></a>
-<span class="sourceLineNo">2607</span>      // all the store scanners to reset/reseek).<a name="line.2607"></a>
-<span class="sourceLineNo">2608</span>      Iterator&lt;HStore&gt; it = storesToFlush.iterator();<a name="line.2608"></a>
-<span class="sourceLineNo">2609</span>      // stores.values() and storeFlushCtxs have same order<a name="line.2609"></a>
-<span class="sourceLineNo">2610</span>      for (StoreFlushContext flush : storeFlushCtxs.values()) {<a name="line.2610"></a>
-<span class="sourceLineNo">2611</span>        boolean needsCompaction = flush.commit(status);<a name="line.2611"></a>
-<span class="sourceLineNo">2612</span>        if (needsCompaction) {<a name="line.2612"></a>
-<span class="sourceLineNo">2613</span>          compactionRequested = true;<a name="line.2613"></a>
-<span class="sourceLineNo">2614</span>        }<a name="line.2614"></a>
-<span class="sourceLineNo">2615</span>        byte[] storeName = it.next().getColumnFamilyDescriptor().getName();<a name="line.2615"></a>
-<span class="sourceLineNo">2616</span>        List&lt;Path&gt; storeCommittedFiles = flush.getCommittedFiles();<a name="line.2616"></a>
-<span class="sourceLineNo">2617</span>        committedFiles.put(storeName, storeCommittedFiles);<a name="line.2617"></a>
-<span class="sourceLineNo">2618</span>        // Flush committed no files, indicating flush is empty or flush was canceled<a name="line.2618"></a>
-<span class="sourceLineNo">2619</span>        if (storeCommittedFiles == null || storeCommittedFiles.isEmpty()) {<a name="line.2619"></a>
-<span class="sourceLineNo">2620</span>          MemStoreSize storeFlushableSize = prepareResult.storeFlushableSize.get(storeName);<a name="line.2620"></a>
-<span class="sourceLineNo">2621</span>          prepareResult.totalFlushableSize.decMemStoreSize(storeFlushableSize);<a name="line.2621"></a>
-<span class="sourceLineNo">2622</span>        }<a name="line.2622"></a>
-<span class="sourceLineNo">2623</span>        flushedOutputFileSize += flush.getOutputFileSize();<a name="line.2623"></a>
-<span class="sourceLineNo">2624</span>      }<a name="line.2624"></a>
-<span class="sourceLineNo">2625</span>      storeFlushCtxs.clear();<a name="line.2625"></a>
-<span class="sourceLineNo">2626</span><a name="line.2626"></a>
-<span class="sourceLineNo">2627</span>      // Set down the memstore size by amount of flush.<a name="line.2627"></a>
-<span class="sourceLineNo">2628</span>      this.decrMemStoreSize(prepareResult.totalFlushableSize);<a name="line.2628"></a>
-<span class="sourceLineNo">2629</span><a name="line.2629"></a>
-<span class="sourceLineNo">2630</span>      if (wal != null) {<a name="line.2630"></a>
-<span class="sourceLineNo">2631</span>        // write flush marker to WAL. If fail, we should throw DroppedSnapshotException<a name="line.2631"></a>
-<span class="sourceLineNo">2632</span>        FlushDescriptor desc = ProtobufUtil.toFlushDescriptor(FlushAction.COMMIT_FLUSH,<a name="line.2632"></a>
-<span class="sourceLineNo">2633</span>          getRegionInfo(), flushOpSeqId, committedFiles);<a name="line.2633"></a>
-<span class="sourceLineNo">2634</span>        WALUtil.writeFlushMarker(wal, this.getReplicationScope(), getRegionInfo(), desc, true,<a name="line.2634"></a>
-<span class="sourceLineNo">2635</span>            mvcc);<a name="line.2635"></a>
-<span class="sourceLineNo">2636</span>      }<a name="line.2636"></a>
-<span class="sourceLineNo">2637</span>    } catch (Throwable t) {<a name="line.2637"></a>
-<span class="sourceLineNo">2638</span>      // An exception here means that the snapshot was not persisted.<a name="line.2638"></a>
-<span class="sourceLineNo">2639</span>      // The wal needs to be replayed so its content is restored to memstore.<a name="line.2639"></a>
-<span class="sourceLineNo">2640</span>      // Currently, only a server restart will do this.<a name="line.2640"></a>
-<span class="sourceLineNo">2641</span>      // We used to only catch IOEs but its possible that we'd get other<a name="line.2641"></a>
-<span class="sourceLineNo">2642</span>      // exceptions -- e.g. HBASE-659 was about an NPE -- so now we catch<a name="line.2642"></a>
-<span class="sourceLineNo">2643</span>      // all and sundry.<a name="line.2643"></a>
-<span class="sourceLineNo">2644</span>      if (wal != null) {<a name="line.2644"></a>
-<span class="sourceLineNo">2645</span>        try {<a name="line.2645"></a>
-<span class="sourceLineNo">2646</span>          FlushDescriptor desc = ProtobufUtil.toFlushDescriptor(FlushAction.ABORT_FLUSH,<a name="line.2646"></a>
-<span class="sourceLineNo">2647</span>            getRegionInfo(), flushOpSeqId, committedFiles);<a name="line.2647"></a>
-<span class="sourceLineNo">2648</span>          WALUtil.writeFlushMarker(wal, this.replicationScope, getRegionInfo(), desc, false, mvcc);<a name="line.2648"></a>
-<span class="sourceLineNo">2649</span>        } catch (Throwable ex) {<a name="line.2649"></a>
-<span class="sourceLineNo">2650</span>          LOG.warn(getRegionInfo().getEncodedName() + " : "<a name="line.2650"></a>
-<span class="sourceLineNo">2651</span>              + "failed writing ABORT_FLUSH marker to WAL", ex);<a name="line.2651"></a>
-<span class="sourceLineNo">2652</span>          // ignore this since we will be aborting the RS with DSE.<a name="line.2652"></a>
-<span class="sourceLineNo">2653</span>        }<a name="line.2653"></a>
-<span class="sourceLineNo">2654</span>        wal.abortCacheFlush(this.getRegionInfo().getEncodedNameAsBytes());<a name="line.2654"></a>
-<span class="sourceLineNo">2655</span>      }<a name="line.2655"></a>
-<span class="sourceLineNo">2656</span>      DroppedSnapshotException dse = new DroppedSnapshotException("region: " +<a name="line.2656"></a>
-<span class="sourceLineNo">2657</span>          Bytes.toStringBinary(getRegionInfo().getRegionName()));<a name="line.2657"></a>
-<span class="sourceLineNo">2658</span>      dse.initCause(t);<a name="line.2658"></a>
-<span class="sourceLineNo">2659</span>      status.abort("Flush failed: " + StringUtils.stringifyException(t));<a name="line.2659"></a>
-<span class="sourceLineNo">2660</span><a name="line.2660"></a>
-<span class="sourceLineNo">2661</span>      // Callers for flushcache() should catch DroppedSnapshotException and abort the region server.<a name="line.2661"></a>
-<span class="sourceLineNo">2662</span>      // However, since we may have the region read lock, we cannot call close(true) here since<a name="line.2662"></a>
-<span class="sourceLineNo">2663</span>      // we cannot promote to a write lock. Instead we are setting closing so that all other region<a name="line.2663"></a>
-<span class="sourceLineNo">2664</span>      // operations except for close will be rejected.<a name="line.2664"></a>
-<span class="sourceLineNo">2665</span>      this.closing.set(true);<a name="line.2665"></a>
-<span class="sourceLineNo">2666</span><a name="line.2666"></a>
-<span class="sourceLineNo">2667</span>      if (rsServices != null) {<a name="line.2667"></a>
-<span class="sourceLineNo">2668</span>        // This is a safeguard against the case where the caller fails to explicitly handle aborting<a name="line.2668"></a>
-<span class="sourceLineNo">2669</span>        rsServices.abort("Replay of WAL required. Forcing server shutdown", dse);<a name="line.2669"></a>
-<span class="sourceLineNo">2670</span>      }<a name="line.2670"></a>
-<span class="sourceLineNo">2671</span><a name="line.2671"></a>
-<span class="sourceLineNo">2672</span>      throw dse;<a name="line.2672"></a>
-<span class="sourceLineNo">2673</span>    }<a name="line.2673"></a>
-<span class="sourceLineNo">2674</span><a name="line.2674"></a>
-<span class="sourceLineNo">2675</span>    // If we get to here, the HStores have been written.<a name="line.2675"></a>
-<span class="sourceLineNo">2676</span>    if (wal != null) {<a name="line.2676"></a>
-<span class="sourceLineNo">2677</span>      wal.completeCacheFlush(this.getRegionInfo().getEncodedNameAsBytes());<a name="line.2677"></a>
-<span class="sourceLineNo">2678</span>    }<a name="line.2678"></a>
-<span class="sourceLineNo">2679</span><a name="line.2679"></a>
-<span class="sourceLineNo">2680</span>    // Record latest flush time<a name="line.2680"></a>
-<span class="sourceLineNo">2681</span>    for (HStore store: storesToFlush) {<a name="line.2681"></a>
-<span class="sourceLineNo">2682</span>      this.lastStoreFlushTimeMap.put(store, startTime);<a name="line.2682"></a>
-<span class="sourceLineNo">2683</span>    }<a name="line.2683"></a>
-<span class="sourceLineNo">2684</span><a name="line.2684"></a>
-<span class="sourceLineNo">2685</span>    this.maxFlushedSeqId = flushedSeqId;<a name="line.2685"></a>
-<span class="sourceLineNo">2686</span>    this.lastFlushOpSeqId = flushOpSeqId;<a name="line.2686"></a>
-<span class="sourceLineNo">2687</span><a name="line.2687"></a>
-<span class="sourceLineNo">2688</span>    // C. Finally notify anyone waiting on memstore to clear:<a name="line.2688"></a>
-<span class="sourceLineNo">2689</span>    // e.g. checkResources().<a name="line.2689"></a>
-<span class="sourceLineNo">2690</span>    synchronized (this) {<a name="line.2690"></a>
-<span class="sourceLineNo">2691</span>      notifyAll(); // FindBugs NN_NAKED_NOTIFY<a name="line.2691"></a>
-<span class="sourceLineNo">2692</span>    }<a name="line.2692"></a>
-<span class="sourceLineNo">2693</span><a name="line.2693"></a>
-<span class="sourceLineNo">2694</span>    long time = EnvironmentEdgeManager.currentTime() - startTime;<a name="line.2694"></a>
-<span class="sourceLineNo">2695</span>    long memstoresize = this.memstoreDataSize.get();<a name="line.2695"></a>
-<span class="sourceLineNo">2696</span>    String msg = "Finished memstore flush of ~"<a name="line.2696"></a>
-<span class="sourceLineNo">2697</span>        + StringUtils.byteDesc(prepareResult.totalFlushableSize.getDataSize()) + "/"<a name="line.2697"></a>
-<span class="sourceLineNo">2698</span>        + prepareResult.totalFlushableSize.getDataSize() + ", currentsize="<a name="line.2698"></a>
-<span class="sourceLineNo">2699</span>        + StringUtils.byteDesc(memstoresize) + "/" + memstoresize<a name="line.2699"></a>
-<span class="sourceLineNo">2700</span>        + " for region " + this + " in " + time + "ms, sequenceid="<a name="line.2700"></a>
-<span class="sourceLineNo">2701</span>        + flushOpSeqId +  ", compaction requested=" + compactionRequested<a name="line.2701"></a>
-<span class="sourceLineNo">2702</span>        + ((wal == null) ? "; wal=null" : "");<a name="line.2702"></a>
-<span class="sourceLineNo">2703</span>    LOG.info(msg);<a name="line.2703"></a>
-<span class="sourceLineNo">2704</span>    status.setStatus(msg);<a name="line.2704"></a>
-<span class="sourceLineNo">2705</span><a name="line.2705"></a>
-<span class="sourceLineNo">2706</span>    if (rsServices != null &amp;&amp; rsServices.getMetrics() != null) {<a name="line.2706"></a>
-<span class="sourceLineNo">2707</span>      rsServices.getMetrics().updateFlush(time - startTime,<a name="line.2707"></a>
-<span class="sourceLineNo">2708</span>          prepareResult.totalFlushableSize.getDataSize(), flushedOutputFileSize);<a name="line.2708"></a>
-<span class="sourceLineNo">2709</span>    }<a name="line.2709"></a>
-<span class="sourceLineNo">2710</span><a name="line.2710"></a>
-<span class="sourceLineNo">2711</span>    return new FlushResultImpl(compactionRequested ?<a name="line.2711"></a>
-<span class="sourceLineNo">2712</span>        FlushResult.Result.FLUSHED_COMPACTION_NEEDED :<a name="line.2712"></a>
-<span class="sourceLineNo">2713</span>          FlushResult.Result.FLUSHED_NO_COMPACTION_NEEDED, flushOpSeqId);<a name="line.2713"></a>
-<span class="sourceLineNo">2714</span>  }<a name="line.2714"></a>
-<span class="sourceLineNo">2715</span><a name="line.2715"></a>
-<span class="sourceLineNo">2716</span>  /**<a name="line.2716"></a>
-<span class="sourceLineNo">2717</span>   * Method to safely get the next sequence number.<a name="line.2717"></a>
-<span class="sourceLineNo">2718</span>   * @return Next sequence number unassociated with any actual edit.<a name="line.2718"></a>
-<span class="sourceLineNo">2719</span>   * @throws IOException<a name="line.2719"></a>
-<span class="sourceLineNo">2720</span>   */<a name="line.2720"></a>
-<span class="sourceLineNo">2721</span>  @VisibleForTesting<a name="line.2721"></a>
-<span class="sourceLineNo">2722</span>  protected long getNextSequenceId(final WAL wal) throws IOException {<a name="line.2722"></a>
-<span class="sourceLineNo">2723</span>    WriteEntry we = mvcc.begin();<a name="line.2723"></a>
-<span class="sourceLineNo">2724</span>    mvcc.completeAndWait(we);<a name="line.2724"></a>
-<span class="sourceLineNo">2725</span>    return we.getWriteNumber();<a name="line.2725"></a>
-<span class="sourceLineNo">2726</span>  }<a name="line.2726"></a>
-<span class="sourceLineNo">2727</span><a name="line.2727"></a>
-<span class="sourceLineNo">2728</span>  //////////////////////////////////////////////////////////////////////////////<a name="line.2728"></a>
-<span class="sourceLineNo">2729</span>  // get() methods for client use.<a name="line.2729"></a>
-<span class="sourceLineNo">2730</span>  //////////////////////////////////////////////////////////////////////////////<a name="line.2730"></a>
-<span class="sourceLineNo">2731</span><a name="line.2731"></a>
-<span class="sourceLineNo">2732</span>  @Override<a name="line.2732"></a>
-<span class="sourceLineNo">2733</span>  public RegionScannerImpl getScanner(Scan scan) throws IOException {<a name="line.2733"></a>
-<span class="sourceLineNo">2734</span>   return getScanner(scan, null);<a name="line.2734"></a>
-<span class="sourceLineNo">2735</span>  }<a name="line.2735"></a>
-<span class="sourceLineNo">2736</span><a name="line.2736"></a>
-<span class="sourceLineNo">2737</span>  @Override<a name="line.2737"></a>
-<span class="sourceLineNo">2738</span>  public RegionScannerImpl getScanner(Scan scan, List&lt;KeyValueScanner&gt; additionalScanners)<a name="line.2738"></a>
-<span class="sourceLineNo">2739</span>      throws IOException {<a name="line.2739"></a>
-<span class="sourceLineNo">2740</span>    return getScanner(scan, additionalScanners, HConstants.NO_NONCE, HConstants.NO_NONCE);<a name="line.2740"></a>
-<span class="sourceLineNo">2741</span>  }<a name="line.2741"></a>
-<span class="sourceLineNo">2742</span><a name="line.2742"></a>
-<span class="sourceLineNo">2743</span>  private RegionScannerImpl getScanner(Scan scan, List&lt;KeyValueScanner&gt; additionalScanners,<a name="line.2743"></a>
-<span class="sourceLineNo">2744</span>      long nonceGroup, long nonce) throws IOException {<a name="line.2744"></a>
-<span class="sourceLineNo">2745</span>    startRegionOperation(Operation.SCAN);<a name="line.2745"></a>
-<span class="sourceLineNo">2746</span>    try {<a name="line.2746"></a>
-<span class="sourceLineNo">2747</span>      // Verify families are all valid<a name="line.2747"></a>
-<span class="sourceLineNo">2748</span>      if (!scan.hasFamilies()) {<a name="line.2748"></a>
-<span class="sourceLineNo">2749</span>        // Adding all families to scanner<a name="line.2749"></a>
-<span class="sourceLineNo">2750</span>        for (byte[] family : this.htableDescriptor.getColumnFamilyNames()) {<a name="line.2750"></a>
-<span class="sourceLineNo">2751</span>          scan.addFamily(family);<a name="line.2751"></a>
-<span class="sourceLineNo">2752</span>        }<a name="line.2752"></a>
-<span class="sourceLineNo">2753</span>      } else {<a name="line.2753"></a>
-<span class="sourceLineNo">2754</span>        for (byte[] family : scan.getFamilyMap().keySet()) {<a name="line.2754"></a>
-<span class="sourceLineNo">2755</span>          checkFamily(family);<a name="line.2755"></a>
-<span class="sourceLineNo">2756</span>        }<a name="line.2756"></a>
-<span class="sourceLineNo">2757</span>      }<a name="line.2757"></a>
-<span class="sourceLineNo">2758</span>      return instantiateRegionScanner(scan, additionalScanners, nonceGroup, nonce);<a name="line.2758"></a>
-<span class="sourceLineNo">2759</span>    } finally {<a name="line.2759"></a>
-<span class="sourceLineNo">2760</span>      closeRegionOperation(Operation.SCAN);<a name="line.2760"></a>
-<span class="sourceLineNo">2761</span>    }<a name="line.2761"></a>
-<span class="sourceLineNo">2762</span>  }<a name="line.2762"></a>
-<span class="sourceLineNo">2763</span><a name="line.2763"></a>
-<span class="sourceLineNo">2764</span>  protected RegionScanner instantiateRegionScanner(Scan scan,<a name="line.2764"></a>
-<span class="sourceLineNo">2765</span>      List&lt;KeyValueScanner&gt; additionalScanners) throws IOException {<a name="line.2765"></a>
-<span class="sourceLineNo">2766</span>    return instantiateRegionScanner(scan, additionalScanners, HConstants.NO_NONCE,<a name="line.2766"></a>
-<span class="sourceLineNo">2767</span>      HConstants.NO_NONCE);<a name="line.2767"></a>
-<span class="sourceLineNo">2768</span>  }<a name="line.2768"></a>
-<span class="sourceLineNo">2769</span><a name="line.2769"></a>
-<span class="sourceLineNo">2770</span>  protected RegionScannerImpl instantiateRegionScanner(Scan scan,<a name="line.2770"></a>
-<span class="sourceLineNo">2771</span>      List&lt;KeyValueScanner&gt; additionalScanners, long nonceGroup, long nonce) throws IOException {<a name="line.2771"></a>
-<span class="sourceLineNo">2772</span>    if (scan.isReversed()) {<a name="line.2772"></a>
-<span class="sourceLineNo">2773</span>      if (scan.getFilter() != null) {<a name="line.2773"></a>
-<span class="sourceLineNo">2774</span>        scan.getFilter().setReversed(true);<a name="line.2774"></a>
-<span class="sourceLineNo">2775</span>      }<a name="line.2775"></a>
-<span class="sourceLineNo">2776</span>      return new ReversedRegionScannerImpl(scan, additionalScanners, this);<a name="line.2776"></a>
-<span class="sourceLineNo">2777</span>    }<a name="line.2777"></a>
-<span class="sourceLineNo">2778</span>    return new RegionScannerImpl(scan, additionalScanners, this, nonceGroup, nonce);<a name="line.2778"></a>
-<span class="sourceLineNo">2779</span>  }<a name="line.2779"></a>
-<span class="sourceLineNo">2780</span><a name="line.2780"></a>
-<span class="sourceLineNo">2781</span>  /**<a name="line.2781"></a>
-<span class="sourceLineNo">2782</span>   * Prepare a delete for a row mutation processor<a name="line.2782"></a>
-<span class="sourceLineNo">2783</span>   * @param delete The passed delete is modified by this method. WARNING!<a name="line.2783"></a>
-<span class="sourceLineNo">2784</span>   * @throws IOException<a name="line.2784"></a>
-<span class="sourceLineNo">2785</span>   */<a name="line.2785"></a>
-<span class="sourceLineNo">2786</span>  public void prepareDelete(Delete delete) throws IOException {<a name="line.2786"></a>
-<span class="sourceLineNo">2787</span>    // Check to see if this is a deleteRow insert<a name="line.2787"></a>
-<span class="sourceLineNo">2788</span>    if(delete.getFamilyCellMap().isEmpty()){<a name="line.2788"></a>
-<span class="sourceLineNo">2789</span>      for(byte [] family : this.htableDescriptor.getColumnFamilyNames()){<a name="line.2789"></a>
-<span class="sourceLineNo">2790</span>        // Don't eat the timestamp<a name="line.2790"></a>
-<span class="sourceLineNo">2791</span>        delete.addFamily(family, delete.getTimeStamp());<a name="line.2791"></a>
-<span class="sourceLineNo">2792</span>      }<a name="line.2792"></a>
-<span class="sourceLineNo">2793</span>    } else {<a name="line.2793"></a>
-<span class="sourceLineNo">2794</span>      for(byte [] family : delete.getFamilyCellMap().keySet()) {<a name="line.2794"></a>
-<span class="sourceLineNo">2795</span>        if(family == null) {<a name="line.2795"></a>
-<span class="sourceLineNo">2796</span>          throw new NoSuchColumnFamilyException("Empty family is invalid");<a name="line.2796"></a>
-<span class="sourceLineNo">2797</span>        }<a name="line.2797"></a>
-<span class="sourceLineNo">2798</span>        checkFamily(family);<a name="line.2798"></a>
-<span class="sourceLineNo">2799</span>      }<a name="line.2799"></a>
-<span class="sourceLineNo">2800</span>    }<a name="line.2800"></a>
-<span class="sourceLineNo">2801</span>  }<a name="line.2801"></a>
-<span class="sourceLineNo">2802</span><a name="line.2802"></a>
-<span class="sourceLineNo">2803</span>  @Override<a name="line.2803"></a>
-<span class="sourceLineNo">2804</span>  public void delete(Delete delete) throws IOException {<a name="line.2804"></a>
-<span class="sourceLineNo">2805</span>    checkReadOnly();<a name="line.2805"></a>
-<span class="sourceLineNo">2806</span>    checkResources();<a name="line.2806"></a>
-<span class="sourceLineNo">2807</span>    startRegionOperation(Operation.DELETE);<a name="line.2807"></a>
-<span class="sourceLineNo">2808</span>    try {<a name="line.2808"></a>
-<span class="sourceLineNo">2809</span>      // All edits for the given row (across all column families) must happen atomically.<a name="line.2809"></a>
-<span class="sourceLineNo">2810</span>      doBatchMutate(delete);<a name="line.2810"></a>
-<span class="sourceLineNo">2811</span>    } finally {<a name="line.2811"></a>
-<span class="sourceLineNo">2812</span>      closeRegionOperation(Operation.DELETE);<a name="line.2812"></a>
-<span class="sourceLineNo">2813</span>    }<a name="line.2813"></a>
-<span class="sourceLineNo">2814</span>  }<a name="line.2814"></a>
-<span class="sourceLineNo">2815</span><a name="line.2815"></a>
-<span class="sourceLineNo">2816</span>  /**<a name="line.2816"></a>
-<span class="sourceLineNo">2817</span>   * Row needed by below method.<a name="line.2817"></a>
-<span class="sourceLineNo">2818</span>   */<a name="line.2818"></a>
-<span class="sourceLineNo">2819</span>  private static final byte [] FOR_UNIT_TESTS_ONLY = Bytes.toBytes("ForUnitTestsOnly");<a name="line.2819"></a>
-<span class="sourceLineNo">2820</span><a name="line.2820"></a>
-<span class="sourceLineNo">2821</span>  /**<a name="line.2821"></a>
-<span class="sourceLineNo">2822</span>   * This is used only by unit tests. Not required to be a public API.<a name="line.2822"></a>
-<span class="sourceLineNo">2823</span>   * @param familyMap map of family to edits for the given family.<a name="line.2823"></a>
-<span class="sourceLineNo">2824</span>   * @throws IOException<a name="line.2824"></a>
-<span class="sourceLineNo">2825</span>   */<a name="line.2825"></a>
-<span class="sourceLineNo">2826</span>  void delete(NavigableMap&lt;byte[], List&lt;Cell&gt;&gt; familyMap,<a name="line.2826"></a>
-<span class="sourceLineNo">2827</span>      Durability durability) throws IOException {<a name="line.2827"></a>
-<span class="sourceLineNo">2828</span>    Delete delete = new Delete(FOR_UNIT_TESTS_ONLY);<a name="line.2828"></a>
-<span class="sourceLineNo">2829</span>    delete.setFamilyCellMap(familyMap);<a name="line.2829"></a>
-<span class="sourceLineNo">2830</span>    delete.setDurability(durability);<a name="line.2830"></a>
-<span class="sourceLineNo">2831</span>    doBatchMutate(delete);<a name="line.2831"></a>
-<span class="sourceLineNo">2832</span>  }<a name="line.2832"></a>
-<span class="sourceLineNo">2833</span><a name="line.2833"></a>
-<span class="sourceLineNo">2834</span>  /**<a name="line.2834"></a>
-<span class="sourceLineNo">2835</span>   * Set up correct timestamps in the KVs in Delete object.<a name="line.2835"></a>
-<span class="sourceLineNo">2836</span>   * &lt;p&gt;Caller should have the row and region locks.<a name="line.2836"></a>
-<span class="sourceLineNo">2837</span>   * @param mutation<a name="line.2837"></a>
-<span class="sourceLineNo">2838</span>   * @param familyMap<a name="line.2838"></a>
-<span class="sourceLineNo">2839</span>   * @param byteNow<a name="line.2839"></a>
-<span class="sourceLineNo">2840</span>   * @throws IOException<a name="line.2840"></a>
-<span class="sourceLineNo">2841</span>   */<a name="line.2841"></a>
-<span class="sourceLineNo">2842</span>  public void prepareDeleteTimestamps(Mutation mutation, Map&lt;byte[], List&lt;Cell&gt;&gt; familyMap,<a name="line.2842"></a>
-<span class="sourceLineNo">2843</span>      byte[] byteNow) throws IOException {<a name="line.2843"></a>
-<span class="sourceLineNo">2844</span>    for (Map.Entry&lt;byte[], List&lt;Cell&gt;&gt; e : familyMap.entrySet()) {<a name="line.2844"></a>
-<span class="sourceLineNo">2845</span><a name="line.2845"></a>
-<span class="sourceLineNo">2846</span>      byte[] family = e.getKey();<a name="line.2846"></a>
-<span class="sourceLineNo">2847</span>      List&lt;Cell&gt; cells = e.getValue();<a name="line.2847"></a>
-<span class="sourceLineNo">2848</span>      assert cells instanceof RandomAccess;<a name="line.2848"></a>
-<span class="sourceLineNo">2849</span><a name="line.2849"></a>
-<span class="sourceLineNo">2850</span>      Map&lt;byte[], Integer&gt; kvCount = new TreeMap&lt;&gt;(Bytes.BYTES_COMPARATOR);<a name="line.2850"></a>
-<span class="sourceLineNo">2851</span>      int listSize = cells.size();<a name="line.2851"></a>
-<span class="sourceLineNo">2852</span>      for (int i=0; i &lt; listSize; i++) {<a name="line.2852"></a>
-<span class="sourceLineNo">2853</span>        Cell cell = cells.get(i);<a name="line.2853"></a>
-<span class="sourceLineNo">2854</span>        //  Check if time is LATEST, change to time of most recent addition if so<a name="line.2854"></a>
-<span class="sourceLineNo">2855</span>        //  This is expensive.<a name="line.2855"></a>
-<span class="sourceLineNo">2856</span>        if (cell.getTimestamp() == HConstants.LATEST_TIMESTAMP<a name="line.2856"></a>
-<span class="sourceLineNo">2857</span>            &amp;&amp; PrivateCellUtil.isDeleteType(cell)) {<a name="line.2857"></a>
-<span class="sourceLineNo">2858</span>          byte[] qual = CellUtil.cloneQualifier(cell);<a name="line.2858"></a>
-<span class="sourceLineNo">2859</span><a name="line.2859"></a>
-<span class="sourceLineNo">2860</span>          Integer count = kvCount.get(qual);<a name="line.2860"></a>
-<span class="sourceLineNo">2861</span>          if (count == null) {<a name="line.2861"></a>
-<span class="sourceLineNo">2862</span>            kvCount.put(qual, 1);<a name="line.2862"></a>
-<span class="sourceLineNo">2863</span>          } else {<a name="line.2863"></a>
-<span class="sourceLineNo">2864</span>            kvCount.put(qual, count + 1);<a name="line.2864"></a>
-<span class="sourceLineNo">2865</span>          }<a name="line.2865"></a>
-<span class="sourceLineNo">2866</span>          count = kvCount.get(qual);<a name="line.2866"></a>
-<span class="sourceLineNo">2867</span><a name="line.2867"></a>
-<span class="sourceLineNo">2868</span>          Get get = new Get(CellUtil.cloneRow(cell));<a name="line.2868"></a>
-<span class="sourceLineNo">2869</span>          get.setMaxVersions(count);<a name="line.2869"></a>
-<span class="sourceLineNo">2870</span>          get.addColumn(family, qual);<a name="line.2870"></a>
-<span class="sourceLineNo">2871</span>          if (coprocessorHost != null) {<a name="line.2871"></a>
-<span class="sourceLineNo">2872</span>            if (!coprocessorHost.prePrepareTimeStampForDeleteVersion(mutation, cell,<a name="line.2872"></a>
-<span class="sourceLineNo">2873</span>                byteNow, get)) {<a name="line.2873"></a>
-<span class="sourceLineNo">2874</span>              updateDeleteLatestVersionTimeStamp(cell, get, count, byteNow);<a name="line.2874"></a>
-<span class="sourceLineNo">2875</span>            }<a name="line.2875"></a>
-<span class="sourceLineNo">2876</span>          } else {<a name="line.2876"></a>
-<span class="sourceLineNo">2877</span>            updateDeleteLatestVersionTimeStamp(cell, get, count, byteNow);<a name="line.2877"></a>
-<span class="sourceLineNo">2878</span>          }<a name="line.2878"></a>
-<span class="sourceLineNo">2879</span>        } else {<a name="line.2879"></a>
-<span class="sourceLineNo">2880</span>          PrivateCellUtil.updateLatestStamp(cell, byteNow, 0);<a name="line.2880"></a>
-<span class="sourceLineNo">2881</span>        }<a name="line.2881"></a>
-<span class="sourceLineNo">2882</span>      }<a name="line.2882"></a>
-<span class="sourceLineNo">2883</span>    }<a name="line.2883"></a>
-<span class="sourceLineNo">2884</span>  }<a name="line.2884"></a>
-<span class="sourceLineNo">2885</span><a name="line.2885"></a>
-<span class="sourceLineNo">2886</span>  void updateDeleteLatestVersionTimeStamp(Cell cell, Get get, int count, byte[] byteNow)<a name="line.2886"></a>
-<span class="sourceLineNo">2887</span>      throws IOException {<a name="line.2887"></a>
-<span class="sourceLineNo">2888</span>    List&lt;Cell&gt; result = get(get, false);<a name="line.2888"></a>
-<span class="sourceLineNo">2889</span><a name="line.2889"></a>
-<span class="sourceLineNo">2890</span>    if (result.size() &lt; count) {<a name="line.2890"></a>
-<span class="sourceLineNo">2891</span>      // Nothing to delete<a name="line.2891"></a>
-<span class="sourceLineNo">2892</span>      PrivateCellUtil.updateLatestStamp(cell, byteNow, 0);<a name="line.2892"></a>
-<span class="sourceLineNo">2893</span>      return;<a name="line.2893"></a>
-<span class="sourceLineNo">2894</span>    }<a name="line.2894"></a>
-<span class="sourceLineNo">2895</span>    if (result.size() &gt; count) {<a name="line.2895"></a>
-<span class="sourceLineNo">2896</span>      throw new RuntimeException("Unexpected size: " + result.size());<a name="line.2896"></a>
-<span class="sourceLineNo">2897</span>    }<a name="line.2897"></a>
-<span class="sourceLineNo">2898</span>    Cell getCell = result.get(count - 1);<a name="line.2898"></a>
-<span class="sourceLineNo">2899</span>    PrivateCellUtil.setTimestamp(cell, getCell.getTimestamp());<a name="line.2899"></a>
-<span class="sourceLineNo">2900</span>  }<a name="line.2900"></a>
-<span class="sourceLineNo">2901</span><a name="line.2901"></a>
-<span class="sourceLineNo">2902</span>  @Override<a name="line.2902"></a>
-<span class="sourceLineNo">2903</span>  public void put(Put put) throws IOException {<a name="line.2903"></a>
-<span class="sourceLineNo">2904</span>    checkReadOnly();<a name="line.2904"></a>
-<span class="sourceLineNo">2905</span><a name="line.2905"></a>
-<span class="sourceLineNo">2906</span>    // Do a rough check that we have resources to accept a write.  The check is<a name="line.2906"></a>
-<span class="sourceLineNo">2907</span>    // 'rough' in that between the resource check and the call to obtain a<a name="line.2907"></a>
-<span class="sourceLineNo">2908</span>    // read lock, resources may run out.  For now, the thought is that this<a name="line.2908"></a>
-<span class="sourceLineNo">2909</span>    // will be extremely rare; we'll deal with it when it happens.<a name="line.2909"></a>
-<span class="sourceLineNo">2910</span>    checkResources();<a name="line.2910"></a>
-<span class="sourceLineNo">2911</span>    startRegionOperation(Operation.PUT);<a name="line.2911"></a>
-<span class="sourceLineNo">2912</span>    try {<a name="line.2912"></a>
-<span class="sourceLineNo">2913</span>      // All edits for the given row (across all column families) must happen atomically.<a name="line.2913"></a>
-<span class="sourceLineNo">2914</span>      doBatchMutate(put);<a name="line.2914"></a>
-<span class="sourceLineNo">2915</span>    } finally {<a name="line.2915"></a>
-<span class="sourceLineNo">2916</span>      closeRegionOperation(Operation.PUT);<a name="line.2916"></a>
-<span class="sourceLineNo">2917</span>    }<a name="line.2917"></a>
-<span class="sourceLineNo">2918</span>  }<a name="line.2918"></a>
-<span class="sourceLineNo">2919</span><a name="line.2919"></a>
-<span class="sourceLineNo">2920</span>  /**<a name="line.2920"></a>
-<span class="sourceLineNo">2921</span>   * Class that tracks the progress of a batch operations, accumulating status codes and tracking<a name="line.2921"></a>
-<span class="sourceLineNo">2922</span>   * the index at which processing is proceeding. These batch operations may get split into<a name="line.2922"></a>
-<span class="sourceLineNo">2923</span>   * mini-batches for processing.<a name="line.2923"></a>
-<span class="sourceLineNo">2924</span>   */<a name="line.2924"></a>
-<span class="sourceLineNo">2925</span>  private abstract static class BatchOperation&lt;T&gt; {<a name="line.2925"></a>
-<span class="sourceLineNo">2926</span>    protected final T[] operations;<a name="line.2926"></a>
-<span class="sourceLineNo">2927</span>    protected final OperationStatus[] retCodeDetails;<a name="line.2927"></a>
-<span class="sourceLineNo">2928</span>    protected final WALEdit[] walEditsFromCoprocessors;<a name="line.2928"></a>
-<span class="sourceLineNo">2929</span>    // reference family cell maps directly so coprocessors can mutate them if desired<a name="line.2929"></a>
-<span class="sourceLineNo">2930</span>    protected final Map&lt;byte[], List&lt;Cell&gt;&gt;[] familyCellMaps;<a name="line.2930"></a>
-<span class="sourceLineNo">2931</span><a name="line.2931"></a>
-<span class="sourceLineNo">2932</span>    protected final HRegion region;<a name="line.2932"></a>
-<span class="sourceLineNo">2933</span>    protected int nextIndexToProcess = 0;<a name="line.2933"></a>
-<span class="sourceLineNo">2934</span>    protected final ObservedExceptionsInBatch observedExceptions;<a name="line.2934"></a>
-<span class="sourceLineNo">2935</span>    //Durability of the batch (highest durability of all operations)<a name="line.2935"></a>
-<span class="sourceLineNo">2936</span>    protected Durability durability;<a name="line.2936"></a>
-<span class="sourceLineNo">2937</span>    protected boolean atomic = false;<a name="line.2937"></a>
-<span class="sourceLineNo">2938</span><a name="line.2938"></a>
-<span class="sourceLineNo">2939</span>    public BatchOperation(final HRegion region, T[] operations) {<a name="line.2939"></a>
-<span class="sourceLineNo">2940</span>      this.operations = operations;<a name="line.2940"></a>
-<span class="sourceLineNo">2941</span>      this.retCodeDetails = new OperationStatus[operations.length];<a name="line.2941"></a>
-<span class="sourceLineNo">2942</span>      Arrays.fill(this.retCodeDetails, OperationStatus.NOT_RUN);<a name="line.2942"></a>
-<span class="sourceLineNo">2943</span>      this.walEditsFromCoprocessors = new WALEdit[operations.length];<a name="line.2943"></a>
-<span class="sourceLineNo">2944</span>      familyCellMaps = new Map[operations.length];<a name="line.2944"></a>
-<span class="sourceLineNo">2945</span><a name="line.2945"></a>
-<span class="sourceLineNo">2946</span>      this.region = region;<a name="line.2946"></a>
-<span class="sourceLineNo">2947</span>      observedExceptions = new ObservedExceptionsInBatch();<a name="line.2947"></a>
-<span class="sourceLineNo">2948</span>      durability = Durability.USE_DEFAULT;<a name="line.2948"></a>
-<span class="sourceLineNo">2949</span>    }<a name="line.2949"></a>
-<span class="sourceLineNo">2950</span><a name="line.2950"></a>
-<span class="sourceLineNo">2951</span>    /**<a name="line.2951"></a>
-<span class="sourceLineNo">2952</span>     * Visitor interface for batch operations<a name="line.2952"></a>
-<span class="sourceLineNo">2953</span>     */<a name="line.2953"></a>
-<span class="sourceLineNo">2954</span>    @FunctionalInterface<a name="line.2954"></a>
-<span class="sourceLineNo">2955</span>    public interface Visitor {<a name="line.2955"></a>
-<span class="sourceLineNo">2956</span>      /**<a name="line.2956"></a>
-<span class="sourceLineNo">2957</span>       * @param index operation index<a name="line.2957"></a>
-<span class="sourceLineNo">2958</span>       * @return If true continue visiting remaining entries, break otherwise<a name="line.2958"></a>
-<span class="sourceLineNo">2959</span>       */<a name="line.2959"></a>
-<span class="sourceLineNo">2960</span>      boolean visit(int index) throws IOException;<a name="line.2960"></a>
-<span class="sourceLineNo">2961</span>    }<a name="line.2961"></a>
-<span class="sourceLineNo">2962</span><a name="line.2962"></a>
-<span class="sourceLineNo">2963</span>    /**<a name="line.2963"></a>
-<span class="sourceLineNo">2964</span>     * Helper method for visiting pending/ all batch operations<a name="line.2964"></a>
-<span class="sourceLineNo">2965</span>     */<a name="line.2965"></a>
-<span class="sourceLineNo">2966</span>    public void visitBatchOperations(boolean pendingOnly, int lastIndexExclusive, Visitor visitor)<a name="line.2966"></a>
-<span class="sourceLineNo">2967</span>        throws IOException {<a name="line.2967"></a>
-<span class="sourceLineNo">2968</span>      assert lastIndexExclusive &lt;= this.size();<a name="line.2968"></a>
-<span class="sourceLineNo">2969</span>      for (int i = nextIndexToProcess; i &lt; lastIndexExclusive; i++) {<a name="line.2969"></a>
-<span class="sourceLineNo">2970</span>        if (!pendingOnly || isOperationPending(i)) {<a name="line.2970"></a>
-<span class="sourceLineNo">2971</span>          if (!visitor.visit(i)) {<a name="line.2971"></a>
-<span class="sourceLineNo">2972</span>            break;<a name="line.2972"></a>
-<span class="sourceLineNo">2973</span>          }<a name="line.2973"></a>
-<span class="sourceLineNo">2974</span>        }<a name="line.2974"></a>
-<span class="sourceLineNo">2975</span>      }<a name="line.2975"></a>
-<span class="sourceLineNo">2976</span>    }<a name="line.2976"></a>
-<span class="sourceLineNo">2977</span><a name="line.2977"></a>
-<span class="sourceLineNo">2978</span>    public abstract Mutation getMutation(int index);<a name="line.2978"></a>
-<span class="sourceLineNo">2979</span>    public abstract long getNonceGroup(int index);<a name="line.2979"></a>
-<span class="sourceLineNo">2980</span>    public abstract long getNonce(int index);<a name="line.2980"></a>
-<span class="sourceLineNo">2981</span>    /** This method is potentially expensive and useful mostly for non-replay CP path. */<a name="line.2981"></a>
-<span class="sourceLineNo">2982</span>    public abstract Mutation[] getMutationsForCoprocs();<a name="line.2982"></a>
-<span class="sourceLineNo">2983</span>    public abstract boolean isInReplay();<a name="line.2983"></a>
-<span class="sourceLineNo">2984</span>    public abstract long getOrigLogSeqNum();<a name="line.2984"></a>
-<span class="sourceLineNo">2985</span>    public abstract void startRegionOperation() throws IOException;<a name="line.2985"></a>
-<span class="sourceLineNo">2986</span>    public abstract void closeRegionOperation() throws IOException;<a name="line.2986"></a>
-<span class="sourceLineNo">2987</span><a name="line.2987"></a>
-<span class="sourceLineNo">2988</span>    /**<a name="line.2988"></a>
-<span class="sourceLineNo">2989</span>     * Validates each mutation and prepares a batch for write. If necessary (non-replay case), runs<a name="line.2989"></a>
-<span class="sourceLineNo">2990</span>     * CP prePut()/ preDelete() hooks for all mutations in a batch. This is intended to operate on<a name="line.2990"></a>
-<span class="sourceLineNo">2991</span>     * entire batch and will be called from outside of class to check and prepare batch. This can<a name="line.2991"></a>
-<span class="sourceLineNo">2992</span>     * be implemented by calling helper method {@link #checkAndPrepareMutation(int, long)} in a<a name="line.2992"></a>
-<span class="sourceLineNo">2993</span>     * 'for' loop over mutations.<a name="line.2993"></a>
-<span class="sourceLineNo">2994</span>     */<a name="line.2994"></a>
-<span class="sourceLineNo">2995</span>    public abstract void checkAndPrepare() throws IOException;<a name="line.2995"></a>
-<span class="sourceLineNo">2996</span><a name="line.2996"></a>
-<span class="sourceLineNo">2997</span>    /**<a name="line.2997"></a>
-<span class="sourceLineNo">2998</span>     * Implement any Put request specific check and prepare logic here. Please refer to<a name="line.2998"></a>
-<span class="sourceLineNo">2999</span>     * {@link #checkAndPrepareMutation(Mutation, long)} for how its used.<a name="line.2999"></a>
-<span class="sourceLineNo">3000</span>     */<a name="line.3000"></a>
-<span class="sourceLineNo">3001</span>    protected abstract void checkAndPreparePut(final Put p) throws IOException;<a name="line.3001"></a>
-<span class="sourceLineNo">3002</span><a name="line.3002"></a>
-<span class="sourceLineNo">3003</span>    /**<a name="line.3003"></a>
-<span class="sourceLineNo">3004</span>     *  If necessary, calls preBatchMutate() CP hook for a mini-batch and updates metrics, cell<a name="line.3004"></a>
-<span class="sourceLineNo">3005</span>     *  count, tags and timestamp for all cells of all operations in a mini-batch.<a name="line.3005"></a>
-<span class="sourceLineNo">3006</span>     */<a name="line.3006"></a>
-<span class="sourceLineNo">3007</span>    public abstract void prepareMiniBatchOperations(MiniBatchOperationInProgress&lt;Mutation&gt;<a name="line.3007"></a>
-<span class="sourceLineNo">3008</span>        miniBatchOp, long timestamp, final List&lt;RowLock&gt; acquiredRowLocks) throws IOException;<a name="line.3008"></a>
-<span class="sourceLineNo">3009</span><a name="line.3009"></a>
-<span class="sourceLineNo">3010</span>    /**<a name="line.3010"></a>
-<span class="sourceLineNo">3011</span>     * Write mini-batch operations to MemStore<a name="line.3011"></a>
-<span class="sourceLineNo">3012</span>     */<a name="line.3012"></a>
-<span class="sourceLineNo">3013</span>    public abstract WriteEntry writeMiniBatchOperationsToMemStore(<a name="line.3013"></a>
-<span class="sourceLineNo">3014</span>        final MiniBatchOperationInProgress&lt;Mutation&gt; miniBatchOp, final WriteEntry writeEntry)<a name="line.3014"></a>
-<span class="sourceLineNo">3015</span>        throws IOException;<a name="line.3015"></a>
-<span class="sourceLineNo">3016</span><a name="line.3016"></a>
-<span class="sourceLineNo">3017</span>    protected void writeMiniBatchOperationsToMemStore(<a name="line.3017"></a>
-<span class="sourceLineNo">3018</span>        final MiniBatchOperationInProgress&lt;Mutation&gt; miniBatchOp, final long writeNumber)<a name="line.3018"></a>
-<span class="sourceLineNo">3019</span>        throws IOException {<a name="line.3019"></a>
-<span class="sourceLineNo">3020</span>      MemStoreSizing memStoreAccounting = new MemStoreSizing();<a name="line.3020"></a>
-<span class="sourceLineNo">3021</span>      visitBatchOperations(true, miniBatchOp.getLastIndexExclusive(), (int index) -&gt; {<a name="line.3021"></a>
-<span class="sourceLineNo">3022</span>        // We need to update the sequence id for following reasons.<a name="line.3022"></a>
-<span class="sourceLineNo">3023</span>        // 1) If the op is in replay mode, FSWALEntry#stampRegionSequenceId won't stamp sequence id.<a name="line.3023"></a>
-<span class="sourceLineNo">3024</span>        // 2) If no WAL, FSWALEntry won't be used<a name="line.3024"></a>
-<span class="sourceLineNo">3025</span>        // we use durability of the original mutation for the mutation passed by CP.<a name="line.3025"></a>
-<span class="sourceLineNo">3026</span>        if (isInReplay() || getMutation(index).getDurability() == Durability.SKIP_WAL) {<a name="line.3026"></a>
-<span class="sourceLineNo">3027</span>          region.updateSequenceId(familyCellMaps[index].values(), writeNumber);<a name="line.3027"></a>
-<span class="sourceLineNo">3028</span>        }<a name="line.3028"></a>
-<span class="sourceLineNo">3029</span>        applyFamilyMapToMemStore(familyCellMaps[index], memStoreAccounting);<a name="line.3029"></a>
-<span class="sourceLineNo">3030</span>        return true;<a name="line.3030"></a>
-<span class="sourceLineNo">3031</span>      });<a name="line.3031"></a>
-<span class="sourceLineNo">3032</span>      // update memStore size<a name="line.3032"></a>
-<span class="sourceLineNo">3033</span>      region.addAndGetMemStoreSize(memStoreAccounting);<a name="line.3033"></a>
-<span class="sourceLineNo">3034</span>    }<a name="line.3034"></a>
-<span class="sourceLineNo">3035</span><a name="line.3035"></a>
-<span class="sourceLineNo">3036</span>    public boolean isDone() {<a name="line.3036"></a>
-<span class="sourceLineNo">3037</span>      return nextIndexToProcess == operations.length;<a name="line.3037"></a>
-<span class="sourceLineNo">3038</span>    }<a name="line.3038"></a>
-<span class="sourceLineNo">3039</span><a name="line.3039"></a>
-<span class="sourceLineNo">3040</span>    public int size() {<a name="line.3040"></a>
-<span class="sourceLineNo">3041</span>      return operations.length;<a name="line.3041"></a>
-<span class="sourceLineNo">3042</span>    }<a name="line.3042"></a>
-<span class="sourceLineNo">3043</span><a name="line.3043"></a>
-<span class="sourceLineNo">3044</span>    public boolean isOperationPending(int index) {<a name="line.3044"></a>
-<span class="sourceLineNo">3045</span>      return retCodeDetails[index].getOperationStatusCode() == OperationStatusCode.NOT_RUN;<a name="line.3045"></a>
-<span class="sourceLineNo">3046</span>    }<a name="line.3046"></a>
-<span class="sourceLineNo">3047</span><a name="line.3047"></a>
-<span class="sourceLineNo">3048</span>    public List&lt;UUID&gt; getClusterIds() {<a name="line.3048"></a>
-<span class="sourceLineNo">3049</span>      assert size() != 0;<a name="line.3049"></a>
-<span class="sourceLineNo">3050</span>      return getMutation(0).getClusterIds();<a name="line.3050"></a>
-<span class="sourceLineNo">3051</span>    }<a name="line.3051"></a>
-<span class="sourceLineNo">3052</span><a name="line.3052"></a>
-<span class="sourceLineNo">3053</span>    boolean isAtomic() {<a name="line.3053"></a>
-<span class="sourceLineNo">3054</span>      return atomic;<a name="line.3054"></a>
-<span class="sourceLineNo">3055</span>    }<a name="line.3055"></a>
-<span class="sourceLineNo">3056</span><a name="line.3056"></a>
-<span class="sourceLineNo">3057</span>    /**<a name="line.3057"></a>
-<span class="sourceLineNo">3058</span>     * Helper method that checks and prepares only one mutation. This can be used to implement<a name="line.3058"></a>
-<span class="sourceLineNo">3059</span>     * {@link #checkAndPrepare()} for entire Batch.<a name="line.3059"></a>
-<span class="sourceLineNo">3060</span>     * NOTE: As CP prePut()/ preDelete() hooks may modify mutations, this method should be called<a name="line.3060"></a>
-<span class="sourceLineNo">3061</span>     * after prePut()/ preDelete() CP hooks are run for the mutation<a name="line.3061"></a>
-<span class="sourceLineNo">3062</span>     */<a name="line.3062"></a>
-<span class="sourceLineNo">3063</span>    protected void checkAndPrepareMutation(Mutation mutation, final long timestamp)<a name="line.3063"></a>
-<span class="sourceLineNo">3064</span>        throws IOException {<a name="line.3064"></a>
-<span class="sourceLineNo">3065</span>      region.checkRow(mutation.getRow(), "batchMutate");<a name="line.3065"></a>
-<span class="sourceLineNo">3066</span>      if (mutation instanceof Put) {<a name="line.3066"></a>
-<span class="sourceLineNo">3067</span>        // Check the families in the put. If bad, skip this one.<a name="line.3067"></a>
-<span class="sourceLineNo">3068</span>        checkAndPreparePut((Put) mutation);<a name="line.3068"></a>
-<span class="sourceLineNo">3069</span>        region.checkTimestamps(mutation.getFamilyCellMap(), timestamp);<a name="line.3069"></a>
-<span class="sourceLineNo">3070</span>      } else {<a name="line.3070"></a>
-<span class="sourceLineNo">3071</span>        region.prepareDelete((Delete) mutation);<a name="line.3071"></a>
-<span class="sourceLineNo">3072</span>      }<a name="line.3072"></a>
-<span class="sourceLineNo">3073</span>    }<a name="line.3073"></a>
-<span class="sourceLineNo">3074</span><a name="line.3074"></a>
-<span class="sourceLineNo">3075</span>    protected void checkAndPrepareMutation(int index, long timestamp) throws IOException {<a name="line.3075"></a>
-<span class="sourceLineNo">3076</span>      Mutation mutation = getMutation(index);<a name="line.3076"></a>
-<span class="sourceLineNo">3077</span>      try {<a name="line.3077"></a>
-<span class="sourceLineNo">3078</span>        this.checkAndPrepareMutation(mutation, timestamp);<a name="line.3078"></a>
-<span class="sourceLineNo">3079</span><a name="line.3079"></a>
-<span class="sourceLineNo">3080</span>        // store the family map reference to allow for mutations<a name="line.3080"></a>
-<span class="sourceLineNo">3081</span>        familyCellMaps[index] = mutation.getFamilyCellMap();<a name="line.3081"></a>
-<span class="sourceLineNo">3082</span>        // store durability for the batch (highest durability of all operations in the batch)<a name="line.3082"></a>
-<span class="sourceLineNo">3083</span>        Durability tmpDur = region.getEffectiveDurability(mutation.getDurability());<a name="line.3083"></a>
-<span class="sourceLineNo">3084</span>        if (tmpDur.ordinal() &gt; durability.ordinal()) {<a name="line.3084"></a>
-<span class="sourceLineNo">3085</span>          durability = tmpDur;<a name="line.3085"></a>
-<span class="sourceLineNo">3086</span>        }<a name="line.3086"></a>
-<span class="sourceLineNo">3087</span>      } catch (NoSuchColumnFamilyException nscfe) {<a name="line.3087"></a>
-<span class="sourceLineNo">3088</span>        final String msg = "No such column family in batch mutation. ";<a name="line.3088"></a>
-<span class="sourceLineNo">3089</span>        if (observedExceptions.hasSeenNoSuchFamily()) {<a name="line.3089"></a>
-<span class="sourceLineNo">3090</span>          LOG.warn(msg + nscfe.getMessage());<a name="line.3090"></a>
-<span class="sourceLineNo">3091</span>        } else {<a name="line.3091"></a>
-<span class="sourceLineNo">3092</span>          LOG.warn(msg, nscfe);<a name="line.3092"></a>
-<span class="sourceLineNo">3093</span>          observedExceptions.sawNoSuchFamily();<a name="line.3093"></a>
-<span class="sourceLineNo">3094</span>        }<a name="line.3094"></a>
-<span class="sourceLineNo">3095</span>        retCodeDetails[index] = new OperationStatus(<a name="line.3095"></a>
-<span class="sourceLineNo">3096</span>            OperationStatusCode.BAD_FAMILY, nscfe.getMessage());<a name="line.3096"></a>
-<span class="sourceLineNo">3097</span>        if (isAtomic()) { // fail, atomic means all or none<a name="line.3097"></a>
-<span class="sourceLineNo">3098</span>          throw nscfe;<a name="line.3098"></a>
-<span class="sourceLineNo">3099</span>        }<a name="line.3099"></a>
-<span class="sourceLineNo">3100</span>      } catch (FailedSanityCheckException fsce) {<a name="line.3100"></a>
-<span class="sourceLineNo">3101</span>        final String msg = "Batch Mutation did not pass sanity check. ";<a name="line.3101"></a>
-<span class="sourceLineNo">3102</span>        if (observedExceptions.hasSeenFailedSanityCheck()) {<a name="line.3102"></a>
-<span class="sourceLineNo">3103</span>          LOG.warn(msg + fsce.getMessage());<a name="line.3103"></a>
-<span class="sourceLineNo">3104</span>        } else {<a name="line.3104"></a>
-<span class="sourceLineNo">3105</span>          LOG.warn(msg, fsce);<a name="line.3105"></a>
-<span class="sourceLineNo">3106</span>          observedExceptions.sawFailedSanityCheck();<a name="line.3106"></a>
-<span class="sourceLineNo">3107</span>        }<a name="line.3107"></a>
-<span class="sourceLineNo">3108</span>        retCodeDetails[index] = new OperationStatus(<a name="line.3108"></a>
-<span class="sourceLineNo">3109</span>            OperationStatusCode.SANITY_CHECK_FAILURE, fsce.getMessage());<a name="line.3109"></a>
-<span class="sourceLineNo">3110</span>        if (isAtomic()) {<a name="line.3110"></a>
-<span class="sourceLineNo">3111</span>          throw fsce;<a name="line.3111"></a>
-<span class="sourceLineNo">3112</span>        }<a name="line.3112"></a>
-<span class="sourceLineNo">3113</span>      } catch (WrongRegionException we) {<a name="line.3113"></a>
-<span class="sourceLineNo">3114</span>        final String msg = "Batch mutation had a row that does not belong to this region. ";<a name="line.3114"></a>
-<span class="sourceLineNo">3115</span>        if (observedExceptions.hasSeenWrongRegion()) {<a name="line.3115"></a>
-<span class="sourceLineNo">3116</span>          LOG.warn(msg + we.getMessage());<a name="line.3116"></a>
-<span class="sourceLineNo">3117</span>        } else {<a name="line.3117"></a>
-<span class="sourceLineNo">3118</span>          LOG.warn(msg, we);<a name="line.3118"></a>
-<span class="sourceLineNo">3119</span>          observedExceptions.sawWrongRegion();<a name="line.3119"></a>
-<span class="sourceLineNo">3120</span>        }<a name="line.3120"></a>
-<span class="sourceLineNo">3121</span>        retCodeDetails[index] = new OperationStatus(<a name="line.3121"></a>
-<span class="sourceLineNo">3122</span>            OperationStatusCode.SANITY_CHECK_FAILURE, we.getMessage());<a name="line.3122"></a>
-<span class="sourceLineNo">3123</span>        if (isAtomic()) {<a name="line.3123"></a>
-<span class="sourceLineNo">3124</span>          throw we;<a name="line.3124"></a>
-<span class="sourceLineNo">3125</span>        }<a name="line.3125"></a>
-<span class="sourceLineNo">3126</span>      }<a name="line.3126"></a>
-<span class="sourceLineNo">3127</span>    }<a name="line.3127"></a>
-<span class="sourceLineNo">3128</span><a name="line.3128"></a>
-<span class="sourceLineNo">3129</span>    /**<a name="line.3129"></a>
-<span class="sourceLineNo">3130</span>     * Creates Mini-batch of all operations [nextIndexToProcess, lastIndexExclusive) for which<a name="line.3130"></a>
-<span class="sourceLineNo">3131</span>     * a row lock can be acquired. All mutations with locked rows are considered to be<a name="line.3131"></a>
-<span class="sourceLineNo">3132</span>     * In-progress operations and hence the name {@link MiniBatchOperationInProgress}. Mini batch<a name="line.3132"></a>
-<span class="sourceLineNo">3133</span>     * is window over {@link BatchOperation} and contains contiguous pending operations.<a name="line.3133"></a>
-<span class="sourceLineNo">3134</span>     *<a name="line.3134"></a>
-<span class="sourceLineNo">3135</span>     * @param acquiredRowLocks keeps track of rowLocks acquired.<a name="line.3135"></a>
-<span class="sourceLineNo">3136</span>     */<a name="line.3136"></a>
-<span class="sourceLineNo">3137</span>    public MiniBatchOperationInProgress&lt;Mutation&gt; lockRowsAndBuildMiniBatch(<a name="line.3137"></a>
-<span class="sourceLineNo">3138</span>        List&lt;RowLock&gt; acquiredRowLocks) throws IOException {<a name="line.3138"></a>
-<span class="sourceLineNo">3139</span>      int readyToWriteCount = 0;<a name="line.3139"></a>
-<span class="sourceLineNo">3140</span>      int lastIndexExclusive = 0;<a name="line.3140"></a>
-<span class="sourceLineNo">3141</span>      for (; lastIndexExclusive &lt; size(); lastIndexExclusive++) {<a name="line.3141"></a>
-<span class="sourceLineNo">3142</span>        if (!isOperationPending(lastIndexExclusive)) {<a name="line.3142"></a>
-<span class="sourceLineNo">3143</span>          continue;<a name="line.3143"></a>
-<span class="sourceLineNo">3144</span>        }<a name="line.3144"></a>
-<span class="sourceLineNo">3145</span>        Mutation mutation = getMutation(lastIndexExclusive);<a name="line.3145"></a>
-<span class="sourceLineNo">3146</span>        // If we haven't got any rows in our batch, we should block to get the next one.<a name="line.3146"></a>
-<span class="sourceLineNo">3147</span>        RowLock rowLock = null;<a name="line.3147"></a>
-<span class="sourceLineNo">3148</span>        try {<a name="line.3148"></a>
-<span class="sourceLineNo">3149</span>          // if atomic then get exclusive lock, else shared lock<a name="line.3149"></a>
-<span class="sourceLineNo">3150</span>          rowLock = region.getRowLockInternal(mutation.getRow(), !isAtomic());<a name="line.3150"></a>
-<span class="sourceLineNo">3151</span>        } catch (TimeoutIOException e) {<a name="line.3151"></a>
-<span class="sourceLineNo">3152</span>          // We will retry when other exceptions, but we should stop if we timeout .<a name="line.3152"></a>
-<span class="sourceLineNo">3153</span>          throw e;<a name="line.3153"></a>
-<span class="sourceLineNo">3154</span>        } catch (IOException ioe) {<a name="line.3154"></a>
-<span class="sourceLineNo">3155</span>          LOG.warn("Failed getting lock, row=" + Bytes.toStringBinary(mutation.getRow()), ioe);<a name="line.3155"></a>
-<span class="sourceLineNo">3156</span>          if (isAtomic()) { // fail, atomic means all or none<a name="line.3156"></a>
-<span class="sourceLineNo">3157</span>            throw ioe;<a name="line.3157"></a>
-<span class="sourceLineNo">3158</span>          }<a name="line.3158"></a>
-<span class="sourceLineNo">3159</span>        }<a name="line.3159"></a>
-<span class="sourceLineNo">3160</span>        if (rowLock == null) {<a name="line.3160"></a>
-<span class="sourceLineNo">3161</span>          // We failed to grab another lock<a name="line.3161"></a>
-<span class="sourceLineNo">3162</span>          if (isAtomic()) {<a name="line.3162"></a>
-<span class="sourceLineNo">3163</span>            throw new IOException("Can't apply all operations atomically!");<a name="line.3163"></a>
-<span class="sourceLineNo">3164</span>          }<a name="line.3164"></a>
-<span class="sourceLineNo">3165</span>          break; // Stop acquiring more rows for this batch<a name="line.3165"></a>
-<span class="sourceLineNo">3166</span>        } else {<a name="line.3166"></a>
-<span class="sourceLineNo">3167</span>          acquiredRowLocks.add(rowLock);<a name="line.3167"></a>
-<span class="sourceLineNo">3168</span>        }<a name="line.3168"></a>
-<span class="sourceLineNo">3169</span>        readyToWriteCount++;<a name="line.3169"></a>
-<span class="sourceLineNo">3170</span>      }<a name="line.3170"></a>
-<span class="sourceLineNo">3171</span>      return createMiniBatch(lastIndexExclusive, readyToWriteCount);<a name="line.3171"></a>
-<span class="sourceLineNo">3172</span>    }<a name="line.3172"></a>
-<span class="sourceLineNo">3173</span><a name="line.3173"></a>
-<span class="sourceLineNo">3174</span>    protected MiniBatchOperationInProgress&lt;Mutation&gt; createMiniBatch(final int lastIndexExclusive,<a name="line.3174"></a>
-<span class="sourceLineNo">3175</span>        final int readyToWriteCount) {<a name="line.3175"></a>
-<span class="sourceLineNo">3176</span>      return new MiniBatchOperationInProgress&lt;&gt;(getMutationsForCoprocs(), retCodeDetails,<a name="line.3176"></a>
-<span class="sourceLineNo">3177</span>          walEditsFromCoprocessors, nextIndexToProcess, lastIndexExclusive, readyToWriteCount);<a name="line.3177"></a>
-<span class="sourceLineNo">3178</span>    }<a name="line.3178"></a>
-<span class="sourceLineNo">3179</span><a name="line.3179"></a>
-<span class="sourceLineNo">3180</span>    /**<a name="line.3180"></a>
-<span class="sourceLineNo">3181</span>     * Builds separate WALEdit per nonce by applying input mutations. If WALEdits from CP are<a name="line.3181"></a>
-<span class="sourceLineNo">3182</span>     * present, they are merged to result WALEdit.<a name="line.3182"></a>
-<span class="sourceLineNo">3183</span>     */<a name="line.3183"></a>
-<span class="sourceLineNo">3184</span>    public List&lt;Pair&lt;NonceKey, WALEdit&gt;&gt; buildWALEdits(<a name="line.3184"></a>
-<span class="sourceLineNo">3185</span>        final MiniBatchOperationInProgress&lt;Mutation&gt; miniBatchOp) throws IOException {<a name="line.3185"></a>
-<span class="sourceLineNo">3186</span>      List&lt;Pair&lt;NonceKey, WALEdit&gt;&gt; walEdits = new ArrayList&lt;&gt;();<a name="line.3186"></a>
-<span class="sourceLineNo">3187</span><a name="line.3187"></a>
-<span class="sourceLineNo">3188</span>      visitBatchOperations(true, nextIndexToProcess + miniBatchOp.size(), new Visitor() {<a name="line.3188"></a>
-<span class="sourceLineNo">3189</span>        private Pair&lt;NonceKey, WALEdit&gt; curWALEditForNonce;<a name="line.3189"></a>
-<span class="sourceLineNo">3190</span>        @Override<a name="line.3190"></a>
-<span class="sourceLineNo">3191</span>        public boolean visit(int index) throws IOException {<a name="line.3191"></a>
-<span class="sourceLineNo">3192</span>          Mutation m = getMutation(index);<a name="line.3192"></a>
-<span class="sourceLineNo">3193</span>          // we use durability of the original mutation for the mutation passed by CP.<a name="line.3193"></a>
-<span class="sourceLineNo">3194</span>          if (region.getEffectiveDurability(m.getDurability()) == Durability.SKIP_WAL) {<a name="line.3194"></a>
-<span class="sourceLineNo">3195</span>            region.recordMutationWithoutWal(m.getFamilyCellMap());<a name="line.3195"></a>
-<span class="sourceLineNo">3196</span>            return true;<a name="line.3196"></a>
-<span class="sourceLineNo">3197</span>          }<a name="line.3197"></a>
-<span class="sourceLineNo">3198</span><a name="line.3198"></a>
-<span class="sourceLineNo">3199</span>          // the batch may contain multiple nonce keys (replay case). If so, write WALEdit for each.<a name="line.3199"></a>
-<span class="sourceLineNo">3200</span>          // Given how nonce keys are originally written, these should be contiguous.<a name="line.3200"></a>
-<span class="sourceLineNo">3201</span>          // They don't have to be, it will still work, just write more WALEdits than needed.<a name="line.3201"></a>
-<span class="sourceLineNo">3202</span>          long nonceGroup = getNonceGroup(index);<a name="line.3202"></a>
-<span class="sourceLineNo">3203</span>          long nonce = getNonce(index);<a name="line.3203"></a>
-<span class="sourceLineNo">3204</span>          if (curWALEditForNonce == null ||<a name="line.3204"></a>
-<span class="sourceLineNo">3205</span>              curWALEditForNonce.getFirst().getNonceGroup() != nonceGroup ||<a name="line.3205"></a>
-<span class="sourceLineNo">3206</span>              curWALEditForNonce.getFirst().getNonce() != nonce) {<a name="line.3206"></a>
-<span class="sourceLineNo">3207</span>            curWALEditForNonce = new Pair&lt;&gt;(new NonceKey(nonceGroup, nonce),<a name="line.3207"></a>
-<span class="sourceLineNo">3208</span>                new WALEdit(miniBatchOp.getCellCount(), isInReplay()));<a name="line.3208"></a>
-<span class="sourceLineNo">3209</span>            walEdits.add(curWALEditForNonce);<a name="line.3209"></a>
-<span class="sourceLineNo">3210</span>          }<a name="line.3210"></a>
-<span class="sourceLineNo">3211</span>          WALEdit walEdit = curWALEditForNonce.getSecond();<a name="line.3211"></a>
-<span class="sourceLineNo">3212</span><a name="line.3212"></a>
-<span class="sourceLineNo">3213</span>          // Add WAL edits by CP<a name="line.3213"></a>
-<span class="sourceLineNo">3214</span>          WALEdit fromCP = walEditsFromCoprocessors[index];<a name="line.3214"></a>
-<span class="sourceLineNo">3215</span>          if (fromCP != null) {<a name="line.3215"></a>
-<span class="sourceLineNo">3216</span>            for (Cell cell : fromCP.getCells()) {<a name="line.3216"></a>
-<span class="sourceLineNo">3217</span>              walEdit.add(cell);<a name="line.3217"></a>
-<span class="sourceLineNo">3218</span>            }<a name="line.3218"></a>
-<span class="sourceLineNo">3219</span>          }<a name="line.3219"></a>
-<span class="sourceLineNo">3220</span>          addFamilyMapToWALEdit(familyCellMaps[index], walEdit);<a name="line.3220"></a>
-<span class="sourceLineNo">3221</span><a name="line.3221"></a>
-<span class="sourceLineNo">3222</span>          return true;<a name="line.3222"></a>
-<span class="sourceLineNo">3223</span>        }<a name="line.3223"></a>
-<span class="sourceLineNo">3224</span>      });<a name="line.3224"></a>
-<span class="sourceLineNo">3225</span>      return walEdits;<a name="line.3225"></a>
-<span class="sourceLineNo">3226</span>    }<a name="line.3226"></a>
-<span class="sourceLineNo">3227</span><a name="line.3227"></a>
-<span class="sourceLineNo">3228</span>    /**<a name="line.3228"></a>
-<span class="sourceLineNo">3229</span>     * This method completes mini-batch operations by calling postBatchMutate() CP hook (if<a name="line.3229"></a>
-<span class="sourceLineNo">3230</span>     * required) and completing mvcc.<a name="line.3230"></a>
-<span class="sourceLineNo">3231</span>     */<a name="line.3231"></a>
-<span class="sourceLineNo">3232</span>    public void completeMiniBatchOperations(<a name="line.3232"></a>
-<span class="sourceLineNo">3233</span>        final MiniBatchOperationInProgress&lt;Mutation&gt; miniBatchOp, final WriteEntry writeEntry)<a name="line.3233"></a>
-<span class="sourceLineNo">3234</span>        throws IOException {<a name="line.3234"></a>
-<span class="sourceLineNo">3235</span>      if (writeEntry != null) {<a name="line.3235"></a>
-<span class="sourceLineNo">3236</span>        region.mvcc.completeAndWait(writeEntry);<a name="line.3236"></a>
-<span class="sourceLineNo">3237</span>      }<a name="line.3237"></a>
-<span class="sourceLineNo">3238</span>    }<a name="line.3238"></a>
-<span class="sourceLineNo">3239</span><a name="line.3239"></a>
-<span class="sourceLineNo">3240</span>    public void doPostOpCleanupForMiniBatch(<a name="line.3240"></a>
-<span class="sourceLineNo">3241</span>        final MiniBatchOperationInProgress&lt;Mutation&gt; miniBatchOp, final WALEdit walEdit,<a name="line.3241"></a>
-<span class="sourceLineNo">3242</span>        boolean success) throws IOException {}<a name="line.3242"></a>
-<span class="sourceLineNo">3243</span><a name="line.3243"></a>
-<span class="sourceLineNo">3244</span>    /**<a name="line.3244"></a>
-<span class="sourceLineNo">3245</span>     * Atomically apply the given map of family-&gt;edits to the memstore.<a name="line.3245"></a>
-<span class="sourceLineNo">3246</span>     * This handles the consistency control on its own, but the caller<a name="line.3246"></a>
-<span class="sourceLineNo">3247</span>     * should already have locked updatesLock.readLock(). This also does<a name="line.3247"></a>
-<span class="sourceLineNo">3248</span>     * &lt;b&gt;not&lt;/b&gt; check the families for validity.<a name="line.3248"></a>
-<span class="sourceLineNo">3249</span>     *<a name="line.3249"></a>
-<span class="sourceLineNo">3250</span>     * @param familyMap Map of Cells by family<a name="line.3250"></a>
-<span class="sourceLineNo">3251</span>     */<a name="line.3251"></a>
-<span class="sourceLineNo">3252</span>    protected void applyFamilyMapToMemStore(Map&lt;byte[], List&lt;Cell&gt;&gt; familyMap,<a name="line.3252"></a>
-<span class="sourceLineNo">3253</span>        MemStoreSizing memstoreAccounting) throws IOException {<a name="line.3253"></a>
-<span class="sourceLineNo">3254</span>      for (Map.Entry&lt;byte[], List&lt;Cell&gt;&gt; e : familyMap.entrySet()) {<a name="line.3254"></a>
-<span class="sourceLineNo">3255</span>        byte[] family = e.getKey();<a name="line.3255"></a>
-<span class="sourceLineNo">3256</span>        List&lt;Cell&gt; cells = e.getValue();<a name="line.3256"></a>
-<span class="sourceLineNo">3257</span>        assert cells instanceof RandomAccess;<a name="line.3257"></a>
-<span class="sourceLineNo">3258</span>        region.applyToMemStore(region.getStore(family), cells, false, memstoreAccounting);<a name="line.3258"></a>
-<span class="sourceLineNo">3259</span>      }<a name="line.3259"></a>
-<span class="sourceLineNo">3260</span>    }<a name="line.3260"></a>
-<span class="sourceLineNo">3261</span><a name="line.3261"></a>
-<span class="sourceLineNo">3262</span>    /**<a name="line.3262"></a>
-<span class="sourceLineNo">3263</span>     * Append the given map of family-&gt;edits to a WALEdit data structure.<a name="line.3263"></a>
-<span class="sourceLineNo">3264</span>     * This does not write to the WAL itself.<a name="line.3264"></a>
-<span class="sourceLineNo">3265</span>     * @param familyMap map of family-&gt;edits<a name="line.3265"></a>
-<span class="sourceLineNo">3266</span>     * @param walEdit the destination entry to append into<a name="line.3266"></a>
-<span class="sourceLineNo">3267</span>     */<a name="line.3267"></a>
-<span class="sourceLineNo">3268</span>    private void addFamilyMapToWALEdit(Map&lt;byte[], List&lt;Cell&gt;&gt; familyMap,<a name="line.3268"></a>
-<span class="sourceLineNo">3269</span>        WALEdit walEdit) {<a name="line.3269"></a>
-<span class="sourceLineNo">3270</span>      for (List&lt;Cell&gt; edits : familyMap.values()) {<a name="line.3270"></a>
-<span class="sourceLineNo">3271</span>        // Optimization: 'foreach' loop is not used. See:<a name="line.3271"></a>
-<span class="sourceLineNo">3272</span>        // HBASE-12023 HRegion.applyFamilyMapToMemstore creates too many iterator objects<a name="line.3272"></a>
-<span class="sourceLineNo">3273</span>        assert edits instanceof RandomAccess;<a name="line.3273"></a>
-<span class="sourceLineNo">3274</span>        int listSize = edits.size();<a name="line.3274"></a>
-<span class="sourceLineNo">3275</span>        for (int i=0; i &lt; listSize; i++) {<a name="line.3275"></a>
-<span class="sourceLineNo">3276</span>          Cell cell = edits.get(i);<a name="line.3276"></a>
-<span class="sourceLineNo">3277</span>          walEdit.add(cell);<a name="line.3277"></a>
-<span class="sourceLineNo">3278</span>        }<a name="line.3278"></a>
-<span class="sourceLineNo">3279</span>      }<a name="line.3279"></a>
-<span class="sourceLineNo">3280</span>    }<a name="line.3280"></a>
-<span class="sourceLineNo">3281</span>  }<a name="line.3281"></a>
-<span class="sourceLineNo">3282</span><a name="line.3282"></a>
-<span class="sourceLineNo">3283</span>  /**<a name="line.3283"></a>
-<span class="sourceLineNo">3284</span>   * Batch of mutation operations. Base class is shared with {@link ReplayBatchOperation} as most<a name="line.3284"></a>
-<span class="sourceLineNo">3285</span>   * of the logic is same.<a name="line.3285"></a>
-<span class="sourceLineNo">3286</span>   */<a name="line.3286"></a>
-<span class="sourceLineNo">3287</span>  static class MutationBatchOperation extends BatchOperation&lt;Mutation&gt; {<a name="line.3287"></a>
-<span class="sourceLineNo">3288</span>    private long nonceGroup;<a name="line.3288"></a>
-<span class="sourceLineNo">3289</span>    private long nonce;<a name="line.3289"></a>
-<span class="sourceLineNo">3290</span>    public MutationBatchOperation(final HRegion region, Mutation[] operations, boolean atomic,<a name="line.3290"></a>
-<span class="sourceLineNo">3291</span>        long nonceGroup, long nonce) {<a name="line.3291"></a>
-<span class="sourceLineNo">3292</span>      super(region, operations);<a name="line.3292"></a>
-<span class="sourceLineNo">3293</span>      this.atomic = atomic;<a name="line.3293"></a>
-<span class="sourceLineNo">3294</span>      this.nonceGroup = nonceGroup;<a name="line.3294"></a>
-<span class="sourceLineNo">3295</span>      this.nonce = nonce;<a name="line.3295"></a>
-<span class="sourceLineNo">3296</span>    }<a name="line.3296"></a>
-<span class="sourceLineNo">3297</span><a name="line.3297"></a>
-<span class="sourceLineNo">3298</span>    @Override<a name="line.3298"></a>
-<span class="sourceLineNo">3299</span>    public Mutation getMutation(int index) {<a name="line.3299"></a>
-<span class="sourceLineNo">3300</span>      return this.operations[index];<a name="line.3300"></a>
-<span class="sourceLineNo">3301</span>    }<a name="line.3301"></a>
-<span class="sourceLineNo">3302</span><a name="line.3302"></a>
-<span class="sourceLineNo">3303</span>    @Override<a name="line.3303"></a>
-<span class="sourceLineNo">3304</span>    public long getNonceGroup(int index) {<a name="line.3304"></a>
-<span class="sourceLineNo">3305</span>      return nonceGroup;<a name="line.3305"></a>
-<span class="sourceLineNo">3306</span>    }<a name="line.3306"></a>
-<span class="sourceLineNo">3307</span><a name="line.3307"></a>
-<span class="sourceLineN

<TRUNCATED>

[39/51] [partial] hbase-site git commit: Published site at .

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/c54c242b/devapidocs/org/apache/hadoop/hbase/regionserver/StoreFlushContext.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/regionserver/StoreFlushContext.html b/devapidocs/org/apache/hadoop/hbase/regionserver/StoreFlushContext.html
index 174b95b..e27dda0 100644
--- a/devapidocs/org/apache/hadoop/hbase/regionserver/StoreFlushContext.html
+++ b/devapidocs/org/apache/hadoop/hbase/regionserver/StoreFlushContext.html
@@ -106,7 +106,7 @@ var activeTableTab = "activeTableTab";
 <hr>
 <br>
 <pre>@InterfaceAudience.Private
-interface <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StoreFlushContext.html#line.33">StoreFlushContext</a></pre>
+interface <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StoreFlushContext.html#line.32">StoreFlushContext</a></pre>
 <div class="block">A package protected interface for a store flushing.
  A store flush context carries the state required to prepare/flush/commit the store's cache.</div>
 </li>
@@ -160,10 +160,9 @@ interface <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFlushContext.html#getOutputFileSize--">getOutputFileSize</a></span>()</code>&nbsp;</td>
 </tr>
 <tr id="i5" class="rowColor">
-<td class="colFirst"><code>void</code></td>
+<td class="colFirst"><code><a href="../../../../../org/apache/hadoop/hbase/regionserver/MemStoreSize.html" title="class in org.apache.hadoop.hbase.regionserver">MemStoreSize</a></code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFlushContext.html#prepare--">prepare</a></span>()</code>
 <div class="block">Prepare for a store flush (create snapshot)
-
  Requires pausing writes.</div>
 </td>
 </tr>
@@ -196,12 +195,14 @@ interface <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/
 <ul class="blockList">
 <li class="blockList">
 <h4>prepare</h4>
-<pre>void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StoreFlushContext.html#line.42">prepare</a>()</pre>
+<pre><a href="../../../../../org/apache/hadoop/hbase/regionserver/MemStoreSize.html" title="class in org.apache.hadoop.hbase.regionserver">MemStoreSize</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StoreFlushContext.html#line.40">prepare</a>()</pre>
 <div class="block">Prepare for a store flush (create snapshot)
-
  Requires pausing writes.
-
  A very short operation.</div>
+<dl>
+<dt><span class="returnLabel">Returns:</span></dt>
+<dd>The size of snapshot to flush</dd>
+</dl>
 </li>
 </ul>
 <a name="flushCache-org.apache.hadoop.hbase.monitoring.MonitoredTask-">
@@ -210,7 +211,7 @@ interface <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/
 <ul class="blockList">
 <li class="blockList">
 <h4>flushCache</h4>
-<pre>void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StoreFlushContext.html#line.52">flushCache</a>(<a href="../../../../../org/apache/hadoop/hbase/monitoring/MonitoredTask.html" title="interface in org.apache.hadoop.hbase.monitoring">MonitoredTask</a>&nbsp;status)
+<pre>void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StoreFlushContext.html#line.50">flushCache</a>(<a href="../../../../../org/apache/hadoop/hbase/monitoring/MonitoredTask.html" title="interface in org.apache.hadoop.hbase.monitoring">MonitoredTask</a>&nbsp;status)
          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">Flush the cache (create the new store file)
 
@@ -228,7 +229,7 @@ interface <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/
 <ul class="blockList">
 <li class="blockList">
 <h4>commit</h4>
-<pre>boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StoreFlushContext.html#line.65">commit</a>(<a href="../../../../../org/apache/hadoop/hbase/monitoring/MonitoredTask.html" title="interface in org.apache.hadoop.hbase.monitoring">MonitoredTask</a>&nbsp;status)
+<pre>boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StoreFlushContext.html#line.63">commit</a>(<a href="../../../../../org/apache/hadoop/hbase/monitoring/MonitoredTask.html" title="interface in org.apache.hadoop.hbase.monitoring">MonitoredTask</a>&nbsp;status)
         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">Commit the flush - add the store file to the store and clear the
  memstore snapshot.
@@ -249,7 +250,7 @@ interface <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/
 <ul class="blockList">
 <li class="blockList">
 <h4>replayFlush</h4>
-<pre>void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StoreFlushContext.html#line.75">replayFlush</a>(<a href="http://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</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>&gt;&nbsp;fileNames,
+<pre>void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StoreFlushContext.html#line.73">replayFlush</a>(<a href="http://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</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>&gt;&nbsp;fileNames,
                  boolean&nbsp;dropMemstoreSnapshot)
           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">Similar to commit, but called in secondary region replicas for replaying the
@@ -270,7 +271,7 @@ interface <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/
 <ul class="blockList">
 <li class="blockList">
 <h4>abort</h4>
-<pre>void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StoreFlushContext.html#line.81">abort</a>()
+<pre>void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StoreFlushContext.html#line.79">abort</a>()
     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">Abort the snapshot preparation. Drops the snapshot if any.</div>
 <dl>
@@ -285,7 +286,7 @@ interface <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/
 <ul class="blockList">
 <li class="blockList">
 <h4>getCommittedFiles</h4>
-<pre><a href="http://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;org.apache.hadoop.fs.Path&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StoreFlushContext.html#line.87">getCommittedFiles</a>()</pre>
+<pre><a href="http://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;org.apache.hadoop.fs.Path&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StoreFlushContext.html#line.85">getCommittedFiles</a>()</pre>
 <div class="block">Returns the newly committed files from the flush. Called only if commit returns true</div>
 <dl>
 <dt><span class="returnLabel">Returns:</span></dt>
@@ -299,7 +300,7 @@ interface <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/
 <ul class="blockListLast">
 <li class="blockList">
 <h4>getOutputFileSize</h4>
-<pre>long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StoreFlushContext.html#line.92">getOutputFileSize</a>()</pre>
+<pre>long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/StoreFlushContext.html#line.90">getOutputFileSize</a>()</pre>
 <dl>
 <dt><span class="returnLabel">Returns:</span></dt>
 <dd>the total file size for flush output files, in bytes</dd>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/c54c242b/devapidocs/org/apache/hadoop/hbase/regionserver/class-use/MemStoreSize.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/regionserver/class-use/MemStoreSize.html b/devapidocs/org/apache/hadoop/hbase/regionserver/class-use/MemStoreSize.html
index 0a1e22a..c6e5c32 100644
--- a/devapidocs/org/apache/hadoop/hbase/regionserver/class-use/MemStoreSize.html
+++ b/devapidocs/org/apache/hadoop/hbase/regionserver/class-use/MemStoreSize.html
@@ -197,6 +197,19 @@
 </tr>
 <tr class="rowColor">
 <td class="colFirst"><code><a href="../../../../../../org/apache/hadoop/hbase/regionserver/MemStoreSize.html" title="class in org.apache.hadoop.hbase.regionserver">MemStoreSize</a></code></td>
+<td class="colLast"><span class="typeNameLabel">StoreFlushContext.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/regionserver/StoreFlushContext.html#prepare--">prepare</a></span>()</code>
+<div class="block">Prepare for a store flush (create snapshot)
+ Requires pausing writes.</div>
+</td>
+</tr>
+<tr class="altColor">
+<td class="colFirst"><code><a href="../../../../../../org/apache/hadoop/hbase/regionserver/MemStoreSize.html" title="class in org.apache.hadoop.hbase.regionserver">MemStoreSize</a></code></td>
+<td class="colLast"><span class="typeNameLabel">HStore.StoreFlusherImpl.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/regionserver/HStore.StoreFlusherImpl.html#prepare--">prepare</a></span>()</code>
+<div class="block">This is not thread safe.</div>
+</td>
+</tr>
+<tr class="rowColor">
+<td class="colFirst"><code><a href="../../../../../../org/apache/hadoop/hbase/regionserver/MemStoreSize.html" title="class in org.apache.hadoop.hbase.regionserver">MemStoreSize</a></code></td>
 <td class="colLast"><span class="typeNameLabel">MemStore.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/regionserver/MemStore.html#size--">size</a></span>()</code>&nbsp;</td>
 </tr>
 <tr class="altColor">

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/c54c242b/devapidocs/org/apache/hadoop/hbase/regionserver/package-tree.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/regionserver/package-tree.html b/devapidocs/org/apache/hadoop/hbase/regionserver/package-tree.html
index 44b0484..e37be06 100644
--- a/devapidocs/org/apache/hadoop/hbase/regionserver/package-tree.html
+++ b/devapidocs/org/apache/hadoop/hbase/regionserver/package-tree.html
@@ -704,18 +704,18 @@
 <li type="circle">java.lang.<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Enum.html?is-external=true" title="class or interface in java.lang"><span class="typeNameLink">Enum</span></a>&lt;E&gt; (implements java.lang.<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Comparable.html?is-external=true" title="class or interface in java.lang">Comparable</a>&lt;T&gt;, java.io.<a href="http://docs.oracle.com/javase/8/docs/api/java/io/Serializable.html?is-external=true" title="class or interface in java.io">Serializable</a>)
 <ul>
 <li type="circle">org.apache.hadoop.hbase.regionserver.<a href="../../../../../org/apache/hadoop/hbase/regionserver/CompactingMemStore.IndexType.html" title="enum in org.apache.hadoop.hbase.regionserver"><span class="typeNameLink">CompactingMemStore.IndexType</span></a></li>
-<li type="circle">org.apache.hadoop.hbase.regionserver.<a href="../../../../../org/apache/hadoop/hbase/regionserver/Region.Operation.html" title="enum in org.apache.hadoop.hbase.regionserver"><span class="typeNameLink">Region.Operation</span></a></li>
-<li type="circle">org.apache.hadoop.hbase.regionserver.<a href="../../../../../org/apache/hadoop/hbase/regionserver/ScannerContext.NextState.html" title="enum in org.apache.hadoop.hbase.regionserver"><span class="typeNameLink">ScannerContext.NextState</span></a></li>
-<li type="circle">org.apache.hadoop.hbase.regionserver.<a href="../../../../../org/apache/hadoop/hbase/regionserver/FlushType.html" title="enum in org.apache.hadoop.hbase.regionserver"><span class="typeNameLink">FlushType</span></a></li>
-<li type="circle">org.apache.hadoop.hbase.regionserver.<a href="../../../../../org/apache/hadoop/hbase/regionserver/ScanType.html" title="enum in org.apache.hadoop.hbase.regionserver"><span class="typeNameLink">ScanType</span></a></li>
-<li type="circle">org.apache.hadoop.hbase.regionserver.<a href="../../../../../org/apache/hadoop/hbase/regionserver/SplitLogWorker.TaskExecutor.Status.html" title="enum in org.apache.hadoop.hbase.regionserver"><span class="typeNameLink">SplitLogWorker.TaskExecutor.Status</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.regionserver.<a href="../../../../../org/apache/hadoop/hbase/regionserver/DefaultHeapMemoryTuner.StepDirection.html" title="enum in org.apache.hadoop.hbase.regionserver"><span class="typeNameLink">DefaultHeapMemoryTuner.StepDirection</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.regionserver.<a href="../../../../../org/apache/hadoop/hbase/regionserver/SplitLogWorker.TaskExecutor.Status.html" title="enum in org.apache.hadoop.hbase.regionserver"><span class="typeNameLink">SplitLogWorker.TaskExecutor.Status</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.regionserver.<a href="../../../../../org/apache/hadoop/hbase/regionserver/ScanType.html" title="enum in org.apache.hadoop.hbase.regionserver"><span class="typeNameLink">ScanType</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.regionserver.<a href="../../../../../org/apache/hadoop/hbase/regionserver/ScannerContext.NextState.html" title="enum in org.apache.hadoop.hbase.regionserver"><span class="typeNameLink">ScannerContext.NextState</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.regionserver.<a href="../../../../../org/apache/hadoop/hbase/regionserver/Region.Operation.html" title="enum in org.apache.hadoop.hbase.regionserver"><span class="typeNameLink">Region.Operation</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.regionserver.<a href="../../../../../org/apache/hadoop/hbase/regionserver/MemStoreCompactionStrategy.Action.html" title="enum in org.apache.hadoop.hbase.regionserver"><span class="typeNameLink">MemStoreCompactionStrategy.Action</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.regionserver.<a href="../../../../../org/apache/hadoop/hbase/regionserver/TimeRangeTracker.Type.html" title="enum in org.apache.hadoop.hbase.regionserver"><span class="typeNameLink">TimeRangeTracker.Type</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.regionserver.<a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegion.FlushResult.Result.html" title="enum in org.apache.hadoop.hbase.regionserver"><span class="typeNameLink">HRegion.FlushResult.Result</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.regionserver.<a href="../../../../../org/apache/hadoop/hbase/regionserver/MetricsRegionServerSourceFactoryImpl.FactoryStorage.html" title="enum in org.apache.hadoop.hbase.regionserver"><span class="typeNameLink">MetricsRegionServerSourceFactoryImpl.FactoryStorage</span></a></li>
-<li type="circle">org.apache.hadoop.hbase.regionserver.<a href="../../../../../org/apache/hadoop/hbase/regionserver/BloomType.html" title="enum in org.apache.hadoop.hbase.regionserver"><span class="typeNameLink">BloomType</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.regionserver.<a href="../../../../../org/apache/hadoop/hbase/regionserver/ScannerContext.LimitScope.html" title="enum in org.apache.hadoop.hbase.regionserver"><span class="typeNameLink">ScannerContext.LimitScope</span></a></li>
-<li type="circle">org.apache.hadoop.hbase.regionserver.<a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegion.FlushResult.Result.html" title="enum in org.apache.hadoop.hbase.regionserver"><span class="typeNameLink">HRegion.FlushResult.Result</span></a></li>
-<li type="circle">org.apache.hadoop.hbase.regionserver.<a href="../../../../../org/apache/hadoop/hbase/regionserver/TimeRangeTracker.Type.html" title="enum in org.apache.hadoop.hbase.regionserver"><span class="typeNameLink">TimeRangeTracker.Type</span></a></li>
-<li type="circle">org.apache.hadoop.hbase.regionserver.<a href="../../../../../org/apache/hadoop/hbase/regionserver/MemStoreCompactionStrategy.Action.html" title="enum in org.apache.hadoop.hbase.regionserver"><span class="typeNameLink">MemStoreCompactionStrategy.Action</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.regionserver.<a href="../../../../../org/apache/hadoop/hbase/regionserver/BloomType.html" title="enum in org.apache.hadoop.hbase.regionserver"><span class="typeNameLink">BloomType</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.regionserver.<a href="../../../../../org/apache/hadoop/hbase/regionserver/FlushType.html" title="enum in org.apache.hadoop.hbase.regionserver"><span class="typeNameLink">FlushType</span></a></li>
 </ul>
 </li>
 </ul>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/c54c242b/devapidocs/org/apache/hadoop/hbase/regionserver/querymatcher/package-tree.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/regionserver/querymatcher/package-tree.html b/devapidocs/org/apache/hadoop/hbase/regionserver/querymatcher/package-tree.html
index b9cd85d..9b7ac1f 100644
--- a/devapidocs/org/apache/hadoop/hbase/regionserver/querymatcher/package-tree.html
+++ b/devapidocs/org/apache/hadoop/hbase/regionserver/querymatcher/package-tree.html
@@ -130,9 +130,9 @@
 <ul>
 <li type="circle">java.lang.<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Enum.html?is-external=true" title="class or interface in java.lang"><span class="typeNameLink">Enum</span></a>&lt;E&gt; (implements java.lang.<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Comparable.html?is-external=true" title="class or interface in java.lang">Comparable</a>&lt;T&gt;, java.io.<a href="http://docs.oracle.com/javase/8/docs/api/java/io/Serializable.html?is-external=true" title="class or interface in java.io">Serializable</a>)
 <ul>
-<li type="circle">org.apache.hadoop.hbase.regionserver.querymatcher.<a href="../../../../../../org/apache/hadoop/hbase/regionserver/querymatcher/StripeCompactionScanQueryMatcher.DropDeletesInOutput.html" title="enum in org.apache.hadoop.hbase.regionserver.querymatcher"><span class="typeNameLink">StripeCompactionScanQueryMatcher.DropDeletesInOutput</span></a></li>
-<li type="circle">org.apache.hadoop.hbase.regionserver.querymatcher.<a href="../../../../../../org/apache/hadoop/hbase/regionserver/querymatcher/ScanQueryMatcher.MatchCode.html" title="enum in org.apache.hadoop.hbase.regionserver.querymatcher"><span class="typeNameLink">ScanQueryMatcher.MatchCode</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.regionserver.querymatcher.<a href="../../../../../../org/apache/hadoop/hbase/regionserver/querymatcher/DeleteTracker.DeleteResult.html" title="enum in org.apache.hadoop.hbase.regionserver.querymatcher"><span class="typeNameLink">DeleteTracker.DeleteResult</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.regionserver.querymatcher.<a href="../../../../../../org/apache/hadoop/hbase/regionserver/querymatcher/ScanQueryMatcher.MatchCode.html" title="enum in org.apache.hadoop.hbase.regionserver.querymatcher"><span class="typeNameLink">ScanQueryMatcher.MatchCode</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.regionserver.querymatcher.<a href="../../../../../../org/apache/hadoop/hbase/regionserver/querymatcher/StripeCompactionScanQueryMatcher.DropDeletesInOutput.html" title="enum in org.apache.hadoop.hbase.regionserver.querymatcher"><span class="typeNameLink">StripeCompactionScanQueryMatcher.DropDeletesInOutput</span></a></li>
 </ul>
 </li>
 </ul>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/c54c242b/devapidocs/org/apache/hadoop/hbase/regionserver/wal/MetricsWAL.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/regionserver/wal/MetricsWAL.html b/devapidocs/org/apache/hadoop/hbase/regionserver/wal/MetricsWAL.html
index 9473289..bbb5fd3 100644
--- a/devapidocs/org/apache/hadoop/hbase/regionserver/wal/MetricsWAL.html
+++ b/devapidocs/org/apache/hadoop/hbase/regionserver/wal/MetricsWAL.html
@@ -100,15 +100,10 @@ var activeTableTab = "activeTableTab";
 <li><a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">java.lang.Object</a></li>
 <li>
 <ul class="inheritance">
-<li><a href="../../../../../../org/apache/hadoop/hbase/regionserver/wal/WALActionsListener.Base.html" title="class in org.apache.hadoop.hbase.regionserver.wal">org.apache.hadoop.hbase.regionserver.wal.WALActionsListener.Base</a></li>
-<li>
-<ul class="inheritance">
 <li>org.apache.hadoop.hbase.regionserver.wal.MetricsWAL</li>
 </ul>
 </li>
 </ul>
-</li>
-</ul>
 <div class="description">
 <ul class="blockList">
 <li class="blockList">
@@ -120,7 +115,8 @@ var activeTableTab = "activeTableTab";
 <br>
 <pre>@InterfaceAudience.Private
 public class <a href="../../../../../../src-html/org/apache/hadoop/hbase/regionserver/wal/MetricsWAL.html#line.39">MetricsWAL</a>
-extends <a href="../../../../../../org/apache/hadoop/hbase/regionserver/wal/WALActionsListener.Base.html" title="class in org.apache.hadoop.hbase.regionserver.wal">WALActionsListener.Base</a></pre>
+extends <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a>
+implements <a href="../../../../../../org/apache/hadoop/hbase/regionserver/wal/WALActionsListener.html" title="interface in org.apache.hadoop.hbase.regionserver.wal">WALActionsListener</a></pre>
 <div class="block">Class used to push numbers about the WAL into the metrics subsystem.  This will take a
  single function call and turn it into multiple manipulations of the hadoop metrics system.</div>
 </li>
@@ -129,21 +125,6 @@ extends <a href="../../../../../../org/apache/hadoop/hbase/regionserver/wal/WALA
 <div class="summary">
 <ul class="blockList">
 <li class="blockList">
-<!-- ======== NESTED CLASS SUMMARY ======== -->
-<ul class="blockList">
-<li class="blockList"><a name="nested.class.summary">
-<!--   -->
-</a>
-<h3>Nested Class Summary</h3>
-<ul class="blockList">
-<li class="blockList"><a name="nested.classes.inherited.from.class.org.apache.hadoop.hbase.regionserver.wal.WALActionsListener">
-<!--   -->
-</a>
-<h3>Nested classes/interfaces inherited from interface&nbsp;org.apache.hadoop.hbase.regionserver.wal.<a href="../../../../../../org/apache/hadoop/hbase/regionserver/wal/WALActionsListener.html" title="interface in org.apache.hadoop.hbase.regionserver.wal">WALActionsListener</a></h3>
-<code><a href="../../../../../../org/apache/hadoop/hbase/regionserver/wal/WALActionsListener.Base.html" title="class in org.apache.hadoop.hbase.regionserver.wal">WALActionsListener.Base</a></code></li>
-</ul>
-</li>
-</ul>
 <!-- =========== FIELD SUMMARY =========== -->
 <ul class="blockList">
 <li class="blockList"><a name="field.summary">
@@ -223,18 +204,18 @@ extends <a href="../../../../../../org/apache/hadoop/hbase/regionserver/wal/WALA
 </tr>
 </table>
 <ul class="blockList">
-<li class="blockList"><a name="methods.inherited.from.class.org.apache.hadoop.hbase.regionserver.wal.WALActionsListener.Base">
+<li class="blockList"><a name="methods.inherited.from.class.java.lang.Object">
 <!--   -->
 </a>
-<h3>Methods inherited from class&nbsp;org.apache.hadoop.hbase.regionserver.wal.<a href="../../../../../../org/apache/hadoop/hbase/regionserver/wal/WALActionsListener.Base.html" title="class in org.apache.hadoop.hbase.regionserver.wal">WALActionsListener.Base</a></h3>
-<code><a href="../../../../../../org/apache/hadoop/hbase/regionserver/wal/WALActionsListener.Base.html#logCloseRequested--">logCloseRequested</a>, <a href="../../../../../../org/apache/hadoop/hbase/regionserver/wal/WALActionsListener.Base.html#postLogArchive-org.apache.hadoop.fs.Path-org.apache.hadoop.fs.Path-">postLogArchive</a>, <a href="../../../../../../org/apache/hadoop/hbase/regionserver/wal/WALActionsListener.Base.html#postLogRoll-org.apache.hadoop.fs.Path-org.apache.hadoop.fs.Path-">postLogRoll</a>, <a href="../../../../../../org/apache/hadoop/hbase/regionserver/wal/WALActionsListener.Base.html#preLogArchive-org.apache.hadoop.fs.Path-org.apache.hadoop.fs.Path-">preLogArchive</a>, <a href="../../../../../../org/apache/hadoop/hbase/regionserver/wal/WALActionsListener.Base.html#preLogRoll-org.apache.hadoop.fs.Path-org.apache.hadoop.fs.Path-">preLogRoll</a>, <a href="../../../../../../org/apache/hadoop/hbase/regionserver/wal/WALActionsListener.Base.html#visitLogEntryBeforeWrite-
 org.apache.hadoop.hbase.HRegionInfo-org.apache.hadoop.hbase.wal.WALKey-org.apache.hadoop.hbase.wal.WALEdit-">visitLogEntryBeforeWrite</a>, <a href="../../../../../../org/apache/hadoop/hbase/regionserver/wal/WALActionsListener.Base.html#visitLogEntryBeforeWrite-org.apache.hadoop.hbase.wal.WALKey-org.apache.hadoop.hbase.wal.WALEdit-">visitLogEntryBeforeWrite</a></code></li>
+<h3>Methods inherited from class&nbsp;java.lang.<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a></h3>
+<code><a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#clone--" title="class or interface in java.lang">clone</a>, <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#equals-java.lang.Object-" title="class or interface in java.lang">equals</a>, <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#finalize--" title="class or interface in java.lang">finalize</a>, <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#getClass--" title="class or interface in java.lang">getClass</a>, <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#hashCode--" title="class or interface in java.lang">hashCode</a>, <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notify--" title="class or interface in java.lang">notify</a>, <a href="http://docs.oracle.com/javase/8/docs/api/java/lang
 /Object.html?is-external=true#notifyAll--" title="class or interface in java.lang">notifyAll</a>, <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#toString--" title="class or interface in java.lang">toString</a>, <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait--" title="class or interface in java.lang">wait</a>, <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-" title="class or interface in java.lang">wait</a>, <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-int-" title="class or interface in java.lang">wait</a></code></li>
 </ul>
 <ul class="blockList">
-<li class="blockList"><a name="methods.inherited.from.class.java.lang.Object">
+<li class="blockList"><a name="methods.inherited.from.class.org.apache.hadoop.hbase.regionserver.wal.WALActionsListener">
 <!--   -->
 </a>
-<h3>Methods inherited from class&nbsp;java.lang.<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a></h3>
-<code><a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#clone--" title="class or interface in java.lang">clone</a>, <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#equals-java.lang.Object-" title="class or interface in java.lang">equals</a>, <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#finalize--" title="class or interface in java.lang">finalize</a>, <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#getClass--" title="class or interface in java.lang">getClass</a>, <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#hashCode--" title="class or interface in java.lang">hashCode</a>, <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notify--" title="class or interface in java.lang">notify</a>, <a href="http://docs.oracle.com/javase/8/docs/api/java/lang
 /Object.html?is-external=true#notifyAll--" title="class or interface in java.lang">notifyAll</a>, <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#toString--" title="class or interface in java.lang">toString</a>, <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait--" title="class or interface in java.lang">wait</a>, <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-" title="class or interface in java.lang">wait</a>, <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-int-" title="class or interface in java.lang">wait</a></code></li>
+<h3>Methods inherited from interface&nbsp;org.apache.hadoop.hbase.regionserver.wal.<a href="../../../../../../org/apache/hadoop/hbase/regionserver/wal/WALActionsListener.html" title="interface in org.apache.hadoop.hbase.regionserver.wal">WALActionsListener</a></h3>
+<code><a href="../../../../../../org/apache/hadoop/hbase/regionserver/wal/WALActionsListener.html#logCloseRequested--">logCloseRequested</a>, <a href="../../../../../../org/apache/hadoop/hbase/regionserver/wal/WALActionsListener.html#postLogArchive-org.apache.hadoop.fs.Path-org.apache.hadoop.fs.Path-">postLogArchive</a>, <a href="../../../../../../org/apache/hadoop/hbase/regionserver/wal/WALActionsListener.html#postLogRoll-org.apache.hadoop.fs.Path-org.apache.hadoop.fs.Path-">postLogRoll</a>, <a href="../../../../../../org/apache/hadoop/hbase/regionserver/wal/WALActionsListener.html#preLogArchive-org.apache.hadoop.fs.Path-org.apache.hadoop.fs.Path-">preLogArchive</a>, <a href="../../../../../../org/apache/hadoop/hbase/regionserver/wal/WALActionsListener.html#preLogRoll-org.apache.hadoop.fs.Path-org.apache.hadoop.fs.Path-">preLogRoll</a>, <a href="../../../../../../org/apache/hadoop/hbase/regionserver/wal/WALActionsListener.html#visitLogEntryBeforeWrite-org.apache.hadoop.hbase.client
 .RegionInfo-org.apache.hadoop.hbase.wal.WALKey-org.apache.hadoop.hbase.wal.WALEdit-">visitLogEntryBeforeWrite</a>, <a href="../../../../../../org/apache/hadoop/hbase/regionserver/wal/WALActionsListener.html#visitLogEntryBeforeWrite-org.apache.hadoop.hbase.wal.WALKey-org.apache.hadoop.hbase.wal.WALEdit-">visitLogEntryBeforeWrite</a></code></li>
 </ul>
 </li>
 </ul>
@@ -315,8 +296,6 @@ extends <a href="../../../../../../org/apache/hadoop/hbase/regionserver/wal/WALA
 <dl>
 <dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
 <dd><code><a href="../../../../../../org/apache/hadoop/hbase/regionserver/wal/WALActionsListener.html#postSync-long-int-">postSync</a></code>&nbsp;in interface&nbsp;<code><a href="../../../../../../org/apache/hadoop/hbase/regionserver/wal/WALActionsListener.html" title="interface in org.apache.hadoop.hbase.regionserver.wal">WALActionsListener</a></code></dd>
-<dt><span class="overrideSpecifyLabel">Overrides:</span></dt>
-<dd><code><a href="../../../../../../org/apache/hadoop/hbase/regionserver/wal/WALActionsListener.Base.html#postSync-long-int-">postSync</a></code>&nbsp;in class&nbsp;<code><a href="../../../../../../org/apache/hadoop/hbase/regionserver/wal/WALActionsListener.Base.html" title="class in org.apache.hadoop.hbase.regionserver.wal">WALActionsListener.Base</a></code></dd>
 <dt><span class="paramLabel">Parameters:</span></dt>
 <dd><code>timeInNanos</code> - How long the filesystem sync took in nanoseconds.</dd>
 <dd><code>handlerSyncs</code> - How many sync handler calls were released by this call to filesystem
@@ -341,8 +320,6 @@ extends <a href="../../../../../../org/apache/hadoop/hbase/regionserver/wal/WALA
 <dl>
 <dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
 <dd><code><a href="../../../../../../org/apache/hadoop/hbase/regionserver/wal/WALActionsListener.html#postAppend-long-long-org.apache.hadoop.hbase.wal.WALKey-org.apache.hadoop.hbase.wal.WALEdit-">postAppend</a></code>&nbsp;in interface&nbsp;<code><a href="../../../../../../org/apache/hadoop/hbase/regionserver/wal/WALActionsListener.html" title="interface in org.apache.hadoop.hbase.regionserver.wal">WALActionsListener</a></code></dd>
-<dt><span class="overrideSpecifyLabel">Overrides:</span></dt>
-<dd><code><a href="../../../../../../org/apache/hadoop/hbase/regionserver/wal/WALActionsListener.Base.html#postAppend-long-long-org.apache.hadoop.hbase.wal.WALKey-org.apache.hadoop.hbase.wal.WALEdit-">postAppend</a></code>&nbsp;in class&nbsp;<code><a href="../../../../../../org/apache/hadoop/hbase/regionserver/wal/WALActionsListener.Base.html" title="class in org.apache.hadoop.hbase.regionserver.wal">WALActionsListener.Base</a></code></dd>
 <dt><span class="paramLabel">Parameters:</span></dt>
 <dd><code>size</code> - approx length of cells in this append.</dd>
 <dd><code>time</code> - elapsed time in milliseconds.</dd>
@@ -365,8 +342,6 @@ extends <a href="../../../../../../org/apache/hadoop/hbase/regionserver/wal/WALA
 <dl>
 <dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
 <dd><code><a href="../../../../../../org/apache/hadoop/hbase/regionserver/wal/WALActionsListener.html#logRollRequested-boolean-">logRollRequested</a></code>&nbsp;in interface&nbsp;<code><a href="../../../../../../org/apache/hadoop/hbase/regionserver/wal/WALActionsListener.html" title="interface in org.apache.hadoop.hbase.regionserver.wal">WALActionsListener</a></code></dd>
-<dt><span class="overrideSpecifyLabel">Overrides:</span></dt>
-<dd><code><a href="../../../../../../org/apache/hadoop/hbase/regionserver/wal/WALActionsListener.Base.html#logRollRequested-boolean-">logRollRequested</a></code>&nbsp;in class&nbsp;<code><a href="../../../../../../org/apache/hadoop/hbase/regionserver/wal/WALActionsListener.Base.html" title="class in org.apache.hadoop.hbase.regionserver.wal">WALActionsListener.Base</a></code></dd>
 </dl>
 </li>
 </ul>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/c54c242b/devapidocs/org/apache/hadoop/hbase/regionserver/wal/WALActionsListener.Base.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/regionserver/wal/WALActionsListener.Base.html b/devapidocs/org/apache/hadoop/hbase/regionserver/wal/WALActionsListener.Base.html
deleted file mode 100644
index 4be57da..0000000
--- a/devapidocs/org/apache/hadoop/hbase/regionserver/wal/WALActionsListener.Base.html
+++ /dev/null
@@ -1,561 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<!-- NewPage -->
-<html lang="en">
-<head>
-<!-- Generated by javadoc -->
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<title>WALActionsListener.Base (Apache HBase 3.0.0-SNAPSHOT API)</title>
-<link rel="stylesheet" type="text/css" href="../../../../../../stylesheet.css" title="Style">
-<script type="text/javascript" src="../../../../../../script.js"></script>
-</head>
-<body>
-<script type="text/javascript"><!--
-    try {
-        if (location.href.indexOf('is-external=true') == -1) {
-            parent.document.title="WALActionsListener.Base (Apache HBase 3.0.0-SNAPSHOT API)";
-        }
-    }
-    catch(err) {
-    }
-//-->
-var methods = {"i0":10,"i1":10,"i2":10,"i3":10,"i4":10,"i5":10,"i6":10,"i7":10,"i8":10,"i9":10};
-var tabs = {65535:["t0","All Methods"],2:["t2","Instance Methods"],8:["t4","Concrete Methods"]};
-var altColor = "altColor";
-var rowColor = "rowColor";
-var tableTab = "tableTab";
-var activeTableTab = "activeTableTab";
-</script>
-<noscript>
-<div>JavaScript is disabled on your browser.</div>
-</noscript>
-<!-- ========= START OF TOP NAVBAR ======= -->
-<div class="topNav"><a name="navbar.top">
-<!--   -->
-</a>
-<div class="skipNav"><a href="#skip.navbar.top" title="Skip navigation links">Skip navigation links</a></div>
-<a name="navbar.top.firstrow">
-<!--   -->
-</a>
-<ul class="navList" title="Navigation">
-<li><a href="../../../../../../overview-summary.html">Overview</a></li>
-<li><a href="package-summary.html">Package</a></li>
-<li class="navBarCell1Rev">Class</li>
-<li><a href="class-use/WALActionsListener.Base.html">Use</a></li>
-<li><a href="package-tree.html">Tree</a></li>
-<li><a href="../../../../../../deprecated-list.html">Deprecated</a></li>
-<li><a href="../../../../../../index-all.html">Index</a></li>
-<li><a href="../../../../../../help-doc.html">Help</a></li>
-</ul>
-</div>
-<div class="subNav">
-<ul class="navList">
-<li><a href="../../../../../../org/apache/hadoop/hbase/regionserver/wal/WALActionsListener.html" title="interface in org.apache.hadoop.hbase.regionserver.wal"><span class="typeNameLink">Prev&nbsp;Class</span></a></li>
-<li><a href="../../../../../../org/apache/hadoop/hbase/regionserver/wal/WALCellCodec.html" title="class in org.apache.hadoop.hbase.regionserver.wal"><span class="typeNameLink">Next&nbsp;Class</span></a></li>
-</ul>
-<ul class="navList">
-<li><a href="../../../../../../index.html?org/apache/hadoop/hbase/regionserver/wal/WALActionsListener.Base.html" target="_top">Frames</a></li>
-<li><a href="WALActionsListener.Base.html" target="_top">No&nbsp;Frames</a></li>
-</ul>
-<ul class="navList" id="allclasses_navbar_top">
-<li><a href="../../../../../../allclasses-noframe.html">All&nbsp;Classes</a></li>
-</ul>
-<div>
-<script type="text/javascript"><!--
-  allClassesLink = document.getElementById("allclasses_navbar_top");
-  if(window==top) {
-    allClassesLink.style.display = "block";
-  }
-  else {
-    allClassesLink.style.display = "none";
-  }
-  //-->
-</script>
-</div>
-<div>
-<ul class="subNavList">
-<li>Summary:&nbsp;</li>
-<li>Nested&nbsp;|&nbsp;</li>
-<li>Field&nbsp;|&nbsp;</li>
-<li><a href="#constructor.summary">Constr</a>&nbsp;|&nbsp;</li>
-<li><a href="#method.summary">Method</a></li>
-</ul>
-<ul class="subNavList">
-<li>Detail:&nbsp;</li>
-<li>Field&nbsp;|&nbsp;</li>
-<li><a href="#constructor.detail">Constr</a>&nbsp;|&nbsp;</li>
-<li><a href="#method.detail">Method</a></li>
-</ul>
-</div>
-<a name="skip.navbar.top">
-<!--   -->
-</a></div>
-<!-- ========= END OF TOP NAVBAR ========= -->
-<!-- ======== START OF CLASS DATA ======== -->
-<div class="header">
-<div class="subTitle">org.apache.hadoop.hbase.regionserver.wal</div>
-<h2 title="Class WALActionsListener.Base" class="title">Class WALActionsListener.Base</h2>
-</div>
-<div class="contentContainer">
-<ul class="inheritance">
-<li><a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">java.lang.Object</a></li>
-<li>
-<ul class="inheritance">
-<li>org.apache.hadoop.hbase.regionserver.wal.WALActionsListener.Base</li>
-</ul>
-</li>
-</ul>
-<div class="description">
-<ul class="blockList">
-<li class="blockList">
-<dl>
-<dt>All Implemented Interfaces:</dt>
-<dd><a href="../../../../../../org/apache/hadoop/hbase/regionserver/wal/WALActionsListener.html" title="interface in org.apache.hadoop.hbase.regionserver.wal">WALActionsListener</a></dd>
-</dl>
-<dl>
-<dt>Direct Known Subclasses:</dt>
-<dd><a href="../../../../../../org/apache/hadoop/hbase/regionserver/wal/MetricsWAL.html" title="class in org.apache.hadoop.hbase.regionserver.wal">MetricsWAL</a>, <a href="../../../../../../org/apache/hadoop/hbase/replication/regionserver/Replication.html" title="class in org.apache.hadoop.hbase.replication.regionserver">Replication</a></dd>
-</dl>
-<dl>
-<dt>Enclosing interface:</dt>
-<dd><a href="../../../../../../org/apache/hadoop/hbase/regionserver/wal/WALActionsListener.html" title="interface in org.apache.hadoop.hbase.regionserver.wal">WALActionsListener</a></dd>
-</dl>
-<hr>
-<br>
-<pre>public static class <a href="../../../../../../src-html/org/apache/hadoop/hbase/regionserver/wal/WALActionsListener.html#line.117">WALActionsListener.Base</a>
-extends <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a>
-implements <a href="../../../../../../org/apache/hadoop/hbase/regionserver/wal/WALActionsListener.html" title="interface in org.apache.hadoop.hbase.regionserver.wal">WALActionsListener</a></pre>
-</li>
-</ul>
-</div>
-<div class="summary">
-<ul class="blockList">
-<li class="blockList">
-<!-- ======== NESTED CLASS SUMMARY ======== -->
-<ul class="blockList">
-<li class="blockList"><a name="nested.class.summary">
-<!--   -->
-</a>
-<h3>Nested Class Summary</h3>
-<ul class="blockList">
-<li class="blockList"><a name="nested.classes.inherited.from.class.org.apache.hadoop.hbase.regionserver.wal.WALActionsListener">
-<!--   -->
-</a>
-<h3>Nested classes/interfaces inherited from interface&nbsp;org.apache.hadoop.hbase.regionserver.wal.<a href="../../../../../../org/apache/hadoop/hbase/regionserver/wal/WALActionsListener.html" title="interface in org.apache.hadoop.hbase.regionserver.wal">WALActionsListener</a></h3>
-<code><a href="../../../../../../org/apache/hadoop/hbase/regionserver/wal/WALActionsListener.Base.html" title="class in org.apache.hadoop.hbase.regionserver.wal">WALActionsListener.Base</a></code></li>
-</ul>
-</li>
-</ul>
-<!-- ======== CONSTRUCTOR SUMMARY ======== -->
-<ul class="blockList">
-<li class="blockList"><a name="constructor.summary">
-<!--   -->
-</a>
-<h3>Constructor Summary</h3>
-<table class="memberSummary" border="0" cellpadding="3" cellspacing="0" summary="Constructor Summary table, listing constructors, and an explanation">
-<caption><span>Constructors</span><span class="tabEnd">&nbsp;</span></caption>
-<tr>
-<th class="colOne" scope="col">Constructor and Description</th>
-</tr>
-<tr class="altColor">
-<td class="colOne"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/regionserver/wal/WALActionsListener.Base.html#Base--">Base</a></span>()</code>&nbsp;</td>
-</tr>
-</table>
-</li>
-</ul>
-<!-- ========== METHOD SUMMARY =========== -->
-<ul class="blockList">
-<li class="blockList"><a name="method.summary">
-<!--   -->
-</a>
-<h3>Method Summary</h3>
-<table class="memberSummary" border="0" cellpadding="3" cellspacing="0" summary="Method Summary table, listing methods, and an explanation">
-<caption><span id="t0" class="activeTableTab"><span>All Methods</span><span class="tabEnd">&nbsp;</span></span><span id="t2" class="tableTab"><span><a href="javascript:show(2);">Instance Methods</a></span><span class="tabEnd">&nbsp;</span></span><span id="t4" class="tableTab"><span><a href="javascript:show(8);">Concrete Methods</a></span><span class="tabEnd">&nbsp;</span></span></caption>
-<tr>
-<th class="colFirst" scope="col">Modifier and Type</th>
-<th class="colLast" scope="col">Method and Description</th>
-</tr>
-<tr id="i0" class="altColor">
-<td class="colFirst"><code>void</code></td>
-<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/regionserver/wal/WALActionsListener.Base.html#logCloseRequested--">logCloseRequested</a></span>()</code>
-<div class="block">The WAL is about to close.</div>
-</td>
-</tr>
-<tr id="i1" class="rowColor">
-<td class="colFirst"><code>void</code></td>
-<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/regionserver/wal/WALActionsListener.Base.html#logRollRequested-boolean-">logRollRequested</a></span>(boolean&nbsp;tooFewReplicas)</code>
-<div class="block">A request was made that the WAL be rolled.</div>
-</td>
-</tr>
-<tr id="i2" class="altColor">
-<td class="colFirst"><code>void</code></td>
-<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/regionserver/wal/WALActionsListener.Base.html#postAppend-long-long-org.apache.hadoop.hbase.wal.WALKey-org.apache.hadoop.hbase.wal.WALEdit-">postAppend</a></span>(long&nbsp;entryLen,
-          long&nbsp;elapsedTimeMillis,
-          <a href="../../../../../../org/apache/hadoop/hbase/wal/WALKey.html" title="class in org.apache.hadoop.hbase.wal">WALKey</a>&nbsp;logKey,
-          <a href="../../../../../../org/apache/hadoop/hbase/wal/WALEdit.html" title="class in org.apache.hadoop.hbase.wal">WALEdit</a>&nbsp;logEdit)</code>
-<div class="block">For notification post append to the writer.</div>
-</td>
-</tr>
-<tr id="i3" class="rowColor">
-<td class="colFirst"><code>void</code></td>
-<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/regionserver/wal/WALActionsListener.Base.html#postLogArchive-org.apache.hadoop.fs.Path-org.apache.hadoop.fs.Path-">postLogArchive</a></span>(org.apache.hadoop.fs.Path&nbsp;oldPath,
-              org.apache.hadoop.fs.Path&nbsp;newPath)</code>
-<div class="block">The WAL has been archived.</div>
-</td>
-</tr>
-<tr id="i4" class="altColor">
-<td class="colFirst"><code>void</code></td>
-<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/regionserver/wal/WALActionsListener.Base.html#postLogRoll-org.apache.hadoop.fs.Path-org.apache.hadoop.fs.Path-">postLogRoll</a></span>(org.apache.hadoop.fs.Path&nbsp;oldPath,
-           org.apache.hadoop.fs.Path&nbsp;newPath)</code>
-<div class="block">The WAL has been rolled.</div>
-</td>
-</tr>
-<tr id="i5" class="rowColor">
-<td class="colFirst"><code>void</code></td>
-<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/regionserver/wal/WALActionsListener.Base.html#postSync-long-int-">postSync</a></span>(long&nbsp;timeInNanos,
-        int&nbsp;handlerSyncs)</code>
-<div class="block">For notification post writer sync.</div>
-</td>
-</tr>
-<tr id="i6" class="altColor">
-<td class="colFirst"><code>void</code></td>
-<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/regionserver/wal/WALActionsListener.Base.html#preLogArchive-org.apache.hadoop.fs.Path-org.apache.hadoop.fs.Path-">preLogArchive</a></span>(org.apache.hadoop.fs.Path&nbsp;oldPath,
-             org.apache.hadoop.fs.Path&nbsp;newPath)</code>
-<div class="block">The WAL is going to be archived.</div>
-</td>
-</tr>
-<tr id="i7" class="rowColor">
-<td class="colFirst"><code>void</code></td>
-<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/regionserver/wal/WALActionsListener.Base.html#preLogRoll-org.apache.hadoop.fs.Path-org.apache.hadoop.fs.Path-">preLogRoll</a></span>(org.apache.hadoop.fs.Path&nbsp;oldPath,
-          org.apache.hadoop.fs.Path&nbsp;newPath)</code>
-<div class="block">The WAL is going to be rolled.</div>
-</td>
-</tr>
-<tr id="i8" class="altColor">
-<td class="colFirst"><code>void</code></td>
-<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/regionserver/wal/WALActionsListener.Base.html#visitLogEntryBeforeWrite-org.apache.hadoop.hbase.HRegionInfo-org.apache.hadoop.hbase.wal.WALKey-org.apache.hadoop.hbase.wal.WALEdit-">visitLogEntryBeforeWrite</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/HRegionInfo.html" title="class in org.apache.hadoop.hbase">HRegionInfo</a>&nbsp;info,
-                        <a href="../../../../../../org/apache/hadoop/hbase/wal/WALKey.html" title="class in org.apache.hadoop.hbase.wal">WALKey</a>&nbsp;logKey,
-                        <a href="../../../../../../org/apache/hadoop/hbase/wal/WALEdit.html" title="class in org.apache.hadoop.hbase.wal">WALEdit</a>&nbsp;logEdit)</code>
-<div class="block">Called before each write.</div>
-</td>
-</tr>
-<tr id="i9" class="rowColor">
-<td class="colFirst"><code>void</code></td>
-<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/regionserver/wal/WALActionsListener.Base.html#visitLogEntryBeforeWrite-org.apache.hadoop.hbase.wal.WALKey-org.apache.hadoop.hbase.wal.WALEdit-">visitLogEntryBeforeWrite</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/wal/WALKey.html" title="class in org.apache.hadoop.hbase.wal">WALKey</a>&nbsp;logKey,
-                        <a href="../../../../../../org/apache/hadoop/hbase/wal/WALEdit.html" title="class in org.apache.hadoop.hbase.wal">WALEdit</a>&nbsp;logEdit)</code>&nbsp;</td>
-</tr>
-</table>
-<ul class="blockList">
-<li class="blockList"><a name="methods.inherited.from.class.java.lang.Object">
-<!--   -->
-</a>
-<h3>Methods inherited from class&nbsp;java.lang.<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a></h3>
-<code><a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#clone--" title="class or interface in java.lang">clone</a>, <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#equals-java.lang.Object-" title="class or interface in java.lang">equals</a>, <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#finalize--" title="class or interface in java.lang">finalize</a>, <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#getClass--" title="class or interface in java.lang">getClass</a>, <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#hashCode--" title="class or interface in java.lang">hashCode</a>, <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notify--" title="class or interface in java.lang">notify</a>, <a href="http://docs.oracle.com/javase/8/docs/api/java/lang
 /Object.html?is-external=true#notifyAll--" title="class or interface in java.lang">notifyAll</a>, <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#toString--" title="class or interface in java.lang">toString</a>, <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait--" title="class or interface in java.lang">wait</a>, <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-" title="class or interface in java.lang">wait</a>, <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-int-" title="class or interface in java.lang">wait</a></code></li>
-</ul>
-</li>
-</ul>
-</li>
-</ul>
-</div>
-<div class="details">
-<ul class="blockList">
-<li class="blockList">
-<!-- ========= CONSTRUCTOR DETAIL ======== -->
-<ul class="blockList">
-<li class="blockList"><a name="constructor.detail">
-<!--   -->
-</a>
-<h3>Constructor Detail</h3>
-<a name="Base--">
-<!--   -->
-</a>
-<ul class="blockListLast">
-<li class="blockList">
-<h4>Base</h4>
-<pre>public&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/regionserver/wal/WALActionsListener.Base.html#line.117">Base</a>()</pre>
-</li>
-</ul>
-</li>
-</ul>
-<!-- ============ METHOD DETAIL ========== -->
-<ul class="blockList">
-<li class="blockList"><a name="method.detail">
-<!--   -->
-</a>
-<h3>Method Detail</h3>
-<a name="preLogRoll-org.apache.hadoop.fs.Path-org.apache.hadoop.fs.Path-">
-<!--   -->
-</a>
-<ul class="blockList">
-<li class="blockList">
-<h4>preLogRoll</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/regionserver/wal/WALActionsListener.Base.html#line.119">preLogRoll</a>(org.apache.hadoop.fs.Path&nbsp;oldPath,
-                       org.apache.hadoop.fs.Path&nbsp;newPath)
-                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="descfrmTypeLabel">Description copied from interface:&nbsp;<code><a href="../../../../../../org/apache/hadoop/hbase/regionserver/wal/WALActionsListener.html#preLogRoll-org.apache.hadoop.fs.Path-org.apache.hadoop.fs.Path-">WALActionsListener</a></code></span></div>
-<div class="block">The WAL is going to be rolled. The oldPath can be null if this is
- the first log file from the regionserver.</div>
-<dl>
-<dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
-<dd><code><a href="../../../../../../org/apache/hadoop/hbase/regionserver/wal/WALActionsListener.html#preLogRoll-org.apache.hadoop.fs.Path-org.apache.hadoop.fs.Path-">preLogRoll</a></code>&nbsp;in interface&nbsp;<code><a href="../../../../../../org/apache/hadoop/hbase/regionserver/wal/WALActionsListener.html" title="interface in org.apache.hadoop.hbase.regionserver.wal">WALActionsListener</a></code></dd>
-<dt><span class="paramLabel">Parameters:</span></dt>
-<dd><code>oldPath</code> - the path to the old wal</dd>
-<dd><code>newPath</code> - the path to the new wal</dd>
-<dt><span class="throwsLabel">Throws:</span></dt>
-<dd><code><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></code></dd>
-</dl>
-</li>
-</ul>
-<a name="postLogRoll-org.apache.hadoop.fs.Path-org.apache.hadoop.fs.Path-">
-<!--   -->
-</a>
-<ul class="blockList">
-<li class="blockList">
-<h4>postLogRoll</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/regionserver/wal/WALActionsListener.Base.html#line.122">postLogRoll</a>(org.apache.hadoop.fs.Path&nbsp;oldPath,
-                        org.apache.hadoop.fs.Path&nbsp;newPath)
-                 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="descfrmTypeLabel">Description copied from interface:&nbsp;<code><a href="../../../../../../org/apache/hadoop/hbase/regionserver/wal/WALActionsListener.html#postLogRoll-org.apache.hadoop.fs.Path-org.apache.hadoop.fs.Path-">WALActionsListener</a></code></span></div>
-<div class="block">The WAL has been rolled. The oldPath can be null if this is
- the first log file from the regionserver.</div>
-<dl>
-<dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
-<dd><code><a href="../../../../../../org/apache/hadoop/hbase/regionserver/wal/WALActionsListener.html#postLogRoll-org.apache.hadoop.fs.Path-org.apache.hadoop.fs.Path-">postLogRoll</a></code>&nbsp;in interface&nbsp;<code><a href="../../../../../../org/apache/hadoop/hbase/regionserver/wal/WALActionsListener.html" title="interface in org.apache.hadoop.hbase.regionserver.wal">WALActionsListener</a></code></dd>
-<dt><span class="paramLabel">Parameters:</span></dt>
-<dd><code>oldPath</code> - the path to the old wal</dd>
-<dd><code>newPath</code> - the path to the new wal</dd>
-<dt><span class="throwsLabel">Throws:</span></dt>
-<dd><code><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></code></dd>
-</dl>
-</li>
-</ul>
-<a name="preLogArchive-org.apache.hadoop.fs.Path-org.apache.hadoop.fs.Path-">
-<!--   -->
-</a>
-<ul class="blockList">
-<li class="blockList">
-<h4>preLogArchive</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/regionserver/wal/WALActionsListener.Base.html#line.125">preLogArchive</a>(org.apache.hadoop.fs.Path&nbsp;oldPath,
-                          org.apache.hadoop.fs.Path&nbsp;newPath)
-                   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="descfrmTypeLabel">Description copied from interface:&nbsp;<code><a href="../../../../../../org/apache/hadoop/hbase/regionserver/wal/WALActionsListener.html#preLogArchive-org.apache.hadoop.fs.Path-org.apache.hadoop.fs.Path-">WALActionsListener</a></code></span></div>
-<div class="block">The WAL is going to be archived.</div>
-<dl>
-<dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
-<dd><code><a href="../../../../../../org/apache/hadoop/hbase/regionserver/wal/WALActionsListener.html#preLogArchive-org.apache.hadoop.fs.Path-org.apache.hadoop.fs.Path-">preLogArchive</a></code>&nbsp;in interface&nbsp;<code><a href="../../../../../../org/apache/hadoop/hbase/regionserver/wal/WALActionsListener.html" title="interface in org.apache.hadoop.hbase.regionserver.wal">WALActionsListener</a></code></dd>
-<dt><span class="paramLabel">Parameters:</span></dt>
-<dd><code>oldPath</code> - the path to the old wal</dd>
-<dd><code>newPath</code> - the path to the new wal</dd>
-<dt><span class="throwsLabel">Throws:</span></dt>
-<dd><code><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></code></dd>
-</dl>
-</li>
-</ul>
-<a name="postLogArchive-org.apache.hadoop.fs.Path-org.apache.hadoop.fs.Path-">
-<!--   -->
-</a>
-<ul class="blockList">
-<li class="blockList">
-<h4>postLogArchive</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/regionserver/wal/WALActionsListener.Base.html#line.128">postLogArchive</a>(org.apache.hadoop.fs.Path&nbsp;oldPath,
-                           org.apache.hadoop.fs.Path&nbsp;newPath)
-                    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="descfrmTypeLabel">Description copied from interface:&nbsp;<code><a href="../../../../../../org/apache/hadoop/hbase/regionserver/wal/WALActionsListener.html#postLogArchive-org.apache.hadoop.fs.Path-org.apache.hadoop.fs.Path-">WALActionsListener</a></code></span></div>
-<div class="block">The WAL has been archived.</div>
-<dl>
-<dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
-<dd><code><a href="../../../../../../org/apache/hadoop/hbase/regionserver/wal/WALActionsListener.html#postLogArchive-org.apache.hadoop.fs.Path-org.apache.hadoop.fs.Path-">postLogArchive</a></code>&nbsp;in interface&nbsp;<code><a href="../../../../../../org/apache/hadoop/hbase/regionserver/wal/WALActionsListener.html" title="interface in org.apache.hadoop.hbase.regionserver.wal">WALActionsListener</a></code></dd>
-<dt><span class="paramLabel">Parameters:</span></dt>
-<dd><code>oldPath</code> - the path to the old wal</dd>
-<dd><code>newPath</code> - the path to the new wal</dd>
-<dt><span class="throwsLabel">Throws:</span></dt>
-<dd><code><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></code></dd>
-</dl>
-</li>
-</ul>
-<a name="logRollRequested-boolean-">
-<!--   -->
-</a>
-<ul class="blockList">
-<li class="blockList">
-<h4>logRollRequested</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/regionserver/wal/WALActionsListener.Base.html#line.131">logRollRequested</a>(boolean&nbsp;tooFewReplicas)</pre>
-<div class="block"><span class="descfrmTypeLabel">Description copied from interface:&nbsp;<code><a href="../../../../../../org/apache/hadoop/hbase/regionserver/wal/WALActionsListener.html#logRollRequested-boolean-">WALActionsListener</a></code></span></div>
-<div class="block">A request was made that the WAL be rolled.</div>
-<dl>
-<dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
-<dd><code><a href="../../../../../../org/apache/hadoop/hbase/regionserver/wal/WALActionsListener.html#logRollRequested-boolean-">logRollRequested</a></code>&nbsp;in interface&nbsp;<code><a href="../../../../../../org/apache/hadoop/hbase/regionserver/wal/WALActionsListener.html" title="interface in org.apache.hadoop.hbase.regionserver.wal">WALActionsListener</a></code></dd>
-</dl>
-</li>
-</ul>
-<a name="logCloseRequested--">
-<!--   -->
-</a>
-<ul class="blockList">
-<li class="blockList">
-<h4>logCloseRequested</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/regionserver/wal/WALActionsListener.Base.html#line.134">logCloseRequested</a>()</pre>
-<div class="block"><span class="descfrmTypeLabel">Description copied from interface:&nbsp;<code><a href="../../../../../../org/apache/hadoop/hbase/regionserver/wal/WALActionsListener.html#logCloseRequested--">WALActionsListener</a></code></span></div>
-<div class="block">The WAL is about to close.</div>
-<dl>
-<dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
-<dd><code><a href="../../../../../../org/apache/hadoop/hbase/regionserver/wal/WALActionsListener.html#logCloseRequested--">logCloseRequested</a></code>&nbsp;in interface&nbsp;<code><a href="../../../../../../org/apache/hadoop/hbase/regionserver/wal/WALActionsListener.html" title="interface in org.apache.hadoop.hbase.regionserver.wal">WALActionsListener</a></code></dd>
-</dl>
-</li>
-</ul>
-<a name="visitLogEntryBeforeWrite-org.apache.hadoop.hbase.HRegionInfo-org.apache.hadoop.hbase.wal.WALKey-org.apache.hadoop.hbase.wal.WALEdit-">
-<!--   -->
-</a>
-<ul class="blockList">
-<li class="blockList">
-<h4>visitLogEntryBeforeWrite</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/regionserver/wal/WALActionsListener.Base.html#line.137">visitLogEntryBeforeWrite</a>(<a href="../../../../../../org/apache/hadoop/hbase/HRegionInfo.html" title="class in org.apache.hadoop.hbase">HRegionInfo</a>&nbsp;info,
-                                     <a href="../../../../../../org/apache/hadoop/hbase/wal/WALKey.html" title="class in org.apache.hadoop.hbase.wal">WALKey</a>&nbsp;logKey,
-                                     <a href="../../../../../../org/apache/hadoop/hbase/wal/WALEdit.html" title="class in org.apache.hadoop.hbase.wal">WALEdit</a>&nbsp;logEdit)</pre>
-<div class="block"><span class="descfrmTypeLabel">Description copied from interface:&nbsp;<code><a href="../../../../../../org/apache/hadoop/hbase/regionserver/wal/WALActionsListener.html#visitLogEntryBeforeWrite-org.apache.hadoop.hbase.HRegionInfo-org.apache.hadoop.hbase.wal.WALKey-org.apache.hadoop.hbase.wal.WALEdit-">WALActionsListener</a></code></span></div>
-<div class="block">Called before each write.</div>
-<dl>
-<dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
-<dd><code><a href="../../../../../../org/apache/hadoop/hbase/regionserver/wal/WALActionsListener.html#visitLogEntryBeforeWrite-org.apache.hadoop.hbase.HRegionInfo-org.apache.hadoop.hbase.wal.WALKey-org.apache.hadoop.hbase.wal.WALEdit-">visitLogEntryBeforeWrite</a></code>&nbsp;in interface&nbsp;<code><a href="../../../../../../org/apache/hadoop/hbase/regionserver/wal/WALActionsListener.html" title="interface in org.apache.hadoop.hbase.regionserver.wal">WALActionsListener</a></code></dd>
-</dl>
-</li>
-</ul>
-<a name="visitLogEntryBeforeWrite-org.apache.hadoop.hbase.wal.WALKey-org.apache.hadoop.hbase.wal.WALEdit-">
-<!--   -->
-</a>
-<ul class="blockList">
-<li class="blockList">
-<h4>visitLogEntryBeforeWrite</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/regionserver/wal/WALActionsListener.Base.html#line.140">visitLogEntryBeforeWrite</a>(<a href="../../../../../../org/apache/hadoop/hbase/wal/WALKey.html" title="class in org.apache.hadoop.hbase.wal">WALKey</a>&nbsp;logKey,
-                                     <a href="../../../../../../org/apache/hadoop/hbase/wal/WALEdit.html" title="class in org.apache.hadoop.hbase.wal">WALEdit</a>&nbsp;logEdit)
-                              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>
-<dl>
-<dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
-<dd><code><a href="../../../../../../org/apache/hadoop/hbase/regionserver/wal/WALActionsListener.html#visitLogEntryBeforeWrite-org.apache.hadoop.hbase.wal.WALKey-org.apache.hadoop.hbase.wal.WALEdit-">visitLogEntryBeforeWrite</a></code>&nbsp;in interface&nbsp;<code><a href="../../../../../../org/apache/hadoop/hbase/regionserver/wal/WALActionsListener.html" title="interface in org.apache.hadoop.hbase.regionserver.wal">WALActionsListener</a></code></dd>
-<dd><code>logEdit</code> - TODO: Retire this in favor of
-          <a href="../../../../../../org/apache/hadoop/hbase/regionserver/wal/WALActionsListener.html#visitLogEntryBeforeWrite-org.apache.hadoop.hbase.HRegionInfo-org.apache.hadoop.hbase.wal.WALKey-org.apache.hadoop.hbase.wal.WALEdit-"><code>WALActionsListener.visitLogEntryBeforeWrite(HRegionInfo, WALKey, WALEdit)</code></a> It only exists to get
-          scope when replicating. Scope should be in the WALKey and not need us passing in a
-          <code>htd</code>.</dd>
-<dt><span class="throwsLabel">Throws:</span></dt>
-<dd><code><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></code> - If failed to parse the WALEdit</dd>
-</dl>
-</li>
-</ul>
-<a name="postAppend-long-long-org.apache.hadoop.hbase.wal.WALKey-org.apache.hadoop.hbase.wal.WALEdit-">
-<!--   -->
-</a>
-<ul class="blockList">
-<li class="blockList">
-<h4>postAppend</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/regionserver/wal/WALActionsListener.Base.html#line.144">postAppend</a>(long&nbsp;entryLen,
-                       long&nbsp;elapsedTimeMillis,
-                       <a href="../../../../../../org/apache/hadoop/hbase/wal/WALKey.html" title="class in org.apache.hadoop.hbase.wal">WALKey</a>&nbsp;logKey,
-                       <a href="../../../../../../org/apache/hadoop/hbase/wal/WALEdit.html" title="class in org.apache.hadoop.hbase.wal">WALEdit</a>&nbsp;logEdit)
-                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="descfrmTypeLabel">Description copied from interface:&nbsp;<code><a href="../../../../../../org/apache/hadoop/hbase/regionserver/wal/WALActionsListener.html#postAppend-long-long-org.apache.hadoop.hbase.wal.WALKey-org.apache.hadoop.hbase.wal.WALEdit-">WALActionsListener</a></code></span></div>
-<div class="block">For notification post append to the writer.  Used by metrics system at least.
- TODO: Combine this with above.</div>
-<dl>
-<dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
-<dd><code><a href="../../../../../../org/apache/hadoop/hbase/regionserver/wal/WALActionsListener.html#postAppend-long-long-org.apache.hadoop.hbase.wal.WALKey-org.apache.hadoop.hbase.wal.WALEdit-">postAppend</a></code>&nbsp;in interface&nbsp;<code><a href="../../../../../../org/apache/hadoop/hbase/regionserver/wal/WALActionsListener.html" title="interface in org.apache.hadoop.hbase.regionserver.wal">WALActionsListener</a></code></dd>
-<dt><span class="paramLabel">Parameters:</span></dt>
-<dd><code>entryLen</code> - approx length of cells in this append.</dd>
-<dd><code>elapsedTimeMillis</code> - elapsed time in milliseconds.</dd>
-<dd><code>logKey</code> - A WAL key</dd>
-<dd><code>logEdit</code> - A WAL edit containing list of cells.</dd>
-<dt><span class="throwsLabel">Throws:</span></dt>
-<dd><code><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></code> - if any network or I/O error occurred</dd>
-</dl>
-</li>
-</ul>
-<a name="postSync-long-int-">
-<!--   -->
-</a>
-<ul class="blockListLast">
-<li class="blockList">
-<h4>postSync</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/regionserver/wal/WALActionsListener.Base.html#line.149">postSync</a>(long&nbsp;timeInNanos,
-                     int&nbsp;handlerSyncs)</pre>
-<div class="block"><span class="descfrmTypeLabel">Description copied from interface:&nbsp;<code><a href="../../../../../../org/apache/hadoop/hbase/regionserver/wal/WALActionsListener.html#postSync-long-int-">WALActionsListener</a></code></span></div>
-<div class="block">For notification post writer sync.  Used by metrics system at least.</div>
-<dl>
-<dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
-<dd><code><a href="../../../../../../org/apache/hadoop/hbase/regionserver/wal/WALActionsListener.html#postSync-long-int-">postSync</a></code>&nbsp;in interface&nbsp;<code><a href="../../../../../../org/apache/hadoop/hbase/regionserver/wal/WALActionsListener.html" title="interface in org.apache.hadoop.hbase.regionserver.wal">WALActionsListener</a></code></dd>
-<dt><span class="paramLabel">Parameters:</span></dt>
-<dd><code>timeInNanos</code> - How long the filesystem sync took in nanoseconds.</dd>
-<dd><code>handlerSyncs</code> - How many sync handler calls were released by this call to filesystem
- sync.</dd>
-</dl>
-</li>
-</ul>
-</li>
-</ul>
-</li>
-</ul>
-</div>
-</div>
-<!-- ========= END OF CLASS DATA ========= -->
-<!-- ======= START OF BOTTOM NAVBAR ====== -->
-<div class="bottomNav"><a name="navbar.bottom">
-<!--   -->
-</a>
-<div class="skipNav"><a href="#skip.navbar.bottom" title="Skip navigation links">Skip navigation links</a></div>
-<a name="navbar.bottom.firstrow">
-<!--   -->
-</a>
-<ul class="navList" title="Navigation">
-<li><a href="../../../../../../overview-summary.html">Overview</a></li>
-<li><a href="package-summary.html">Package</a></li>
-<li class="navBarCell1Rev">Class</li>
-<li><a href="class-use/WALActionsListener.Base.html">Use</a></li>
-<li><a href="package-tree.html">Tree</a></li>
-<li><a href="../../../../../../deprecated-list.html">Deprecated</a></li>
-<li><a href="../../../../../../index-all.html">Index</a></li>
-<li><a href="../../../../../../help-doc.html">Help</a></li>
-</ul>
-</div>
-<div class="subNav">
-<ul class="navList">
-<li><a href="../../../../../../org/apache/hadoop/hbase/regionserver/wal/WALActionsListener.html" title="interface in org.apache.hadoop.hbase.regionserver.wal"><span class="typeNameLink">Prev&nbsp;Class</span></a></li>
-<li><a href="../../../../../../org/apache/hadoop/hbase/regionserver/wal/WALCellCodec.html" title="class in org.apache.hadoop.hbase.regionserver.wal"><span class="typeNameLink">Next&nbsp;Class</span></a></li>
-</ul>
-<ul class="navList">
-<li><a href="../../../../../../index.html?org/apache/hadoop/hbase/regionserver/wal/WALActionsListener.Base.html" target="_top">Frames</a></li>
-<li><a href="WALActionsListener.Base.html" target="_top">No&nbsp;Frames</a></li>
-</ul>
-<ul class="navList" id="allclasses_navbar_bottom">
-<li><a href="../../../../../../allclasses-noframe.html">All&nbsp;Classes</a></li>
-</ul>
-<div>
-<script type="text/javascript"><!--
-  allClassesLink = document.getElementById("allclasses_navbar_bottom");
-  if(window==top) {
-    allClassesLink.style.display = "block";
-  }
-  else {
-    allClassesLink.style.display = "none";
-  }
-  //-->
-</script>
-</div>
-<div>
-<ul class="subNavList">
-<li>Summary:&nbsp;</li>
-<li>Nested&nbsp;|&nbsp;</li>
-<li>Field&nbsp;|&nbsp;</li>
-<li><a href="#constructor.summary">Constr</a>&nbsp;|&nbsp;</li>
-<li><a href="#method.summary">Method</a></li>
-</ul>
-<ul class="subNavList">
-<li>Detail:&nbsp;</li>
-<li>Field&nbsp;|&nbsp;</li>
-<li><a href="#constructor.detail">Constr</a>&nbsp;|&nbsp;</li>
-<li><a href="#method.detail">Method</a></li>
-</ul>
-</div>
-<a name="skip.navbar.bottom">
-<!--   -->
-</a></div>
-<!-- ======== END OF BOTTOM NAVBAR ======= -->
-<p class="legalCopy"><small>Copyright &#169; 2007&#x2013;2017 <a href="https://www.apache.org/">The Apache Software Foundation</a>. All rights reserved.</small></p>
-</body>
-</html>


[07/51] [partial] hbase-site git commit: Published site at .

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/c54c242b/hbase-build-configuration/hbase-archetypes/hbase-shaded-client-project/dependency-convergence.html
----------------------------------------------------------------------
diff --git a/hbase-build-configuration/hbase-archetypes/hbase-shaded-client-project/dependency-convergence.html b/hbase-build-configuration/hbase-archetypes/hbase-shaded-client-project/dependency-convergence.html
index 698163a..238f6d6 100644
--- a/hbase-build-configuration/hbase-archetypes/hbase-shaded-client-project/dependency-convergence.html
+++ b/hbase-build-configuration/hbase-archetypes/hbase-shaded-client-project/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="20171202" />
+    <meta name="Date-Revision-yyyymmdd" content="20171203" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase - Exemplar for hbase-shaded-client archetype &#x2013; Reactor Dependency Convergence</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -838,7 +838,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2017-12-02</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2017-12-03</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/c54c242b/hbase-build-configuration/hbase-archetypes/hbase-shaded-client-project/dependency-info.html
----------------------------------------------------------------------
diff --git a/hbase-build-configuration/hbase-archetypes/hbase-shaded-client-project/dependency-info.html b/hbase-build-configuration/hbase-archetypes/hbase-shaded-client-project/dependency-info.html
index f630509..d188ea3 100644
--- a/hbase-build-configuration/hbase-archetypes/hbase-shaded-client-project/dependency-info.html
+++ b/hbase-build-configuration/hbase-archetypes/hbase-shaded-client-project/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="20171202" />
+    <meta name="Date-Revision-yyyymmdd" content="20171203" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase - Exemplar for hbase-shaded-client archetype &#x2013; Dependency Information</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -147,7 +147,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2017-12-02</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2017-12-03</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/c54c242b/hbase-build-configuration/hbase-archetypes/hbase-shaded-client-project/dependency-management.html
----------------------------------------------------------------------
diff --git a/hbase-build-configuration/hbase-archetypes/hbase-shaded-client-project/dependency-management.html b/hbase-build-configuration/hbase-archetypes/hbase-shaded-client-project/dependency-management.html
index faa52ff..41779ab 100644
--- a/hbase-build-configuration/hbase-archetypes/hbase-shaded-client-project/dependency-management.html
+++ b/hbase-build-configuration/hbase-archetypes/hbase-shaded-client-project/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="20171202" />
+    <meta name="Date-Revision-yyyymmdd" content="20171203" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase - Exemplar for hbase-shaded-client archetype &#x2013; Project Dependency Management</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -804,7 +804,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2017-12-02</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2017-12-03</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/c54c242b/hbase-build-configuration/hbase-archetypes/hbase-shaded-client-project/index.html
----------------------------------------------------------------------
diff --git a/hbase-build-configuration/hbase-archetypes/hbase-shaded-client-project/index.html b/hbase-build-configuration/hbase-archetypes/hbase-shaded-client-project/index.html
index dc4de1d..e9a84e4 100644
--- a/hbase-build-configuration/hbase-archetypes/hbase-shaded-client-project/index.html
+++ b/hbase-build-configuration/hbase-archetypes/hbase-shaded-client-project/index.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="20171202" />
+    <meta name="Date-Revision-yyyymmdd" content="20171203" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase - Exemplar for hbase-shaded-client archetype &#x2013; About</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -119,7 +119,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2017-12-02</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2017-12-03</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/c54c242b/hbase-build-configuration/hbase-archetypes/hbase-shaded-client-project/integration.html
----------------------------------------------------------------------
diff --git a/hbase-build-configuration/hbase-archetypes/hbase-shaded-client-project/integration.html b/hbase-build-configuration/hbase-archetypes/hbase-shaded-client-project/integration.html
index c8d64af..2906ba6 100644
--- a/hbase-build-configuration/hbase-archetypes/hbase-shaded-client-project/integration.html
+++ b/hbase-build-configuration/hbase-archetypes/hbase-shaded-client-project/integration.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="20171202" />
+    <meta name="Date-Revision-yyyymmdd" content="20171203" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase - Exemplar for hbase-shaded-client archetype &#x2013; CI Management</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -126,7 +126,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2017-12-02</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2017-12-03</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/c54c242b/hbase-build-configuration/hbase-archetypes/hbase-shaded-client-project/issue-tracking.html
----------------------------------------------------------------------
diff --git a/hbase-build-configuration/hbase-archetypes/hbase-shaded-client-project/issue-tracking.html b/hbase-build-configuration/hbase-archetypes/hbase-shaded-client-project/issue-tracking.html
index 40b3063..9deef92 100644
--- a/hbase-build-configuration/hbase-archetypes/hbase-shaded-client-project/issue-tracking.html
+++ b/hbase-build-configuration/hbase-archetypes/hbase-shaded-client-project/issue-tracking.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="20171202" />
+    <meta name="Date-Revision-yyyymmdd" content="20171203" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase - Exemplar for hbase-shaded-client archetype &#x2013; Issue Management</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -123,7 +123,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2017-12-02</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2017-12-03</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/c54c242b/hbase-build-configuration/hbase-archetypes/hbase-shaded-client-project/license.html
----------------------------------------------------------------------
diff --git a/hbase-build-configuration/hbase-archetypes/hbase-shaded-client-project/license.html b/hbase-build-configuration/hbase-archetypes/hbase-shaded-client-project/license.html
index 947cabf..d9f5493 100644
--- a/hbase-build-configuration/hbase-archetypes/hbase-shaded-client-project/license.html
+++ b/hbase-build-configuration/hbase-archetypes/hbase-shaded-client-project/license.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="20171202" />
+    <meta name="Date-Revision-yyyymmdd" content="20171203" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase - Exemplar for hbase-shaded-client archetype &#x2013; Project Licenses</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -326,7 +326,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2017-12-02</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2017-12-03</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/c54c242b/hbase-build-configuration/hbase-archetypes/hbase-shaded-client-project/mail-lists.html
----------------------------------------------------------------------
diff --git a/hbase-build-configuration/hbase-archetypes/hbase-shaded-client-project/mail-lists.html b/hbase-build-configuration/hbase-archetypes/hbase-shaded-client-project/mail-lists.html
index eaddd51..7aa71aa 100644
--- a/hbase-build-configuration/hbase-archetypes/hbase-shaded-client-project/mail-lists.html
+++ b/hbase-build-configuration/hbase-archetypes/hbase-shaded-client-project/mail-lists.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="20171202" />
+    <meta name="Date-Revision-yyyymmdd" content="20171203" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase - Exemplar for hbase-shaded-client archetype &#x2013; Project Mailing Lists</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -176,7 +176,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2017-12-02</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2017-12-03</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/c54c242b/hbase-build-configuration/hbase-archetypes/hbase-shaded-client-project/plugin-management.html
----------------------------------------------------------------------
diff --git a/hbase-build-configuration/hbase-archetypes/hbase-shaded-client-project/plugin-management.html b/hbase-build-configuration/hbase-archetypes/hbase-shaded-client-project/plugin-management.html
index e987784..0f7ca82 100644
--- a/hbase-build-configuration/hbase-archetypes/hbase-shaded-client-project/plugin-management.html
+++ b/hbase-build-configuration/hbase-archetypes/hbase-shaded-client-project/plugin-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="20171202" />
+    <meta name="Date-Revision-yyyymmdd" content="20171203" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase - Exemplar for hbase-shaded-client archetype &#x2013; Project Plugin Management</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -271,7 +271,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2017-12-02</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2017-12-03</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/c54c242b/hbase-build-configuration/hbase-archetypes/hbase-shaded-client-project/plugins.html
----------------------------------------------------------------------
diff --git a/hbase-build-configuration/hbase-archetypes/hbase-shaded-client-project/plugins.html b/hbase-build-configuration/hbase-archetypes/hbase-shaded-client-project/plugins.html
index eea95f1..e78bb51 100644
--- a/hbase-build-configuration/hbase-archetypes/hbase-shaded-client-project/plugins.html
+++ b/hbase-build-configuration/hbase-archetypes/hbase-shaded-client-project/plugins.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="20171202" />
+    <meta name="Date-Revision-yyyymmdd" content="20171203" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase - Exemplar for hbase-shaded-client archetype &#x2013; Project Plugins</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -226,7 +226,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2017-12-02</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2017-12-03</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/c54c242b/hbase-build-configuration/hbase-archetypes/hbase-shaded-client-project/project-info.html
----------------------------------------------------------------------
diff --git a/hbase-build-configuration/hbase-archetypes/hbase-shaded-client-project/project-info.html b/hbase-build-configuration/hbase-archetypes/hbase-shaded-client-project/project-info.html
index 77518cf..9cf4937 100644
--- a/hbase-build-configuration/hbase-archetypes/hbase-shaded-client-project/project-info.html
+++ b/hbase-build-configuration/hbase-archetypes/hbase-shaded-client-project/project-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="20171202" />
+    <meta name="Date-Revision-yyyymmdd" content="20171203" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase - Exemplar for hbase-shaded-client archetype &#x2013; Project Information</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -167,7 +167,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2017-12-02</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2017-12-03</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/c54c242b/hbase-build-configuration/hbase-archetypes/hbase-shaded-client-project/project-reports.html
----------------------------------------------------------------------
diff --git a/hbase-build-configuration/hbase-archetypes/hbase-shaded-client-project/project-reports.html b/hbase-build-configuration/hbase-archetypes/hbase-shaded-client-project/project-reports.html
index b7bf8bd..68968a7 100644
--- a/hbase-build-configuration/hbase-archetypes/hbase-shaded-client-project/project-reports.html
+++ b/hbase-build-configuration/hbase-archetypes/hbase-shaded-client-project/project-reports.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="20171202" />
+    <meta name="Date-Revision-yyyymmdd" content="20171203" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase - Exemplar for hbase-shaded-client archetype &#x2013; Generated Reports</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -128,7 +128,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2017-12-02</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2017-12-03</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/c54c242b/hbase-build-configuration/hbase-archetypes/hbase-shaded-client-project/project-summary.html
----------------------------------------------------------------------
diff --git a/hbase-build-configuration/hbase-archetypes/hbase-shaded-client-project/project-summary.html b/hbase-build-configuration/hbase-archetypes/hbase-shaded-client-project/project-summary.html
index 478d33b..5284eee 100644
--- a/hbase-build-configuration/hbase-archetypes/hbase-shaded-client-project/project-summary.html
+++ b/hbase-build-configuration/hbase-archetypes/hbase-shaded-client-project/project-summary.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="20171202" />
+    <meta name="Date-Revision-yyyymmdd" content="20171203" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase - Exemplar for hbase-shaded-client archetype &#x2013; Project Summary</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -166,7 +166,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2017-12-02</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2017-12-03</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/c54c242b/hbase-build-configuration/hbase-archetypes/hbase-shaded-client-project/source-repository.html
----------------------------------------------------------------------
diff --git a/hbase-build-configuration/hbase-archetypes/hbase-shaded-client-project/source-repository.html b/hbase-build-configuration/hbase-archetypes/hbase-shaded-client-project/source-repository.html
index 431ac0c..c79cc34 100644
--- a/hbase-build-configuration/hbase-archetypes/hbase-shaded-client-project/source-repository.html
+++ b/hbase-build-configuration/hbase-archetypes/hbase-shaded-client-project/source-repository.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="20171202" />
+    <meta name="Date-Revision-yyyymmdd" content="20171203" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase - Exemplar for hbase-shaded-client archetype &#x2013; Source Code Management</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -134,7 +134,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2017-12-02</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2017-12-03</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/c54c242b/hbase-build-configuration/hbase-archetypes/hbase-shaded-client-project/team-list.html
----------------------------------------------------------------------
diff --git a/hbase-build-configuration/hbase-archetypes/hbase-shaded-client-project/team-list.html b/hbase-build-configuration/hbase-archetypes/hbase-shaded-client-project/team-list.html
index 168ac83..f796cd1 100644
--- a/hbase-build-configuration/hbase-archetypes/hbase-shaded-client-project/team-list.html
+++ b/hbase-build-configuration/hbase-archetypes/hbase-shaded-client-project/team-list.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="20171202" />
+    <meta name="Date-Revision-yyyymmdd" content="20171203" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase - Exemplar for hbase-shaded-client archetype &#x2013; Project Team</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -547,7 +547,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2017-12-02</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2017-12-03</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/c54c242b/hbase-build-configuration/hbase-archetypes/index.html
----------------------------------------------------------------------
diff --git a/hbase-build-configuration/hbase-archetypes/index.html b/hbase-build-configuration/hbase-archetypes/index.html
index 42f92d7..e9a5453 100644
--- a/hbase-build-configuration/hbase-archetypes/index.html
+++ b/hbase-build-configuration/hbase-archetypes/index.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="20171202" />
+    <meta name="Date-Revision-yyyymmdd" content="20171203" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase - Archetypes &#x2013; About</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -135,7 +135,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2017-12-02</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2017-12-03</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/c54c242b/hbase-build-configuration/hbase-archetypes/integration.html
----------------------------------------------------------------------
diff --git a/hbase-build-configuration/hbase-archetypes/integration.html b/hbase-build-configuration/hbase-archetypes/integration.html
index 7ff2ca2..cc17bdf 100644
--- a/hbase-build-configuration/hbase-archetypes/integration.html
+++ b/hbase-build-configuration/hbase-archetypes/integration.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="20171202" />
+    <meta name="Date-Revision-yyyymmdd" content="20171203" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase - Archetypes &#x2013; CI Management</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -126,7 +126,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2017-12-02</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2017-12-03</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/c54c242b/hbase-build-configuration/hbase-archetypes/issue-tracking.html
----------------------------------------------------------------------
diff --git a/hbase-build-configuration/hbase-archetypes/issue-tracking.html b/hbase-build-configuration/hbase-archetypes/issue-tracking.html
index 592134d..3e22107 100644
--- a/hbase-build-configuration/hbase-archetypes/issue-tracking.html
+++ b/hbase-build-configuration/hbase-archetypes/issue-tracking.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="20171202" />
+    <meta name="Date-Revision-yyyymmdd" content="20171203" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase - Archetypes &#x2013; Issue Management</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -123,7 +123,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2017-12-02</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2017-12-03</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/c54c242b/hbase-build-configuration/hbase-archetypes/license.html
----------------------------------------------------------------------
diff --git a/hbase-build-configuration/hbase-archetypes/license.html b/hbase-build-configuration/hbase-archetypes/license.html
index 43ba5ea..acddf75 100644
--- a/hbase-build-configuration/hbase-archetypes/license.html
+++ b/hbase-build-configuration/hbase-archetypes/license.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="20171202" />
+    <meta name="Date-Revision-yyyymmdd" content="20171203" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase - Archetypes &#x2013; Project Licenses</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -326,7 +326,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2017-12-02</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2017-12-03</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/c54c242b/hbase-build-configuration/hbase-archetypes/mail-lists.html
----------------------------------------------------------------------
diff --git a/hbase-build-configuration/hbase-archetypes/mail-lists.html b/hbase-build-configuration/hbase-archetypes/mail-lists.html
index 4618279..8ed4780 100644
--- a/hbase-build-configuration/hbase-archetypes/mail-lists.html
+++ b/hbase-build-configuration/hbase-archetypes/mail-lists.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="20171202" />
+    <meta name="Date-Revision-yyyymmdd" content="20171203" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase - Archetypes &#x2013; Project Mailing Lists</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -176,7 +176,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2017-12-02</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2017-12-03</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/c54c242b/hbase-build-configuration/hbase-archetypes/plugin-management.html
----------------------------------------------------------------------
diff --git a/hbase-build-configuration/hbase-archetypes/plugin-management.html b/hbase-build-configuration/hbase-archetypes/plugin-management.html
index e735af2..a1e05a4 100644
--- a/hbase-build-configuration/hbase-archetypes/plugin-management.html
+++ b/hbase-build-configuration/hbase-archetypes/plugin-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="20171202" />
+    <meta name="Date-Revision-yyyymmdd" content="20171203" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase - Archetypes &#x2013; Project Plugin Management</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -271,7 +271,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2017-12-02</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2017-12-03</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/c54c242b/hbase-build-configuration/hbase-archetypes/plugins.html
----------------------------------------------------------------------
diff --git a/hbase-build-configuration/hbase-archetypes/plugins.html b/hbase-build-configuration/hbase-archetypes/plugins.html
index baf87b0..844ed55 100644
--- a/hbase-build-configuration/hbase-archetypes/plugins.html
+++ b/hbase-build-configuration/hbase-archetypes/plugins.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="20171202" />
+    <meta name="Date-Revision-yyyymmdd" content="20171203" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase - Archetypes &#x2013; Project Plugins</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -214,7 +214,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2017-12-02</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2017-12-03</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/c54c242b/hbase-build-configuration/hbase-archetypes/project-info.html
----------------------------------------------------------------------
diff --git a/hbase-build-configuration/hbase-archetypes/project-info.html b/hbase-build-configuration/hbase-archetypes/project-info.html
index 8e69722..ef00cd3 100644
--- a/hbase-build-configuration/hbase-archetypes/project-info.html
+++ b/hbase-build-configuration/hbase-archetypes/project-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="20171202" />
+    <meta name="Date-Revision-yyyymmdd" content="20171203" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase - Archetypes &#x2013; Project Information</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -167,7 +167,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2017-12-02</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2017-12-03</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/c54c242b/hbase-build-configuration/hbase-archetypes/project-summary.html
----------------------------------------------------------------------
diff --git a/hbase-build-configuration/hbase-archetypes/project-summary.html b/hbase-build-configuration/hbase-archetypes/project-summary.html
index f7f57df..a1c1f5a 100644
--- a/hbase-build-configuration/hbase-archetypes/project-summary.html
+++ b/hbase-build-configuration/hbase-archetypes/project-summary.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="20171202" />
+    <meta name="Date-Revision-yyyymmdd" content="20171203" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase - Archetypes &#x2013; Project Summary</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -163,7 +163,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2017-12-02</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2017-12-03</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/c54c242b/hbase-build-configuration/hbase-archetypes/source-repository.html
----------------------------------------------------------------------
diff --git a/hbase-build-configuration/hbase-archetypes/source-repository.html b/hbase-build-configuration/hbase-archetypes/source-repository.html
index cc9d109..2f584e5 100644
--- a/hbase-build-configuration/hbase-archetypes/source-repository.html
+++ b/hbase-build-configuration/hbase-archetypes/source-repository.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="20171202" />
+    <meta name="Date-Revision-yyyymmdd" content="20171203" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase - Archetypes &#x2013; Source Code Management</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -134,7 +134,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2017-12-02</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2017-12-03</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/c54c242b/hbase-build-configuration/hbase-archetypes/team-list.html
----------------------------------------------------------------------
diff --git a/hbase-build-configuration/hbase-archetypes/team-list.html b/hbase-build-configuration/hbase-archetypes/team-list.html
index 63baf9e..73dfa57 100644
--- a/hbase-build-configuration/hbase-archetypes/team-list.html
+++ b/hbase-build-configuration/hbase-archetypes/team-list.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="20171202" />
+    <meta name="Date-Revision-yyyymmdd" content="20171203" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase - Archetypes &#x2013; Project Team</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -547,7 +547,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2017-12-02</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2017-12-03</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/c54c242b/hbase-build-configuration/hbase-spark/checkstyle.html
----------------------------------------------------------------------
diff --git a/hbase-build-configuration/hbase-spark/checkstyle.html b/hbase-build-configuration/hbase-spark/checkstyle.html
index 5fc8403..dfcd7b2 100644
--- a/hbase-build-configuration/hbase-spark/checkstyle.html
+++ b/hbase-build-configuration/hbase-spark/checkstyle.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="20171202" />
+    <meta name="Date-Revision-yyyymmdd" content="20171203" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase - Spark &#x2013; Checkstyle Results</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -517,7 +517,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2017-12-02</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2017-12-03</li>
             </p>
                 </div>
 


[33/51] [partial] hbase-site git commit: Published site at .

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/c54c242b/devapidocs/src-html/org/apache/hadoop/hbase/ipc/BlockingRpcConnection.CallSender.html
----------------------------------------------------------------------
diff --git a/devapidocs/src-html/org/apache/hadoop/hbase/ipc/BlockingRpcConnection.CallSender.html b/devapidocs/src-html/org/apache/hadoop/hbase/ipc/BlockingRpcConnection.CallSender.html
index 81f352c..0782ea7 100644
--- a/devapidocs/src-html/org/apache/hadoop/hbase/ipc/BlockingRpcConnection.CallSender.html
+++ b/devapidocs/src-html/org/apache/hadoop/hbase/ipc/BlockingRpcConnection.CallSender.html
@@ -51,39 +51,39 @@
 <span class="sourceLineNo">043</span>import java.util.concurrent.ConcurrentHashMap;<a name="line.43"></a>
 <span class="sourceLineNo">044</span>import java.util.concurrent.ConcurrentMap;<a name="line.44"></a>
 <span class="sourceLineNo">045</span>import java.util.concurrent.ThreadLocalRandom;<a name="line.45"></a>
-<span class="sourceLineNo">046</span><a name="line.46"></a>
-<span class="sourceLineNo">047</span>import javax.security.sasl.SaslException;<a name="line.47"></a>
-<span class="sourceLineNo">048</span><a name="line.48"></a>
-<span class="sourceLineNo">049</span>import org.apache.commons.logging.Log;<a name="line.49"></a>
-<span class="sourceLineNo">050</span>import org.apache.commons.logging.LogFactory;<a name="line.50"></a>
-<span class="sourceLineNo">051</span>import org.apache.hadoop.conf.Configuration;<a name="line.51"></a>
-<span class="sourceLineNo">052</span>import org.apache.hadoop.hbase.CellScanner;<a name="line.52"></a>
-<span class="sourceLineNo">053</span>import org.apache.hadoop.hbase.DoNotRetryIOException;<a name="line.53"></a>
-<span class="sourceLineNo">054</span>import org.apache.hadoop.hbase.exceptions.ConnectionClosingException;<a name="line.54"></a>
-<span class="sourceLineNo">055</span>import org.apache.hadoop.hbase.io.ByteArrayOutputStream;<a name="line.55"></a>
-<span class="sourceLineNo">056</span>import org.apache.hadoop.hbase.ipc.HBaseRpcController.CancellationCallback;<a name="line.56"></a>
-<span class="sourceLineNo">057</span>import org.apache.hadoop.hbase.security.HBaseSaslRpcClient;<a name="line.57"></a>
-<span class="sourceLineNo">058</span>import org.apache.hadoop.hbase.security.SaslUtil;<a name="line.58"></a>
-<span class="sourceLineNo">059</span>import org.apache.hadoop.hbase.security.SaslUtil.QualityOfProtection;<a name="line.59"></a>
-<span class="sourceLineNo">060</span>import org.apache.hadoop.hbase.shaded.com.google.protobuf.Message;<a name="line.60"></a>
-<span class="sourceLineNo">061</span>import org.apache.hadoop.hbase.shaded.com.google.protobuf.Message.Builder;<a name="line.61"></a>
-<span class="sourceLineNo">062</span>import org.apache.hadoop.hbase.shaded.com.google.protobuf.RpcCallback;<a name="line.62"></a>
-<span class="sourceLineNo">063</span>import org.apache.hadoop.hbase.shaded.protobuf.ProtobufUtil;<a name="line.63"></a>
-<span class="sourceLineNo">064</span>import org.apache.hadoop.hbase.shaded.protobuf.generated.RPCProtos;<a name="line.64"></a>
-<span class="sourceLineNo">065</span>import org.apache.hadoop.hbase.shaded.protobuf.generated.RPCProtos.CellBlockMeta;<a name="line.65"></a>
-<span class="sourceLineNo">066</span>import org.apache.hadoop.hbase.shaded.protobuf.generated.RPCProtos.ConnectionHeader;<a name="line.66"></a>
-<span class="sourceLineNo">067</span>import org.apache.hadoop.hbase.shaded.protobuf.generated.RPCProtos.ExceptionResponse;<a name="line.67"></a>
-<span class="sourceLineNo">068</span>import org.apache.hadoop.hbase.shaded.protobuf.generated.RPCProtos.RequestHeader;<a name="line.68"></a>
-<span class="sourceLineNo">069</span>import org.apache.hadoop.hbase.shaded.protobuf.generated.RPCProtos.ResponseHeader;<a name="line.69"></a>
-<span class="sourceLineNo">070</span>import org.apache.hadoop.hbase.trace.TraceUtil;<a name="line.70"></a>
-<span class="sourceLineNo">071</span>import org.apache.hadoop.hbase.util.EnvironmentEdgeManager;<a name="line.71"></a>
-<span class="sourceLineNo">072</span>import org.apache.hadoop.hbase.util.ExceptionUtil;<a name="line.72"></a>
-<span class="sourceLineNo">073</span>import org.apache.hadoop.io.IOUtils;<a name="line.73"></a>
-<span class="sourceLineNo">074</span>import org.apache.hadoop.ipc.RemoteException;<a name="line.74"></a>
-<span class="sourceLineNo">075</span>import org.apache.hadoop.net.NetUtils;<a name="line.75"></a>
-<span class="sourceLineNo">076</span>import org.apache.hadoop.security.UserGroupInformation;<a name="line.76"></a>
-<span class="sourceLineNo">077</span>import org.apache.htrace.core.TraceScope;<a name="line.77"></a>
-<span class="sourceLineNo">078</span>import org.apache.yetus.audience.InterfaceAudience;<a name="line.78"></a>
+<span class="sourceLineNo">046</span>import javax.security.sasl.SaslException;<a name="line.46"></a>
+<span class="sourceLineNo">047</span>import org.apache.commons.logging.Log;<a name="line.47"></a>
+<span class="sourceLineNo">048</span>import org.apache.commons.logging.LogFactory;<a name="line.48"></a>
+<span class="sourceLineNo">049</span>import org.apache.hadoop.conf.Configuration;<a name="line.49"></a>
+<span class="sourceLineNo">050</span>import org.apache.hadoop.hbase.CellScanner;<a name="line.50"></a>
+<span class="sourceLineNo">051</span>import org.apache.hadoop.hbase.DoNotRetryIOException;<a name="line.51"></a>
+<span class="sourceLineNo">052</span>import org.apache.hadoop.hbase.exceptions.ConnectionClosingException;<a name="line.52"></a>
+<span class="sourceLineNo">053</span>import org.apache.hadoop.hbase.io.ByteArrayOutputStream;<a name="line.53"></a>
+<span class="sourceLineNo">054</span>import org.apache.hadoop.hbase.ipc.HBaseRpcController.CancellationCallback;<a name="line.54"></a>
+<span class="sourceLineNo">055</span>import org.apache.hadoop.hbase.security.HBaseSaslRpcClient;<a name="line.55"></a>
+<span class="sourceLineNo">056</span>import org.apache.hadoop.hbase.security.SaslUtil;<a name="line.56"></a>
+<span class="sourceLineNo">057</span>import org.apache.hadoop.hbase.security.SaslUtil.QualityOfProtection;<a name="line.57"></a>
+<span class="sourceLineNo">058</span>import org.apache.hadoop.hbase.trace.TraceUtil;<a name="line.58"></a>
+<span class="sourceLineNo">059</span>import org.apache.hadoop.hbase.util.EnvironmentEdgeManager;<a name="line.59"></a>
+<span class="sourceLineNo">060</span>import org.apache.hadoop.hbase.util.ExceptionUtil;<a name="line.60"></a>
+<span class="sourceLineNo">061</span>import org.apache.hadoop.io.IOUtils;<a name="line.61"></a>
+<span class="sourceLineNo">062</span>import org.apache.hadoop.ipc.RemoteException;<a name="line.62"></a>
+<span class="sourceLineNo">063</span>import org.apache.hadoop.net.NetUtils;<a name="line.63"></a>
+<span class="sourceLineNo">064</span>import org.apache.hadoop.security.UserGroupInformation;<a name="line.64"></a>
+<span class="sourceLineNo">065</span>import org.apache.hadoop.util.StringUtils;<a name="line.65"></a>
+<span class="sourceLineNo">066</span>import org.apache.htrace.core.TraceScope;<a name="line.66"></a>
+<span class="sourceLineNo">067</span>import org.apache.yetus.audience.InterfaceAudience;<a name="line.67"></a>
+<span class="sourceLineNo">068</span><a name="line.68"></a>
+<span class="sourceLineNo">069</span>import org.apache.hadoop.hbase.shaded.com.google.protobuf.Message;<a name="line.69"></a>
+<span class="sourceLineNo">070</span>import org.apache.hadoop.hbase.shaded.com.google.protobuf.Message.Builder;<a name="line.70"></a>
+<span class="sourceLineNo">071</span>import org.apache.hadoop.hbase.shaded.com.google.protobuf.RpcCallback;<a name="line.71"></a>
+<span class="sourceLineNo">072</span>import org.apache.hadoop.hbase.shaded.protobuf.ProtobufUtil;<a name="line.72"></a>
+<span class="sourceLineNo">073</span>import org.apache.hadoop.hbase.shaded.protobuf.generated.RPCProtos;<a name="line.73"></a>
+<span class="sourceLineNo">074</span>import org.apache.hadoop.hbase.shaded.protobuf.generated.RPCProtos.CellBlockMeta;<a name="line.74"></a>
+<span class="sourceLineNo">075</span>import org.apache.hadoop.hbase.shaded.protobuf.generated.RPCProtos.ConnectionHeader;<a name="line.75"></a>
+<span class="sourceLineNo">076</span>import org.apache.hadoop.hbase.shaded.protobuf.generated.RPCProtos.ExceptionResponse;<a name="line.76"></a>
+<span class="sourceLineNo">077</span>import org.apache.hadoop.hbase.shaded.protobuf.generated.RPCProtos.RequestHeader;<a name="line.77"></a>
+<span class="sourceLineNo">078</span>import org.apache.hadoop.hbase.shaded.protobuf.generated.RPCProtos.ResponseHeader;<a name="line.78"></a>
 <span class="sourceLineNo">079</span><a name="line.79"></a>
 <span class="sourceLineNo">080</span>/**<a name="line.80"></a>
 <span class="sourceLineNo">081</span> * Thread that reads responses and notifies callers. Each connection owns a socket connected to a<a name="line.81"></a>
@@ -271,533 +271,545 @@
 <span class="sourceLineNo">263</span>        /*<a name="line.263"></a>
 <span class="sourceLineNo">264</span>         * The max number of retries is 45, which amounts to 20s*45 = 15 minutes retries.<a name="line.264"></a>
 <span class="sourceLineNo">265</span>         */<a name="line.265"></a>
-<span class="sourceLineNo">266</span>        handleConnectionFailure(timeoutFailures++, this.rpcClient.maxRetries, toe);<a name="line.266"></a>
-<span class="sourceLineNo">267</span>      } catch (IOException ie) {<a name="line.267"></a>
-<span class="sourceLineNo">268</span>        handleConnectionFailure(ioFailures++, this.rpcClient.maxRetries, ie);<a name="line.268"></a>
-<span class="sourceLineNo">269</span>      }<a name="line.269"></a>
-<span class="sourceLineNo">270</span>    }<a name="line.270"></a>
-<span class="sourceLineNo">271</span>  }<a name="line.271"></a>
-<span class="sourceLineNo">272</span><a name="line.272"></a>
-<span class="sourceLineNo">273</span>  /**<a name="line.273"></a>
-<span class="sourceLineNo">274</span>   * Handle connection failures If the current number of retries is equal to the max number of<a name="line.274"></a>
-<span class="sourceLineNo">275</span>   * retries, stop retrying and throw the exception; Otherwise backoff N seconds and try connecting<a name="line.275"></a>
-<span class="sourceLineNo">276</span>   * again. This Method is only called from inside setupIOstreams(), which is synchronized. Hence<a name="line.276"></a>
-<span class="sourceLineNo">277</span>   * the sleep is synchronized; the locks will be retained.<a name="line.277"></a>
-<span class="sourceLineNo">278</span>   * @param curRetries current number of retries<a name="line.278"></a>
-<span class="sourceLineNo">279</span>   * @param maxRetries max number of retries allowed<a name="line.279"></a>
-<span class="sourceLineNo">280</span>   * @param ioe failure reason<a name="line.280"></a>
-<span class="sourceLineNo">281</span>   * @throws IOException if max number of retries is reached<a name="line.281"></a>
-<span class="sourceLineNo">282</span>   */<a name="line.282"></a>
-<span class="sourceLineNo">283</span>  private void handleConnectionFailure(int curRetries, int maxRetries, IOException ioe)<a name="line.283"></a>
-<span class="sourceLineNo">284</span>      throws IOException {<a name="line.284"></a>
-<span class="sourceLineNo">285</span>    closeSocket();<a name="line.285"></a>
-<span class="sourceLineNo">286</span><a name="line.286"></a>
-<span class="sourceLineNo">287</span>    // throw the exception if the maximum number of retries is reached<a name="line.287"></a>
-<span class="sourceLineNo">288</span>    if (curRetries &gt;= maxRetries || ExceptionUtil.isInterrupt(ioe)) {<a name="line.288"></a>
-<span class="sourceLineNo">289</span>      throw ioe;<a name="line.289"></a>
-<span class="sourceLineNo">290</span>    }<a name="line.290"></a>
-<span class="sourceLineNo">291</span><a name="line.291"></a>
-<span class="sourceLineNo">292</span>    // otherwise back off and retry<a name="line.292"></a>
-<span class="sourceLineNo">293</span>    try {<a name="line.293"></a>
-<span class="sourceLineNo">294</span>      Thread.sleep(this.rpcClient.failureSleep);<a name="line.294"></a>
-<span class="sourceLineNo">295</span>    } catch (InterruptedException ie) {<a name="line.295"></a>
-<span class="sourceLineNo">296</span>      ExceptionUtil.rethrowIfInterrupt(ie);<a name="line.296"></a>
-<span class="sourceLineNo">297</span>    }<a name="line.297"></a>
-<span class="sourceLineNo">298</span><a name="line.298"></a>
-<span class="sourceLineNo">299</span>    LOG.info("Retrying connect to server: " + remoteId.getAddress() + " after sleeping "<a name="line.299"></a>
-<span class="sourceLineNo">300</span>        + this.rpcClient.failureSleep + "ms. Already tried " + curRetries + " time(s).");<a name="line.300"></a>
-<span class="sourceLineNo">301</span>  }<a name="line.301"></a>
-<span class="sourceLineNo">302</span><a name="line.302"></a>
-<span class="sourceLineNo">303</span>  /*<a name="line.303"></a>
-<span class="sourceLineNo">304</span>   * wait till someone signals us to start reading RPC response or it is idle too long, it is marked<a name="line.304"></a>
-<span class="sourceLineNo">305</span>   * as to be closed, or the client is marked as not running.<a name="line.305"></a>
-<span class="sourceLineNo">306</span>   * @return true if it is time to read a response; false otherwise.<a name="line.306"></a>
-<span class="sourceLineNo">307</span>   */<a name="line.307"></a>
-<span class="sourceLineNo">308</span>  private synchronized boolean waitForWork() {<a name="line.308"></a>
-<span class="sourceLineNo">309</span>    // beware of the concurrent access to the calls list: we can add calls, but as well<a name="line.309"></a>
-<span class="sourceLineNo">310</span>    // remove them.<a name="line.310"></a>
-<span class="sourceLineNo">311</span>    long waitUntil = EnvironmentEdgeManager.currentTime() + this.rpcClient.minIdleTimeBeforeClose;<a name="line.311"></a>
-<span class="sourceLineNo">312</span>    for (;;) {<a name="line.312"></a>
-<span class="sourceLineNo">313</span>      if (thread == null) {<a name="line.313"></a>
-<span class="sourceLineNo">314</span>        return false;<a name="line.314"></a>
-<span class="sourceLineNo">315</span>      }<a name="line.315"></a>
-<span class="sourceLineNo">316</span>      if (!calls.isEmpty()) {<a name="line.316"></a>
-<span class="sourceLineNo">317</span>        return true;<a name="line.317"></a>
-<span class="sourceLineNo">318</span>      }<a name="line.318"></a>
-<span class="sourceLineNo">319</span>      if (EnvironmentEdgeManager.currentTime() &gt;= waitUntil) {<a name="line.319"></a>
-<span class="sourceLineNo">320</span>        closeConn(<a name="line.320"></a>
-<span class="sourceLineNo">321</span>          new IOException("idle connection closed with " + calls.size() + " pending request(s)"));<a name="line.321"></a>
-<span class="sourceLineNo">322</span>        return false;<a name="line.322"></a>
-<span class="sourceLineNo">323</span>      }<a name="line.323"></a>
-<span class="sourceLineNo">324</span>      try {<a name="line.324"></a>
-<span class="sourceLineNo">325</span>        wait(Math.min(this.rpcClient.minIdleTimeBeforeClose, 1000));<a name="line.325"></a>
-<span class="sourceLineNo">326</span>      } catch (InterruptedException e) {<a name="line.326"></a>
-<span class="sourceLineNo">327</span>      }<a name="line.327"></a>
-<span class="sourceLineNo">328</span>    }<a name="line.328"></a>
-<span class="sourceLineNo">329</span>  }<a name="line.329"></a>
-<span class="sourceLineNo">330</span><a name="line.330"></a>
-<span class="sourceLineNo">331</span>  @Override<a name="line.331"></a>
-<span class="sourceLineNo">332</span>  public void run() {<a name="line.332"></a>
-<span class="sourceLineNo">333</span>    if (LOG.isTraceEnabled()) {<a name="line.333"></a>
-<span class="sourceLineNo">334</span>      LOG.trace(threadName + ": starting, connections " + this.rpcClient.connections.size());<a name="line.334"></a>
-<span class="sourceLineNo">335</span>    }<a name="line.335"></a>
-<span class="sourceLineNo">336</span>    while (waitForWork()) {<a name="line.336"></a>
-<span class="sourceLineNo">337</span>      readResponse();<a name="line.337"></a>
-<span class="sourceLineNo">338</span>    }<a name="line.338"></a>
-<span class="sourceLineNo">339</span>    if (LOG.isTraceEnabled()) {<a name="line.339"></a>
-<span class="sourceLineNo">340</span>      LOG.trace(threadName + ": stopped, connections " + this.rpcClient.connections.size());<a name="line.340"></a>
-<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><a name="line.343"></a>
-<span class="sourceLineNo">344</span>  private void disposeSasl() {<a name="line.344"></a>
-<span class="sourceLineNo">345</span>    if (saslRpcClient != null) {<a name="line.345"></a>
-<span class="sourceLineNo">346</span>      saslRpcClient.dispose();<a name="line.346"></a>
-<span class="sourceLineNo">347</span>      saslRpcClient = null;<a name="line.347"></a>
-<span class="sourceLineNo">348</span>    }<a name="line.348"></a>
-<span class="sourceLineNo">349</span>  }<a name="line.349"></a>
-<span class="sourceLineNo">350</span><a name="line.350"></a>
-<span class="sourceLineNo">351</span>  private boolean setupSaslConnection(final InputStream in2, final OutputStream out2)<a name="line.351"></a>
-<span class="sourceLineNo">352</span>      throws IOException {<a name="line.352"></a>
-<span class="sourceLineNo">353</span>    saslRpcClient = new HBaseSaslRpcClient(authMethod, token, serverPrincipal,<a name="line.353"></a>
-<span class="sourceLineNo">354</span>        this.rpcClient.fallbackAllowed, this.rpcClient.conf.get("hbase.rpc.protection",<a name="line.354"></a>
-<span class="sourceLineNo">355</span>          QualityOfProtection.AUTHENTICATION.name().toLowerCase(Locale.ROOT)),<a name="line.355"></a>
-<span class="sourceLineNo">356</span>        this.rpcClient.conf.getBoolean(CRYPTO_AES_ENABLED_KEY, CRYPTO_AES_ENABLED_DEFAULT));<a name="line.356"></a>
-<span class="sourceLineNo">357</span>    return saslRpcClient.saslConnect(in2, out2);<a name="line.357"></a>
-<span class="sourceLineNo">358</span>  }<a name="line.358"></a>
-<span class="sourceLineNo">359</span><a name="line.359"></a>
-<span class="sourceLineNo">360</span>  /**<a name="line.360"></a>
-<span class="sourceLineNo">361</span>   * If multiple clients with the same principal try to connect to the same server at the same time,<a name="line.361"></a>
-<span class="sourceLineNo">362</span>   * the server assumes a replay attack is in progress. This is a feature of kerberos. In order to<a name="line.362"></a>
-<span class="sourceLineNo">363</span>   * work around this, what is done is that the client backs off randomly and tries to initiate the<a name="line.363"></a>
-<span class="sourceLineNo">364</span>   * connection again. The other problem is to do with ticket expiry. To handle that, a relogin is<a name="line.364"></a>
-<span class="sourceLineNo">365</span>   * attempted.<a name="line.365"></a>
-<span class="sourceLineNo">366</span>   * &lt;p&gt;<a name="line.366"></a>
-<span class="sourceLineNo">367</span>   * The retry logic is governed by the {@link #shouldAuthenticateOverKrb} method. In case when the<a name="line.367"></a>
-<span class="sourceLineNo">368</span>   * user doesn't have valid credentials, we don't need to retry (from cache or ticket). In such<a name="line.368"></a>
-<span class="sourceLineNo">369</span>   * cases, it is prudent to throw a runtime exception when we receive a SaslException from the<a name="line.369"></a>
-<span class="sourceLineNo">370</span>   * underlying authentication implementation, so there is no retry from other high level (for eg,<a name="line.370"></a>
-<span class="sourceLineNo">371</span>   * HCM or HBaseAdmin).<a name="line.371"></a>
-<span class="sourceLineNo">372</span>   * &lt;/p&gt;<a name="line.372"></a>
-<span class="sourceLineNo">373</span>   */<a name="line.373"></a>
-<span class="sourceLineNo">374</span>  private void handleSaslConnectionFailure(final int currRetries, final int maxRetries,<a name="line.374"></a>
-<span class="sourceLineNo">375</span>      final Exception ex, final UserGroupInformation user)<a name="line.375"></a>
-<span class="sourceLineNo">376</span>      throws IOException, InterruptedException {<a name="line.376"></a>
-<span class="sourceLineNo">377</span>    closeSocket();<a name="line.377"></a>
-<span class="sourceLineNo">378</span>    user.doAs(new PrivilegedExceptionAction&lt;Object&gt;() {<a name="line.378"></a>
-<span class="sourceLineNo">379</span>      @Override<a name="line.379"></a>
-<span class="sourceLineNo">380</span>      public Object run() throws IOException, InterruptedException {<a name="line.380"></a>
-<span class="sourceLineNo">381</span>        if (shouldAuthenticateOverKrb()) {<a name="line.381"></a>
-<span class="sourceLineNo">382</span>          if (currRetries &lt; maxRetries) {<a name="line.382"></a>
-<span class="sourceLineNo">383</span>            if (LOG.isDebugEnabled()) {<a name="line.383"></a>
-<span class="sourceLineNo">384</span>              LOG.debug("Exception encountered while connecting to " + "the server : " + ex);<a name="line.384"></a>
-<span class="sourceLineNo">385</span>            }<a name="line.385"></a>
-<span class="sourceLineNo">386</span>            // try re-login<a name="line.386"></a>
-<span class="sourceLineNo">387</span>            relogin();<a name="line.387"></a>
-<span class="sourceLineNo">388</span>            disposeSasl();<a name="line.388"></a>
-<span class="sourceLineNo">389</span>            // have granularity of milliseconds<a name="line.389"></a>
-<span class="sourceLineNo">390</span>            // we are sleeping with the Connection lock held but since this<a name="line.390"></a>
-<span class="sourceLineNo">391</span>            // connection instance is being used for connecting to the server<a name="line.391"></a>
-<span class="sourceLineNo">392</span>            // in question, it is okay<a name="line.392"></a>
-<span class="sourceLineNo">393</span>            Thread.sleep(ThreadLocalRandom.current().nextInt(reloginMaxBackoff) + 1);<a name="line.393"></a>
-<span class="sourceLineNo">394</span>            return null;<a name="line.394"></a>
-<span class="sourceLineNo">395</span>          } else {<a name="line.395"></a>
-<span class="sourceLineNo">396</span>            String msg = "Couldn't setup connection for "<a name="line.396"></a>
-<span class="sourceLineNo">397</span>                + UserGroupInformation.getLoginUser().getUserName() + " to " + serverPrincipal;<a name="line.397"></a>
-<span class="sourceLineNo">398</span>            LOG.warn(msg, ex);<a name="line.398"></a>
-<span class="sourceLineNo">399</span>            throw (IOException) new IOException(msg).initCause(ex);<a name="line.399"></a>
-<span class="sourceLineNo">400</span>          }<a name="line.400"></a>
-<span class="sourceLineNo">401</span>        } else {<a name="line.401"></a>
-<span class="sourceLineNo">402</span>          LOG.warn("Exception encountered while connecting to " + "the server : " + ex);<a name="line.402"></a>
-<span class="sourceLineNo">403</span>        }<a name="line.403"></a>
-<span class="sourceLineNo">404</span>        if (ex instanceof RemoteException) {<a name="line.404"></a>
-<span class="sourceLineNo">405</span>          throw (RemoteException) ex;<a name="line.405"></a>
-<span class="sourceLineNo">406</span>        }<a name="line.406"></a>
-<span class="sourceLineNo">407</span>        if (ex instanceof SaslException) {<a name="line.407"></a>
-<span class="sourceLineNo">408</span>          String msg = "SASL authentication failed."<a name="line.408"></a>
-<span class="sourceLineNo">409</span>              + " The most likely cause is missing or invalid credentials." + " Consider 'kinit'.";<a name="line.409"></a>
-<span class="sourceLineNo">410</span>          LOG.fatal(msg, ex);<a name="line.410"></a>
-<span class="sourceLineNo">411</span>          throw new RuntimeException(msg, ex);<a name="line.411"></a>
-<span class="sourceLineNo">412</span>        }<a name="line.412"></a>
-<span class="sourceLineNo">413</span>        throw new IOException(ex);<a name="line.413"></a>
-<span class="sourceLineNo">414</span>      }<a name="line.414"></a>
-<span class="sourceLineNo">415</span>    });<a name="line.415"></a>
-<span class="sourceLineNo">416</span>  }<a name="line.416"></a>
-<span class="sourceLineNo">417</span><a name="line.417"></a>
-<span class="sourceLineNo">418</span>  private void setupIOstreams() throws IOException {<a name="line.418"></a>
-<span class="sourceLineNo">419</span>    if (socket != null) {<a name="line.419"></a>
-<span class="sourceLineNo">420</span>      // The connection is already available. Perfect.<a name="line.420"></a>
-<span class="sourceLineNo">421</span>      return;<a name="line.421"></a>
-<span class="sourceLineNo">422</span>    }<a name="line.422"></a>
-<span class="sourceLineNo">423</span><a name="line.423"></a>
-<span class="sourceLineNo">424</span>    if (this.rpcClient.failedServers.isFailedServer(remoteId.getAddress())) {<a name="line.424"></a>
-<span class="sourceLineNo">425</span>      if (LOG.isDebugEnabled()) {<a name="line.425"></a>
-<span class="sourceLineNo">426</span>        LOG.debug("Not trying to connect to " + remoteId.address<a name="line.426"></a>
-<span class="sourceLineNo">427</span>            + " this server is in the failed servers list");<a name="line.427"></a>
-<span class="sourceLineNo">428</span>      }<a name="line.428"></a>
-<span class="sourceLineNo">429</span>      throw new FailedServerException(<a name="line.429"></a>
-<span class="sourceLineNo">430</span>          "This server is in the failed servers list: " + remoteId.address);<a name="line.430"></a>
-<span class="sourceLineNo">431</span>    }<a name="line.431"></a>
-<span class="sourceLineNo">432</span><a name="line.432"></a>
-<span class="sourceLineNo">433</span>    try {<a name="line.433"></a>
-<span class="sourceLineNo">434</span>      if (LOG.isDebugEnabled()) {<a name="line.434"></a>
-<span class="sourceLineNo">435</span>        LOG.debug("Connecting to " + remoteId.address);<a name="line.435"></a>
-<span class="sourceLineNo">436</span>      }<a name="line.436"></a>
-<span class="sourceLineNo">437</span><a name="line.437"></a>
-<span class="sourceLineNo">438</span>      short numRetries = 0;<a name="line.438"></a>
-<span class="sourceLineNo">439</span>      final short MAX_RETRIES = 5;<a name="line.439"></a>
-<span class="sourceLineNo">440</span>      while (true) {<a name="line.440"></a>
-<span class="sourceLineNo">441</span>        setupConnection();<a name="line.441"></a>
-<span class="sourceLineNo">442</span>        InputStream inStream = NetUtils.getInputStream(socket);<a name="line.442"></a>
-<span class="sourceLineNo">443</span>        // This creates a socket with a write timeout. This timeout cannot be changed.<a name="line.443"></a>
-<span class="sourceLineNo">444</span>        OutputStream outStream = NetUtils.getOutputStream(socket, this.rpcClient.writeTO);<a name="line.444"></a>
-<span class="sourceLineNo">445</span>        // Write out the preamble -- MAGIC, version, and auth to use.<a name="line.445"></a>
-<span class="sourceLineNo">446</span>        writeConnectionHeaderPreamble(outStream);<a name="line.446"></a>
-<span class="sourceLineNo">447</span>        if (useSasl) {<a name="line.447"></a>
-<span class="sourceLineNo">448</span>          final InputStream in2 = inStream;<a name="line.448"></a>
-<span class="sourceLineNo">449</span>          final OutputStream out2 = outStream;<a name="line.449"></a>
-<span class="sourceLineNo">450</span>          UserGroupInformation ticket = getUGI();<a name="line.450"></a>
-<span class="sourceLineNo">451</span>          boolean continueSasl;<a name="line.451"></a>
-<span class="sourceLineNo">452</span>          if (ticket == null) {<a name="line.452"></a>
-<span class="sourceLineNo">453</span>            throw new FatalConnectionException("ticket/user is null");<a name="line.453"></a>
-<span class="sourceLineNo">454</span>          }<a name="line.454"></a>
-<span class="sourceLineNo">455</span>          try {<a name="line.455"></a>
-<span class="sourceLineNo">456</span>            continueSasl = ticket.doAs(new PrivilegedExceptionAction&lt;Boolean&gt;() {<a name="line.456"></a>
-<span class="sourceLineNo">457</span>              @Override<a name="line.457"></a>
-<span class="sourceLineNo">458</span>              public Boolean run() throws IOException {<a name="line.458"></a>
-<span class="sourceLineNo">459</span>                return setupSaslConnection(in2, out2);<a name="line.459"></a>
-<span class="sourceLineNo">460</span>              }<a name="line.460"></a>
-<span class="sourceLineNo">461</span>            });<a name="line.461"></a>
-<span class="sourceLineNo">462</span>          } catch (Exception ex) {<a name="line.462"></a>
-<span class="sourceLineNo">463</span>            ExceptionUtil.rethrowIfInterrupt(ex);<a name="line.463"></a>
-<span class="sourceLineNo">464</span>            handleSaslConnectionFailure(numRetries++, MAX_RETRIES, ex, ticket);<a name="line.464"></a>
-<span class="sourceLineNo">465</span>            continue;<a name="line.465"></a>
+<span class="sourceLineNo">266</span>        if (LOG.isDebugEnabled()) {<a name="line.266"></a>
+<span class="sourceLineNo">267</span>          LOG.debug("Received exception in connection setup.\n" +<a name="line.267"></a>
+<span class="sourceLineNo">268</span>              StringUtils.stringifyException(toe));<a name="line.268"></a>
+<span class="sourceLineNo">269</span>        }<a name="line.269"></a>
+<span class="sourceLineNo">270</span>        handleConnectionFailure(timeoutFailures++, this.rpcClient.maxRetries, toe);<a name="line.270"></a>
+<span class="sourceLineNo">271</span>      } catch (IOException ie) {<a name="line.271"></a>
+<span class="sourceLineNo">272</span>        if (LOG.isDebugEnabled()) {<a name="line.272"></a>
+<span class="sourceLineNo">273</span>          LOG.debug("Received exception in connection setup.\n" +<a name="line.273"></a>
+<span class="sourceLineNo">274</span>              StringUtils.stringifyException(ie));<a name="line.274"></a>
+<span class="sourceLineNo">275</span>        }<a name="line.275"></a>
+<span class="sourceLineNo">276</span>        handleConnectionFailure(ioFailures++, this.rpcClient.maxRetries, ie);<a name="line.276"></a>
+<span class="sourceLineNo">277</span>      }<a name="line.277"></a>
+<span class="sourceLineNo">278</span>    }<a name="line.278"></a>
+<span class="sourceLineNo">279</span>  }<a name="line.279"></a>
+<span class="sourceLineNo">280</span><a name="line.280"></a>
+<span class="sourceLineNo">281</span>  /**<a name="line.281"></a>
+<span class="sourceLineNo">282</span>   * Handle connection failures If the current number of retries is equal to the max number of<a name="line.282"></a>
+<span class="sourceLineNo">283</span>   * retries, stop retrying and throw the exception; Otherwise backoff N seconds and try connecting<a name="line.283"></a>
+<span class="sourceLineNo">284</span>   * again. This Method is only called from inside setupIOstreams(), which is synchronized. Hence<a name="line.284"></a>
+<span class="sourceLineNo">285</span>   * the sleep is synchronized; the locks will be retained.<a name="line.285"></a>
+<span class="sourceLineNo">286</span>   * @param curRetries current number of retries<a name="line.286"></a>
+<span class="sourceLineNo">287</span>   * @param maxRetries max number of retries allowed<a name="line.287"></a>
+<span class="sourceLineNo">288</span>   * @param ioe failure reason<a name="line.288"></a>
+<span class="sourceLineNo">289</span>   * @throws IOException if max number of retries is reached<a name="line.289"></a>
+<span class="sourceLineNo">290</span>   */<a name="line.290"></a>
+<span class="sourceLineNo">291</span>  private void handleConnectionFailure(int curRetries, int maxRetries, IOException ioe)<a name="line.291"></a>
+<span class="sourceLineNo">292</span>      throws IOException {<a name="line.292"></a>
+<span class="sourceLineNo">293</span>    closeSocket();<a name="line.293"></a>
+<span class="sourceLineNo">294</span><a name="line.294"></a>
+<span class="sourceLineNo">295</span>    // throw the exception if the maximum number of retries is reached<a name="line.295"></a>
+<span class="sourceLineNo">296</span>    if (curRetries &gt;= maxRetries || ExceptionUtil.isInterrupt(ioe)) {<a name="line.296"></a>
+<span class="sourceLineNo">297</span>      throw ioe;<a name="line.297"></a>
+<span class="sourceLineNo">298</span>    }<a name="line.298"></a>
+<span class="sourceLineNo">299</span><a name="line.299"></a>
+<span class="sourceLineNo">300</span>    // otherwise back off and retry<a name="line.300"></a>
+<span class="sourceLineNo">301</span>    try {<a name="line.301"></a>
+<span class="sourceLineNo">302</span>      Thread.sleep(this.rpcClient.failureSleep);<a name="line.302"></a>
+<span class="sourceLineNo">303</span>    } catch (InterruptedException ie) {<a name="line.303"></a>
+<span class="sourceLineNo">304</span>      ExceptionUtil.rethrowIfInterrupt(ie);<a name="line.304"></a>
+<span class="sourceLineNo">305</span>    }<a name="line.305"></a>
+<span class="sourceLineNo">306</span><a name="line.306"></a>
+<span class="sourceLineNo">307</span>    if (LOG.isInfoEnabled()) {<a name="line.307"></a>
+<span class="sourceLineNo">308</span>      LOG.info("Retrying connect to server: " + remoteId.getAddress() +<a name="line.308"></a>
+<span class="sourceLineNo">309</span>        " after sleeping " + this.rpcClient.failureSleep + "ms. Already tried " + curRetries +<a name="line.309"></a>
+<span class="sourceLineNo">310</span>        " time(s).");<a name="line.310"></a>
+<span class="sourceLineNo">311</span>    }<a name="line.311"></a>
+<span class="sourceLineNo">312</span>  }<a name="line.312"></a>
+<span class="sourceLineNo">313</span><a name="line.313"></a>
+<span class="sourceLineNo">314</span>  /*<a name="line.314"></a>
+<span class="sourceLineNo">315</span>   * wait till someone signals us to start reading RPC response or it is idle too long, it is marked<a name="line.315"></a>
+<span class="sourceLineNo">316</span>   * as to be closed, or the client is marked as not running.<a name="line.316"></a>
+<span class="sourceLineNo">317</span>   * @return true if it is time to read a response; false otherwise.<a name="line.317"></a>
+<span class="sourceLineNo">318</span>   */<a name="line.318"></a>
+<span class="sourceLineNo">319</span>  private synchronized boolean waitForWork() {<a name="line.319"></a>
+<span class="sourceLineNo">320</span>    // beware of the concurrent access to the calls list: we can add calls, but as well<a name="line.320"></a>
+<span class="sourceLineNo">321</span>    // remove them.<a name="line.321"></a>
+<span class="sourceLineNo">322</span>    long waitUntil = EnvironmentEdgeManager.currentTime() + this.rpcClient.minIdleTimeBeforeClose;<a name="line.322"></a>
+<span class="sourceLineNo">323</span>    for (;;) {<a name="line.323"></a>
+<span class="sourceLineNo">324</span>      if (thread == null) {<a name="line.324"></a>
+<span class="sourceLineNo">325</span>        return false;<a name="line.325"></a>
+<span class="sourceLineNo">326</span>      }<a name="line.326"></a>
+<span class="sourceLineNo">327</span>      if (!calls.isEmpty()) {<a name="line.327"></a>
+<span class="sourceLineNo">328</span>        return true;<a name="line.328"></a>
+<span class="sourceLineNo">329</span>      }<a name="line.329"></a>
+<span class="sourceLineNo">330</span>      if (EnvironmentEdgeManager.currentTime() &gt;= waitUntil) {<a name="line.330"></a>
+<span class="sourceLineNo">331</span>        closeConn(<a name="line.331"></a>
+<span class="sourceLineNo">332</span>          new IOException("idle connection closed with " + calls.size() + " pending request(s)"));<a name="line.332"></a>
+<span class="sourceLineNo">333</span>        return false;<a name="line.333"></a>
+<span class="sourceLineNo">334</span>      }<a name="line.334"></a>
+<span class="sourceLineNo">335</span>      try {<a name="line.335"></a>
+<span class="sourceLineNo">336</span>        wait(Math.min(this.rpcClient.minIdleTimeBeforeClose, 1000));<a name="line.336"></a>
+<span class="sourceLineNo">337</span>      } catch (InterruptedException e) {<a name="line.337"></a>
+<span class="sourceLineNo">338</span>      }<a name="line.338"></a>
+<span class="sourceLineNo">339</span>    }<a name="line.339"></a>
+<span class="sourceLineNo">340</span>  }<a name="line.340"></a>
+<span class="sourceLineNo">341</span><a name="line.341"></a>
+<span class="sourceLineNo">342</span>  @Override<a name="line.342"></a>
+<span class="sourceLineNo">343</span>  public void run() {<a name="line.343"></a>
+<span class="sourceLineNo">344</span>    if (LOG.isTraceEnabled()) {<a name="line.344"></a>
+<span class="sourceLineNo">345</span>      LOG.trace(threadName + ": starting, connections " + this.rpcClient.connections.size());<a name="line.345"></a>
+<span class="sourceLineNo">346</span>    }<a name="line.346"></a>
+<span class="sourceLineNo">347</span>    while (waitForWork()) {<a name="line.347"></a>
+<span class="sourceLineNo">348</span>      readResponse();<a name="line.348"></a>
+<span class="sourceLineNo">349</span>    }<a name="line.349"></a>
+<span class="sourceLineNo">350</span>    if (LOG.isTraceEnabled()) {<a name="line.350"></a>
+<span class="sourceLineNo">351</span>      LOG.trace(threadName + ": stopped, connections " + this.rpcClient.connections.size());<a name="line.351"></a>
+<span class="sourceLineNo">352</span>    }<a name="line.352"></a>
+<span class="sourceLineNo">353</span>  }<a name="line.353"></a>
+<span class="sourceLineNo">354</span><a name="line.354"></a>
+<span class="sourceLineNo">355</span>  private void disposeSasl() {<a name="line.355"></a>
+<span class="sourceLineNo">356</span>    if (saslRpcClient != null) {<a name="line.356"></a>
+<span class="sourceLineNo">357</span>      saslRpcClient.dispose();<a name="line.357"></a>
+<span class="sourceLineNo">358</span>      saslRpcClient = null;<a name="line.358"></a>
+<span class="sourceLineNo">359</span>    }<a name="line.359"></a>
+<span class="sourceLineNo">360</span>  }<a name="line.360"></a>
+<span class="sourceLineNo">361</span><a name="line.361"></a>
+<span class="sourceLineNo">362</span>  private boolean setupSaslConnection(final InputStream in2, final OutputStream out2)<a name="line.362"></a>
+<span class="sourceLineNo">363</span>      throws IOException {<a name="line.363"></a>
+<span class="sourceLineNo">364</span>    saslRpcClient = new HBaseSaslRpcClient(authMethod, token, serverPrincipal,<a name="line.364"></a>
+<span class="sourceLineNo">365</span>        this.rpcClient.fallbackAllowed, this.rpcClient.conf.get("hbase.rpc.protection",<a name="line.365"></a>
+<span class="sourceLineNo">366</span>          QualityOfProtection.AUTHENTICATION.name().toLowerCase(Locale.ROOT)),<a name="line.366"></a>
+<span class="sourceLineNo">367</span>        this.rpcClient.conf.getBoolean(CRYPTO_AES_ENABLED_KEY, CRYPTO_AES_ENABLED_DEFAULT));<a name="line.367"></a>
+<span class="sourceLineNo">368</span>    return saslRpcClient.saslConnect(in2, out2);<a name="line.368"></a>
+<span class="sourceLineNo">369</span>  }<a name="line.369"></a>
+<span class="sourceLineNo">370</span><a name="line.370"></a>
+<span class="sourceLineNo">371</span>  /**<a name="line.371"></a>
+<span class="sourceLineNo">372</span>   * If multiple clients with the same principal try to connect to the same server at the same time,<a name="line.372"></a>
+<span class="sourceLineNo">373</span>   * the server assumes a replay attack is in progress. This is a feature of kerberos. In order to<a name="line.373"></a>
+<span class="sourceLineNo">374</span>   * work around this, what is done is that the client backs off randomly and tries to initiate the<a name="line.374"></a>
+<span class="sourceLineNo">375</span>   * connection again. The other problem is to do with ticket expiry. To handle that, a relogin is<a name="line.375"></a>
+<span class="sourceLineNo">376</span>   * attempted.<a name="line.376"></a>
+<span class="sourceLineNo">377</span>   * &lt;p&gt;<a name="line.377"></a>
+<span class="sourceLineNo">378</span>   * The retry logic is governed by the {@link #shouldAuthenticateOverKrb} method. In case when the<a name="line.378"></a>
+<span class="sourceLineNo">379</span>   * user doesn't have valid credentials, we don't need to retry (from cache or ticket). In such<a name="line.379"></a>
+<span class="sourceLineNo">380</span>   * cases, it is prudent to throw a runtime exception when we receive a SaslException from the<a name="line.380"></a>
+<span class="sourceLineNo">381</span>   * underlying authentication implementation, so there is no retry from other high level (for eg,<a name="line.381"></a>
+<span class="sourceLineNo">382</span>   * HCM or HBaseAdmin).<a name="line.382"></a>
+<span class="sourceLineNo">383</span>   * &lt;/p&gt;<a name="line.383"></a>
+<span class="sourceLineNo">384</span>   */<a name="line.384"></a>
+<span class="sourceLineNo">385</span>  private void handleSaslConnectionFailure(final int currRetries, final int maxRetries,<a name="line.385"></a>
+<span class="sourceLineNo">386</span>      final Exception ex, final UserGroupInformation user)<a name="line.386"></a>
+<span class="sourceLineNo">387</span>      throws IOException, InterruptedException {<a name="line.387"></a>
+<span class="sourceLineNo">388</span>    closeSocket();<a name="line.388"></a>
+<span class="sourceLineNo">389</span>    user.doAs(new PrivilegedExceptionAction&lt;Object&gt;() {<a name="line.389"></a>
+<span class="sourceLineNo">390</span>      @Override<a name="line.390"></a>
+<span class="sourceLineNo">391</span>      public Object run() throws IOException, InterruptedException {<a name="line.391"></a>
+<span class="sourceLineNo">392</span>        if (shouldAuthenticateOverKrb()) {<a name="line.392"></a>
+<span class="sourceLineNo">393</span>          if (currRetries &lt; maxRetries) {<a name="line.393"></a>
+<span class="sourceLineNo">394</span>            if (LOG.isDebugEnabled()) {<a name="line.394"></a>
+<span class="sourceLineNo">395</span>              LOG.debug("Exception encountered while connecting to " +<a name="line.395"></a>
+<span class="sourceLineNo">396</span>                "the server : " + StringUtils.stringifyException(ex));<a name="line.396"></a>
+<span class="sourceLineNo">397</span>            }<a name="line.397"></a>
+<span class="sourceLineNo">398</span>            // try re-login<a name="line.398"></a>
+<span class="sourceLineNo">399</span>            relogin();<a name="line.399"></a>
+<span class="sourceLineNo">400</span>            disposeSasl();<a name="line.400"></a>
+<span class="sourceLineNo">401</span>            // have granularity of milliseconds<a name="line.401"></a>
+<span class="sourceLineNo">402</span>            // we are sleeping with the Connection lock held but since this<a name="line.402"></a>
+<span class="sourceLineNo">403</span>            // connection instance is being used for connecting to the server<a name="line.403"></a>
+<span class="sourceLineNo">404</span>            // in question, it is okay<a name="line.404"></a>
+<span class="sourceLineNo">405</span>            Thread.sleep(ThreadLocalRandom.current().nextInt(reloginMaxBackoff) + 1);<a name="line.405"></a>
+<span class="sourceLineNo">406</span>            return null;<a name="line.406"></a>
+<span class="sourceLineNo">407</span>          } else {<a name="line.407"></a>
+<span class="sourceLineNo">408</span>            String msg = "Couldn't setup connection for "<a name="line.408"></a>
+<span class="sourceLineNo">409</span>                + UserGroupInformation.getLoginUser().getUserName() + " to " + serverPrincipal;<a name="line.409"></a>
+<span class="sourceLineNo">410</span>            LOG.warn(msg, ex);<a name="line.410"></a>
+<span class="sourceLineNo">411</span>            throw (IOException) new IOException(msg).initCause(ex);<a name="line.411"></a>
+<span class="sourceLineNo">412</span>          }<a name="line.412"></a>
+<span class="sourceLineNo">413</span>        } else {<a name="line.413"></a>
+<span class="sourceLineNo">414</span>          LOG.warn("Exception encountered while connecting to " + "the server : " + ex);<a name="line.414"></a>
+<span class="sourceLineNo">415</span>        }<a name="line.415"></a>
+<span class="sourceLineNo">416</span>        if (ex instanceof RemoteException) {<a name="line.416"></a>
+<span class="sourceLineNo">417</span>          throw (RemoteException) ex;<a name="line.417"></a>
+<span class="sourceLineNo">418</span>        }<a name="line.418"></a>
+<span class="sourceLineNo">419</span>        if (ex instanceof SaslException) {<a name="line.419"></a>
+<span class="sourceLineNo">420</span>          String msg = "SASL authentication failed."<a name="line.420"></a>
+<span class="sourceLineNo">421</span>              + " The most likely cause is missing or invalid credentials." + " Consider 'kinit'.";<a name="line.421"></a>
+<span class="sourceLineNo">422</span>          LOG.fatal(msg, ex);<a name="line.422"></a>
+<span class="sourceLineNo">423</span>          throw new RuntimeException(msg, ex);<a name="line.423"></a>
+<span class="sourceLineNo">424</span>        }<a name="line.424"></a>
+<span class="sourceLineNo">425</span>        throw new IOException(ex);<a name="line.425"></a>
+<span class="sourceLineNo">426</span>      }<a name="line.426"></a>
+<span class="sourceLineNo">427</span>    });<a name="line.427"></a>
+<span class="sourceLineNo">428</span>  }<a name="line.428"></a>
+<span class="sourceLineNo">429</span><a name="line.429"></a>
+<span class="sourceLineNo">430</span>  private void setupIOstreams() throws IOException {<a name="line.430"></a>
+<span class="sourceLineNo">431</span>    if (socket != null) {<a name="line.431"></a>
+<span class="sourceLineNo">432</span>      // The connection is already available. Perfect.<a name="line.432"></a>
+<span class="sourceLineNo">433</span>      return;<a name="line.433"></a>
+<span class="sourceLineNo">434</span>    }<a name="line.434"></a>
+<span class="sourceLineNo">435</span><a name="line.435"></a>
+<span class="sourceLineNo">436</span>    if (this.rpcClient.failedServers.isFailedServer(remoteId.getAddress())) {<a name="line.436"></a>
+<span class="sourceLineNo">437</span>      if (LOG.isDebugEnabled()) {<a name="line.437"></a>
+<span class="sourceLineNo">438</span>        LOG.debug("Not trying to connect to " + remoteId.address<a name="line.438"></a>
+<span class="sourceLineNo">439</span>            + " this server is in the failed servers list");<a name="line.439"></a>
+<span class="sourceLineNo">440</span>      }<a name="line.440"></a>
+<span class="sourceLineNo">441</span>      throw new FailedServerException(<a name="line.441"></a>
+<span class="sourceLineNo">442</span>          "This server is in the failed servers list: " + remoteId.address);<a name="line.442"></a>
+<span class="sourceLineNo">443</span>    }<a name="line.443"></a>
+<span class="sourceLineNo">444</span><a name="line.444"></a>
+<span class="sourceLineNo">445</span>    try {<a name="line.445"></a>
+<span class="sourceLineNo">446</span>      if (LOG.isDebugEnabled()) {<a name="line.446"></a>
+<span class="sourceLineNo">447</span>        LOG.debug("Connecting to " + remoteId.address);<a name="line.447"></a>
+<span class="sourceLineNo">448</span>      }<a name="line.448"></a>
+<span class="sourceLineNo">449</span><a name="line.449"></a>
+<span class="sourceLineNo">450</span>      short numRetries = 0;<a name="line.450"></a>
+<span class="sourceLineNo">451</span>      final short MAX_RETRIES = 5;<a name="line.451"></a>
+<span class="sourceLineNo">452</span>      while (true) {<a name="line.452"></a>
+<span class="sourceLineNo">453</span>        setupConnection();<a name="line.453"></a>
+<span class="sourceLineNo">454</span>        InputStream inStream = NetUtils.getInputStream(socket);<a name="line.454"></a>
+<span class="sourceLineNo">455</span>        // This creates a socket with a write timeout. This timeout cannot be changed.<a name="line.455"></a>
+<span class="sourceLineNo">456</span>        OutputStream outStream = NetUtils.getOutputStream(socket, this.rpcClient.writeTO);<a name="line.456"></a>
+<span class="sourceLineNo">457</span>        // Write out the preamble -- MAGIC, version, and auth to use.<a name="line.457"></a>
+<span class="sourceLineNo">458</span>        writeConnectionHeaderPreamble(outStream);<a name="line.458"></a>
+<span class="sourceLineNo">459</span>        if (useSasl) {<a name="line.459"></a>
+<span class="sourceLineNo">460</span>          final InputStream in2 = inStream;<a name="line.460"></a>
+<span class="sourceLineNo">461</span>          final OutputStream out2 = outStream;<a name="line.461"></a>
+<span class="sourceLineNo">462</span>          UserGroupInformation ticket = getUGI();<a name="line.462"></a>
+<span class="sourceLineNo">463</span>          boolean continueSasl;<a name="line.463"></a>
+<span class="sourceLineNo">464</span>          if (ticket == null) {<a name="line.464"></a>
+<span class="sourceLineNo">465</span>            throw new FatalConnectionException("ticket/user is null");<a name="line.465"></a>
 <span class="sourceLineNo">466</span>          }<a name="line.466"></a>
-<span class="sourceLineNo">467</span>          if (continueSasl) {<a name="line.467"></a>
-<span class="sourceLineNo">468</span>            // Sasl connect is successful. Let's set up Sasl i/o streams.<a name="line.468"></a>
-<span class="sourceLineNo">469</span>            inStream = saslRpcClient.getInputStream();<a name="line.469"></a>
-<span class="sourceLineNo">470</span>            outStream = saslRpcClient.getOutputStream();<a name="line.470"></a>
-<span class="sourceLineNo">471</span>          } else {<a name="line.471"></a>
-<span class="sourceLineNo">472</span>            // fall back to simple auth because server told us so.<a name="line.472"></a>
-<span class="sourceLineNo">473</span>            // do not change authMethod and useSasl here, we should start from secure when<a name="line.473"></a>
-<span class="sourceLineNo">474</span>            // reconnecting because regionserver may change its sasl config after restart.<a name="line.474"></a>
-<span class="sourceLineNo">475</span>          }<a name="line.475"></a>
-<span class="sourceLineNo">476</span>        }<a name="line.476"></a>
-<span class="sourceLineNo">477</span>        this.in = new DataInputStream(new BufferedInputStream(inStream));<a name="line.477"></a>
-<span class="sourceLineNo">478</span>        this.out = new DataOutputStream(new BufferedOutputStream(outStream));<a name="line.478"></a>
-<span class="sourceLineNo">479</span>        // Now write out the connection header<a name="line.479"></a>
-<span class="sourceLineNo">480</span>        writeConnectionHeader();<a name="line.480"></a>
-<span class="sourceLineNo">481</span>        // process the response from server for connection header if necessary<a name="line.481"></a>
-<span class="sourceLineNo">482</span>        processResponseForConnectionHeader();<a name="line.482"></a>
-<span class="sourceLineNo">483</span><a name="line.483"></a>
-<span class="sourceLineNo">484</span>        break;<a name="line.484"></a>
-<span class="sourceLineNo">485</span>      }<a name="line.485"></a>
-<span class="sourceLineNo">486</span>    } catch (Throwable t) {<a name="line.486"></a>
-<span class="sourceLineNo">487</span>      closeSocket();<a name="line.487"></a>
-<span class="sourceLineNo">488</span>      IOException e = ExceptionUtil.asInterrupt(t);<a name="line.488"></a>
-<span class="sourceLineNo">489</span>      if (e == null) {<a name="line.489"></a>
-<span class="sourceLineNo">490</span>        this.rpcClient.failedServers.addToFailedServers(remoteId.address, t);<a name="line.490"></a>
-<span class="sourceLineNo">491</span>        if (t instanceof LinkageError) {<a name="line.491"></a>
-<span class="sourceLineNo">492</span>          // probably the hbase hadoop version does not match the running hadoop version<a name="line.492"></a>
-<span class="sourceLineNo">493</span>          e = new DoNotRetryIOException(t);<a name="line.493"></a>
-<span class="sourceLineNo">494</span>        } else if (t instanceof IOException) {<a name="line.494"></a>
-<span class="sourceLineNo">495</span>          e = (IOException) t;<a name="line.495"></a>
-<span class="sourceLineNo">496</span>        } else {<a name="line.496"></a>
-<span class="sourceLineNo">497</span>          e = new IOException("Could not set up IO Streams to " + remoteId.address, t);<a name="line.497"></a>
-<span class="sourceLineNo">498</span>        }<a name="line.498"></a>
-<span class="sourceLineNo">499</span>      }<a name="line.499"></a>
-<span class="sourceLineNo">500</span>      throw e;<a name="line.500"></a>
-<span class="sourceLineNo">501</span>    }<a name="line.501"></a>
-<span class="sourceLineNo">502</span><a name="line.502"></a>
-<span class="sourceLineNo">503</span>    // start the receiver thread after the socket connection has been set up<a name="line.503"></a>
-<span class="sourceLineNo">504</span>    thread = new Thread(this, threadName);<a name="line.504"></a>
-<span class="sourceLineNo">505</span>    thread.setDaemon(true);<a name="line.505"></a>
-<span class="sourceLineNo">506</span>    thread.start();<a name="line.506"></a>
-<span class="sourceLineNo">507</span>  }<a name="line.507"></a>
-<span class="sourceLineNo">508</span><a name="line.508"></a>
-<span class="sourceLineNo">509</span>  /**<a name="line.509"></a>
-<span class="sourceLineNo">510</span>   * Write the RPC header: {@code &lt;MAGIC WORD -- 'HBas'&gt; &lt;ONEBYTE_VERSION&gt; &lt;ONEBYTE_AUTH_TYPE&gt;}<a name="line.510"></a>
-<span class="sourceLineNo">511</span>   */<a name="line.511"></a>
-<span class="sourceLineNo">512</span>  private void writeConnectionHeaderPreamble(OutputStream out) throws IOException {<a name="line.512"></a>
-<span class="sourceLineNo">513</span>    out.write(connectionHeaderPreamble);<a name="line.513"></a>
-<span class="sourceLineNo">514</span>    out.flush();<a name="line.514"></a>
-<span class="sourceLineNo">515</span>  }<a name="line.515"></a>
-<span class="sourceLineNo">516</span><a name="line.516"></a>
-<span class="sourceLineNo">517</span>  /**<a name="line.517"></a>
-<span class="sourceLineNo">518</span>   * Write the connection header.<a name="line.518"></a>
-<span class="sourceLineNo">519</span>   */<a name="line.519"></a>
-<span class="sourceLineNo">520</span>  private void writeConnectionHeader() throws IOException {<a name="line.520"></a>
-<span class="sourceLineNo">521</span>    boolean isCryptoAesEnable = false;<a name="line.521"></a>
-<span class="sourceLineNo">522</span>    // check if Crypto AES is enabled<a name="line.522"></a>
-<span class="sourceLineNo">523</span>    if (saslRpcClient != null) {<a name="line.523"></a>
-<span class="sourceLineNo">524</span>      boolean saslEncryptionEnabled = SaslUtil.QualityOfProtection.PRIVACY.<a name="line.524"></a>
-<span class="sourceLineNo">525</span>          getSaslQop().equalsIgnoreCase(saslRpcClient.getSaslQOP());<a name="line.525"></a>
-<span class="sourceLineNo">526</span>      isCryptoAesEnable = saslEncryptionEnabled &amp;&amp; conf.getBoolean(<a name="line.526"></a>
-<span class="sourceLineNo">527</span>          CRYPTO_AES_ENABLED_KEY, CRYPTO_AES_ENABLED_DEFAULT);<a name="line.527"></a>
-<span class="sourceLineNo">528</span>    }<a name="line.528"></a>
-<span class="sourceLineNo">529</span><a name="line.529"></a>
-<span class="sourceLineNo">530</span>    // if Crypto AES is enabled, set transformation and negotiate with server<a name="line.530"></a>
-<span class="sourceLineNo">531</span>    if (isCryptoAesEnable) {<a name="line.531"></a>
-<span class="sourceLineNo">532</span>      waitingConnectionHeaderResponse = true;<a name="line.532"></a>
-<span class="sourceLineNo">533</span>    }<a name="line.533"></a>
-<span class="sourceLineNo">534</span>    this.out.write(connectionHeaderWithLength);<a name="line.534"></a>
-<span class="sourceLineNo">535</span>    this.out.flush();<a name="line.535"></a>
-<span class="sourceLineNo">536</span>  }<a name="line.536"></a>
-<span class="sourceLineNo">537</span><a name="line.537"></a>
-<span class="sourceLineNo">538</span>  private void processResponseForConnectionHeader() throws IOException {<a name="line.538"></a>
-<span class="sourceLineNo">539</span>    // if no response excepted, return<a name="line.539"></a>
-<span class="sourceLineNo">540</span>    if (!waitingConnectionHeaderResponse) return;<a name="line.540"></a>
-<span class="sourceLineNo">541</span>    try {<a name="line.541"></a>
-<span class="sourceLineNo">542</span>      // read the ConnectionHeaderResponse from server<a name="line.542"></a>
-<span class="sourceLineNo">543</span>      int len = this.in.readInt();<a name="line.543"></a>
-<span class="sourceLineNo">544</span>      byte[] buff = new byte[len];<a name="line.544"></a>
-<span class="sourceLineNo">545</span>      int readSize = this.in.read(buff);<a name="line.545"></a>
-<span class="sourceLineNo">546</span>      if (LOG.isDebugEnabled()) {<a name="line.546"></a>
-<span class="sourceLineNo">547</span>        LOG.debug("Length of response for connection header:" + readSize);<a name="line.547"></a>
-<span class="sourceLineNo">548</span>      }<a name="line.548"></a>
+<span class="sourceLineNo">467</span>          try {<a name="line.467"></a>
+<span class="sourceLineNo">468</span>            continueSasl = ticket.doAs(new PrivilegedExceptionAction&lt;Boolean&gt;() {<a name="line.468"></a>
+<span class="sourceLineNo">469</span>              @Override<a name="line.469"></a>
+<span class="sourceLineNo">470</span>              public Boolean run() throws IOException {<a name="line.470"></a>
+<span class="sourceLineNo">471</span>                return setupSaslConnection(in2, out2);<a name="line.471"></a>
+<span class="sourceLineNo">472</span>              }<a name="line.472"></a>
+<span class="sourceLineNo">473</span>            });<a name="line.473"></a>
+<span class="sourceLineNo">474</span>          } catch (Exception ex) {<a name="line.474"></a>
+<span class="sourceLineNo">475</span>            ExceptionUtil.rethrowIfInterrupt(ex);<a name="line.475"></a>
+<span class="sourceLineNo">476</span>            handleSaslConnectionFailure(numRetries++, MAX_RETRIES, ex, ticket);<a name="line.476"></a>
+<span class="sourceLineNo">477</span>            continue;<a name="line.477"></a>
+<span class="sourceLineNo">478</span>          }<a name="line.478"></a>
+<span class="sourceLineNo">479</span>          if (continueSasl) {<a name="line.479"></a>
+<span class="sourceLineNo">480</span>            // Sasl connect is successful. Let's set up Sasl i/o streams.<a name="line.480"></a>
+<span class="sourceLineNo">481</span>            inStream = saslRpcClient.getInputStream();<a name="line.481"></a>
+<span class="sourceLineNo">482</span>            outStream = saslRpcClient.getOutputStream();<a name="line.482"></a>
+<span class="sourceLineNo">483</span>          } else {<a name="line.483"></a>
+<span class="sourceLineNo">484</span>            // fall back to simple auth because server told us so.<a name="line.484"></a>
+<span class="sourceLineNo">485</span>            // do not change authMethod and useSasl here, we should start from secure when<a name="line.485"></a>
+<span class="sourceLineNo">486</span>            // reconnecting because regionserver may change its sasl config after restart.<a name="line.486"></a>
+<span class="sourceLineNo">487</span>          }<a name="line.487"></a>
+<span class="sourceLineNo">488</span>        }<a name="line.488"></a>
+<span class="sourceLineNo">489</span>        this.in = new DataInputStream(new BufferedInputStream(inStream));<a name="line.489"></a>
+<span class="sourceLineNo">490</span>        this.out = new DataOutputStream(new BufferedOutputStream(outStream));<a name="line.490"></a>
+<span class="sourceLineNo">491</span>        // Now write out the connection header<a name="line.491"></a>
+<span class="sourceLineNo">492</span>        writeConnectionHeader();<a name="line.492"></a>
+<span class="sourceLineNo">493</span>        // process the response from server for connection header if necessary<a name="line.493"></a>
+<span class="sourceLineNo">494</span>        processResponseForConnectionHeader();<a name="line.494"></a>
+<span class="sourceLineNo">495</span><a name="line.495"></a>
+<span class="sourceLineNo">496</span>        break;<a name="line.496"></a>
+<span class="sourceLineNo">497</span>      }<a name="line.497"></a>
+<span class="sourceLineNo">498</span>    } catch (Throwable t) {<a name="line.498"></a>
+<span class="sourceLineNo">499</span>      closeSocket();<a name="line.499"></a>
+<span class="sourceLineNo">500</span>      IOException e = ExceptionUtil.asInterrupt(t);<a name="line.500"></a>
+<span class="sourceLineNo">501</span>      if (e == null) {<a name="line.501"></a>
+<span class="sourceLineNo">502</span>        this.rpcClient.failedServers.addToFailedServers(remoteId.address, t);<a name="line.502"></a>
+<span class="sourceLineNo">503</span>        if (t instanceof LinkageError) {<a name="line.503"></a>
+<span class="sourceLineNo">504</span>          // probably the hbase hadoop version does not match the running hadoop version<a name="line.504"></a>
+<span class="sourceLineNo">505</span>          e = new DoNotRetryIOException(t);<a name="line.505"></a>
+<span class="sourceLineNo">506</span>        } else if (t instanceof IOException) {<a name="line.506"></a>
+<span class="sourceLineNo">507</span>          e = (IOException) t;<a name="line.507"></a>
+<span class="sourceLineNo">508</span>        } else {<a name="line.508"></a>
+<span class="sourceLineNo">509</span>          e = new IOException("Could not set up IO Streams to " + remoteId.address, t);<a name="line.509"></a>
+<span class="sourceLineNo">510</span>        }<a name="line.510"></a>
+<span class="sourceLineNo">511</span>      }<a name="line.511"></a>
+<span class="sourceLineNo">512</span>      throw e;<a name="line.512"></a>
+<span class="sourceLineNo">513</span>    }<a name="line.513"></a>
+<span class="sourceLineNo">514</span><a name="line.514"></a>
+<span class="sourceLineNo">515</span>    // start the receiver thread after the socket connection has been set up<a name="line.515"></a>
+<span class="sourceLineNo">516</span>    thread = new Thread(this, threadName);<a name="line.516"></a>
+<span class="sourceLineNo">517</span>    thread.setDaemon(true);<a name="line.517"></a>
+<span class="sourceLineNo">518</span>    thread.start();<a name="line.518"></a>
+<span class="sourceLineNo">519</span>  }<a name="line.519"></a>
+<span class="sourceLineNo">520</span><a name="line.520"></a>
+<span class="sourceLineNo">521</span>  /**<a name="line.521"></a>
+<span class="sourceLineNo">522</span>   * Write the RPC header: {@code &lt;MAGIC WORD -- 'HBas'&gt; &lt;ONEBYTE_VERSION&gt; &lt;ONEBYTE_AUTH_TYPE&gt;}<a name="line.522"></a>
+<span class="sourceLineNo">523</span>   */<a name="line.523"></a>
+<span class="sourceLineNo">524</span>  private void writeConnectionHeaderPreamble(OutputStream out) throws IOException {<a name="line.524"></a>
+<span class="sourceLineNo">525</span>    out.write(connectionHeaderPreamble);<a name="line.525"></a>
+<span class="sourceLineNo">526</span>    out.flush();<a name="line.526"></a>
+<span class="sourceLineNo">527</span>  }<a name="line.527"></a>
+<span class="sourceLineNo">528</span><a name="line.528"></a>
+<span class="sourceLineNo">529</span>  /**<a name="line.529"></a>
+<span class="sourceLineNo">530</span>   * Write the connection header.<a name="line.530"></a>
+<span class="sourceLineNo">531</span>   */<a name="line.531"></a>
+<span class="sourceLineNo">532</span>  private void writeConnectionHeader() throws IOException {<a name="line.532"></a>
+<span class="sourceLineNo">533</span>    boolean isCryptoAesEnable = false;<a name="line.533"></a>
+<span class="sourceLineNo">534</span>    // check if Crypto AES is enabled<a name="line.534"></a>
+<span class="sourceLineNo">535</span>    if (saslRpcClient != null) {<a name="line.535"></a>
+<span class="sourceLineNo">536</span>      boolean saslEncryptionEnabled = SaslUtil.QualityOfProtection.PRIVACY.<a name="line.536"></a>
+<span class="sourceLineNo">537</span>          getSaslQop().equalsIgnoreCase(saslRpcClient.getSaslQOP());<a name="line.537"></a>
+<span class="sourceLineNo">538</span>      isCryptoAesEnable = saslEncryptionEnabled &amp;&amp; conf.getBoolean(<a name="line.538"></a>
+<span class="sourceLineNo">539</span>          CRYPTO_AES_ENABLED_KEY, CRYPTO_AES_ENABLED_DEFAULT);<a name="line.539"></a>
+<span class="sourceLineNo">540</span>    }<a name="line.540"></a>
+<span class="sourceLineNo">541</span><a name="line.541"></a>
+<span class="sourceLineNo">542</span>    // if Crypto AES is enabled, set transformation and negotiate with server<a name="line.542"></a>
+<span class="sourceLineNo">543</span>    if (isCryptoAesEnable) {<a name="line.543"></a>
+<span class="sourceLineNo">544</span>      waitingConnectionHeaderResponse = true;<a name="line.544"></a>
+<span class="sourceLineNo">545</span>    }<a name="line.545"></a>
+<span class="sourceLineNo">546</span>    this.out.write(connectionHeaderWithLength);<a name="line.546"></a>
+<span class="sourceLineNo">547</span>    this.out.flush();<a name="line.547"></a>
+<span class="sourceLineNo">548</span>  }<a name="line.548"></a>
 <span class="sourceLineNo">549</span><a name="line.549"></a>
-<span class="sourceLineNo">550</span>      RPCProtos.ConnectionHeaderResponse connectionHeaderResponse =<a name="line.550"></a>
-<span class="sourceLineNo">551</span>          RPCProtos.ConnectionHeaderResponse.parseFrom(buff);<a name="line.551"></a>
-<span class="sourceLineNo">552</span><a name="line.552"></a>
-<span class="sourceLineNo">553</span>      // Get the CryptoCipherMeta, update the HBaseSaslRpcClient for Crypto Cipher<a name="line.553"></a>
-<span class="sourceLineNo">554</span>      if (connectionHeaderResponse.hasCryptoCipherMeta()) {<a name="line.554"></a>
-<span class="sourceLineNo">555</span>        negotiateCryptoAes(connectionHeaderResponse.getCryptoCipherMeta());<a name="line.555"></a>
-<span class="sourceLineNo">556</span>      }<a name="line.556"></a>
-<span class="sourceLineNo">557</span>      waitingConnectionHeaderResponse = false;<a name="line.557"></a>
-<span class="sourceLineNo">558</span>    } catch (SocketTimeoutException ste) {<a name="line.558"></a>
-<span class="sourceLineNo">559</span>      LOG.fatal("Can't get the connection header response for rpc timeout, please check if" +<a name="line.559"></a>
-<span class="sourceLineNo">560</span>          " server has the correct configuration to support the additional function.", ste);<a name="line.560"></a>
-<span class="sourceLineNo">561</span>      // timeout when waiting the connection header response, ignore the additional function<a name="line.561"></a>
-<span class="sourceLineNo">562</span>      throw new IOException("Timeout while waiting connection header response", ste);<a name="line.562"></a>
-<span class="sourceLineNo">563</span>    }<a name="line.563"></a>
-<span class="sourceLineNo">564</span>  }<a name="line.564"></a>
-<span class="sourceLineNo">565</span><a name="line.565"></a>
-<span class="sourceLineNo">566</span>  private void negotiateCryptoAes(RPCProtos.CryptoCipherMeta cryptoCipherMeta)<a name="line.566"></a>
-<span class="sourceLineNo">567</span>      throws IOException {<a name="line.567"></a>
-<span class="sourceLineNo">568</span>    // initilize the Crypto AES with CryptoCipherMeta<a name="line.568"></a>
-<span class="sourceLineNo">569</span>    saslRpcClient.initCryptoCipher(cryptoCipherMeta, this.rpcClient.conf);<a name="line.569"></a>
-<span class="sourceLineNo">570</span>    // reset the inputStream/outputStream for Crypto AES encryption<a name="line.570"></a>
-<span class="sourceLineNo">571</span>    this.in = new DataInputStream(new BufferedInputStream(saslRpcClient.getInputStream()));<a name="line.571"></a>
-<span class="sourceLineNo">572</span>    this.out = new DataOutputStream(new BufferedOutputStream(saslRpcClient.getOutputStream()));<a name="line.572"></a>
-<span class="sourceLineNo">573</span>  }<a name="line.573"></a>
-<span class="sourceLineNo">574</span><a name="line.574"></a>
-<span class="sourceLineNo">575</span>  private void tracedWriteRequest(Call call) throws IOException {<a name="line.575"></a>
-<span class="sourceLineNo">576</span>    try (TraceScope ignored = TraceUtil.createTrace("RpcClientImpl.tracedWriteRequest",<a name="line.576"></a>
-<span class="sourceLineNo">577</span>          call.span)) {<a name="line.577"></a>
-<span class="sourceLineNo">578</span>      writeRequest(call);<a name="line.578"></a>
-<span class="sourceLineNo">579</span>    }<a name="line.579"></a>
-<span class="sourceLineNo">580</span>  }<a name="line.580"></a>
-<span class="sourceLineNo">581</span><a name="line.581"></a>
-<span class="sourceLineNo">582</span>  /**<a name="line.582"></a>
-<span class="sourceLineNo">583</span>   * Initiates a call by sending the parameter to the remote server. Note: this is not called from<a name="line.583"></a>
-<span class="sourceLineNo">584</span>   * the Connection thread, but by other threads.<a name="line.584"></a>
-<span class="sourceLineNo">585</span>   * @see #readResponse()<a name="line.585"></a>
-<span class="sourceLineNo">586</span>   */<a name="line.586"></a>
-<span class="sourceLineNo">587</span>  private void writeRequest(Call call) throws IOException {<a name="line.587"></a>
-<span class="sourceLineNo">588</span>    ByteBuffer cellBlock = this.rpcClient.cellBlockBuilder.buildCellBlock(this.codec,<a name="line.588"></a>
-<span class="sourceLineNo">589</span>      this.compressor, call.cells);<a name="line.589"></a>
-<span class="sourceLineNo">590</span>    CellBlockMeta cellBlockMeta;<a name="line.590"></a>
-<span class="sourceLineNo">591</span>    if (cellBlock != null) {<a name="line.591"></a>
-<span class="sourceLineNo">592</span>      cellBlockMeta = CellBlockMeta.newBuilder().setLength(cellBlock.limit()).build();<a name="line.592"></a>
-<span class="sourceLineNo">593</span>    } else {<a name="line.593"></a>
-<span class="sourceLineNo">594</span>      cellBlockMeta = null;<a name="line.594"></a>
-<span class="sourceLineNo">595</span>    }<a name="line.595"></a>
-<span class="sourceLineNo">596</span>    RequestHeader requestHeader = buildRequestHeader(call, cellBlockMeta);<a name="line.596"></a>
-<span class="sourceLineNo">597</span><a name="line.597"></a>
-<span class="sourceLineNo">598</span>    setupIOstreams();<a name="line.598"></a>
-<span class="sourceLineNo">599</span><a name="line.599"></a>
-<span class="sourceLineNo">600</span>    // Now we're going to write the call. We take the lock, then check that the connection<a name="line.600"></a>
-<span class="sourceLineNo">601</span>    // is still valid, and, if so we do the write to the socket. If the write fails, we don't<a name="line.601"></a>
-<span class="sourceLineNo">602</span>    // know where we stand, we have to close the connection.<a name="line.602"></a>
-<span class="sourceLineNo">603</span>    if (Thread.interrupted()) {<a name="line.603"></a>
-<span class="sourceLineNo">604</span>      throw new InterruptedIOException();<a name="line.604"></a>
-<span class="sourceLineNo">605</span>    }<a name="line.605"></a>
-<span class="sourceLineNo">606</span><a name="line.606"></a>
-<span class="sourceLineNo">607</span>    calls.put(call.id, call); // We put first as we don't want the connection to become idle.<a name="line.607"></a>
-<span class="sourceLineNo">608</span>    // from here, we do not throw any exception to upper layer as the call has been tracked in the<a name="line.608"></a>
-<span class="sourceLineNo">609</span>    // pending calls map.<a name="line.609"></a>
-<span class="sourceLineNo">610</span>    try {<a name="line.610"></a>
-<span class="sourceLineNo">611</span>      call.callStats.setRequestSizeBytes(write(this.out, requestHeader, call.param, cellBlock));<a name="line.611"></a>
-<span class="sourceLineNo">612</span>    } catch (Throwable t) {<a name="line.612"></a>
-<span class="sourceLineNo">613</span>      if(LOG.isTraceEnabled()) {<a name="line.613"></a>
-<span class="sourceLineNo">614</span>        LOG.trace("Error while writing call, call_id:" + call.id, t);<a name="line.614"></a>
-<span class="sourceLineNo">615</span>      }<a name="line.615"></a>
-<span class="sourceLineNo">616</span>      IOException e = IPCUtil.toIOE(t);<a name="line.616"></a>
-<span class="sourceLineNo">617</span>      closeConn(e);<a name="line.617"></a>
-<span class="sourceLineNo">618</span>      return;<a name="line.618"></a>
-<span class="sourceLineNo">619</span>    }<a name="line.619"></a>
-<span class="sourceLineNo">620</span>    notifyAll();<a name="line.620"></a>
-<span class="sourceLineNo">621</span>  }<a name="line.621"></a>
-<span class="sourceLineNo">622</span><a name="line.622"></a>
-<span class="sourceLineNo">623</span>  /*<a name="line.623"></a>
-<span class="sourceLineNo">624</span>   * Receive a response. Because only one receiver, so no synchronization on in.<a name="line.624"></a>
-<span class="sourceLineNo">625</span>   */<a name="line.625"></a>
-<span class="sourceLineNo">626</span>  private void readResponse() {<a name="line.626"></a>
-<span class="sourceLineNo">627</span>    Call call = null;<a name="line.627"></a>
-<span class="sourceLineNo">628</span>    boolean expectedCall = false;<a name="line.628"></a>
-<span class="sourceLineNo">629</span>    try {<a name="line.629"></a>
-<span class="sourceLineNo">630</span>      // See HBaseServer.Call.setResponse for where we write out the response.<a name="line.630"></a>
-<span class="sourceLineNo">631</span>      // Total size of the response. Unused. But have to read it in anyways.<a name="line.631"></a>
-<span class="sourceLineNo">632</span>      int totalSize = in.readInt();<a name="line.632"></a>
-<span class="sourceLineNo">633</span><a name="line.633"></a>
-<span class="sourceLineNo">634</span>      // Read the header<a name="line.634"></a>
-<span class="sourceLineNo">635</span>      ResponseHeader responseHeader = ResponseHeader.parseDelimitedFrom(in);<a name="line.635"></a>
-<span class="sourceLineNo">636</span>      int id = responseHeader.getCallId();<a name="line.636"></a>
-<span class="sourceLineNo">637</span>      call = calls.remove(id); // call.done have to be set before leaving this method<a name="line.637"></a>
-<span class="sourceLineNo">638</span>      expectedCall = (call != null &amp;&amp; !call.isDone());<a name="line.638"></a>
-<span class="sourceLineNo">639</span>      if (!expectedCall) {<a name="line.639"></a>
-<span class="sourceLineNo">640</span>        // So we got a response for which we have no corresponding 'call' here on the client-side.<a name="line.640"></a>
-<span class="sourceLineNo">641</span>        // We probably timed out waiting, cleaned up all references, and now the server decides<a name="line.641"></a>
-<span class="sourceLineNo">642</span>        // to return a response. There is nothing we can do w/ the response at this stage. Clean<a name="line.642"></a>
-<span class="sourceLineNo">643</span>        // out the wire of the response so its out of the way and we can get other responses on<a name="line.643"></a>
-<span class="sourceLineNo">644</span>        // this connection.<a name="line.644"></a>
-<span class="sourceLineNo">645</span>        int readSoFar = getTotalSizeWhenWrittenDelimited(responseHeader);<a name="line.645"></a>
-<span class="sourceLineNo">646</span>        int whatIsLeftToRead = totalSize - readSoFar;<a name="line.646"></a>
-<span class="sourceLineNo">647</span>        IOUtils.skipFully(in, whatIsLeftToRead);<a name="line.647"></a>
-<span class="sourceLineNo">648</span>        if (call != null) {<a name="line.648"></a>
-<span class="sourceLineNo">649</span>          call.callStats.setResponseSizeBytes(totalSize);<a name="line.649"></a>
-<span class="sourceLineNo">650</span>          call.callStats<a name="line.650"></a>
-<span class="sourceLineNo">651</span>              .setCallTimeMs(EnvironmentEdgeManager.currentTime() - call.callStats.getStartTime());<a name="line.651"></a>
-<span class="sourceLineNo">652</span>        }<a name="line.652"></a>
-<span class="sourceLineNo">653</span>        return;<a name="line.653"></a>
-<span class="sourceLineNo">654</span>      }<a name="line.654"></a>
-<span class="sourceLineNo">655</span>      if (responseHeader.hasException()) {<a name="line.655"></a>
-<span class="sourceLineNo">656</span>        ExceptionResponse exceptionResponse = responseHeader.getException();<a name="line.656"></a>
-<span class="sourceLineNo">657</span>        RemoteException re = createRemoteException(exceptionResponse);<a name="line.657"></a>
-<span class="sourceLineNo">658</span>        call.setException(re);<a name="line.658"></a>
-<span class="sourceLineNo">659</span>        call.callStats.setResponseSizeBytes(totalSize);<a name="line.659"></a>
-<span class="sourceLineNo">660</span>        call.callStats<a name="line.660"></a>
-<span class="sourceLineNo">661</span>            .setCallTimeMs(EnvironmentEdgeManager.currentTime() - call.callStats.getStartTime());<a name="line.661"></a>
-<span class="sourceLineNo">662</span>        if (isFatalConnectionException(exceptionResponse)) {<a name="line.662"></a>
-<span class="sourceLineNo">663</span>          synchronized (this) {<a name="line.663"></a>
-<span class="sourceLineNo">664</span>            closeConn(re);<a name="line.664"></a>
-<span class="sourceLineNo">665</span>          }<a name="line.665"></a>
-<span class="sourceLineNo">666</span>        }<a name="line.666"></a>
-<span class="sourceLineNo">667</span>      } else {<a name="line.667"></a>
-<span class="sourceLineNo">668</span>        Message value = null;<a name="line.668"></a>
-<span class="sourceLineNo">669</span>        if (call.responseDefaultType != null) {<a name="line.669"></a>
-<span class="sourceLineNo">670</span>          Builder builder = call.responseDefaultType.newBuilderForType();<a name="line.670"></a>
-<span class="sourceLineNo">671</span>          ProtobufUtil.mergeDelimitedFrom(builder, in);<a name="line.671"></a>
-<span class="sourceLineNo">672</span>          value = builder.build();<a name="line.672"></a>
-<span class="sourceLineNo">673</span>        }<a name="line.673"></a>
-<span class="sourceLineNo">674</span>        CellScanner cellBlockScanner = null;<a name="line.674"></a>
-<span class="sourceLineNo">675</span>        if (responseHeader.hasCellBlockMeta()) {<a name="line.675"></a>
-<span class="sourceLineNo">676</span>          int size = responseHeader.getCellBlockMeta().getLength();<a name="line.676"></a>
-<span class="sourceLineNo">677</span>          byte[] cellBlock = new byte[size];<a name="line.677"></a>
-<span class="sourceLineNo">678</span>          IOUtils.readFully(this.in, cellBlock, 0, cellBlock.length);<a name="line.678"></a>
-<span class="sourceLineNo">679</span>          cellBlockScanner = this.rpcClient.cellBlockBuilder.createCellScanner(this.codec,<a name="line.679"></a>
-<span class="sourceLineNo">680</span>            this.compressor, cellBlock);<a name="line.680"></a>
-<span class="sourceLineNo">681</span>        }<a name="line.681"></a>
-<span class="sourceLineNo">682</span>        call.setResponse(value, cellBlockScanner);<a name="line.682"></a>
-<span class="sourceLineNo">683</span>        call.callStats.setResponseSizeBytes(totalSize);<a name="line.683"></a>
-<span class="sourceLineNo">684</span>        call.callStats<a name="line.684"></a>
-<span class="sourceLineNo">685</span>            .setCallTimeMs(EnvironmentEdgeManager.currentTime() - call.callStats.getStartTime());<a name="line.685"></a>
-<span class="sourceLineNo">686</span>      }<a name="line.686"></a>
-<span class="sourceLineNo">687</span>    } catch (IOException e) {<a name="line.687"></a>
-<span class="sourceLineNo">688</span>      if (expectedCall) {<a name="line.688"></a>
-<span class="sourceLineNo">689</span>        call.setException(e);<a name="line.689"></a>
-<span class="sourceLineNo">690</span>      }<a name="line.690"></a>
-<span class="sourceLineNo">691</span>      if (e instanceof SocketTimeoutException) {<a name="line.691"></a>
-<span class="sourceLineNo">692</span>        // Clean up open calls but don't treat this as a fatal condition,<a name="line.692"></a>
-<span class="sourceLineNo">693</span>        // since we expect certain responses to not make it by the specified<a name="line.693"></a>
-<span class="sourceLineNo">694</span>        // {@link ConnectionId#rpcTimeout}.<a name="line.694"></a>
-<span class="sourceLineNo">695</span>        if (LOG.isTraceEnabled()) {<a name="line.695"></a>
-<span class="sourceLineNo">696</span>          LOG.trace("ignored", e);<a name="line.696"></a>
-<span class="sourceLineNo">697</span>        }<a name="line.697"></a>
-<span class="sourceLineNo">698</span>      } else {<a name="line.698"></a>
-<span class="sourceLineNo">699</span>        synchronized (this) {<a name="line.699"></a>
-<span class="sourceLineNo">700</span>          closeConn(e);<a name="line.700"></a>
-<span class="sourceLineNo">701</span>        }<a name="line.701"></a>
+<span class="sourceLineNo">550</span>  private void processResponseForConnectionHeader() throws IOException {<a name="line.550"></a>
+<span class="sourceLineNo">551</span>    // if no response excepted, return<a name="line.551"></a>
+<span class="sourceLineNo">552</span>    if (!waitingConnectionHeaderResponse) return;<a name="line.552"></a>
+<span class="sourceLineNo">553</span>    try {<a name="line.553"></a>
+<span class="sourceLineNo">554</span>      // read the ConnectionHeaderResponse from server<a name="line.554"></a>
+<span class="sourceLineNo">555</span>      int len = this.in.readInt();<a name="line.555"></a>
+<span class="sourceLineNo">556</span>      byte[] buff = new byte[len];<a name="line.556"></a>
+<span class="sourceLineNo">557</span>      int readSize = this.in.read(buff);<a name="line.557"></a>
+<span class="sourceLineNo">558</span>      if (LOG.isDebugEnabled()) {<a name="line.558"></a>
+<span class="sourceLineNo">559</span>        LOG.debug("Length of response for connection header:" + readSize);<a name="line.559"></a>
+<span class="sourceLineNo">560</span>      }<a name="line.560"></a>
+<span class="sourceLineNo">561</span><a name="line.561"></a>
+<span class="sourceLineNo">562</span>      RPCProtos.ConnectionHeaderResponse connectionHeaderResponse =<a name="line.562"></a>
+<span class="sourceLineNo">563</span>          RPCProtos.ConnectionHeaderResponse.parseFrom(buff);<a name="line.563"></a>
+<span class="sourceLineNo">564</span><a name="line.564"></a>
+<span class="sourceLineNo">565</span>      // Get the CryptoCipherMeta, update the HBaseSaslRpcClient for Crypto Cipher<a name="line.565"></a>
+<span class="sourceLineNo">566</span>      if (connectionHeaderResponse.hasCryptoCipherMeta()) {<a name="line.566"></a>
+<span class="sourceLineNo">567</span>        negotiateCryptoAes(connectionHeaderResponse.getCryptoCipherMeta());<a name="line.567"></a>
+<span class="sourceLineNo">568</span>      }<a name="line.568"></a>
+<span class="sourceLineNo">569</span>      waitingConnectionHeaderResponse = false;<a name="line.569"></a>
+<span class="sourceLineNo">570</span>    } catch (SocketTimeoutException ste) {<a name="line.570"></a>
+<span class="sourceLineNo">571</span>      LOG.fatal("Can't get the connection header response for rpc timeout, please check if" +<a name="line.571"></a>
+<span class="sourceLineNo">572</span>          " server has the correct configuration to support the additional function.", ste);<a name="line.572"></a>
+<span class="sourceLineNo">573</span>      // timeout when waiting the connection header response, ignore the additional function<a name="line.573"></a>
+<span class="sourceLineNo">574</span>      throw new IOException("Timeout while waiting connection header response", ste);<a name="line.574"></a>
+<span class="sourceLineNo">575</span>    }<a name="line.575"></a>
+<span class="sourceLineNo">576</span>  }<a name="line.576"></a>
+<span class="sourceLineNo">577</span><a name="line.577"></a>
+<span class="sourceLineNo">578</span>  private void negotiateCryptoAes(RPCProtos.CryptoCipherMeta cryptoCipherMeta)<a name="line.578"></a>
+<span class="sourceLineNo">579</span>      throws IOException {<a name="line.579"></a>
+<span class="sourceLineNo">580</span>    // initilize the Crypto AES with CryptoCipherMeta<a name="line.580"></a>
+<span class="sourceLineNo">581</span>    saslRpcClient.initCryptoCipher(cryptoCipherMeta, this.rpcClient.conf);<a name="line.581"></a>
+<span class="sourceLineNo">582</span>    // reset the inputStream/outputStream for Crypto AES encryption<a name="line.582"></a>
+<span class="sourceLineNo">583</span>    this.in = new DataInputStream(new BufferedInputStream(saslRpcClient.getInputStream()));<a name="line.583"></a>
+<span class="sourceLineNo">584</span>    this.out = new DataOutputStream(new BufferedOutputStream(saslRpcClient.getOutputStream()));<a name="line.584"></a>
+<span class="sourceLineNo">585</span>  }<a name="line.585"></a>
+<span class="sourceLineNo">586</span><a name="line.586"></a>
+<span class="sourceLineNo">587</span>  private void tracedWriteRequest(Call call) throws IOException {<a name="line.587"></a>
+<span class="sourceLineNo">588</span>    try (TraceScope ignored = TraceUtil.createTrace("RpcClientImpl.tracedWriteRequest",<a name="line.588"></a>
+<span class="sourceLineNo">589</span>          call.span)) {<a name="line.589"></a>
+<span class="sourceLineNo">590</span>      writeRequest(call);<a name="line.590"></a>
+<span class="sourceLineNo">591</span>    }<a name="line.591"></a>
+<span class="sourceLineNo">592</span>  }<a name="line.592"></a>
+<span class="sourceLineNo">593</span><a name="line.593"></a>
+<span class="sourceLineNo">594</span>  /**<a name="line.594"></a>
+<span class="sourceLineNo">595</span>   * Initiates a call by sending the parameter to the remote server. Note: this is not called from<a name="line.595"></a>
+<span class="sourceLineNo">596</span>   * the Connection thread, but by other threads.<a name="line.596"></a>
+<span class="sourceLineNo">597</span>   * @see #readResponse()<a name="line.597"></a>
+<span class="sourceLineNo">598</span>   */<a name="line.598"></a>
+<span class="sourceLineNo">599</span>  private void writeRequest(Call call) throws IOException {<a name="line.599"></a>
+<span class="sourceLineNo">600</span>    ByteBuffer cellBlock = this.rpcClient.cellBlockBuilder.buildCellBlock(this.codec,<a name="line.600"></a>
+<span class="sourceLineNo">601</span>      this.compressor, call.cells);<a name="line.601"></a>
+<span class="sourceLineNo">602</span>    CellBlockMeta cellBlockMeta;<a name="line.602"></a>
+<span class="sourceLineNo">603</span>    if (cellBlock != null) {<a name="line.603"></a>
+<span class="sourceLineNo">604</span>      cellBlockMeta = CellBlockMeta.newBuilder().setLength(cellBlock.limit()).build();<a name="line.604"></a>
+<span class="sourceLineNo">605</span>    } else {<a name="line.605"></a>
+<span class="sourceLineNo">606</span>      cellBlockMeta = null;<a name="line.606"></a>
+<span class="sourceLineNo">607</span>    }<a name="line.607"></a>
+<span class="sourceLineNo">608</span>    RequestHeader requestHeader = buildRequestHeader(call, cellBlockMeta);<a name="line.608"></a>
+<span class="sourceLineNo">609</span><a name="line.609"></a>
+<span class="sourceLineNo">610</span>    setupIOstreams();<a name="line.610"></a>
+<span class="sourceLineNo">611</span><a name="line.611"></a>
+<span class="sourceLineNo">612</span>    // Now we're going to write the call. We take the lock, then check that the connection<a name="line.612"></a>
+<span class="sourceLineNo">613</span>    // is still valid, and, if so we do the write to the socket. If the write fails, we don't<a name="line.613"></a>
+<span class="sourceLineNo">614</span>    // know where we stand, we have to close the connection.<a name="line.614"></a>
+<span class="sourceLineNo">615</span>    if (Thread.interrupted()) {<a name="line.615"></a>
+<span class="sourceLineNo">616</span>      throw new InterruptedIOException();<a name="line.616"></a>
+<span class="sourceLineNo">617</span>    }<a name="line.617"></a>
+<span class="sourceLineNo">618</span><a name="line.618"></a>
+<span class="sourceLineNo">619</span>    calls.put(call.id, call); // We put first as we don't want the connection to become idle.<a name="line.619"></a>
+<span class="sourceLineNo">620</span>    // from here, we do not throw any exception to upper layer as the call has been tracked in the<a name="line.620"></a>
+<span class="sour

<TRUNCATED>

[42/51] [partial] hbase-site git commit: Published site at .

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/c54c242b/devapidocs/org/apache/hadoop/hbase/regionserver/HRegion.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/regionserver/HRegion.html b/devapidocs/org/apache/hadoop/hbase/regionserver/HRegion.html
index 96ed6af..9ed9fbf 100644
--- a/devapidocs/org/apache/hadoop/hbase/regionserver/HRegion.html
+++ b/devapidocs/org/apache/hadoop/hbase/regionserver/HRegion.html
@@ -3084,7 +3084,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/io/HeapSize.html" tit
 <ul class="blockList">
 <li class="blockList">
 <h4>FOR_UNIT_TESTS_ONLY</h4>
-<pre>private static final&nbsp;byte[] <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.html#line.2819">FOR_UNIT_TESTS_ONLY</a></pre>
+<pre>private static final&nbsp;byte[] <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.html#line.2818">FOR_UNIT_TESTS_ONLY</a></pre>
 <div class="block">Row needed by below method.</div>
 </li>
 </ul>
@@ -3094,7 +3094,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/io/HeapSize.html" tit
 <ul class="blockList">
 <li class="blockList">
 <h4>FIXED_OVERHEAD</h4>
-<pre>public static final&nbsp;long <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.html#line.7775">FIXED_OVERHEAD</a></pre>
+<pre>public static final&nbsp;long <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.html#line.7774">FIXED_OVERHEAD</a></pre>
 </li>
 </ul>
 <a name="DEEP_OVERHEAD">
@@ -3103,7 +3103,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/io/HeapSize.html" tit
 <ul class="blockList">
 <li class="blockList">
 <h4>DEEP_OVERHEAD</h4>
-<pre>public static final&nbsp;long <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.html#line.7792">DEEP_OVERHEAD</a></pre>
+<pre>public static final&nbsp;long <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.html#line.7791">DEEP_OVERHEAD</a></pre>
 </li>
 </ul>
 <a name="MOCKED_LIST">
@@ -3112,7 +3112,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/io/HeapSize.html" tit
 <ul class="blockListLast">
 <li class="blockList">
 <h4>MOCKED_LIST</h4>
-<pre>private static final&nbsp;<a href="http://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&gt; <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.html#line.8186">MOCKED_LIST</a></pre>
+<pre>private static final&nbsp;<a href="http://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&gt; <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.html#line.8185">MOCKED_LIST</a></pre>
 <div class="block">A mocked list implementation - discards all updates.</div>
 </li>
 </ul>
@@ -4447,7 +4447,7 @@ public&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/r
 <ul class="blockList">
 <li class="blockList">
 <h4>logFatLineOnFlush</h4>
-<pre>private&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.html#line.2493">logFatLineOnFlush</a>(<a href="http://docs.oracle.com/javase/8/docs/api/java/util/Collection.html?is-external=true" title="class or interface in java.util">Collection</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/regionserver/HStore.html" title="class in org.apache.hadoop.hbase.regionserver">HStore</a>&gt;&nbsp;storesToFlush,
+<pre>private&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.html#line.2492">logFatLineOnFlush</a>(<a href="http://docs.oracle.com/javase/8/docs/api/java/util/Collection.html?is-external=true" title="class or interface in java.util">Collection</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/regionserver/HStore.html" title="class in org.apache.hadoop.hbase.regionserver">HStore</a>&gt;&nbsp;storesToFlush,
                                long&nbsp;sequenceId)</pre>
 <div class="block">Utility method broken out of internalPrepareFlushCache so that method is smaller.</div>
 </li>
@@ -4458,7 +4458,7 @@ public&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/r
 <ul class="blockList">
 <li class="blockList">
 <h4>doAbortFlushToWAL</h4>
-<pre>private&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.html#line.2513">doAbortFlushToWAL</a>(<a href="../../../../../org/apache/hadoop/hbase/wal/WAL.html" title="interface in org.apache.hadoop.hbase.wal">WAL</a>&nbsp;wal,
+<pre>private&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.html#line.2512">doAbortFlushToWAL</a>(<a href="../../../../../org/apache/hadoop/hbase/wal/WAL.html" title="interface in org.apache.hadoop.hbase.wal">WAL</a>&nbsp;wal,
                                long&nbsp;flushOpSeqId,
                                <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;byte[],<a href="http://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;org.apache.hadoop.fs.Path&gt;&gt;&nbsp;committedFiles)</pre>
 </li>
@@ -4469,7 +4469,7 @@ public&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/r
 <ul class="blockList">
 <li class="blockList">
 <h4>doSyncOfUnflushedWALChanges</h4>
-<pre>private static&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.html#line.2533">doSyncOfUnflushedWALChanges</a>(<a href="../../../../../org/apache/hadoop/hbase/wal/WAL.html" title="interface in org.apache.hadoop.hbase.wal">WAL</a>&nbsp;wal,
+<pre>private static&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.html#line.2532">doSyncOfUnflushedWALChanges</a>(<a href="../../../../../org/apache/hadoop/hbase/wal/WAL.html" title="interface in org.apache.hadoop.hbase.wal">WAL</a>&nbsp;wal,
                                                 <a href="../../../../../org/apache/hadoop/hbase/client/RegionInfo.html" title="interface in org.apache.hadoop.hbase.client">RegionInfo</a>&nbsp;hri)
                                          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">Sync unflushed WAL changes. See HBASE-8208 for details</div>
@@ -4485,7 +4485,7 @@ public&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/r
 <ul class="blockList">
 <li class="blockList">
 <h4>isAllFamilies</h4>
-<pre>private&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.html#line.2549">isAllFamilies</a>(<a href="http://docs.oracle.com/javase/8/docs/api/java/util/Collection.html?is-external=true" title="class or interface in java.util">Collection</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/regionserver/HStore.html" title="class in org.apache.hadoop.hbase.regionserver">HStore</a>&gt;&nbsp;families)</pre>
+<pre>private&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.html#line.2548">isAllFamilies</a>(<a href="http://docs.oracle.com/javase/8/docs/api/java/util/Collection.html?is-external=true" title="class or interface in java.util">Collection</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/regionserver/HStore.html" title="class in org.apache.hadoop.hbase.regionserver">HStore</a>&gt;&nbsp;families)</pre>
 <dl>
 <dt><span class="returnLabel">Returns:</span></dt>
 <dd>True if passed Set is all families in the region.</dd>
@@ -4498,7 +4498,7 @@ public&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/r
 <ul class="blockList">
 <li class="blockList">
 <h4>writeFlushRequestMarkerToWAL</h4>
-<pre>private&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.html#line.2559">writeFlushRequestMarkerToWAL</a>(<a href="../../../../../org/apache/hadoop/hbase/wal/WAL.html" title="interface in org.apache.hadoop.hbase.wal">WAL</a>&nbsp;wal,
+<pre>private&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.html#line.2558">writeFlushRequestMarkerToWAL</a>(<a href="../../../../../org/apache/hadoop/hbase/wal/WAL.html" title="interface in org.apache.hadoop.hbase.wal">WAL</a>&nbsp;wal,
                                              boolean&nbsp;writeFlushWalMarker)</pre>
 <div class="block">Writes a marker to WAL indicating a flush is requested but cannot be complete due to various
  reasons. Ignores exceptions from WAL. Returns whether the write succeeded.</div>
@@ -4516,7 +4516,7 @@ public&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/r
 <ul class="blockList">
 <li class="blockList">
 <h4>internalFlushCacheAndCommit</h4>
-<pre>protected&nbsp;<a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegion.FlushResultImpl.html" title="class in org.apache.hadoop.hbase.regionserver">HRegion.FlushResultImpl</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.html#line.2577">internalFlushCacheAndCommit</a>(<a href="../../../../../org/apache/hadoop/hbase/wal/WAL.html" title="interface in org.apache.hadoop.hbase.wal">WAL</a>&nbsp;wal,
+<pre>protected&nbsp;<a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegion.FlushResultImpl.html" title="class in org.apache.hadoop.hbase.regionserver">HRegion.FlushResultImpl</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.html#line.2576">internalFlushCacheAndCommit</a>(<a href="../../../../../org/apache/hadoop/hbase/wal/WAL.html" title="interface in org.apache.hadoop.hbase.wal">WAL</a>&nbsp;wal,
                                                               <a href="../../../../../org/apache/hadoop/hbase/monitoring/MonitoredTask.html" title="interface in org.apache.hadoop.hbase.monitoring">MonitoredTask</a>&nbsp;status,
                                                               <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegion.PrepareFlushResult.html" title="class in org.apache.hadoop.hbase.regionserver">HRegion.PrepareFlushResult</a>&nbsp;prepareResult,
                                                               <a href="http://docs.oracle.com/javase/8/docs/api/java/util/Collection.html?is-external=true" title="class or interface in java.util">Collection</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/regionserver/HStore.html" title="class in org.apache.hadoop.hbase.regionserver">HStore</a>&gt;&nbsp;storesToFlush)
@@ -4533,7 +4533,7 @@ public&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/r
 <ul class="blockList">
 <li class="blockList">
 <h4>getNextSequenceId</h4>
-<pre>protected&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.html#line.2722">getNextSequenceId</a>(<a href="../../../../../org/apache/hadoop/hbase/wal/WAL.html" title="interface in org.apache.hadoop.hbase.wal">WAL</a>&nbsp;wal)
+<pre>protected&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.html#line.2721">getNextSequenceId</a>(<a href="../../../../../org/apache/hadoop/hbase/wal/WAL.html" title="interface in org.apache.hadoop.hbase.wal">WAL</a>&nbsp;wal)
                           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">Method to safely get the next sequence number.</div>
 <dl>
@@ -4550,7 +4550,7 @@ public&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/r
 <ul class="blockList">
 <li class="blockList">
 <h4>getScanner</h4>
-<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegion.RegionScannerImpl.html" title="class in org.apache.hadoop.hbase.regionserver">HRegion.RegionScannerImpl</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.html#line.2733">getScanner</a>(<a href="../../../../../org/apache/hadoop/hbase/client/Scan.html" title="class in org.apache.hadoop.hbase.client">Scan</a>&nbsp;scan)
+<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegion.RegionScannerImpl.html" title="class in org.apache.hadoop.hbase.regionserver">HRegion.RegionScannerImpl</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.html#line.2732">getScanner</a>(<a href="../../../../../org/apache/hadoop/hbase/client/Scan.html" title="class in org.apache.hadoop.hbase.client">Scan</a>&nbsp;scan)
                                      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="descfrmTypeLabel">Description copied from interface:&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/regionserver/Region.html#getScanner-org.apache.hadoop.hbase.client.Scan-">Region</a></code></span></div>
 <div class="block">Return an iterator that scans over the HRegion, returning the indicated
@@ -4575,7 +4575,7 @@ public&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/r
 <ul class="blockList">
 <li class="blockList">
 <h4>getScanner</h4>
-<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegion.RegionScannerImpl.html" title="class in org.apache.hadoop.hbase.regionserver">HRegion.RegionScannerImpl</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.html#line.2738">getScanner</a>(<a href="../../../../../org/apache/hadoop/hbase/client/Scan.html" title="class in org.apache.hadoop.hbase.client">Scan</a>&nbsp;scan,
+<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegion.RegionScannerImpl.html" title="class in org.apache.hadoop.hbase.regionserver">HRegion.RegionScannerImpl</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.html#line.2737">getScanner</a>(<a href="../../../../../org/apache/hadoop/hbase/client/Scan.html" title="class in org.apache.hadoop.hbase.client">Scan</a>&nbsp;scan,
                                             <a href="http://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/regionserver/KeyValueScanner.html" title="interface in org.apache.hadoop.hbase.regionserver">KeyValueScanner</a>&gt;&nbsp;additionalScanners)
                                      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="descfrmTypeLabel">Description copied from interface:&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/regionserver/Region.html#getScanner-org.apache.hadoop.hbase.client.Scan-java.util.List-">Region</a></code></span></div>
@@ -4604,7 +4604,7 @@ public&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/r
 <ul class="blockList">
 <li class="blockList">
 <h4>getScanner</h4>
-<pre>private&nbsp;<a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegion.RegionScannerImpl.html" title="class in org.apache.hadoop.hbase.regionserver">HRegion.RegionScannerImpl</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.html#line.2743">getScanner</a>(<a href="../../../../../org/apache/hadoop/hbase/client/Scan.html" title="class in org.apache.hadoop.hbase.client">Scan</a>&nbsp;scan,
+<pre>private&nbsp;<a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegion.RegionScannerImpl.html" title="class in org.apache.hadoop.hbase.regionserver">HRegion.RegionScannerImpl</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.html#line.2742">getScanner</a>(<a href="../../../../../org/apache/hadoop/hbase/client/Scan.html" title="class in org.apache.hadoop.hbase.client">Scan</a>&nbsp;scan,
                                              <a href="http://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/regionserver/KeyValueScanner.html" title="interface in org.apache.hadoop.hbase.regionserver">KeyValueScanner</a>&gt;&nbsp;additionalScanners,
                                              long&nbsp;nonceGroup,
                                              long&nbsp;nonce)
@@ -4621,7 +4621,7 @@ public&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/r
 <ul class="blockList">
 <li class="blockList">
 <h4>instantiateRegionScanner</h4>
-<pre>protected&nbsp;<a href="../../../../../org/apache/hadoop/hbase/regionserver/RegionScanner.html" title="interface in org.apache.hadoop.hbase.regionserver">RegionScanner</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.html#line.2764">instantiateRegionScanner</a>(<a href="../../../../../org/apache/hadoop/hbase/client/Scan.html" title="class in org.apache.hadoop.hbase.client">Scan</a>&nbsp;scan,
+<pre>protected&nbsp;<a href="../../../../../org/apache/hadoop/hbase/regionserver/RegionScanner.html" title="interface in org.apache.hadoop.hbase.regionserver">RegionScanner</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.html#line.2763">instantiateRegionScanner</a>(<a href="../../../../../org/apache/hadoop/hbase/client/Scan.html" title="class in org.apache.hadoop.hbase.client">Scan</a>&nbsp;scan,
                                                  <a href="http://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/regionserver/KeyValueScanner.html" title="interface in org.apache.hadoop.hbase.regionserver">KeyValueScanner</a>&gt;&nbsp;additionalScanners)
                                           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>
 <dl>
@@ -4636,7 +4636,7 @@ public&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/r
 <ul class="blockList">
 <li class="blockList">
 <h4>instantiateRegionScanner</h4>
-<pre>protected&nbsp;<a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegion.RegionScannerImpl.html" title="class in org.apache.hadoop.hbase.regionserver">HRegion.RegionScannerImpl</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.html#line.2770">instantiateRegionScanner</a>(<a href="../../../../../org/apache/hadoop/hbase/client/Scan.html" title="class in org.apache.hadoop.hbase.client">Scan</a>&nbsp;scan,
+<pre>protected&nbsp;<a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegion.RegionScannerImpl.html" title="class in org.apache.hadoop.hbase.regionserver">HRegion.RegionScannerImpl</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.html#line.2769">instantiateRegionScanner</a>(<a href="../../../../../org/apache/hadoop/hbase/client/Scan.html" title="class in org.apache.hadoop.hbase.client">Scan</a>&nbsp;scan,
                                                              <a href="http://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/regionserver/KeyValueScanner.html" title="interface in org.apache.hadoop.hbase.regionserver">KeyValueScanner</a>&gt;&nbsp;additionalScanners,
                                                              long&nbsp;nonceGroup,
                                                              long&nbsp;nonce)
@@ -4653,7 +4653,7 @@ public&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/r
 <ul class="blockList">
 <li class="blockList">
 <h4>prepareDelete</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.html#line.2786">prepareDelete</a>(<a href="../../../../../org/apache/hadoop/hbase/client/Delete.html" title="class in org.apache.hadoop.hbase.client">Delete</a>&nbsp;delete)
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.html#line.2785">prepareDelete</a>(<a href="../../../../../org/apache/hadoop/hbase/client/Delete.html" title="class in org.apache.hadoop.hbase.client">Delete</a>&nbsp;delete)
                    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">Prepare a delete for a row mutation processor</div>
 <dl>
@@ -4670,7 +4670,7 @@ public&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/r
 <ul class="blockList">
 <li class="blockList">
 <h4>delete</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.html#line.2804">delete</a>(<a href="../../../../../org/apache/hadoop/hbase/client/Delete.html" title="class in org.apache.hadoop.hbase.client">Delete</a>&nbsp;delete)
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.html#line.2803">delete</a>(<a href="../../../../../org/apache/hadoop/hbase/client/Delete.html" title="class in org.apache.hadoop.hbase.client">Delete</a>&nbsp;delete)
             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="descfrmTypeLabel">Description copied from interface:&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/regionserver/Region.html#delete-org.apache.hadoop.hbase.client.Delete-">Region</a></code></span></div>
 <div class="block">Deletes the specified cells/row.</div>
@@ -4688,7 +4688,7 @@ public&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/r
 <ul class="blockList">
 <li class="blockList">
 <h4>delete</h4>
-<pre>void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.html#line.2826">delete</a>(<a href="http://docs.oracle.com/javase/8/docs/api/java/util/NavigableMap.html?is-external=true" title="class or interface in java.util">NavigableMap</a>&lt;byte[],<a href="http://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&gt;&gt;&nbsp;familyMap,
+<pre>void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.html#line.2825">delete</a>(<a href="http://docs.oracle.com/javase/8/docs/api/java/util/NavigableMap.html?is-external=true" title="class or interface in java.util">NavigableMap</a>&lt;byte[],<a href="http://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&gt;&gt;&nbsp;familyMap,
             <a href="../../../../../org/apache/hadoop/hbase/client/Durability.html" title="enum in org.apache.hadoop.hbase.client">Durability</a>&nbsp;durability)
      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">This is used only by unit tests. Not required to be a public API.</div>
@@ -4706,7 +4706,7 @@ public&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/r
 <ul class="blockList">
 <li class="blockList">
 <h4>prepareDeleteTimestamps</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.html#line.2842">prepareDeleteTimestamps</a>(<a href="../../../../../org/apache/hadoop/hbase/client/Mutation.html" title="class in org.apache.hadoop.hbase.client">Mutation</a>&nbsp;mutation,
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.html#line.2841">prepareDeleteTimestamps</a>(<a href="../../../../../org/apache/hadoop/hbase/client/Mutation.html" title="class in org.apache.hadoop.hbase.client">Mutation</a>&nbsp;mutation,
                                     <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;byte[],<a href="http://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&gt;&gt;&nbsp;familyMap,
                                     byte[]&nbsp;byteNow)
                              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>
@@ -4728,7 +4728,7 @@ public&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/r
 <ul class="blockList">
 <li class="blockList">
 <h4>updateDeleteLatestVersionTimeStamp</h4>
-<pre>void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.html#line.2886">updateDeleteLatestVersionTimeStamp</a>(<a href="../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&nbsp;cell,
+<pre>void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.html#line.2885">updateDeleteLatestVersionTimeStamp</a>(<a href="../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&nbsp;cell,
                                         <a href="../../../../../org/apache/hadoop/hbase/client/Get.html" title="class in org.apache.hadoop.hbase.client">Get</a>&nbsp;get,
                                         int&nbsp;count,
                                         byte[]&nbsp;byteNow)
@@ -4745,7 +4745,7 @@ public&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/r
 <ul class="blockList">
 <li class="blockList">
 <h4>put</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.html#line.2903">put</a>(<a href="../../../../../org/apache/hadoop/hbase/client/Put.html" title="class in org.apache.hadoop.hbase.client">Put</a>&nbsp;put)
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.html#line.2902">put</a>(<a href="../../../../../org/apache/hadoop/hbase/client/Put.html" title="class in org.apache.hadoop.hbase.client">Put</a>&nbsp;put)
          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="descfrmTypeLabel">Description copied from interface:&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/regionserver/Region.html#put-org.apache.hadoop.hbase.client.Put-">Region</a></code></span></div>
 <div class="block">Puts some data in the table.</div>
@@ -4763,7 +4763,7 @@ public&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/r
 <ul class="blockList">
 <li class="blockList">
 <h4>batchMutate</h4>
-<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/regionserver/OperationStatus.html" title="class in org.apache.hadoop.hbase.regionserver">OperationStatus</a>[]&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.html#line.3706">batchMutate</a>(<a href="../../../../../org/apache/hadoop/hbase/client/Mutation.html" title="class in org.apache.hadoop.hbase.client">Mutation</a>[]&nbsp;mutations,
+<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/regionserver/OperationStatus.html" title="class in org.apache.hadoop.hbase.regionserver">OperationStatus</a>[]&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.html#line.3705">batchMutate</a>(<a href="../../../../../org/apache/hadoop/hbase/client/Mutation.html" title="class in org.apache.hadoop.hbase.client">Mutation</a>[]&nbsp;mutations,
                                      long&nbsp;nonceGroup,
                                      long&nbsp;nonce)
                               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>
@@ -4779,7 +4779,7 @@ public&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/r
 <ul class="blockList">
 <li class="blockList">
 <h4>batchMutate</h4>
-<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/regionserver/OperationStatus.html" title="class in org.apache.hadoop.hbase.regionserver">OperationStatus</a>[]&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.html#line.3711">batchMutate</a>(<a href="../../../../../org/apache/hadoop/hbase/client/Mutation.html" title="class in org.apache.hadoop.hbase.client">Mutation</a>[]&nbsp;mutations,
+<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/regionserver/OperationStatus.html" title="class in org.apache.hadoop.hbase.regionserver">OperationStatus</a>[]&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.html#line.3710">batchMutate</a>(<a href="../../../../../org/apache/hadoop/hbase/client/Mutation.html" title="class in org.apache.hadoop.hbase.client">Mutation</a>[]&nbsp;mutations,
                                      boolean&nbsp;atomic,
                                      long&nbsp;nonceGroup,
                                      long&nbsp;nonce)
@@ -4796,7 +4796,7 @@ public&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/r
 <ul class="blockList">
 <li class="blockList">
 <h4>batchMutate</h4>
-<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/regionserver/OperationStatus.html" title="class in org.apache.hadoop.hbase.regionserver">OperationStatus</a>[]&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.html#line.3721">batchMutate</a>(<a href="../../../../../org/apache/hadoop/hbase/client/Mutation.html" title="class in org.apache.hadoop.hbase.client">Mutation</a>[]&nbsp;mutations)
+<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/regionserver/OperationStatus.html" title="class in org.apache.hadoop.hbase.regionserver">OperationStatus</a>[]&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.html#line.3720">batchMutate</a>(<a href="../../../../../org/apache/hadoop/hbase/client/Mutation.html" title="class in org.apache.hadoop.hbase.client">Mutation</a>[]&nbsp;mutations)
                               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="descfrmTypeLabel">Description copied from interface:&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/regionserver/Region.html#batchMutate-org.apache.hadoop.hbase.client.Mutation:A-">Region</a></code></span></div>
 <div class="block">Perform a batch of mutations.
@@ -4821,7 +4821,7 @@ public&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/r
 <ul class="blockList">
 <li class="blockList">
 <h4>batchReplay</h4>
-<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/regionserver/OperationStatus.html" title="class in org.apache.hadoop.hbase.regionserver">OperationStatus</a>[]&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.html#line.3725">batchReplay</a>(<a href="../../../../../org/apache/hadoop/hbase/wal/WALSplitter.MutationReplay.html" title="class in org.apache.hadoop.hbase.wal">WALSplitter.MutationReplay</a>[]&nbsp;mutations,
+<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/regionserver/OperationStatus.html" title="class in org.apache.hadoop.hbase.regionserver">OperationStatus</a>[]&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.html#line.3724">batchReplay</a>(<a href="../../../../../org/apache/hadoop/hbase/wal/WALSplitter.MutationReplay.html" title="class in org.apache.hadoop.hbase.wal">WALSplitter.MutationReplay</a>[]&nbsp;mutations,
                                      long&nbsp;replaySeqId)
                               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>
 <dl>
@@ -4836,7 +4836,7 @@ public&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/r
 <ul class="blockList">
 <li class="blockList">
 <h4>batchMutate</h4>
-<pre><a href="../../../../../org/apache/hadoop/hbase/regionserver/OperationStatus.html" title="class in org.apache.hadoop.hbase.regionserver">OperationStatus</a>[]&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.html#line.3769">batchMutate</a>(<a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegion.BatchOperation.html" title="class in org.apache.hadoop.hbase.regionserver">HRegion.BatchOperation</a>&lt;?&gt;&nbsp;batchOp)
+<pre><a href="../../../../../org/apache/hadoop/hbase/regionserver/OperationStatus.html" title="class in org.apache.hadoop.hbase.regionserver">OperationStatus</a>[]&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.html#line.3768">batchMutate</a>(<a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegion.BatchOperation.html" title="class in org.apache.hadoop.hbase.regionserver">HRegion.BatchOperation</a>&lt;?&gt;&nbsp;batchOp)
                        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">Perform a batch of mutations.
 
@@ -4868,7 +4868,7 @@ public&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/r
 <ul class="blockList">
 <li class="blockList">
 <h4>doMiniBatchMutate</h4>
-<pre>private&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.html#line.3801">doMiniBatchMutate</a>(<a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegion.BatchOperation.html" title="class in org.apache.hadoop.hbase.regionserver">HRegion.BatchOperation</a>&lt;?&gt;&nbsp;batchOp)
+<pre>private&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.html#line.3800">doMiniBatchMutate</a>(<a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegion.BatchOperation.html" title="class in org.apache.hadoop.hbase.regionserver">HRegion.BatchOperation</a>&lt;?&gt;&nbsp;batchOp)
                         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">Called to do a piece of the batch that came in to <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegion.html#batchMutate-org.apache.hadoop.hbase.client.Mutation:A-long-long-"><code>batchMutate(Mutation[], long, long)</code></a>
  In here we also handle replay of edits on region recover.</div>
@@ -4884,7 +4884,7 @@ public&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/r
 <ul class="blockList">
 <li class="blockList">
 <h4>getEffectiveDurability</h4>
-<pre>protected&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/Durability.html" title="enum in org.apache.hadoop.hbase.client">Durability</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.html#line.3889">getEffectiveDurability</a>(<a href="../../../../../org/apache/hadoop/hbase/client/Durability.html" title="enum in org.apache.hadoop.hbase.client">Durability</a>&nbsp;d)</pre>
+<pre>protected&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/Durability.html" title="enum in org.apache.hadoop.hbase.client">Durability</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.html#line.3888">getEffectiveDurability</a>(<a href="../../../../../org/apache/hadoop/hbase/client/Durability.html" title="enum in org.apache.hadoop.hbase.client">Durability</a>&nbsp;d)</pre>
 <div class="block">Returns effective durability from the passed durability and
  the table descriptor.</div>
 </li>
@@ -4895,7 +4895,7 @@ public&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/r
 <ul class="blockList">
 <li class="blockList">
 <h4>checkAndMutate</h4>
-<pre>public&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.html#line.3894">checkAndMutate</a>(byte[]&nbsp;row,
+<pre>public&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.html#line.3893">checkAndMutate</a>(byte[]&nbsp;row,
                               byte[]&nbsp;family,
                               byte[]&nbsp;qualifier,
                               <a href="../../../../../org/apache/hadoop/hbase/CompareOperator.html" title="enum in org.apache.hadoop.hbase">CompareOperator</a>&nbsp;op,
@@ -4929,7 +4929,7 @@ public&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/r
 <ul class="blockList">
 <li class="blockList">
 <h4>checkAndRowMutate</h4>
-<pre>public&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.html#line.3903">checkAndRowMutate</a>(byte[]&nbsp;row,
+<pre>public&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.html#line.3902">checkAndRowMutate</a>(byte[]&nbsp;row,
                                  byte[]&nbsp;family,
                                  byte[]&nbsp;qualifier,
                                  <a href="../../../../../org/apache/hadoop/hbase/CompareOperator.html" title="enum in org.apache.hadoop.hbase">CompareOperator</a>&nbsp;op,
@@ -4963,7 +4963,7 @@ public&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/r
 <ul class="blockList">
 <li class="blockList">
 <h4>doCheckAndRowMutate</h4>
-<pre>private&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.html#line.3915">doCheckAndRowMutate</a>(byte[]&nbsp;row,
+<pre>private&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.html#line.3914">doCheckAndRowMutate</a>(byte[]&nbsp;row,
                                     byte[]&nbsp;family,
                                     byte[]&nbsp;qualifier,
                                     <a href="../../../../../org/apache/hadoop/hbase/CompareOperator.html" title="enum in org.apache.hadoop.hbase">CompareOperator</a>&nbsp;op,
@@ -4986,7 +4986,7 @@ public&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/r
 <ul class="blockList">
 <li class="blockList">
 <h4>checkMutationType</h4>
-<pre>private&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.html#line.4011">checkMutationType</a>(<a href="../../../../../org/apache/hadoop/hbase/client/Mutation.html" title="class in org.apache.hadoop.hbase.client">Mutation</a>&nbsp;mutation,
+<pre>private&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.html#line.4010">checkMutationType</a>(<a href="../../../../../org/apache/hadoop/hbase/client/Mutation.html" title="class in org.apache.hadoop.hbase.client">Mutation</a>&nbsp;mutation,
                                byte[]&nbsp;row)
                         throws <a href="../../../../../org/apache/hadoop/hbase/DoNotRetryIOException.html" title="class in org.apache.hadoop.hbase">DoNotRetryIOException</a></pre>
 <dl>
@@ -5001,7 +5001,7 @@ public&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/r
 <ul class="blockList">
 <li class="blockList">
 <h4>matches</h4>
-<pre>private&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.html#line.4022">matches</a>(<a href="../../../../../org/apache/hadoop/hbase/CompareOperator.html" title="enum in org.apache.hadoop.hbase">CompareOperator</a>&nbsp;op,
+<pre>private&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.html#line.4021">matches</a>(<a href="../../../../../org/apache/hadoop/hbase/CompareOperator.html" title="enum in org.apache.hadoop.hbase">CompareOperator</a>&nbsp;op,
                         int&nbsp;compareResult)</pre>
 </li>
 </ul>
@@ -5011,7 +5011,7 @@ public&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/r
 <ul class="blockList">
 <li class="blockList">
 <h4>doBatchMutate</h4>
-<pre>private&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.html#line.4050">doBatchMutate</a>(<a href="../../../../../org/apache/hadoop/hbase/client/Mutation.html" title="class in org.apache.hadoop.hbase.client">Mutation</a>&nbsp;mutation)
+<pre>private&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.html#line.4049">doBatchMutate</a>(<a href="../../../../../org/apache/hadoop/hbase/client/Mutation.html" title="class in org.apache.hadoop.hbase.client">Mutation</a>&nbsp;mutation)
                     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>
 <dl>
 <dt><span class="throwsLabel">Throws:</span></dt>
@@ -5025,7 +5025,7 @@ public&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/r
 <ul class="blockList">
 <li class="blockList">
 <h4>addRegionToSnapshot</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.html#line.4073">addRegionToSnapshot</a>(org.apache.hadoop.hbase.shaded.protobuf.generated.SnapshotProtos.SnapshotDescription&nbsp;desc,
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.html#line.4072">addRegionToSnapshot</a>(org.apache.hadoop.hbase.shaded.protobuf.generated.SnapshotProtos.SnapshotDescription&nbsp;desc,
                                 <a href="../../../../../org/apache/hadoop/hbase/errorhandling/ForeignExceptionSnare.html" title="interface in org.apache.hadoop.hbase.errorhandling">ForeignExceptionSnare</a>&nbsp;exnSnare)
                          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">Complete taking the snapshot on the region. Writes the region info and adds references to the
@@ -5050,7 +5050,7 @@ public&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/r
 <ul class="blockList">
 <li class="blockList">
 <h4>updateSequenceId</h4>
-<pre>private&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.html#line.4083">updateSequenceId</a>(<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Iterable.html?is-external=true" title="class or interface in java.lang">Iterable</a>&lt;<a href="http://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&gt;&gt;&nbsp;cellItr,
+<pre>private&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.html#line.4082">updateSequenceId</a>(<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Iterable.html?is-external=true" title="class or interface in java.lang">Iterable</a>&lt;<a href="http://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&gt;&gt;&nbsp;cellItr,
                               long&nbsp;sequenceId)
                        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>
 <dl>
@@ -5065,7 +5065,7 @@ public&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/r
 <ul class="blockList">
 <li class="blockList">
 <h4>updateCellTimestamps</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.html#line.4099">updateCellTimestamps</a>(<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Iterable.html?is-external=true" title="class or interface in java.lang">Iterable</a>&lt;<a href="http://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&gt;&gt;&nbsp;cellItr,
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.html#line.4098">updateCellTimestamps</a>(<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Iterable.html?is-external=true" title="class or interface in java.lang">Iterable</a>&lt;<a href="http://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&gt;&gt;&nbsp;cellItr,
                                  byte[]&nbsp;now)
                           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">Replace any cell timestamps set to <a href="../../../../../org/apache/hadoop/hbase/HConstants.html#LATEST_TIMESTAMP"><code>HConstants.LATEST_TIMESTAMP</code></a>
@@ -5085,7 +5085,7 @@ public&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/r
 <ul class="blockList">
 <li class="blockList">
 <h4>rewriteCellTags</h4>
-<pre>void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.html#line.4116">rewriteCellTags</a>(<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;byte[],<a href="http://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&gt;&gt;&nbsp;familyMap,
+<pre>void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.html#line.4115">rewriteCellTags</a>(<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;byte[],<a href="http://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&gt;&gt;&nbsp;familyMap,
                      <a href="../../../../../org/apache/hadoop/hbase/client/Mutation.html" title="class in org.apache.hadoop.hbase.client">Mutation</a>&nbsp;m)</pre>
 <div class="block">Possibly rewrite incoming cell tags.</div>
 </li>
@@ -5096,7 +5096,7 @@ public&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/r
 <ul class="blockList">
 <li class="blockList">
 <h4>checkResources</h4>
-<pre>void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.html#line.4144">checkResources</a>()
+<pre>void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.html#line.4143">checkResources</a>()
              throws <a href="../../../../../org/apache/hadoop/hbase/RegionTooBusyException.html" title="class in org.apache.hadoop.hbase">RegionTooBusyException</a></pre>
 <dl>
 <dt><span class="throwsLabel">Throws:</span></dt>
@@ -5110,7 +5110,7 @@ public&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/r
 <ul class="blockList">
 <li class="blockList">
 <h4>checkReadOnly</h4>
-<pre>protected&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.html#line.4164">checkReadOnly</a>()
+<pre>protected&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.html#line.4163">checkReadOnly</a>()
                       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>
 <dl>
 <dt><span class="throwsLabel">Throws:</span></dt>
@@ -5124,7 +5124,7 @@ public&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/r
 <ul class="blockList">
 <li class="blockList">
 <h4>checkReadsEnabled</h4>
-<pre>protected&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.html#line.4170">checkReadsEnabled</a>()
+<pre>protected&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.html#line.4169">checkReadsEnabled</a>()
                           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>
 <dl>
 <dt><span class="throwsLabel">Throws:</span></dt>
@@ -5138,7 +5138,7 @@ public&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/r
 <ul class="blockList">
 <li class="blockList">
 <h4>setReadsEnabled</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.html#line.4177">setReadsEnabled</a>(boolean&nbsp;readsEnabled)</pre>
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.html#line.4176">setReadsEnabled</a>(boolean&nbsp;readsEnabled)</pre>
 </li>
 </ul>
 <a name="put-byte:A-byte:A-java.util.List-">
@@ -5147,7 +5147,7 @@ public&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/r
 <ul class="blockList">
 <li class="blockList">
 <h4>put</h4>
-<pre>void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.html#line.4190">put</a>(byte[]&nbsp;row,
+<pre>void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.html#line.4189">put</a>(byte[]&nbsp;row,
          byte[]&nbsp;family,
          <a href="http://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&gt;&nbsp;edits)
   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>
@@ -5167,7 +5167,7 @@ public&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/r
 <ul class="blockList">
 <li class="blockList">
 <h4>applyToMemStore</h4>
-<pre>private&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.html#line.4207">applyToMemStore</a>(<a href="../../../../../org/apache/hadoop/hbase/regionserver/HStore.html" title="class in org.apache.hadoop.hbase.regionserver">HStore</a>&nbsp;store,
+<pre>private&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.html#line.4206">applyToMemStore</a>(<a href="../../../../../org/apache/hadoop/hbase/regionserver/HStore.html" title="class in org.apache.hadoop.hbase.regionserver">HStore</a>&nbsp;store,
                              <a href="http://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&gt;&nbsp;cells,
                              boolean&nbsp;delta,
                              <a href="../../../../../org/apache/hadoop/hbase/regionserver/MemStoreSizing.html" title="class in org.apache.hadoop.hbase.regionserver">MemStoreSizing</a>&nbsp;memstoreAccounting)
@@ -5190,7 +5190,7 @@ public&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/r
 <ul class="blockList">
 <li class="blockList">
 <h4>applyToMemStore</h4>
-<pre>private&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.html#line.4221">applyToMemStore</a>(<a href="../../../../../org/apache/hadoop/hbase/regionserver/HStore.html" title="class in org.apache.hadoop.hbase.regionserver">HStore</a>&nbsp;store,
+<pre>private&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.html#line.4220">applyToMemStore</a>(<a href="../../../../../org/apache/hadoop/hbase/regionserver/HStore.html" title="class in org.apache.hadoop.hbase.regionserver">HStore</a>&nbsp;store,
                              <a href="../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&nbsp;cell,
                              <a href="../../../../../org/apache/hadoop/hbase/regionserver/MemStoreSizing.html" title="class in org.apache.hadoop.hbase.regionserver">MemStoreSizing</a>&nbsp;memstoreAccounting)
                       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>
@@ -5208,7 +5208,7 @@ public&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/r
 <ul class="blockList">
 <li class="blockList">
 <h4>checkFamilies</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.html#line.4236">checkFamilies</a>(<a href="http://docs.oracle.com/javase/8/docs/api/java/util/Collection.html?is-external=true" title="class or interface in java.util">Collection</a>&lt;byte[]&gt;&nbsp;families)
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.html#line.4235">checkFamilies</a>(<a href="http://docs.oracle.com/javase/8/docs/api/java/util/Collection.html?is-external=true" title="class or interface in java.util">Collection</a>&lt;byte[]&gt;&nbsp;families)
                    throws <a href="../../../../../org/apache/hadoop/hbase/regionserver/NoSuchColumnFamilyException.html" title="class in org.apache.hadoop.hbase.regionserver">NoSuchColumnFamilyException</a></pre>
 <div class="block">Check the collection of families for validity.</div>
 <dl>
@@ -5225,7 +5225,7 @@ public&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/r
 <ul class="blockList">
 <li class="blockList">
 <h4>checkTimestamps</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.html#line.4248">checkTimestamps</a>(<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;byte[],<a href="http://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&gt;&gt;&nbsp;familyMap,
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.html#line.4247">checkTimestamps</a>(<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;byte[],<a href="http://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&gt;&gt;&nbsp;familyMap,
                             long&nbsp;now)
                      throws <a href="../../../../../org/apache/hadoop/hbase/exceptions/FailedSanityCheckException.html" title="class in org.apache.hadoop.hbase.exceptions">FailedSanityCheckException</a></pre>
 <div class="block">Check the collection of families for valid timestamps</div>
@@ -5244,7 +5244,7 @@ public&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/r
 <ul class="blockList">
 <li class="blockList">
 <h4>isFlushSize</h4>
-<pre>private&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.html#line.4275">isFlushSize</a>(long&nbsp;size)</pre>
+<pre>private&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.html#line.4274">isFlushSize</a>(long&nbsp;size)</pre>
 </li>
 </ul>
 <a name="replayRecoveredEditsIfAny-org.apache.hadoop.fs.Path-java.util.Map-org.apache.hadoop.hbase.util.CancelableProgressable-org.apache.hadoop.hbase.monitoring.MonitoredTask-">
@@ -5253,7 +5253,7 @@ public&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/r
 <ul class="blockList">
 <li class="blockList">
 <h4>replayRecoveredEditsIfAny</h4>
-<pre>protected&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.html#line.4312">replayRecoveredEditsIfAny</a>(org.apache.hadoop.fs.Path&nbsp;regiondir,
+<pre>protected&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.html#line.4311">replayRecoveredEditsIfAny</a>(org.apache.hadoop.fs.Path&nbsp;regiondir,
                                          <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;byte[],<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Long.html?is-external=true" title="class or interface in java.lang">Long</a>&gt;&nbsp;maxSeqIdInStores,
                                          <a href="../../../../../org/apache/hadoop/hbase/util/CancelableProgressable.html" title="interface in org.apache.hadoop.hbase.util">CancelableProgressable</a>&nbsp;reporter,
                                          <a href="../../../../../org/apache/hadoop/hbase/monitoring/MonitoredTask.html" title="interface in org.apache.hadoop.hbase.monitoring">MonitoredTask</a>&nbsp;status)
@@ -5301,7 +5301,7 @@ public&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/r
 <ul class="blockList">
 <li class="blockList">
 <h4>replayRecoveredEdits</h4>
-<pre>private&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.html#line.4420">replayRecoveredEdits</a>(org.apache.hadoop.fs.Path&nbsp;edits,
+<pre>private&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.html#line.4419">replayRecoveredEdits</a>(org.apache.hadoop.fs.Path&nbsp;edits,
                                   <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;byte[],<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Long.html?is-external=true" title="class or interface in java.lang">Long</a>&gt;&nbsp;maxSeqIdInStores,
                                   <a href="../../../../../org/apache/hadoop/hbase/util/CancelableProgressable.html" title="interface in org.apache.hadoop.hbase.util">CancelableProgressable</a>&nbsp;reporter)
                            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>
@@ -5317,7 +5317,7 @@ public&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/r
 <ul class="blockList">
 <li class="blockList">
 <h4>replayWALCompactionMarker</h4>
-<pre>void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.html#line.4626">replayWALCompactionMarker</a>(org.apache.hadoop.hbase.shaded.protobuf.generated.WALProtos.CompactionDescriptor&nbsp;compaction,
+<pre>void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.html#line.4625">replayWALCompactionMarker</a>(org.apache.hadoop.hbase.shaded.protobuf.generated.WALProtos.CompactionDescriptor&nbsp;compaction,
                                boolean&nbsp;pickCompactionFiles,
                                boolean&nbsp;removeFiles,
                                long&nbsp;replaySeqId)
@@ -5337,7 +5337,7 @@ public&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/r
 <ul class="blockList">
 <li class="blockList">
 <h4>replayWALFlushMarker</h4>
-<pre>void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.html#line.4687">replayWALFlushMarker</a>(org.apache.hadoop.hbase.shaded.protobuf.generated.WALProtos.FlushDescriptor&nbsp;flush,
+<pre>void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.html#line.4686">replayWALFlushMarker</a>(org.apache.hadoop.hbase.shaded.protobuf.generated.WALProtos.FlushDescriptor&nbsp;flush,
                           long&nbsp;replaySeqId)
                    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>
 <dl>
@@ -5352,7 +5352,7 @@ public&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/r
 <ul class="blockList">
 <li class="blockList">
 <h4>replayWALFlushStartMarker</h4>
-<pre><a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegion.PrepareFlushResult.html" title="class in org.apache.hadoop.hbase.regionserver">HRegion.PrepareFlushResult</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.html#line.4734">replayWALFlushStartMarker</a>(org.apache.hadoop.hbase.shaded.protobuf.generated.WALProtos.FlushDescriptor&nbsp;flush)
+<pre><a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegion.PrepareFlushResult.html" title="class in org.apache.hadoop.hbase.regionserver">HRegion.PrepareFlushResult</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.html#line.4733">replayWALFlushStartMarker</a>(org.apache.hadoop.hbase.shaded.protobuf.generated.WALProtos.FlushDescriptor&nbsp;flush)
                                               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">Replay the flush marker from primary region by creating a corresponding snapshot of
  the store memstores, only if the memstores do not have a higher seqId from an earlier wal
@@ -5369,7 +5369,7 @@ public&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/r
 <ul class="blockList">
 <li class="blockList">
 <h4>replayWALFlushCommitMarker</h4>
-<pre>void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.html#line.4847">replayWALFlushCommitMarker</a>(org.apache.hadoop.hbase.shaded.protobuf.generated.WALProtos.FlushDescriptor&nbsp;flush)
+<pre>void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.html#line.4846">replayWALFlushCommitMarker</a>(org.apache.hadoop.hbase.shaded.protobuf.generated.WALProtos.FlushDescriptor&nbsp;flush)
                          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>
 <dl>
 <dt><span class="throwsLabel">Throws:</span></dt>
@@ -5383,7 +5383,7 @@ public&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/r
 <ul class="blockList">
 <li class="blockList">
 <h4>replayFlushInStores</h4>
-<pre>private&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.html#line.4972">replayFlushInStores</a>(org.apache.hadoop.hbase.shaded.protobuf.generated.WALProtos.FlushDescriptor&nbsp;flush,
+<pre>private&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.html#line.4971">replayFlushInStores</a>(org.apache.hadoop.hbase.shaded.protobuf.generated.WALProtos.FlushDescriptor&nbsp;flush,
                                  <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegion.PrepareFlushResult.html" title="class in org.apache.hadoop.hbase.regionserver">HRegion.PrepareFlushResult</a>&nbsp;prepareFlushResult,
                                  boolean&nbsp;dropMemstoreSnapshot)
                           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>
@@ -5405,7 +5405,7 @@ public&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/r
 <ul class="blockList">
 <li class="blockList">
 <h4>dropMemStoreContentsForSeqId</h4>
-<pre>private&nbsp;<a href="../../../../../org/apache/hadoop/hbase/regionserver/MemStoreSize.html" title="class in org.apache.hadoop.hbase.regionserver">MemStoreSize</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.html#line.5013">dropMemStoreContentsForSeqId</a>(long&nbsp;seqId,
+<pre>private&nbsp;<a href="../../../../../org/apache/hadoop/hbase/regionserver/MemStoreSize.html" title="class in org.apache.hadoop.hbase.regionserver">MemStoreSize</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.html#line.5012">dropMemStoreContentsForSeqId</a>(long&nbsp;seqId,
                                                   <a href="../../../../../org/apache/hadoop/hbase/regionserver/HStore.html" title="class in org.apache.hadoop.hbase.regionserver">HStore</a>&nbsp;store)
                                            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">Drops the memstore contents after replaying a flush descriptor or region open event replay
@@ -5422,7 +5422,7 @@ public&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/r
 <ul class="blockList">
 <li class="blockList">
 <h4>doDropStoreMemStoreContentsForSeqId</h4>
-<pre>private&nbsp;<a href="../../../../../org/apache/hadoop/hbase/regionserver/MemStoreSize.html" title="class in org.apache.hadoop.hbase.regionserver">MemStoreSize</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.html#line.5044">doDropStoreMemStoreContentsForSeqId</a>(<a href="../../../../../org/apache/hadoop/hbase/regionserver/HStore.html" title="class in org.apache.hadoop.hbase.regionserver">HStore</a>&nbsp;s,
+<pre>private&nbsp;<a href="../../../../../org/apache/hadoop/hbase/regionserver/MemStoreSize.html" title="class in org.apache.hadoop.hbase.regionserver">MemStoreSize</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.html#line.5043">doDropStoreMemStoreContentsForSeqId</a>(<a href="../../../../../org/apache/hadoop/hbase/regionserver/HStore.html" title="class in org.apache.hadoop.hbase.regionserver">HStore</a>&nbsp;s,
                                                          long&nbsp;currentSeqId)
                                                   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>
 <dl>
@@ -5437,7 +5437,7 @@ public&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/r
 <ul class="blockList">
 <li class="blockList">
 <h4>replayWALFlushAbortMarker</h4>
-<pre>private&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.html#line.5054">replayWALFlushAbortMarker</a>(org.apache.hadoop.hbase.shaded.protobuf.generated.WALProtos.FlushDescriptor&nbsp;flush)</pre>
+<pre>private&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.html#line.5053">replayWALFlushAbortMarker</a>(org.apache.hadoop.hbase.shaded.protobuf.generated.WALProtos.FlushDescriptor&nbsp;flush)</pre>
 </li>
 </ul>
 <a name="replayWALFlushCannotFlushMarker-org.apache.hadoop.hbase.shaded.protobuf.generated.WALProtos.FlushDescriptor-long-">
@@ -5446,7 +5446,7 @@ public&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/r
 <ul class="blockList">
 <li class="blockList">
 <h4>replayWALFlushCannotFlushMarker</h4>
-<pre>private&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.html#line.5060">replayWALFlushCannotFlushMarker</a>(org.apache.hadoop.hbase.shaded.protobuf.generated.WALProtos.FlushDescriptor&nbsp;flush,
+<pre>private&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.html#line.5059">replayWALFlushCannotFlushMarker</a>(org.apache.hadoop.hbase.shaded.protobuf.generated.WALProtos.FlushDescriptor&nbsp;flush,
                                              long&nbsp;replaySeqId)</pre>
 </li>
 </ul>
@@ -5456,7 +5456,7 @@ public&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/r
 <ul class="blockList">
 <li class="blockList">
 <h4>getPrepareFlushResult</h4>
-<pre><a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegion.PrepareFlushResult.html" title="class in org.apache.hadoop.hbase.regionserver">HRegion.PrepareFlushResult</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.html#line.5080">getPrepareFlushResult</a>()</pre>
+<pre><a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegion.PrepareFlushResult.html" title="class in org.apache.hadoop.hbase.regionserver">HRegion.PrepareFlushResult</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.html#line.5079">getPrepareFlushResult</a>()</pre>
 </li>
 </ul>
 <a name="replayWALRegionEventMarker-org.apache.hadoop.hbase.shaded.protobuf.generated.WALProtos.RegionEventDescriptor-">
@@ -5465,7 +5465,7 @@ public&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/r
 <ul class="blockList">
 <li class="blockList">
 <h4>replayWALRegionEventMarker</h4>
-<pre>void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.html#line.5086">replayWALRegionEventMarker</a>(org.apache.hadoop.hbase.shaded.protobuf.generated.WALProtos.RegionEventDescriptor&nbsp;regionEvent)
+<pre>void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.html#line.5085">replayWALRegionEventMarker</a>(org.apache.hadoop.hbase.shaded.protobuf.generated.WALProtos.RegionEventDescriptor&nbsp;regionEvent)
                          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>
 <dl>
 <dt><span class="throwsLabel">Throws:</span></dt>
@@ -5479,7 +5479,7 @@ public&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/r
 <ul class="blockList">
 <li class="blockList">
 <h4>replayWALBulkLoadEventMarker</h4>
-<pre>void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.html#line.5202">replayWALBulkLoadEventMarker</a>(org.apache.hadoop.hbase.shaded.protobuf.generated.WALProtos.BulkLoadDescriptor&nbsp;bulkLoadEvent)
+<pre>void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.html#line.5201">replayWALBulkLoadEventMarker</a>(org.apache.hadoop.hbase.shaded.protobuf.generated.WALProtos.BulkLoadDescriptor&nbsp;bulkLoadEvent)
                            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>
 <dl>
 <dt><span class="throwsLabel">Throws:</span></dt>
@@ -5493,7 +5493,7 @@ public&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/r
 <ul class="blockList">
 <li class="blockList">
 <h4>dropPrepareFlushIfPossible</h4>
-<pre>private&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.html#line.5285">dropPrepareFlushIfPossible</a>()</pre>
+<pre>private&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.html#line.5284">dropPrepareFlushIfPossible</a>()</pre>
 <div class="block">If all stores ended up dropping their snapshots, we can safely drop the prepareFlushResult</div>
 </li>
 </ul>
@@ -5503,7 +5503,7 @@ public&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/r
 <ul class="blockList">
 <li class="blockList">
 <h4>refreshStoreFiles</h4>
-<pre>public&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.html#line.5312">refreshStoreFiles</a>()
+<pre>public&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.html#line.5311">refreshStoreFiles</a>()
                           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="descfrmTypeLabel">Description copied from interface:&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/regionserver/Region.html#refreshStoreFiles--">Region</a></code></span></div>
 <div class="block">Check the region's underlying store files, open the files that have not
@@ -5523,7 +5523,7 @@ public&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/r
 <ul class="blockList">
 <li class="blockList">
 <h4>refreshStoreFiles</h4>
-<pre>protected&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.html#line.5318">refreshStoreFiles</a>(boolean&nbsp;force)
+<pre>protected&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.html#line.5317">refreshStoreFiles</a>(boolean&nbsp;force)
                              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>
 <dl>
 <dt><span class="throwsLabel">Throws:</span></dt>
@@ -5537,7 +5537,7 @@ public&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/r
 <ul class="blockList">
 <li class="blockList">
 <h4>logRegionFiles</h4>
-<pre>private&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.html#line.5409">logRegionFiles</a>()</pre>
+<pre>private&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.html#line.5408">logRegionFiles</a>()</pre>
 </li>
 </ul>
 <a name="checkTargetRegion-byte:A-java.lang.String-java.lang.Object-">
@@ -5546,7 +5546,7 @@ public&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/r
 <ul class="blockList">
 <li class="blockList">
 <h4>checkTargetRegion</h4>
-<pre>private&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.html#line.5421">checkTargetRegion</a>(byte[]&nbsp;encodedRegionName,
+<pre>private&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.html#line.5420">checkTargetRegion</a>(byte[]&nbsp;encodedRegionName,
                                <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;exceptionMsg,
                                <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a>&nbsp;payload)
                         throws <a href="../../../../../org/apache/hadoop/hbase/regionserver/WrongRegionException.html" title="class in org.apache.hadoop.hbase.regionserver">WrongRegionException</a></pre>
@@ -5564,7 +5564,7 @@ public&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/r
 <ul class="blockList">
 <li class="blockList">
 <h4>restoreEdit</h4>
-<pre>protected&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.html#line.5444">restoreEdit</a>(<a href="../../../../../org/apache/hadoop/hbase/regionserver/HStore.html" title="class in org.apache.hadoop.hbase.regionserver">HStore</a>&nbsp;s,
+<pre>protected&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.html#line.5443">restoreEdit</a>(<a href="../../../../../org/apache/hadoop/hbase/regionserver/HStore.html" title="class in org.apache.hadoop.hbase.regionserver">HStore</a>&nbsp;s,
                            <a href="../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&nbsp;cell,
                            <a href="../../../../../org/apache/hadoop/hbase/regionserver/MemStoreSizing.html" title="class in org.apache.hadoop.hbase.regionserver">MemStoreSizing</a>&nbsp;memstoreAccounting)</pre>
 <div class="block">Used by tests</div>
@@ -5581,7 +5581,7 @@ public&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/r
 <ul class="blockList">
 <li class="blockList">
 <h4>isZeroLengthThenDelete</h4>
-<pre>private static&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.html#line.5453">isZeroLengthThenDelete</a>(org.apache.hadoop.fs.FileSystem&nbsp;fs,
+<pre>private static&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.html#line.5452">isZeroLengthThenDelete</a>(org.apache.hadoop.fs.FileSystem&nbsp;fs,
                                               org.apache.hadoop.fs.Path&nbsp;p)
                                        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>
 <dl>
@@ -5600,7 +5600,7 @@ public&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/r
 <ul class="blockList">
 <li class="blockList">
 <h4>instantiateHStore</h4>
-<pre>protected&nbsp;<a href="../../../../../org/apache/hadoop/hbase/regionserver/HStore.html" title="class in org.apache.hadoop.hbase.regionserver">HStore</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.html#line.5464">instantiateHStore</a>(<a href="../../../../../org/apache/hadoop/hbase/client/ColumnFamilyDescriptor.html" title="interface in org.apache.hadoop.hbase.client">ColumnFamilyDescriptor</a>&nbsp;family)
+<pre>protected&nbsp;<a href="../../../../../org/apache/hadoop/hbase/regionserver/HStore.html" title="class in org.apache.hadoop.hbase.regionserver">HStore</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.html#line.5463">instantiateHStore</a>(<a href="../../../../../org/apache/hadoop/hbase/client/ColumnFamilyDescriptor.html" title="interface in org.apache.hadoop.hbase.client">ColumnFamilyDescriptor</a>&nbsp;family)
                             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>
 <dl>
 <dt><span class="throwsLabel">Throws:</span></dt>
@@ -5614,7 +5614,7 @@ public&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/r
 <ul class="blockList">
 <li class="blockList">
 <h4>getStore</h4>
-<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/regionserver/HStore.html" title="class in org.apache.hadoop.hbase.regionserver">HStore</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.html#line.5478">getStore</a>(byte[]&nbsp;column)</pre>
+<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/regionserver/HStore.html" title="class in org.apache.hadoop.hbase.regionserver">HStore</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.html#line.5477">getStore</a>(byte[]&nbsp;column)</pre>
 <div class="block"><span class="descfrmTypeLabel">Description copied from interface:&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/regionserver/Region.html#getStore-byte:A-">Region</a></code></span></div>
 <div class="block">Return the Store for the given family
  <p>Use with caution.  Exposed for use of fixup utilities.</div>
@@ -5632,7 +5632,7 @@ public&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/r
 <ul class="blockList">
 <li class="blockList">
 <h4>getStore</h4>
-<pre>private&nbsp;<a href="../../../../../org/apache/hadoop/hbase/regionserver/HStore.html" title="class in org.apache.hadoop.hbase.regionserver">HStore</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.html#line.5486">getStore</a>(<a href="../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&nbsp;cell)</pre>
+<pre>private&nbsp;<a href="../../../../../org/apache/hadoop/hbase/regionserver/HStore.html" title="class in org.apache.hadoop.hbase.regionserver">HStore</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.html#line.5485">getStore</a>(<a href="../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&nbsp;cell)</pre>
 <div class="block">Return HStore instance. Does not do any copy: as the number of store is limited, we iterate on
  the list.</div>
 </li>
@@ -5643,7 +5643,7 @@ public&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/r
 <ul class="blockList">
 <li class="blockList">
 <h4>getStores</h4>
-<pre>public&nbsp;<a href="http://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/regionserver/HStore.html" title="class in org.apache.hadoop.hbase.regionserver">HStore</a>&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.html#line.5492">getStores</a>()</pre>
+<pre>public&nbsp;<a href="http://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/regionserver/HStore.html" title="class in org.apache.hadoop.hbase.regionserver">HStore</a>&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.html#line.5491">getStores</a>()</pre>
 <div class="block"><span class="descfrmTypeLabel">Description copied from interface:&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/regionserver/Region.html#getStores--">Region</a></code></span></div>
 <div class="block">Return the list of Stores managed by this region
  <p>Use with caution.  Exposed for use of fixup utilities.</div>
@@ -5661,7 +5661,7 @@ public&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/r
 <ul class="blockList">
 <li class="blockList">
 <h4>getStoreFileList</h4>
-<pre>public&nbsp;<a href="http://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</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>&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.html#line.5497">getStoreFileList</a>(byte[][]&nbsp;columns)
+<pre>public&nbsp;<a href="http://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</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>&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.html#line.5496">getStoreFileList</a>(byte[][]&nbsp;columns)
                               throws <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/IllegalArgumentException.html?is-external=true" title="class or interface in java.lang">IllegalArgumentException</a></pre>
 <dl>
 <dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
@@ -5679,7 +5679,7 @@ public&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/r
 <ul class="blockList">
 <li class="blockList">
 <h4>checkRow</h4>
-<pre>void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.html#line.5525">checkRow</a>(byte[]&nbsp;row,
+<pre>void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.html#line.5524">checkRow</a>(byte[]&nbsp;row,
               <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;op)
        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">Make sure this is a valid row for the HRegion</div>
@@ -5695,7 +5695,7 @@ public&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/r
 <ul class="blockList">
 <li class="blockList">
 <h4>getRowLock</h4>
-<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/regionserver/Region.RowLock.html" title="interface in org.apache.hadoop.hbase.regionserver">Region.RowLock</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.html#line.5542">getRowLock</a>(byte[]&nbsp;row)
+<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/regionserver/Region.RowLock.html" title="interface in org.apache.hadoop.hbase.regionserver">Region.RowLock</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.html#line.5541">getRowLock</a>(byte[]&nbsp;row)
                           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">Get an exclusive ( write lock ) lock on a given row.</div>
 <dl>
@@ -5714,7 +5714,7 @@ public&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/r
 <ul class="blockList">
 <li class="blockList">
 <h4>getRowLock</h4>
-<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/regionserver/Region.RowLock.html" title="interface in org.apache.hadoop.hbase.regionserver">Region.RowLock</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.html#line.5547">getRowLock</a>(byte[]&nbsp;row,
+<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/regionserver/Region.RowLock.html" title="interface in org.apache.hadoop.hbase.regionserver">Region.RowLock</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.html#line.5546">getRowLock</a>(byte[]&nbsp;row,
                                  boolean&nbsp;readLock)
                           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="descfrmTypeLabel">Description copied from interface:&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/regionserver/Region.html#getRowLock-byte:A-boolean-">Region</a></code></span></div>
@@ -5749,7 +5749,7 @@ public&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/r
 <ul class="blockList">
 <li class="blockList">
 <h4>getRowLockInternal</h4>
-<pre>protected&nbsp;<a href="../../../../../org/apache/hadoop/hbase/regionserver/Region.RowLock.html" title="interface in org.apache.hadoop.hbase.regionserver">Region.RowLock</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.html#line.5552">getRowLockInternal</a>(byte[]&nbsp;row,
+<pre>protected&nbsp;<a href="../../../../../org/apache/hadoop/hbase/regionserver/Region.RowLock.html" title="interface in org.apache.hadoop.hbase.regionserver">Region.RowLock</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase

<TRUNCATED>

[38/51] [partial] hbase-site git commit: Published site at .

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/c54c242b/devapidocs/org/apache/hadoop/hbase/regionserver/wal/WALActionsListener.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/regionserver/wal/WALActionsListener.html b/devapidocs/org/apache/hadoop/hbase/regionserver/wal/WALActionsListener.html
index b2d7988..c83e0b5 100644
--- a/devapidocs/org/apache/hadoop/hbase/regionserver/wal/WALActionsListener.html
+++ b/devapidocs/org/apache/hadoop/hbase/regionserver/wal/WALActionsListener.html
@@ -18,8 +18,8 @@
     catch(err) {
     }
 //-->
-var methods = {"i0":6,"i1":6,"i2":6,"i3":6,"i4":6,"i5":6,"i6":6,"i7":6,"i8":6,"i9":6};
-var tabs = {65535:["t0","All Methods"],2:["t2","Instance Methods"],4:["t3","Abstract Methods"]};
+var methods = {"i0":18,"i1":18,"i2":18,"i3":18,"i4":18,"i5":18,"i6":18,"i7":18,"i8":18,"i9":18};
+var tabs = {65535:["t0","All Methods"],2:["t2","Instance Methods"],16:["t5","Default Methods"]};
 var altColor = "altColor";
 var rowColor = "rowColor";
 var tableTab = "tableTab";
@@ -50,7 +50,7 @@ var activeTableTab = "activeTableTab";
 <div class="subNav">
 <ul class="navList">
 <li><a href="../../../../../../org/apache/hadoop/hbase/regionserver/wal/SyncFuture.html" title="class in org.apache.hadoop.hbase.regionserver.wal"><span class="typeNameLink">Prev&nbsp;Class</span></a></li>
-<li><a href="../../../../../../org/apache/hadoop/hbase/regionserver/wal/WALActionsListener.Base.html" title="class in org.apache.hadoop.hbase.regionserver.wal"><span class="typeNameLink">Next&nbsp;Class</span></a></li>
+<li><a href="../../../../../../org/apache/hadoop/hbase/regionserver/wal/WALCellCodec.html" title="class in org.apache.hadoop.hbase.regionserver.wal"><span class="typeNameLink">Next&nbsp;Class</span></a></li>
 </ul>
 <ul class="navList">
 <li><a href="../../../../../../index.html?org/apache/hadoop/hbase/regionserver/wal/WALActionsListener.html" target="_top">Frames</a></li>
@@ -74,7 +74,7 @@ var activeTableTab = "activeTableTab";
 <div>
 <ul class="subNavList">
 <li>Summary:&nbsp;</li>
-<li><a href="#nested.class.summary">Nested</a>&nbsp;|&nbsp;</li>
+<li>Nested&nbsp;|&nbsp;</li>
 <li>Field&nbsp;|&nbsp;</li>
 <li>Constr&nbsp;|&nbsp;</li>
 <li><a href="#method.summary">Method</a></li>
@@ -101,12 +101,12 @@ var activeTableTab = "activeTableTab";
 <li class="blockList">
 <dl>
 <dt>All Known Implementing Classes:</dt>
-<dd><a href="../../../../../../org/apache/hadoop/hbase/regionserver/wal/MetricsWAL.html" title="class in org.apache.hadoop.hbase.regionserver.wal">MetricsWAL</a>, <a href="../../../../../../org/apache/hadoop/hbase/replication/regionserver/Replication.html" title="class in org.apache.hadoop.hbase.replication.regionserver">Replication</a>, <a href="../../../../../../org/apache/hadoop/hbase/regionserver/wal/WALActionsListener.Base.html" title="class in org.apache.hadoop.hbase.regionserver.wal">WALActionsListener.Base</a></dd>
+<dd><a href="../../../../../../org/apache/hadoop/hbase/regionserver/wal/MetricsWAL.html" title="class in org.apache.hadoop.hbase.regionserver.wal">MetricsWAL</a>, <a href="../../../../../../org/apache/hadoop/hbase/replication/regionserver/Replication.html" title="class in org.apache.hadoop.hbase.replication.regionserver">Replication</a></dd>
 </dl>
 <hr>
 <br>
 <pre>@InterfaceAudience.Private
-public interface <a href="../../../../../../src-html/org/apache/hadoop/hbase/regionserver/wal/WALActionsListener.html#line.35">WALActionsListener</a></pre>
+public interface <a href="../../../../../../src-html/org/apache/hadoop/hbase/regionserver/wal/WALActionsListener.html#line.33">WALActionsListener</a></pre>
 <div class="block">Get notification of WAL events. The invocations are inline
  so make sure your implementation is fast else you'll slow hbase.</div>
 </li>
@@ -115,25 +115,6 @@ public interface <a href="../../../../../../src-html/org/apache/hadoop/hbase/reg
 <div class="summary">
 <ul class="blockList">
 <li class="blockList">
-<!-- ======== NESTED CLASS SUMMARY ======== -->
-<ul class="blockList">
-<li class="blockList"><a name="nested.class.summary">
-<!--   -->
-</a>
-<h3>Nested Class Summary</h3>
-<table class="memberSummary" border="0" cellpadding="3" cellspacing="0" summary="Nested Class Summary table, listing nested classes, and an explanation">
-<caption><span>Nested Classes</span><span class="tabEnd">&nbsp;</span></caption>
-<tr>
-<th class="colFirst" scope="col">Modifier and Type</th>
-<th class="colLast" scope="col">Interface and Description</th>
-</tr>
-<tr class="altColor">
-<td class="colFirst"><code>static class&nbsp;</code></td>
-<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/regionserver/wal/WALActionsListener.Base.html" title="class in org.apache.hadoop.hbase.regionserver.wal">WALActionsListener.Base</a></span></code>&nbsp;</td>
-</tr>
-</table>
-</li>
-</ul>
 <!-- ========== METHOD SUMMARY =========== -->
 <ul class="blockList">
 <li class="blockList"><a name="method.summary">
@@ -141,25 +122,25 @@ public interface <a href="../../../../../../src-html/org/apache/hadoop/hbase/reg
 </a>
 <h3>Method Summary</h3>
 <table class="memberSummary" border="0" cellpadding="3" cellspacing="0" summary="Method Summary table, listing methods, and an explanation">
-<caption><span id="t0" class="activeTableTab"><span>All Methods</span><span class="tabEnd">&nbsp;</span></span><span id="t2" class="tableTab"><span><a href="javascript:show(2);">Instance Methods</a></span><span class="tabEnd">&nbsp;</span></span><span id="t3" class="tableTab"><span><a href="javascript:show(4);">Abstract Methods</a></span><span class="tabEnd">&nbsp;</span></span></caption>
+<caption><span id="t0" class="activeTableTab"><span>All Methods</span><span class="tabEnd">&nbsp;</span></span><span id="t2" class="tableTab"><span><a href="javascript:show(2);">Instance Methods</a></span><span class="tabEnd">&nbsp;</span></span><span id="t5" class="tableTab"><span><a href="javascript:show(16);">Default Methods</a></span><span class="tabEnd">&nbsp;</span></span></caption>
 <tr>
 <th class="colFirst" scope="col">Modifier and Type</th>
 <th class="colLast" scope="col">Method and Description</th>
 </tr>
 <tr id="i0" class="altColor">
-<td class="colFirst"><code>void</code></td>
+<td class="colFirst"><code>default void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/regionserver/wal/WALActionsListener.html#logCloseRequested--">logCloseRequested</a></span>()</code>
 <div class="block">The WAL is about to close.</div>
 </td>
 </tr>
 <tr id="i1" class="rowColor">
-<td class="colFirst"><code>void</code></td>
+<td class="colFirst"><code>default void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/regionserver/wal/WALActionsListener.html#logRollRequested-boolean-">logRollRequested</a></span>(boolean&nbsp;tooFewReplicas)</code>
 <div class="block">A request was made that the WAL be rolled.</div>
 </td>
 </tr>
 <tr id="i2" class="altColor">
-<td class="colFirst"><code>void</code></td>
+<td class="colFirst"><code>default void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/regionserver/wal/WALActionsListener.html#postAppend-long-long-org.apache.hadoop.hbase.wal.WALKey-org.apache.hadoop.hbase.wal.WALEdit-">postAppend</a></span>(long&nbsp;entryLen,
           long&nbsp;elapsedTimeMillis,
           <a href="../../../../../../org/apache/hadoop/hbase/wal/WALKey.html" title="class in org.apache.hadoop.hbase.wal">WALKey</a>&nbsp;logKey,
@@ -168,50 +149,50 @@ public interface <a href="../../../../../../src-html/org/apache/hadoop/hbase/reg
 </td>
 </tr>
 <tr id="i3" class="rowColor">
-<td class="colFirst"><code>void</code></td>
+<td class="colFirst"><code>default void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/regionserver/wal/WALActionsListener.html#postLogArchive-org.apache.hadoop.fs.Path-org.apache.hadoop.fs.Path-">postLogArchive</a></span>(org.apache.hadoop.fs.Path&nbsp;oldPath,
               org.apache.hadoop.fs.Path&nbsp;newPath)</code>
 <div class="block">The WAL has been archived.</div>
 </td>
 </tr>
 <tr id="i4" class="altColor">
-<td class="colFirst"><code>void</code></td>
+<td class="colFirst"><code>default void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/regionserver/wal/WALActionsListener.html#postLogRoll-org.apache.hadoop.fs.Path-org.apache.hadoop.fs.Path-">postLogRoll</a></span>(org.apache.hadoop.fs.Path&nbsp;oldPath,
            org.apache.hadoop.fs.Path&nbsp;newPath)</code>
 <div class="block">The WAL has been rolled.</div>
 </td>
 </tr>
 <tr id="i5" class="rowColor">
-<td class="colFirst"><code>void</code></td>
+<td class="colFirst"><code>default void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/regionserver/wal/WALActionsListener.html#postSync-long-int-">postSync</a></span>(long&nbsp;timeInNanos,
         int&nbsp;handlerSyncs)</code>
 <div class="block">For notification post writer sync.</div>
 </td>
 </tr>
 <tr id="i6" class="altColor">
-<td class="colFirst"><code>void</code></td>
+<td class="colFirst"><code>default void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/regionserver/wal/WALActionsListener.html#preLogArchive-org.apache.hadoop.fs.Path-org.apache.hadoop.fs.Path-">preLogArchive</a></span>(org.apache.hadoop.fs.Path&nbsp;oldPath,
              org.apache.hadoop.fs.Path&nbsp;newPath)</code>
 <div class="block">The WAL is going to be archived.</div>
 </td>
 </tr>
 <tr id="i7" class="rowColor">
-<td class="colFirst"><code>void</code></td>
+<td class="colFirst"><code>default void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/regionserver/wal/WALActionsListener.html#preLogRoll-org.apache.hadoop.fs.Path-org.apache.hadoop.fs.Path-">preLogRoll</a></span>(org.apache.hadoop.fs.Path&nbsp;oldPath,
           org.apache.hadoop.fs.Path&nbsp;newPath)</code>
 <div class="block">The WAL is going to be rolled.</div>
 </td>
 </tr>
 <tr id="i8" class="altColor">
-<td class="colFirst"><code>void</code></td>
-<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/regionserver/wal/WALActionsListener.html#visitLogEntryBeforeWrite-org.apache.hadoop.hbase.HRegionInfo-org.apache.hadoop.hbase.wal.WALKey-org.apache.hadoop.hbase.wal.WALEdit-">visitLogEntryBeforeWrite</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/HRegionInfo.html" title="class in org.apache.hadoop.hbase">HRegionInfo</a>&nbsp;info,
+<td class="colFirst"><code>default void</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/regionserver/wal/WALActionsListener.html#visitLogEntryBeforeWrite-org.apache.hadoop.hbase.client.RegionInfo-org.apache.hadoop.hbase.wal.WALKey-org.apache.hadoop.hbase.wal.WALEdit-">visitLogEntryBeforeWrite</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/client/RegionInfo.html" title="interface in org.apache.hadoop.hbase.client">RegionInfo</a>&nbsp;info,
                         <a href="../../../../../../org/apache/hadoop/hbase/wal/WALKey.html" title="class in org.apache.hadoop.hbase.wal">WALKey</a>&nbsp;logKey,
                         <a href="../../../../../../org/apache/hadoop/hbase/wal/WALEdit.html" title="class in org.apache.hadoop.hbase.wal">WALEdit</a>&nbsp;logEdit)</code>
 <div class="block">Called before each write.</div>
 </td>
 </tr>
 <tr id="i9" class="rowColor">
-<td class="colFirst"><code>void</code></td>
+<td class="colFirst"><code>default void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/regionserver/wal/WALActionsListener.html#visitLogEntryBeforeWrite-org.apache.hadoop.hbase.wal.WALKey-org.apache.hadoop.hbase.wal.WALEdit-">visitLogEntryBeforeWrite</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/wal/WALKey.html" title="class in org.apache.hadoop.hbase.wal">WALKey</a>&nbsp;logKey,
                         <a href="../../../../../../org/apache/hadoop/hbase/wal/WALEdit.html" title="class in org.apache.hadoop.hbase.wal">WALEdit</a>&nbsp;logEdit)</code>&nbsp;</td>
 </tr>
@@ -236,9 +217,9 @@ public interface <a href="../../../../../../src-html/org/apache/hadoop/hbase/reg
 <ul class="blockList">
 <li class="blockList">
 <h4>preLogRoll</h4>
-<pre>void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/regionserver/wal/WALActionsListener.html#line.43">preLogRoll</a>(org.apache.hadoop.fs.Path&nbsp;oldPath,
-                org.apache.hadoop.fs.Path&nbsp;newPath)
-         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>
+<pre>default&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/regionserver/wal/WALActionsListener.html#line.41">preLogRoll</a>(org.apache.hadoop.fs.Path&nbsp;oldPath,
+                        org.apache.hadoop.fs.Path&nbsp;newPath)
+                 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">The WAL is going to be rolled. The oldPath can be null if this is
  the first log file from the regionserver.</div>
 <dl>
@@ -256,9 +237,9 @@ public interface <a href="../../../../../../src-html/org/apache/hadoop/hbase/reg
 <ul class="blockList">
 <li class="blockList">
 <h4>postLogRoll</h4>
-<pre>void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/regionserver/wal/WALActionsListener.html#line.51">postLogRoll</a>(org.apache.hadoop.fs.Path&nbsp;oldPath,
-                 org.apache.hadoop.fs.Path&nbsp;newPath)
-          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>
+<pre>default&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/regionserver/wal/WALActionsListener.html#line.49">postLogRoll</a>(org.apache.hadoop.fs.Path&nbsp;oldPath,
+                         org.apache.hadoop.fs.Path&nbsp;newPath)
+                  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">The WAL has been rolled. The oldPath can be null if this is
  the first log file from the regionserver.</div>
 <dl>
@@ -276,9 +257,9 @@ public interface <a href="../../../../../../src-html/org/apache/hadoop/hbase/reg
 <ul class="blockList">
 <li class="blockList">
 <h4>preLogArchive</h4>
-<pre>void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/regionserver/wal/WALActionsListener.html#line.58">preLogArchive</a>(org.apache.hadoop.fs.Path&nbsp;oldPath,
-                   org.apache.hadoop.fs.Path&nbsp;newPath)
-            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>
+<pre>default&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/regionserver/wal/WALActionsListener.html#line.56">preLogArchive</a>(org.apache.hadoop.fs.Path&nbsp;oldPath,
+                           org.apache.hadoop.fs.Path&nbsp;newPath)
+                    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">The WAL is going to be archived.</div>
 <dl>
 <dt><span class="paramLabel">Parameters:</span></dt>
@@ -295,9 +276,9 @@ public interface <a href="../../../../../../src-html/org/apache/hadoop/hbase/reg
 <ul class="blockList">
 <li class="blockList">
 <h4>postLogArchive</h4>
-<pre>void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/regionserver/wal/WALActionsListener.html#line.65">postLogArchive</a>(org.apache.hadoop.fs.Path&nbsp;oldPath,
-                    org.apache.hadoop.fs.Path&nbsp;newPath)
-             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>
+<pre>default&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/regionserver/wal/WALActionsListener.html#line.63">postLogArchive</a>(org.apache.hadoop.fs.Path&nbsp;oldPath,
+                            org.apache.hadoop.fs.Path&nbsp;newPath)
+                     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">The WAL has been archived.</div>
 <dl>
 <dt><span class="paramLabel">Parameters:</span></dt>
@@ -314,7 +295,7 @@ public interface <a href="../../../../../../src-html/org/apache/hadoop/hbase/reg
 <ul class="blockList">
 <li class="blockList">
 <h4>logRollRequested</h4>
-<pre>void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/regionserver/wal/WALActionsListener.html#line.70">logRollRequested</a>(boolean&nbsp;tooFewReplicas)</pre>
+<pre>default&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/regionserver/wal/WALActionsListener.html#line.68">logRollRequested</a>(boolean&nbsp;tooFewReplicas)</pre>
 <div class="block">A request was made that the WAL be rolled.</div>
 </li>
 </ul>
@@ -324,19 +305,19 @@ public interface <a href="../../../../../../src-html/org/apache/hadoop/hbase/reg
 <ul class="blockList">
 <li class="blockList">
 <h4>logCloseRequested</h4>
-<pre>void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/regionserver/wal/WALActionsListener.html#line.75">logCloseRequested</a>()</pre>
+<pre>default&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/regionserver/wal/WALActionsListener.html#line.73">logCloseRequested</a>()</pre>
 <div class="block">The WAL is about to close.</div>
 </li>
 </ul>
-<a name="visitLogEntryBeforeWrite-org.apache.hadoop.hbase.HRegionInfo-org.apache.hadoop.hbase.wal.WALKey-org.apache.hadoop.hbase.wal.WALEdit-">
+<a name="visitLogEntryBeforeWrite-org.apache.hadoop.hbase.client.RegionInfo-org.apache.hadoop.hbase.wal.WALKey-org.apache.hadoop.hbase.wal.WALEdit-">
 <!--   -->
 </a>
 <ul class="blockList">
 <li class="blockList">
 <h4>visitLogEntryBeforeWrite</h4>
-<pre>void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/regionserver/wal/WALActionsListener.html#line.83">visitLogEntryBeforeWrite</a>(<a href="../../../../../../org/apache/hadoop/hbase/HRegionInfo.html" title="class in org.apache.hadoop.hbase">HRegionInfo</a>&nbsp;info,
-                              <a href="../../../../../../org/apache/hadoop/hbase/wal/WALKey.html" title="class in org.apache.hadoop.hbase.wal">WALKey</a>&nbsp;logKey,
-                              <a href="../../../../../../org/apache/hadoop/hbase/wal/WALEdit.html" title="class in org.apache.hadoop.hbase.wal">WALEdit</a>&nbsp;logEdit)</pre>
+<pre>default&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/regionserver/wal/WALActionsListener.html#line.81">visitLogEntryBeforeWrite</a>(<a href="../../../../../../org/apache/hadoop/hbase/client/RegionInfo.html" title="interface in org.apache.hadoop.hbase.client">RegionInfo</a>&nbsp;info,
+                                      <a href="../../../../../../org/apache/hadoop/hbase/wal/WALKey.html" title="class in org.apache.hadoop.hbase.wal">WALKey</a>&nbsp;logKey,
+                                      <a href="../../../../../../org/apache/hadoop/hbase/wal/WALEdit.html" title="class in org.apache.hadoop.hbase.wal">WALEdit</a>&nbsp;logEdit)</pre>
 <div class="block">Called before each write.</div>
 <dl>
 <dt><span class="paramLabel">Parameters:</span></dt>
@@ -352,14 +333,14 @@ public interface <a href="../../../../../../src-html/org/apache/hadoop/hbase/reg
 <ul class="blockList">
 <li class="blockList">
 <h4>visitLogEntryBeforeWrite</h4>
-<pre>void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/regionserver/wal/WALActionsListener.html#line.95">visitLogEntryBeforeWrite</a>(<a href="../../../../../../org/apache/hadoop/hbase/wal/WALKey.html" title="class in org.apache.hadoop.hbase.wal">WALKey</a>&nbsp;logKey,
-                              <a href="../../../../../../org/apache/hadoop/hbase/wal/WALEdit.html" title="class in org.apache.hadoop.hbase.wal">WALEdit</a>&nbsp;logEdit)
-                       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>
+<pre>default&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/regionserver/wal/WALActionsListener.html#line.93">visitLogEntryBeforeWrite</a>(<a href="../../../../../../org/apache/hadoop/hbase/wal/WALKey.html" title="class in org.apache.hadoop.hbase.wal">WALKey</a>&nbsp;logKey,
+                                      <a href="../../../../../../org/apache/hadoop/hbase/wal/WALEdit.html" title="class in org.apache.hadoop.hbase.wal">WALEdit</a>&nbsp;logEdit)
+                               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>
 <dl>
 <dt><span class="paramLabel">Parameters:</span></dt>
 <dd><code>logKey</code> - </dd>
 <dd><code>logEdit</code> - TODO: Retire this in favor of
-          <a href="../../../../../../org/apache/hadoop/hbase/regionserver/wal/WALActionsListener.html#visitLogEntryBeforeWrite-org.apache.hadoop.hbase.HRegionInfo-org.apache.hadoop.hbase.wal.WALKey-org.apache.hadoop.hbase.wal.WALEdit-"><code>visitLogEntryBeforeWrite(HRegionInfo, WALKey, WALEdit)</code></a> It only exists to get
+          <a href="../../../../../../org/apache/hadoop/hbase/regionserver/wal/WALActionsListener.html#visitLogEntryBeforeWrite-org.apache.hadoop.hbase.client.RegionInfo-org.apache.hadoop.hbase.wal.WALKey-org.apache.hadoop.hbase.wal.WALEdit-"><code>visitLogEntryBeforeWrite(RegionInfo, WALKey, WALEdit)</code></a> It only exists to get
           scope when replicating. Scope should be in the WALKey and not need us passing in a
           <code>htd</code>.</dd>
 <dt><span class="throwsLabel">Throws:</span></dt>
@@ -373,11 +354,11 @@ public interface <a href="../../../../../../src-html/org/apache/hadoop/hbase/reg
 <ul class="blockList">
 <li class="blockList">
 <h4>postAppend</h4>
-<pre>void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/regionserver/wal/WALActionsListener.html#line.106">postAppend</a>(long&nbsp;entryLen,
-                long&nbsp;elapsedTimeMillis,
-                <a href="../../../../../../org/apache/hadoop/hbase/wal/WALKey.html" title="class in org.apache.hadoop.hbase.wal">WALKey</a>&nbsp;logKey,
-                <a href="../../../../../../org/apache/hadoop/hbase/wal/WALEdit.html" title="class in org.apache.hadoop.hbase.wal">WALEdit</a>&nbsp;logEdit)
-         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>
+<pre>default&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/regionserver/wal/WALActionsListener.html#line.104">postAppend</a>(long&nbsp;entryLen,
+                        long&nbsp;elapsedTimeMillis,
+                        <a href="../../../../../../org/apache/hadoop/hbase/wal/WALKey.html" title="class in org.apache.hadoop.hbase.wal">WALKey</a>&nbsp;logKey,
+                        <a href="../../../../../../org/apache/hadoop/hbase/wal/WALEdit.html" title="class in org.apache.hadoop.hbase.wal">WALEdit</a>&nbsp;logEdit)
+                 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">For notification post append to the writer.  Used by metrics system at least.
  TODO: Combine this with above.</div>
 <dl>
@@ -397,8 +378,8 @@ public interface <a href="../../../../../../src-html/org/apache/hadoop/hbase/reg
 <ul class="blockListLast">
 <li class="blockList">
 <h4>postSync</h4>
-<pre>void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/regionserver/wal/WALActionsListener.html#line.115">postSync</a>(long&nbsp;timeInNanos,
-              int&nbsp;handlerSyncs)</pre>
+<pre>default&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/regionserver/wal/WALActionsListener.html#line.113">postSync</a>(long&nbsp;timeInNanos,
+                      int&nbsp;handlerSyncs)</pre>
 <div class="block">For notification post writer sync.  Used by metrics system at least.</div>
 <dl>
 <dt><span class="paramLabel">Parameters:</span></dt>
@@ -437,7 +418,7 @@ public interface <a href="../../../../../../src-html/org/apache/hadoop/hbase/reg
 <div class="subNav">
 <ul class="navList">
 <li><a href="../../../../../../org/apache/hadoop/hbase/regionserver/wal/SyncFuture.html" title="class in org.apache.hadoop.hbase.regionserver.wal"><span class="typeNameLink">Prev&nbsp;Class</span></a></li>
-<li><a href="../../../../../../org/apache/hadoop/hbase/regionserver/wal/WALActionsListener.Base.html" title="class in org.apache.hadoop.hbase.regionserver.wal"><span class="typeNameLink">Next&nbsp;Class</span></a></li>
+<li><a href="../../../../../../org/apache/hadoop/hbase/regionserver/wal/WALCellCodec.html" title="class in org.apache.hadoop.hbase.regionserver.wal"><span class="typeNameLink">Next&nbsp;Class</span></a></li>
 </ul>
 <ul class="navList">
 <li><a href="../../../../../../index.html?org/apache/hadoop/hbase/regionserver/wal/WALActionsListener.html" target="_top">Frames</a></li>
@@ -461,7 +442,7 @@ public interface <a href="../../../../../../src-html/org/apache/hadoop/hbase/reg
 <div>
 <ul class="subNavList">
 <li>Summary:&nbsp;</li>
-<li><a href="#nested.class.summary">Nested</a>&nbsp;|&nbsp;</li>
+<li>Nested&nbsp;|&nbsp;</li>
 <li>Field&nbsp;|&nbsp;</li>
 <li>Constr&nbsp;|&nbsp;</li>
 <li><a href="#method.summary">Method</a></li>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/c54c242b/devapidocs/org/apache/hadoop/hbase/regionserver/wal/WALCellCodec.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/regionserver/wal/WALCellCodec.html b/devapidocs/org/apache/hadoop/hbase/regionserver/wal/WALCellCodec.html
index b591d1f..d903067 100644
--- a/devapidocs/org/apache/hadoop/hbase/regionserver/wal/WALCellCodec.html
+++ b/devapidocs/org/apache/hadoop/hbase/regionserver/wal/WALCellCodec.html
@@ -49,7 +49,7 @@ var activeTableTab = "activeTableTab";
 </div>
 <div class="subNav">
 <ul class="navList">
-<li><a href="../../../../../../org/apache/hadoop/hbase/regionserver/wal/WALActionsListener.Base.html" title="class in org.apache.hadoop.hbase.regionserver.wal"><span class="typeNameLink">Prev&nbsp;Class</span></a></li>
+<li><a href="../../../../../../org/apache/hadoop/hbase/regionserver/wal/WALActionsListener.html" title="interface in org.apache.hadoop.hbase.regionserver.wal"><span class="typeNameLink">Prev&nbsp;Class</span></a></li>
 <li><a href="../../../../../../org/apache/hadoop/hbase/regionserver/wal/WALCellCodec.BaosAndCompressor.html" title="class in org.apache.hadoop.hbase.regionserver.wal"><span class="typeNameLink">Next&nbsp;Class</span></a></li>
 </ul>
 <ul class="navList">
@@ -550,7 +550,7 @@ implements <a href="../../../../../../org/apache/hadoop/hbase/codec/Codec.html"
 </div>
 <div class="subNav">
 <ul class="navList">
-<li><a href="../../../../../../org/apache/hadoop/hbase/regionserver/wal/WALActionsListener.Base.html" title="class in org.apache.hadoop.hbase.regionserver.wal"><span class="typeNameLink">Prev&nbsp;Class</span></a></li>
+<li><a href="../../../../../../org/apache/hadoop/hbase/regionserver/wal/WALActionsListener.html" title="interface in org.apache.hadoop.hbase.regionserver.wal"><span class="typeNameLink">Prev&nbsp;Class</span></a></li>
 <li><a href="../../../../../../org/apache/hadoop/hbase/regionserver/wal/WALCellCodec.BaosAndCompressor.html" title="class in org.apache.hadoop.hbase.regionserver.wal"><span class="typeNameLink">Next&nbsp;Class</span></a></li>
 </ul>
 <ul class="navList">

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/c54c242b/devapidocs/org/apache/hadoop/hbase/regionserver/wal/class-use/WALActionsListener.Base.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/regionserver/wal/class-use/WALActionsListener.Base.html b/devapidocs/org/apache/hadoop/hbase/regionserver/wal/class-use/WALActionsListener.Base.html
deleted file mode 100644
index 863866e..0000000
--- a/devapidocs/org/apache/hadoop/hbase/regionserver/wal/class-use/WALActionsListener.Base.html
+++ /dev/null
@@ -1,191 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<!-- NewPage -->
-<html lang="en">
-<head>
-<!-- Generated by javadoc -->
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<title>Uses of Class org.apache.hadoop.hbase.regionserver.wal.WALActionsListener.Base (Apache HBase 3.0.0-SNAPSHOT API)</title>
-<link rel="stylesheet" type="text/css" href="../../../../../../../stylesheet.css" title="Style">
-<script type="text/javascript" src="../../../../../../../script.js"></script>
-</head>
-<body>
-<script type="text/javascript"><!--
-    try {
-        if (location.href.indexOf('is-external=true') == -1) {
-            parent.document.title="Uses of Class org.apache.hadoop.hbase.regionserver.wal.WALActionsListener.Base (Apache HBase 3.0.0-SNAPSHOT API)";
-        }
-    }
-    catch(err) {
-    }
-//-->
-</script>
-<noscript>
-<div>JavaScript is disabled on your browser.</div>
-</noscript>
-<!-- ========= START OF TOP NAVBAR ======= -->
-<div class="topNav"><a name="navbar.top">
-<!--   -->
-</a>
-<div class="skipNav"><a href="#skip.navbar.top" title="Skip navigation links">Skip navigation links</a></div>
-<a name="navbar.top.firstrow">
-<!--   -->
-</a>
-<ul class="navList" title="Navigation">
-<li><a href="../../../../../../../overview-summary.html">Overview</a></li>
-<li><a href="../package-summary.html">Package</a></li>
-<li><a href="../../../../../../../org/apache/hadoop/hbase/regionserver/wal/WALActionsListener.Base.html" title="class in org.apache.hadoop.hbase.regionserver.wal">Class</a></li>
-<li class="navBarCell1Rev">Use</li>
-<li><a href="../../../../../../../overview-tree.html">Tree</a></li>
-<li><a href="../../../../../../../deprecated-list.html">Deprecated</a></li>
-<li><a href="../../../../../../../index-all.html">Index</a></li>
-<li><a href="../../../../../../../help-doc.html">Help</a></li>
-</ul>
-</div>
-<div class="subNav">
-<ul class="navList">
-<li>Prev</li>
-<li>Next</li>
-</ul>
-<ul class="navList">
-<li><a href="../../../../../../../index.html?org/apache/hadoop/hbase/regionserver/wal/class-use/WALActionsListener.Base.html" target="_top">Frames</a></li>
-<li><a href="WALActionsListener.Base.html" target="_top">No&nbsp;Frames</a></li>
-</ul>
-<ul class="navList" id="allclasses_navbar_top">
-<li><a href="../../../../../../../allclasses-noframe.html">All&nbsp;Classes</a></li>
-</ul>
-<div>
-<script type="text/javascript"><!--
-  allClassesLink = document.getElementById("allclasses_navbar_top");
-  if(window==top) {
-    allClassesLink.style.display = "block";
-  }
-  else {
-    allClassesLink.style.display = "none";
-  }
-  //-->
-</script>
-</div>
-<a name="skip.navbar.top">
-<!--   -->
-</a></div>
-<!-- ========= END OF TOP NAVBAR ========= -->
-<div class="header">
-<h2 title="Uses of Class org.apache.hadoop.hbase.regionserver.wal.WALActionsListener.Base" class="title">Uses of Class<br>org.apache.hadoop.hbase.regionserver.wal.WALActionsListener.Base</h2>
-</div>
-<div class="classUseContainer">
-<ul class="blockList">
-<li class="blockList">
-<table class="useSummary" border="0" cellpadding="3" cellspacing="0" summary="Use table, listing packages, and an explanation">
-<caption><span>Packages that use <a href="../../../../../../../org/apache/hadoop/hbase/regionserver/wal/WALActionsListener.Base.html" title="class in org.apache.hadoop.hbase.regionserver.wal">WALActionsListener.Base</a></span><span class="tabEnd">&nbsp;</span></caption>
-<tr>
-<th class="colFirst" scope="col">Package</th>
-<th class="colLast" scope="col">Description</th>
-</tr>
-<tbody>
-<tr class="altColor">
-<td class="colFirst"><a href="#org.apache.hadoop.hbase.regionserver.wal">org.apache.hadoop.hbase.regionserver.wal</a></td>
-<td class="colLast">&nbsp;</td>
-</tr>
-<tr class="rowColor">
-<td class="colFirst"><a href="#org.apache.hadoop.hbase.replication.regionserver">org.apache.hadoop.hbase.replication.regionserver</a></td>
-<td class="colLast">&nbsp;</td>
-</tr>
-</tbody>
-</table>
-</li>
-<li class="blockList">
-<ul class="blockList">
-<li class="blockList"><a name="org.apache.hadoop.hbase.regionserver.wal">
-<!--   -->
-</a>
-<h3>Uses of <a href="../../../../../../../org/apache/hadoop/hbase/regionserver/wal/WALActionsListener.Base.html" title="class in org.apache.hadoop.hbase.regionserver.wal">WALActionsListener.Base</a> in <a href="../../../../../../../org/apache/hadoop/hbase/regionserver/wal/package-summary.html">org.apache.hadoop.hbase.regionserver.wal</a></h3>
-<table class="useSummary" border="0" cellpadding="3" cellspacing="0" summary="Use table, listing subclasses, and an explanation">
-<caption><span>Subclasses of <a href="../../../../../../../org/apache/hadoop/hbase/regionserver/wal/WALActionsListener.Base.html" title="class in org.apache.hadoop.hbase.regionserver.wal">WALActionsListener.Base</a> in <a href="../../../../../../../org/apache/hadoop/hbase/regionserver/wal/package-summary.html">org.apache.hadoop.hbase.regionserver.wal</a></span><span class="tabEnd">&nbsp;</span></caption>
-<tr>
-<th class="colFirst" scope="col">Modifier and Type</th>
-<th class="colLast" scope="col">Class and Description</th>
-</tr>
-<tbody>
-<tr class="altColor">
-<td class="colFirst"><code>class&nbsp;</code></td>
-<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../../org/apache/hadoop/hbase/regionserver/wal/MetricsWAL.html" title="class in org.apache.hadoop.hbase.regionserver.wal">MetricsWAL</a></span></code>
-<div class="block">Class used to push numbers about the WAL into the metrics subsystem.</div>
-</td>
-</tr>
-</tbody>
-</table>
-</li>
-<li class="blockList"><a name="org.apache.hadoop.hbase.replication.regionserver">
-<!--   -->
-</a>
-<h3>Uses of <a href="../../../../../../../org/apache/hadoop/hbase/regionserver/wal/WALActionsListener.Base.html" title="class in org.apache.hadoop.hbase.regionserver.wal">WALActionsListener.Base</a> in <a href="../../../../../../../org/apache/hadoop/hbase/replication/regionserver/package-summary.html">org.apache.hadoop.hbase.replication.regionserver</a></h3>
-<table class="useSummary" border="0" cellpadding="3" cellspacing="0" summary="Use table, listing subclasses, and an explanation">
-<caption><span>Subclasses of <a href="../../../../../../../org/apache/hadoop/hbase/regionserver/wal/WALActionsListener.Base.html" title="class in org.apache.hadoop.hbase.regionserver.wal">WALActionsListener.Base</a> in <a href="../../../../../../../org/apache/hadoop/hbase/replication/regionserver/package-summary.html">org.apache.hadoop.hbase.replication.regionserver</a></span><span class="tabEnd">&nbsp;</span></caption>
-<tr>
-<th class="colFirst" scope="col">Modifier and Type</th>
-<th class="colLast" scope="col">Class and Description</th>
-</tr>
-<tbody>
-<tr class="altColor">
-<td class="colFirst"><code>class&nbsp;</code></td>
-<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../../org/apache/hadoop/hbase/replication/regionserver/Replication.html" title="class in org.apache.hadoop.hbase.replication.regionserver">Replication</a></span></code>
-<div class="block">Gateway to Replication.</div>
-</td>
-</tr>
-</tbody>
-</table>
-</li>
-</ul>
-</li>
-</ul>
-</div>
-<!-- ======= START OF BOTTOM NAVBAR ====== -->
-<div class="bottomNav"><a name="navbar.bottom">
-<!--   -->
-</a>
-<div class="skipNav"><a href="#skip.navbar.bottom" title="Skip navigation links">Skip navigation links</a></div>
-<a name="navbar.bottom.firstrow">
-<!--   -->
-</a>
-<ul class="navList" title="Navigation">
-<li><a href="../../../../../../../overview-summary.html">Overview</a></li>
-<li><a href="../package-summary.html">Package</a></li>
-<li><a href="../../../../../../../org/apache/hadoop/hbase/regionserver/wal/WALActionsListener.Base.html" title="class in org.apache.hadoop.hbase.regionserver.wal">Class</a></li>
-<li class="navBarCell1Rev">Use</li>
-<li><a href="../../../../../../../overview-tree.html">Tree</a></li>
-<li><a href="../../../../../../../deprecated-list.html">Deprecated</a></li>
-<li><a href="../../../../../../../index-all.html">Index</a></li>
-<li><a href="../../../../../../../help-doc.html">Help</a></li>
-</ul>
-</div>
-<div class="subNav">
-<ul class="navList">
-<li>Prev</li>
-<li>Next</li>
-</ul>
-<ul class="navList">
-<li><a href="../../../../../../../index.html?org/apache/hadoop/hbase/regionserver/wal/class-use/WALActionsListener.Base.html" target="_top">Frames</a></li>
-<li><a href="WALActionsListener.Base.html" target="_top">No&nbsp;Frames</a></li>
-</ul>
-<ul class="navList" id="allclasses_navbar_bottom">
-<li><a href="../../../../../../../allclasses-noframe.html">All&nbsp;Classes</a></li>
-</ul>
-<div>
-<script type="text/javascript"><!--
-  allClassesLink = document.getElementById("allclasses_navbar_bottom");
-  if(window==top) {
-    allClassesLink.style.display = "block";
-  }
-  else {
-    allClassesLink.style.display = "none";
-  }
-  //-->
-</script>
-</div>
-<a name="skip.navbar.bottom">
-<!--   -->
-</a></div>
-<!-- ======== END OF BOTTOM NAVBAR ======= -->
-<p class="legalCopy"><small>Copyright &#169; 2007&#x2013;2017 <a href="https://www.apache.org/">The Apache Software Foundation</a>. All rights reserved.</small></p>
-</body>
-</html>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/c54c242b/devapidocs/org/apache/hadoop/hbase/regionserver/wal/class-use/WALActionsListener.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/regionserver/wal/class-use/WALActionsListener.html b/devapidocs/org/apache/hadoop/hbase/regionserver/wal/class-use/WALActionsListener.html
index 1f976b0..1cf5f7e 100644
--- a/devapidocs/org/apache/hadoop/hbase/regionserver/wal/class-use/WALActionsListener.html
+++ b/devapidocs/org/apache/hadoop/hbase/regionserver/wal/class-use/WALActionsListener.html
@@ -140,10 +140,6 @@
 <div class="block">Class used to push numbers about the WAL into the metrics subsystem.</div>
 </td>
 </tr>
-<tr class="rowColor">
-<td class="colFirst"><code>static class&nbsp;</code></td>
-<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../../org/apache/hadoop/hbase/regionserver/wal/WALActionsListener.Base.html" title="class in org.apache.hadoop.hbase.regionserver.wal">WALActionsListener.Base</a></span></code>&nbsp;</td>
-</tr>
 </tbody>
 </table>
 <table class="useSummary" border="0" cellpadding="3" cellspacing="0" summary="Use table, listing fields, and an explanation">

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/c54c242b/devapidocs/org/apache/hadoop/hbase/regionserver/wal/package-frame.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/regionserver/wal/package-frame.html b/devapidocs/org/apache/hadoop/hbase/regionserver/wal/package-frame.html
index 8f6bef9..a236428 100644
--- a/devapidocs/org/apache/hadoop/hbase/regionserver/wal/package-frame.html
+++ b/devapidocs/org/apache/hadoop/hbase/regionserver/wal/package-frame.html
@@ -47,7 +47,6 @@
 <li><a href="SecureWALCellCodec.EncryptedKvEncoder.html" title="class in org.apache.hadoop.hbase.regionserver.wal" target="classFrame">SecureWALCellCodec.EncryptedKvEncoder</a></li>
 <li><a href="SequenceIdAccounting.html" title="class in org.apache.hadoop.hbase.regionserver.wal" target="classFrame">SequenceIdAccounting</a></li>
 <li><a href="SyncFuture.html" title="class in org.apache.hadoop.hbase.regionserver.wal" target="classFrame">SyncFuture</a></li>
-<li><a href="WALActionsListener.Base.html" title="class in org.apache.hadoop.hbase.regionserver.wal" target="classFrame">WALActionsListener.Base</a></li>
 <li><a href="WALCellCodec.html" title="class in org.apache.hadoop.hbase.regionserver.wal" target="classFrame">WALCellCodec</a></li>
 <li><a href="WALCellCodec.BaosAndCompressor.html" title="class in org.apache.hadoop.hbase.regionserver.wal" target="classFrame">WALCellCodec.BaosAndCompressor</a></li>
 <li><a href="WALCellCodec.CompressedKvDecoder.html" title="class in org.apache.hadoop.hbase.regionserver.wal" target="classFrame">WALCellCodec.CompressedKvDecoder</a></li>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/c54c242b/devapidocs/org/apache/hadoop/hbase/regionserver/wal/package-summary.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/regionserver/wal/package-summary.html b/devapidocs/org/apache/hadoop/hbase/regionserver/wal/package-summary.html
index d6af705..bc0a5e5 100644
--- a/devapidocs/org/apache/hadoop/hbase/regionserver/wal/package-summary.html
+++ b/devapidocs/org/apache/hadoop/hbase/regionserver/wal/package-summary.html
@@ -259,45 +259,41 @@
 </td>
 </tr>
 <tr class="rowColor">
-<td class="colFirst"><a href="../../../../../../org/apache/hadoop/hbase/regionserver/wal/WALActionsListener.Base.html" title="class in org.apache.hadoop.hbase.regionserver.wal">WALActionsListener.Base</a></td>
-<td class="colLast">&nbsp;</td>
-</tr>
-<tr class="altColor">
 <td class="colFirst"><a href="../../../../../../org/apache/hadoop/hbase/regionserver/wal/WALCellCodec.html" title="class in org.apache.hadoop.hbase.regionserver.wal">WALCellCodec</a></td>
 <td class="colLast">
 <div class="block">Compression in this class is lifted off Compressor/KeyValueCompression.</div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a href="../../../../../../org/apache/hadoop/hbase/regionserver/wal/WALCellCodec.BaosAndCompressor.html" title="class in org.apache.hadoop.hbase.regionserver.wal">WALCellCodec.BaosAndCompressor</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a href="../../../../../../org/apache/hadoop/hbase/regionserver/wal/WALCellCodec.CompressedKvDecoder.html" title="class in org.apache.hadoop.hbase.regionserver.wal">WALCellCodec.CompressedKvDecoder</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a href="../../../../../../org/apache/hadoop/hbase/regionserver/wal/WALCellCodec.CompressedKvEncoder.html" title="class in org.apache.hadoop.hbase.regionserver.wal">WALCellCodec.CompressedKvEncoder</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a href="../../../../../../org/apache/hadoop/hbase/regionserver/wal/WALCellCodec.EnsureKvEncoder.html" title="class in org.apache.hadoop.hbase.regionserver.wal">WALCellCodec.EnsureKvEncoder</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a href="../../../../../../org/apache/hadoop/hbase/regionserver/wal/WALCoprocessorHost.html" title="class in org.apache.hadoop.hbase.regionserver.wal">WALCoprocessorHost</a></td>
 <td class="colLast">
 <div class="block">Implements the coprocessor environment and runtime support for coprocessors
  loaded within a <a href="../../../../../../org/apache/hadoop/hbase/wal/WAL.html" title="interface in org.apache.hadoop.hbase.wal"><code>WAL</code></a>.</div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a href="../../../../../../org/apache/hadoop/hbase/regionserver/wal/WALCoprocessorHost.WALEnvironment.html" title="class in org.apache.hadoop.hbase.regionserver.wal">WALCoprocessorHost.WALEnvironment</a></td>
 <td class="colLast">
 <div class="block">Encapsulation of the environment of each coprocessor</div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a href="../../../../../../org/apache/hadoop/hbase/regionserver/wal/WALUtil.html" title="class in org.apache.hadoop.hbase.regionserver.wal">WALUtil</a></td>
 <td class="colLast">
 <div class="block">Helper methods to ease Region Server integration with the Write Ahead Log (WAL).</div>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/c54c242b/devapidocs/org/apache/hadoop/hbase/regionserver/wal/package-tree.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/regionserver/wal/package-tree.html b/devapidocs/org/apache/hadoop/hbase/regionserver/wal/package-tree.html
index 9af5695..c2003a1 100644
--- a/devapidocs/org/apache/hadoop/hbase/regionserver/wal/package-tree.html
+++ b/devapidocs/org/apache/hadoop/hbase/regionserver/wal/package-tree.html
@@ -148,6 +148,7 @@
 <li type="circle">org.apache.hadoop.hbase.regionserver.wal.<a href="../../../../../../org/apache/hadoop/hbase/regionserver/wal/FSHLog.SyncRunner.html" title="class in org.apache.hadoop.hbase.regionserver.wal"><span class="typeNameLink">FSHLog.SyncRunner</span></a></li>
 </ul>
 </li>
+<li type="circle">org.apache.hadoop.hbase.regionserver.wal.<a href="../../../../../../org/apache/hadoop/hbase/regionserver/wal/MetricsWAL.html" title="class in org.apache.hadoop.hbase.regionserver.wal"><span class="typeNameLink">MetricsWAL</span></a> (implements org.apache.hadoop.hbase.regionserver.wal.<a href="../../../../../../org/apache/hadoop/hbase/regionserver/wal/WALActionsListener.html" title="interface in org.apache.hadoop.hbase.regionserver.wal">WALActionsListener</a>)</li>
 <li type="circle">org.apache.hadoop.hbase.coprocessor.<a href="../../../../../../org/apache/hadoop/hbase/coprocessor/ObserverContextImpl.html" title="class in org.apache.hadoop.hbase.coprocessor"><span class="typeNameLink">ObserverContextImpl</span></a>&lt;E&gt; (implements org.apache.hadoop.hbase.coprocessor.<a href="../../../../../../org/apache/hadoop/hbase/coprocessor/ObserverContext.html" title="interface in org.apache.hadoop.hbase.coprocessor">ObserverContext</a>&lt;E&gt;)
 <ul>
 <li type="circle">org.apache.hadoop.hbase.coprocessor.<a href="../../../../../../org/apache/hadoop/hbase/coprocessor/CoprocessorHost.ObserverOperation.html" title="class in org.apache.hadoop.hbase.coprocessor"><span class="typeNameLink">CoprocessorHost.ObserverOperation</span></a>&lt;O&gt;
@@ -211,11 +212,6 @@
 <li type="circle">org.apache.hadoop.hbase.regionserver.wal.<a href="../../../../../../org/apache/hadoop/hbase/regionserver/wal/FSWALEntry.html" title="class in org.apache.hadoop.hbase.regionserver.wal"><span class="typeNameLink">FSWALEntry</span></a></li>
 </ul>
 </li>
-<li type="circle">org.apache.hadoop.hbase.regionserver.wal.<a href="../../../../../../org/apache/hadoop/hbase/regionserver/wal/WALActionsListener.Base.html" title="class in org.apache.hadoop.hbase.regionserver.wal"><span class="typeNameLink">WALActionsListener.Base</span></a> (implements org.apache.hadoop.hbase.regionserver.wal.<a href="../../../../../../org/apache/hadoop/hbase/regionserver/wal/WALActionsListener.html" title="interface in org.apache.hadoop.hbase.regionserver.wal">WALActionsListener</a>)
-<ul>
-<li type="circle">org.apache.hadoop.hbase.regionserver.wal.<a href="../../../../../../org/apache/hadoop/hbase/regionserver/wal/MetricsWAL.html" title="class in org.apache.hadoop.hbase.regionserver.wal"><span class="typeNameLink">MetricsWAL</span></a></li>
-</ul>
-</li>
 <li type="circle">org.apache.hadoop.hbase.regionserver.wal.<a href="../../../../../../org/apache/hadoop/hbase/regionserver/wal/WALCellCodec.html" title="class in org.apache.hadoop.hbase.regionserver.wal"><span class="typeNameLink">WALCellCodec</span></a> (implements org.apache.hadoop.hbase.codec.<a href="../../../../../../org/apache/hadoop/hbase/codec/Codec.html" title="interface in org.apache.hadoop.hbase.codec">Codec</a>)
 <ul>
 <li type="circle">org.apache.hadoop.hbase.regionserver.wal.<a href="../../../../../../org/apache/hadoop/hbase/regionserver/wal/SecureWALCellCodec.html" title="class in org.apache.hadoop.hbase.regionserver.wal"><span class="typeNameLink">SecureWALCellCodec</span></a></li>
@@ -242,8 +238,8 @@
 <ul>
 <li type="circle">java.lang.<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Enum.html?is-external=true" title="class or interface in java.lang"><span class="typeNameLink">Enum</span></a>&lt;E&gt; (implements java.lang.<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Comparable.html?is-external=true" title="class or interface in java.lang">Comparable</a>&lt;T&gt;, java.io.<a href="http://docs.oracle.com/javase/8/docs/api/java/io/Serializable.html?is-external=true" title="class or interface in java.io">Serializable</a>)
 <ul>
-<li type="circle">org.apache.hadoop.hbase.regionserver.wal.<a href="../../../../../../org/apache/hadoop/hbase/regionserver/wal/ProtobufLogReader.WALHdrResult.html" title="enum in org.apache.hadoop.hbase.regionserver.wal"><span class="typeNameLink">ProtobufLogReader.WALHdrResult</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.regionserver.wal.<a href="../../../../../../org/apache/hadoop/hbase/regionserver/wal/RingBufferTruck.Type.html" title="enum in org.apache.hadoop.hbase.regionserver.wal"><span class="typeNameLink">RingBufferTruck.Type</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.regionserver.wal.<a href="../../../../../../org/apache/hadoop/hbase/regionserver/wal/ProtobufLogReader.WALHdrResult.html" title="enum in org.apache.hadoop.hbase.regionserver.wal"><span class="typeNameLink">ProtobufLogReader.WALHdrResult</span></a></li>
 </ul>
 </li>
 </ul>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/c54c242b/devapidocs/org/apache/hadoop/hbase/regionserver/wal/package-use.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/regionserver/wal/package-use.html b/devapidocs/org/apache/hadoop/hbase/regionserver/wal/package-use.html
index 28ad4da..cb6385a 100644
--- a/devapidocs/org/apache/hadoop/hbase/regionserver/wal/package-use.html
+++ b/devapidocs/org/apache/hadoop/hbase/regionserver/wal/package-use.html
@@ -257,26 +257,23 @@
 </td>
 </tr>
 <tr class="altColor">
-<td class="colOne"><a href="../../../../../../org/apache/hadoop/hbase/regionserver/wal/class-use/WALActionsListener.Base.html#org.apache.hadoop.hbase.regionserver.wal">WALActionsListener.Base</a>&nbsp;</td>
-</tr>
-<tr class="rowColor">
 <td class="colOne"><a href="../../../../../../org/apache/hadoop/hbase/regionserver/wal/class-use/WALCellCodec.html#org.apache.hadoop.hbase.regionserver.wal">WALCellCodec</a>
 <div class="block">Compression in this class is lifted off Compressor/KeyValueCompression.</div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colOne"><a href="../../../../../../org/apache/hadoop/hbase/regionserver/wal/class-use/WALCellCodec.ByteStringCompressor.html#org.apache.hadoop.hbase.regionserver.wal">WALCellCodec.ByteStringCompressor</a>&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colOne"><a href="../../../../../../org/apache/hadoop/hbase/regionserver/wal/class-use/WALCellCodec.ByteStringUncompressor.html#org.apache.hadoop.hbase.regionserver.wal">WALCellCodec.ByteStringUncompressor</a>&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colOne"><a href="../../../../../../org/apache/hadoop/hbase/regionserver/wal/class-use/WALCoprocessorHost.html#org.apache.hadoop.hbase.regionserver.wal">WALCoprocessorHost</a>
 <div class="block">Implements the coprocessor environment and runtime support for coprocessors
  loaded within a <a href="../../../../../../org/apache/hadoop/hbase/wal/WAL.html" title="interface in org.apache.hadoop.hbase.wal"><code>WAL</code></a>.</div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colOne"><a href="../../../../../../org/apache/hadoop/hbase/regionserver/wal/class-use/WALCoprocessorHost.WALEnvironment.html#org.apache.hadoop.hbase.regionserver.wal">WALCoprocessorHost.WALEnvironment</a>
 <div class="block">Encapsulation of the environment of each coprocessor</div>
 </td>
@@ -298,9 +295,6 @@
 <div class="block">Get notification of WAL events.</div>
 </td>
 </tr>
-<tr class="rowColor">
-<td class="colOne"><a href="../../../../../../org/apache/hadoop/hbase/regionserver/wal/class-use/WALActionsListener.Base.html#org.apache.hadoop.hbase.replication.regionserver">WALActionsListener.Base</a>&nbsp;</td>
-</tr>
 </tbody>
 </table>
 </li>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/c54c242b/devapidocs/org/apache/hadoop/hbase/replication/regionserver/Replication.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/replication/regionserver/Replication.html b/devapidocs/org/apache/hadoop/hbase/replication/regionserver/Replication.html
index c144a70..864d033 100644
--- a/devapidocs/org/apache/hadoop/hbase/replication/regionserver/Replication.html
+++ b/devapidocs/org/apache/hadoop/hbase/replication/regionserver/Replication.html
@@ -100,15 +100,10 @@ var activeTableTab = "activeTableTab";
 <li><a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">java.lang.Object</a></li>
 <li>
 <ul class="inheritance">
-<li><a href="../../../../../../org/apache/hadoop/hbase/regionserver/wal/WALActionsListener.Base.html" title="class in org.apache.hadoop.hbase.regionserver.wal">org.apache.hadoop.hbase.regionserver.wal.WALActionsListener.Base</a></li>
-<li>
-<ul class="inheritance">
 <li>org.apache.hadoop.hbase.replication.regionserver.Replication</li>
 </ul>
 </li>
 </ul>
-</li>
-</ul>
 <div class="description">
 <ul class="blockList">
 <li class="blockList">
@@ -120,8 +115,8 @@ var activeTableTab = "activeTableTab";
 <br>
 <pre>@InterfaceAudience.Private
 public class <a href="../../../../../../src-html/org/apache/hadoop/hbase/replication/regionserver/Replication.html#line.71">Replication</a>
-extends <a href="../../../../../../org/apache/hadoop/hbase/regionserver/wal/WALActionsListener.Base.html" title="class in org.apache.hadoop.hbase.regionserver.wal">WALActionsListener.Base</a>
-implements <a href="../../../../../../org/apache/hadoop/hbase/regionserver/ReplicationSourceService.html" title="interface in org.apache.hadoop.hbase.regionserver">ReplicationSourceService</a>, <a href="../../../../../../org/apache/hadoop/hbase/regionserver/ReplicationSinkService.html" title="interface in org.apache.hadoop.hbase.regionserver">ReplicationSinkService</a></pre>
+extends <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a>
+implements <a href="../../../../../../org/apache/hadoop/hbase/regionserver/ReplicationSourceService.html" title="interface in org.apache.hadoop.hbase.regionserver">ReplicationSourceService</a>, <a href="../../../../../../org/apache/hadoop/hbase/regionserver/ReplicationSinkService.html" title="interface in org.apache.hadoop.hbase.regionserver">ReplicationSinkService</a>, <a href="../../../../../../org/apache/hadoop/hbase/regionserver/wal/WALActionsListener.html" title="interface in org.apache.hadoop.hbase.regionserver.wal">WALActionsListener</a></pre>
 <div class="block">Gateway to Replication.  Used by <a href="../../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html" title="class in org.apache.hadoop.hbase.regionserver"><code>HRegionServer</code></a>.</div>
 </li>
 </ul>
@@ -146,13 +141,6 @@ implements <a href="../../../../../../org/apache/hadoop/hbase/regionserver/Repli
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/replication/regionserver/Replication.ReplicationStatisticsThread.html" title="class in org.apache.hadoop.hbase.replication.regionserver">Replication.ReplicationStatisticsThread</a></span></code>&nbsp;</td>
 </tr>
 </table>
-<ul class="blockList">
-<li class="blockList"><a name="nested.classes.inherited.from.class.org.apache.hadoop.hbase.regionserver.wal.WALActionsListener">
-<!--   -->
-</a>
-<h3>Nested classes/interfaces inherited from interface&nbsp;org.apache.hadoop.hbase.regionserver.wal.<a href="../../../../../../org/apache/hadoop/hbase/regionserver/wal/WALActionsListener.html" title="interface in org.apache.hadoop.hbase.regionserver.wal">WALActionsListener</a></h3>
-<code><a href="../../../../../../org/apache/hadoop/hbase/regionserver/wal/WALActionsListener.Base.html" title="class in org.apache.hadoop.hbase.regionserver.wal">WALActionsListener.Base</a></code></li>
-</ul>
 </li>
 </ul>
 <!-- =========== FIELD SUMMARY =========== -->
@@ -373,18 +361,18 @@ implements <a href="../../../../../../org/apache/hadoop/hbase/regionserver/Repli
 </tr>
 </table>
 <ul class="blockList">
-<li class="blockList"><a name="methods.inherited.from.class.org.apache.hadoop.hbase.regionserver.wal.WALActionsListener.Base">
+<li class="blockList"><a name="methods.inherited.from.class.java.lang.Object">
 <!--   -->
 </a>
-<h3>Methods inherited from class&nbsp;org.apache.hadoop.hbase.regionserver.wal.<a href="../../../../../../org/apache/hadoop/hbase/regionserver/wal/WALActionsListener.Base.html" title="class in org.apache.hadoop.hbase.regionserver.wal">WALActionsListener.Base</a></h3>
-<code><a href="../../../../../../org/apache/hadoop/hbase/regionserver/wal/WALActionsListener.Base.html#logCloseRequested--">logCloseRequested</a>, <a href="../../../../../../org/apache/hadoop/hbase/regionserver/wal/WALActionsListener.Base.html#logRollRequested-boolean-">logRollRequested</a>, <a href="../../../../../../org/apache/hadoop/hbase/regionserver/wal/WALActionsListener.Base.html#postAppend-long-long-org.apache.hadoop.hbase.wal.WALKey-org.apache.hadoop.hbase.wal.WALEdit-">postAppend</a>, <a href="../../../../../../org/apache/hadoop/hbase/regionserver/wal/WALActionsListener.Base.html#postLogArchive-org.apache.hadoop.fs.Path-org.apache.hadoop.fs.Path-">postLogArchive</a>, <a href="../../../../../../org/apache/hadoop/hbase/regionserver/wal/WALActionsListener.Base.html#postSync-long-int-">postSync</a>, <a href="../../../../../../org/apache/hadoop/hbase/regionserver/wal/WALActionsListener.Base.html#preLogArchive-org.apache.hadoop.fs.Path-org.apache.hadoop.fs.Path-">preLogArchive</
 a>, <a href="../../../../../../org/apache/hadoop/hbase/regionserver/wal/WALActionsListener.Base.html#visitLogEntryBeforeWrite-org.apache.hadoop.hbase.HRegionInfo-org.apache.hadoop.hbase.wal.WALKey-org.apache.hadoop.hbase.wal.WALEdit-">visitLogEntryBeforeWrite</a></code></li>
+<h3>Methods inherited from class&nbsp;java.lang.<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a></h3>
+<code><a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#clone--" title="class or interface in java.lang">clone</a>, <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#equals-java.lang.Object-" title="class or interface in java.lang">equals</a>, <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#finalize--" title="class or interface in java.lang">finalize</a>, <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#getClass--" title="class or interface in java.lang">getClass</a>, <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#hashCode--" title="class or interface in java.lang">hashCode</a>, <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notify--" title="class or interface in java.lang">notify</a>, <a href="http://docs.oracle.com/javase/8/docs/api/java/lang
 /Object.html?is-external=true#notifyAll--" title="class or interface in java.lang">notifyAll</a>, <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#toString--" title="class or interface in java.lang">toString</a>, <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait--" title="class or interface in java.lang">wait</a>, <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-" title="class or interface in java.lang">wait</a>, <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-int-" title="class or interface in java.lang">wait</a></code></li>
 </ul>
 <ul class="blockList">
-<li class="blockList"><a name="methods.inherited.from.class.java.lang.Object">
+<li class="blockList"><a name="methods.inherited.from.class.org.apache.hadoop.hbase.regionserver.wal.WALActionsListener">
 <!--   -->
 </a>
-<h3>Methods inherited from class&nbsp;java.lang.<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a></h3>
-<code><a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#clone--" title="class or interface in java.lang">clone</a>, <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#equals-java.lang.Object-" title="class or interface in java.lang">equals</a>, <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#finalize--" title="class or interface in java.lang">finalize</a>, <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#getClass--" title="class or interface in java.lang">getClass</a>, <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#hashCode--" title="class or interface in java.lang">hashCode</a>, <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notify--" title="class or interface in java.lang">notify</a>, <a href="http://docs.oracle.com/javase/8/docs/api/java/lang
 /Object.html?is-external=true#notifyAll--" title="class or interface in java.lang">notifyAll</a>, <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#toString--" title="class or interface in java.lang">toString</a>, <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait--" title="class or interface in java.lang">wait</a>, <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-" title="class or interface in java.lang">wait</a>, <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-int-" title="class or interface in java.lang">wait</a></code></li>
+<h3>Methods inherited from interface&nbsp;org.apache.hadoop.hbase.regionserver.wal.<a href="../../../../../../org/apache/hadoop/hbase/regionserver/wal/WALActionsListener.html" title="interface in org.apache.hadoop.hbase.regionserver.wal">WALActionsListener</a></h3>
+<code><a href="../../../../../../org/apache/hadoop/hbase/regionserver/wal/WALActionsListener.html#logCloseRequested--">logCloseRequested</a>, <a href="../../../../../../org/apache/hadoop/hbase/regionserver/wal/WALActionsListener.html#logRollRequested-boolean-">logRollRequested</a>, <a href="../../../../../../org/apache/hadoop/hbase/regionserver/wal/WALActionsListener.html#postAppend-long-long-org.apache.hadoop.hbase.wal.WALKey-org.apache.hadoop.hbase.wal.WALEdit-">postAppend</a>, <a href="../../../../../../org/apache/hadoop/hbase/regionserver/wal/WALActionsListener.html#postLogArchive-org.apache.hadoop.fs.Path-org.apache.hadoop.fs.Path-">postLogArchive</a>, <a href="../../../../../../org/apache/hadoop/hbase/regionserver/wal/WALActionsListener.html#postSync-long-int-">postSync</a>, <a href="../../../../../../org/apache/hadoop/hbase/regionserver/wal/WALActionsListener.html#preLogArchive-org.apache.hadoop.fs.Path-org.apache.hadoop.fs.Path-">preLogArchive</a>, <a href="../../../../../..
 /org/apache/hadoop/hbase/regionserver/wal/WALActionsListener.html#visitLogEntryBeforeWrite-org.apache.hadoop.hbase.client.RegionInfo-org.apache.hadoop.hbase.wal.WALKey-org.apache.hadoop.hbase.wal.WALEdit-">visitLogEntryBeforeWrite</a></code></li>
 </ul>
 </li>
 </ul>
@@ -710,10 +698,8 @@ implements <a href="../../../../../../org/apache/hadoop/hbase/regionserver/Repli
 <dl>
 <dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
 <dd><code><a href="../../../../../../org/apache/hadoop/hbase/regionserver/wal/WALActionsListener.html#visitLogEntryBeforeWrite-org.apache.hadoop.hbase.wal.WALKey-org.apache.hadoop.hbase.wal.WALEdit-">visitLogEntryBeforeWrite</a></code>&nbsp;in interface&nbsp;<code><a href="../../../../../../org/apache/hadoop/hbase/regionserver/wal/WALActionsListener.html" title="interface in org.apache.hadoop.hbase.regionserver.wal">WALActionsListener</a></code></dd>
-<dt><span class="overrideSpecifyLabel">Overrides:</span></dt>
-<dd><code><a href="../../../../../../org/apache/hadoop/hbase/regionserver/wal/WALActionsListener.Base.html#visitLogEntryBeforeWrite-org.apache.hadoop.hbase.wal.WALKey-org.apache.hadoop.hbase.wal.WALEdit-">visitLogEntryBeforeWrite</a></code>&nbsp;in class&nbsp;<code><a href="../../../../../../org/apache/hadoop/hbase/regionserver/wal/WALActionsListener.Base.html" title="class in org.apache.hadoop.hbase.regionserver.wal">WALActionsListener.Base</a></code></dd>
 <dd><code>logEdit</code> - TODO: Retire this in favor of
-          <a href="../../../../../../org/apache/hadoop/hbase/regionserver/wal/WALActionsListener.html#visitLogEntryBeforeWrite-org.apache.hadoop.hbase.HRegionInfo-org.apache.hadoop.hbase.wal.WALKey-org.apache.hadoop.hbase.wal.WALEdit-"><code>WALActionsListener.visitLogEntryBeforeWrite(HRegionInfo, WALKey, WALEdit)</code></a> It only exists to get
+          <a href="../../../../../../org/apache/hadoop/hbase/regionserver/wal/WALActionsListener.html#visitLogEntryBeforeWrite-org.apache.hadoop.hbase.client.RegionInfo-org.apache.hadoop.hbase.wal.WALKey-org.apache.hadoop.hbase.wal.WALEdit-"><code>WALActionsListener.visitLogEntryBeforeWrite(RegionInfo, WALKey, WALEdit)</code></a> It only exists to get
           scope when replicating. Scope should be in the WALKey and not need us passing in a
           <code>htd</code>.</dd>
 <dt><span class="throwsLabel">Throws:</span></dt>
@@ -775,8 +761,6 @@ implements <a href="../../../../../../org/apache/hadoop/hbase/regionserver/Repli
 <dl>
 <dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
 <dd><code><a href="../../../../../../org/apache/hadoop/hbase/regionserver/wal/WALActionsListener.html#preLogRoll-org.apache.hadoop.fs.Path-org.apache.hadoop.fs.Path-">preLogRoll</a></code>&nbsp;in interface&nbsp;<code><a href="../../../../../../org/apache/hadoop/hbase/regionserver/wal/WALActionsListener.html" title="interface in org.apache.hadoop.hbase.regionserver.wal">WALActionsListener</a></code></dd>
-<dt><span class="overrideSpecifyLabel">Overrides:</span></dt>
-<dd><code><a href="../../../../../../org/apache/hadoop/hbase/regionserver/wal/WALActionsListener.Base.html#preLogRoll-org.apache.hadoop.fs.Path-org.apache.hadoop.fs.Path-">preLogRoll</a></code>&nbsp;in class&nbsp;<code><a href="../../../../../../org/apache/hadoop/hbase/regionserver/wal/WALActionsListener.Base.html" title="class in org.apache.hadoop.hbase.regionserver.wal">WALActionsListener.Base</a></code></dd>
 <dt><span class="paramLabel">Parameters:</span></dt>
 <dd><code>oldPath</code> - the path to the old wal</dd>
 <dd><code>newPath</code> - the path to the new wal</dd>
@@ -800,8 +784,6 @@ implements <a href="../../../../../../org/apache/hadoop/hbase/regionserver/Repli
 <dl>
 <dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
 <dd><code><a href="../../../../../../org/apache/hadoop/hbase/regionserver/wal/WALActionsListener.html#postLogRoll-org.apache.hadoop.fs.Path-org.apache.hadoop.fs.Path-">postLogRoll</a></code>&nbsp;in interface&nbsp;<code><a href="../../../../../../org/apache/hadoop/hbase/regionserver/wal/WALActionsListener.html" title="interface in org.apache.hadoop.hbase.regionserver.wal">WALActionsListener</a></code></dd>
-<dt><span class="overrideSpecifyLabel">Overrides:</span></dt>
-<dd><code><a href="../../../../../../org/apache/hadoop/hbase/regionserver/wal/WALActionsListener.Base.html#postLogRoll-org.apache.hadoop.fs.Path-org.apache.hadoop.fs.Path-">postLogRoll</a></code>&nbsp;in class&nbsp;<code><a href="../../../../../../org/apache/hadoop/hbase/regionserver/wal/WALActionsListener.Base.html" title="class in org.apache.hadoop.hbase.regionserver.wal">WALActionsListener.Base</a></code></dd>
 <dt><span class="paramLabel">Parameters:</span></dt>
 <dd><code>oldPath</code> - the path to the old wal</dd>
 <dd><code>newPath</code> - the path to the new wal</dd>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/c54c242b/devapidocs/org/apache/hadoop/hbase/replication/regionserver/package-tree.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/replication/regionserver/package-tree.html b/devapidocs/org/apache/hadoop/hbase/replication/regionserver/package-tree.html
index e7733f9..2cfc95a 100644
--- a/devapidocs/org/apache/hadoop/hbase/replication/regionserver/package-tree.html
+++ b/devapidocs/org/apache/hadoop/hbase/replication/regionserver/package-tree.html
@@ -125,6 +125,7 @@
 </ul>
 </li>
 <li type="circle">org.apache.hadoop.hbase.replication.regionserver.<a href="../../../../../../org/apache/hadoop/hbase/replication/regionserver/RegionReplicaReplicationEndpoint.RetryingRpcCallable.html" title="class in org.apache.hadoop.hbase.replication.regionserver"><span class="typeNameLink">RegionReplicaReplicationEndpoint.RetryingRpcCallable</span></a>&lt;V&gt; (implements java.util.concurrent.<a href="http://docs.oracle.com/javase/8/docs/api/java/util/concurrent/Callable.html?is-external=true" title="class or interface in java.util.concurrent">Callable</a>&lt;V&gt;)</li>
+<li type="circle">org.apache.hadoop.hbase.replication.regionserver.<a href="../../../../../../org/apache/hadoop/hbase/replication/regionserver/Replication.html" title="class in org.apache.hadoop.hbase.replication.regionserver"><span class="typeNameLink">Replication</span></a> (implements org.apache.hadoop.hbase.regionserver.<a href="../../../../../../org/apache/hadoop/hbase/regionserver/ReplicationSinkService.html" title="interface in org.apache.hadoop.hbase.regionserver">ReplicationSinkService</a>, org.apache.hadoop.hbase.regionserver.<a href="../../../../../../org/apache/hadoop/hbase/regionserver/ReplicationSourceService.html" title="interface in org.apache.hadoop.hbase.regionserver">ReplicationSourceService</a>, org.apache.hadoop.hbase.regionserver.wal.<a href="../../../../../../org/apache/hadoop/hbase/regionserver/wal/WALActionsListener.html" title="interface in org.apache.hadoop.hbase.regionserver.wal">WALActionsListener</a>)</li>
 <li type="circle">org.apache.hadoop.hbase.replication.regionserver.<a href="../../../../../../org/apache/hadoop/hbase/replication/regionserver/ReplicationLoad.html" title="class in org.apache.hadoop.hbase.replication.regionserver"><span class="typeNameLink">ReplicationLoad</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.replication.regionserver.<a href="../../../../../../org/apache/hadoop/hbase/replication/regionserver/ReplicationObserver.html" title="class in org.apache.hadoop.hbase.replication.regionserver"><span class="typeNameLink">ReplicationObserver</span></a> (implements org.apache.hadoop.hbase.coprocessor.<a href="../../../../../../org/apache/hadoop/hbase/coprocessor/RegionCoprocessor.html" title="interface in org.apache.hadoop.hbase.coprocessor">RegionCoprocessor</a>, org.apache.hadoop.hbase.coprocessor.<a href="../../../../../../org/apache/hadoop/hbase/coprocessor/RegionObserver.html" title="interface in org.apache.hadoop.hbase.coprocessor">RegionObserver</a>)</li>
 <li type="circle">org.apache.hadoop.hbase.replication.regionserver.<a href="../../../../../../org/apache/hadoop/hbase/replication/regionserver/ReplicationSink.html" title="class in org.apache.hadoop.hbase.replication.regionserver"><span class="typeNameLink">ReplicationSink</span></a></li>
@@ -158,11 +159,6 @@
 </li>
 </ul>
 </li>
-<li type="circle">org.apache.hadoop.hbase.regionserver.wal.<a href="../../../../../../org/apache/hadoop/hbase/regionserver/wal/WALActionsListener.Base.html" title="class in org.apache.hadoop.hbase.regionserver.wal"><span class="typeNameLink">WALActionsListener.Base</span></a> (implements org.apache.hadoop.hbase.regionserver.wal.<a href="../../../../../../org/apache/hadoop/hbase/regionserver/wal/WALActionsListener.html" title="interface in org.apache.hadoop.hbase.regionserver.wal">WALActionsListener</a>)
-<ul>
-<li type="circle">org.apache.hadoop.hbase.replication.regionserver.<a href="../../../../../../org/apache/hadoop/hbase/replication/regionserver/Replication.html" title="class in org.apache.hadoop.hbase.replication.regionserver"><span class="typeNameLink">Replication</span></a> (implements org.apache.hadoop.hbase.regionserver.<a href="../../../../../../org/apache/hadoop/hbase/regionserver/ReplicationSinkService.html" title="interface in org.apache.hadoop.hbase.regionserver">ReplicationSinkService</a>, org.apache.hadoop.hbase.regionserver.<a href="../../../../../../org/apache/hadoop/hbase/regionserver/ReplicationSourceService.html" title="interface in org.apache.hadoop.hbase.regionserver">ReplicationSourceService</a>)</li>
-</ul>
-</li>
 <li type="circle">org.apache.hadoop.hbase.replication.regionserver.<a href="../../../../../../org/apache/hadoop/hbase/replication/regionserver/WALEntryStream.html" title="class in org.apache.hadoop.hbase.replication.regionserver"><span class="typeNameLink">WALEntryStream</span></a> (implements java.io.<a href="http://docs.oracle.com/javase/8/docs/api/java/io/Closeable.html?is-external=true" title="class or interface in java.io">Closeable</a>)</li>
 <li type="circle">org.apache.hadoop.hbase.wal.<a href="../../../../../../org/apache/hadoop/hbase/wal/WALSplitter.OutputSink.html" title="class in org.apache.hadoop.hbase.wal"><span class="typeNameLink">WALSplitter.OutputSink</span></a>
 <ul>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/c54c242b/devapidocs/org/apache/hadoop/hbase/rest/model/package-tree.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/rest/model/package-tree.html b/devapidocs/org/apache/hadoop/hbase/rest/model/package-tree.html
index 91776e4..dc2f127 100644
--- a/devapidocs/org/apache/hadoop/hbase/rest/model/package-tree.html
+++ b/devapidocs/org/apache/hadoop/hbase/rest/model/package-tree.html
@@ -110,8 +110,8 @@
 <ul>
 <li type="circle">java.lang.<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Enum.html?is-external=true" title="class or interface in java.lang"><span class="typeNameLink">Enum</span></a>&lt;E&gt; (implements java.lang.<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Comparable.html?is-external=true" title="class or interface in java.lang">Comparable</a>&lt;T&gt;, java.io.<a href="http://docs.oracle.com/javase/8/docs/api/java/io/Serializable.html?is-external=true" title="class or interface in java.io">Serializable</a>)
 <ul>
-<li type="circle">org.apache.hadoop.hbase.rest.model.<a href="../../../../../../org/apache/hadoop/hbase/rest/model/ScannerModel.FilterModel.FilterType.html" title="enum in org.apache.hadoop.hbase.rest.model"><span class="typeNameLink">ScannerModel.FilterModel.FilterType</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.rest.model.<a href="../../../../../../org/apache/hadoop/hbase/rest/model/ScannerModel.FilterModel.ByteArrayComparableModel.ComparatorType.html" title="enum in org.apache.hadoop.hbase.rest.model"><span class="typeNameLink">ScannerModel.FilterModel.ByteArrayComparableModel.ComparatorType</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.rest.model.<a href="../../../../../../org/apache/hadoop/hbase/rest/model/ScannerModel.FilterModel.FilterType.html" title="enum in org.apache.hadoop.hbase.rest.model"><span class="typeNameLink">ScannerModel.FilterModel.FilterType</span></a></li>
 </ul>
 </li>
 </ul>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/c54c242b/devapidocs/org/apache/hadoop/hbase/security/access/package-tree.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/security/access/package-tree.html b/devapidocs/org/apache/hadoop/hbase/security/access/package-tree.html
index 0d94484..6ae5fc1 100644
--- a/devapidocs/org/apache/hadoop/hbase/security/access/package-tree.html
+++ b/devapidocs/org/apache/hadoop/hbase/security/access/package-tree.html
@@ -136,9 +136,9 @@
 <ul>
 <li type="circle">java.lang.<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Enum.html?is-external=true" title="class or interface in java.lang"><span class="typeNameLink">Enum</span></a>&lt;E&gt; (implements java.lang.<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Comparable.html?is-external=true" title="class or interface in java.lang">Comparable</a>&lt;T&gt;, java.io.<a href="http://docs.oracle.com/javase/8/docs/api/java/io/Serializable.html?is-external=true" title="class or interface in java.io">Serializable</a>)
 <ul>
+<li type="circle">org.apache.hadoop.hbase.security.access.<a href="../../../../../../org/apache/hadoop/hbase/security/access/AccessController.OpType.html" title="enum in org.apache.hadoop.hbase.security.access"><span class="typeNameLink">AccessController.OpType</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.security.access.<a href="../../../../../../org/apache/hadoop/hbase/security/access/Permission.Action.html" title="enum in org.apache.hadoop.hbase.security.access"><span class="typeNameLink">Permission.Action</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.security.access.<a href="../../../../../../org/apache/hadoop/hbase/security/access/AccessControlFilter.Strategy.html" title="enum in org.apache.hadoop.hbase.security.access"><span class="typeNameLink">AccessControlFilter.Strategy</span></a></li>
-<li type="circle">org.apache.hadoop.hbase.security.access.<a href="../../../../../../org/apache/hadoop/hbase/security/access/AccessController.OpType.html" title="enum in org.apache.hadoop.hbase.security.access"><span class="typeNameLink">AccessController.OpType</span></a></li>
 </ul>
 </li>
 </ul>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/c54c242b/devapidocs/org/apache/hadoop/hbase/security/package-tree.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/security/package-tree.html b/devapidocs/org/apache/hadoop/hbase/security/package-tree.html
index c4d3f6e..08da01c 100644
--- a/devapidocs/org/apache/hadoop/hbase/security/package-tree.html
+++ b/devapidocs/org/apache/hadoop/hbase/security/package-tree.html
@@ -191,9 +191,9 @@
 <ul>
 <li type="circle">java.lang.<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Enum.html?is-external=true" title="class or interface in java.lang"><span class="typeNameLink">Enum</span></a>&lt;E&gt; (implements java.lang.<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Comparable.html?is-external=true" title="class or interface in java.lang">Comparable</a>&lt;T&gt;, java.io.<a href="http://docs.oracle.com/javase/8/docs/api/java/io/Serializable.html?is-external=true" title="class or interface in java.io">Serializable</a>)
 <ul>
-<li type="circle">org.apache.hadoop.hbase.security.<a href="../../../../../org/apache/hadoop/hbase/security/SaslUtil.QualityOfProtection.html" title="enum in org.apache.hadoop.hbase.security"><span class="typeNameLink">SaslUtil.QualityOfProtection</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.security.<a href="../../../../../org/apache/hadoop/hbase/security/AuthMethod.html" title="enum in org.apache.hadoop.hbase.security"><span class="typeNameLink">AuthMethod</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.security.<a href="../../../../../org/apache/hadoop/hbase/security/SaslStatus.html" title="enum in org.apache.hadoop.hbase.security"><span class="typeNameLink">SaslStatus</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.security.<a href="../../../../../org/apache/hadoop/hbase/security/SaslUtil.QualityOfProtection.html" title="enum in org.apache.hadoop.hbase.security"><span class="typeNameLink">SaslUtil.QualityOfProtection</span></a></li>
 </ul>
 </li>
 </ul>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/c54c242b/devapidocs/org/apache/hadoop/hbase/util/package-tree.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/util/package-tree.html b/devapidocs/org/apache/hadoop/hbase/util/package-tree.html
index 3dbf77a..41243f0 100644
--- a/devapidocs/org/apache/hadoop/hbase/util/package-tree.html
+++ b/devapidocs/org/apache/hadoop/hbase/util/package-tree.html
@@ -537,14 +537,14 @@
 <ul>
 <li type="circle">java.lang.<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Enum.html?is-external=true" title="class or interface in java.lang"><span class="typeNameLink">Enum</span></a>&lt;E&gt; (implements java.lang.<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Comparable.html?is-external=true" title="class or interface in java.lang">Comparable</a>&lt;T&gt;, java.io.<a href="http://docs.oracle.com/javase/8/docs/api/java/io/Serializable.html?is-external=true" title="class or interface in java.io">Serializable</a>)
 <ul>
-<li type="circle">org.apache.hadoop.hbase.util.<a href="../../../../../org/apache/hadoop/hbase/util/IdReadWriteLock.ReferenceType.html" title="enum in org.apache.hadoop.hbase.util"><span class="typeNameLink">IdReadWriteLock.ReferenceType</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.util.<a href="../../../../../org/apache/hadoop/hbase/util/Bytes.LexicographicalComparerHolder.UnsafeComparer.html" title="enum in org.apache.hadoop.hbase.util"><span class="typeNameLink">Bytes.LexicographicalComparerHolder.UnsafeComparer</span></a> (implements org.apache.hadoop.hbase.util.<a href="../../../../../org/apache/hadoop/hbase/util/Bytes.Comparer.html" title="interface in org.apache.hadoop.hbase.util">Bytes.Comparer</a>&lt;T&gt;)</li>
+<li type="circle">org.apache.hadoop.hbase.util.<a href="../../../../../org/apache/hadoop/hbase/util/HBaseFsck.ErrorReporter.ERROR_CODE.html" title="enum in org.apache.hadoop.hbase.util"><span class="typeNameLink">HBaseFsck.ErrorReporter.ERROR_CODE</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.util.<a href="../../../../../org/apache/hadoop/hbase/util/Order.html" title="enum in org.apache.hadoop.hbase.util"><span class="typeNameLink">Order</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.util.<a href="../../../../../org/apache/hadoop/hbase/util/PoolMap.PoolType.html" title="enum in org.apache.hadoop.hbase.util"><span class="typeNameLink">PoolMap.PoolType</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.util.<a href="../../../../../org/apache/hadoop/hbase/util/IdReadWriteLock.ReferenceType.html" title="enum in org.apache.hadoop.hbase.util"><span class="typeNameLink">IdReadWriteLock.ReferenceType</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.util.<a href="../../../../../org/apache/hadoop/hbase/util/PrettyPrinter.Unit.html" title="enum in org.apache.hadoop.hbase.util"><span class="typeNameLink">PrettyPrinter.Unit</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.util.<a href="../../../../../org/apache/hadoop/hbase/util/Bytes.LexicographicalComparerHolder.PureJavaComparer.html" title="enum in org.apache.hadoop.hbase.util"><span class="typeNameLink">Bytes.LexicographicalComparerHolder.PureJavaComparer</span></a> (implements org.apache.hadoop.hbase.util.<a href="../../../../../org/apache/hadoop/hbase/util/Bytes.Comparer.html" title="interface in org.apache.hadoop.hbase.util">Bytes.Comparer</a>&lt;T&gt;)</li>
-<li type="circle">org.apache.hadoop.hbase.util.<a href="../../../../../org/apache/hadoop/hbase/util/HBaseFsck.ErrorReporter.ERROR_CODE.html" title="enum in org.apache.hadoop.hbase.util"><span class="typeNameLink">HBaseFsck.ErrorReporter.ERROR_CODE</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.util.<a href="../../../../../org/apache/hadoop/hbase/util/ChecksumType.html" title="enum in org.apache.hadoop.hbase.util"><span class="typeNameLink">ChecksumType</span></a></li>
-<li type="circle">org.apache.hadoop.hbase.util.<a href="../../../../../org/apache/hadoop/hbase/util/Bytes.LexicographicalComparerHolder.UnsafeComparer.html" title="enum in org.apache.hadoop.hbase.util"><span class="typeNameLink">Bytes.LexicographicalComparerHolder.UnsafeComparer</span></a> (implements org.apache.hadoop.hbase.util.<a href="../../../../../org/apache/hadoop/hbase/util/Bytes.Comparer.html" title="interface in org.apache.hadoop.hbase.util">Bytes.Comparer</a>&lt;T&gt;)</li>
-<li type="circle">org.apache.hadoop.hbase.util.<a href="../../../../../org/apache/hadoop/hbase/util/PoolMap.PoolType.html" title="enum in org.apache.hadoop.hbase.util"><span class="typeNameLink">PoolMap.PoolType</span></a></li>
 </ul>
 </li>
 </ul>


[19/51] [partial] hbase-site git commit: Published site at .

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/c54c242b/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/HRegion.RowLockImpl.html
----------------------------------------------------------------------
diff --git a/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/HRegion.RowLockImpl.html b/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/HRegion.RowLockImpl.html
index 3edfbef..9707b2c 100644
--- a/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/HRegion.RowLockImpl.html
+++ b/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/HRegion.RowLockImpl.html
@@ -2459,5936 +2459,5935 @@
 <span class="sourceLineNo">2451</span>      }<a name="line.2451"></a>
 <span class="sourceLineNo">2452</span><a name="line.2452"></a>
 <span class="sourceLineNo">2453</span>      for (HStore s : storesToFlush) {<a name="line.2453"></a>
-<span class="sourceLineNo">2454</span>        MemStoreSize flushableSize = s.getFlushableSize();<a name="line.2454"></a>
-<span class="sourceLineNo">2455</span>        totalSizeOfFlushableStores.incMemStoreSize(flushableSize);<a name="line.2455"></a>
-<span class="sourceLineNo">2456</span>        storeFlushCtxs.put(s.getColumnFamilyDescriptor().getName(),<a name="line.2456"></a>
-<span class="sourceLineNo">2457</span>          s.createFlushContext(flushOpSeqId, tracker));<a name="line.2457"></a>
-<span class="sourceLineNo">2458</span>        // for writing stores to WAL<a name="line.2458"></a>
-<span class="sourceLineNo">2459</span>        committedFiles.put(s.getColumnFamilyDescriptor().getName(), null);<a name="line.2459"></a>
-<span class="sourceLineNo">2460</span>        storeFlushableSize.put(s.getColumnFamilyDescriptor().getName(), flushableSize);<a name="line.2460"></a>
-<span class="sourceLineNo">2461</span>      }<a name="line.2461"></a>
-<span class="sourceLineNo">2462</span><a name="line.2462"></a>
-<span class="sourceLineNo">2463</span>      // write the snapshot start to WAL<a name="line.2463"></a>
-<span class="sourceLineNo">2464</span>      if (wal != null &amp;&amp; !writestate.readOnly) {<a name="line.2464"></a>
-<span class="sourceLineNo">2465</span>        FlushDescriptor desc = ProtobufUtil.toFlushDescriptor(FlushAction.START_FLUSH,<a name="line.2465"></a>
-<span class="sourceLineNo">2466</span>            getRegionInfo(), flushOpSeqId, committedFiles);<a name="line.2466"></a>
-<span class="sourceLineNo">2467</span>        // No sync. Sync is below where no updates lock and we do FlushAction.COMMIT_FLUSH<a name="line.2467"></a>
-<span class="sourceLineNo">2468</span>        WALUtil.writeFlushMarker(wal, this.getReplicationScope(), getRegionInfo(), desc, false,<a name="line.2468"></a>
-<span class="sourceLineNo">2469</span>            mvcc);<a name="line.2469"></a>
-<span class="sourceLineNo">2470</span>      }<a name="line.2470"></a>
-<span class="sourceLineNo">2471</span><a name="line.2471"></a>
-<span class="sourceLineNo">2472</span>      // Prepare flush (take a snapshot)<a name="line.2472"></a>
-<span class="sourceLineNo">2473</span>      for (StoreFlushContext flush : storeFlushCtxs.values()) {<a name="line.2473"></a>
-<span class="sourceLineNo">2474</span>        flush.prepare();<a name="line.2474"></a>
-<span class="sourceLineNo">2475</span>      }<a name="line.2475"></a>
-<span class="sourceLineNo">2476</span>    } catch (IOException ex) {<a name="line.2476"></a>
-<span class="sourceLineNo">2477</span>      doAbortFlushToWAL(wal, flushOpSeqId, committedFiles);<a name="line.2477"></a>
-<span class="sourceLineNo">2478</span>      throw ex;<a name="line.2478"></a>
-<span class="sourceLineNo">2479</span>    } finally {<a name="line.2479"></a>
-<span class="sourceLineNo">2480</span>      this.updatesLock.writeLock().unlock();<a name="line.2480"></a>
-<span class="sourceLineNo">2481</span>    }<a name="line.2481"></a>
-<span class="sourceLineNo">2482</span>    String s = "Finished memstore snapshotting " + this + ", syncing WAL and waiting on mvcc, " +<a name="line.2482"></a>
-<span class="sourceLineNo">2483</span>        "flushsize=" + totalSizeOfFlushableStores;<a name="line.2483"></a>
-<span class="sourceLineNo">2484</span>    status.setStatus(s);<a name="line.2484"></a>
-<span class="sourceLineNo">2485</span>    doSyncOfUnflushedWALChanges(wal, getRegionInfo());<a name="line.2485"></a>
-<span class="sourceLineNo">2486</span>    return new PrepareFlushResult(storeFlushCtxs, committedFiles, storeFlushableSize, startTime,<a name="line.2486"></a>
-<span class="sourceLineNo">2487</span>        flushOpSeqId, flushedSeqId, totalSizeOfFlushableStores);<a name="line.2487"></a>
-<span class="sourceLineNo">2488</span>  }<a name="line.2488"></a>
-<span class="sourceLineNo">2489</span><a name="line.2489"></a>
-<span class="sourceLineNo">2490</span>  /**<a name="line.2490"></a>
-<span class="sourceLineNo">2491</span>   * Utility method broken out of internalPrepareFlushCache so that method is smaller.<a name="line.2491"></a>
-<span class="sourceLineNo">2492</span>   */<a name="line.2492"></a>
-<span class="sourceLineNo">2493</span>  private void logFatLineOnFlush(Collection&lt;HStore&gt; storesToFlush, long sequenceId) {<a name="line.2493"></a>
-<span class="sourceLineNo">2494</span>    if (!LOG.isInfoEnabled()) {<a name="line.2494"></a>
-<span class="sourceLineNo">2495</span>      return;<a name="line.2495"></a>
-<span class="sourceLineNo">2496</span>    }<a name="line.2496"></a>
-<span class="sourceLineNo">2497</span>    // Log a fat line detailing what is being flushed.<a name="line.2497"></a>
-<span class="sourceLineNo">2498</span>    StringBuilder perCfExtras = null;<a name="line.2498"></a>
-<span class="sourceLineNo">2499</span>    if (!isAllFamilies(storesToFlush)) {<a name="line.2499"></a>
-<span class="sourceLineNo">2500</span>      perCfExtras = new StringBuilder();<a name="line.2500"></a>
-<span class="sourceLineNo">2501</span>      for (HStore store: storesToFlush) {<a name="line.2501"></a>
-<span class="sourceLineNo">2502</span>        perCfExtras.append("; ").append(store.getColumnFamilyName());<a name="line.2502"></a>
-<span class="sourceLineNo">2503</span>        perCfExtras.append("=")<a name="line.2503"></a>
-<span class="sourceLineNo">2504</span>            .append(StringUtils.byteDesc(store.getFlushableSize().getDataSize()));<a name="line.2504"></a>
-<span class="sourceLineNo">2505</span>      }<a name="line.2505"></a>
-<span class="sourceLineNo">2506</span>    }<a name="line.2506"></a>
-<span class="sourceLineNo">2507</span>    LOG.info("Flushing " + + storesToFlush.size() + "/" + stores.size() +<a name="line.2507"></a>
-<span class="sourceLineNo">2508</span>        " column families, memstore=" + StringUtils.byteDesc(this.memstoreDataSize.get()) +<a name="line.2508"></a>
-<span class="sourceLineNo">2509</span>        ((perCfExtras != null &amp;&amp; perCfExtras.length() &gt; 0)? perCfExtras.toString(): "") +<a name="line.2509"></a>
-<span class="sourceLineNo">2510</span>        ((wal != null) ? "" : "; WAL is null, using passed sequenceid=" + sequenceId));<a name="line.2510"></a>
-<span class="sourceLineNo">2511</span>  }<a name="line.2511"></a>
-<span class="sourceLineNo">2512</span><a name="line.2512"></a>
-<span class="sourceLineNo">2513</span>  private void doAbortFlushToWAL(final WAL wal, final long flushOpSeqId,<a name="line.2513"></a>
-<span class="sourceLineNo">2514</span>      final Map&lt;byte[], List&lt;Path&gt;&gt; committedFiles) {<a name="line.2514"></a>
-<span class="sourceLineNo">2515</span>    if (wal == null) return;<a name="line.2515"></a>
-<span class="sourceLineNo">2516</span>    try {<a name="line.2516"></a>
-<span class="sourceLineNo">2517</span>      FlushDescriptor desc = ProtobufUtil.toFlushDescriptor(FlushAction.ABORT_FLUSH,<a name="line.2517"></a>
-<span class="sourceLineNo">2518</span>          getRegionInfo(), flushOpSeqId, committedFiles);<a name="line.2518"></a>
-<span class="sourceLineNo">2519</span>      WALUtil.writeFlushMarker(wal, this.getReplicationScope(), getRegionInfo(), desc, false,<a name="line.2519"></a>
-<span class="sourceLineNo">2520</span>          mvcc);<a name="line.2520"></a>
-<span class="sourceLineNo">2521</span>    } catch (Throwable t) {<a name="line.2521"></a>
-<span class="sourceLineNo">2522</span>      LOG.warn("Received unexpected exception trying to write ABORT_FLUSH marker to WAL:" +<a name="line.2522"></a>
-<span class="sourceLineNo">2523</span>          StringUtils.stringifyException(t));<a name="line.2523"></a>
-<span class="sourceLineNo">2524</span>      // ignore this since we will be aborting the RS with DSE.<a name="line.2524"></a>
-<span class="sourceLineNo">2525</span>    }<a name="line.2525"></a>
-<span class="sourceLineNo">2526</span>    // we have called wal.startCacheFlush(), now we have to abort it<a name="line.2526"></a>
-<span class="sourceLineNo">2527</span>    wal.abortCacheFlush(this.getRegionInfo().getEncodedNameAsBytes());<a name="line.2527"></a>
-<span class="sourceLineNo">2528</span>  }<a name="line.2528"></a>
-<span class="sourceLineNo">2529</span><a name="line.2529"></a>
-<span class="sourceLineNo">2530</span>  /**<a name="line.2530"></a>
-<span class="sourceLineNo">2531</span>   * Sync unflushed WAL changes. See HBASE-8208 for details<a name="line.2531"></a>
-<span class="sourceLineNo">2532</span>   */<a name="line.2532"></a>
-<span class="sourceLineNo">2533</span>  private static void doSyncOfUnflushedWALChanges(final WAL wal, final RegionInfo hri)<a name="line.2533"></a>
-<span class="sourceLineNo">2534</span>  throws IOException {<a name="line.2534"></a>
-<span class="sourceLineNo">2535</span>    if (wal == null) {<a name="line.2535"></a>
-<span class="sourceLineNo">2536</span>      return;<a name="line.2536"></a>
-<span class="sourceLineNo">2537</span>    }<a name="line.2537"></a>
-<span class="sourceLineNo">2538</span>    try {<a name="line.2538"></a>
-<span class="sourceLineNo">2539</span>      wal.sync(); // ensure that flush marker is sync'ed<a name="line.2539"></a>
-<span class="sourceLineNo">2540</span>    } catch (IOException ioe) {<a name="line.2540"></a>
-<span class="sourceLineNo">2541</span>      wal.abortCacheFlush(hri.getEncodedNameAsBytes());<a name="line.2541"></a>
-<span class="sourceLineNo">2542</span>      throw ioe;<a name="line.2542"></a>
-<span class="sourceLineNo">2543</span>    }<a name="line.2543"></a>
-<span class="sourceLineNo">2544</span>  }<a name="line.2544"></a>
-<span class="sourceLineNo">2545</span><a name="line.2545"></a>
-<span class="sourceLineNo">2546</span>  /**<a name="line.2546"></a>
-<span class="sourceLineNo">2547</span>   * @return True if passed Set is all families in the region.<a name="line.2547"></a>
-<span class="sourceLineNo">2548</span>   */<a name="line.2548"></a>
-<span class="sourceLineNo">2549</span>  private boolean isAllFamilies(Collection&lt;HStore&gt; families) {<a name="line.2549"></a>
-<span class="sourceLineNo">2550</span>    return families == null || this.stores.size() == families.size();<a name="line.2550"></a>
-<span class="sourceLineNo">2551</span>  }<a name="line.2551"></a>
-<span class="sourceLineNo">2552</span><a name="line.2552"></a>
-<span class="sourceLineNo">2553</span>  /**<a name="line.2553"></a>
-<span class="sourceLineNo">2554</span>   * Writes a marker to WAL indicating a flush is requested but cannot be complete due to various<a name="line.2554"></a>
-<span class="sourceLineNo">2555</span>   * reasons. Ignores exceptions from WAL. Returns whether the write succeeded.<a name="line.2555"></a>
-<span class="sourceLineNo">2556</span>   * @param wal<a name="line.2556"></a>
-<span class="sourceLineNo">2557</span>   * @return whether WAL write was successful<a name="line.2557"></a>
-<span class="sourceLineNo">2558</span>   */<a name="line.2558"></a>
-<span class="sourceLineNo">2559</span>  private boolean writeFlushRequestMarkerToWAL(WAL wal, boolean writeFlushWalMarker) {<a name="line.2559"></a>
-<span class="sourceLineNo">2560</span>    if (writeFlushWalMarker &amp;&amp; wal != null &amp;&amp; !writestate.readOnly) {<a name="line.2560"></a>
-<span class="sourceLineNo">2561</span>      FlushDescriptor desc = ProtobufUtil.toFlushDescriptor(FlushAction.CANNOT_FLUSH,<a name="line.2561"></a>
-<span class="sourceLineNo">2562</span>        getRegionInfo(), -1, new TreeMap&lt;&gt;(Bytes.BYTES_COMPARATOR));<a name="line.2562"></a>
-<span class="sourceLineNo">2563</span>      try {<a name="line.2563"></a>
-<span class="sourceLineNo">2564</span>        WALUtil.writeFlushMarker(wal, this.getReplicationScope(), getRegionInfo(), desc, true,<a name="line.2564"></a>
-<span class="sourceLineNo">2565</span>            mvcc);<a name="line.2565"></a>
-<span class="sourceLineNo">2566</span>        return true;<a name="line.2566"></a>
-<span class="sourceLineNo">2567</span>      } catch (IOException e) {<a name="line.2567"></a>
-<span class="sourceLineNo">2568</span>        LOG.warn(getRegionInfo().getEncodedName() + " : "<a name="line.2568"></a>
-<span class="sourceLineNo">2569</span>            + "Received exception while trying to write the flush request to wal", e);<a name="line.2569"></a>
-<span class="sourceLineNo">2570</span>      }<a name="line.2570"></a>
-<span class="sourceLineNo">2571</span>    }<a name="line.2571"></a>
-<span class="sourceLineNo">2572</span>    return false;<a name="line.2572"></a>
-<span class="sourceLineNo">2573</span>  }<a name="line.2573"></a>
-<span class="sourceLineNo">2574</span><a name="line.2574"></a>
-<span class="sourceLineNo">2575</span>  @edu.umd.cs.findbugs.annotations.SuppressWarnings(value="NN_NAKED_NOTIFY",<a name="line.2575"></a>
-<span class="sourceLineNo">2576</span>      justification="Intentional; notify is about completed flush")<a name="line.2576"></a>
-<span class="sourceLineNo">2577</span>  protected FlushResultImpl internalFlushCacheAndCommit(WAL wal, MonitoredTask status,<a name="line.2577"></a>
-<span class="sourceLineNo">2578</span>      PrepareFlushResult prepareResult, Collection&lt;HStore&gt; storesToFlush) throws IOException {<a name="line.2578"></a>
-<span class="sourceLineNo">2579</span>    // prepare flush context is carried via PrepareFlushResult<a name="line.2579"></a>
-<span class="sourceLineNo">2580</span>    TreeMap&lt;byte[], StoreFlushContext&gt; storeFlushCtxs = prepareResult.storeFlushCtxs;<a name="line.2580"></a>
-<span class="sourceLineNo">2581</span>    TreeMap&lt;byte[], List&lt;Path&gt;&gt; committedFiles = prepareResult.committedFiles;<a name="line.2581"></a>
-<span class="sourceLineNo">2582</span>    long startTime = prepareResult.startTime;<a name="line.2582"></a>
-<span class="sourceLineNo">2583</span>    long flushOpSeqId = prepareResult.flushOpSeqId;<a name="line.2583"></a>
-<span class="sourceLineNo">2584</span>    long flushedSeqId = prepareResult.flushedSeqId;<a name="line.2584"></a>
-<span class="sourceLineNo">2585</span><a name="line.2585"></a>
-<span class="sourceLineNo">2586</span>    String s = "Flushing stores of " + this;<a name="line.2586"></a>
-<span class="sourceLineNo">2587</span>    status.setStatus(s);<a name="line.2587"></a>
-<span class="sourceLineNo">2588</span>    if (LOG.isTraceEnabled()) LOG.trace(s);<a name="line.2588"></a>
-<span class="sourceLineNo">2589</span><a name="line.2589"></a>
-<span class="sourceLineNo">2590</span>    // Any failure from here on out will be catastrophic requiring server<a name="line.2590"></a>
-<span class="sourceLineNo">2591</span>    // restart so wal content can be replayed and put back into the memstore.<a name="line.2591"></a>
-<span class="sourceLineNo">2592</span>    // Otherwise, the snapshot content while backed up in the wal, it will not<a name="line.2592"></a>
-<span class="sourceLineNo">2593</span>    // be part of the current running servers state.<a name="line.2593"></a>
-<span class="sourceLineNo">2594</span>    boolean compactionRequested = false;<a name="line.2594"></a>
-<span class="sourceLineNo">2595</span>    long flushedOutputFileSize = 0;<a name="line.2595"></a>
-<span class="sourceLineNo">2596</span>    try {<a name="line.2596"></a>
-<span class="sourceLineNo">2597</span>      // A.  Flush memstore to all the HStores.<a name="line.2597"></a>
-<span class="sourceLineNo">2598</span>      // Keep running vector of all store files that includes both old and the<a name="line.2598"></a>
-<span class="sourceLineNo">2599</span>      // just-made new flush store file. The new flushed file is still in the<a name="line.2599"></a>
-<span class="sourceLineNo">2600</span>      // tmp directory.<a name="line.2600"></a>
-<span class="sourceLineNo">2601</span><a name="line.2601"></a>
-<span class="sourceLineNo">2602</span>      for (StoreFlushContext flush : storeFlushCtxs.values()) {<a name="line.2602"></a>
-<span class="sourceLineNo">2603</span>        flush.flushCache(status);<a name="line.2603"></a>
-<span class="sourceLineNo">2604</span>      }<a name="line.2604"></a>
-<span class="sourceLineNo">2605</span><a name="line.2605"></a>
-<span class="sourceLineNo">2606</span>      // Switch snapshot (in memstore) -&gt; new hfile (thus causing<a name="line.2606"></a>
-<span class="sourceLineNo">2607</span>      // all the store scanners to reset/reseek).<a name="line.2607"></a>
-<span class="sourceLineNo">2608</span>      Iterator&lt;HStore&gt; it = storesToFlush.iterator();<a name="line.2608"></a>
-<span class="sourceLineNo">2609</span>      // stores.values() and storeFlushCtxs have same order<a name="line.2609"></a>
-<span class="sourceLineNo">2610</span>      for (StoreFlushContext flush : storeFlushCtxs.values()) {<a name="line.2610"></a>
-<span class="sourceLineNo">2611</span>        boolean needsCompaction = flush.commit(status);<a name="line.2611"></a>
-<span class="sourceLineNo">2612</span>        if (needsCompaction) {<a name="line.2612"></a>
-<span class="sourceLineNo">2613</span>          compactionRequested = true;<a name="line.2613"></a>
-<span class="sourceLineNo">2614</span>        }<a name="line.2614"></a>
-<span class="sourceLineNo">2615</span>        byte[] storeName = it.next().getColumnFamilyDescriptor().getName();<a name="line.2615"></a>
-<span class="sourceLineNo">2616</span>        List&lt;Path&gt; storeCommittedFiles = flush.getCommittedFiles();<a name="line.2616"></a>
-<span class="sourceLineNo">2617</span>        committedFiles.put(storeName, storeCommittedFiles);<a name="line.2617"></a>
-<span class="sourceLineNo">2618</span>        // Flush committed no files, indicating flush is empty or flush was canceled<a name="line.2618"></a>
-<span class="sourceLineNo">2619</span>        if (storeCommittedFiles == null || storeCommittedFiles.isEmpty()) {<a name="line.2619"></a>
-<span class="sourceLineNo">2620</span>          MemStoreSize storeFlushableSize = prepareResult.storeFlushableSize.get(storeName);<a name="line.2620"></a>
-<span class="sourceLineNo">2621</span>          prepareResult.totalFlushableSize.decMemStoreSize(storeFlushableSize);<a name="line.2621"></a>
-<span class="sourceLineNo">2622</span>        }<a name="line.2622"></a>
-<span class="sourceLineNo">2623</span>        flushedOutputFileSize += flush.getOutputFileSize();<a name="line.2623"></a>
-<span class="sourceLineNo">2624</span>      }<a name="line.2624"></a>
-<span class="sourceLineNo">2625</span>      storeFlushCtxs.clear();<a name="line.2625"></a>
-<span class="sourceLineNo">2626</span><a name="line.2626"></a>
-<span class="sourceLineNo">2627</span>      // Set down the memstore size by amount of flush.<a name="line.2627"></a>
-<span class="sourceLineNo">2628</span>      this.decrMemStoreSize(prepareResult.totalFlushableSize);<a name="line.2628"></a>
-<span class="sourceLineNo">2629</span><a name="line.2629"></a>
-<span class="sourceLineNo">2630</span>      if (wal != null) {<a name="line.2630"></a>
-<span class="sourceLineNo">2631</span>        // write flush marker to WAL. If fail, we should throw DroppedSnapshotException<a name="line.2631"></a>
-<span class="sourceLineNo">2632</span>        FlushDescriptor desc = ProtobufUtil.toFlushDescriptor(FlushAction.COMMIT_FLUSH,<a name="line.2632"></a>
-<span class="sourceLineNo">2633</span>          getRegionInfo(), flushOpSeqId, committedFiles);<a name="line.2633"></a>
-<span class="sourceLineNo">2634</span>        WALUtil.writeFlushMarker(wal, this.getReplicationScope(), getRegionInfo(), desc, true,<a name="line.2634"></a>
-<span class="sourceLineNo">2635</span>            mvcc);<a name="line.2635"></a>
-<span class="sourceLineNo">2636</span>      }<a name="line.2636"></a>
-<span class="sourceLineNo">2637</span>    } catch (Throwable t) {<a name="line.2637"></a>
-<span class="sourceLineNo">2638</span>      // An exception here means that the snapshot was not persisted.<a name="line.2638"></a>
-<span class="sourceLineNo">2639</span>      // The wal needs to be replayed so its content is restored to memstore.<a name="line.2639"></a>
-<span class="sourceLineNo">2640</span>      // Currently, only a server restart will do this.<a name="line.2640"></a>
-<span class="sourceLineNo">2641</span>      // We used to only catch IOEs but its possible that we'd get other<a name="line.2641"></a>
-<span class="sourceLineNo">2642</span>      // exceptions -- e.g. HBASE-659 was about an NPE -- so now we catch<a name="line.2642"></a>
-<span class="sourceLineNo">2643</span>      // all and sundry.<a name="line.2643"></a>
-<span class="sourceLineNo">2644</span>      if (wal != null) {<a name="line.2644"></a>
-<span class="sourceLineNo">2645</span>        try {<a name="line.2645"></a>
-<span class="sourceLineNo">2646</span>          FlushDescriptor desc = ProtobufUtil.toFlushDescriptor(FlushAction.ABORT_FLUSH,<a name="line.2646"></a>
-<span class="sourceLineNo">2647</span>            getRegionInfo(), flushOpSeqId, committedFiles);<a name="line.2647"></a>
-<span class="sourceLineNo">2648</span>          WALUtil.writeFlushMarker(wal, this.replicationScope, getRegionInfo(), desc, false, mvcc);<a name="line.2648"></a>
-<span class="sourceLineNo">2649</span>        } catch (Throwable ex) {<a name="line.2649"></a>
-<span class="sourceLineNo">2650</span>          LOG.warn(getRegionInfo().getEncodedName() + " : "<a name="line.2650"></a>
-<span class="sourceLineNo">2651</span>              + "failed writing ABORT_FLUSH marker to WAL", ex);<a name="line.2651"></a>
-<span class="sourceLineNo">2652</span>          // ignore this since we will be aborting the RS with DSE.<a name="line.2652"></a>
-<span class="sourceLineNo">2653</span>        }<a name="line.2653"></a>
-<span class="sourceLineNo">2654</span>        wal.abortCacheFlush(this.getRegionInfo().getEncodedNameAsBytes());<a name="line.2654"></a>
-<span class="sourceLineNo">2655</span>      }<a name="line.2655"></a>
-<span class="sourceLineNo">2656</span>      DroppedSnapshotException dse = new DroppedSnapshotException("region: " +<a name="line.2656"></a>
-<span class="sourceLineNo">2657</span>          Bytes.toStringBinary(getRegionInfo().getRegionName()));<a name="line.2657"></a>
-<span class="sourceLineNo">2658</span>      dse.initCause(t);<a name="line.2658"></a>
-<span class="sourceLineNo">2659</span>      status.abort("Flush failed: " + StringUtils.stringifyException(t));<a name="line.2659"></a>
-<span class="sourceLineNo">2660</span><a name="line.2660"></a>
-<span class="sourceLineNo">2661</span>      // Callers for flushcache() should catch DroppedSnapshotException and abort the region server.<a name="line.2661"></a>
-<span class="sourceLineNo">2662</span>      // However, since we may have the region read lock, we cannot call close(true) here since<a name="line.2662"></a>
-<span class="sourceLineNo">2663</span>      // we cannot promote to a write lock. Instead we are setting closing so that all other region<a name="line.2663"></a>
-<span class="sourceLineNo">2664</span>      // operations except for close will be rejected.<a name="line.2664"></a>
-<span class="sourceLineNo">2665</span>      this.closing.set(true);<a name="line.2665"></a>
-<span class="sourceLineNo">2666</span><a name="line.2666"></a>
-<span class="sourceLineNo">2667</span>      if (rsServices != null) {<a name="line.2667"></a>
-<span class="sourceLineNo">2668</span>        // This is a safeguard against the case where the caller fails to explicitly handle aborting<a name="line.2668"></a>
-<span class="sourceLineNo">2669</span>        rsServices.abort("Replay of WAL required. Forcing server shutdown", dse);<a name="line.2669"></a>
-<span class="sourceLineNo">2670</span>      }<a name="line.2670"></a>
-<span class="sourceLineNo">2671</span><a name="line.2671"></a>
-<span class="sourceLineNo">2672</span>      throw dse;<a name="line.2672"></a>
-<span class="sourceLineNo">2673</span>    }<a name="line.2673"></a>
-<span class="sourceLineNo">2674</span><a name="line.2674"></a>
-<span class="sourceLineNo">2675</span>    // If we get to here, the HStores have been written.<a name="line.2675"></a>
-<span class="sourceLineNo">2676</span>    if (wal != null) {<a name="line.2676"></a>
-<span class="sourceLineNo">2677</span>      wal.completeCacheFlush(this.getRegionInfo().getEncodedNameAsBytes());<a name="line.2677"></a>
-<span class="sourceLineNo">2678</span>    }<a name="line.2678"></a>
-<span class="sourceLineNo">2679</span><a name="line.2679"></a>
-<span class="sourceLineNo">2680</span>    // Record latest flush time<a name="line.2680"></a>
-<span class="sourceLineNo">2681</span>    for (HStore store: storesToFlush) {<a name="line.2681"></a>
-<span class="sourceLineNo">2682</span>      this.lastStoreFlushTimeMap.put(store, startTime);<a name="line.2682"></a>
-<span class="sourceLineNo">2683</span>    }<a name="line.2683"></a>
-<span class="sourceLineNo">2684</span><a name="line.2684"></a>
-<span class="sourceLineNo">2685</span>    this.maxFlushedSeqId = flushedSeqId;<a name="line.2685"></a>
-<span class="sourceLineNo">2686</span>    this.lastFlushOpSeqId = flushOpSeqId;<a name="line.2686"></a>
-<span class="sourceLineNo">2687</span><a name="line.2687"></a>
-<span class="sourceLineNo">2688</span>    // C. Finally notify anyone waiting on memstore to clear:<a name="line.2688"></a>
-<span class="sourceLineNo">2689</span>    // e.g. checkResources().<a name="line.2689"></a>
-<span class="sourceLineNo">2690</span>    synchronized (this) {<a name="line.2690"></a>
-<span class="sourceLineNo">2691</span>      notifyAll(); // FindBugs NN_NAKED_NOTIFY<a name="line.2691"></a>
-<span class="sourceLineNo">2692</span>    }<a name="line.2692"></a>
-<span class="sourceLineNo">2693</span><a name="line.2693"></a>
-<span class="sourceLineNo">2694</span>    long time = EnvironmentEdgeManager.currentTime() - startTime;<a name="line.2694"></a>
-<span class="sourceLineNo">2695</span>    long memstoresize = this.memstoreDataSize.get();<a name="line.2695"></a>
-<span class="sourceLineNo">2696</span>    String msg = "Finished memstore flush of ~"<a name="line.2696"></a>
-<span class="sourceLineNo">2697</span>        + StringUtils.byteDesc(prepareResult.totalFlushableSize.getDataSize()) + "/"<a name="line.2697"></a>
-<span class="sourceLineNo">2698</span>        + prepareResult.totalFlushableSize.getDataSize() + ", currentsize="<a name="line.2698"></a>
-<span class="sourceLineNo">2699</span>        + StringUtils.byteDesc(memstoresize) + "/" + memstoresize<a name="line.2699"></a>
-<span class="sourceLineNo">2700</span>        + " for region " + this + " in " + time + "ms, sequenceid="<a name="line.2700"></a>
-<span class="sourceLineNo">2701</span>        + flushOpSeqId +  ", compaction requested=" + compactionRequested<a name="line.2701"></a>
-<span class="sourceLineNo">2702</span>        + ((wal == null) ? "; wal=null" : "");<a name="line.2702"></a>
-<span class="sourceLineNo">2703</span>    LOG.info(msg);<a name="line.2703"></a>
-<span class="sourceLineNo">2704</span>    status.setStatus(msg);<a name="line.2704"></a>
-<span class="sourceLineNo">2705</span><a name="line.2705"></a>
-<span class="sourceLineNo">2706</span>    if (rsServices != null &amp;&amp; rsServices.getMetrics() != null) {<a name="line.2706"></a>
-<span class="sourceLineNo">2707</span>      rsServices.getMetrics().updateFlush(time - startTime,<a name="line.2707"></a>
-<span class="sourceLineNo">2708</span>          prepareResult.totalFlushableSize.getDataSize(), flushedOutputFileSize);<a name="line.2708"></a>
-<span class="sourceLineNo">2709</span>    }<a name="line.2709"></a>
-<span class="sourceLineNo">2710</span><a name="line.2710"></a>
-<span class="sourceLineNo">2711</span>    return new FlushResultImpl(compactionRequested ?<a name="line.2711"></a>
-<span class="sourceLineNo">2712</span>        FlushResult.Result.FLUSHED_COMPACTION_NEEDED :<a name="line.2712"></a>
-<span class="sourceLineNo">2713</span>          FlushResult.Result.FLUSHED_NO_COMPACTION_NEEDED, flushOpSeqId);<a name="line.2713"></a>
-<span class="sourceLineNo">2714</span>  }<a name="line.2714"></a>
-<span class="sourceLineNo">2715</span><a name="line.2715"></a>
-<span class="sourceLineNo">2716</span>  /**<a name="line.2716"></a>
-<span class="sourceLineNo">2717</span>   * Method to safely get the next sequence number.<a name="line.2717"></a>
-<span class="sourceLineNo">2718</span>   * @return Next sequence number unassociated with any actual edit.<a name="line.2718"></a>
-<span class="sourceLineNo">2719</span>   * @throws IOException<a name="line.2719"></a>
-<span class="sourceLineNo">2720</span>   */<a name="line.2720"></a>
-<span class="sourceLineNo">2721</span>  @VisibleForTesting<a name="line.2721"></a>
-<span class="sourceLineNo">2722</span>  protected long getNextSequenceId(final WAL wal) throws IOException {<a name="line.2722"></a>
-<span class="sourceLineNo">2723</span>    WriteEntry we = mvcc.begin();<a name="line.2723"></a>
-<span class="sourceLineNo">2724</span>    mvcc.completeAndWait(we);<a name="line.2724"></a>
-<span class="sourceLineNo">2725</span>    return we.getWriteNumber();<a name="line.2725"></a>
-<span class="sourceLineNo">2726</span>  }<a name="line.2726"></a>
-<span class="sourceLineNo">2727</span><a name="line.2727"></a>
-<span class="sourceLineNo">2728</span>  //////////////////////////////////////////////////////////////////////////////<a name="line.2728"></a>
-<span class="sourceLineNo">2729</span>  // get() methods for client use.<a name="line.2729"></a>
-<span class="sourceLineNo">2730</span>  //////////////////////////////////////////////////////////////////////////////<a name="line.2730"></a>
-<span class="sourceLineNo">2731</span><a name="line.2731"></a>
-<span class="sourceLineNo">2732</span>  @Override<a name="line.2732"></a>
-<span class="sourceLineNo">2733</span>  public RegionScannerImpl getScanner(Scan scan) throws IOException {<a name="line.2733"></a>
-<span class="sourceLineNo">2734</span>   return getScanner(scan, null);<a name="line.2734"></a>
-<span class="sourceLineNo">2735</span>  }<a name="line.2735"></a>
-<span class="sourceLineNo">2736</span><a name="line.2736"></a>
-<span class="sourceLineNo">2737</span>  @Override<a name="line.2737"></a>
-<span class="sourceLineNo">2738</span>  public RegionScannerImpl getScanner(Scan scan, List&lt;KeyValueScanner&gt; additionalScanners)<a name="line.2738"></a>
-<span class="sourceLineNo">2739</span>      throws IOException {<a name="line.2739"></a>
-<span class="sourceLineNo">2740</span>    return getScanner(scan, additionalScanners, HConstants.NO_NONCE, HConstants.NO_NONCE);<a name="line.2740"></a>
-<span class="sourceLineNo">2741</span>  }<a name="line.2741"></a>
-<span class="sourceLineNo">2742</span><a name="line.2742"></a>
-<span class="sourceLineNo">2743</span>  private RegionScannerImpl getScanner(Scan scan, List&lt;KeyValueScanner&gt; additionalScanners,<a name="line.2743"></a>
-<span class="sourceLineNo">2744</span>      long nonceGroup, long nonce) throws IOException {<a name="line.2744"></a>
-<span class="sourceLineNo">2745</span>    startRegionOperation(Operation.SCAN);<a name="line.2745"></a>
-<span class="sourceLineNo">2746</span>    try {<a name="line.2746"></a>
-<span class="sourceLineNo">2747</span>      // Verify families are all valid<a name="line.2747"></a>
-<span class="sourceLineNo">2748</span>      if (!scan.hasFamilies()) {<a name="line.2748"></a>
-<span class="sourceLineNo">2749</span>        // Adding all families to scanner<a name="line.2749"></a>
-<span class="sourceLineNo">2750</span>        for (byte[] family : this.htableDescriptor.getColumnFamilyNames()) {<a name="line.2750"></a>
-<span class="sourceLineNo">2751</span>          scan.addFamily(family);<a name="line.2751"></a>
-<span class="sourceLineNo">2752</span>        }<a name="line.2752"></a>
-<span class="sourceLineNo">2753</span>      } else {<a name="line.2753"></a>
-<span class="sourceLineNo">2754</span>        for (byte[] family : scan.getFamilyMap().keySet()) {<a name="line.2754"></a>
-<span class="sourceLineNo">2755</span>          checkFamily(family);<a name="line.2755"></a>
-<span class="sourceLineNo">2756</span>        }<a name="line.2756"></a>
-<span class="sourceLineNo">2757</span>      }<a name="line.2757"></a>
-<span class="sourceLineNo">2758</span>      return instantiateRegionScanner(scan, additionalScanners, nonceGroup, nonce);<a name="line.2758"></a>
-<span class="sourceLineNo">2759</span>    } finally {<a name="line.2759"></a>
-<span class="sourceLineNo">2760</span>      closeRegionOperation(Operation.SCAN);<a name="line.2760"></a>
-<span class="sourceLineNo">2761</span>    }<a name="line.2761"></a>
-<span class="sourceLineNo">2762</span>  }<a name="line.2762"></a>
-<span class="sourceLineNo">2763</span><a name="line.2763"></a>
-<span class="sourceLineNo">2764</span>  protected RegionScanner instantiateRegionScanner(Scan scan,<a name="line.2764"></a>
-<span class="sourceLineNo">2765</span>      List&lt;KeyValueScanner&gt; additionalScanners) throws IOException {<a name="line.2765"></a>
-<span class="sourceLineNo">2766</span>    return instantiateRegionScanner(scan, additionalScanners, HConstants.NO_NONCE,<a name="line.2766"></a>
-<span class="sourceLineNo">2767</span>      HConstants.NO_NONCE);<a name="line.2767"></a>
-<span class="sourceLineNo">2768</span>  }<a name="line.2768"></a>
-<span class="sourceLineNo">2769</span><a name="line.2769"></a>
-<span class="sourceLineNo">2770</span>  protected RegionScannerImpl instantiateRegionScanner(Scan scan,<a name="line.2770"></a>
-<span class="sourceLineNo">2771</span>      List&lt;KeyValueScanner&gt; additionalScanners, long nonceGroup, long nonce) throws IOException {<a name="line.2771"></a>
-<span class="sourceLineNo">2772</span>    if (scan.isReversed()) {<a name="line.2772"></a>
-<span class="sourceLineNo">2773</span>      if (scan.getFilter() != null) {<a name="line.2773"></a>
-<span class="sourceLineNo">2774</span>        scan.getFilter().setReversed(true);<a name="line.2774"></a>
-<span class="sourceLineNo">2775</span>      }<a name="line.2775"></a>
-<span class="sourceLineNo">2776</span>      return new ReversedRegionScannerImpl(scan, additionalScanners, this);<a name="line.2776"></a>
-<span class="sourceLineNo">2777</span>    }<a name="line.2777"></a>
-<span class="sourceLineNo">2778</span>    return new RegionScannerImpl(scan, additionalScanners, this, nonceGroup, nonce);<a name="line.2778"></a>
-<span class="sourceLineNo">2779</span>  }<a name="line.2779"></a>
-<span class="sourceLineNo">2780</span><a name="line.2780"></a>
-<span class="sourceLineNo">2781</span>  /**<a name="line.2781"></a>
-<span class="sourceLineNo">2782</span>   * Prepare a delete for a row mutation processor<a name="line.2782"></a>
-<span class="sourceLineNo">2783</span>   * @param delete The passed delete is modified by this method. WARNING!<a name="line.2783"></a>
-<span class="sourceLineNo">2784</span>   * @throws IOException<a name="line.2784"></a>
-<span class="sourceLineNo">2785</span>   */<a name="line.2785"></a>
-<span class="sourceLineNo">2786</span>  public void prepareDelete(Delete delete) throws IOException {<a name="line.2786"></a>
-<span class="sourceLineNo">2787</span>    // Check to see if this is a deleteRow insert<a name="line.2787"></a>
-<span class="sourceLineNo">2788</span>    if(delete.getFamilyCellMap().isEmpty()){<a name="line.2788"></a>
-<span class="sourceLineNo">2789</span>      for(byte [] family : this.htableDescriptor.getColumnFamilyNames()){<a name="line.2789"></a>
-<span class="sourceLineNo">2790</span>        // Don't eat the timestamp<a name="line.2790"></a>
-<span class="sourceLineNo">2791</span>        delete.addFamily(family, delete.getTimeStamp());<a name="line.2791"></a>
-<span class="sourceLineNo">2792</span>      }<a name="line.2792"></a>
-<span class="sourceLineNo">2793</span>    } else {<a name="line.2793"></a>
-<span class="sourceLineNo">2794</span>      for(byte [] family : delete.getFamilyCellMap().keySet()) {<a name="line.2794"></a>
-<span class="sourceLineNo">2795</span>        if(family == null) {<a name="line.2795"></a>
-<span class="sourceLineNo">2796</span>          throw new NoSuchColumnFamilyException("Empty family is invalid");<a name="line.2796"></a>
-<span class="sourceLineNo">2797</span>        }<a name="line.2797"></a>
-<span class="sourceLineNo">2798</span>        checkFamily(family);<a name="line.2798"></a>
-<span class="sourceLineNo">2799</span>      }<a name="line.2799"></a>
-<span class="sourceLineNo">2800</span>    }<a name="line.2800"></a>
-<span class="sourceLineNo">2801</span>  }<a name="line.2801"></a>
-<span class="sourceLineNo">2802</span><a name="line.2802"></a>
-<span class="sourceLineNo">2803</span>  @Override<a name="line.2803"></a>
-<span class="sourceLineNo">2804</span>  public void delete(Delete delete) throws IOException {<a name="line.2804"></a>
-<span class="sourceLineNo">2805</span>    checkReadOnly();<a name="line.2805"></a>
-<span class="sourceLineNo">2806</span>    checkResources();<a name="line.2806"></a>
-<span class="sourceLineNo">2807</span>    startRegionOperation(Operation.DELETE);<a name="line.2807"></a>
-<span class="sourceLineNo">2808</span>    try {<a name="line.2808"></a>
-<span class="sourceLineNo">2809</span>      // All edits for the given row (across all column families) must happen atomically.<a name="line.2809"></a>
-<span class="sourceLineNo">2810</span>      doBatchMutate(delete);<a name="line.2810"></a>
-<span class="sourceLineNo">2811</span>    } finally {<a name="line.2811"></a>
-<span class="sourceLineNo">2812</span>      closeRegionOperation(Operation.DELETE);<a name="line.2812"></a>
-<span class="sourceLineNo">2813</span>    }<a name="line.2813"></a>
-<span class="sourceLineNo">2814</span>  }<a name="line.2814"></a>
-<span class="sourceLineNo">2815</span><a name="line.2815"></a>
-<span class="sourceLineNo">2816</span>  /**<a name="line.2816"></a>
-<span class="sourceLineNo">2817</span>   * Row needed by below method.<a name="line.2817"></a>
-<span class="sourceLineNo">2818</span>   */<a name="line.2818"></a>
-<span class="sourceLineNo">2819</span>  private static final byte [] FOR_UNIT_TESTS_ONLY = Bytes.toBytes("ForUnitTestsOnly");<a name="line.2819"></a>
-<span class="sourceLineNo">2820</span><a name="line.2820"></a>
-<span class="sourceLineNo">2821</span>  /**<a name="line.2821"></a>
-<span class="sourceLineNo">2822</span>   * This is used only by unit tests. Not required to be a public API.<a name="line.2822"></a>
-<span class="sourceLineNo">2823</span>   * @param familyMap map of family to edits for the given family.<a name="line.2823"></a>
-<span class="sourceLineNo">2824</span>   * @throws IOException<a name="line.2824"></a>
-<span class="sourceLineNo">2825</span>   */<a name="line.2825"></a>
-<span class="sourceLineNo">2826</span>  void delete(NavigableMap&lt;byte[], List&lt;Cell&gt;&gt; familyMap,<a name="line.2826"></a>
-<span class="sourceLineNo">2827</span>      Durability durability) throws IOException {<a name="line.2827"></a>
-<span class="sourceLineNo">2828</span>    Delete delete = new Delete(FOR_UNIT_TESTS_ONLY);<a name="line.2828"></a>
-<span class="sourceLineNo">2829</span>    delete.setFamilyCellMap(familyMap);<a name="line.2829"></a>
-<span class="sourceLineNo">2830</span>    delete.setDurability(durability);<a name="line.2830"></a>
-<span class="sourceLineNo">2831</span>    doBatchMutate(delete);<a name="line.2831"></a>
-<span class="sourceLineNo">2832</span>  }<a name="line.2832"></a>
-<span class="sourceLineNo">2833</span><a name="line.2833"></a>
-<span class="sourceLineNo">2834</span>  /**<a name="line.2834"></a>
-<span class="sourceLineNo">2835</span>   * Set up correct timestamps in the KVs in Delete object.<a name="line.2835"></a>
-<span class="sourceLineNo">2836</span>   * &lt;p&gt;Caller should have the row and region locks.<a name="line.2836"></a>
-<span class="sourceLineNo">2837</span>   * @param mutation<a name="line.2837"></a>
-<span class="sourceLineNo">2838</span>   * @param familyMap<a name="line.2838"></a>
-<span class="sourceLineNo">2839</span>   * @param byteNow<a name="line.2839"></a>
-<span class="sourceLineNo">2840</span>   * @throws IOException<a name="line.2840"></a>
-<span class="sourceLineNo">2841</span>   */<a name="line.2841"></a>
-<span class="sourceLineNo">2842</span>  public void prepareDeleteTimestamps(Mutation mutation, Map&lt;byte[], List&lt;Cell&gt;&gt; familyMap,<a name="line.2842"></a>
-<span class="sourceLineNo">2843</span>      byte[] byteNow) throws IOException {<a name="line.2843"></a>
-<span class="sourceLineNo">2844</span>    for (Map.Entry&lt;byte[], List&lt;Cell&gt;&gt; e : familyMap.entrySet()) {<a name="line.2844"></a>
-<span class="sourceLineNo">2845</span><a name="line.2845"></a>
-<span class="sourceLineNo">2846</span>      byte[] family = e.getKey();<a name="line.2846"></a>
-<span class="sourceLineNo">2847</span>      List&lt;Cell&gt; cells = e.getValue();<a name="line.2847"></a>
-<span class="sourceLineNo">2848</span>      assert cells instanceof RandomAccess;<a name="line.2848"></a>
-<span class="sourceLineNo">2849</span><a name="line.2849"></a>
-<span class="sourceLineNo">2850</span>      Map&lt;byte[], Integer&gt; kvCount = new TreeMap&lt;&gt;(Bytes.BYTES_COMPARATOR);<a name="line.2850"></a>
-<span class="sourceLineNo">2851</span>      int listSize = cells.size();<a name="line.2851"></a>
-<span class="sourceLineNo">2852</span>      for (int i=0; i &lt; listSize; i++) {<a name="line.2852"></a>
-<span class="sourceLineNo">2853</span>        Cell cell = cells.get(i);<a name="line.2853"></a>
-<span class="sourceLineNo">2854</span>        //  Check if time is LATEST, change to time of most recent addition if so<a name="line.2854"></a>
-<span class="sourceLineNo">2855</span>        //  This is expensive.<a name="line.2855"></a>
-<span class="sourceLineNo">2856</span>        if (cell.getTimestamp() == HConstants.LATEST_TIMESTAMP<a name="line.2856"></a>
-<span class="sourceLineNo">2857</span>            &amp;&amp; PrivateCellUtil.isDeleteType(cell)) {<a name="line.2857"></a>
-<span class="sourceLineNo">2858</span>          byte[] qual = CellUtil.cloneQualifier(cell);<a name="line.2858"></a>
-<span class="sourceLineNo">2859</span><a name="line.2859"></a>
-<span class="sourceLineNo">2860</span>          Integer count = kvCount.get(qual);<a name="line.2860"></a>
-<span class="sourceLineNo">2861</span>          if (count == null) {<a name="line.2861"></a>
-<span class="sourceLineNo">2862</span>            kvCount.put(qual, 1);<a name="line.2862"></a>
-<span class="sourceLineNo">2863</span>          } else {<a name="line.2863"></a>
-<span class="sourceLineNo">2864</span>            kvCount.put(qual, count + 1);<a name="line.2864"></a>
-<span class="sourceLineNo">2865</span>          }<a name="line.2865"></a>
-<span class="sourceLineNo">2866</span>          count = kvCount.get(qual);<a name="line.2866"></a>
-<span class="sourceLineNo">2867</span><a name="line.2867"></a>
-<span class="sourceLineNo">2868</span>          Get get = new Get(CellUtil.cloneRow(cell));<a name="line.2868"></a>
-<span class="sourceLineNo">2869</span>          get.setMaxVersions(count);<a name="line.2869"></a>
-<span class="sourceLineNo">2870</span>          get.addColumn(family, qual);<a name="line.2870"></a>
-<span class="sourceLineNo">2871</span>          if (coprocessorHost != null) {<a name="line.2871"></a>
-<span class="sourceLineNo">2872</span>            if (!coprocessorHost.prePrepareTimeStampForDeleteVersion(mutation, cell,<a name="line.2872"></a>
-<span class="sourceLineNo">2873</span>                byteNow, get)) {<a name="line.2873"></a>
-<span class="sourceLineNo">2874</span>              updateDeleteLatestVersionTimeStamp(cell, get, count, byteNow);<a name="line.2874"></a>
-<span class="sourceLineNo">2875</span>            }<a name="line.2875"></a>
-<span class="sourceLineNo">2876</span>          } else {<a name="line.2876"></a>
-<span class="sourceLineNo">2877</span>            updateDeleteLatestVersionTimeStamp(cell, get, count, byteNow);<a name="line.2877"></a>
-<span class="sourceLineNo">2878</span>          }<a name="line.2878"></a>
-<span class="sourceLineNo">2879</span>        } else {<a name="line.2879"></a>
-<span class="sourceLineNo">2880</span>          PrivateCellUtil.updateLatestStamp(cell, byteNow, 0);<a name="line.2880"></a>
-<span class="sourceLineNo">2881</span>        }<a name="line.2881"></a>
-<span class="sourceLineNo">2882</span>      }<a name="line.2882"></a>
-<span class="sourceLineNo">2883</span>    }<a name="line.2883"></a>
-<span class="sourceLineNo">2884</span>  }<a name="line.2884"></a>
-<span class="sourceLineNo">2885</span><a name="line.2885"></a>
-<span class="sourceLineNo">2886</span>  void updateDeleteLatestVersionTimeStamp(Cell cell, Get get, int count, byte[] byteNow)<a name="line.2886"></a>
-<span class="sourceLineNo">2887</span>      throws IOException {<a name="line.2887"></a>
-<span class="sourceLineNo">2888</span>    List&lt;Cell&gt; result = get(get, false);<a name="line.2888"></a>
-<span class="sourceLineNo">2889</span><a name="line.2889"></a>
-<span class="sourceLineNo">2890</span>    if (result.size() &lt; count) {<a name="line.2890"></a>
-<span class="sourceLineNo">2891</span>      // Nothing to delete<a name="line.2891"></a>
-<span class="sourceLineNo">2892</span>      PrivateCellUtil.updateLatestStamp(cell, byteNow, 0);<a name="line.2892"></a>
-<span class="sourceLineNo">2893</span>      return;<a name="line.2893"></a>
-<span class="sourceLineNo">2894</span>    }<a name="line.2894"></a>
-<span class="sourceLineNo">2895</span>    if (result.size() &gt; count) {<a name="line.2895"></a>
-<span class="sourceLineNo">2896</span>      throw new RuntimeException("Unexpected size: " + result.size());<a name="line.2896"></a>
-<span class="sourceLineNo">2897</span>    }<a name="line.2897"></a>
-<span class="sourceLineNo">2898</span>    Cell getCell = result.get(count - 1);<a name="line.2898"></a>
-<span class="sourceLineNo">2899</span>    PrivateCellUtil.setTimestamp(cell, getCell.getTimestamp());<a name="line.2899"></a>
-<span class="sourceLineNo">2900</span>  }<a name="line.2900"></a>
-<span class="sourceLineNo">2901</span><a name="line.2901"></a>
-<span class="sourceLineNo">2902</span>  @Override<a name="line.2902"></a>
-<span class="sourceLineNo">2903</span>  public void put(Put put) throws IOException {<a name="line.2903"></a>
-<span class="sourceLineNo">2904</span>    checkReadOnly();<a name="line.2904"></a>
-<span class="sourceLineNo">2905</span><a name="line.2905"></a>
-<span class="sourceLineNo">2906</span>    // Do a rough check that we have resources to accept a write.  The check is<a name="line.2906"></a>
-<span class="sourceLineNo">2907</span>    // 'rough' in that between the resource check and the call to obtain a<a name="line.2907"></a>
-<span class="sourceLineNo">2908</span>    // read lock, resources may run out.  For now, the thought is that this<a name="line.2908"></a>
-<span class="sourceLineNo">2909</span>    // will be extremely rare; we'll deal with it when it happens.<a name="line.2909"></a>
-<span class="sourceLineNo">2910</span>    checkResources();<a name="line.2910"></a>
-<span class="sourceLineNo">2911</span>    startRegionOperation(Operation.PUT);<a name="line.2911"></a>
-<span class="sourceLineNo">2912</span>    try {<a name="line.2912"></a>
-<span class="sourceLineNo">2913</span>      // All edits for the given row (across all column families) must happen atomically.<a name="line.2913"></a>
-<span class="sourceLineNo">2914</span>      doBatchMutate(put);<a name="line.2914"></a>
-<span class="sourceLineNo">2915</span>    } finally {<a name="line.2915"></a>
-<span class="sourceLineNo">2916</span>      closeRegionOperation(Operation.PUT);<a name="line.2916"></a>
-<span class="sourceLineNo">2917</span>    }<a name="line.2917"></a>
-<span class="sourceLineNo">2918</span>  }<a name="line.2918"></a>
-<span class="sourceLineNo">2919</span><a name="line.2919"></a>
-<span class="sourceLineNo">2920</span>  /**<a name="line.2920"></a>
-<span class="sourceLineNo">2921</span>   * Class that tracks the progress of a batch operations, accumulating status codes and tracking<a name="line.2921"></a>
-<span class="sourceLineNo">2922</span>   * the index at which processing is proceeding. These batch operations may get split into<a name="line.2922"></a>
-<span class="sourceLineNo">2923</span>   * mini-batches for processing.<a name="line.2923"></a>
-<span class="sourceLineNo">2924</span>   */<a name="line.2924"></a>
-<span class="sourceLineNo">2925</span>  private abstract static class BatchOperation&lt;T&gt; {<a name="line.2925"></a>
-<span class="sourceLineNo">2926</span>    protected final T[] operations;<a name="line.2926"></a>
-<span class="sourceLineNo">2927</span>    protected final OperationStatus[] retCodeDetails;<a name="line.2927"></a>
-<span class="sourceLineNo">2928</span>    protected final WALEdit[] walEditsFromCoprocessors;<a name="line.2928"></a>
-<span class="sourceLineNo">2929</span>    // reference family cell maps directly so coprocessors can mutate them if desired<a name="line.2929"></a>
-<span class="sourceLineNo">2930</span>    protected final Map&lt;byte[], List&lt;Cell&gt;&gt;[] familyCellMaps;<a name="line.2930"></a>
-<span class="sourceLineNo">2931</span><a name="line.2931"></a>
-<span class="sourceLineNo">2932</span>    protected final HRegion region;<a name="line.2932"></a>
-<span class="sourceLineNo">2933</span>    protected int nextIndexToProcess = 0;<a name="line.2933"></a>
-<span class="sourceLineNo">2934</span>    protected final ObservedExceptionsInBatch observedExceptions;<a name="line.2934"></a>
-<span class="sourceLineNo">2935</span>    //Durability of the batch (highest durability of all operations)<a name="line.2935"></a>
-<span class="sourceLineNo">2936</span>    protected Durability durability;<a name="line.2936"></a>
-<span class="sourceLineNo">2937</span>    protected boolean atomic = false;<a name="line.2937"></a>
-<span class="sourceLineNo">2938</span><a name="line.2938"></a>
-<span class="sourceLineNo">2939</span>    public BatchOperation(final HRegion region, T[] operations) {<a name="line.2939"></a>
-<span class="sourceLineNo">2940</span>      this.operations = operations;<a name="line.2940"></a>
-<span class="sourceLineNo">2941</span>      this.retCodeDetails = new OperationStatus[operations.length];<a name="line.2941"></a>
-<span class="sourceLineNo">2942</span>      Arrays.fill(this.retCodeDetails, OperationStatus.NOT_RUN);<a name="line.2942"></a>
-<span class="sourceLineNo">2943</span>      this.walEditsFromCoprocessors = new WALEdit[operations.length];<a name="line.2943"></a>
-<span class="sourceLineNo">2944</span>      familyCellMaps = new Map[operations.length];<a name="line.2944"></a>
-<span class="sourceLineNo">2945</span><a name="line.2945"></a>
-<span class="sourceLineNo">2946</span>      this.region = region;<a name="line.2946"></a>
-<span class="sourceLineNo">2947</span>      observedExceptions = new ObservedExceptionsInBatch();<a name="line.2947"></a>
-<span class="sourceLineNo">2948</span>      durability = Durability.USE_DEFAULT;<a name="line.2948"></a>
-<span class="sourceLineNo">2949</span>    }<a name="line.2949"></a>
-<span class="sourceLineNo">2950</span><a name="line.2950"></a>
-<span class="sourceLineNo">2951</span>    /**<a name="line.2951"></a>
-<span class="sourceLineNo">2952</span>     * Visitor interface for batch operations<a name="line.2952"></a>
-<span class="sourceLineNo">2953</span>     */<a name="line.2953"></a>
-<span class="sourceLineNo">2954</span>    @FunctionalInterface<a name="line.2954"></a>
-<span class="sourceLineNo">2955</span>    public interface Visitor {<a name="line.2955"></a>
-<span class="sourceLineNo">2956</span>      /**<a name="line.2956"></a>
-<span class="sourceLineNo">2957</span>       * @param index operation index<a name="line.2957"></a>
-<span class="sourceLineNo">2958</span>       * @return If true continue visiting remaining entries, break otherwise<a name="line.2958"></a>
-<span class="sourceLineNo">2959</span>       */<a name="line.2959"></a>
-<span class="sourceLineNo">2960</span>      boolean visit(int index) throws IOException;<a name="line.2960"></a>
-<span class="sourceLineNo">2961</span>    }<a name="line.2961"></a>
-<span class="sourceLineNo">2962</span><a name="line.2962"></a>
-<span class="sourceLineNo">2963</span>    /**<a name="line.2963"></a>
-<span class="sourceLineNo">2964</span>     * Helper method for visiting pending/ all batch operations<a name="line.2964"></a>
-<span class="sourceLineNo">2965</span>     */<a name="line.2965"></a>
-<span class="sourceLineNo">2966</span>    public void visitBatchOperations(boolean pendingOnly, int lastIndexExclusive, Visitor visitor)<a name="line.2966"></a>
-<span class="sourceLineNo">2967</span>        throws IOException {<a name="line.2967"></a>
-<span class="sourceLineNo">2968</span>      assert lastIndexExclusive &lt;= this.size();<a name="line.2968"></a>
-<span class="sourceLineNo">2969</span>      for (int i = nextIndexToProcess; i &lt; lastIndexExclusive; i++) {<a name="line.2969"></a>
-<span class="sourceLineNo">2970</span>        if (!pendingOnly || isOperationPending(i)) {<a name="line.2970"></a>
-<span class="sourceLineNo">2971</span>          if (!visitor.visit(i)) {<a name="line.2971"></a>
-<span class="sourceLineNo">2972</span>            break;<a name="line.2972"></a>
-<span class="sourceLineNo">2973</span>          }<a name="line.2973"></a>
-<span class="sourceLineNo">2974</span>        }<a name="line.2974"></a>
-<span class="sourceLineNo">2975</span>      }<a name="line.2975"></a>
-<span class="sourceLineNo">2976</span>    }<a name="line.2976"></a>
-<span class="sourceLineNo">2977</span><a name="line.2977"></a>
-<span class="sourceLineNo">2978</span>    public abstract Mutation getMutation(int index);<a name="line.2978"></a>
-<span class="sourceLineNo">2979</span>    public abstract long getNonceGroup(int index);<a name="line.2979"></a>
-<span class="sourceLineNo">2980</span>    public abstract long getNonce(int index);<a name="line.2980"></a>
-<span class="sourceLineNo">2981</span>    /** This method is potentially expensive and useful mostly for non-replay CP path. */<a name="line.2981"></a>
-<span class="sourceLineNo">2982</span>    public abstract Mutation[] getMutationsForCoprocs();<a name="line.2982"></a>
-<span class="sourceLineNo">2983</span>    public abstract boolean isInReplay();<a name="line.2983"></a>
-<span class="sourceLineNo">2984</span>    public abstract long getOrigLogSeqNum();<a name="line.2984"></a>
-<span class="sourceLineNo">2985</span>    public abstract void startRegionOperation() throws IOException;<a name="line.2985"></a>
-<span class="sourceLineNo">2986</span>    public abstract void closeRegionOperation() throws IOException;<a name="line.2986"></a>
-<span class="sourceLineNo">2987</span><a name="line.2987"></a>
-<span class="sourceLineNo">2988</span>    /**<a name="line.2988"></a>
-<span class="sourceLineNo">2989</span>     * Validates each mutation and prepares a batch for write. If necessary (non-replay case), runs<a name="line.2989"></a>
-<span class="sourceLineNo">2990</span>     * CP prePut()/ preDelete() hooks for all mutations in a batch. This is intended to operate on<a name="line.2990"></a>
-<span class="sourceLineNo">2991</span>     * entire batch and will be called from outside of class to check and prepare batch. This can<a name="line.2991"></a>
-<span class="sourceLineNo">2992</span>     * be implemented by calling helper method {@link #checkAndPrepareMutation(int, long)} in a<a name="line.2992"></a>
-<span class="sourceLineNo">2993</span>     * 'for' loop over mutations.<a name="line.2993"></a>
-<span class="sourceLineNo">2994</span>     */<a name="line.2994"></a>
-<span class="sourceLineNo">2995</span>    public abstract void checkAndPrepare() throws IOException;<a name="line.2995"></a>
-<span class="sourceLineNo">2996</span><a name="line.2996"></a>
-<span class="sourceLineNo">2997</span>    /**<a name="line.2997"></a>
-<span class="sourceLineNo">2998</span>     * Implement any Put request specific check and prepare logic here. Please refer to<a name="line.2998"></a>
-<span class="sourceLineNo">2999</span>     * {@link #checkAndPrepareMutation(Mutation, long)} for how its used.<a name="line.2999"></a>
-<span class="sourceLineNo">3000</span>     */<a name="line.3000"></a>
-<span class="sourceLineNo">3001</span>    protected abstract void checkAndPreparePut(final Put p) throws IOException;<a name="line.3001"></a>
-<span class="sourceLineNo">3002</span><a name="line.3002"></a>
-<span class="sourceLineNo">3003</span>    /**<a name="line.3003"></a>
-<span class="sourceLineNo">3004</span>     *  If necessary, calls preBatchMutate() CP hook for a mini-batch and updates metrics, cell<a name="line.3004"></a>
-<span class="sourceLineNo">3005</span>     *  count, tags and timestamp for all cells of all operations in a mini-batch.<a name="line.3005"></a>
-<span class="sourceLineNo">3006</span>     */<a name="line.3006"></a>
-<span class="sourceLineNo">3007</span>    public abstract void prepareMiniBatchOperations(MiniBatchOperationInProgress&lt;Mutation&gt;<a name="line.3007"></a>
-<span class="sourceLineNo">3008</span>        miniBatchOp, long timestamp, final List&lt;RowLock&gt; acquiredRowLocks) throws IOException;<a name="line.3008"></a>
-<span class="sourceLineNo">3009</span><a name="line.3009"></a>
-<span class="sourceLineNo">3010</span>    /**<a name="line.3010"></a>
-<span class="sourceLineNo">3011</span>     * Write mini-batch operations to MemStore<a name="line.3011"></a>
-<span class="sourceLineNo">3012</span>     */<a name="line.3012"></a>
-<span class="sourceLineNo">3013</span>    public abstract WriteEntry writeMiniBatchOperationsToMemStore(<a name="line.3013"></a>
-<span class="sourceLineNo">3014</span>        final MiniBatchOperationInProgress&lt;Mutation&gt; miniBatchOp, final WriteEntry writeEntry)<a name="line.3014"></a>
-<span class="sourceLineNo">3015</span>        throws IOException;<a name="line.3015"></a>
-<span class="sourceLineNo">3016</span><a name="line.3016"></a>
-<span class="sourceLineNo">3017</span>    protected void writeMiniBatchOperationsToMemStore(<a name="line.3017"></a>
-<span class="sourceLineNo">3018</span>        final MiniBatchOperationInProgress&lt;Mutation&gt; miniBatchOp, final long writeNumber)<a name="line.3018"></a>
-<span class="sourceLineNo">3019</span>        throws IOException {<a name="line.3019"></a>
-<span class="sourceLineNo">3020</span>      MemStoreSizing memStoreAccounting = new MemStoreSizing();<a name="line.3020"></a>
-<span class="sourceLineNo">3021</span>      visitBatchOperations(true, miniBatchOp.getLastIndexExclusive(), (int index) -&gt; {<a name="line.3021"></a>
-<span class="sourceLineNo">3022</span>        // We need to update the sequence id for following reasons.<a name="line.3022"></a>
-<span class="sourceLineNo">3023</span>        // 1) If the op is in replay mode, FSWALEntry#stampRegionSequenceId won't stamp sequence id.<a name="line.3023"></a>
-<span class="sourceLineNo">3024</span>        // 2) If no WAL, FSWALEntry won't be used<a name="line.3024"></a>
-<span class="sourceLineNo">3025</span>        // we use durability of the original mutation for the mutation passed by CP.<a name="line.3025"></a>
-<span class="sourceLineNo">3026</span>        if (isInReplay() || getMutation(index).getDurability() == Durability.SKIP_WAL) {<a name="line.3026"></a>
-<span class="sourceLineNo">3027</span>          region.updateSequenceId(familyCellMaps[index].values(), writeNumber);<a name="line.3027"></a>
-<span class="sourceLineNo">3028</span>        }<a name="line.3028"></a>
-<span class="sourceLineNo">3029</span>        applyFamilyMapToMemStore(familyCellMaps[index], memStoreAccounting);<a name="line.3029"></a>
-<span class="sourceLineNo">3030</span>        return true;<a name="line.3030"></a>
-<span class="sourceLineNo">3031</span>      });<a name="line.3031"></a>
-<span class="sourceLineNo">3032</span>      // update memStore size<a name="line.3032"></a>
-<span class="sourceLineNo">3033</span>      region.addAndGetMemStoreSize(memStoreAccounting);<a name="line.3033"></a>
-<span class="sourceLineNo">3034</span>    }<a name="line.3034"></a>
-<span class="sourceLineNo">3035</span><a name="line.3035"></a>
-<span class="sourceLineNo">3036</span>    public boolean isDone() {<a name="line.3036"></a>
-<span class="sourceLineNo">3037</span>      return nextIndexToProcess == operations.length;<a name="line.3037"></a>
-<span class="sourceLineNo">3038</span>    }<a name="line.3038"></a>
-<span class="sourceLineNo">3039</span><a name="line.3039"></a>
-<span class="sourceLineNo">3040</span>    public int size() {<a name="line.3040"></a>
-<span class="sourceLineNo">3041</span>      return operations.length;<a name="line.3041"></a>
-<span class="sourceLineNo">3042</span>    }<a name="line.3042"></a>
-<span class="sourceLineNo">3043</span><a name="line.3043"></a>
-<span class="sourceLineNo">3044</span>    public boolean isOperationPending(int index) {<a name="line.3044"></a>
-<span class="sourceLineNo">3045</span>      return retCodeDetails[index].getOperationStatusCode() == OperationStatusCode.NOT_RUN;<a name="line.3045"></a>
-<span class="sourceLineNo">3046</span>    }<a name="line.3046"></a>
-<span class="sourceLineNo">3047</span><a name="line.3047"></a>
-<span class="sourceLineNo">3048</span>    public List&lt;UUID&gt; getClusterIds() {<a name="line.3048"></a>
-<span class="sourceLineNo">3049</span>      assert size() != 0;<a name="line.3049"></a>
-<span class="sourceLineNo">3050</span>      return getMutation(0).getClusterIds();<a name="line.3050"></a>
-<span class="sourceLineNo">3051</span>    }<a name="line.3051"></a>
-<span class="sourceLineNo">3052</span><a name="line.3052"></a>
-<span class="sourceLineNo">3053</span>    boolean isAtomic() {<a name="line.3053"></a>
-<span class="sourceLineNo">3054</span>      return atomic;<a name="line.3054"></a>
-<span class="sourceLineNo">3055</span>    }<a name="line.3055"></a>
-<span class="sourceLineNo">3056</span><a name="line.3056"></a>
-<span class="sourceLineNo">3057</span>    /**<a name="line.3057"></a>
-<span class="sourceLineNo">3058</span>     * Helper method that checks and prepares only one mutation. This can be used to implement<a name="line.3058"></a>
-<span class="sourceLineNo">3059</span>     * {@link #checkAndPrepare()} for entire Batch.<a name="line.3059"></a>
-<span class="sourceLineNo">3060</span>     * NOTE: As CP prePut()/ preDelete() hooks may modify mutations, this method should be called<a name="line.3060"></a>
-<span class="sourceLineNo">3061</span>     * after prePut()/ preDelete() CP hooks are run for the mutation<a name="line.3061"></a>
-<span class="sourceLineNo">3062</span>     */<a name="line.3062"></a>
-<span class="sourceLineNo">3063</span>    protected void checkAndPrepareMutation(Mutation mutation, final long timestamp)<a name="line.3063"></a>
-<span class="sourceLineNo">3064</span>        throws IOException {<a name="line.3064"></a>
-<span class="sourceLineNo">3065</span>      region.checkRow(mutation.getRow(), "batchMutate");<a name="line.3065"></a>
-<span class="sourceLineNo">3066</span>      if (mutation instanceof Put) {<a name="line.3066"></a>
-<span class="sourceLineNo">3067</span>        // Check the families in the put. If bad, skip this one.<a name="line.3067"></a>
-<span class="sourceLineNo">3068</span>        checkAndPreparePut((Put) mutation);<a name="line.3068"></a>
-<span class="sourceLineNo">3069</span>        region.checkTimestamps(mutation.getFamilyCellMap(), timestamp);<a name="line.3069"></a>
-<span class="sourceLineNo">3070</span>      } else {<a name="line.3070"></a>
-<span class="sourceLineNo">3071</span>        region.prepareDelete((Delete) mutation);<a name="line.3071"></a>
-<span class="sourceLineNo">3072</span>      }<a name="line.3072"></a>
-<span class="sourceLineNo">3073</span>    }<a name="line.3073"></a>
-<span class="sourceLineNo">3074</span><a name="line.3074"></a>
-<span class="sourceLineNo">3075</span>    protected void checkAndPrepareMutation(int index, long timestamp) throws IOException {<a name="line.3075"></a>
-<span class="sourceLineNo">3076</span>      Mutation mutation = getMutation(index);<a name="line.3076"></a>
-<span class="sourceLineNo">3077</span>      try {<a name="line.3077"></a>
-<span class="sourceLineNo">3078</span>        this.checkAndPrepareMutation(mutation, timestamp);<a name="line.3078"></a>
-<span class="sourceLineNo">3079</span><a name="line.3079"></a>
-<span class="sourceLineNo">3080</span>        // store the family map reference to allow for mutations<a name="line.3080"></a>
-<span class="sourceLineNo">3081</span>        familyCellMaps[index] = mutation.getFamilyCellMap();<a name="line.3081"></a>
-<span class="sourceLineNo">3082</span>        // store durability for the batch (highest durability of all operations in the batch)<a name="line.3082"></a>
-<span class="sourceLineNo">3083</span>        Durability tmpDur = region.getEffectiveDurability(mutation.getDurability());<a name="line.3083"></a>
-<span class="sourceLineNo">3084</span>        if (tmpDur.ordinal() &gt; durability.ordinal()) {<a name="line.3084"></a>
-<span class="sourceLineNo">3085</span>          durability = tmpDur;<a name="line.3085"></a>
-<span class="sourceLineNo">3086</span>        }<a name="line.3086"></a>
-<span class="sourceLineNo">3087</span>      } catch (NoSuchColumnFamilyException nscfe) {<a name="line.3087"></a>
-<span class="sourceLineNo">3088</span>        final String msg = "No such column family in batch mutation. ";<a name="line.3088"></a>
-<span class="sourceLineNo">3089</span>        if (observedExceptions.hasSeenNoSuchFamily()) {<a name="line.3089"></a>
-<span class="sourceLineNo">3090</span>          LOG.warn(msg + nscfe.getMessage());<a name="line.3090"></a>
-<span class="sourceLineNo">3091</span>        } else {<a name="line.3091"></a>
-<span class="sourceLineNo">3092</span>          LOG.warn(msg, nscfe);<a name="line.3092"></a>
-<span class="sourceLineNo">3093</span>          observedExceptions.sawNoSuchFamily();<a name="line.3093"></a>
-<span class="sourceLineNo">3094</span>        }<a name="line.3094"></a>
-<span class="sourceLineNo">3095</span>        retCodeDetails[index] = new OperationStatus(<a name="line.3095"></a>
-<span class="sourceLineNo">3096</span>            OperationStatusCode.BAD_FAMILY, nscfe.getMessage());<a name="line.3096"></a>
-<span class="sourceLineNo">3097</span>        if (isAtomic()) { // fail, atomic means all or none<a name="line.3097"></a>
-<span class="sourceLineNo">3098</span>          throw nscfe;<a name="line.3098"></a>
-<span class="sourceLineNo">3099</span>        }<a name="line.3099"></a>
-<span class="sourceLineNo">3100</span>      } catch (FailedSanityCheckException fsce) {<a name="line.3100"></a>
-<span class="sourceLineNo">3101</span>        final String msg = "Batch Mutation did not pass sanity check. ";<a name="line.3101"></a>
-<span class="sourceLineNo">3102</span>        if (observedExceptions.hasSeenFailedSanityCheck()) {<a name="line.3102"></a>
-<span class="sourceLineNo">3103</span>          LOG.warn(msg + fsce.getMessage());<a name="line.3103"></a>
-<span class="sourceLineNo">3104</span>        } else {<a name="line.3104"></a>
-<span class="sourceLineNo">3105</span>          LOG.warn(msg, fsce);<a name="line.3105"></a>
-<span class="sourceLineNo">3106</span>          observedExceptions.sawFailedSanityCheck();<a name="line.3106"></a>
-<span class="sourceLineNo">3107</span>        }<a name="line.3107"></a>
-<span class="sourceLineNo">3108</span>        retCodeDetails[index] = new OperationStatus(<a name="line.3108"></a>
-<span class="sourceLineNo">3109</span>            OperationStatusCode.SANITY_CHECK_FAILURE, fsce.getMessage());<a name="line.3109"></a>
-<span class="sourceLineNo">3110</span>        if (isAtomic()) {<a name="line.3110"></a>
-<span class="sourceLineNo">3111</span>          throw fsce;<a name="line.3111"></a>
-<span class="sourceLineNo">3112</span>        }<a name="line.3112"></a>
-<span class="sourceLineNo">3113</span>      } catch (WrongRegionException we) {<a name="line.3113"></a>
-<span class="sourceLineNo">3114</span>        final String msg = "Batch mutation had a row that does not belong to this region. ";<a name="line.3114"></a>
-<span class="sourceLineNo">3115</span>        if (observedExceptions.hasSeenWrongRegion()) {<a name="line.3115"></a>
-<span class="sourceLineNo">3116</span>          LOG.warn(msg + we.getMessage());<a name="line.3116"></a>
-<span class="sourceLineNo">3117</span>        } else {<a name="line.3117"></a>
-<span class="sourceLineNo">3118</span>          LOG.warn(msg, we);<a name="line.3118"></a>
-<span class="sourceLineNo">3119</span>          observedExceptions.sawWrongRegion();<a name="line.3119"></a>
-<span class="sourceLineNo">3120</span>        }<a name="line.3120"></a>
-<span class="sourceLineNo">3121</span>        retCodeDetails[index] = new OperationStatus(<a name="line.3121"></a>
-<span class="sourceLineNo">3122</span>            OperationStatusCode.SANITY_CHECK_FAILURE, we.getMessage());<a name="line.3122"></a>
-<span class="sourceLineNo">3123</span>        if (isAtomic()) {<a name="line.3123"></a>
-<span class="sourceLineNo">3124</span>          throw we;<a name="line.3124"></a>
-<span class="sourceLineNo">3125</span>        }<a name="line.3125"></a>
-<span class="sourceLineNo">3126</span>      }<a name="line.3126"></a>
-<span class="sourceLineNo">3127</span>    }<a name="line.3127"></a>
-<span class="sourceLineNo">3128</span><a name="line.3128"></a>
-<span class="sourceLineNo">3129</span>    /**<a name="line.3129"></a>
-<span class="sourceLineNo">3130</span>     * Creates Mini-batch of all operations [nextIndexToProcess, lastIndexExclusive) for which<a name="line.3130"></a>
-<span class="sourceLineNo">3131</span>     * a row lock can be acquired. All mutations with locked rows are considered to be<a name="line.3131"></a>
-<span class="sourceLineNo">3132</span>     * In-progress operations and hence the name {@link MiniBatchOperationInProgress}. Mini batch<a name="line.3132"></a>
-<span class="sourceLineNo">3133</span>     * is window over {@link BatchOperation} and contains contiguous pending operations.<a name="line.3133"></a>
-<span class="sourceLineNo">3134</span>     *<a name="line.3134"></a>
-<span class="sourceLineNo">3135</span>     * @param acquiredRowLocks keeps track of rowLocks acquired.<a name="line.3135"></a>
-<span class="sourceLineNo">3136</span>     */<a name="line.3136"></a>
-<span class="sourceLineNo">3137</span>    public MiniBatchOperationInProgress&lt;Mutation&gt; lockRowsAndBuildMiniBatch(<a name="line.3137"></a>
-<span class="sourceLineNo">3138</span>        List&lt;RowLock&gt; acquiredRowLocks) throws IOException {<a name="line.3138"></a>
-<span class="sourceLineNo">3139</span>      int readyToWriteCount = 0;<a name="line.3139"></a>
-<span class="sourceLineNo">3140</span>      int lastIndexExclusive = 0;<a name="line.3140"></a>
-<span class="sourceLineNo">3141</span>      for (; lastIndexExclusive &lt; size(); lastIndexExclusive++) {<a name="line.3141"></a>
-<span class="sourceLineNo">3142</span>        if (!isOperationPending(lastIndexExclusive)) {<a name="line.3142"></a>
-<span class="sourceLineNo">3143</span>          continue;<a name="line.3143"></a>
-<span class="sourceLineNo">3144</span>        }<a name="line.3144"></a>
-<span class="sourceLineNo">3145</span>        Mutation mutation = getMutation(lastIndexExclusive);<a name="line.3145"></a>
-<span class="sourceLineNo">3146</span>        // If we haven't got any rows in our batch, we should block to get the next one.<a name="line.3146"></a>
-<span class="sourceLineNo">3147</span>        RowLock rowLock = null;<a name="line.3147"></a>
-<span class="sourceLineNo">3148</span>        try {<a name="line.3148"></a>
-<span class="sourceLineNo">3149</span>          // if atomic then get exclusive lock, else shared lock<a name="line.3149"></a>
-<span class="sourceLineNo">3150</span>          rowLock = region.getRowLockInternal(mutation.getRow(), !isAtomic());<a name="line.3150"></a>
-<span class="sourceLineNo">3151</span>        } catch (TimeoutIOException e) {<a name="line.3151"></a>
-<span class="sourceLineNo">3152</span>          // We will retry when other exceptions, but we should stop if we timeout .<a name="line.3152"></a>
-<span class="sourceLineNo">3153</span>          throw e;<a name="line.3153"></a>
-<span class="sourceLineNo">3154</span>        } catch (IOException ioe) {<a name="line.3154"></a>
-<span class="sourceLineNo">3155</span>          LOG.warn("Failed getting lock, row=" + Bytes.toStringBinary(mutation.getRow()), ioe);<a name="line.3155"></a>
-<span class="sourceLineNo">3156</span>          if (isAtomic()) { // fail, atomic means all or none<a name="line.3156"></a>
-<span class="sourceLineNo">3157</span>            throw ioe;<a name="line.3157"></a>
-<span class="sourceLineNo">3158</span>          }<a name="line.3158"></a>
-<span class="sourceLineNo">3159</span>        }<a name="line.3159"></a>
-<span class="sourceLineNo">3160</span>        if (rowLock == null) {<a name="line.3160"></a>
-<span class="sourceLineNo">3161</span>          // We failed to grab another lock<a name="line.3161"></a>
-<span class="sourceLineNo">3162</span>          if (isAtomic()) {<a name="line.3162"></a>
-<span class="sourceLineNo">3163</span>            throw new IOException("Can't apply all operations atomically!");<a name="line.3163"></a>
-<span class="sourceLineNo">3164</span>          }<a name="line.3164"></a>
-<span class="sourceLineNo">3165</span>          break; // Stop acquiring more rows for this batch<a name="line.3165"></a>
-<span class="sourceLineNo">3166</span>        } else {<a name="line.3166"></a>
-<span class="sourceLineNo">3167</span>          acquiredRowLocks.add(rowLock);<a name="line.3167"></a>
-<span class="sourceLineNo">3168</span>        }<a name="line.3168"></a>
-<span class="sourceLineNo">3169</span>        readyToWriteCount++;<a name="line.3169"></a>
-<span class="sourceLineNo">3170</span>      }<a name="line.3170"></a>
-<span class="sourceLineNo">3171</span>      return createMiniBatch(lastIndexExclusive, readyToWriteCount);<a name="line.3171"></a>
-<span class="sourceLineNo">3172</span>    }<a name="line.3172"></a>
-<span class="sourceLineNo">3173</span><a name="line.3173"></a>
-<span class="sourceLineNo">3174</span>    protected MiniBatchOperationInProgress&lt;Mutation&gt; createMiniBatch(final int lastIndexExclusive,<a name="line.3174"></a>
-<span class="sourceLineNo">3175</span>        final int readyToWriteCount) {<a name="line.3175"></a>
-<span class="sourceLineNo">3176</span>      return new MiniBatchOperationInProgress&lt;&gt;(getMutationsForCoprocs(), retCodeDetails,<a name="line.3176"></a>
-<span class="sourceLineNo">3177</span>          walEditsFromCoprocessors, nextIndexToProcess, lastIndexExclusive, readyToWriteCount);<a name="line.3177"></a>
-<span class="sourceLineNo">3178</span>    }<a name="line.3178"></a>
-<span class="sourceLineNo">3179</span><a name="line.3179"></a>
-<span class="sourceLineNo">3180</span>    /**<a name="line.3180"></a>
-<span class="sourceLineNo">3181</span>     * Builds separate WALEdit per nonce by applying input mutations. If WALEdits from CP are<a name="line.3181"></a>
-<span class="sourceLineNo">3182</span>     * present, they are merged to result WALEdit.<a name="line.3182"></a>
-<span class="sourceLineNo">3183</span>     */<a name="line.3183"></a>
-<span class="sourceLineNo">3184</span>    public List&lt;Pair&lt;NonceKey, WALEdit&gt;&gt; buildWALEdits(<a name="line.3184"></a>
-<span class="sourceLineNo">3185</span>        final MiniBatchOperationInProgress&lt;Mutation&gt; miniBatchOp) throws IOException {<a name="line.3185"></a>
-<span class="sourceLineNo">3186</span>      List&lt;Pair&lt;NonceKey, WALEdit&gt;&gt; walEdits = new ArrayList&lt;&gt;();<a name="line.3186"></a>
-<span class="sourceLineNo">3187</span><a name="line.3187"></a>
-<span class="sourceLineNo">3188</span>      visitBatchOperations(true, nextIndexToProcess + miniBatchOp.size(), new Visitor() {<a name="line.3188"></a>
-<span class="sourceLineNo">3189</span>        private Pair&lt;NonceKey, WALEdit&gt; curWALEditForNonce;<a name="line.3189"></a>
-<span class="sourceLineNo">3190</span>        @Override<a name="line.3190"></a>
-<span class="sourceLineNo">3191</span>        public boolean visit(int index) throws IOException {<a name="line.3191"></a>
-<span class="sourceLineNo">3192</span>          Mutation m = getMutation(index);<a name="line.3192"></a>
-<span class="sourceLineNo">3193</span>          // we use durability of the original mutation for the mutation passed by CP.<a name="line.3193"></a>
-<span class="sourceLineNo">3194</span>          if (region.getEffectiveDurability(m.getDurability()) == Durability.SKIP_WAL) {<a name="line.3194"></a>
-<span class="sourceLineNo">3195</span>            region.recordMutationWithoutWal(m.getFamilyCellMap());<a name="line.3195"></a>
-<span class="sourceLineNo">3196</span>            return true;<a name="line.3196"></a>
-<span class="sourceLineNo">3197</span>          }<a name="line.3197"></a>
-<span class="sourceLineNo">3198</span><a name="line.3198"></a>
-<span class="sourceLineNo">3199</span>          // the batch may contain multiple nonce keys (replay case). If so, write WALEdit for each.<a name="line.3199"></a>
-<span class="sourceLineNo">3200</span>          // Given how nonce keys are originally written, these should be contiguous.<a name="line.3200"></a>
-<span class="sourceLineNo">3201</span>          // They don't have to be, it will still work, just write more WALEdits than needed.<a name="line.3201"></a>
-<span class="sourceLineNo">3202</span>          long nonceGroup = getNonceGroup(index);<a name="line.3202"></a>
-<span class="sourceLineNo">3203</span>          long nonce = getNonce(index);<a name="line.3203"></a>
-<span class="sourceLineNo">3204</span>          if (curWALEditForNonce == null ||<a name="line.3204"></a>
-<span class="sourceLineNo">3205</span>              curWALEditForNonce.getFirst().getNonceGroup() != nonceGroup ||<a name="line.3205"></a>
-<span class="sourceLineNo">3206</span>              curWALEditForNonce.getFirst().getNonce() != nonce) {<a name="line.3206"></a>
-<span class="sourceLineNo">3207</span>            curWALEditForNonce = new Pair&lt;&gt;(new NonceKey(nonceGroup, nonce),<a name="line.3207"></a>
-<span class="sourceLineNo">3208</span>                new WALEdit(miniBatchOp.getCellCount(), isInReplay()));<a name="line.3208"></a>
-<span class="sourceLineNo">3209</span>            walEdits.add(curWALEditForNonce);<a name="line.3209"></a>
-<span class="sourceLineNo">3210</span>          }<a name="line.3210"></a>
-<span class="sourceLineNo">3211</span>          WALEdit walEdit = curWALEditForNonce.getSecond();<a name="line.3211"></a>
-<span class="sourceLineNo">3212</span><a name="line.3212"></a>
-<span class="sourceLineNo">3213</span>          // Add WAL edits by CP<a name="line.3213"></a>
-<span class="sourceLineNo">3214</span>          WALEdit fromCP = walEditsFromCoprocessors[index];<a name="line.3214"></a>
-<span class="sourceLineNo">3215</span>          if (fromCP != null) {<a name="line.3215"></a>
-<span class="sourceLineNo">3216</span>            for (Cell cell : fromCP.getCells()) {<a name="line.3216"></a>
-<span class="sourceLineNo">3217</span>              walEdit.add(cell);<a name="line.3217"></a>
-<span class="sourceLineNo">3218</span>            }<a name="line.3218"></a>
-<span class="sourceLineNo">3219</span>          }<a name="line.3219"></a>
-<span class="sourceLineNo">3220</span>          addFamilyMapToWALEdit(familyCellMaps[index], walEdit);<a name="line.3220"></a>
-<span class="sourceLineNo">3221</span><a name="line.3221"></a>
-<span class="sourceLineNo">3222</span>          return true;<a name="line.3222"></a>
-<span class="sourceLineNo">3223</span>        }<a name="line.3223"></a>
-<span class="sourceLineNo">3224</span>      });<a name="line.3224"></a>
-<span class="sourceLineNo">3225</span>      return walEdits;<a name="line.3225"></a>
-<span class="sourceLineNo">3226</span>    }<a name="line.3226"></a>
-<span class="sourceLineNo">3227</span><a name="line.3227"></a>
-<span class="sourceLineNo">3228</span>    /**<a name="line.3228"></a>
-<span class="sourceLineNo">3229</span>     * This method completes mini-batch operations by calling postBatchMutate() CP hook (if<a name="line.3229"></a>
-<span class="sourceLineNo">3230</span>     * required) and completing mvcc.<a name="line.3230"></a>
-<span class="sourceLineNo">3231</span>     */<a name="line.3231"></a>
-<span class="sourceLineNo">3232</span>    public void completeMiniBatchOperations(<a name="line.3232"></a>
-<span class="sourceLineNo">3233</span>        final MiniBatchOperationInProgress&lt;Mutation&gt; miniBatchOp, final WriteEntry writeEntry)<a name="line.3233"></a>
-<span class="sourceLineNo">3234</span>        throws IOException {<a name="line.3234"></a>
-<span class="sourceLineNo">3235</span>      if (writeEntry != null) {<a name="line.3235"></a>
-<span class="sourceLineNo">3236</span>        region.mvcc.completeAndWait(writeEntry);<a name="line.3236"></a>
-<span class="sourceLineNo">3237</span>      }<a name="line.3237"></a>
-<span class="sourceLineNo">3238</span>    }<a name="line.3238"></a>
-<span class="sourceLineNo">3239</span><a name="line.3239"></a>
-<span class="sourceLineNo">3240</span>    public void doPostOpCleanupForMiniBatch(<a name="line.3240"></a>
-<span class="sourceLineNo">3241</span>        final MiniBatchOperationInProgress&lt;Mutation&gt; miniBatchOp, final WALEdit walEdit,<a name="line.3241"></a>
-<span class="sourceLineNo">3242</span>        boolean success) throws IOException {}<a name="line.3242"></a>
-<span class="sourceLineNo">3243</span><a name="line.3243"></a>
-<span class="sourceLineNo">3244</span>    /**<a name="line.3244"></a>
-<span class="sourceLineNo">3245</span>     * Atomically apply the given map of family-&gt;edits to the memstore.<a name="line.3245"></a>
-<span class="sourceLineNo">3246</span>     * This handles the consistency control on its own, but the caller<a name="line.3246"></a>
-<span class="sourceLineNo">3247</span>     * should already have locked updatesLock.readLock(). This also does<a name="line.3247"></a>
-<span class="sourceLineNo">3248</span>     * &lt;b&gt;not&lt;/b&gt; check the families for validity.<a name="line.3248"></a>
-<span class="sourceLineNo">3249</span>     *<a name="line.3249"></a>
-<span class="sourceLineNo">3250</span>     * @param familyMap Map of Cells by family<a name="line.3250"></a>
-<span class="sourceLineNo">3251</span>     */<a name="line.3251"></a>
-<span class="sourceLineNo">3252</span>    protected void applyFamilyMapToMemStore(Map&lt;byte[], List&lt;Cell&gt;&gt; familyMap,<a name="line.3252"></a>
-<span class="sourceLineNo">3253</span>        MemStoreSizing memstoreAccounting) throws IOException {<a name="line.3253"></a>
-<span class="sourceLineNo">3254</span>      for (Map.Entry&lt;byte[], List&lt;Cell&gt;&gt; e : familyMap.entrySet()) {<a name="line.3254"></a>
-<span class="sourceLineNo">3255</span>        byte[] family = e.getKey();<a name="line.3255"></a>
-<span class="sourceLineNo">3256</span>        List&lt;Cell&gt; cells = e.getValue();<a name="line.3256"></a>
-<span class="sourceLineNo">3257</span>        assert cells instanceof RandomAccess;<a name="line.3257"></a>
-<span class="sourceLineNo">3258</span>        region.applyToMemStore(region.getStore(family), cells, false, memstoreAccounting);<a name="line.3258"></a>
-<span class="sourceLineNo">3259</span>      }<a name="line.3259"></a>
-<span class="sourceLineNo">3260</span>    }<a name="line.3260"></a>
-<span class="sourceLineNo">3261</span><a name="line.3261"></a>
-<span class="sourceLineNo">3262</span>    /**<a name="line.3262"></a>
-<span class="sourceLineNo">3263</span>     * Append the given map of family-&gt;edits to a WALEdit data structure.<a name="line.3263"></a>
-<span class="sourceLineNo">3264</span>     * This does not write to the WAL itself.<a name="line.3264"></a>
-<span class="sourceLineNo">3265</span>     * @param familyMap map of family-&gt;edits<a name="line.3265"></a>
-<span class="sourceLineNo">3266</span>     * @param walEdit the destination entry to append into<a name="line.3266"></a>
-<span class="sourceLineNo">3267</span>     */<a name="line.3267"></a>
-<span class="sourceLineNo">3268</span>    private void addFamilyMapToWALEdit(Map&lt;byte[], List&lt;Cell&gt;&gt; familyMap,<a name="line.3268"></a>
-<span class="sourceLineNo">3269</span>        WALEdit walEdit) {<a name="line.3269"></a>
-<span class="sourceLineNo">3270</span>      for (List&lt;Cell&gt; edits : familyMap.values()) {<a name="line.3270"></a>
-<span class="sourceLineNo">3271</span>        // Optimization: 'foreach' loop is not used. See:<a name="line.3271"></a>
-<span class="sourceLineNo">3272</span>        // HBASE-12023 HRegion.applyFamilyMapToMemstore creates too many iterator objects<a name="line.3272"></a>
-<span class="sourceLineNo">3273</span>        assert edits instanceof RandomAccess;<a name="line.3273"></a>
-<span class="sourceLineNo">3274</span>        int listSize = edits.size();<a name="line.3274"></a>
-<span class="sourceLineNo">3275</span>        for (int i=0; i &lt; listSize; i++) {<a name="line.3275"></a>
-<span class="sourceLineNo">3276</span>          Cell cell = edits.get(i);<a name="line.3276"></a>
-<span class="sourceLineNo">3277</span>          walEdit.add(cell);<a name="line.3277"></a>
-<span class="sourceLineNo">3278</span>        }<a name="line.3278"></a>
-<span class="sourceLineNo">3279</span>      }<a name="line.3279"></a>
-<span class="sourceLineNo">3280</span>    }<a name="line.3280"></a>
-<span class="sourceLineNo">3281</span>  }<a name="line.3281"></a>
-<span class="sourceLineNo">3282</span><a name="line.3282"></a>
-<span class="sourceLineNo">3283</span>  /**<a name="line.3283"></a>
-<span class="sourceLineNo">3284</span>   * Batch of mutation operations. Base class is shared with {@link ReplayBatchOperation} as most<a name="line.3284"></a>
-<span class="sourceLineNo">3285</span>   * of the logic is same.<a name="line.3285"></a>
-<span class="sourceLineNo">3286</span>   */<a name="line.3286"></a>
-<span class="sourceLineNo">3287</span>  static class MutationBatchOperation extends BatchOperation&lt;Mutation&gt; {<a name="line.3287"></a>
-<span class="sourceLineNo">3288</span>    private long nonceGroup;<a name="line.3288"></a>
-<span class="sourceLineNo">3289</span>    private long nonce;<a name="line.3289"></a>
-<span class="sourceLineNo">3290</span>    public MutationBatchOperation(final HRegion region, Mutation[] operations, boolean atomic,<a name="line.3290"></a>
-<span class="sourceLineNo">3291</span>        long nonceGroup, long nonce) {<a name="line.3291"></a>
-<span class="sourceLineNo">3292</span>      super(region, operations);<a name="line.3292"></a>
-<span class="sourceLineNo">3293</span>      this.atomic = atomic;<a name="line.3293"></a>
-<span class="sourceLineNo">3294</span>      this.nonceGroup = nonceGroup;<a name="line.3294"></a>
-<span class="sourceLineNo">3295</span>      this.nonce = nonce;<a name="line.3295"></a>
-<span class="sourceLineNo">3296</span>    }<a name="line.3296"></a>
-<span class="sourceLineNo">3297</span><a name="line.3297"></a>
-<span class="sourceLineNo">3298</span>    @Override<a name="line.3298"></a>
-<span class="sourceLineNo">3299</span>    public Mutation getMutation(int index) {<a name="line.3299"></a>
-<span class="sourceLineNo">3300</span>      return this.operations[index];<a name="line.3300"></a>
-<span class="sourceLineNo">3301</span>    }<a name="line.3301"></a>
-<span class="sourceLineNo">3302</span><a name="line.3302"></a>
-<span class="sourceLineNo">3303</span>    @Override<a name="line.3303"></a>
-<span class="sourceLineNo">3304</span>    public long getNonceGroup(int index) {<a name="line.3304"></a>
-<span class="sourceLineNo">3305</span>      return nonceGroup;<a name="line.3305"></a>
-<span class="sourceLineNo">3306</span>    }<a name="line.3306"></a>
-<span class="sourceLineNo">3307</span><a name="line.3307"></a>
-<span class="sourceLineN

<TRUNCATED>

[17/51] [partial] hbase-site git commit: Published site at .

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/c54c242b/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/HRegion.html
----------------------------------------------------------------------
diff --git a/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/HRegion.html b/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/HRegion.html
index 3edfbef..9707b2c 100644
--- a/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/HRegion.html
+++ b/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/HRegion.html
@@ -2459,5936 +2459,5935 @@
 <span class="sourceLineNo">2451</span>      }<a name="line.2451"></a>
 <span class="sourceLineNo">2452</span><a name="line.2452"></a>
 <span class="sourceLineNo">2453</span>      for (HStore s : storesToFlush) {<a name="line.2453"></a>
-<span class="sourceLineNo">2454</span>        MemStoreSize flushableSize = s.getFlushableSize();<a name="line.2454"></a>
-<span class="sourceLineNo">2455</span>        totalSizeOfFlushableStores.incMemStoreSize(flushableSize);<a name="line.2455"></a>
-<span class="sourceLineNo">2456</span>        storeFlushCtxs.put(s.getColumnFamilyDescriptor().getName(),<a name="line.2456"></a>
-<span class="sourceLineNo">2457</span>          s.createFlushContext(flushOpSeqId, tracker));<a name="line.2457"></a>
-<span class="sourceLineNo">2458</span>        // for writing stores to WAL<a name="line.2458"></a>
-<span class="sourceLineNo">2459</span>        committedFiles.put(s.getColumnFamilyDescriptor().getName(), null);<a name="line.2459"></a>
-<span class="sourceLineNo">2460</span>        storeFlushableSize.put(s.getColumnFamilyDescriptor().getName(), flushableSize);<a name="line.2460"></a>
-<span class="sourceLineNo">2461</span>      }<a name="line.2461"></a>
-<span class="sourceLineNo">2462</span><a name="line.2462"></a>
-<span class="sourceLineNo">2463</span>      // write the snapshot start to WAL<a name="line.2463"></a>
-<span class="sourceLineNo">2464</span>      if (wal != null &amp;&amp; !writestate.readOnly) {<a name="line.2464"></a>
-<span class="sourceLineNo">2465</span>        FlushDescriptor desc = ProtobufUtil.toFlushDescriptor(FlushAction.START_FLUSH,<a name="line.2465"></a>
-<span class="sourceLineNo">2466</span>            getRegionInfo(), flushOpSeqId, committedFiles);<a name="line.2466"></a>
-<span class="sourceLineNo">2467</span>        // No sync. Sync is below where no updates lock and we do FlushAction.COMMIT_FLUSH<a name="line.2467"></a>
-<span class="sourceLineNo">2468</span>        WALUtil.writeFlushMarker(wal, this.getReplicationScope(), getRegionInfo(), desc, false,<a name="line.2468"></a>
-<span class="sourceLineNo">2469</span>            mvcc);<a name="line.2469"></a>
-<span class="sourceLineNo">2470</span>      }<a name="line.2470"></a>
-<span class="sourceLineNo">2471</span><a name="line.2471"></a>
-<span class="sourceLineNo">2472</span>      // Prepare flush (take a snapshot)<a name="line.2472"></a>
-<span class="sourceLineNo">2473</span>      for (StoreFlushContext flush : storeFlushCtxs.values()) {<a name="line.2473"></a>
-<span class="sourceLineNo">2474</span>        flush.prepare();<a name="line.2474"></a>
-<span class="sourceLineNo">2475</span>      }<a name="line.2475"></a>
-<span class="sourceLineNo">2476</span>    } catch (IOException ex) {<a name="line.2476"></a>
-<span class="sourceLineNo">2477</span>      doAbortFlushToWAL(wal, flushOpSeqId, committedFiles);<a name="line.2477"></a>
-<span class="sourceLineNo">2478</span>      throw ex;<a name="line.2478"></a>
-<span class="sourceLineNo">2479</span>    } finally {<a name="line.2479"></a>
-<span class="sourceLineNo">2480</span>      this.updatesLock.writeLock().unlock();<a name="line.2480"></a>
-<span class="sourceLineNo">2481</span>    }<a name="line.2481"></a>
-<span class="sourceLineNo">2482</span>    String s = "Finished memstore snapshotting " + this + ", syncing WAL and waiting on mvcc, " +<a name="line.2482"></a>
-<span class="sourceLineNo">2483</span>        "flushsize=" + totalSizeOfFlushableStores;<a name="line.2483"></a>
-<span class="sourceLineNo">2484</span>    status.setStatus(s);<a name="line.2484"></a>
-<span class="sourceLineNo">2485</span>    doSyncOfUnflushedWALChanges(wal, getRegionInfo());<a name="line.2485"></a>
-<span class="sourceLineNo">2486</span>    return new PrepareFlushResult(storeFlushCtxs, committedFiles, storeFlushableSize, startTime,<a name="line.2486"></a>
-<span class="sourceLineNo">2487</span>        flushOpSeqId, flushedSeqId, totalSizeOfFlushableStores);<a name="line.2487"></a>
-<span class="sourceLineNo">2488</span>  }<a name="line.2488"></a>
-<span class="sourceLineNo">2489</span><a name="line.2489"></a>
-<span class="sourceLineNo">2490</span>  /**<a name="line.2490"></a>
-<span class="sourceLineNo">2491</span>   * Utility method broken out of internalPrepareFlushCache so that method is smaller.<a name="line.2491"></a>
-<span class="sourceLineNo">2492</span>   */<a name="line.2492"></a>
-<span class="sourceLineNo">2493</span>  private void logFatLineOnFlush(Collection&lt;HStore&gt; storesToFlush, long sequenceId) {<a name="line.2493"></a>
-<span class="sourceLineNo">2494</span>    if (!LOG.isInfoEnabled()) {<a name="line.2494"></a>
-<span class="sourceLineNo">2495</span>      return;<a name="line.2495"></a>
-<span class="sourceLineNo">2496</span>    }<a name="line.2496"></a>
-<span class="sourceLineNo">2497</span>    // Log a fat line detailing what is being flushed.<a name="line.2497"></a>
-<span class="sourceLineNo">2498</span>    StringBuilder perCfExtras = null;<a name="line.2498"></a>
-<span class="sourceLineNo">2499</span>    if (!isAllFamilies(storesToFlush)) {<a name="line.2499"></a>
-<span class="sourceLineNo">2500</span>      perCfExtras = new StringBuilder();<a name="line.2500"></a>
-<span class="sourceLineNo">2501</span>      for (HStore store: storesToFlush) {<a name="line.2501"></a>
-<span class="sourceLineNo">2502</span>        perCfExtras.append("; ").append(store.getColumnFamilyName());<a name="line.2502"></a>
-<span class="sourceLineNo">2503</span>        perCfExtras.append("=")<a name="line.2503"></a>
-<span class="sourceLineNo">2504</span>            .append(StringUtils.byteDesc(store.getFlushableSize().getDataSize()));<a name="line.2504"></a>
-<span class="sourceLineNo">2505</span>      }<a name="line.2505"></a>
-<span class="sourceLineNo">2506</span>    }<a name="line.2506"></a>
-<span class="sourceLineNo">2507</span>    LOG.info("Flushing " + + storesToFlush.size() + "/" + stores.size() +<a name="line.2507"></a>
-<span class="sourceLineNo">2508</span>        " column families, memstore=" + StringUtils.byteDesc(this.memstoreDataSize.get()) +<a name="line.2508"></a>
-<span class="sourceLineNo">2509</span>        ((perCfExtras != null &amp;&amp; perCfExtras.length() &gt; 0)? perCfExtras.toString(): "") +<a name="line.2509"></a>
-<span class="sourceLineNo">2510</span>        ((wal != null) ? "" : "; WAL is null, using passed sequenceid=" + sequenceId));<a name="line.2510"></a>
-<span class="sourceLineNo">2511</span>  }<a name="line.2511"></a>
-<span class="sourceLineNo">2512</span><a name="line.2512"></a>
-<span class="sourceLineNo">2513</span>  private void doAbortFlushToWAL(final WAL wal, final long flushOpSeqId,<a name="line.2513"></a>
-<span class="sourceLineNo">2514</span>      final Map&lt;byte[], List&lt;Path&gt;&gt; committedFiles) {<a name="line.2514"></a>
-<span class="sourceLineNo">2515</span>    if (wal == null) return;<a name="line.2515"></a>
-<span class="sourceLineNo">2516</span>    try {<a name="line.2516"></a>
-<span class="sourceLineNo">2517</span>      FlushDescriptor desc = ProtobufUtil.toFlushDescriptor(FlushAction.ABORT_FLUSH,<a name="line.2517"></a>
-<span class="sourceLineNo">2518</span>          getRegionInfo(), flushOpSeqId, committedFiles);<a name="line.2518"></a>
-<span class="sourceLineNo">2519</span>      WALUtil.writeFlushMarker(wal, this.getReplicationScope(), getRegionInfo(), desc, false,<a name="line.2519"></a>
-<span class="sourceLineNo">2520</span>          mvcc);<a name="line.2520"></a>
-<span class="sourceLineNo">2521</span>    } catch (Throwable t) {<a name="line.2521"></a>
-<span class="sourceLineNo">2522</span>      LOG.warn("Received unexpected exception trying to write ABORT_FLUSH marker to WAL:" +<a name="line.2522"></a>
-<span class="sourceLineNo">2523</span>          StringUtils.stringifyException(t));<a name="line.2523"></a>
-<span class="sourceLineNo">2524</span>      // ignore this since we will be aborting the RS with DSE.<a name="line.2524"></a>
-<span class="sourceLineNo">2525</span>    }<a name="line.2525"></a>
-<span class="sourceLineNo">2526</span>    // we have called wal.startCacheFlush(), now we have to abort it<a name="line.2526"></a>
-<span class="sourceLineNo">2527</span>    wal.abortCacheFlush(this.getRegionInfo().getEncodedNameAsBytes());<a name="line.2527"></a>
-<span class="sourceLineNo">2528</span>  }<a name="line.2528"></a>
-<span class="sourceLineNo">2529</span><a name="line.2529"></a>
-<span class="sourceLineNo">2530</span>  /**<a name="line.2530"></a>
-<span class="sourceLineNo">2531</span>   * Sync unflushed WAL changes. See HBASE-8208 for details<a name="line.2531"></a>
-<span class="sourceLineNo">2532</span>   */<a name="line.2532"></a>
-<span class="sourceLineNo">2533</span>  private static void doSyncOfUnflushedWALChanges(final WAL wal, final RegionInfo hri)<a name="line.2533"></a>
-<span class="sourceLineNo">2534</span>  throws IOException {<a name="line.2534"></a>
-<span class="sourceLineNo">2535</span>    if (wal == null) {<a name="line.2535"></a>
-<span class="sourceLineNo">2536</span>      return;<a name="line.2536"></a>
-<span class="sourceLineNo">2537</span>    }<a name="line.2537"></a>
-<span class="sourceLineNo">2538</span>    try {<a name="line.2538"></a>
-<span class="sourceLineNo">2539</span>      wal.sync(); // ensure that flush marker is sync'ed<a name="line.2539"></a>
-<span class="sourceLineNo">2540</span>    } catch (IOException ioe) {<a name="line.2540"></a>
-<span class="sourceLineNo">2541</span>      wal.abortCacheFlush(hri.getEncodedNameAsBytes());<a name="line.2541"></a>
-<span class="sourceLineNo">2542</span>      throw ioe;<a name="line.2542"></a>
-<span class="sourceLineNo">2543</span>    }<a name="line.2543"></a>
-<span class="sourceLineNo">2544</span>  }<a name="line.2544"></a>
-<span class="sourceLineNo">2545</span><a name="line.2545"></a>
-<span class="sourceLineNo">2546</span>  /**<a name="line.2546"></a>
-<span class="sourceLineNo">2547</span>   * @return True if passed Set is all families in the region.<a name="line.2547"></a>
-<span class="sourceLineNo">2548</span>   */<a name="line.2548"></a>
-<span class="sourceLineNo">2549</span>  private boolean isAllFamilies(Collection&lt;HStore&gt; families) {<a name="line.2549"></a>
-<span class="sourceLineNo">2550</span>    return families == null || this.stores.size() == families.size();<a name="line.2550"></a>
-<span class="sourceLineNo">2551</span>  }<a name="line.2551"></a>
-<span class="sourceLineNo">2552</span><a name="line.2552"></a>
-<span class="sourceLineNo">2553</span>  /**<a name="line.2553"></a>
-<span class="sourceLineNo">2554</span>   * Writes a marker to WAL indicating a flush is requested but cannot be complete due to various<a name="line.2554"></a>
-<span class="sourceLineNo">2555</span>   * reasons. Ignores exceptions from WAL. Returns whether the write succeeded.<a name="line.2555"></a>
-<span class="sourceLineNo">2556</span>   * @param wal<a name="line.2556"></a>
-<span class="sourceLineNo">2557</span>   * @return whether WAL write was successful<a name="line.2557"></a>
-<span class="sourceLineNo">2558</span>   */<a name="line.2558"></a>
-<span class="sourceLineNo">2559</span>  private boolean writeFlushRequestMarkerToWAL(WAL wal, boolean writeFlushWalMarker) {<a name="line.2559"></a>
-<span class="sourceLineNo">2560</span>    if (writeFlushWalMarker &amp;&amp; wal != null &amp;&amp; !writestate.readOnly) {<a name="line.2560"></a>
-<span class="sourceLineNo">2561</span>      FlushDescriptor desc = ProtobufUtil.toFlushDescriptor(FlushAction.CANNOT_FLUSH,<a name="line.2561"></a>
-<span class="sourceLineNo">2562</span>        getRegionInfo(), -1, new TreeMap&lt;&gt;(Bytes.BYTES_COMPARATOR));<a name="line.2562"></a>
-<span class="sourceLineNo">2563</span>      try {<a name="line.2563"></a>
-<span class="sourceLineNo">2564</span>        WALUtil.writeFlushMarker(wal, this.getReplicationScope(), getRegionInfo(), desc, true,<a name="line.2564"></a>
-<span class="sourceLineNo">2565</span>            mvcc);<a name="line.2565"></a>
-<span class="sourceLineNo">2566</span>        return true;<a name="line.2566"></a>
-<span class="sourceLineNo">2567</span>      } catch (IOException e) {<a name="line.2567"></a>
-<span class="sourceLineNo">2568</span>        LOG.warn(getRegionInfo().getEncodedName() + " : "<a name="line.2568"></a>
-<span class="sourceLineNo">2569</span>            + "Received exception while trying to write the flush request to wal", e);<a name="line.2569"></a>
-<span class="sourceLineNo">2570</span>      }<a name="line.2570"></a>
-<span class="sourceLineNo">2571</span>    }<a name="line.2571"></a>
-<span class="sourceLineNo">2572</span>    return false;<a name="line.2572"></a>
-<span class="sourceLineNo">2573</span>  }<a name="line.2573"></a>
-<span class="sourceLineNo">2574</span><a name="line.2574"></a>
-<span class="sourceLineNo">2575</span>  @edu.umd.cs.findbugs.annotations.SuppressWarnings(value="NN_NAKED_NOTIFY",<a name="line.2575"></a>
-<span class="sourceLineNo">2576</span>      justification="Intentional; notify is about completed flush")<a name="line.2576"></a>
-<span class="sourceLineNo">2577</span>  protected FlushResultImpl internalFlushCacheAndCommit(WAL wal, MonitoredTask status,<a name="line.2577"></a>
-<span class="sourceLineNo">2578</span>      PrepareFlushResult prepareResult, Collection&lt;HStore&gt; storesToFlush) throws IOException {<a name="line.2578"></a>
-<span class="sourceLineNo">2579</span>    // prepare flush context is carried via PrepareFlushResult<a name="line.2579"></a>
-<span class="sourceLineNo">2580</span>    TreeMap&lt;byte[], StoreFlushContext&gt; storeFlushCtxs = prepareResult.storeFlushCtxs;<a name="line.2580"></a>
-<span class="sourceLineNo">2581</span>    TreeMap&lt;byte[], List&lt;Path&gt;&gt; committedFiles = prepareResult.committedFiles;<a name="line.2581"></a>
-<span class="sourceLineNo">2582</span>    long startTime = prepareResult.startTime;<a name="line.2582"></a>
-<span class="sourceLineNo">2583</span>    long flushOpSeqId = prepareResult.flushOpSeqId;<a name="line.2583"></a>
-<span class="sourceLineNo">2584</span>    long flushedSeqId = prepareResult.flushedSeqId;<a name="line.2584"></a>
-<span class="sourceLineNo">2585</span><a name="line.2585"></a>
-<span class="sourceLineNo">2586</span>    String s = "Flushing stores of " + this;<a name="line.2586"></a>
-<span class="sourceLineNo">2587</span>    status.setStatus(s);<a name="line.2587"></a>
-<span class="sourceLineNo">2588</span>    if (LOG.isTraceEnabled()) LOG.trace(s);<a name="line.2588"></a>
-<span class="sourceLineNo">2589</span><a name="line.2589"></a>
-<span class="sourceLineNo">2590</span>    // Any failure from here on out will be catastrophic requiring server<a name="line.2590"></a>
-<span class="sourceLineNo">2591</span>    // restart so wal content can be replayed and put back into the memstore.<a name="line.2591"></a>
-<span class="sourceLineNo">2592</span>    // Otherwise, the snapshot content while backed up in the wal, it will not<a name="line.2592"></a>
-<span class="sourceLineNo">2593</span>    // be part of the current running servers state.<a name="line.2593"></a>
-<span class="sourceLineNo">2594</span>    boolean compactionRequested = false;<a name="line.2594"></a>
-<span class="sourceLineNo">2595</span>    long flushedOutputFileSize = 0;<a name="line.2595"></a>
-<span class="sourceLineNo">2596</span>    try {<a name="line.2596"></a>
-<span class="sourceLineNo">2597</span>      // A.  Flush memstore to all the HStores.<a name="line.2597"></a>
-<span class="sourceLineNo">2598</span>      // Keep running vector of all store files that includes both old and the<a name="line.2598"></a>
-<span class="sourceLineNo">2599</span>      // just-made new flush store file. The new flushed file is still in the<a name="line.2599"></a>
-<span class="sourceLineNo">2600</span>      // tmp directory.<a name="line.2600"></a>
-<span class="sourceLineNo">2601</span><a name="line.2601"></a>
-<span class="sourceLineNo">2602</span>      for (StoreFlushContext flush : storeFlushCtxs.values()) {<a name="line.2602"></a>
-<span class="sourceLineNo">2603</span>        flush.flushCache(status);<a name="line.2603"></a>
-<span class="sourceLineNo">2604</span>      }<a name="line.2604"></a>
-<span class="sourceLineNo">2605</span><a name="line.2605"></a>
-<span class="sourceLineNo">2606</span>      // Switch snapshot (in memstore) -&gt; new hfile (thus causing<a name="line.2606"></a>
-<span class="sourceLineNo">2607</span>      // all the store scanners to reset/reseek).<a name="line.2607"></a>
-<span class="sourceLineNo">2608</span>      Iterator&lt;HStore&gt; it = storesToFlush.iterator();<a name="line.2608"></a>
-<span class="sourceLineNo">2609</span>      // stores.values() and storeFlushCtxs have same order<a name="line.2609"></a>
-<span class="sourceLineNo">2610</span>      for (StoreFlushContext flush : storeFlushCtxs.values()) {<a name="line.2610"></a>
-<span class="sourceLineNo">2611</span>        boolean needsCompaction = flush.commit(status);<a name="line.2611"></a>
-<span class="sourceLineNo">2612</span>        if (needsCompaction) {<a name="line.2612"></a>
-<span class="sourceLineNo">2613</span>          compactionRequested = true;<a name="line.2613"></a>
-<span class="sourceLineNo">2614</span>        }<a name="line.2614"></a>
-<span class="sourceLineNo">2615</span>        byte[] storeName = it.next().getColumnFamilyDescriptor().getName();<a name="line.2615"></a>
-<span class="sourceLineNo">2616</span>        List&lt;Path&gt; storeCommittedFiles = flush.getCommittedFiles();<a name="line.2616"></a>
-<span class="sourceLineNo">2617</span>        committedFiles.put(storeName, storeCommittedFiles);<a name="line.2617"></a>
-<span class="sourceLineNo">2618</span>        // Flush committed no files, indicating flush is empty or flush was canceled<a name="line.2618"></a>
-<span class="sourceLineNo">2619</span>        if (storeCommittedFiles == null || storeCommittedFiles.isEmpty()) {<a name="line.2619"></a>
-<span class="sourceLineNo">2620</span>          MemStoreSize storeFlushableSize = prepareResult.storeFlushableSize.get(storeName);<a name="line.2620"></a>
-<span class="sourceLineNo">2621</span>          prepareResult.totalFlushableSize.decMemStoreSize(storeFlushableSize);<a name="line.2621"></a>
-<span class="sourceLineNo">2622</span>        }<a name="line.2622"></a>
-<span class="sourceLineNo">2623</span>        flushedOutputFileSize += flush.getOutputFileSize();<a name="line.2623"></a>
-<span class="sourceLineNo">2624</span>      }<a name="line.2624"></a>
-<span class="sourceLineNo">2625</span>      storeFlushCtxs.clear();<a name="line.2625"></a>
-<span class="sourceLineNo">2626</span><a name="line.2626"></a>
-<span class="sourceLineNo">2627</span>      // Set down the memstore size by amount of flush.<a name="line.2627"></a>
-<span class="sourceLineNo">2628</span>      this.decrMemStoreSize(prepareResult.totalFlushableSize);<a name="line.2628"></a>
-<span class="sourceLineNo">2629</span><a name="line.2629"></a>
-<span class="sourceLineNo">2630</span>      if (wal != null) {<a name="line.2630"></a>
-<span class="sourceLineNo">2631</span>        // write flush marker to WAL. If fail, we should throw DroppedSnapshotException<a name="line.2631"></a>
-<span class="sourceLineNo">2632</span>        FlushDescriptor desc = ProtobufUtil.toFlushDescriptor(FlushAction.COMMIT_FLUSH,<a name="line.2632"></a>
-<span class="sourceLineNo">2633</span>          getRegionInfo(), flushOpSeqId, committedFiles);<a name="line.2633"></a>
-<span class="sourceLineNo">2634</span>        WALUtil.writeFlushMarker(wal, this.getReplicationScope(), getRegionInfo(), desc, true,<a name="line.2634"></a>
-<span class="sourceLineNo">2635</span>            mvcc);<a name="line.2635"></a>
-<span class="sourceLineNo">2636</span>      }<a name="line.2636"></a>
-<span class="sourceLineNo">2637</span>    } catch (Throwable t) {<a name="line.2637"></a>
-<span class="sourceLineNo">2638</span>      // An exception here means that the snapshot was not persisted.<a name="line.2638"></a>
-<span class="sourceLineNo">2639</span>      // The wal needs to be replayed so its content is restored to memstore.<a name="line.2639"></a>
-<span class="sourceLineNo">2640</span>      // Currently, only a server restart will do this.<a name="line.2640"></a>
-<span class="sourceLineNo">2641</span>      // We used to only catch IOEs but its possible that we'd get other<a name="line.2641"></a>
-<span class="sourceLineNo">2642</span>      // exceptions -- e.g. HBASE-659 was about an NPE -- so now we catch<a name="line.2642"></a>
-<span class="sourceLineNo">2643</span>      // all and sundry.<a name="line.2643"></a>
-<span class="sourceLineNo">2644</span>      if (wal != null) {<a name="line.2644"></a>
-<span class="sourceLineNo">2645</span>        try {<a name="line.2645"></a>
-<span class="sourceLineNo">2646</span>          FlushDescriptor desc = ProtobufUtil.toFlushDescriptor(FlushAction.ABORT_FLUSH,<a name="line.2646"></a>
-<span class="sourceLineNo">2647</span>            getRegionInfo(), flushOpSeqId, committedFiles);<a name="line.2647"></a>
-<span class="sourceLineNo">2648</span>          WALUtil.writeFlushMarker(wal, this.replicationScope, getRegionInfo(), desc, false, mvcc);<a name="line.2648"></a>
-<span class="sourceLineNo">2649</span>        } catch (Throwable ex) {<a name="line.2649"></a>
-<span class="sourceLineNo">2650</span>          LOG.warn(getRegionInfo().getEncodedName() + " : "<a name="line.2650"></a>
-<span class="sourceLineNo">2651</span>              + "failed writing ABORT_FLUSH marker to WAL", ex);<a name="line.2651"></a>
-<span class="sourceLineNo">2652</span>          // ignore this since we will be aborting the RS with DSE.<a name="line.2652"></a>
-<span class="sourceLineNo">2653</span>        }<a name="line.2653"></a>
-<span class="sourceLineNo">2654</span>        wal.abortCacheFlush(this.getRegionInfo().getEncodedNameAsBytes());<a name="line.2654"></a>
-<span class="sourceLineNo">2655</span>      }<a name="line.2655"></a>
-<span class="sourceLineNo">2656</span>      DroppedSnapshotException dse = new DroppedSnapshotException("region: " +<a name="line.2656"></a>
-<span class="sourceLineNo">2657</span>          Bytes.toStringBinary(getRegionInfo().getRegionName()));<a name="line.2657"></a>
-<span class="sourceLineNo">2658</span>      dse.initCause(t);<a name="line.2658"></a>
-<span class="sourceLineNo">2659</span>      status.abort("Flush failed: " + StringUtils.stringifyException(t));<a name="line.2659"></a>
-<span class="sourceLineNo">2660</span><a name="line.2660"></a>
-<span class="sourceLineNo">2661</span>      // Callers for flushcache() should catch DroppedSnapshotException and abort the region server.<a name="line.2661"></a>
-<span class="sourceLineNo">2662</span>      // However, since we may have the region read lock, we cannot call close(true) here since<a name="line.2662"></a>
-<span class="sourceLineNo">2663</span>      // we cannot promote to a write lock. Instead we are setting closing so that all other region<a name="line.2663"></a>
-<span class="sourceLineNo">2664</span>      // operations except for close will be rejected.<a name="line.2664"></a>
-<span class="sourceLineNo">2665</span>      this.closing.set(true);<a name="line.2665"></a>
-<span class="sourceLineNo">2666</span><a name="line.2666"></a>
-<span class="sourceLineNo">2667</span>      if (rsServices != null) {<a name="line.2667"></a>
-<span class="sourceLineNo">2668</span>        // This is a safeguard against the case where the caller fails to explicitly handle aborting<a name="line.2668"></a>
-<span class="sourceLineNo">2669</span>        rsServices.abort("Replay of WAL required. Forcing server shutdown", dse);<a name="line.2669"></a>
-<span class="sourceLineNo">2670</span>      }<a name="line.2670"></a>
-<span class="sourceLineNo">2671</span><a name="line.2671"></a>
-<span class="sourceLineNo">2672</span>      throw dse;<a name="line.2672"></a>
-<span class="sourceLineNo">2673</span>    }<a name="line.2673"></a>
-<span class="sourceLineNo">2674</span><a name="line.2674"></a>
-<span class="sourceLineNo">2675</span>    // If we get to here, the HStores have been written.<a name="line.2675"></a>
-<span class="sourceLineNo">2676</span>    if (wal != null) {<a name="line.2676"></a>
-<span class="sourceLineNo">2677</span>      wal.completeCacheFlush(this.getRegionInfo().getEncodedNameAsBytes());<a name="line.2677"></a>
-<span class="sourceLineNo">2678</span>    }<a name="line.2678"></a>
-<span class="sourceLineNo">2679</span><a name="line.2679"></a>
-<span class="sourceLineNo">2680</span>    // Record latest flush time<a name="line.2680"></a>
-<span class="sourceLineNo">2681</span>    for (HStore store: storesToFlush) {<a name="line.2681"></a>
-<span class="sourceLineNo">2682</span>      this.lastStoreFlushTimeMap.put(store, startTime);<a name="line.2682"></a>
-<span class="sourceLineNo">2683</span>    }<a name="line.2683"></a>
-<span class="sourceLineNo">2684</span><a name="line.2684"></a>
-<span class="sourceLineNo">2685</span>    this.maxFlushedSeqId = flushedSeqId;<a name="line.2685"></a>
-<span class="sourceLineNo">2686</span>    this.lastFlushOpSeqId = flushOpSeqId;<a name="line.2686"></a>
-<span class="sourceLineNo">2687</span><a name="line.2687"></a>
-<span class="sourceLineNo">2688</span>    // C. Finally notify anyone waiting on memstore to clear:<a name="line.2688"></a>
-<span class="sourceLineNo">2689</span>    // e.g. checkResources().<a name="line.2689"></a>
-<span class="sourceLineNo">2690</span>    synchronized (this) {<a name="line.2690"></a>
-<span class="sourceLineNo">2691</span>      notifyAll(); // FindBugs NN_NAKED_NOTIFY<a name="line.2691"></a>
-<span class="sourceLineNo">2692</span>    }<a name="line.2692"></a>
-<span class="sourceLineNo">2693</span><a name="line.2693"></a>
-<span class="sourceLineNo">2694</span>    long time = EnvironmentEdgeManager.currentTime() - startTime;<a name="line.2694"></a>
-<span class="sourceLineNo">2695</span>    long memstoresize = this.memstoreDataSize.get();<a name="line.2695"></a>
-<span class="sourceLineNo">2696</span>    String msg = "Finished memstore flush of ~"<a name="line.2696"></a>
-<span class="sourceLineNo">2697</span>        + StringUtils.byteDesc(prepareResult.totalFlushableSize.getDataSize()) + "/"<a name="line.2697"></a>
-<span class="sourceLineNo">2698</span>        + prepareResult.totalFlushableSize.getDataSize() + ", currentsize="<a name="line.2698"></a>
-<span class="sourceLineNo">2699</span>        + StringUtils.byteDesc(memstoresize) + "/" + memstoresize<a name="line.2699"></a>
-<span class="sourceLineNo">2700</span>        + " for region " + this + " in " + time + "ms, sequenceid="<a name="line.2700"></a>
-<span class="sourceLineNo">2701</span>        + flushOpSeqId +  ", compaction requested=" + compactionRequested<a name="line.2701"></a>
-<span class="sourceLineNo">2702</span>        + ((wal == null) ? "; wal=null" : "");<a name="line.2702"></a>
-<span class="sourceLineNo">2703</span>    LOG.info(msg);<a name="line.2703"></a>
-<span class="sourceLineNo">2704</span>    status.setStatus(msg);<a name="line.2704"></a>
-<span class="sourceLineNo">2705</span><a name="line.2705"></a>
-<span class="sourceLineNo">2706</span>    if (rsServices != null &amp;&amp; rsServices.getMetrics() != null) {<a name="line.2706"></a>
-<span class="sourceLineNo">2707</span>      rsServices.getMetrics().updateFlush(time - startTime,<a name="line.2707"></a>
-<span class="sourceLineNo">2708</span>          prepareResult.totalFlushableSize.getDataSize(), flushedOutputFileSize);<a name="line.2708"></a>
-<span class="sourceLineNo">2709</span>    }<a name="line.2709"></a>
-<span class="sourceLineNo">2710</span><a name="line.2710"></a>
-<span class="sourceLineNo">2711</span>    return new FlushResultImpl(compactionRequested ?<a name="line.2711"></a>
-<span class="sourceLineNo">2712</span>        FlushResult.Result.FLUSHED_COMPACTION_NEEDED :<a name="line.2712"></a>
-<span class="sourceLineNo">2713</span>          FlushResult.Result.FLUSHED_NO_COMPACTION_NEEDED, flushOpSeqId);<a name="line.2713"></a>
-<span class="sourceLineNo">2714</span>  }<a name="line.2714"></a>
-<span class="sourceLineNo">2715</span><a name="line.2715"></a>
-<span class="sourceLineNo">2716</span>  /**<a name="line.2716"></a>
-<span class="sourceLineNo">2717</span>   * Method to safely get the next sequence number.<a name="line.2717"></a>
-<span class="sourceLineNo">2718</span>   * @return Next sequence number unassociated with any actual edit.<a name="line.2718"></a>
-<span class="sourceLineNo">2719</span>   * @throws IOException<a name="line.2719"></a>
-<span class="sourceLineNo">2720</span>   */<a name="line.2720"></a>
-<span class="sourceLineNo">2721</span>  @VisibleForTesting<a name="line.2721"></a>
-<span class="sourceLineNo">2722</span>  protected long getNextSequenceId(final WAL wal) throws IOException {<a name="line.2722"></a>
-<span class="sourceLineNo">2723</span>    WriteEntry we = mvcc.begin();<a name="line.2723"></a>
-<span class="sourceLineNo">2724</span>    mvcc.completeAndWait(we);<a name="line.2724"></a>
-<span class="sourceLineNo">2725</span>    return we.getWriteNumber();<a name="line.2725"></a>
-<span class="sourceLineNo">2726</span>  }<a name="line.2726"></a>
-<span class="sourceLineNo">2727</span><a name="line.2727"></a>
-<span class="sourceLineNo">2728</span>  //////////////////////////////////////////////////////////////////////////////<a name="line.2728"></a>
-<span class="sourceLineNo">2729</span>  // get() methods for client use.<a name="line.2729"></a>
-<span class="sourceLineNo">2730</span>  //////////////////////////////////////////////////////////////////////////////<a name="line.2730"></a>
-<span class="sourceLineNo">2731</span><a name="line.2731"></a>
-<span class="sourceLineNo">2732</span>  @Override<a name="line.2732"></a>
-<span class="sourceLineNo">2733</span>  public RegionScannerImpl getScanner(Scan scan) throws IOException {<a name="line.2733"></a>
-<span class="sourceLineNo">2734</span>   return getScanner(scan, null);<a name="line.2734"></a>
-<span class="sourceLineNo">2735</span>  }<a name="line.2735"></a>
-<span class="sourceLineNo">2736</span><a name="line.2736"></a>
-<span class="sourceLineNo">2737</span>  @Override<a name="line.2737"></a>
-<span class="sourceLineNo">2738</span>  public RegionScannerImpl getScanner(Scan scan, List&lt;KeyValueScanner&gt; additionalScanners)<a name="line.2738"></a>
-<span class="sourceLineNo">2739</span>      throws IOException {<a name="line.2739"></a>
-<span class="sourceLineNo">2740</span>    return getScanner(scan, additionalScanners, HConstants.NO_NONCE, HConstants.NO_NONCE);<a name="line.2740"></a>
-<span class="sourceLineNo">2741</span>  }<a name="line.2741"></a>
-<span class="sourceLineNo">2742</span><a name="line.2742"></a>
-<span class="sourceLineNo">2743</span>  private RegionScannerImpl getScanner(Scan scan, List&lt;KeyValueScanner&gt; additionalScanners,<a name="line.2743"></a>
-<span class="sourceLineNo">2744</span>      long nonceGroup, long nonce) throws IOException {<a name="line.2744"></a>
-<span class="sourceLineNo">2745</span>    startRegionOperation(Operation.SCAN);<a name="line.2745"></a>
-<span class="sourceLineNo">2746</span>    try {<a name="line.2746"></a>
-<span class="sourceLineNo">2747</span>      // Verify families are all valid<a name="line.2747"></a>
-<span class="sourceLineNo">2748</span>      if (!scan.hasFamilies()) {<a name="line.2748"></a>
-<span class="sourceLineNo">2749</span>        // Adding all families to scanner<a name="line.2749"></a>
-<span class="sourceLineNo">2750</span>        for (byte[] family : this.htableDescriptor.getColumnFamilyNames()) {<a name="line.2750"></a>
-<span class="sourceLineNo">2751</span>          scan.addFamily(family);<a name="line.2751"></a>
-<span class="sourceLineNo">2752</span>        }<a name="line.2752"></a>
-<span class="sourceLineNo">2753</span>      } else {<a name="line.2753"></a>
-<span class="sourceLineNo">2754</span>        for (byte[] family : scan.getFamilyMap().keySet()) {<a name="line.2754"></a>
-<span class="sourceLineNo">2755</span>          checkFamily(family);<a name="line.2755"></a>
-<span class="sourceLineNo">2756</span>        }<a name="line.2756"></a>
-<span class="sourceLineNo">2757</span>      }<a name="line.2757"></a>
-<span class="sourceLineNo">2758</span>      return instantiateRegionScanner(scan, additionalScanners, nonceGroup, nonce);<a name="line.2758"></a>
-<span class="sourceLineNo">2759</span>    } finally {<a name="line.2759"></a>
-<span class="sourceLineNo">2760</span>      closeRegionOperation(Operation.SCAN);<a name="line.2760"></a>
-<span class="sourceLineNo">2761</span>    }<a name="line.2761"></a>
-<span class="sourceLineNo">2762</span>  }<a name="line.2762"></a>
-<span class="sourceLineNo">2763</span><a name="line.2763"></a>
-<span class="sourceLineNo">2764</span>  protected RegionScanner instantiateRegionScanner(Scan scan,<a name="line.2764"></a>
-<span class="sourceLineNo">2765</span>      List&lt;KeyValueScanner&gt; additionalScanners) throws IOException {<a name="line.2765"></a>
-<span class="sourceLineNo">2766</span>    return instantiateRegionScanner(scan, additionalScanners, HConstants.NO_NONCE,<a name="line.2766"></a>
-<span class="sourceLineNo">2767</span>      HConstants.NO_NONCE);<a name="line.2767"></a>
-<span class="sourceLineNo">2768</span>  }<a name="line.2768"></a>
-<span class="sourceLineNo">2769</span><a name="line.2769"></a>
-<span class="sourceLineNo">2770</span>  protected RegionScannerImpl instantiateRegionScanner(Scan scan,<a name="line.2770"></a>
-<span class="sourceLineNo">2771</span>      List&lt;KeyValueScanner&gt; additionalScanners, long nonceGroup, long nonce) throws IOException {<a name="line.2771"></a>
-<span class="sourceLineNo">2772</span>    if (scan.isReversed()) {<a name="line.2772"></a>
-<span class="sourceLineNo">2773</span>      if (scan.getFilter() != null) {<a name="line.2773"></a>
-<span class="sourceLineNo">2774</span>        scan.getFilter().setReversed(true);<a name="line.2774"></a>
-<span class="sourceLineNo">2775</span>      }<a name="line.2775"></a>
-<span class="sourceLineNo">2776</span>      return new ReversedRegionScannerImpl(scan, additionalScanners, this);<a name="line.2776"></a>
-<span class="sourceLineNo">2777</span>    }<a name="line.2777"></a>
-<span class="sourceLineNo">2778</span>    return new RegionScannerImpl(scan, additionalScanners, this, nonceGroup, nonce);<a name="line.2778"></a>
-<span class="sourceLineNo">2779</span>  }<a name="line.2779"></a>
-<span class="sourceLineNo">2780</span><a name="line.2780"></a>
-<span class="sourceLineNo">2781</span>  /**<a name="line.2781"></a>
-<span class="sourceLineNo">2782</span>   * Prepare a delete for a row mutation processor<a name="line.2782"></a>
-<span class="sourceLineNo">2783</span>   * @param delete The passed delete is modified by this method. WARNING!<a name="line.2783"></a>
-<span class="sourceLineNo">2784</span>   * @throws IOException<a name="line.2784"></a>
-<span class="sourceLineNo">2785</span>   */<a name="line.2785"></a>
-<span class="sourceLineNo">2786</span>  public void prepareDelete(Delete delete) throws IOException {<a name="line.2786"></a>
-<span class="sourceLineNo">2787</span>    // Check to see if this is a deleteRow insert<a name="line.2787"></a>
-<span class="sourceLineNo">2788</span>    if(delete.getFamilyCellMap().isEmpty()){<a name="line.2788"></a>
-<span class="sourceLineNo">2789</span>      for(byte [] family : this.htableDescriptor.getColumnFamilyNames()){<a name="line.2789"></a>
-<span class="sourceLineNo">2790</span>        // Don't eat the timestamp<a name="line.2790"></a>
-<span class="sourceLineNo">2791</span>        delete.addFamily(family, delete.getTimeStamp());<a name="line.2791"></a>
-<span class="sourceLineNo">2792</span>      }<a name="line.2792"></a>
-<span class="sourceLineNo">2793</span>    } else {<a name="line.2793"></a>
-<span class="sourceLineNo">2794</span>      for(byte [] family : delete.getFamilyCellMap().keySet()) {<a name="line.2794"></a>
-<span class="sourceLineNo">2795</span>        if(family == null) {<a name="line.2795"></a>
-<span class="sourceLineNo">2796</span>          throw new NoSuchColumnFamilyException("Empty family is invalid");<a name="line.2796"></a>
-<span class="sourceLineNo">2797</span>        }<a name="line.2797"></a>
-<span class="sourceLineNo">2798</span>        checkFamily(family);<a name="line.2798"></a>
-<span class="sourceLineNo">2799</span>      }<a name="line.2799"></a>
-<span class="sourceLineNo">2800</span>    }<a name="line.2800"></a>
-<span class="sourceLineNo">2801</span>  }<a name="line.2801"></a>
-<span class="sourceLineNo">2802</span><a name="line.2802"></a>
-<span class="sourceLineNo">2803</span>  @Override<a name="line.2803"></a>
-<span class="sourceLineNo">2804</span>  public void delete(Delete delete) throws IOException {<a name="line.2804"></a>
-<span class="sourceLineNo">2805</span>    checkReadOnly();<a name="line.2805"></a>
-<span class="sourceLineNo">2806</span>    checkResources();<a name="line.2806"></a>
-<span class="sourceLineNo">2807</span>    startRegionOperation(Operation.DELETE);<a name="line.2807"></a>
-<span class="sourceLineNo">2808</span>    try {<a name="line.2808"></a>
-<span class="sourceLineNo">2809</span>      // All edits for the given row (across all column families) must happen atomically.<a name="line.2809"></a>
-<span class="sourceLineNo">2810</span>      doBatchMutate(delete);<a name="line.2810"></a>
-<span class="sourceLineNo">2811</span>    } finally {<a name="line.2811"></a>
-<span class="sourceLineNo">2812</span>      closeRegionOperation(Operation.DELETE);<a name="line.2812"></a>
-<span class="sourceLineNo">2813</span>    }<a name="line.2813"></a>
-<span class="sourceLineNo">2814</span>  }<a name="line.2814"></a>
-<span class="sourceLineNo">2815</span><a name="line.2815"></a>
-<span class="sourceLineNo">2816</span>  /**<a name="line.2816"></a>
-<span class="sourceLineNo">2817</span>   * Row needed by below method.<a name="line.2817"></a>
-<span class="sourceLineNo">2818</span>   */<a name="line.2818"></a>
-<span class="sourceLineNo">2819</span>  private static final byte [] FOR_UNIT_TESTS_ONLY = Bytes.toBytes("ForUnitTestsOnly");<a name="line.2819"></a>
-<span class="sourceLineNo">2820</span><a name="line.2820"></a>
-<span class="sourceLineNo">2821</span>  /**<a name="line.2821"></a>
-<span class="sourceLineNo">2822</span>   * This is used only by unit tests. Not required to be a public API.<a name="line.2822"></a>
-<span class="sourceLineNo">2823</span>   * @param familyMap map of family to edits for the given family.<a name="line.2823"></a>
-<span class="sourceLineNo">2824</span>   * @throws IOException<a name="line.2824"></a>
-<span class="sourceLineNo">2825</span>   */<a name="line.2825"></a>
-<span class="sourceLineNo">2826</span>  void delete(NavigableMap&lt;byte[], List&lt;Cell&gt;&gt; familyMap,<a name="line.2826"></a>
-<span class="sourceLineNo">2827</span>      Durability durability) throws IOException {<a name="line.2827"></a>
-<span class="sourceLineNo">2828</span>    Delete delete = new Delete(FOR_UNIT_TESTS_ONLY);<a name="line.2828"></a>
-<span class="sourceLineNo">2829</span>    delete.setFamilyCellMap(familyMap);<a name="line.2829"></a>
-<span class="sourceLineNo">2830</span>    delete.setDurability(durability);<a name="line.2830"></a>
-<span class="sourceLineNo">2831</span>    doBatchMutate(delete);<a name="line.2831"></a>
-<span class="sourceLineNo">2832</span>  }<a name="line.2832"></a>
-<span class="sourceLineNo">2833</span><a name="line.2833"></a>
-<span class="sourceLineNo">2834</span>  /**<a name="line.2834"></a>
-<span class="sourceLineNo">2835</span>   * Set up correct timestamps in the KVs in Delete object.<a name="line.2835"></a>
-<span class="sourceLineNo">2836</span>   * &lt;p&gt;Caller should have the row and region locks.<a name="line.2836"></a>
-<span class="sourceLineNo">2837</span>   * @param mutation<a name="line.2837"></a>
-<span class="sourceLineNo">2838</span>   * @param familyMap<a name="line.2838"></a>
-<span class="sourceLineNo">2839</span>   * @param byteNow<a name="line.2839"></a>
-<span class="sourceLineNo">2840</span>   * @throws IOException<a name="line.2840"></a>
-<span class="sourceLineNo">2841</span>   */<a name="line.2841"></a>
-<span class="sourceLineNo">2842</span>  public void prepareDeleteTimestamps(Mutation mutation, Map&lt;byte[], List&lt;Cell&gt;&gt; familyMap,<a name="line.2842"></a>
-<span class="sourceLineNo">2843</span>      byte[] byteNow) throws IOException {<a name="line.2843"></a>
-<span class="sourceLineNo">2844</span>    for (Map.Entry&lt;byte[], List&lt;Cell&gt;&gt; e : familyMap.entrySet()) {<a name="line.2844"></a>
-<span class="sourceLineNo">2845</span><a name="line.2845"></a>
-<span class="sourceLineNo">2846</span>      byte[] family = e.getKey();<a name="line.2846"></a>
-<span class="sourceLineNo">2847</span>      List&lt;Cell&gt; cells = e.getValue();<a name="line.2847"></a>
-<span class="sourceLineNo">2848</span>      assert cells instanceof RandomAccess;<a name="line.2848"></a>
-<span class="sourceLineNo">2849</span><a name="line.2849"></a>
-<span class="sourceLineNo">2850</span>      Map&lt;byte[], Integer&gt; kvCount = new TreeMap&lt;&gt;(Bytes.BYTES_COMPARATOR);<a name="line.2850"></a>
-<span class="sourceLineNo">2851</span>      int listSize = cells.size();<a name="line.2851"></a>
-<span class="sourceLineNo">2852</span>      for (int i=0; i &lt; listSize; i++) {<a name="line.2852"></a>
-<span class="sourceLineNo">2853</span>        Cell cell = cells.get(i);<a name="line.2853"></a>
-<span class="sourceLineNo">2854</span>        //  Check if time is LATEST, change to time of most recent addition if so<a name="line.2854"></a>
-<span class="sourceLineNo">2855</span>        //  This is expensive.<a name="line.2855"></a>
-<span class="sourceLineNo">2856</span>        if (cell.getTimestamp() == HConstants.LATEST_TIMESTAMP<a name="line.2856"></a>
-<span class="sourceLineNo">2857</span>            &amp;&amp; PrivateCellUtil.isDeleteType(cell)) {<a name="line.2857"></a>
-<span class="sourceLineNo">2858</span>          byte[] qual = CellUtil.cloneQualifier(cell);<a name="line.2858"></a>
-<span class="sourceLineNo">2859</span><a name="line.2859"></a>
-<span class="sourceLineNo">2860</span>          Integer count = kvCount.get(qual);<a name="line.2860"></a>
-<span class="sourceLineNo">2861</span>          if (count == null) {<a name="line.2861"></a>
-<span class="sourceLineNo">2862</span>            kvCount.put(qual, 1);<a name="line.2862"></a>
-<span class="sourceLineNo">2863</span>          } else {<a name="line.2863"></a>
-<span class="sourceLineNo">2864</span>            kvCount.put(qual, count + 1);<a name="line.2864"></a>
-<span class="sourceLineNo">2865</span>          }<a name="line.2865"></a>
-<span class="sourceLineNo">2866</span>          count = kvCount.get(qual);<a name="line.2866"></a>
-<span class="sourceLineNo">2867</span><a name="line.2867"></a>
-<span class="sourceLineNo">2868</span>          Get get = new Get(CellUtil.cloneRow(cell));<a name="line.2868"></a>
-<span class="sourceLineNo">2869</span>          get.setMaxVersions(count);<a name="line.2869"></a>
-<span class="sourceLineNo">2870</span>          get.addColumn(family, qual);<a name="line.2870"></a>
-<span class="sourceLineNo">2871</span>          if (coprocessorHost != null) {<a name="line.2871"></a>
-<span class="sourceLineNo">2872</span>            if (!coprocessorHost.prePrepareTimeStampForDeleteVersion(mutation, cell,<a name="line.2872"></a>
-<span class="sourceLineNo">2873</span>                byteNow, get)) {<a name="line.2873"></a>
-<span class="sourceLineNo">2874</span>              updateDeleteLatestVersionTimeStamp(cell, get, count, byteNow);<a name="line.2874"></a>
-<span class="sourceLineNo">2875</span>            }<a name="line.2875"></a>
-<span class="sourceLineNo">2876</span>          } else {<a name="line.2876"></a>
-<span class="sourceLineNo">2877</span>            updateDeleteLatestVersionTimeStamp(cell, get, count, byteNow);<a name="line.2877"></a>
-<span class="sourceLineNo">2878</span>          }<a name="line.2878"></a>
-<span class="sourceLineNo">2879</span>        } else {<a name="line.2879"></a>
-<span class="sourceLineNo">2880</span>          PrivateCellUtil.updateLatestStamp(cell, byteNow, 0);<a name="line.2880"></a>
-<span class="sourceLineNo">2881</span>        }<a name="line.2881"></a>
-<span class="sourceLineNo">2882</span>      }<a name="line.2882"></a>
-<span class="sourceLineNo">2883</span>    }<a name="line.2883"></a>
-<span class="sourceLineNo">2884</span>  }<a name="line.2884"></a>
-<span class="sourceLineNo">2885</span><a name="line.2885"></a>
-<span class="sourceLineNo">2886</span>  void updateDeleteLatestVersionTimeStamp(Cell cell, Get get, int count, byte[] byteNow)<a name="line.2886"></a>
-<span class="sourceLineNo">2887</span>      throws IOException {<a name="line.2887"></a>
-<span class="sourceLineNo">2888</span>    List&lt;Cell&gt; result = get(get, false);<a name="line.2888"></a>
-<span class="sourceLineNo">2889</span><a name="line.2889"></a>
-<span class="sourceLineNo">2890</span>    if (result.size() &lt; count) {<a name="line.2890"></a>
-<span class="sourceLineNo">2891</span>      // Nothing to delete<a name="line.2891"></a>
-<span class="sourceLineNo">2892</span>      PrivateCellUtil.updateLatestStamp(cell, byteNow, 0);<a name="line.2892"></a>
-<span class="sourceLineNo">2893</span>      return;<a name="line.2893"></a>
-<span class="sourceLineNo">2894</span>    }<a name="line.2894"></a>
-<span class="sourceLineNo">2895</span>    if (result.size() &gt; count) {<a name="line.2895"></a>
-<span class="sourceLineNo">2896</span>      throw new RuntimeException("Unexpected size: " + result.size());<a name="line.2896"></a>
-<span class="sourceLineNo">2897</span>    }<a name="line.2897"></a>
-<span class="sourceLineNo">2898</span>    Cell getCell = result.get(count - 1);<a name="line.2898"></a>
-<span class="sourceLineNo">2899</span>    PrivateCellUtil.setTimestamp(cell, getCell.getTimestamp());<a name="line.2899"></a>
-<span class="sourceLineNo">2900</span>  }<a name="line.2900"></a>
-<span class="sourceLineNo">2901</span><a name="line.2901"></a>
-<span class="sourceLineNo">2902</span>  @Override<a name="line.2902"></a>
-<span class="sourceLineNo">2903</span>  public void put(Put put) throws IOException {<a name="line.2903"></a>
-<span class="sourceLineNo">2904</span>    checkReadOnly();<a name="line.2904"></a>
-<span class="sourceLineNo">2905</span><a name="line.2905"></a>
-<span class="sourceLineNo">2906</span>    // Do a rough check that we have resources to accept a write.  The check is<a name="line.2906"></a>
-<span class="sourceLineNo">2907</span>    // 'rough' in that between the resource check and the call to obtain a<a name="line.2907"></a>
-<span class="sourceLineNo">2908</span>    // read lock, resources may run out.  For now, the thought is that this<a name="line.2908"></a>
-<span class="sourceLineNo">2909</span>    // will be extremely rare; we'll deal with it when it happens.<a name="line.2909"></a>
-<span class="sourceLineNo">2910</span>    checkResources();<a name="line.2910"></a>
-<span class="sourceLineNo">2911</span>    startRegionOperation(Operation.PUT);<a name="line.2911"></a>
-<span class="sourceLineNo">2912</span>    try {<a name="line.2912"></a>
-<span class="sourceLineNo">2913</span>      // All edits for the given row (across all column families) must happen atomically.<a name="line.2913"></a>
-<span class="sourceLineNo">2914</span>      doBatchMutate(put);<a name="line.2914"></a>
-<span class="sourceLineNo">2915</span>    } finally {<a name="line.2915"></a>
-<span class="sourceLineNo">2916</span>      closeRegionOperation(Operation.PUT);<a name="line.2916"></a>
-<span class="sourceLineNo">2917</span>    }<a name="line.2917"></a>
-<span class="sourceLineNo">2918</span>  }<a name="line.2918"></a>
-<span class="sourceLineNo">2919</span><a name="line.2919"></a>
-<span class="sourceLineNo">2920</span>  /**<a name="line.2920"></a>
-<span class="sourceLineNo">2921</span>   * Class that tracks the progress of a batch operations, accumulating status codes and tracking<a name="line.2921"></a>
-<span class="sourceLineNo">2922</span>   * the index at which processing is proceeding. These batch operations may get split into<a name="line.2922"></a>
-<span class="sourceLineNo">2923</span>   * mini-batches for processing.<a name="line.2923"></a>
-<span class="sourceLineNo">2924</span>   */<a name="line.2924"></a>
-<span class="sourceLineNo">2925</span>  private abstract static class BatchOperation&lt;T&gt; {<a name="line.2925"></a>
-<span class="sourceLineNo">2926</span>    protected final T[] operations;<a name="line.2926"></a>
-<span class="sourceLineNo">2927</span>    protected final OperationStatus[] retCodeDetails;<a name="line.2927"></a>
-<span class="sourceLineNo">2928</span>    protected final WALEdit[] walEditsFromCoprocessors;<a name="line.2928"></a>
-<span class="sourceLineNo">2929</span>    // reference family cell maps directly so coprocessors can mutate them if desired<a name="line.2929"></a>
-<span class="sourceLineNo">2930</span>    protected final Map&lt;byte[], List&lt;Cell&gt;&gt;[] familyCellMaps;<a name="line.2930"></a>
-<span class="sourceLineNo">2931</span><a name="line.2931"></a>
-<span class="sourceLineNo">2932</span>    protected final HRegion region;<a name="line.2932"></a>
-<span class="sourceLineNo">2933</span>    protected int nextIndexToProcess = 0;<a name="line.2933"></a>
-<span class="sourceLineNo">2934</span>    protected final ObservedExceptionsInBatch observedExceptions;<a name="line.2934"></a>
-<span class="sourceLineNo">2935</span>    //Durability of the batch (highest durability of all operations)<a name="line.2935"></a>
-<span class="sourceLineNo">2936</span>    protected Durability durability;<a name="line.2936"></a>
-<span class="sourceLineNo">2937</span>    protected boolean atomic = false;<a name="line.2937"></a>
-<span class="sourceLineNo">2938</span><a name="line.2938"></a>
-<span class="sourceLineNo">2939</span>    public BatchOperation(final HRegion region, T[] operations) {<a name="line.2939"></a>
-<span class="sourceLineNo">2940</span>      this.operations = operations;<a name="line.2940"></a>
-<span class="sourceLineNo">2941</span>      this.retCodeDetails = new OperationStatus[operations.length];<a name="line.2941"></a>
-<span class="sourceLineNo">2942</span>      Arrays.fill(this.retCodeDetails, OperationStatus.NOT_RUN);<a name="line.2942"></a>
-<span class="sourceLineNo">2943</span>      this.walEditsFromCoprocessors = new WALEdit[operations.length];<a name="line.2943"></a>
-<span class="sourceLineNo">2944</span>      familyCellMaps = new Map[operations.length];<a name="line.2944"></a>
-<span class="sourceLineNo">2945</span><a name="line.2945"></a>
-<span class="sourceLineNo">2946</span>      this.region = region;<a name="line.2946"></a>
-<span class="sourceLineNo">2947</span>      observedExceptions = new ObservedExceptionsInBatch();<a name="line.2947"></a>
-<span class="sourceLineNo">2948</span>      durability = Durability.USE_DEFAULT;<a name="line.2948"></a>
-<span class="sourceLineNo">2949</span>    }<a name="line.2949"></a>
-<span class="sourceLineNo">2950</span><a name="line.2950"></a>
-<span class="sourceLineNo">2951</span>    /**<a name="line.2951"></a>
-<span class="sourceLineNo">2952</span>     * Visitor interface for batch operations<a name="line.2952"></a>
-<span class="sourceLineNo">2953</span>     */<a name="line.2953"></a>
-<span class="sourceLineNo">2954</span>    @FunctionalInterface<a name="line.2954"></a>
-<span class="sourceLineNo">2955</span>    public interface Visitor {<a name="line.2955"></a>
-<span class="sourceLineNo">2956</span>      /**<a name="line.2956"></a>
-<span class="sourceLineNo">2957</span>       * @param index operation index<a name="line.2957"></a>
-<span class="sourceLineNo">2958</span>       * @return If true continue visiting remaining entries, break otherwise<a name="line.2958"></a>
-<span class="sourceLineNo">2959</span>       */<a name="line.2959"></a>
-<span class="sourceLineNo">2960</span>      boolean visit(int index) throws IOException;<a name="line.2960"></a>
-<span class="sourceLineNo">2961</span>    }<a name="line.2961"></a>
-<span class="sourceLineNo">2962</span><a name="line.2962"></a>
-<span class="sourceLineNo">2963</span>    /**<a name="line.2963"></a>
-<span class="sourceLineNo">2964</span>     * Helper method for visiting pending/ all batch operations<a name="line.2964"></a>
-<span class="sourceLineNo">2965</span>     */<a name="line.2965"></a>
-<span class="sourceLineNo">2966</span>    public void visitBatchOperations(boolean pendingOnly, int lastIndexExclusive, Visitor visitor)<a name="line.2966"></a>
-<span class="sourceLineNo">2967</span>        throws IOException {<a name="line.2967"></a>
-<span class="sourceLineNo">2968</span>      assert lastIndexExclusive &lt;= this.size();<a name="line.2968"></a>
-<span class="sourceLineNo">2969</span>      for (int i = nextIndexToProcess; i &lt; lastIndexExclusive; i++) {<a name="line.2969"></a>
-<span class="sourceLineNo">2970</span>        if (!pendingOnly || isOperationPending(i)) {<a name="line.2970"></a>
-<span class="sourceLineNo">2971</span>          if (!visitor.visit(i)) {<a name="line.2971"></a>
-<span class="sourceLineNo">2972</span>            break;<a name="line.2972"></a>
-<span class="sourceLineNo">2973</span>          }<a name="line.2973"></a>
-<span class="sourceLineNo">2974</span>        }<a name="line.2974"></a>
-<span class="sourceLineNo">2975</span>      }<a name="line.2975"></a>
-<span class="sourceLineNo">2976</span>    }<a name="line.2976"></a>
-<span class="sourceLineNo">2977</span><a name="line.2977"></a>
-<span class="sourceLineNo">2978</span>    public abstract Mutation getMutation(int index);<a name="line.2978"></a>
-<span class="sourceLineNo">2979</span>    public abstract long getNonceGroup(int index);<a name="line.2979"></a>
-<span class="sourceLineNo">2980</span>    public abstract long getNonce(int index);<a name="line.2980"></a>
-<span class="sourceLineNo">2981</span>    /** This method is potentially expensive and useful mostly for non-replay CP path. */<a name="line.2981"></a>
-<span class="sourceLineNo">2982</span>    public abstract Mutation[] getMutationsForCoprocs();<a name="line.2982"></a>
-<span class="sourceLineNo">2983</span>    public abstract boolean isInReplay();<a name="line.2983"></a>
-<span class="sourceLineNo">2984</span>    public abstract long getOrigLogSeqNum();<a name="line.2984"></a>
-<span class="sourceLineNo">2985</span>    public abstract void startRegionOperation() throws IOException;<a name="line.2985"></a>
-<span class="sourceLineNo">2986</span>    public abstract void closeRegionOperation() throws IOException;<a name="line.2986"></a>
-<span class="sourceLineNo">2987</span><a name="line.2987"></a>
-<span class="sourceLineNo">2988</span>    /**<a name="line.2988"></a>
-<span class="sourceLineNo">2989</span>     * Validates each mutation and prepares a batch for write. If necessary (non-replay case), runs<a name="line.2989"></a>
-<span class="sourceLineNo">2990</span>     * CP prePut()/ preDelete() hooks for all mutations in a batch. This is intended to operate on<a name="line.2990"></a>
-<span class="sourceLineNo">2991</span>     * entire batch and will be called from outside of class to check and prepare batch. This can<a name="line.2991"></a>
-<span class="sourceLineNo">2992</span>     * be implemented by calling helper method {@link #checkAndPrepareMutation(int, long)} in a<a name="line.2992"></a>
-<span class="sourceLineNo">2993</span>     * 'for' loop over mutations.<a name="line.2993"></a>
-<span class="sourceLineNo">2994</span>     */<a name="line.2994"></a>
-<span class="sourceLineNo">2995</span>    public abstract void checkAndPrepare() throws IOException;<a name="line.2995"></a>
-<span class="sourceLineNo">2996</span><a name="line.2996"></a>
-<span class="sourceLineNo">2997</span>    /**<a name="line.2997"></a>
-<span class="sourceLineNo">2998</span>     * Implement any Put request specific check and prepare logic here. Please refer to<a name="line.2998"></a>
-<span class="sourceLineNo">2999</span>     * {@link #checkAndPrepareMutation(Mutation, long)} for how its used.<a name="line.2999"></a>
-<span class="sourceLineNo">3000</span>     */<a name="line.3000"></a>
-<span class="sourceLineNo">3001</span>    protected abstract void checkAndPreparePut(final Put p) throws IOException;<a name="line.3001"></a>
-<span class="sourceLineNo">3002</span><a name="line.3002"></a>
-<span class="sourceLineNo">3003</span>    /**<a name="line.3003"></a>
-<span class="sourceLineNo">3004</span>     *  If necessary, calls preBatchMutate() CP hook for a mini-batch and updates metrics, cell<a name="line.3004"></a>
-<span class="sourceLineNo">3005</span>     *  count, tags and timestamp for all cells of all operations in a mini-batch.<a name="line.3005"></a>
-<span class="sourceLineNo">3006</span>     */<a name="line.3006"></a>
-<span class="sourceLineNo">3007</span>    public abstract void prepareMiniBatchOperations(MiniBatchOperationInProgress&lt;Mutation&gt;<a name="line.3007"></a>
-<span class="sourceLineNo">3008</span>        miniBatchOp, long timestamp, final List&lt;RowLock&gt; acquiredRowLocks) throws IOException;<a name="line.3008"></a>
-<span class="sourceLineNo">3009</span><a name="line.3009"></a>
-<span class="sourceLineNo">3010</span>    /**<a name="line.3010"></a>
-<span class="sourceLineNo">3011</span>     * Write mini-batch operations to MemStore<a name="line.3011"></a>
-<span class="sourceLineNo">3012</span>     */<a name="line.3012"></a>
-<span class="sourceLineNo">3013</span>    public abstract WriteEntry writeMiniBatchOperationsToMemStore(<a name="line.3013"></a>
-<span class="sourceLineNo">3014</span>        final MiniBatchOperationInProgress&lt;Mutation&gt; miniBatchOp, final WriteEntry writeEntry)<a name="line.3014"></a>
-<span class="sourceLineNo">3015</span>        throws IOException;<a name="line.3015"></a>
-<span class="sourceLineNo">3016</span><a name="line.3016"></a>
-<span class="sourceLineNo">3017</span>    protected void writeMiniBatchOperationsToMemStore(<a name="line.3017"></a>
-<span class="sourceLineNo">3018</span>        final MiniBatchOperationInProgress&lt;Mutation&gt; miniBatchOp, final long writeNumber)<a name="line.3018"></a>
-<span class="sourceLineNo">3019</span>        throws IOException {<a name="line.3019"></a>
-<span class="sourceLineNo">3020</span>      MemStoreSizing memStoreAccounting = new MemStoreSizing();<a name="line.3020"></a>
-<span class="sourceLineNo">3021</span>      visitBatchOperations(true, miniBatchOp.getLastIndexExclusive(), (int index) -&gt; {<a name="line.3021"></a>
-<span class="sourceLineNo">3022</span>        // We need to update the sequence id for following reasons.<a name="line.3022"></a>
-<span class="sourceLineNo">3023</span>        // 1) If the op is in replay mode, FSWALEntry#stampRegionSequenceId won't stamp sequence id.<a name="line.3023"></a>
-<span class="sourceLineNo">3024</span>        // 2) If no WAL, FSWALEntry won't be used<a name="line.3024"></a>
-<span class="sourceLineNo">3025</span>        // we use durability of the original mutation for the mutation passed by CP.<a name="line.3025"></a>
-<span class="sourceLineNo">3026</span>        if (isInReplay() || getMutation(index).getDurability() == Durability.SKIP_WAL) {<a name="line.3026"></a>
-<span class="sourceLineNo">3027</span>          region.updateSequenceId(familyCellMaps[index].values(), writeNumber);<a name="line.3027"></a>
-<span class="sourceLineNo">3028</span>        }<a name="line.3028"></a>
-<span class="sourceLineNo">3029</span>        applyFamilyMapToMemStore(familyCellMaps[index], memStoreAccounting);<a name="line.3029"></a>
-<span class="sourceLineNo">3030</span>        return true;<a name="line.3030"></a>
-<span class="sourceLineNo">3031</span>      });<a name="line.3031"></a>
-<span class="sourceLineNo">3032</span>      // update memStore size<a name="line.3032"></a>
-<span class="sourceLineNo">3033</span>      region.addAndGetMemStoreSize(memStoreAccounting);<a name="line.3033"></a>
-<span class="sourceLineNo">3034</span>    }<a name="line.3034"></a>
-<span class="sourceLineNo">3035</span><a name="line.3035"></a>
-<span class="sourceLineNo">3036</span>    public boolean isDone() {<a name="line.3036"></a>
-<span class="sourceLineNo">3037</span>      return nextIndexToProcess == operations.length;<a name="line.3037"></a>
-<span class="sourceLineNo">3038</span>    }<a name="line.3038"></a>
-<span class="sourceLineNo">3039</span><a name="line.3039"></a>
-<span class="sourceLineNo">3040</span>    public int size() {<a name="line.3040"></a>
-<span class="sourceLineNo">3041</span>      return operations.length;<a name="line.3041"></a>
-<span class="sourceLineNo">3042</span>    }<a name="line.3042"></a>
-<span class="sourceLineNo">3043</span><a name="line.3043"></a>
-<span class="sourceLineNo">3044</span>    public boolean isOperationPending(int index) {<a name="line.3044"></a>
-<span class="sourceLineNo">3045</span>      return retCodeDetails[index].getOperationStatusCode() == OperationStatusCode.NOT_RUN;<a name="line.3045"></a>
-<span class="sourceLineNo">3046</span>    }<a name="line.3046"></a>
-<span class="sourceLineNo">3047</span><a name="line.3047"></a>
-<span class="sourceLineNo">3048</span>    public List&lt;UUID&gt; getClusterIds() {<a name="line.3048"></a>
-<span class="sourceLineNo">3049</span>      assert size() != 0;<a name="line.3049"></a>
-<span class="sourceLineNo">3050</span>      return getMutation(0).getClusterIds();<a name="line.3050"></a>
-<span class="sourceLineNo">3051</span>    }<a name="line.3051"></a>
-<span class="sourceLineNo">3052</span><a name="line.3052"></a>
-<span class="sourceLineNo">3053</span>    boolean isAtomic() {<a name="line.3053"></a>
-<span class="sourceLineNo">3054</span>      return atomic;<a name="line.3054"></a>
-<span class="sourceLineNo">3055</span>    }<a name="line.3055"></a>
-<span class="sourceLineNo">3056</span><a name="line.3056"></a>
-<span class="sourceLineNo">3057</span>    /**<a name="line.3057"></a>
-<span class="sourceLineNo">3058</span>     * Helper method that checks and prepares only one mutation. This can be used to implement<a name="line.3058"></a>
-<span class="sourceLineNo">3059</span>     * {@link #checkAndPrepare()} for entire Batch.<a name="line.3059"></a>
-<span class="sourceLineNo">3060</span>     * NOTE: As CP prePut()/ preDelete() hooks may modify mutations, this method should be called<a name="line.3060"></a>
-<span class="sourceLineNo">3061</span>     * after prePut()/ preDelete() CP hooks are run for the mutation<a name="line.3061"></a>
-<span class="sourceLineNo">3062</span>     */<a name="line.3062"></a>
-<span class="sourceLineNo">3063</span>    protected void checkAndPrepareMutation(Mutation mutation, final long timestamp)<a name="line.3063"></a>
-<span class="sourceLineNo">3064</span>        throws IOException {<a name="line.3064"></a>
-<span class="sourceLineNo">3065</span>      region.checkRow(mutation.getRow(), "batchMutate");<a name="line.3065"></a>
-<span class="sourceLineNo">3066</span>      if (mutation instanceof Put) {<a name="line.3066"></a>
-<span class="sourceLineNo">3067</span>        // Check the families in the put. If bad, skip this one.<a name="line.3067"></a>
-<span class="sourceLineNo">3068</span>        checkAndPreparePut((Put) mutation);<a name="line.3068"></a>
-<span class="sourceLineNo">3069</span>        region.checkTimestamps(mutation.getFamilyCellMap(), timestamp);<a name="line.3069"></a>
-<span class="sourceLineNo">3070</span>      } else {<a name="line.3070"></a>
-<span class="sourceLineNo">3071</span>        region.prepareDelete((Delete) mutation);<a name="line.3071"></a>
-<span class="sourceLineNo">3072</span>      }<a name="line.3072"></a>
-<span class="sourceLineNo">3073</span>    }<a name="line.3073"></a>
-<span class="sourceLineNo">3074</span><a name="line.3074"></a>
-<span class="sourceLineNo">3075</span>    protected void checkAndPrepareMutation(int index, long timestamp) throws IOException {<a name="line.3075"></a>
-<span class="sourceLineNo">3076</span>      Mutation mutation = getMutation(index);<a name="line.3076"></a>
-<span class="sourceLineNo">3077</span>      try {<a name="line.3077"></a>
-<span class="sourceLineNo">3078</span>        this.checkAndPrepareMutation(mutation, timestamp);<a name="line.3078"></a>
-<span class="sourceLineNo">3079</span><a name="line.3079"></a>
-<span class="sourceLineNo">3080</span>        // store the family map reference to allow for mutations<a name="line.3080"></a>
-<span class="sourceLineNo">3081</span>        familyCellMaps[index] = mutation.getFamilyCellMap();<a name="line.3081"></a>
-<span class="sourceLineNo">3082</span>        // store durability for the batch (highest durability of all operations in the batch)<a name="line.3082"></a>
-<span class="sourceLineNo">3083</span>        Durability tmpDur = region.getEffectiveDurability(mutation.getDurability());<a name="line.3083"></a>
-<span class="sourceLineNo">3084</span>        if (tmpDur.ordinal() &gt; durability.ordinal()) {<a name="line.3084"></a>
-<span class="sourceLineNo">3085</span>          durability = tmpDur;<a name="line.3085"></a>
-<span class="sourceLineNo">3086</span>        }<a name="line.3086"></a>
-<span class="sourceLineNo">3087</span>      } catch (NoSuchColumnFamilyException nscfe) {<a name="line.3087"></a>
-<span class="sourceLineNo">3088</span>        final String msg = "No such column family in batch mutation. ";<a name="line.3088"></a>
-<span class="sourceLineNo">3089</span>        if (observedExceptions.hasSeenNoSuchFamily()) {<a name="line.3089"></a>
-<span class="sourceLineNo">3090</span>          LOG.warn(msg + nscfe.getMessage());<a name="line.3090"></a>
-<span class="sourceLineNo">3091</span>        } else {<a name="line.3091"></a>
-<span class="sourceLineNo">3092</span>          LOG.warn(msg, nscfe);<a name="line.3092"></a>
-<span class="sourceLineNo">3093</span>          observedExceptions.sawNoSuchFamily();<a name="line.3093"></a>
-<span class="sourceLineNo">3094</span>        }<a name="line.3094"></a>
-<span class="sourceLineNo">3095</span>        retCodeDetails[index] = new OperationStatus(<a name="line.3095"></a>
-<span class="sourceLineNo">3096</span>            OperationStatusCode.BAD_FAMILY, nscfe.getMessage());<a name="line.3096"></a>
-<span class="sourceLineNo">3097</span>        if (isAtomic()) { // fail, atomic means all or none<a name="line.3097"></a>
-<span class="sourceLineNo">3098</span>          throw nscfe;<a name="line.3098"></a>
-<span class="sourceLineNo">3099</span>        }<a name="line.3099"></a>
-<span class="sourceLineNo">3100</span>      } catch (FailedSanityCheckException fsce) {<a name="line.3100"></a>
-<span class="sourceLineNo">3101</span>        final String msg = "Batch Mutation did not pass sanity check. ";<a name="line.3101"></a>
-<span class="sourceLineNo">3102</span>        if (observedExceptions.hasSeenFailedSanityCheck()) {<a name="line.3102"></a>
-<span class="sourceLineNo">3103</span>          LOG.warn(msg + fsce.getMessage());<a name="line.3103"></a>
-<span class="sourceLineNo">3104</span>        } else {<a name="line.3104"></a>
-<span class="sourceLineNo">3105</span>          LOG.warn(msg, fsce);<a name="line.3105"></a>
-<span class="sourceLineNo">3106</span>          observedExceptions.sawFailedSanityCheck();<a name="line.3106"></a>
-<span class="sourceLineNo">3107</span>        }<a name="line.3107"></a>
-<span class="sourceLineNo">3108</span>        retCodeDetails[index] = new OperationStatus(<a name="line.3108"></a>
-<span class="sourceLineNo">3109</span>            OperationStatusCode.SANITY_CHECK_FAILURE, fsce.getMessage());<a name="line.3109"></a>
-<span class="sourceLineNo">3110</span>        if (isAtomic()) {<a name="line.3110"></a>
-<span class="sourceLineNo">3111</span>          throw fsce;<a name="line.3111"></a>
-<span class="sourceLineNo">3112</span>        }<a name="line.3112"></a>
-<span class="sourceLineNo">3113</span>      } catch (WrongRegionException we) {<a name="line.3113"></a>
-<span class="sourceLineNo">3114</span>        final String msg = "Batch mutation had a row that does not belong to this region. ";<a name="line.3114"></a>
-<span class="sourceLineNo">3115</span>        if (observedExceptions.hasSeenWrongRegion()) {<a name="line.3115"></a>
-<span class="sourceLineNo">3116</span>          LOG.warn(msg + we.getMessage());<a name="line.3116"></a>
-<span class="sourceLineNo">3117</span>        } else {<a name="line.3117"></a>
-<span class="sourceLineNo">3118</span>          LOG.warn(msg, we);<a name="line.3118"></a>
-<span class="sourceLineNo">3119</span>          observedExceptions.sawWrongRegion();<a name="line.3119"></a>
-<span class="sourceLineNo">3120</span>        }<a name="line.3120"></a>
-<span class="sourceLineNo">3121</span>        retCodeDetails[index] = new OperationStatus(<a name="line.3121"></a>
-<span class="sourceLineNo">3122</span>            OperationStatusCode.SANITY_CHECK_FAILURE, we.getMessage());<a name="line.3122"></a>
-<span class="sourceLineNo">3123</span>        if (isAtomic()) {<a name="line.3123"></a>
-<span class="sourceLineNo">3124</span>          throw we;<a name="line.3124"></a>
-<span class="sourceLineNo">3125</span>        }<a name="line.3125"></a>
-<span class="sourceLineNo">3126</span>      }<a name="line.3126"></a>
-<span class="sourceLineNo">3127</span>    }<a name="line.3127"></a>
-<span class="sourceLineNo">3128</span><a name="line.3128"></a>
-<span class="sourceLineNo">3129</span>    /**<a name="line.3129"></a>
-<span class="sourceLineNo">3130</span>     * Creates Mini-batch of all operations [nextIndexToProcess, lastIndexExclusive) for which<a name="line.3130"></a>
-<span class="sourceLineNo">3131</span>     * a row lock can be acquired. All mutations with locked rows are considered to be<a name="line.3131"></a>
-<span class="sourceLineNo">3132</span>     * In-progress operations and hence the name {@link MiniBatchOperationInProgress}. Mini batch<a name="line.3132"></a>
-<span class="sourceLineNo">3133</span>     * is window over {@link BatchOperation} and contains contiguous pending operations.<a name="line.3133"></a>
-<span class="sourceLineNo">3134</span>     *<a name="line.3134"></a>
-<span class="sourceLineNo">3135</span>     * @param acquiredRowLocks keeps track of rowLocks acquired.<a name="line.3135"></a>
-<span class="sourceLineNo">3136</span>     */<a name="line.3136"></a>
-<span class="sourceLineNo">3137</span>    public MiniBatchOperationInProgress&lt;Mutation&gt; lockRowsAndBuildMiniBatch(<a name="line.3137"></a>
-<span class="sourceLineNo">3138</span>        List&lt;RowLock&gt; acquiredRowLocks) throws IOException {<a name="line.3138"></a>
-<span class="sourceLineNo">3139</span>      int readyToWriteCount = 0;<a name="line.3139"></a>
-<span class="sourceLineNo">3140</span>      int lastIndexExclusive = 0;<a name="line.3140"></a>
-<span class="sourceLineNo">3141</span>      for (; lastIndexExclusive &lt; size(); lastIndexExclusive++) {<a name="line.3141"></a>
-<span class="sourceLineNo">3142</span>        if (!isOperationPending(lastIndexExclusive)) {<a name="line.3142"></a>
-<span class="sourceLineNo">3143</span>          continue;<a name="line.3143"></a>
-<span class="sourceLineNo">3144</span>        }<a name="line.3144"></a>
-<span class="sourceLineNo">3145</span>        Mutation mutation = getMutation(lastIndexExclusive);<a name="line.3145"></a>
-<span class="sourceLineNo">3146</span>        // If we haven't got any rows in our batch, we should block to get the next one.<a name="line.3146"></a>
-<span class="sourceLineNo">3147</span>        RowLock rowLock = null;<a name="line.3147"></a>
-<span class="sourceLineNo">3148</span>        try {<a name="line.3148"></a>
-<span class="sourceLineNo">3149</span>          // if atomic then get exclusive lock, else shared lock<a name="line.3149"></a>
-<span class="sourceLineNo">3150</span>          rowLock = region.getRowLockInternal(mutation.getRow(), !isAtomic());<a name="line.3150"></a>
-<span class="sourceLineNo">3151</span>        } catch (TimeoutIOException e) {<a name="line.3151"></a>
-<span class="sourceLineNo">3152</span>          // We will retry when other exceptions, but we should stop if we timeout .<a name="line.3152"></a>
-<span class="sourceLineNo">3153</span>          throw e;<a name="line.3153"></a>
-<span class="sourceLineNo">3154</span>        } catch (IOException ioe) {<a name="line.3154"></a>
-<span class="sourceLineNo">3155</span>          LOG.warn("Failed getting lock, row=" + Bytes.toStringBinary(mutation.getRow()), ioe);<a name="line.3155"></a>
-<span class="sourceLineNo">3156</span>          if (isAtomic()) { // fail, atomic means all or none<a name="line.3156"></a>
-<span class="sourceLineNo">3157</span>            throw ioe;<a name="line.3157"></a>
-<span class="sourceLineNo">3158</span>          }<a name="line.3158"></a>
-<span class="sourceLineNo">3159</span>        }<a name="line.3159"></a>
-<span class="sourceLineNo">3160</span>        if (rowLock == null) {<a name="line.3160"></a>
-<span class="sourceLineNo">3161</span>          // We failed to grab another lock<a name="line.3161"></a>
-<span class="sourceLineNo">3162</span>          if (isAtomic()) {<a name="line.3162"></a>
-<span class="sourceLineNo">3163</span>            throw new IOException("Can't apply all operations atomically!");<a name="line.3163"></a>
-<span class="sourceLineNo">3164</span>          }<a name="line.3164"></a>
-<span class="sourceLineNo">3165</span>          break; // Stop acquiring more rows for this batch<a name="line.3165"></a>
-<span class="sourceLineNo">3166</span>        } else {<a name="line.3166"></a>
-<span class="sourceLineNo">3167</span>          acquiredRowLocks.add(rowLock);<a name="line.3167"></a>
-<span class="sourceLineNo">3168</span>        }<a name="line.3168"></a>
-<span class="sourceLineNo">3169</span>        readyToWriteCount++;<a name="line.3169"></a>
-<span class="sourceLineNo">3170</span>      }<a name="line.3170"></a>
-<span class="sourceLineNo">3171</span>      return createMiniBatch(lastIndexExclusive, readyToWriteCount);<a name="line.3171"></a>
-<span class="sourceLineNo">3172</span>    }<a name="line.3172"></a>
-<span class="sourceLineNo">3173</span><a name="line.3173"></a>
-<span class="sourceLineNo">3174</span>    protected MiniBatchOperationInProgress&lt;Mutation&gt; createMiniBatch(final int lastIndexExclusive,<a name="line.3174"></a>
-<span class="sourceLineNo">3175</span>        final int readyToWriteCount) {<a name="line.3175"></a>
-<span class="sourceLineNo">3176</span>      return new MiniBatchOperationInProgress&lt;&gt;(getMutationsForCoprocs(), retCodeDetails,<a name="line.3176"></a>
-<span class="sourceLineNo">3177</span>          walEditsFromCoprocessors, nextIndexToProcess, lastIndexExclusive, readyToWriteCount);<a name="line.3177"></a>
-<span class="sourceLineNo">3178</span>    }<a name="line.3178"></a>
-<span class="sourceLineNo">3179</span><a name="line.3179"></a>
-<span class="sourceLineNo">3180</span>    /**<a name="line.3180"></a>
-<span class="sourceLineNo">3181</span>     * Builds separate WALEdit per nonce by applying input mutations. If WALEdits from CP are<a name="line.3181"></a>
-<span class="sourceLineNo">3182</span>     * present, they are merged to result WALEdit.<a name="line.3182"></a>
-<span class="sourceLineNo">3183</span>     */<a name="line.3183"></a>
-<span class="sourceLineNo">3184</span>    public List&lt;Pair&lt;NonceKey, WALEdit&gt;&gt; buildWALEdits(<a name="line.3184"></a>
-<span class="sourceLineNo">3185</span>        final MiniBatchOperationInProgress&lt;Mutation&gt; miniBatchOp) throws IOException {<a name="line.3185"></a>
-<span class="sourceLineNo">3186</span>      List&lt;Pair&lt;NonceKey, WALEdit&gt;&gt; walEdits = new ArrayList&lt;&gt;();<a name="line.3186"></a>
-<span class="sourceLineNo">3187</span><a name="line.3187"></a>
-<span class="sourceLineNo">3188</span>      visitBatchOperations(true, nextIndexToProcess + miniBatchOp.size(), new Visitor() {<a name="line.3188"></a>
-<span class="sourceLineNo">3189</span>        private Pair&lt;NonceKey, WALEdit&gt; curWALEditForNonce;<a name="line.3189"></a>
-<span class="sourceLineNo">3190</span>        @Override<a name="line.3190"></a>
-<span class="sourceLineNo">3191</span>        public boolean visit(int index) throws IOException {<a name="line.3191"></a>
-<span class="sourceLineNo">3192</span>          Mutation m = getMutation(index);<a name="line.3192"></a>
-<span class="sourceLineNo">3193</span>          // we use durability of the original mutation for the mutation passed by CP.<a name="line.3193"></a>
-<span class="sourceLineNo">3194</span>          if (region.getEffectiveDurability(m.getDurability()) == Durability.SKIP_WAL) {<a name="line.3194"></a>
-<span class="sourceLineNo">3195</span>            region.recordMutationWithoutWal(m.getFamilyCellMap());<a name="line.3195"></a>
-<span class="sourceLineNo">3196</span>            return true;<a name="line.3196"></a>
-<span class="sourceLineNo">3197</span>          }<a name="line.3197"></a>
-<span class="sourceLineNo">3198</span><a name="line.3198"></a>
-<span class="sourceLineNo">3199</span>          // the batch may contain multiple nonce keys (replay case). If so, write WALEdit for each.<a name="line.3199"></a>
-<span class="sourceLineNo">3200</span>          // Given how nonce keys are originally written, these should be contiguous.<a name="line.3200"></a>
-<span class="sourceLineNo">3201</span>          // They don't have to be, it will still work, just write more WALEdits than needed.<a name="line.3201"></a>
-<span class="sourceLineNo">3202</span>          long nonceGroup = getNonceGroup(index);<a name="line.3202"></a>
-<span class="sourceLineNo">3203</span>          long nonce = getNonce(index);<a name="line.3203"></a>
-<span class="sourceLineNo">3204</span>          if (curWALEditForNonce == null ||<a name="line.3204"></a>
-<span class="sourceLineNo">3205</span>              curWALEditForNonce.getFirst().getNonceGroup() != nonceGroup ||<a name="line.3205"></a>
-<span class="sourceLineNo">3206</span>              curWALEditForNonce.getFirst().getNonce() != nonce) {<a name="line.3206"></a>
-<span class="sourceLineNo">3207</span>            curWALEditForNonce = new Pair&lt;&gt;(new NonceKey(nonceGroup, nonce),<a name="line.3207"></a>
-<span class="sourceLineNo">3208</span>                new WALEdit(miniBatchOp.getCellCount(), isInReplay()));<a name="line.3208"></a>
-<span class="sourceLineNo">3209</span>            walEdits.add(curWALEditForNonce);<a name="line.3209"></a>
-<span class="sourceLineNo">3210</span>          }<a name="line.3210"></a>
-<span class="sourceLineNo">3211</span>          WALEdit walEdit = curWALEditForNonce.getSecond();<a name="line.3211"></a>
-<span class="sourceLineNo">3212</span><a name="line.3212"></a>
-<span class="sourceLineNo">3213</span>          // Add WAL edits by CP<a name="line.3213"></a>
-<span class="sourceLineNo">3214</span>          WALEdit fromCP = walEditsFromCoprocessors[index];<a name="line.3214"></a>
-<span class="sourceLineNo">3215</span>          if (fromCP != null) {<a name="line.3215"></a>
-<span class="sourceLineNo">3216</span>            for (Cell cell : fromCP.getCells()) {<a name="line.3216"></a>
-<span class="sourceLineNo">3217</span>              walEdit.add(cell);<a name="line.3217"></a>
-<span class="sourceLineNo">3218</span>            }<a name="line.3218"></a>
-<span class="sourceLineNo">3219</span>          }<a name="line.3219"></a>
-<span class="sourceLineNo">3220</span>          addFamilyMapToWALEdit(familyCellMaps[index], walEdit);<a name="line.3220"></a>
-<span class="sourceLineNo">3221</span><a name="line.3221"></a>
-<span class="sourceLineNo">3222</span>          return true;<a name="line.3222"></a>
-<span class="sourceLineNo">3223</span>        }<a name="line.3223"></a>
-<span class="sourceLineNo">3224</span>      });<a name="line.3224"></a>
-<span class="sourceLineNo">3225</span>      return walEdits;<a name="line.3225"></a>
-<span class="sourceLineNo">3226</span>    }<a name="line.3226"></a>
-<span class="sourceLineNo">3227</span><a name="line.3227"></a>
-<span class="sourceLineNo">3228</span>    /**<a name="line.3228"></a>
-<span class="sourceLineNo">3229</span>     * This method completes mini-batch operations by calling postBatchMutate() CP hook (if<a name="line.3229"></a>
-<span class="sourceLineNo">3230</span>     * required) and completing mvcc.<a name="line.3230"></a>
-<span class="sourceLineNo">3231</span>     */<a name="line.3231"></a>
-<span class="sourceLineNo">3232</span>    public void completeMiniBatchOperations(<a name="line.3232"></a>
-<span class="sourceLineNo">3233</span>        final MiniBatchOperationInProgress&lt;Mutation&gt; miniBatchOp, final WriteEntry writeEntry)<a name="line.3233"></a>
-<span class="sourceLineNo">3234</span>        throws IOException {<a name="line.3234"></a>
-<span class="sourceLineNo">3235</span>      if (writeEntry != null) {<a name="line.3235"></a>
-<span class="sourceLineNo">3236</span>        region.mvcc.completeAndWait(writeEntry);<a name="line.3236"></a>
-<span class="sourceLineNo">3237</span>      }<a name="line.3237"></a>
-<span class="sourceLineNo">3238</span>    }<a name="line.3238"></a>
-<span class="sourceLineNo">3239</span><a name="line.3239"></a>
-<span class="sourceLineNo">3240</span>    public void doPostOpCleanupForMiniBatch(<a name="line.3240"></a>
-<span class="sourceLineNo">3241</span>        final MiniBatchOperationInProgress&lt;Mutation&gt; miniBatchOp, final WALEdit walEdit,<a name="line.3241"></a>
-<span class="sourceLineNo">3242</span>        boolean success) throws IOException {}<a name="line.3242"></a>
-<span class="sourceLineNo">3243</span><a name="line.3243"></a>
-<span class="sourceLineNo">3244</span>    /**<a name="line.3244"></a>
-<span class="sourceLineNo">3245</span>     * Atomically apply the given map of family-&gt;edits to the memstore.<a name="line.3245"></a>
-<span class="sourceLineNo">3246</span>     * This handles the consistency control on its own, but the caller<a name="line.3246"></a>
-<span class="sourceLineNo">3247</span>     * should already have locked updatesLock.readLock(). This also does<a name="line.3247"></a>
-<span class="sourceLineNo">3248</span>     * &lt;b&gt;not&lt;/b&gt; check the families for validity.<a name="line.3248"></a>
-<span class="sourceLineNo">3249</span>     *<a name="line.3249"></a>
-<span class="sourceLineNo">3250</span>     * @param familyMap Map of Cells by family<a name="line.3250"></a>
-<span class="sourceLineNo">3251</span>     */<a name="line.3251"></a>
-<span class="sourceLineNo">3252</span>    protected void applyFamilyMapToMemStore(Map&lt;byte[], List&lt;Cell&gt;&gt; familyMap,<a name="line.3252"></a>
-<span class="sourceLineNo">3253</span>        MemStoreSizing memstoreAccounting) throws IOException {<a name="line.3253"></a>
-<span class="sourceLineNo">3254</span>      for (Map.Entry&lt;byte[], List&lt;Cell&gt;&gt; e : familyMap.entrySet()) {<a name="line.3254"></a>
-<span class="sourceLineNo">3255</span>        byte[] family = e.getKey();<a name="line.3255"></a>
-<span class="sourceLineNo">3256</span>        List&lt;Cell&gt; cells = e.getValue();<a name="line.3256"></a>
-<span class="sourceLineNo">3257</span>        assert cells instanceof RandomAccess;<a name="line.3257"></a>
-<span class="sourceLineNo">3258</span>        region.applyToMemStore(region.getStore(family), cells, false, memstoreAccounting);<a name="line.3258"></a>
-<span class="sourceLineNo">3259</span>      }<a name="line.3259"></a>
-<span class="sourceLineNo">3260</span>    }<a name="line.3260"></a>
-<span class="sourceLineNo">3261</span><a name="line.3261"></a>
-<span class="sourceLineNo">3262</span>    /**<a name="line.3262"></a>
-<span class="sourceLineNo">3263</span>     * Append the given map of family-&gt;edits to a WALEdit data structure.<a name="line.3263"></a>
-<span class="sourceLineNo">3264</span>     * This does not write to the WAL itself.<a name="line.3264"></a>
-<span class="sourceLineNo">3265</span>     * @param familyMap map of family-&gt;edits<a name="line.3265"></a>
-<span class="sourceLineNo">3266</span>     * @param walEdit the destination entry to append into<a name="line.3266"></a>
-<span class="sourceLineNo">3267</span>     */<a name="line.3267"></a>
-<span class="sourceLineNo">3268</span>    private void addFamilyMapToWALEdit(Map&lt;byte[], List&lt;Cell&gt;&gt; familyMap,<a name="line.3268"></a>
-<span class="sourceLineNo">3269</span>        WALEdit walEdit) {<a name="line.3269"></a>
-<span class="sourceLineNo">3270</span>      for (List&lt;Cell&gt; edits : familyMap.values()) {<a name="line.3270"></a>
-<span class="sourceLineNo">3271</span>        // Optimization: 'foreach' loop is not used. See:<a name="line.3271"></a>
-<span class="sourceLineNo">3272</span>        // HBASE-12023 HRegion.applyFamilyMapToMemstore creates too many iterator objects<a name="line.3272"></a>
-<span class="sourceLineNo">3273</span>        assert edits instanceof RandomAccess;<a name="line.3273"></a>
-<span class="sourceLineNo">3274</span>        int listSize = edits.size();<a name="line.3274"></a>
-<span class="sourceLineNo">3275</span>        for (int i=0; i &lt; listSize; i++) {<a name="line.3275"></a>
-<span class="sourceLineNo">3276</span>          Cell cell = edits.get(i);<a name="line.3276"></a>
-<span class="sourceLineNo">3277</span>          walEdit.add(cell);<a name="line.3277"></a>
-<span class="sourceLineNo">3278</span>        }<a name="line.3278"></a>
-<span class="sourceLineNo">3279</span>      }<a name="line.3279"></a>
-<span class="sourceLineNo">3280</span>    }<a name="line.3280"></a>
-<span class="sourceLineNo">3281</span>  }<a name="line.3281"></a>
-<span class="sourceLineNo">3282</span><a name="line.3282"></a>
-<span class="sourceLineNo">3283</span>  /**<a name="line.3283"></a>
-<span class="sourceLineNo">3284</span>   * Batch of mutation operations. Base class is shared with {@link ReplayBatchOperation} as most<a name="line.3284"></a>
-<span class="sourceLineNo">3285</span>   * of the logic is same.<a name="line.3285"></a>
-<span class="sourceLineNo">3286</span>   */<a name="line.3286"></a>
-<span class="sourceLineNo">3287</span>  static class MutationBatchOperation extends BatchOperation&lt;Mutation&gt; {<a name="line.3287"></a>
-<span class="sourceLineNo">3288</span>    private long nonceGroup;<a name="line.3288"></a>
-<span class="sourceLineNo">3289</span>    private long nonce;<a name="line.3289"></a>
-<span class="sourceLineNo">3290</span>    public MutationBatchOperation(final HRegion region, Mutation[] operations, boolean atomic,<a name="line.3290"></a>
-<span class="sourceLineNo">3291</span>        long nonceGroup, long nonce) {<a name="line.3291"></a>
-<span class="sourceLineNo">3292</span>      super(region, operations);<a name="line.3292"></a>
-<span class="sourceLineNo">3293</span>      this.atomic = atomic;<a name="line.3293"></a>
-<span class="sourceLineNo">3294</span>      this.nonceGroup = nonceGroup;<a name="line.3294"></a>
-<span class="sourceLineNo">3295</span>      this.nonce = nonce;<a name="line.3295"></a>
-<span class="sourceLineNo">3296</span>    }<a name="line.3296"></a>
-<span class="sourceLineNo">3297</span><a name="line.3297"></a>
-<span class="sourceLineNo">3298</span>    @Override<a name="line.3298"></a>
-<span class="sourceLineNo">3299</span>    public Mutation getMutation(int index) {<a name="line.3299"></a>
-<span class="sourceLineNo">3300</span>      return this.operations[index];<a name="line.3300"></a>
-<span class="sourceLineNo">3301</span>    }<a name="line.3301"></a>
-<span class="sourceLineNo">3302</span><a name="line.3302"></a>
-<span class="sourceLineNo">3303</span>    @Override<a name="line.3303"></a>
-<span class="sourceLineNo">3304</span>    public long getNonceGroup(int index) {<a name="line.3304"></a>
-<span class="sourceLineNo">3305</span>      return nonceGroup;<a name="line.3305"></a>
-<span class="sourceLineNo">3306</span>    }<a name="line.3306"></a>
-<span class="sourceLineNo">3307</span><a name="line.3307"></a>
-<span class="sourceLineNo">3308</span>    @Override<a name="line.3308"></a>
-<span c

<TRUNCATED>

[43/51] [partial] hbase-site git commit: Published site at .

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/c54c242b/devapidocs/org/apache/hadoop/hbase/regionserver/HRegion.RegionScannerImpl.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/regionserver/HRegion.RegionScannerImpl.html b/devapidocs/org/apache/hadoop/hbase/regionserver/HRegion.RegionScannerImpl.html
index 7359555..da9cc89 100644
--- a/devapidocs/org/apache/hadoop/hbase/regionserver/HRegion.RegionScannerImpl.html
+++ b/devapidocs/org/apache/hadoop/hbase/regionserver/HRegion.RegionScannerImpl.html
@@ -121,7 +121,7 @@ var activeTableTab = "activeTableTab";
 </dl>
 <hr>
 <br>
-<pre>class <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.html#line.6030">HRegion.RegionScannerImpl</a>
+<pre>class <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.html#line.6029">HRegion.RegionScannerImpl</a>
 extends <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a>
 implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/RegionScanner.html" title="interface in org.apache.hadoop.hbase.regionserver">RegionScanner</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/Shipper.html" title="interface in org.apache.hadoop.hbase.regionserver">Shipper</a>, <a href="../../../../../org/apache/hadoop/hbase/ipc/RpcCallback.html" title="interface in org.apache.hadoop.hbase.ipc">RpcCallback</a></pre>
 <div class="block">RegionScannerImpl is used to combine scanners from multiple Stores (aka column families).</div>
@@ -425,7 +425,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/RegionSc
 <ul class="blockList">
 <li class="blockList">
 <h4>storeHeap</h4>
-<pre><a href="../../../../../org/apache/hadoop/hbase/regionserver/KeyValueHeap.html" title="class in org.apache.hadoop.hbase.regionserver">KeyValueHeap</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.RegionScannerImpl.html#line.6033">storeHeap</a></pre>
+<pre><a href="../../../../../org/apache/hadoop/hbase/regionserver/KeyValueHeap.html" title="class in org.apache.hadoop.hbase.regionserver">KeyValueHeap</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.RegionScannerImpl.html#line.6032">storeHeap</a></pre>
 </li>
 </ul>
 <a name="joinedHeap">
@@ -434,7 +434,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/RegionSc
 <ul class="blockList">
 <li class="blockList">
 <h4>joinedHeap</h4>
-<pre><a href="../../../../../org/apache/hadoop/hbase/regionserver/KeyValueHeap.html" title="class in org.apache.hadoop.hbase.regionserver">KeyValueHeap</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.RegionScannerImpl.html#line.6036">joinedHeap</a></pre>
+<pre><a href="../../../../../org/apache/hadoop/hbase/regionserver/KeyValueHeap.html" title="class in org.apache.hadoop.hbase.regionserver">KeyValueHeap</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.RegionScannerImpl.html#line.6035">joinedHeap</a></pre>
 <div class="block">Heap of key-values that are not essential for the provided filters and are thus read
  on demand, if on-demand column family loading is enabled.</div>
 </li>
@@ -445,7 +445,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/RegionSc
 <ul class="blockList">
 <li class="blockList">
 <h4>joinedContinuationRow</h4>
-<pre>protected&nbsp;<a href="../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.RegionScannerImpl.html#line.6040">joinedContinuationRow</a></pre>
+<pre>protected&nbsp;<a href="../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.RegionScannerImpl.html#line.6039">joinedContinuationRow</a></pre>
 <div class="block">If the joined heap data gathering is interrupted due to scan limits, this will
  contain the row for which we are populating the values.</div>
 </li>
@@ -456,7 +456,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/RegionSc
 <ul class="blockList">
 <li class="blockList">
 <h4>filterClosed</h4>
-<pre>private&nbsp;boolean <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.RegionScannerImpl.html#line.6041">filterClosed</a></pre>
+<pre>private&nbsp;boolean <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.RegionScannerImpl.html#line.6040">filterClosed</a></pre>
 </li>
 </ul>
 <a name="stopRow">
@@ -465,7 +465,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/RegionSc
 <ul class="blockList">
 <li class="blockList">
 <h4>stopRow</h4>
-<pre>protected final&nbsp;byte[] <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.RegionScannerImpl.html#line.6043">stopRow</a></pre>
+<pre>protected final&nbsp;byte[] <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.RegionScannerImpl.html#line.6042">stopRow</a></pre>
 </li>
 </ul>
 <a name="includeStopRow">
@@ -474,7 +474,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/RegionSc
 <ul class="blockList">
 <li class="blockList">
 <h4>includeStopRow</h4>
-<pre>protected final&nbsp;boolean <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.RegionScannerImpl.html#line.6044">includeStopRow</a></pre>
+<pre>protected final&nbsp;boolean <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.RegionScannerImpl.html#line.6043">includeStopRow</a></pre>
 </li>
 </ul>
 <a name="region">
@@ -483,7 +483,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/RegionSc
 <ul class="blockList">
 <li class="blockList">
 <h4>region</h4>
-<pre>protected final&nbsp;<a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegion.html" title="class in org.apache.hadoop.hbase.regionserver">HRegion</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.RegionScannerImpl.html#line.6045">region</a></pre>
+<pre>protected final&nbsp;<a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegion.html" title="class in org.apache.hadoop.hbase.regionserver">HRegion</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.RegionScannerImpl.html#line.6044">region</a></pre>
 </li>
 </ul>
 <a name="comparator">
@@ -492,7 +492,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/RegionSc
 <ul class="blockList">
 <li class="blockList">
 <h4>comparator</h4>
-<pre>protected final&nbsp;<a href="../../../../../org/apache/hadoop/hbase/CellComparator.html" title="interface in org.apache.hadoop.hbase">CellComparator</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.RegionScannerImpl.html#line.6046">comparator</a></pre>
+<pre>protected final&nbsp;<a href="../../../../../org/apache/hadoop/hbase/CellComparator.html" title="interface in org.apache.hadoop.hbase">CellComparator</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.RegionScannerImpl.html#line.6045">comparator</a></pre>
 </li>
 </ul>
 <a name="readPt">
@@ -501,7 +501,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/RegionSc
 <ul class="blockList">
 <li class="blockList">
 <h4>readPt</h4>
-<pre>private final&nbsp;long <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.RegionScannerImpl.html#line.6048">readPt</a></pre>
+<pre>private final&nbsp;long <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.RegionScannerImpl.html#line.6047">readPt</a></pre>
 </li>
 </ul>
 <a name="maxResultSize">
@@ -510,7 +510,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/RegionSc
 <ul class="blockList">
 <li class="blockList">
 <h4>maxResultSize</h4>
-<pre>private final&nbsp;long <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.RegionScannerImpl.html#line.6049">maxResultSize</a></pre>
+<pre>private final&nbsp;long <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.RegionScannerImpl.html#line.6048">maxResultSize</a></pre>
 </li>
 </ul>
 <a name="defaultScannerContext">
@@ -519,7 +519,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/RegionSc
 <ul class="blockList">
 <li class="blockList">
 <h4>defaultScannerContext</h4>
-<pre>private final&nbsp;<a href="../../../../../org/apache/hadoop/hbase/regionserver/ScannerContext.html" title="class in org.apache.hadoop.hbase.regionserver">ScannerContext</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.RegionScannerImpl.html#line.6050">defaultScannerContext</a></pre>
+<pre>private final&nbsp;<a href="../../../../../org/apache/hadoop/hbase/regionserver/ScannerContext.html" title="class in org.apache.hadoop.hbase.regionserver">ScannerContext</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.RegionScannerImpl.html#line.6049">defaultScannerContext</a></pre>
 </li>
 </ul>
 <a name="filter">
@@ -528,7 +528,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/RegionSc
 <ul class="blockListLast">
 <li class="blockList">
 <h4>filter</h4>
-<pre>private final&nbsp;<a href="../../../../../org/apache/hadoop/hbase/filter/FilterWrapper.html" title="class in org.apache.hadoop.hbase.filter">FilterWrapper</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.RegionScannerImpl.html#line.6051">filter</a></pre>
+<pre>private final&nbsp;<a href="../../../../../org/apache/hadoop/hbase/filter/FilterWrapper.html" title="class in org.apache.hadoop.hbase.filter">FilterWrapper</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.RegionScannerImpl.html#line.6050">filter</a></pre>
 </li>
 </ul>
 </li>
@@ -545,7 +545,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/RegionSc
 <ul class="blockList">
 <li class="blockList">
 <h4>RegionScannerImpl</h4>
-<pre><a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.RegionScannerImpl.html#line.6058">RegionScannerImpl</a>(<a href="../../../../../org/apache/hadoop/hbase/client/Scan.html" title="class in org.apache.hadoop.hbase.client">Scan</a>&nbsp;scan,
+<pre><a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.RegionScannerImpl.html#line.6057">RegionScannerImpl</a>(<a href="../../../../../org/apache/hadoop/hbase/client/Scan.html" title="class in org.apache.hadoop.hbase.client">Scan</a>&nbsp;scan,
                   <a href="http://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/regionserver/KeyValueScanner.html" title="interface in org.apache.hadoop.hbase.regionserver">KeyValueScanner</a>&gt;&nbsp;additionalScanners,
                   <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegion.html" title="class in org.apache.hadoop.hbase.regionserver">HRegion</a>&nbsp;region)
            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>
@@ -561,7 +561,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/RegionSc
 <ul class="blockListLast">
 <li class="blockList">
 <h4>RegionScannerImpl</h4>
-<pre><a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.RegionScannerImpl.html#line.6063">RegionScannerImpl</a>(<a href="../../../../../org/apache/hadoop/hbase/client/Scan.html" title="class in org.apache.hadoop.hbase.client">Scan</a>&nbsp;scan,
+<pre><a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.RegionScannerImpl.html#line.6062">RegionScannerImpl</a>(<a href="../../../../../org/apache/hadoop/hbase/client/Scan.html" title="class in org.apache.hadoop.hbase.client">Scan</a>&nbsp;scan,
                   <a href="http://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/regionserver/KeyValueScanner.html" title="interface in org.apache.hadoop.hbase.regionserver">KeyValueScanner</a>&gt;&nbsp;additionalScanners,
                   <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegion.html" title="class in org.apache.hadoop.hbase.regionserver">HRegion</a>&nbsp;region,
                   long&nbsp;nonceGroup,
@@ -587,7 +587,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/RegionSc
 <ul class="blockList">
 <li class="blockList">
 <h4>getRegionInfo</h4>
-<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/RegionInfo.html" title="interface in org.apache.hadoop.hbase.client">RegionInfo</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.RegionScannerImpl.html#line.6054">getRegionInfo</a>()</pre>
+<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/RegionInfo.html" title="interface in org.apache.hadoop.hbase.client">RegionInfo</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.RegionScannerImpl.html#line.6053">getRegionInfo</a>()</pre>
 <dl>
 <dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
 <dd><code><a href="../../../../../org/apache/hadoop/hbase/regionserver/RegionScanner.html#getRegionInfo--">getRegionInfo</a></code>&nbsp;in interface&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/regionserver/RegionScanner.html" title="interface in org.apache.hadoop.hbase.regionserver">RegionScanner</a></code></dd>
@@ -602,7 +602,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/RegionSc
 <ul class="blockList">
 <li class="blockList">
 <h4>initializeScanners</h4>
-<pre>protected&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.RegionScannerImpl.html#line.6101">initializeScanners</a>(<a href="../../../../../org/apache/hadoop/hbase/client/Scan.html" title="class in org.apache.hadoop.hbase.client">Scan</a>&nbsp;scan,
+<pre>protected&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.RegionScannerImpl.html#line.6100">initializeScanners</a>(<a href="../../../../../org/apache/hadoop/hbase/client/Scan.html" title="class in org.apache.hadoop.hbase.client">Scan</a>&nbsp;scan,
                                   <a href="http://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/regionserver/KeyValueScanner.html" title="interface in org.apache.hadoop.hbase.regionserver">KeyValueScanner</a>&gt;&nbsp;additionalScanners)
                            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>
 <dl>
@@ -617,7 +617,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/RegionSc
 <ul class="blockList">
 <li class="blockList">
 <h4>initializeKVHeap</h4>
-<pre>protected&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.RegionScannerImpl.html#line.6133">initializeKVHeap</a>(<a href="http://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/regionserver/KeyValueScanner.html" title="interface in org.apache.hadoop.hbase.regionserver">KeyValueScanner</a>&gt;&nbsp;scanners,
+<pre>protected&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.RegionScannerImpl.html#line.6132">initializeKVHeap</a>(<a href="http://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/regionserver/KeyValueScanner.html" title="interface in org.apache.hadoop.hbase.regionserver">KeyValueScanner</a>&gt;&nbsp;scanners,
                                 <a href="http://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/regionserver/KeyValueScanner.html" title="interface in org.apache.hadoop.hbase.regionserver">KeyValueScanner</a>&gt;&nbsp;joinedScanners,
                                 <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegion.html" title="class in org.apache.hadoop.hbase.regionserver">HRegion</a>&nbsp;region)
                          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>
@@ -633,7 +633,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/RegionSc
 <ul class="blockList">
 <li class="blockList">
 <h4>handleException</h4>
-<pre>private&nbsp;<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>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.RegionScannerImpl.html#line.6142">handleException</a>(<a href="http://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/regionserver/KeyValueScanner.html" title="interface in org.apache.hadoop.hbase.regionserver">KeyValueScanner</a>&gt;&nbsp;instantiatedScanners,
+<pre>private&nbsp;<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>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.RegionScannerImpl.html#line.6141">handleException</a>(<a href="http://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/regionserver/KeyValueScanner.html" title="interface in org.apache.hadoop.hbase.regionserver">KeyValueScanner</a>&gt;&nbsp;instantiatedScanners,
                                     <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Throwable.html?is-external=true" title="class or interface in java.lang">Throwable</a>&nbsp;t)</pre>
 </li>
 </ul>
@@ -643,7 +643,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/RegionSc
 <ul class="blockList">
 <li class="blockList">
 <h4>getMaxResultSize</h4>
-<pre>public&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.RegionScannerImpl.html#line.6163">getMaxResultSize</a>()</pre>
+<pre>public&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.RegionScannerImpl.html#line.6162">getMaxResultSize</a>()</pre>
 <dl>
 <dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
 <dd><code><a href="../../../../../org/apache/hadoop/hbase/regionserver/RegionScanner.html#getMaxResultSize--">getMaxResultSize</a></code>&nbsp;in interface&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/regionserver/RegionScanner.html" title="interface in org.apache.hadoop.hbase.regionserver">RegionScanner</a></code></dd>
@@ -659,7 +659,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/RegionSc
 <ul class="blockList">
 <li class="blockList">
 <h4>getMvccReadPoint</h4>
-<pre>public&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.RegionScannerImpl.html#line.6168">getMvccReadPoint</a>()</pre>
+<pre>public&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.RegionScannerImpl.html#line.6167">getMvccReadPoint</a>()</pre>
 <dl>
 <dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
 <dd><code><a href="../../../../../org/apache/hadoop/hbase/regionserver/RegionScanner.html#getMvccReadPoint--">getMvccReadPoint</a></code>&nbsp;in interface&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/regionserver/RegionScanner.html" title="interface in org.apache.hadoop.hbase.regionserver">RegionScanner</a></code></dd>
@@ -674,7 +674,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/RegionSc
 <ul class="blockList">
 <li class="blockList">
 <h4>getBatch</h4>
-<pre>public&nbsp;int&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.RegionScannerImpl.html#line.6173">getBatch</a>()</pre>
+<pre>public&nbsp;int&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.RegionScannerImpl.html#line.6172">getBatch</a>()</pre>
 <dl>
 <dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
 <dd><code><a href="../../../../../org/apache/hadoop/hbase/regionserver/RegionScanner.html#getBatch--">getBatch</a></code>&nbsp;in interface&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/regionserver/RegionScanner.html" title="interface in org.apache.hadoop.hbase.regionserver">RegionScanner</a></code></dd>
@@ -690,7 +690,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/RegionSc
 <ul class="blockList">
 <li class="blockList">
 <h4>resetFilters</h4>
-<pre>protected&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.RegionScannerImpl.html#line.6182">resetFilters</a>()
+<pre>protected&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.RegionScannerImpl.html#line.6181">resetFilters</a>()
                      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">Reset both the filter and the old filter.</div>
 <dl>
@@ -705,7 +705,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/RegionSc
 <ul class="blockList">
 <li class="blockList">
 <h4>next</h4>
-<pre>public&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.RegionScannerImpl.html#line.6189">next</a>(<a href="http://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&gt;&nbsp;outResults)
+<pre>public&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.RegionScannerImpl.html#line.6188">next</a>(<a href="http://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&gt;&nbsp;outResults)
              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="descfrmTypeLabel">Description copied from interface:&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/regionserver/InternalScanner.html#next-java.util.List-">InternalScanner</a></code></span></div>
 <div class="block">Grab the next row's worth of values.</div>
@@ -727,7 +727,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/RegionSc
 <ul class="blockList">
 <li class="blockList">
 <h4>next</h4>
-<pre>public&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.RegionScannerImpl.html#line.6196">next</a>(<a href="http://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&gt;&nbsp;outResults,
+<pre>public&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.RegionScannerImpl.html#line.6195">next</a>(<a href="http://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&gt;&nbsp;outResults,
                     <a href="../../../../../org/apache/hadoop/hbase/regionserver/ScannerContext.html" title="class in org.apache.hadoop.hbase.regionserver">ScannerContext</a>&nbsp;scannerContext)
              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="descfrmTypeLabel">Description copied from interface:&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/regionserver/InternalScanner.html#next-java.util.List-org.apache.hadoop.hbase.regionserver.ScannerContext-">InternalScanner</a></code></span></div>
@@ -750,7 +750,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/RegionSc
 <ul class="blockList">
 <li class="blockList">
 <h4>nextRaw</h4>
-<pre>public&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.RegionScannerImpl.html#line.6212">nextRaw</a>(<a href="http://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&gt;&nbsp;outResults)
+<pre>public&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.RegionScannerImpl.html#line.6211">nextRaw</a>(<a href="http://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&gt;&nbsp;outResults)
                 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="descfrmTypeLabel">Description copied from interface:&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/regionserver/RegionScanner.html#nextRaw-java.util.List-">RegionScanner</a></code></span></div>
 <div class="block">Grab the next row's worth of values. This is a special internal method to be called from
@@ -775,7 +775,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/RegionSc
 <ul class="blockList">
 <li class="blockList">
 <h4>nextRaw</h4>
-<pre>public&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.RegionScannerImpl.html#line.6218">nextRaw</a>(<a href="http://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&gt;&nbsp;outResults,
+<pre>public&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.RegionScannerImpl.html#line.6217">nextRaw</a>(<a href="http://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&gt;&nbsp;outResults,
                        <a href="../../../../../org/apache/hadoop/hbase/regionserver/ScannerContext.html" title="class in org.apache.hadoop.hbase.regionserver">ScannerContext</a>&nbsp;scannerContext)
                 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="descfrmTypeLabel">Description copied from interface:&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/regionserver/RegionScanner.html#nextRaw-java.util.List-org.apache.hadoop.hbase.regionserver.ScannerContext-">RegionScanner</a></code></span></div>
@@ -821,7 +821,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/RegionSc
 <ul class="blockList">
 <li class="blockList">
 <h4>populateFromJoinedHeap</h4>
-<pre>private&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.RegionScannerImpl.html#line.6255">populateFromJoinedHeap</a>(<a href="http://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&gt;&nbsp;results,
+<pre>private&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.RegionScannerImpl.html#line.6254">populateFromJoinedHeap</a>(<a href="http://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&gt;&nbsp;results,
                                        <a href="../../../../../org/apache/hadoop/hbase/regionserver/ScannerContext.html" title="class in org.apache.hadoop.hbase.regionserver">ScannerContext</a>&nbsp;scannerContext)
                                 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>
 <dl>
@@ -838,7 +838,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/RegionSc
 <ul class="blockList">
 <li class="blockList">
 <h4>populateResult</h4>
-<pre>private&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.RegionScannerImpl.html#line.6279">populateResult</a>(<a href="http://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&gt;&nbsp;results,
+<pre>private&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.RegionScannerImpl.html#line.6278">populateResult</a>(<a href="http://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&gt;&nbsp;results,
                                <a href="../../../../../org/apache/hadoop/hbase/regionserver/KeyValueHeap.html" title="class in org.apache.hadoop.hbase.regionserver">KeyValueHeap</a>&nbsp;heap,
                                <a href="../../../../../org/apache/hadoop/hbase/regionserver/ScannerContext.html" title="class in org.apache.hadoop.hbase.regionserver">ScannerContext</a>&nbsp;scannerContext,
                                <a href="../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&nbsp;currentRowCell)
@@ -863,7 +863,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/RegionSc
 <ul class="blockList">
 <li class="blockList">
 <h4>moreCellsInRow</h4>
-<pre>private&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.RegionScannerImpl.html#line.6320">moreCellsInRow</a>(<a href="../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&nbsp;nextKv,
+<pre>private&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.RegionScannerImpl.html#line.6319">moreCellsInRow</a>(<a href="../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&nbsp;nextKv,
                                <a href="../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&nbsp;currentRowCell)</pre>
 <div class="block">Based on the nextKv in the heap, and the current row, decide whether or not there are more
  cells to be read in the heap. If the row of the nextKv in the heap matches the current row
@@ -883,7 +883,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/RegionSc
 <ul class="blockList">
 <li class="blockList">
 <h4>isFilterDone</h4>
-<pre>public&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.RegionScannerImpl.html#line.6328">isFilterDone</a>()
+<pre>public&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.RegionScannerImpl.html#line.6327">isFilterDone</a>()
                      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>
 <dl>
 <dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
@@ -901,7 +901,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/RegionSc
 <ul class="blockList">
 <li class="blockList">
 <h4>isFilterDoneInternal</h4>
-<pre>private&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.RegionScannerImpl.html#line.6332">isFilterDoneInternal</a>()
+<pre>private&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.RegionScannerImpl.html#line.6331">isFilterDoneInternal</a>()
                               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>
 <dl>
 <dt><span class="throwsLabel">Throws:</span></dt>
@@ -915,7 +915,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/RegionSc
 <ul class="blockList">
 <li class="blockList">
 <h4>nextInternal</h4>
-<pre>private&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.RegionScannerImpl.html#line.6336">nextInternal</a>(<a href="http://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&gt;&nbsp;results,
+<pre>private&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.RegionScannerImpl.html#line.6335">nextInternal</a>(<a href="http://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&gt;&nbsp;results,
                              <a href="../../../../../org/apache/hadoop/hbase/regionserver/ScannerContext.html" title="class in org.apache.hadoop.hbase.regionserver">ScannerContext</a>&nbsp;scannerContext)
                       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>
 <dl>
@@ -930,7 +930,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/RegionSc
 <ul class="blockList">
 <li class="blockList">
 <h4>incrementCountOfRowsFilteredMetric</h4>
-<pre>protected&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.RegionScannerImpl.html#line.6539">incrementCountOfRowsFilteredMetric</a>(<a href="../../../../../org/apache/hadoop/hbase/regionserver/ScannerContext.html" title="class in org.apache.hadoop.hbase.regionserver">ScannerContext</a>&nbsp;scannerContext)</pre>
+<pre>protected&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.RegionScannerImpl.html#line.6538">incrementCountOfRowsFilteredMetric</a>(<a href="../../../../../org/apache/hadoop/hbase/regionserver/ScannerContext.html" title="class in org.apache.hadoop.hbase.regionserver">ScannerContext</a>&nbsp;scannerContext)</pre>
 </li>
 </ul>
 <a name="incrementCountOfRowsScannedMetric-org.apache.hadoop.hbase.regionserver.ScannerContext-">
@@ -939,7 +939,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/RegionSc
 <ul class="blockList">
 <li class="blockList">
 <h4>incrementCountOfRowsScannedMetric</h4>
-<pre>protected&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.RegionScannerImpl.html#line.6547">incrementCountOfRowsScannedMetric</a>(<a href="../../../../../org/apache/hadoop/hbase/regionserver/ScannerContext.html" title="class in org.apache.hadoop.hbase.regionserver">ScannerContext</a>&nbsp;scannerContext)</pre>
+<pre>protected&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.RegionScannerImpl.html#line.6546">incrementCountOfRowsScannedMetric</a>(<a href="../../../../../org/apache/hadoop/hbase/regionserver/ScannerContext.html" title="class in org.apache.hadoop.hbase.regionserver">ScannerContext</a>&nbsp;scannerContext)</pre>
 </li>
 </ul>
 <a name="joinedHeapMayHaveData-org.apache.hadoop.hbase.Cell-">
@@ -948,7 +948,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/RegionSc
 <ul class="blockList">
 <li class="blockList">
 <h4>joinedHeapMayHaveData</h4>
-<pre>private&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.RegionScannerImpl.html#line.6558">joinedHeapMayHaveData</a>(<a href="../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&nbsp;currentRowCell)
+<pre>private&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.RegionScannerImpl.html#line.6557">joinedHeapMayHaveData</a>(<a href="../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&nbsp;currentRowCell)
                                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>
 <dl>
 <dt><span class="paramLabel">Parameters:</span></dt>
@@ -966,7 +966,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/RegionSc
 <ul class="blockList">
 <li class="blockList">
 <h4>filterRow</h4>
-<pre>private&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.RegionScannerImpl.html#line.6585">filterRow</a>()
+<pre>private&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.RegionScannerImpl.html#line.6584">filterRow</a>()
                    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">This function is to maintain backward compatibility for 0.94 filters. HBASE-6429 combines
  both filterRow & filterRow(<code>List&lt;KeyValue&gt; kvs</code>) functions. While 0.94 code or older,
@@ -985,7 +985,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/RegionSc
 <ul class="blockList">
 <li class="blockList">
 <h4>filterRowKey</h4>
-<pre>private&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.RegionScannerImpl.html#line.6592">filterRowKey</a>(<a href="../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&nbsp;current)
+<pre>private&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.RegionScannerImpl.html#line.6591">filterRowKey</a>(<a href="../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&nbsp;current)
                       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>
 <dl>
 <dt><span class="throwsLabel">Throws:</span></dt>
@@ -999,7 +999,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/RegionSc
 <ul class="blockList">
 <li class="blockList">
 <h4>nextRow</h4>
-<pre>protected&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.RegionScannerImpl.html#line.6596">nextRow</a>(<a href="../../../../../org/apache/hadoop/hbase/regionserver/ScannerContext.html" title="class in org.apache.hadoop.hbase.regionserver">ScannerContext</a>&nbsp;scannerContext,
+<pre>protected&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.RegionScannerImpl.html#line.6595">nextRow</a>(<a href="../../../../../org/apache/hadoop/hbase/regionserver/ScannerContext.html" title="class in org.apache.hadoop.hbase.regionserver">ScannerContext</a>&nbsp;scannerContext,
                           <a href="../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&nbsp;curRowCell)
                    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>
 <dl>
@@ -1014,7 +1014,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/RegionSc
 <ul class="blockList">
 <li class="blockList">
 <h4>shouldStop</h4>
-<pre>protected&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.RegionScannerImpl.html#line.6611">shouldStop</a>(<a href="../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&nbsp;currentRowCell)</pre>
+<pre>protected&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.RegionScannerImpl.html#line.6610">shouldStop</a>(<a href="../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&nbsp;currentRowCell)</pre>
 </li>
 </ul>
 <a name="close--">
@@ -1023,7 +1023,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/RegionSc
 <ul class="blockList">
 <li class="blockList">
 <h4>close</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.RegionScannerImpl.html#line.6623">close</a>()</pre>
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.RegionScannerImpl.html#line.6622">close</a>()</pre>
 <div class="block"><span class="descfrmTypeLabel">Description copied from interface:&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/regionserver/InternalScanner.html#close--">InternalScanner</a></code></span></div>
 <div class="block">Closes the scanner and releases any resources it has allocated</div>
 <dl>
@@ -1042,7 +1042,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/RegionSc
 <ul class="blockList">
 <li class="blockList">
 <h4>getStoreHeapForTesting</h4>
-<pre><a href="../../../../../org/apache/hadoop/hbase/regionserver/KeyValueHeap.html" title="class in org.apache.hadoop.hbase.regionserver">KeyValueHeap</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.RegionScannerImpl.html#line.6637">getStoreHeapForTesting</a>()</pre>
+<pre><a href="../../../../../org/apache/hadoop/hbase/regionserver/KeyValueHeap.html" title="class in org.apache.hadoop.hbase.regionserver">KeyValueHeap</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.RegionScannerImpl.html#line.6636">getStoreHeapForTesting</a>()</pre>
 </li>
 </ul>
 <a name="reseek-byte:A-">
@@ -1051,7 +1051,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/RegionSc
 <ul class="blockList">
 <li class="blockList">
 <h4>reseek</h4>
-<pre>public&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.RegionScannerImpl.html#line.6642">reseek</a>(byte[]&nbsp;row)
+<pre>public&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.RegionScannerImpl.html#line.6641">reseek</a>(byte[]&nbsp;row)
                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="descfrmTypeLabel">Description copied from interface:&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/regionserver/RegionScanner.html#reseek-byte:A-">RegionScanner</a></code></span></div>
 <div class="block">Do a reseek to the required row. Should not be used to seek to a key which
@@ -1071,7 +1071,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/RegionSc
 <ul class="blockList">
 <li class="blockList">
 <h4>shipped</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.RegionScannerImpl.html#line.6662">shipped</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.RegionScannerImpl.html#line.6661">shipped</a>()
              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="descfrmTypeLabel">Description copied from interface:&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/regionserver/Shipper.html#shipped--">Shipper</a></code></span></div>
 <div class="block">Called after a batch of rows scanned and set to be returned to client. Any in between cleanup
@@ -1090,7 +1090,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/RegionSc
 <ul class="blockListLast">
 <li class="blockList">
 <h4>run</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.RegionScannerImpl.html#line.6672">run</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.RegionScannerImpl.html#line.6671">run</a>()
          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="descfrmTypeLabel">Description copied from interface:&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/ipc/RpcCallback.html#run--">RpcCallback</a></code></span></div>
 <div class="block">Called at the end of an Rpc Call <a href="../../../../../org/apache/hadoop/hbase/ipc/RpcCallContext.html" title="interface in org.apache.hadoop.hbase.ipc"><code>RpcCallContext</code></a></div>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/c54c242b/devapidocs/org/apache/hadoop/hbase/regionserver/HRegion.ReplayBatchOperation.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/regionserver/HRegion.ReplayBatchOperation.html b/devapidocs/org/apache/hadoop/hbase/regionserver/HRegion.ReplayBatchOperation.html
index 071f732..bb6057c 100644
--- a/devapidocs/org/apache/hadoop/hbase/regionserver/HRegion.ReplayBatchOperation.html
+++ b/devapidocs/org/apache/hadoop/hbase/regionserver/HRegion.ReplayBatchOperation.html
@@ -118,7 +118,7 @@ var activeTableTab = "activeTableTab";
 </dl>
 <hr>
 <br>
-<pre>static class <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.html#line.3595">HRegion.ReplayBatchOperation</a>
+<pre>static class <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.html#line.3594">HRegion.ReplayBatchOperation</a>
 extends <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegion.BatchOperation.html" title="class in org.apache.hadoop.hbase.regionserver">HRegion.BatchOperation</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/wal/WALSplitter.MutationReplay.html" title="class in org.apache.hadoop.hbase.wal">WALSplitter.MutationReplay</a>&gt;</pre>
 <div class="block">Batch of mutations for replay. Base class is shared with <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegion.MutationBatchOperation.html" title="class in org.apache.hadoop.hbase.regionserver"><code>HRegion.MutationBatchOperation</code></a> as most
  of the logic is same.</div>
@@ -306,7 +306,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegion.Bat
 <ul class="blockListLast">
 <li class="blockList">
 <h4>origLogSeqNum</h4>
-<pre>private&nbsp;long <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.ReplayBatchOperation.html#line.3596">origLogSeqNum</a></pre>
+<pre>private&nbsp;long <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.ReplayBatchOperation.html#line.3595">origLogSeqNum</a></pre>
 </li>
 </ul>
 </li>
@@ -323,7 +323,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegion.Bat
 <ul class="blockListLast">
 <li class="blockList">
 <h4>ReplayBatchOperation</h4>
-<pre>public&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.ReplayBatchOperation.html#line.3597">ReplayBatchOperation</a>(<a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegion.html" title="class in org.apache.hadoop.hbase.regionserver">HRegion</a>&nbsp;region,
+<pre>public&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.ReplayBatchOperation.html#line.3596">ReplayBatchOperation</a>(<a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegion.html" title="class in org.apache.hadoop.hbase.regionserver">HRegion</a>&nbsp;region,
                             <a href="../../../../../org/apache/hadoop/hbase/wal/WALSplitter.MutationReplay.html" title="class in org.apache.hadoop.hbase.wal">WALSplitter.MutationReplay</a>[]&nbsp;operations,
                             long&nbsp;origLogSeqNum)</pre>
 </li>
@@ -342,7 +342,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegion.Bat
 <ul class="blockList">
 <li class="blockList">
 <h4>getMutation</h4>
-<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/Mutation.html" title="class in org.apache.hadoop.hbase.client">Mutation</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.ReplayBatchOperation.html#line.3604">getMutation</a>(int&nbsp;index)</pre>
+<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/Mutation.html" title="class in org.apache.hadoop.hbase.client">Mutation</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.ReplayBatchOperation.html#line.3603">getMutation</a>(int&nbsp;index)</pre>
 <dl>
 <dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
 <dd><code><a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegion.BatchOperation.html#getMutation-int-">getMutation</a></code>&nbsp;in class&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegion.BatchOperation.html" title="class in org.apache.hadoop.hbase.regionserver">HRegion.BatchOperation</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/wal/WALSplitter.MutationReplay.html" title="class in org.apache.hadoop.hbase.wal">WALSplitter.MutationReplay</a>&gt;</code></dd>
@@ -355,7 +355,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegion.Bat
 <ul class="blockList">
 <li class="blockList">
 <h4>getNonceGroup</h4>
-<pre>public&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.ReplayBatchOperation.html#line.3609">getNonceGroup</a>(int&nbsp;index)</pre>
+<pre>public&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.ReplayBatchOperation.html#line.3608">getNonceGroup</a>(int&nbsp;index)</pre>
 <dl>
 <dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
 <dd><code><a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegion.BatchOperation.html#getNonceGroup-int-">getNonceGroup</a></code>&nbsp;in class&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegion.BatchOperation.html" title="class in org.apache.hadoop.hbase.regionserver">HRegion.BatchOperation</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/wal/WALSplitter.MutationReplay.html" title="class in org.apache.hadoop.hbase.wal">WALSplitter.MutationReplay</a>&gt;</code></dd>
@@ -368,7 +368,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegion.Bat
 <ul class="blockList">
 <li class="blockList">
 <h4>getNonce</h4>
-<pre>public&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.ReplayBatchOperation.html#line.3614">getNonce</a>(int&nbsp;index)</pre>
+<pre>public&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.ReplayBatchOperation.html#line.3613">getNonce</a>(int&nbsp;index)</pre>
 <dl>
 <dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
 <dd><code><a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegion.BatchOperation.html#getNonce-int-">getNonce</a></code>&nbsp;in class&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegion.BatchOperation.html" title="class in org.apache.hadoop.hbase.regionserver">HRegion.BatchOperation</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/wal/WALSplitter.MutationReplay.html" title="class in org.apache.hadoop.hbase.wal">WALSplitter.MutationReplay</a>&gt;</code></dd>
@@ -381,7 +381,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegion.Bat
 <ul class="blockList">
 <li class="blockList">
 <h4>getMutationsForCoprocs</h4>
-<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/Mutation.html" title="class in org.apache.hadoop.hbase.client">Mutation</a>[]&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.ReplayBatchOperation.html#line.3619">getMutationsForCoprocs</a>()</pre>
+<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/Mutation.html" title="class in org.apache.hadoop.hbase.client">Mutation</a>[]&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.ReplayBatchOperation.html#line.3618">getMutationsForCoprocs</a>()</pre>
 <div class="block"><span class="descfrmTypeLabel">Description copied from class:&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegion.BatchOperation.html#getMutationsForCoprocs--">HRegion.BatchOperation</a></code></span></div>
 <div class="block">This method is potentially expensive and useful mostly for non-replay CP path.</div>
 <dl>
@@ -396,7 +396,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegion.Bat
 <ul class="blockList">
 <li class="blockList">
 <h4>isInReplay</h4>
-<pre>public&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.ReplayBatchOperation.html#line.3624">isInReplay</a>()</pre>
+<pre>public&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.ReplayBatchOperation.html#line.3623">isInReplay</a>()</pre>
 <dl>
 <dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
 <dd><code><a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegion.BatchOperation.html#isInReplay--">isInReplay</a></code>&nbsp;in class&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegion.BatchOperation.html" title="class in org.apache.hadoop.hbase.regionserver">HRegion.BatchOperation</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/wal/WALSplitter.MutationReplay.html" title="class in org.apache.hadoop.hbase.wal">WALSplitter.MutationReplay</a>&gt;</code></dd>
@@ -409,7 +409,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegion.Bat
 <ul class="blockList">
 <li class="blockList">
 <h4>getOrigLogSeqNum</h4>
-<pre>public&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.ReplayBatchOperation.html#line.3629">getOrigLogSeqNum</a>()</pre>
+<pre>public&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.ReplayBatchOperation.html#line.3628">getOrigLogSeqNum</a>()</pre>
 <dl>
 <dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
 <dd><code><a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegion.BatchOperation.html#getOrigLogSeqNum--">getOrigLogSeqNum</a></code>&nbsp;in class&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegion.BatchOperation.html" title="class in org.apache.hadoop.hbase.regionserver">HRegion.BatchOperation</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/wal/WALSplitter.MutationReplay.html" title="class in org.apache.hadoop.hbase.wal">WALSplitter.MutationReplay</a>&gt;</code></dd>
@@ -422,7 +422,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegion.Bat
 <ul class="blockList">
 <li class="blockList">
 <h4>startRegionOperation</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.ReplayBatchOperation.html#line.3634">startRegionOperation</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.ReplayBatchOperation.html#line.3633">startRegionOperation</a>()
                           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>
 <dl>
 <dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
@@ -438,7 +438,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegion.Bat
 <ul class="blockList">
 <li class="blockList">
 <h4>closeRegionOperation</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.ReplayBatchOperation.html#line.3639">closeRegionOperation</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.ReplayBatchOperation.html#line.3638">closeRegionOperation</a>()
                           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>
 <dl>
 <dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
@@ -454,7 +454,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegion.Bat
 <ul class="blockList">
 <li class="blockList">
 <h4>checkAndPreparePut</h4>
-<pre>protected&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.ReplayBatchOperation.html#line.3648">checkAndPreparePut</a>(<a href="../../../../../org/apache/hadoop/hbase/client/Put.html" title="class in org.apache.hadoop.hbase.client">Put</a>&nbsp;p)
+<pre>protected&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.ReplayBatchOperation.html#line.3647">checkAndPreparePut</a>(<a href="../../../../../org/apache/hadoop/hbase/client/Put.html" title="class in org.apache.hadoop.hbase.client">Put</a>&nbsp;p)
                            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">During replay, there could exist column families which are removed between region server
  failure and replay</div>
@@ -472,7 +472,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegion.Bat
 <ul class="blockList">
 <li class="blockList">
 <h4>checkAndPrepare</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.ReplayBatchOperation.html#line.3669">checkAndPrepare</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.ReplayBatchOperation.html#line.3668">checkAndPrepare</a>()
                      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="descfrmTypeLabel">Description copied from class:&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegion.BatchOperation.html#checkAndPrepare--">HRegion.BatchOperation</a></code></span></div>
 <div class="block">Validates each mutation and prepares a batch for write. If necessary (non-replay case), runs
@@ -494,7 +494,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegion.Bat
 <ul class="blockList">
 <li class="blockList">
 <h4>prepareMiniBatchOperations</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.ReplayBatchOperation.html#line.3678">prepareMiniBatchOperations</a>(<a href="../../../../../org/apache/hadoop/hbase/regionserver/MiniBatchOperationInProgress.html" title="class in org.apache.hadoop.hbase.regionserver">MiniBatchOperationInProgress</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/client/Mutation.html" title="class in org.apache.hadoop.hbase.client">Mutation</a>&gt;&nbsp;miniBatchOp,
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.ReplayBatchOperation.html#line.3677">prepareMiniBatchOperations</a>(<a href="../../../../../org/apache/hadoop/hbase/regionserver/MiniBatchOperationInProgress.html" title="class in org.apache.hadoop.hbase.regionserver">MiniBatchOperationInProgress</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/client/Mutation.html" title="class in org.apache.hadoop.hbase.client">Mutation</a>&gt;&nbsp;miniBatchOp,
                                        long&nbsp;timestamp,
                                        <a href="http://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/regionserver/Region.RowLock.html" title="interface in org.apache.hadoop.hbase.regionserver">Region.RowLock</a>&gt;&nbsp;acquiredRowLocks)
                                 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>
@@ -515,7 +515,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegion.Bat
 <ul class="blockList">
 <li class="blockList">
 <h4>writeMiniBatchOperationsToMemStore</h4>
-<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/regionserver/MultiVersionConcurrencyControl.WriteEntry.html" title="class in org.apache.hadoop.hbase.regionserver">MultiVersionConcurrencyControl.WriteEntry</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.ReplayBatchOperation.html#line.3690">writeMiniBatchOperationsToMemStore</a>(<a href="../../../../../org/apache/hadoop/hbase/regionserver/MiniBatchOperationInProgress.html" title="class in org.apache.hadoop.hbase.regionserver">MiniBatchOperationInProgress</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/client/Mutation.html" title="class in org.apache.hadoop.hbase.client">Mutation</a>&gt;&nbsp;miniBatchOp,
+<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/regionserver/MultiVersionConcurrencyControl.WriteEntry.html" title="class in org.apache.hadoop.hbase.regionserver">MultiVersionConcurrencyControl.WriteEntry</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.ReplayBatchOperation.html#line.3689">writeMiniBatchOperationsToMemStore</a>(<a href="../../../../../org/apache/hadoop/hbase/regionserver/MiniBatchOperationInProgress.html" title="class in org.apache.hadoop.hbase.regionserver">MiniBatchOperationInProgress</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/client/Mutation.html" title="class in org.apache.hadoop.hbase.client">Mutation</a>&gt;&nbsp;miniBatchOp,
                                                                                     <a href="../../../../../org/apache/hadoop/hbase/regionserver/MultiVersionConcurrencyControl.WriteEntry.html" title="class in org.apache.hadoop.hbase.regionserver">MultiVersionConcurrencyControl.WriteEntry</a>&nbsp;writeEntry)
                                                                              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="descfrmTypeLabel">Description copied from class:&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegion.BatchOperation.html#writeMiniBatchOperationsToMemStore-org.apache.hadoop.hbase.regionserver.MiniBatchOperationInProgress-org.apache.hadoop.hbase.regionserver.MultiVersionConcurrencyControl.WriteEntry-">HRegion.BatchOperation</a></code></span></div>
@@ -534,7 +534,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegion.Bat
 <ul class="blockListLast">
 <li class="blockList">
 <h4>completeMiniBatchOperations</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.ReplayBatchOperation.html#line.3698">completeMiniBatchOperations</a>(<a href="../../../../../org/apache/hadoop/hbase/regionserver/MiniBatchOperationInProgress.html" title="class in org.apache.hadoop.hbase.regionserver">MiniBatchOperationInProgress</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/client/Mutation.html" title="class in org.apache.hadoop.hbase.client">Mutation</a>&gt;&nbsp;miniBatchOp,
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.ReplayBatchOperation.html#line.3697">completeMiniBatchOperations</a>(<a href="../../../../../org/apache/hadoop/hbase/regionserver/MiniBatchOperationInProgress.html" title="class in org.apache.hadoop.hbase.regionserver">MiniBatchOperationInProgress</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/client/Mutation.html" title="class in org.apache.hadoop.hbase.client">Mutation</a>&gt;&nbsp;miniBatchOp,
                                         <a href="../../../../../org/apache/hadoop/hbase/regionserver/MultiVersionConcurrencyControl.WriteEntry.html" title="class in org.apache.hadoop.hbase.regionserver">MultiVersionConcurrencyControl.WriteEntry</a>&nbsp;writeEntry)
                                  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="descfrmTypeLabel">Description copied from class:&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegion.BatchOperation.html#completeMiniBatchOperations-org.apache.hadoop.hbase.regionserver.MiniBatchOperationInProgress-org.apache.hadoop.hbase.regionserver.MultiVersionConcurrencyControl.WriteEntry-">HRegion.BatchOperation</a></code></span></div>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/c54c242b/devapidocs/org/apache/hadoop/hbase/regionserver/HRegion.RowLockContext.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/regionserver/HRegion.RowLockContext.html b/devapidocs/org/apache/hadoop/hbase/regionserver/HRegion.RowLockContext.html
index 43101e2..6d74753 100644
--- a/devapidocs/org/apache/hadoop/hbase/regionserver/HRegion.RowLockContext.html
+++ b/devapidocs/org/apache/hadoop/hbase/regionserver/HRegion.RowLockContext.html
@@ -113,7 +113,7 @@ var activeTableTab = "activeTableTab";
 </dl>
 <hr>
 <br>
-<pre>class <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.html#line.5638">HRegion.RowLockContext</a>
+<pre>class <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.html#line.5637">HRegion.RowLockContext</a>
 extends <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a></pre>
 </li>
 </ul>
@@ -241,7 +241,7 @@ extends <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>row</h4>
-<pre>private final&nbsp;<a href="../../../../../org/apache/hadoop/hbase/util/HashedBytes.html" title="class in org.apache.hadoop.hbase.util">HashedBytes</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.RowLockContext.html#line.5639">row</a></pre>
+<pre>private final&nbsp;<a href="../../../../../org/apache/hadoop/hbase/util/HashedBytes.html" title="class in org.apache.hadoop.hbase.util">HashedBytes</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.RowLockContext.html#line.5638">row</a></pre>
 </li>
 </ul>
 <a name="readWriteLock">
@@ -250,7 +250,7 @@ extends <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>readWriteLock</h4>
-<pre>final&nbsp;<a href="http://docs.oracle.com/javase/8/docs/api/java/util/concurrent/locks/ReadWriteLock.html?is-external=true" title="class or interface in java.util.concurrent.locks">ReadWriteLock</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.RowLockContext.html#line.5640">readWriteLock</a></pre>
+<pre>final&nbsp;<a href="http://docs.oracle.com/javase/8/docs/api/java/util/concurrent/locks/ReadWriteLock.html?is-external=true" title="class or interface in java.util.concurrent.locks">ReadWriteLock</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.RowLockContext.html#line.5639">readWriteLock</a></pre>
 </li>
 </ul>
 <a name="usable">
@@ -259,7 +259,7 @@ extends <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>usable</h4>
-<pre>final&nbsp;<a href="http://docs.oracle.com/javase/8/docs/api/java/util/concurrent/atomic/AtomicBoolean.html?is-external=true" title="class or interface in java.util.concurrent.atomic">AtomicBoolean</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.RowLockContext.html#line.5641">usable</a></pre>
+<pre>final&nbsp;<a href="http://docs.oracle.com/javase/8/docs/api/java/util/concurrent/atomic/AtomicBoolean.html?is-external=true" title="class or interface in java.util.concurrent.atomic">AtomicBoolean</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.RowLockContext.html#line.5640">usable</a></pre>
 </li>
 </ul>
 <a name="count">
@@ -268,7 +268,7 @@ extends <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>count</h4>
-<pre>final&nbsp;<a href="http://docs.oracle.com/javase/8/docs/api/java/util/concurrent/atomic/AtomicInteger.html?is-external=true" title="class or interface in java.util.concurrent.atomic">AtomicInteger</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.RowLockContext.html#line.5642">count</a></pre>
+<pre>final&nbsp;<a href="http://docs.oracle.com/javase/8/docs/api/java/util/concurrent/atomic/AtomicInteger.html?is-external=true" title="class or interface in java.util.concurrent.atomic">AtomicInteger</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.RowLockContext.html#line.5641">count</a></pre>
 </li>
 </ul>
 <a name="lock">
@@ -277,7 +277,7 @@ extends <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>lock</h4>
-<pre>final&nbsp;<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.RowLockContext.html#line.5643">lock</a></pre>
+<pre>final&nbsp;<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.RowLockContext.html#line.5642">lock</a></pre>
 </li>
 </ul>
 <a name="threadName">
@@ -286,7 +286,7 @@ extends <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?
 <ul class="blockListLast">
 <li class="blockList">
 <h4>threadName</h4>
-<pre>private&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> <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.RowLockContext.html#line.5644">threadName</a></pre>
+<pre>private&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> <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.RowLockContext.html#line.5643">threadName</a></pre>
 </li>
 </ul>
 </li>
@@ -303,7 +303,7 @@ extends <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?
 <ul class="blockListLast">
 <li class="blockList">
 <h4>RowLockContext</h4>
-<pre><a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.RowLockContext.html#line.5646">RowLockContext</a>(<a href="../../../../../org/apache/hadoop/hbase/util/HashedBytes.html" title="class in org.apache.hadoop.hbase.util">HashedBytes</a>&nbsp;row)</pre>
+<pre><a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.RowLockContext.html#line.5645">RowLockContext</a>(<a href="../../../../../org/apache/hadoop/hbase/util/HashedBytes.html" title="class in org.apache.hadoop.hbase.util">HashedBytes</a>&nbsp;row)</pre>
 </li>
 </ul>
 </li>
@@ -320,7 +320,7 @@ extends <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>newWriteLock</h4>
-<pre><a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegion.RowLockImpl.html" title="class in org.apache.hadoop.hbase.regionserver">HRegion.RowLockImpl</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.RowLockContext.html#line.5650">newWriteLock</a>()</pre>
+<pre><a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegion.RowLockImpl.html" title="class in org.apache.hadoop.hbase.regionserver">HRegion.RowLockImpl</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.RowLockContext.html#line.5649">newWriteLock</a>()</pre>
 </li>
 </ul>
 <a name="newReadLock--">
@@ -329,7 +329,7 @@ extends <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>newReadLock</h4>
-<pre><a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegion.RowLockImpl.html" title="class in org.apache.hadoop.hbase.regionserver">HRegion.RowLockImpl</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.RowLockContext.html#line.5654">newReadLock</a>()</pre>
+<pre><a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegion.RowLockImpl.html" title="class in org.apache.hadoop.hbase.regionserver">HRegion.RowLockImpl</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.RowLockContext.html#line.5653">newReadLock</a>()</pre>
 </li>
 </ul>
 <a name="getRowLock-java.util.concurrent.locks.Lock-">
@@ -338,7 +338,7 @@ extends <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>getRowLock</h4>
-<pre>private&nbsp;<a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegion.RowLockImpl.html" title="class in org.apache.hadoop.hbase.regionserver">HRegion.RowLockImpl</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.RowLockContext.html#line.5659">getRowLock</a>(<a href="http://docs.oracle.com/javase/8/docs/api/java/util/concurrent/locks/Lock.html?is-external=true" title="class or interface in java.util.concurrent.locks">Lock</a>&nbsp;l)</pre>
+<pre>private&nbsp;<a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegion.RowLockImpl.html" title="class in org.apache.hadoop.hbase.regionserver">HRegion.RowLockImpl</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.RowLockContext.html#line.5658">getRowLock</a>(<a href="http://docs.oracle.com/javase/8/docs/api/java/util/concurrent/locks/Lock.html?is-external=true" title="class or interface in java.util.concurrent.locks">Lock</a>&nbsp;l)</pre>
 </li>
 </ul>
 <a name="cleanUp--">
@@ -347,7 +347,7 @@ extends <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>cleanUp</h4>
-<pre>void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.RowLockContext.html#line.5670">cleanUp</a>()</pre>
+<pre>void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.RowLockContext.html#line.5669">cleanUp</a>()</pre>
 </li>
 </ul>
 <a name="setThreadName-java.lang.String-">
@@ -356,7 +356,7 @@ extends <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>setThreadName</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.RowLockContext.html#line.5683">setThreadName</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;threadName)</pre>
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.RowLockContext.html#line.5682">setThreadName</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;threadName)</pre>
 </li>
 </ul>
 <a name="toString--">
@@ -365,7 +365,7 @@ extends <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?
 <ul class="blockListLast">
 <li class="blockList">
 <h4>toString</h4>
-<pre>public&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/regionserver/HRegion.RowLockContext.html#line.5688">toString</a>()</pre>
+<pre>public&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/regionserver/HRegion.RowLockContext.html#line.5687">toString</a>()</pre>
 <dl>
 <dt><span class="overrideSpecifyLabel">Overrides:</span></dt>
 <dd><code><a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#toString--" title="class or interface in java.lang">toString</a></code>&nbsp;in class&nbsp;<code><a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a></code></dd>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/c54c242b/devapidocs/org/apache/hadoop/hbase/regionserver/HRegion.RowLockImpl.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/regionserver/HRegion.RowLockImpl.html b/devapidocs/org/apache/hadoop/hbase/regionserver/HRegion.RowLockImpl.html
index 3dfc6c9..d1c7879 100644
--- a/devapidocs/org/apache/hadoop/hbase/regionserver/HRegion.RowLockImpl.html
+++ b/devapidocs/org/apache/hadoop/hbase/regionserver/HRegion.RowLockImpl.html
@@ -117,7 +117,7 @@ var activeTableTab = "activeTableTab";
 </dl>
 <hr>
 <br>
-<pre>public static class <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.html#line.5701">HRegion.RowLockImpl</a>
+<pre>public static class <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.html#line.5700">HRegion.RowLockImpl</a>
 extends <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a>
 implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/Region.RowLock.html" title="interface in org.apache.hadoop.hbase.regionserver">Region.RowLock</a></pre>
 <div class="block">Class used to represent a lock on a row.</div>
@@ -226,7 +226,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/Region.R
 <ul class="blockList">
 <li class="blockList">
 <h4>context</h4>
-<pre>private final&nbsp;<a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegion.RowLockContext.html" title="class in org.apache.hadoop.hbase.regionserver">HRegion.RowLockContext</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.RowLockImpl.html#line.5702">context</a></pre>
+<pre>private final&nbsp;<a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegion.RowLockContext.html" title="class in org.apache.hadoop.hbase.regionserver">HRegion.RowLockContext</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.RowLockImpl.html#line.5701">context</a></pre>
 </li>
 </ul>
 <a name="lock">
@@ -235,7 +235,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/Region.R
 <ul class="blockListLast">
 <li class="blockList">
 <h4>lock</h4>
-<pre>private final&nbsp;<a href="http://docs.oracle.com/javase/8/docs/api/java/util/concurrent/locks/Lock.html?is-external=true" title="class or interface in java.util.concurrent.locks">Lock</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.RowLockImpl.html#line.5703">lock</a></pre>
+<pre>private final&nbsp;<a href="http://docs.oracle.com/javase/8/docs/api/java/util/concurrent/locks/Lock.html?is-external=true" title="class or interface in java.util.concurrent.locks">Lock</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.RowLockImpl.html#line.5702">lock</a></pre>
 </li>
 </ul>
 </li>
@@ -252,7 +252,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/Region.R
 <ul class="blockListLast">
 <li class="blockList">
 <h4>RowLockImpl</h4>
-<pre>public&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.RowLockImpl.html#line.5705">RowLockImpl</a>(<a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegion.RowLockContext.html" title="class in org.apache.hadoop.hbase.regionserver">HRegion.RowLockContext</a>&nbsp;context,
+<pre>public&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.RowLockImpl.html#line.5704">RowLockImpl</a>(<a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegion.RowLockContext.html" title="class in org.apache.hadoop.hbase.regionserver">HRegion.RowLockContext</a>&nbsp;context,
                    <a href="http://docs.oracle.com/javase/8/docs/api/java/util/concurrent/locks/Lock.html?is-external=true" title="class or interface in java.util.concurrent.locks">Lock</a>&nbsp;lock)</pre>
 </li>
 </ul>
@@ -270,7 +270,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/Region.R
 <ul class="blockList">
 <li class="blockList">
 <h4>getLock</h4>
-<pre>public&nbsp;<a href="http://docs.oracle.com/javase/8/docs/api/java/util/concurrent/locks/Lock.html?is-external=true" title="class or interface in java.util.concurrent.locks">Lock</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.RowLockImpl.html#line.5710">getLock</a>()</pre>
+<pre>public&nbsp;<a href="http://docs.oracle.com/javase/8/docs/api/java/util/concurrent/locks/Lock.html?is-external=true" title="class or interface in java.util.concurrent.locks">Lock</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.RowLockImpl.html#line.5709">getLock</a>()</pre>
 </li>
 </ul>
 <a name="getContext--">
@@ -279,7 +279,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/Region.R
 <ul class="blockList">
 <li class="blockList">
 <h4>getContext</h4>
-<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegion.RowLockContext.html" title="class in org.apache.hadoop.hbase.regionserver">HRegion.RowLockContext</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.RowLockImpl.html#line.5715">getContext</a>()</pre>
+<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegion.RowLockContext.html" title="class in org.apache.hadoop.hbase.regionserver">HRegion.RowLockContext</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.RowLockImpl.html#line.5714">getContext</a>()</pre>
 </li>
 </ul>
 <a name="release--">
@@ -288,7 +288,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/Region.R
 <ul class="blockList">
 <li class="blockList">
 <h4>release</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.RowLockImpl.html#line.5720">release</a>()</pre>
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.RowLockImpl.html#line.5719">release</a>()</pre>
 <div class="block"><span class="descfrmTypeLabel">Description copied from interface:&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/regionserver/Region.RowLock.html#release--">Region.RowLock</a></code></span></div>
 <div class="block">Release the given lock.  If there are no remaining locks held by the current thread
  then unlock the row and allow other threads to acquire the lock.</div>
@@ -304,7 +304,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/Region.R
 <ul class="blockListLast">
 <li class="blockList">
 <h4>toString</h4>
-<pre>public&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/regionserver/HRegion.RowLockImpl.html#line.5726">toString</a>()</pre>
+<pre>public&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/regionserver/HRegion.RowLockImpl.html#line.5725">toString</a>()</pre>
 <dl>
 <dt><span class="overrideSpecifyLabel">Overrides:</span></dt>
 <dd><code><a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#toString--" title="class or interface in java.lang">toString</a></code>&nbsp;in class&nbsp;<code><a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a></code></dd>


[23/51] [partial] hbase-site git commit: Published site at .

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/c54c242b/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/HRegion.PrepareFlushResult.html
----------------------------------------------------------------------
diff --git a/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/HRegion.PrepareFlushResult.html b/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/HRegion.PrepareFlushResult.html
index 3edfbef..9707b2c 100644
--- a/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/HRegion.PrepareFlushResult.html
+++ b/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/HRegion.PrepareFlushResult.html
@@ -2459,5936 +2459,5935 @@
 <span class="sourceLineNo">2451</span>      }<a name="line.2451"></a>
 <span class="sourceLineNo">2452</span><a name="line.2452"></a>
 <span class="sourceLineNo">2453</span>      for (HStore s : storesToFlush) {<a name="line.2453"></a>
-<span class="sourceLineNo">2454</span>        MemStoreSize flushableSize = s.getFlushableSize();<a name="line.2454"></a>
-<span class="sourceLineNo">2455</span>        totalSizeOfFlushableStores.incMemStoreSize(flushableSize);<a name="line.2455"></a>
-<span class="sourceLineNo">2456</span>        storeFlushCtxs.put(s.getColumnFamilyDescriptor().getName(),<a name="line.2456"></a>
-<span class="sourceLineNo">2457</span>          s.createFlushContext(flushOpSeqId, tracker));<a name="line.2457"></a>
-<span class="sourceLineNo">2458</span>        // for writing stores to WAL<a name="line.2458"></a>
-<span class="sourceLineNo">2459</span>        committedFiles.put(s.getColumnFamilyDescriptor().getName(), null);<a name="line.2459"></a>
-<span class="sourceLineNo">2460</span>        storeFlushableSize.put(s.getColumnFamilyDescriptor().getName(), flushableSize);<a name="line.2460"></a>
-<span class="sourceLineNo">2461</span>      }<a name="line.2461"></a>
-<span class="sourceLineNo">2462</span><a name="line.2462"></a>
-<span class="sourceLineNo">2463</span>      // write the snapshot start to WAL<a name="line.2463"></a>
-<span class="sourceLineNo">2464</span>      if (wal != null &amp;&amp; !writestate.readOnly) {<a name="line.2464"></a>
-<span class="sourceLineNo">2465</span>        FlushDescriptor desc = ProtobufUtil.toFlushDescriptor(FlushAction.START_FLUSH,<a name="line.2465"></a>
-<span class="sourceLineNo">2466</span>            getRegionInfo(), flushOpSeqId, committedFiles);<a name="line.2466"></a>
-<span class="sourceLineNo">2467</span>        // No sync. Sync is below where no updates lock and we do FlushAction.COMMIT_FLUSH<a name="line.2467"></a>
-<span class="sourceLineNo">2468</span>        WALUtil.writeFlushMarker(wal, this.getReplicationScope(), getRegionInfo(), desc, false,<a name="line.2468"></a>
-<span class="sourceLineNo">2469</span>            mvcc);<a name="line.2469"></a>
-<span class="sourceLineNo">2470</span>      }<a name="line.2470"></a>
-<span class="sourceLineNo">2471</span><a name="line.2471"></a>
-<span class="sourceLineNo">2472</span>      // Prepare flush (take a snapshot)<a name="line.2472"></a>
-<span class="sourceLineNo">2473</span>      for (StoreFlushContext flush : storeFlushCtxs.values()) {<a name="line.2473"></a>
-<span class="sourceLineNo">2474</span>        flush.prepare();<a name="line.2474"></a>
-<span class="sourceLineNo">2475</span>      }<a name="line.2475"></a>
-<span class="sourceLineNo">2476</span>    } catch (IOException ex) {<a name="line.2476"></a>
-<span class="sourceLineNo">2477</span>      doAbortFlushToWAL(wal, flushOpSeqId, committedFiles);<a name="line.2477"></a>
-<span class="sourceLineNo">2478</span>      throw ex;<a name="line.2478"></a>
-<span class="sourceLineNo">2479</span>    } finally {<a name="line.2479"></a>
-<span class="sourceLineNo">2480</span>      this.updatesLock.writeLock().unlock();<a name="line.2480"></a>
-<span class="sourceLineNo">2481</span>    }<a name="line.2481"></a>
-<span class="sourceLineNo">2482</span>    String s = "Finished memstore snapshotting " + this + ", syncing WAL and waiting on mvcc, " +<a name="line.2482"></a>
-<span class="sourceLineNo">2483</span>        "flushsize=" + totalSizeOfFlushableStores;<a name="line.2483"></a>
-<span class="sourceLineNo">2484</span>    status.setStatus(s);<a name="line.2484"></a>
-<span class="sourceLineNo">2485</span>    doSyncOfUnflushedWALChanges(wal, getRegionInfo());<a name="line.2485"></a>
-<span class="sourceLineNo">2486</span>    return new PrepareFlushResult(storeFlushCtxs, committedFiles, storeFlushableSize, startTime,<a name="line.2486"></a>
-<span class="sourceLineNo">2487</span>        flushOpSeqId, flushedSeqId, totalSizeOfFlushableStores);<a name="line.2487"></a>
-<span class="sourceLineNo">2488</span>  }<a name="line.2488"></a>
-<span class="sourceLineNo">2489</span><a name="line.2489"></a>
-<span class="sourceLineNo">2490</span>  /**<a name="line.2490"></a>
-<span class="sourceLineNo">2491</span>   * Utility method broken out of internalPrepareFlushCache so that method is smaller.<a name="line.2491"></a>
-<span class="sourceLineNo">2492</span>   */<a name="line.2492"></a>
-<span class="sourceLineNo">2493</span>  private void logFatLineOnFlush(Collection&lt;HStore&gt; storesToFlush, long sequenceId) {<a name="line.2493"></a>
-<span class="sourceLineNo">2494</span>    if (!LOG.isInfoEnabled()) {<a name="line.2494"></a>
-<span class="sourceLineNo">2495</span>      return;<a name="line.2495"></a>
-<span class="sourceLineNo">2496</span>    }<a name="line.2496"></a>
-<span class="sourceLineNo">2497</span>    // Log a fat line detailing what is being flushed.<a name="line.2497"></a>
-<span class="sourceLineNo">2498</span>    StringBuilder perCfExtras = null;<a name="line.2498"></a>
-<span class="sourceLineNo">2499</span>    if (!isAllFamilies(storesToFlush)) {<a name="line.2499"></a>
-<span class="sourceLineNo">2500</span>      perCfExtras = new StringBuilder();<a name="line.2500"></a>
-<span class="sourceLineNo">2501</span>      for (HStore store: storesToFlush) {<a name="line.2501"></a>
-<span class="sourceLineNo">2502</span>        perCfExtras.append("; ").append(store.getColumnFamilyName());<a name="line.2502"></a>
-<span class="sourceLineNo">2503</span>        perCfExtras.append("=")<a name="line.2503"></a>
-<span class="sourceLineNo">2504</span>            .append(StringUtils.byteDesc(store.getFlushableSize().getDataSize()));<a name="line.2504"></a>
-<span class="sourceLineNo">2505</span>      }<a name="line.2505"></a>
-<span class="sourceLineNo">2506</span>    }<a name="line.2506"></a>
-<span class="sourceLineNo">2507</span>    LOG.info("Flushing " + + storesToFlush.size() + "/" + stores.size() +<a name="line.2507"></a>
-<span class="sourceLineNo">2508</span>        " column families, memstore=" + StringUtils.byteDesc(this.memstoreDataSize.get()) +<a name="line.2508"></a>
-<span class="sourceLineNo">2509</span>        ((perCfExtras != null &amp;&amp; perCfExtras.length() &gt; 0)? perCfExtras.toString(): "") +<a name="line.2509"></a>
-<span class="sourceLineNo">2510</span>        ((wal != null) ? "" : "; WAL is null, using passed sequenceid=" + sequenceId));<a name="line.2510"></a>
-<span class="sourceLineNo">2511</span>  }<a name="line.2511"></a>
-<span class="sourceLineNo">2512</span><a name="line.2512"></a>
-<span class="sourceLineNo">2513</span>  private void doAbortFlushToWAL(final WAL wal, final long flushOpSeqId,<a name="line.2513"></a>
-<span class="sourceLineNo">2514</span>      final Map&lt;byte[], List&lt;Path&gt;&gt; committedFiles) {<a name="line.2514"></a>
-<span class="sourceLineNo">2515</span>    if (wal == null) return;<a name="line.2515"></a>
-<span class="sourceLineNo">2516</span>    try {<a name="line.2516"></a>
-<span class="sourceLineNo">2517</span>      FlushDescriptor desc = ProtobufUtil.toFlushDescriptor(FlushAction.ABORT_FLUSH,<a name="line.2517"></a>
-<span class="sourceLineNo">2518</span>          getRegionInfo(), flushOpSeqId, committedFiles);<a name="line.2518"></a>
-<span class="sourceLineNo">2519</span>      WALUtil.writeFlushMarker(wal, this.getReplicationScope(), getRegionInfo(), desc, false,<a name="line.2519"></a>
-<span class="sourceLineNo">2520</span>          mvcc);<a name="line.2520"></a>
-<span class="sourceLineNo">2521</span>    } catch (Throwable t) {<a name="line.2521"></a>
-<span class="sourceLineNo">2522</span>      LOG.warn("Received unexpected exception trying to write ABORT_FLUSH marker to WAL:" +<a name="line.2522"></a>
-<span class="sourceLineNo">2523</span>          StringUtils.stringifyException(t));<a name="line.2523"></a>
-<span class="sourceLineNo">2524</span>      // ignore this since we will be aborting the RS with DSE.<a name="line.2524"></a>
-<span class="sourceLineNo">2525</span>    }<a name="line.2525"></a>
-<span class="sourceLineNo">2526</span>    // we have called wal.startCacheFlush(), now we have to abort it<a name="line.2526"></a>
-<span class="sourceLineNo">2527</span>    wal.abortCacheFlush(this.getRegionInfo().getEncodedNameAsBytes());<a name="line.2527"></a>
-<span class="sourceLineNo">2528</span>  }<a name="line.2528"></a>
-<span class="sourceLineNo">2529</span><a name="line.2529"></a>
-<span class="sourceLineNo">2530</span>  /**<a name="line.2530"></a>
-<span class="sourceLineNo">2531</span>   * Sync unflushed WAL changes. See HBASE-8208 for details<a name="line.2531"></a>
-<span class="sourceLineNo">2532</span>   */<a name="line.2532"></a>
-<span class="sourceLineNo">2533</span>  private static void doSyncOfUnflushedWALChanges(final WAL wal, final RegionInfo hri)<a name="line.2533"></a>
-<span class="sourceLineNo">2534</span>  throws IOException {<a name="line.2534"></a>
-<span class="sourceLineNo">2535</span>    if (wal == null) {<a name="line.2535"></a>
-<span class="sourceLineNo">2536</span>      return;<a name="line.2536"></a>
-<span class="sourceLineNo">2537</span>    }<a name="line.2537"></a>
-<span class="sourceLineNo">2538</span>    try {<a name="line.2538"></a>
-<span class="sourceLineNo">2539</span>      wal.sync(); // ensure that flush marker is sync'ed<a name="line.2539"></a>
-<span class="sourceLineNo">2540</span>    } catch (IOException ioe) {<a name="line.2540"></a>
-<span class="sourceLineNo">2541</span>      wal.abortCacheFlush(hri.getEncodedNameAsBytes());<a name="line.2541"></a>
-<span class="sourceLineNo">2542</span>      throw ioe;<a name="line.2542"></a>
-<span class="sourceLineNo">2543</span>    }<a name="line.2543"></a>
-<span class="sourceLineNo">2544</span>  }<a name="line.2544"></a>
-<span class="sourceLineNo">2545</span><a name="line.2545"></a>
-<span class="sourceLineNo">2546</span>  /**<a name="line.2546"></a>
-<span class="sourceLineNo">2547</span>   * @return True if passed Set is all families in the region.<a name="line.2547"></a>
-<span class="sourceLineNo">2548</span>   */<a name="line.2548"></a>
-<span class="sourceLineNo">2549</span>  private boolean isAllFamilies(Collection&lt;HStore&gt; families) {<a name="line.2549"></a>
-<span class="sourceLineNo">2550</span>    return families == null || this.stores.size() == families.size();<a name="line.2550"></a>
-<span class="sourceLineNo">2551</span>  }<a name="line.2551"></a>
-<span class="sourceLineNo">2552</span><a name="line.2552"></a>
-<span class="sourceLineNo">2553</span>  /**<a name="line.2553"></a>
-<span class="sourceLineNo">2554</span>   * Writes a marker to WAL indicating a flush is requested but cannot be complete due to various<a name="line.2554"></a>
-<span class="sourceLineNo">2555</span>   * reasons. Ignores exceptions from WAL. Returns whether the write succeeded.<a name="line.2555"></a>
-<span class="sourceLineNo">2556</span>   * @param wal<a name="line.2556"></a>
-<span class="sourceLineNo">2557</span>   * @return whether WAL write was successful<a name="line.2557"></a>
-<span class="sourceLineNo">2558</span>   */<a name="line.2558"></a>
-<span class="sourceLineNo">2559</span>  private boolean writeFlushRequestMarkerToWAL(WAL wal, boolean writeFlushWalMarker) {<a name="line.2559"></a>
-<span class="sourceLineNo">2560</span>    if (writeFlushWalMarker &amp;&amp; wal != null &amp;&amp; !writestate.readOnly) {<a name="line.2560"></a>
-<span class="sourceLineNo">2561</span>      FlushDescriptor desc = ProtobufUtil.toFlushDescriptor(FlushAction.CANNOT_FLUSH,<a name="line.2561"></a>
-<span class="sourceLineNo">2562</span>        getRegionInfo(), -1, new TreeMap&lt;&gt;(Bytes.BYTES_COMPARATOR));<a name="line.2562"></a>
-<span class="sourceLineNo">2563</span>      try {<a name="line.2563"></a>
-<span class="sourceLineNo">2564</span>        WALUtil.writeFlushMarker(wal, this.getReplicationScope(), getRegionInfo(), desc, true,<a name="line.2564"></a>
-<span class="sourceLineNo">2565</span>            mvcc);<a name="line.2565"></a>
-<span class="sourceLineNo">2566</span>        return true;<a name="line.2566"></a>
-<span class="sourceLineNo">2567</span>      } catch (IOException e) {<a name="line.2567"></a>
-<span class="sourceLineNo">2568</span>        LOG.warn(getRegionInfo().getEncodedName() + " : "<a name="line.2568"></a>
-<span class="sourceLineNo">2569</span>            + "Received exception while trying to write the flush request to wal", e);<a name="line.2569"></a>
-<span class="sourceLineNo">2570</span>      }<a name="line.2570"></a>
-<span class="sourceLineNo">2571</span>    }<a name="line.2571"></a>
-<span class="sourceLineNo">2572</span>    return false;<a name="line.2572"></a>
-<span class="sourceLineNo">2573</span>  }<a name="line.2573"></a>
-<span class="sourceLineNo">2574</span><a name="line.2574"></a>
-<span class="sourceLineNo">2575</span>  @edu.umd.cs.findbugs.annotations.SuppressWarnings(value="NN_NAKED_NOTIFY",<a name="line.2575"></a>
-<span class="sourceLineNo">2576</span>      justification="Intentional; notify is about completed flush")<a name="line.2576"></a>
-<span class="sourceLineNo">2577</span>  protected FlushResultImpl internalFlushCacheAndCommit(WAL wal, MonitoredTask status,<a name="line.2577"></a>
-<span class="sourceLineNo">2578</span>      PrepareFlushResult prepareResult, Collection&lt;HStore&gt; storesToFlush) throws IOException {<a name="line.2578"></a>
-<span class="sourceLineNo">2579</span>    // prepare flush context is carried via PrepareFlushResult<a name="line.2579"></a>
-<span class="sourceLineNo">2580</span>    TreeMap&lt;byte[], StoreFlushContext&gt; storeFlushCtxs = prepareResult.storeFlushCtxs;<a name="line.2580"></a>
-<span class="sourceLineNo">2581</span>    TreeMap&lt;byte[], List&lt;Path&gt;&gt; committedFiles = prepareResult.committedFiles;<a name="line.2581"></a>
-<span class="sourceLineNo">2582</span>    long startTime = prepareResult.startTime;<a name="line.2582"></a>
-<span class="sourceLineNo">2583</span>    long flushOpSeqId = prepareResult.flushOpSeqId;<a name="line.2583"></a>
-<span class="sourceLineNo">2584</span>    long flushedSeqId = prepareResult.flushedSeqId;<a name="line.2584"></a>
-<span class="sourceLineNo">2585</span><a name="line.2585"></a>
-<span class="sourceLineNo">2586</span>    String s = "Flushing stores of " + this;<a name="line.2586"></a>
-<span class="sourceLineNo">2587</span>    status.setStatus(s);<a name="line.2587"></a>
-<span class="sourceLineNo">2588</span>    if (LOG.isTraceEnabled()) LOG.trace(s);<a name="line.2588"></a>
-<span class="sourceLineNo">2589</span><a name="line.2589"></a>
-<span class="sourceLineNo">2590</span>    // Any failure from here on out will be catastrophic requiring server<a name="line.2590"></a>
-<span class="sourceLineNo">2591</span>    // restart so wal content can be replayed and put back into the memstore.<a name="line.2591"></a>
-<span class="sourceLineNo">2592</span>    // Otherwise, the snapshot content while backed up in the wal, it will not<a name="line.2592"></a>
-<span class="sourceLineNo">2593</span>    // be part of the current running servers state.<a name="line.2593"></a>
-<span class="sourceLineNo">2594</span>    boolean compactionRequested = false;<a name="line.2594"></a>
-<span class="sourceLineNo">2595</span>    long flushedOutputFileSize = 0;<a name="line.2595"></a>
-<span class="sourceLineNo">2596</span>    try {<a name="line.2596"></a>
-<span class="sourceLineNo">2597</span>      // A.  Flush memstore to all the HStores.<a name="line.2597"></a>
-<span class="sourceLineNo">2598</span>      // Keep running vector of all store files that includes both old and the<a name="line.2598"></a>
-<span class="sourceLineNo">2599</span>      // just-made new flush store file. The new flushed file is still in the<a name="line.2599"></a>
-<span class="sourceLineNo">2600</span>      // tmp directory.<a name="line.2600"></a>
-<span class="sourceLineNo">2601</span><a name="line.2601"></a>
-<span class="sourceLineNo">2602</span>      for (StoreFlushContext flush : storeFlushCtxs.values()) {<a name="line.2602"></a>
-<span class="sourceLineNo">2603</span>        flush.flushCache(status);<a name="line.2603"></a>
-<span class="sourceLineNo">2604</span>      }<a name="line.2604"></a>
-<span class="sourceLineNo">2605</span><a name="line.2605"></a>
-<span class="sourceLineNo">2606</span>      // Switch snapshot (in memstore) -&gt; new hfile (thus causing<a name="line.2606"></a>
-<span class="sourceLineNo">2607</span>      // all the store scanners to reset/reseek).<a name="line.2607"></a>
-<span class="sourceLineNo">2608</span>      Iterator&lt;HStore&gt; it = storesToFlush.iterator();<a name="line.2608"></a>
-<span class="sourceLineNo">2609</span>      // stores.values() and storeFlushCtxs have same order<a name="line.2609"></a>
-<span class="sourceLineNo">2610</span>      for (StoreFlushContext flush : storeFlushCtxs.values()) {<a name="line.2610"></a>
-<span class="sourceLineNo">2611</span>        boolean needsCompaction = flush.commit(status);<a name="line.2611"></a>
-<span class="sourceLineNo">2612</span>        if (needsCompaction) {<a name="line.2612"></a>
-<span class="sourceLineNo">2613</span>          compactionRequested = true;<a name="line.2613"></a>
-<span class="sourceLineNo">2614</span>        }<a name="line.2614"></a>
-<span class="sourceLineNo">2615</span>        byte[] storeName = it.next().getColumnFamilyDescriptor().getName();<a name="line.2615"></a>
-<span class="sourceLineNo">2616</span>        List&lt;Path&gt; storeCommittedFiles = flush.getCommittedFiles();<a name="line.2616"></a>
-<span class="sourceLineNo">2617</span>        committedFiles.put(storeName, storeCommittedFiles);<a name="line.2617"></a>
-<span class="sourceLineNo">2618</span>        // Flush committed no files, indicating flush is empty or flush was canceled<a name="line.2618"></a>
-<span class="sourceLineNo">2619</span>        if (storeCommittedFiles == null || storeCommittedFiles.isEmpty()) {<a name="line.2619"></a>
-<span class="sourceLineNo">2620</span>          MemStoreSize storeFlushableSize = prepareResult.storeFlushableSize.get(storeName);<a name="line.2620"></a>
-<span class="sourceLineNo">2621</span>          prepareResult.totalFlushableSize.decMemStoreSize(storeFlushableSize);<a name="line.2621"></a>
-<span class="sourceLineNo">2622</span>        }<a name="line.2622"></a>
-<span class="sourceLineNo">2623</span>        flushedOutputFileSize += flush.getOutputFileSize();<a name="line.2623"></a>
-<span class="sourceLineNo">2624</span>      }<a name="line.2624"></a>
-<span class="sourceLineNo">2625</span>      storeFlushCtxs.clear();<a name="line.2625"></a>
-<span class="sourceLineNo">2626</span><a name="line.2626"></a>
-<span class="sourceLineNo">2627</span>      // Set down the memstore size by amount of flush.<a name="line.2627"></a>
-<span class="sourceLineNo">2628</span>      this.decrMemStoreSize(prepareResult.totalFlushableSize);<a name="line.2628"></a>
-<span class="sourceLineNo">2629</span><a name="line.2629"></a>
-<span class="sourceLineNo">2630</span>      if (wal != null) {<a name="line.2630"></a>
-<span class="sourceLineNo">2631</span>        // write flush marker to WAL. If fail, we should throw DroppedSnapshotException<a name="line.2631"></a>
-<span class="sourceLineNo">2632</span>        FlushDescriptor desc = ProtobufUtil.toFlushDescriptor(FlushAction.COMMIT_FLUSH,<a name="line.2632"></a>
-<span class="sourceLineNo">2633</span>          getRegionInfo(), flushOpSeqId, committedFiles);<a name="line.2633"></a>
-<span class="sourceLineNo">2634</span>        WALUtil.writeFlushMarker(wal, this.getReplicationScope(), getRegionInfo(), desc, true,<a name="line.2634"></a>
-<span class="sourceLineNo">2635</span>            mvcc);<a name="line.2635"></a>
-<span class="sourceLineNo">2636</span>      }<a name="line.2636"></a>
-<span class="sourceLineNo">2637</span>    } catch (Throwable t) {<a name="line.2637"></a>
-<span class="sourceLineNo">2638</span>      // An exception here means that the snapshot was not persisted.<a name="line.2638"></a>
-<span class="sourceLineNo">2639</span>      // The wal needs to be replayed so its content is restored to memstore.<a name="line.2639"></a>
-<span class="sourceLineNo">2640</span>      // Currently, only a server restart will do this.<a name="line.2640"></a>
-<span class="sourceLineNo">2641</span>      // We used to only catch IOEs but its possible that we'd get other<a name="line.2641"></a>
-<span class="sourceLineNo">2642</span>      // exceptions -- e.g. HBASE-659 was about an NPE -- so now we catch<a name="line.2642"></a>
-<span class="sourceLineNo">2643</span>      // all and sundry.<a name="line.2643"></a>
-<span class="sourceLineNo">2644</span>      if (wal != null) {<a name="line.2644"></a>
-<span class="sourceLineNo">2645</span>        try {<a name="line.2645"></a>
-<span class="sourceLineNo">2646</span>          FlushDescriptor desc = ProtobufUtil.toFlushDescriptor(FlushAction.ABORT_FLUSH,<a name="line.2646"></a>
-<span class="sourceLineNo">2647</span>            getRegionInfo(), flushOpSeqId, committedFiles);<a name="line.2647"></a>
-<span class="sourceLineNo">2648</span>          WALUtil.writeFlushMarker(wal, this.replicationScope, getRegionInfo(), desc, false, mvcc);<a name="line.2648"></a>
-<span class="sourceLineNo">2649</span>        } catch (Throwable ex) {<a name="line.2649"></a>
-<span class="sourceLineNo">2650</span>          LOG.warn(getRegionInfo().getEncodedName() + " : "<a name="line.2650"></a>
-<span class="sourceLineNo">2651</span>              + "failed writing ABORT_FLUSH marker to WAL", ex);<a name="line.2651"></a>
-<span class="sourceLineNo">2652</span>          // ignore this since we will be aborting the RS with DSE.<a name="line.2652"></a>
-<span class="sourceLineNo">2653</span>        }<a name="line.2653"></a>
-<span class="sourceLineNo">2654</span>        wal.abortCacheFlush(this.getRegionInfo().getEncodedNameAsBytes());<a name="line.2654"></a>
-<span class="sourceLineNo">2655</span>      }<a name="line.2655"></a>
-<span class="sourceLineNo">2656</span>      DroppedSnapshotException dse = new DroppedSnapshotException("region: " +<a name="line.2656"></a>
-<span class="sourceLineNo">2657</span>          Bytes.toStringBinary(getRegionInfo().getRegionName()));<a name="line.2657"></a>
-<span class="sourceLineNo">2658</span>      dse.initCause(t);<a name="line.2658"></a>
-<span class="sourceLineNo">2659</span>      status.abort("Flush failed: " + StringUtils.stringifyException(t));<a name="line.2659"></a>
-<span class="sourceLineNo">2660</span><a name="line.2660"></a>
-<span class="sourceLineNo">2661</span>      // Callers for flushcache() should catch DroppedSnapshotException and abort the region server.<a name="line.2661"></a>
-<span class="sourceLineNo">2662</span>      // However, since we may have the region read lock, we cannot call close(true) here since<a name="line.2662"></a>
-<span class="sourceLineNo">2663</span>      // we cannot promote to a write lock. Instead we are setting closing so that all other region<a name="line.2663"></a>
-<span class="sourceLineNo">2664</span>      // operations except for close will be rejected.<a name="line.2664"></a>
-<span class="sourceLineNo">2665</span>      this.closing.set(true);<a name="line.2665"></a>
-<span class="sourceLineNo">2666</span><a name="line.2666"></a>
-<span class="sourceLineNo">2667</span>      if (rsServices != null) {<a name="line.2667"></a>
-<span class="sourceLineNo">2668</span>        // This is a safeguard against the case where the caller fails to explicitly handle aborting<a name="line.2668"></a>
-<span class="sourceLineNo">2669</span>        rsServices.abort("Replay of WAL required. Forcing server shutdown", dse);<a name="line.2669"></a>
-<span class="sourceLineNo">2670</span>      }<a name="line.2670"></a>
-<span class="sourceLineNo">2671</span><a name="line.2671"></a>
-<span class="sourceLineNo">2672</span>      throw dse;<a name="line.2672"></a>
-<span class="sourceLineNo">2673</span>    }<a name="line.2673"></a>
-<span class="sourceLineNo">2674</span><a name="line.2674"></a>
-<span class="sourceLineNo">2675</span>    // If we get to here, the HStores have been written.<a name="line.2675"></a>
-<span class="sourceLineNo">2676</span>    if (wal != null) {<a name="line.2676"></a>
-<span class="sourceLineNo">2677</span>      wal.completeCacheFlush(this.getRegionInfo().getEncodedNameAsBytes());<a name="line.2677"></a>
-<span class="sourceLineNo">2678</span>    }<a name="line.2678"></a>
-<span class="sourceLineNo">2679</span><a name="line.2679"></a>
-<span class="sourceLineNo">2680</span>    // Record latest flush time<a name="line.2680"></a>
-<span class="sourceLineNo">2681</span>    for (HStore store: storesToFlush) {<a name="line.2681"></a>
-<span class="sourceLineNo">2682</span>      this.lastStoreFlushTimeMap.put(store, startTime);<a name="line.2682"></a>
-<span class="sourceLineNo">2683</span>    }<a name="line.2683"></a>
-<span class="sourceLineNo">2684</span><a name="line.2684"></a>
-<span class="sourceLineNo">2685</span>    this.maxFlushedSeqId = flushedSeqId;<a name="line.2685"></a>
-<span class="sourceLineNo">2686</span>    this.lastFlushOpSeqId = flushOpSeqId;<a name="line.2686"></a>
-<span class="sourceLineNo">2687</span><a name="line.2687"></a>
-<span class="sourceLineNo">2688</span>    // C. Finally notify anyone waiting on memstore to clear:<a name="line.2688"></a>
-<span class="sourceLineNo">2689</span>    // e.g. checkResources().<a name="line.2689"></a>
-<span class="sourceLineNo">2690</span>    synchronized (this) {<a name="line.2690"></a>
-<span class="sourceLineNo">2691</span>      notifyAll(); // FindBugs NN_NAKED_NOTIFY<a name="line.2691"></a>
-<span class="sourceLineNo">2692</span>    }<a name="line.2692"></a>
-<span class="sourceLineNo">2693</span><a name="line.2693"></a>
-<span class="sourceLineNo">2694</span>    long time = EnvironmentEdgeManager.currentTime() - startTime;<a name="line.2694"></a>
-<span class="sourceLineNo">2695</span>    long memstoresize = this.memstoreDataSize.get();<a name="line.2695"></a>
-<span class="sourceLineNo">2696</span>    String msg = "Finished memstore flush of ~"<a name="line.2696"></a>
-<span class="sourceLineNo">2697</span>        + StringUtils.byteDesc(prepareResult.totalFlushableSize.getDataSize()) + "/"<a name="line.2697"></a>
-<span class="sourceLineNo">2698</span>        + prepareResult.totalFlushableSize.getDataSize() + ", currentsize="<a name="line.2698"></a>
-<span class="sourceLineNo">2699</span>        + StringUtils.byteDesc(memstoresize) + "/" + memstoresize<a name="line.2699"></a>
-<span class="sourceLineNo">2700</span>        + " for region " + this + " in " + time + "ms, sequenceid="<a name="line.2700"></a>
-<span class="sourceLineNo">2701</span>        + flushOpSeqId +  ", compaction requested=" + compactionRequested<a name="line.2701"></a>
-<span class="sourceLineNo">2702</span>        + ((wal == null) ? "; wal=null" : "");<a name="line.2702"></a>
-<span class="sourceLineNo">2703</span>    LOG.info(msg);<a name="line.2703"></a>
-<span class="sourceLineNo">2704</span>    status.setStatus(msg);<a name="line.2704"></a>
-<span class="sourceLineNo">2705</span><a name="line.2705"></a>
-<span class="sourceLineNo">2706</span>    if (rsServices != null &amp;&amp; rsServices.getMetrics() != null) {<a name="line.2706"></a>
-<span class="sourceLineNo">2707</span>      rsServices.getMetrics().updateFlush(time - startTime,<a name="line.2707"></a>
-<span class="sourceLineNo">2708</span>          prepareResult.totalFlushableSize.getDataSize(), flushedOutputFileSize);<a name="line.2708"></a>
-<span class="sourceLineNo">2709</span>    }<a name="line.2709"></a>
-<span class="sourceLineNo">2710</span><a name="line.2710"></a>
-<span class="sourceLineNo">2711</span>    return new FlushResultImpl(compactionRequested ?<a name="line.2711"></a>
-<span class="sourceLineNo">2712</span>        FlushResult.Result.FLUSHED_COMPACTION_NEEDED :<a name="line.2712"></a>
-<span class="sourceLineNo">2713</span>          FlushResult.Result.FLUSHED_NO_COMPACTION_NEEDED, flushOpSeqId);<a name="line.2713"></a>
-<span class="sourceLineNo">2714</span>  }<a name="line.2714"></a>
-<span class="sourceLineNo">2715</span><a name="line.2715"></a>
-<span class="sourceLineNo">2716</span>  /**<a name="line.2716"></a>
-<span class="sourceLineNo">2717</span>   * Method to safely get the next sequence number.<a name="line.2717"></a>
-<span class="sourceLineNo">2718</span>   * @return Next sequence number unassociated with any actual edit.<a name="line.2718"></a>
-<span class="sourceLineNo">2719</span>   * @throws IOException<a name="line.2719"></a>
-<span class="sourceLineNo">2720</span>   */<a name="line.2720"></a>
-<span class="sourceLineNo">2721</span>  @VisibleForTesting<a name="line.2721"></a>
-<span class="sourceLineNo">2722</span>  protected long getNextSequenceId(final WAL wal) throws IOException {<a name="line.2722"></a>
-<span class="sourceLineNo">2723</span>    WriteEntry we = mvcc.begin();<a name="line.2723"></a>
-<span class="sourceLineNo">2724</span>    mvcc.completeAndWait(we);<a name="line.2724"></a>
-<span class="sourceLineNo">2725</span>    return we.getWriteNumber();<a name="line.2725"></a>
-<span class="sourceLineNo">2726</span>  }<a name="line.2726"></a>
-<span class="sourceLineNo">2727</span><a name="line.2727"></a>
-<span class="sourceLineNo">2728</span>  //////////////////////////////////////////////////////////////////////////////<a name="line.2728"></a>
-<span class="sourceLineNo">2729</span>  // get() methods for client use.<a name="line.2729"></a>
-<span class="sourceLineNo">2730</span>  //////////////////////////////////////////////////////////////////////////////<a name="line.2730"></a>
-<span class="sourceLineNo">2731</span><a name="line.2731"></a>
-<span class="sourceLineNo">2732</span>  @Override<a name="line.2732"></a>
-<span class="sourceLineNo">2733</span>  public RegionScannerImpl getScanner(Scan scan) throws IOException {<a name="line.2733"></a>
-<span class="sourceLineNo">2734</span>   return getScanner(scan, null);<a name="line.2734"></a>
-<span class="sourceLineNo">2735</span>  }<a name="line.2735"></a>
-<span class="sourceLineNo">2736</span><a name="line.2736"></a>
-<span class="sourceLineNo">2737</span>  @Override<a name="line.2737"></a>
-<span class="sourceLineNo">2738</span>  public RegionScannerImpl getScanner(Scan scan, List&lt;KeyValueScanner&gt; additionalScanners)<a name="line.2738"></a>
-<span class="sourceLineNo">2739</span>      throws IOException {<a name="line.2739"></a>
-<span class="sourceLineNo">2740</span>    return getScanner(scan, additionalScanners, HConstants.NO_NONCE, HConstants.NO_NONCE);<a name="line.2740"></a>
-<span class="sourceLineNo">2741</span>  }<a name="line.2741"></a>
-<span class="sourceLineNo">2742</span><a name="line.2742"></a>
-<span class="sourceLineNo">2743</span>  private RegionScannerImpl getScanner(Scan scan, List&lt;KeyValueScanner&gt; additionalScanners,<a name="line.2743"></a>
-<span class="sourceLineNo">2744</span>      long nonceGroup, long nonce) throws IOException {<a name="line.2744"></a>
-<span class="sourceLineNo">2745</span>    startRegionOperation(Operation.SCAN);<a name="line.2745"></a>
-<span class="sourceLineNo">2746</span>    try {<a name="line.2746"></a>
-<span class="sourceLineNo">2747</span>      // Verify families are all valid<a name="line.2747"></a>
-<span class="sourceLineNo">2748</span>      if (!scan.hasFamilies()) {<a name="line.2748"></a>
-<span class="sourceLineNo">2749</span>        // Adding all families to scanner<a name="line.2749"></a>
-<span class="sourceLineNo">2750</span>        for (byte[] family : this.htableDescriptor.getColumnFamilyNames()) {<a name="line.2750"></a>
-<span class="sourceLineNo">2751</span>          scan.addFamily(family);<a name="line.2751"></a>
-<span class="sourceLineNo">2752</span>        }<a name="line.2752"></a>
-<span class="sourceLineNo">2753</span>      } else {<a name="line.2753"></a>
-<span class="sourceLineNo">2754</span>        for (byte[] family : scan.getFamilyMap().keySet()) {<a name="line.2754"></a>
-<span class="sourceLineNo">2755</span>          checkFamily(family);<a name="line.2755"></a>
-<span class="sourceLineNo">2756</span>        }<a name="line.2756"></a>
-<span class="sourceLineNo">2757</span>      }<a name="line.2757"></a>
-<span class="sourceLineNo">2758</span>      return instantiateRegionScanner(scan, additionalScanners, nonceGroup, nonce);<a name="line.2758"></a>
-<span class="sourceLineNo">2759</span>    } finally {<a name="line.2759"></a>
-<span class="sourceLineNo">2760</span>      closeRegionOperation(Operation.SCAN);<a name="line.2760"></a>
-<span class="sourceLineNo">2761</span>    }<a name="line.2761"></a>
-<span class="sourceLineNo">2762</span>  }<a name="line.2762"></a>
-<span class="sourceLineNo">2763</span><a name="line.2763"></a>
-<span class="sourceLineNo">2764</span>  protected RegionScanner instantiateRegionScanner(Scan scan,<a name="line.2764"></a>
-<span class="sourceLineNo">2765</span>      List&lt;KeyValueScanner&gt; additionalScanners) throws IOException {<a name="line.2765"></a>
-<span class="sourceLineNo">2766</span>    return instantiateRegionScanner(scan, additionalScanners, HConstants.NO_NONCE,<a name="line.2766"></a>
-<span class="sourceLineNo">2767</span>      HConstants.NO_NONCE);<a name="line.2767"></a>
-<span class="sourceLineNo">2768</span>  }<a name="line.2768"></a>
-<span class="sourceLineNo">2769</span><a name="line.2769"></a>
-<span class="sourceLineNo">2770</span>  protected RegionScannerImpl instantiateRegionScanner(Scan scan,<a name="line.2770"></a>
-<span class="sourceLineNo">2771</span>      List&lt;KeyValueScanner&gt; additionalScanners, long nonceGroup, long nonce) throws IOException {<a name="line.2771"></a>
-<span class="sourceLineNo">2772</span>    if (scan.isReversed()) {<a name="line.2772"></a>
-<span class="sourceLineNo">2773</span>      if (scan.getFilter() != null) {<a name="line.2773"></a>
-<span class="sourceLineNo">2774</span>        scan.getFilter().setReversed(true);<a name="line.2774"></a>
-<span class="sourceLineNo">2775</span>      }<a name="line.2775"></a>
-<span class="sourceLineNo">2776</span>      return new ReversedRegionScannerImpl(scan, additionalScanners, this);<a name="line.2776"></a>
-<span class="sourceLineNo">2777</span>    }<a name="line.2777"></a>
-<span class="sourceLineNo">2778</span>    return new RegionScannerImpl(scan, additionalScanners, this, nonceGroup, nonce);<a name="line.2778"></a>
-<span class="sourceLineNo">2779</span>  }<a name="line.2779"></a>
-<span class="sourceLineNo">2780</span><a name="line.2780"></a>
-<span class="sourceLineNo">2781</span>  /**<a name="line.2781"></a>
-<span class="sourceLineNo">2782</span>   * Prepare a delete for a row mutation processor<a name="line.2782"></a>
-<span class="sourceLineNo">2783</span>   * @param delete The passed delete is modified by this method. WARNING!<a name="line.2783"></a>
-<span class="sourceLineNo">2784</span>   * @throws IOException<a name="line.2784"></a>
-<span class="sourceLineNo">2785</span>   */<a name="line.2785"></a>
-<span class="sourceLineNo">2786</span>  public void prepareDelete(Delete delete) throws IOException {<a name="line.2786"></a>
-<span class="sourceLineNo">2787</span>    // Check to see if this is a deleteRow insert<a name="line.2787"></a>
-<span class="sourceLineNo">2788</span>    if(delete.getFamilyCellMap().isEmpty()){<a name="line.2788"></a>
-<span class="sourceLineNo">2789</span>      for(byte [] family : this.htableDescriptor.getColumnFamilyNames()){<a name="line.2789"></a>
-<span class="sourceLineNo">2790</span>        // Don't eat the timestamp<a name="line.2790"></a>
-<span class="sourceLineNo">2791</span>        delete.addFamily(family, delete.getTimeStamp());<a name="line.2791"></a>
-<span class="sourceLineNo">2792</span>      }<a name="line.2792"></a>
-<span class="sourceLineNo">2793</span>    } else {<a name="line.2793"></a>
-<span class="sourceLineNo">2794</span>      for(byte [] family : delete.getFamilyCellMap().keySet()) {<a name="line.2794"></a>
-<span class="sourceLineNo">2795</span>        if(family == null) {<a name="line.2795"></a>
-<span class="sourceLineNo">2796</span>          throw new NoSuchColumnFamilyException("Empty family is invalid");<a name="line.2796"></a>
-<span class="sourceLineNo">2797</span>        }<a name="line.2797"></a>
-<span class="sourceLineNo">2798</span>        checkFamily(family);<a name="line.2798"></a>
-<span class="sourceLineNo">2799</span>      }<a name="line.2799"></a>
-<span class="sourceLineNo">2800</span>    }<a name="line.2800"></a>
-<span class="sourceLineNo">2801</span>  }<a name="line.2801"></a>
-<span class="sourceLineNo">2802</span><a name="line.2802"></a>
-<span class="sourceLineNo">2803</span>  @Override<a name="line.2803"></a>
-<span class="sourceLineNo">2804</span>  public void delete(Delete delete) throws IOException {<a name="line.2804"></a>
-<span class="sourceLineNo">2805</span>    checkReadOnly();<a name="line.2805"></a>
-<span class="sourceLineNo">2806</span>    checkResources();<a name="line.2806"></a>
-<span class="sourceLineNo">2807</span>    startRegionOperation(Operation.DELETE);<a name="line.2807"></a>
-<span class="sourceLineNo">2808</span>    try {<a name="line.2808"></a>
-<span class="sourceLineNo">2809</span>      // All edits for the given row (across all column families) must happen atomically.<a name="line.2809"></a>
-<span class="sourceLineNo">2810</span>      doBatchMutate(delete);<a name="line.2810"></a>
-<span class="sourceLineNo">2811</span>    } finally {<a name="line.2811"></a>
-<span class="sourceLineNo">2812</span>      closeRegionOperation(Operation.DELETE);<a name="line.2812"></a>
-<span class="sourceLineNo">2813</span>    }<a name="line.2813"></a>
-<span class="sourceLineNo">2814</span>  }<a name="line.2814"></a>
-<span class="sourceLineNo">2815</span><a name="line.2815"></a>
-<span class="sourceLineNo">2816</span>  /**<a name="line.2816"></a>
-<span class="sourceLineNo">2817</span>   * Row needed by below method.<a name="line.2817"></a>
-<span class="sourceLineNo">2818</span>   */<a name="line.2818"></a>
-<span class="sourceLineNo">2819</span>  private static final byte [] FOR_UNIT_TESTS_ONLY = Bytes.toBytes("ForUnitTestsOnly");<a name="line.2819"></a>
-<span class="sourceLineNo">2820</span><a name="line.2820"></a>
-<span class="sourceLineNo">2821</span>  /**<a name="line.2821"></a>
-<span class="sourceLineNo">2822</span>   * This is used only by unit tests. Not required to be a public API.<a name="line.2822"></a>
-<span class="sourceLineNo">2823</span>   * @param familyMap map of family to edits for the given family.<a name="line.2823"></a>
-<span class="sourceLineNo">2824</span>   * @throws IOException<a name="line.2824"></a>
-<span class="sourceLineNo">2825</span>   */<a name="line.2825"></a>
-<span class="sourceLineNo">2826</span>  void delete(NavigableMap&lt;byte[], List&lt;Cell&gt;&gt; familyMap,<a name="line.2826"></a>
-<span class="sourceLineNo">2827</span>      Durability durability) throws IOException {<a name="line.2827"></a>
-<span class="sourceLineNo">2828</span>    Delete delete = new Delete(FOR_UNIT_TESTS_ONLY);<a name="line.2828"></a>
-<span class="sourceLineNo">2829</span>    delete.setFamilyCellMap(familyMap);<a name="line.2829"></a>
-<span class="sourceLineNo">2830</span>    delete.setDurability(durability);<a name="line.2830"></a>
-<span class="sourceLineNo">2831</span>    doBatchMutate(delete);<a name="line.2831"></a>
-<span class="sourceLineNo">2832</span>  }<a name="line.2832"></a>
-<span class="sourceLineNo">2833</span><a name="line.2833"></a>
-<span class="sourceLineNo">2834</span>  /**<a name="line.2834"></a>
-<span class="sourceLineNo">2835</span>   * Set up correct timestamps in the KVs in Delete object.<a name="line.2835"></a>
-<span class="sourceLineNo">2836</span>   * &lt;p&gt;Caller should have the row and region locks.<a name="line.2836"></a>
-<span class="sourceLineNo">2837</span>   * @param mutation<a name="line.2837"></a>
-<span class="sourceLineNo">2838</span>   * @param familyMap<a name="line.2838"></a>
-<span class="sourceLineNo">2839</span>   * @param byteNow<a name="line.2839"></a>
-<span class="sourceLineNo">2840</span>   * @throws IOException<a name="line.2840"></a>
-<span class="sourceLineNo">2841</span>   */<a name="line.2841"></a>
-<span class="sourceLineNo">2842</span>  public void prepareDeleteTimestamps(Mutation mutation, Map&lt;byte[], List&lt;Cell&gt;&gt; familyMap,<a name="line.2842"></a>
-<span class="sourceLineNo">2843</span>      byte[] byteNow) throws IOException {<a name="line.2843"></a>
-<span class="sourceLineNo">2844</span>    for (Map.Entry&lt;byte[], List&lt;Cell&gt;&gt; e : familyMap.entrySet()) {<a name="line.2844"></a>
-<span class="sourceLineNo">2845</span><a name="line.2845"></a>
-<span class="sourceLineNo">2846</span>      byte[] family = e.getKey();<a name="line.2846"></a>
-<span class="sourceLineNo">2847</span>      List&lt;Cell&gt; cells = e.getValue();<a name="line.2847"></a>
-<span class="sourceLineNo">2848</span>      assert cells instanceof RandomAccess;<a name="line.2848"></a>
-<span class="sourceLineNo">2849</span><a name="line.2849"></a>
-<span class="sourceLineNo">2850</span>      Map&lt;byte[], Integer&gt; kvCount = new TreeMap&lt;&gt;(Bytes.BYTES_COMPARATOR);<a name="line.2850"></a>
-<span class="sourceLineNo">2851</span>      int listSize = cells.size();<a name="line.2851"></a>
-<span class="sourceLineNo">2852</span>      for (int i=0; i &lt; listSize; i++) {<a name="line.2852"></a>
-<span class="sourceLineNo">2853</span>        Cell cell = cells.get(i);<a name="line.2853"></a>
-<span class="sourceLineNo">2854</span>        //  Check if time is LATEST, change to time of most recent addition if so<a name="line.2854"></a>
-<span class="sourceLineNo">2855</span>        //  This is expensive.<a name="line.2855"></a>
-<span class="sourceLineNo">2856</span>        if (cell.getTimestamp() == HConstants.LATEST_TIMESTAMP<a name="line.2856"></a>
-<span class="sourceLineNo">2857</span>            &amp;&amp; PrivateCellUtil.isDeleteType(cell)) {<a name="line.2857"></a>
-<span class="sourceLineNo">2858</span>          byte[] qual = CellUtil.cloneQualifier(cell);<a name="line.2858"></a>
-<span class="sourceLineNo">2859</span><a name="line.2859"></a>
-<span class="sourceLineNo">2860</span>          Integer count = kvCount.get(qual);<a name="line.2860"></a>
-<span class="sourceLineNo">2861</span>          if (count == null) {<a name="line.2861"></a>
-<span class="sourceLineNo">2862</span>            kvCount.put(qual, 1);<a name="line.2862"></a>
-<span class="sourceLineNo">2863</span>          } else {<a name="line.2863"></a>
-<span class="sourceLineNo">2864</span>            kvCount.put(qual, count + 1);<a name="line.2864"></a>
-<span class="sourceLineNo">2865</span>          }<a name="line.2865"></a>
-<span class="sourceLineNo">2866</span>          count = kvCount.get(qual);<a name="line.2866"></a>
-<span class="sourceLineNo">2867</span><a name="line.2867"></a>
-<span class="sourceLineNo">2868</span>          Get get = new Get(CellUtil.cloneRow(cell));<a name="line.2868"></a>
-<span class="sourceLineNo">2869</span>          get.setMaxVersions(count);<a name="line.2869"></a>
-<span class="sourceLineNo">2870</span>          get.addColumn(family, qual);<a name="line.2870"></a>
-<span class="sourceLineNo">2871</span>          if (coprocessorHost != null) {<a name="line.2871"></a>
-<span class="sourceLineNo">2872</span>            if (!coprocessorHost.prePrepareTimeStampForDeleteVersion(mutation, cell,<a name="line.2872"></a>
-<span class="sourceLineNo">2873</span>                byteNow, get)) {<a name="line.2873"></a>
-<span class="sourceLineNo">2874</span>              updateDeleteLatestVersionTimeStamp(cell, get, count, byteNow);<a name="line.2874"></a>
-<span class="sourceLineNo">2875</span>            }<a name="line.2875"></a>
-<span class="sourceLineNo">2876</span>          } else {<a name="line.2876"></a>
-<span class="sourceLineNo">2877</span>            updateDeleteLatestVersionTimeStamp(cell, get, count, byteNow);<a name="line.2877"></a>
-<span class="sourceLineNo">2878</span>          }<a name="line.2878"></a>
-<span class="sourceLineNo">2879</span>        } else {<a name="line.2879"></a>
-<span class="sourceLineNo">2880</span>          PrivateCellUtil.updateLatestStamp(cell, byteNow, 0);<a name="line.2880"></a>
-<span class="sourceLineNo">2881</span>        }<a name="line.2881"></a>
-<span class="sourceLineNo">2882</span>      }<a name="line.2882"></a>
-<span class="sourceLineNo">2883</span>    }<a name="line.2883"></a>
-<span class="sourceLineNo">2884</span>  }<a name="line.2884"></a>
-<span class="sourceLineNo">2885</span><a name="line.2885"></a>
-<span class="sourceLineNo">2886</span>  void updateDeleteLatestVersionTimeStamp(Cell cell, Get get, int count, byte[] byteNow)<a name="line.2886"></a>
-<span class="sourceLineNo">2887</span>      throws IOException {<a name="line.2887"></a>
-<span class="sourceLineNo">2888</span>    List&lt;Cell&gt; result = get(get, false);<a name="line.2888"></a>
-<span class="sourceLineNo">2889</span><a name="line.2889"></a>
-<span class="sourceLineNo">2890</span>    if (result.size() &lt; count) {<a name="line.2890"></a>
-<span class="sourceLineNo">2891</span>      // Nothing to delete<a name="line.2891"></a>
-<span class="sourceLineNo">2892</span>      PrivateCellUtil.updateLatestStamp(cell, byteNow, 0);<a name="line.2892"></a>
-<span class="sourceLineNo">2893</span>      return;<a name="line.2893"></a>
-<span class="sourceLineNo">2894</span>    }<a name="line.2894"></a>
-<span class="sourceLineNo">2895</span>    if (result.size() &gt; count) {<a name="line.2895"></a>
-<span class="sourceLineNo">2896</span>      throw new RuntimeException("Unexpected size: " + result.size());<a name="line.2896"></a>
-<span class="sourceLineNo">2897</span>    }<a name="line.2897"></a>
-<span class="sourceLineNo">2898</span>    Cell getCell = result.get(count - 1);<a name="line.2898"></a>
-<span class="sourceLineNo">2899</span>    PrivateCellUtil.setTimestamp(cell, getCell.getTimestamp());<a name="line.2899"></a>
-<span class="sourceLineNo">2900</span>  }<a name="line.2900"></a>
-<span class="sourceLineNo">2901</span><a name="line.2901"></a>
-<span class="sourceLineNo">2902</span>  @Override<a name="line.2902"></a>
-<span class="sourceLineNo">2903</span>  public void put(Put put) throws IOException {<a name="line.2903"></a>
-<span class="sourceLineNo">2904</span>    checkReadOnly();<a name="line.2904"></a>
-<span class="sourceLineNo">2905</span><a name="line.2905"></a>
-<span class="sourceLineNo">2906</span>    // Do a rough check that we have resources to accept a write.  The check is<a name="line.2906"></a>
-<span class="sourceLineNo">2907</span>    // 'rough' in that between the resource check and the call to obtain a<a name="line.2907"></a>
-<span class="sourceLineNo">2908</span>    // read lock, resources may run out.  For now, the thought is that this<a name="line.2908"></a>
-<span class="sourceLineNo">2909</span>    // will be extremely rare; we'll deal with it when it happens.<a name="line.2909"></a>
-<span class="sourceLineNo">2910</span>    checkResources();<a name="line.2910"></a>
-<span class="sourceLineNo">2911</span>    startRegionOperation(Operation.PUT);<a name="line.2911"></a>
-<span class="sourceLineNo">2912</span>    try {<a name="line.2912"></a>
-<span class="sourceLineNo">2913</span>      // All edits for the given row (across all column families) must happen atomically.<a name="line.2913"></a>
-<span class="sourceLineNo">2914</span>      doBatchMutate(put);<a name="line.2914"></a>
-<span class="sourceLineNo">2915</span>    } finally {<a name="line.2915"></a>
-<span class="sourceLineNo">2916</span>      closeRegionOperation(Operation.PUT);<a name="line.2916"></a>
-<span class="sourceLineNo">2917</span>    }<a name="line.2917"></a>
-<span class="sourceLineNo">2918</span>  }<a name="line.2918"></a>
-<span class="sourceLineNo">2919</span><a name="line.2919"></a>
-<span class="sourceLineNo">2920</span>  /**<a name="line.2920"></a>
-<span class="sourceLineNo">2921</span>   * Class that tracks the progress of a batch operations, accumulating status codes and tracking<a name="line.2921"></a>
-<span class="sourceLineNo">2922</span>   * the index at which processing is proceeding. These batch operations may get split into<a name="line.2922"></a>
-<span class="sourceLineNo">2923</span>   * mini-batches for processing.<a name="line.2923"></a>
-<span class="sourceLineNo">2924</span>   */<a name="line.2924"></a>
-<span class="sourceLineNo">2925</span>  private abstract static class BatchOperation&lt;T&gt; {<a name="line.2925"></a>
-<span class="sourceLineNo">2926</span>    protected final T[] operations;<a name="line.2926"></a>
-<span class="sourceLineNo">2927</span>    protected final OperationStatus[] retCodeDetails;<a name="line.2927"></a>
-<span class="sourceLineNo">2928</span>    protected final WALEdit[] walEditsFromCoprocessors;<a name="line.2928"></a>
-<span class="sourceLineNo">2929</span>    // reference family cell maps directly so coprocessors can mutate them if desired<a name="line.2929"></a>
-<span class="sourceLineNo">2930</span>    protected final Map&lt;byte[], List&lt;Cell&gt;&gt;[] familyCellMaps;<a name="line.2930"></a>
-<span class="sourceLineNo">2931</span><a name="line.2931"></a>
-<span class="sourceLineNo">2932</span>    protected final HRegion region;<a name="line.2932"></a>
-<span class="sourceLineNo">2933</span>    protected int nextIndexToProcess = 0;<a name="line.2933"></a>
-<span class="sourceLineNo">2934</span>    protected final ObservedExceptionsInBatch observedExceptions;<a name="line.2934"></a>
-<span class="sourceLineNo">2935</span>    //Durability of the batch (highest durability of all operations)<a name="line.2935"></a>
-<span class="sourceLineNo">2936</span>    protected Durability durability;<a name="line.2936"></a>
-<span class="sourceLineNo">2937</span>    protected boolean atomic = false;<a name="line.2937"></a>
-<span class="sourceLineNo">2938</span><a name="line.2938"></a>
-<span class="sourceLineNo">2939</span>    public BatchOperation(final HRegion region, T[] operations) {<a name="line.2939"></a>
-<span class="sourceLineNo">2940</span>      this.operations = operations;<a name="line.2940"></a>
-<span class="sourceLineNo">2941</span>      this.retCodeDetails = new OperationStatus[operations.length];<a name="line.2941"></a>
-<span class="sourceLineNo">2942</span>      Arrays.fill(this.retCodeDetails, OperationStatus.NOT_RUN);<a name="line.2942"></a>
-<span class="sourceLineNo">2943</span>      this.walEditsFromCoprocessors = new WALEdit[operations.length];<a name="line.2943"></a>
-<span class="sourceLineNo">2944</span>      familyCellMaps = new Map[operations.length];<a name="line.2944"></a>
-<span class="sourceLineNo">2945</span><a name="line.2945"></a>
-<span class="sourceLineNo">2946</span>      this.region = region;<a name="line.2946"></a>
-<span class="sourceLineNo">2947</span>      observedExceptions = new ObservedExceptionsInBatch();<a name="line.2947"></a>
-<span class="sourceLineNo">2948</span>      durability = Durability.USE_DEFAULT;<a name="line.2948"></a>
-<span class="sourceLineNo">2949</span>    }<a name="line.2949"></a>
-<span class="sourceLineNo">2950</span><a name="line.2950"></a>
-<span class="sourceLineNo">2951</span>    /**<a name="line.2951"></a>
-<span class="sourceLineNo">2952</span>     * Visitor interface for batch operations<a name="line.2952"></a>
-<span class="sourceLineNo">2953</span>     */<a name="line.2953"></a>
-<span class="sourceLineNo">2954</span>    @FunctionalInterface<a name="line.2954"></a>
-<span class="sourceLineNo">2955</span>    public interface Visitor {<a name="line.2955"></a>
-<span class="sourceLineNo">2956</span>      /**<a name="line.2956"></a>
-<span class="sourceLineNo">2957</span>       * @param index operation index<a name="line.2957"></a>
-<span class="sourceLineNo">2958</span>       * @return If true continue visiting remaining entries, break otherwise<a name="line.2958"></a>
-<span class="sourceLineNo">2959</span>       */<a name="line.2959"></a>
-<span class="sourceLineNo">2960</span>      boolean visit(int index) throws IOException;<a name="line.2960"></a>
-<span class="sourceLineNo">2961</span>    }<a name="line.2961"></a>
-<span class="sourceLineNo">2962</span><a name="line.2962"></a>
-<span class="sourceLineNo">2963</span>    /**<a name="line.2963"></a>
-<span class="sourceLineNo">2964</span>     * Helper method for visiting pending/ all batch operations<a name="line.2964"></a>
-<span class="sourceLineNo">2965</span>     */<a name="line.2965"></a>
-<span class="sourceLineNo">2966</span>    public void visitBatchOperations(boolean pendingOnly, int lastIndexExclusive, Visitor visitor)<a name="line.2966"></a>
-<span class="sourceLineNo">2967</span>        throws IOException {<a name="line.2967"></a>
-<span class="sourceLineNo">2968</span>      assert lastIndexExclusive &lt;= this.size();<a name="line.2968"></a>
-<span class="sourceLineNo">2969</span>      for (int i = nextIndexToProcess; i &lt; lastIndexExclusive; i++) {<a name="line.2969"></a>
-<span class="sourceLineNo">2970</span>        if (!pendingOnly || isOperationPending(i)) {<a name="line.2970"></a>
-<span class="sourceLineNo">2971</span>          if (!visitor.visit(i)) {<a name="line.2971"></a>
-<span class="sourceLineNo">2972</span>            break;<a name="line.2972"></a>
-<span class="sourceLineNo">2973</span>          }<a name="line.2973"></a>
-<span class="sourceLineNo">2974</span>        }<a name="line.2974"></a>
-<span class="sourceLineNo">2975</span>      }<a name="line.2975"></a>
-<span class="sourceLineNo">2976</span>    }<a name="line.2976"></a>
-<span class="sourceLineNo">2977</span><a name="line.2977"></a>
-<span class="sourceLineNo">2978</span>    public abstract Mutation getMutation(int index);<a name="line.2978"></a>
-<span class="sourceLineNo">2979</span>    public abstract long getNonceGroup(int index);<a name="line.2979"></a>
-<span class="sourceLineNo">2980</span>    public abstract long getNonce(int index);<a name="line.2980"></a>
-<span class="sourceLineNo">2981</span>    /** This method is potentially expensive and useful mostly for non-replay CP path. */<a name="line.2981"></a>
-<span class="sourceLineNo">2982</span>    public abstract Mutation[] getMutationsForCoprocs();<a name="line.2982"></a>
-<span class="sourceLineNo">2983</span>    public abstract boolean isInReplay();<a name="line.2983"></a>
-<span class="sourceLineNo">2984</span>    public abstract long getOrigLogSeqNum();<a name="line.2984"></a>
-<span class="sourceLineNo">2985</span>    public abstract void startRegionOperation() throws IOException;<a name="line.2985"></a>
-<span class="sourceLineNo">2986</span>    public abstract void closeRegionOperation() throws IOException;<a name="line.2986"></a>
-<span class="sourceLineNo">2987</span><a name="line.2987"></a>
-<span class="sourceLineNo">2988</span>    /**<a name="line.2988"></a>
-<span class="sourceLineNo">2989</span>     * Validates each mutation and prepares a batch for write. If necessary (non-replay case), runs<a name="line.2989"></a>
-<span class="sourceLineNo">2990</span>     * CP prePut()/ preDelete() hooks for all mutations in a batch. This is intended to operate on<a name="line.2990"></a>
-<span class="sourceLineNo">2991</span>     * entire batch and will be called from outside of class to check and prepare batch. This can<a name="line.2991"></a>
-<span class="sourceLineNo">2992</span>     * be implemented by calling helper method {@link #checkAndPrepareMutation(int, long)} in a<a name="line.2992"></a>
-<span class="sourceLineNo">2993</span>     * 'for' loop over mutations.<a name="line.2993"></a>
-<span class="sourceLineNo">2994</span>     */<a name="line.2994"></a>
-<span class="sourceLineNo">2995</span>    public abstract void checkAndPrepare() throws IOException;<a name="line.2995"></a>
-<span class="sourceLineNo">2996</span><a name="line.2996"></a>
-<span class="sourceLineNo">2997</span>    /**<a name="line.2997"></a>
-<span class="sourceLineNo">2998</span>     * Implement any Put request specific check and prepare logic here. Please refer to<a name="line.2998"></a>
-<span class="sourceLineNo">2999</span>     * {@link #checkAndPrepareMutation(Mutation, long)} for how its used.<a name="line.2999"></a>
-<span class="sourceLineNo">3000</span>     */<a name="line.3000"></a>
-<span class="sourceLineNo">3001</span>    protected abstract void checkAndPreparePut(final Put p) throws IOException;<a name="line.3001"></a>
-<span class="sourceLineNo">3002</span><a name="line.3002"></a>
-<span class="sourceLineNo">3003</span>    /**<a name="line.3003"></a>
-<span class="sourceLineNo">3004</span>     *  If necessary, calls preBatchMutate() CP hook for a mini-batch and updates metrics, cell<a name="line.3004"></a>
-<span class="sourceLineNo">3005</span>     *  count, tags and timestamp for all cells of all operations in a mini-batch.<a name="line.3005"></a>
-<span class="sourceLineNo">3006</span>     */<a name="line.3006"></a>
-<span class="sourceLineNo">3007</span>    public abstract void prepareMiniBatchOperations(MiniBatchOperationInProgress&lt;Mutation&gt;<a name="line.3007"></a>
-<span class="sourceLineNo">3008</span>        miniBatchOp, long timestamp, final List&lt;RowLock&gt; acquiredRowLocks) throws IOException;<a name="line.3008"></a>
-<span class="sourceLineNo">3009</span><a name="line.3009"></a>
-<span class="sourceLineNo">3010</span>    /**<a name="line.3010"></a>
-<span class="sourceLineNo">3011</span>     * Write mini-batch operations to MemStore<a name="line.3011"></a>
-<span class="sourceLineNo">3012</span>     */<a name="line.3012"></a>
-<span class="sourceLineNo">3013</span>    public abstract WriteEntry writeMiniBatchOperationsToMemStore(<a name="line.3013"></a>
-<span class="sourceLineNo">3014</span>        final MiniBatchOperationInProgress&lt;Mutation&gt; miniBatchOp, final WriteEntry writeEntry)<a name="line.3014"></a>
-<span class="sourceLineNo">3015</span>        throws IOException;<a name="line.3015"></a>
-<span class="sourceLineNo">3016</span><a name="line.3016"></a>
-<span class="sourceLineNo">3017</span>    protected void writeMiniBatchOperationsToMemStore(<a name="line.3017"></a>
-<span class="sourceLineNo">3018</span>        final MiniBatchOperationInProgress&lt;Mutation&gt; miniBatchOp, final long writeNumber)<a name="line.3018"></a>
-<span class="sourceLineNo">3019</span>        throws IOException {<a name="line.3019"></a>
-<span class="sourceLineNo">3020</span>      MemStoreSizing memStoreAccounting = new MemStoreSizing();<a name="line.3020"></a>
-<span class="sourceLineNo">3021</span>      visitBatchOperations(true, miniBatchOp.getLastIndexExclusive(), (int index) -&gt; {<a name="line.3021"></a>
-<span class="sourceLineNo">3022</span>        // We need to update the sequence id for following reasons.<a name="line.3022"></a>
-<span class="sourceLineNo">3023</span>        // 1) If the op is in replay mode, FSWALEntry#stampRegionSequenceId won't stamp sequence id.<a name="line.3023"></a>
-<span class="sourceLineNo">3024</span>        // 2) If no WAL, FSWALEntry won't be used<a name="line.3024"></a>
-<span class="sourceLineNo">3025</span>        // we use durability of the original mutation for the mutation passed by CP.<a name="line.3025"></a>
-<span class="sourceLineNo">3026</span>        if (isInReplay() || getMutation(index).getDurability() == Durability.SKIP_WAL) {<a name="line.3026"></a>
-<span class="sourceLineNo">3027</span>          region.updateSequenceId(familyCellMaps[index].values(), writeNumber);<a name="line.3027"></a>
-<span class="sourceLineNo">3028</span>        }<a name="line.3028"></a>
-<span class="sourceLineNo">3029</span>        applyFamilyMapToMemStore(familyCellMaps[index], memStoreAccounting);<a name="line.3029"></a>
-<span class="sourceLineNo">3030</span>        return true;<a name="line.3030"></a>
-<span class="sourceLineNo">3031</span>      });<a name="line.3031"></a>
-<span class="sourceLineNo">3032</span>      // update memStore size<a name="line.3032"></a>
-<span class="sourceLineNo">3033</span>      region.addAndGetMemStoreSize(memStoreAccounting);<a name="line.3033"></a>
-<span class="sourceLineNo">3034</span>    }<a name="line.3034"></a>
-<span class="sourceLineNo">3035</span><a name="line.3035"></a>
-<span class="sourceLineNo">3036</span>    public boolean isDone() {<a name="line.3036"></a>
-<span class="sourceLineNo">3037</span>      return nextIndexToProcess == operations.length;<a name="line.3037"></a>
-<span class="sourceLineNo">3038</span>    }<a name="line.3038"></a>
-<span class="sourceLineNo">3039</span><a name="line.3039"></a>
-<span class="sourceLineNo">3040</span>    public int size() {<a name="line.3040"></a>
-<span class="sourceLineNo">3041</span>      return operations.length;<a name="line.3041"></a>
-<span class="sourceLineNo">3042</span>    }<a name="line.3042"></a>
-<span class="sourceLineNo">3043</span><a name="line.3043"></a>
-<span class="sourceLineNo">3044</span>    public boolean isOperationPending(int index) {<a name="line.3044"></a>
-<span class="sourceLineNo">3045</span>      return retCodeDetails[index].getOperationStatusCode() == OperationStatusCode.NOT_RUN;<a name="line.3045"></a>
-<span class="sourceLineNo">3046</span>    }<a name="line.3046"></a>
-<span class="sourceLineNo">3047</span><a name="line.3047"></a>
-<span class="sourceLineNo">3048</span>    public List&lt;UUID&gt; getClusterIds() {<a name="line.3048"></a>
-<span class="sourceLineNo">3049</span>      assert size() != 0;<a name="line.3049"></a>
-<span class="sourceLineNo">3050</span>      return getMutation(0).getClusterIds();<a name="line.3050"></a>
-<span class="sourceLineNo">3051</span>    }<a name="line.3051"></a>
-<span class="sourceLineNo">3052</span><a name="line.3052"></a>
-<span class="sourceLineNo">3053</span>    boolean isAtomic() {<a name="line.3053"></a>
-<span class="sourceLineNo">3054</span>      return atomic;<a name="line.3054"></a>
-<span class="sourceLineNo">3055</span>    }<a name="line.3055"></a>
-<span class="sourceLineNo">3056</span><a name="line.3056"></a>
-<span class="sourceLineNo">3057</span>    /**<a name="line.3057"></a>
-<span class="sourceLineNo">3058</span>     * Helper method that checks and prepares only one mutation. This can be used to implement<a name="line.3058"></a>
-<span class="sourceLineNo">3059</span>     * {@link #checkAndPrepare()} for entire Batch.<a name="line.3059"></a>
-<span class="sourceLineNo">3060</span>     * NOTE: As CP prePut()/ preDelete() hooks may modify mutations, this method should be called<a name="line.3060"></a>
-<span class="sourceLineNo">3061</span>     * after prePut()/ preDelete() CP hooks are run for the mutation<a name="line.3061"></a>
-<span class="sourceLineNo">3062</span>     */<a name="line.3062"></a>
-<span class="sourceLineNo">3063</span>    protected void checkAndPrepareMutation(Mutation mutation, final long timestamp)<a name="line.3063"></a>
-<span class="sourceLineNo">3064</span>        throws IOException {<a name="line.3064"></a>
-<span class="sourceLineNo">3065</span>      region.checkRow(mutation.getRow(), "batchMutate");<a name="line.3065"></a>
-<span class="sourceLineNo">3066</span>      if (mutation instanceof Put) {<a name="line.3066"></a>
-<span class="sourceLineNo">3067</span>        // Check the families in the put. If bad, skip this one.<a name="line.3067"></a>
-<span class="sourceLineNo">3068</span>        checkAndPreparePut((Put) mutation);<a name="line.3068"></a>
-<span class="sourceLineNo">3069</span>        region.checkTimestamps(mutation.getFamilyCellMap(), timestamp);<a name="line.3069"></a>
-<span class="sourceLineNo">3070</span>      } else {<a name="line.3070"></a>
-<span class="sourceLineNo">3071</span>        region.prepareDelete((Delete) mutation);<a name="line.3071"></a>
-<span class="sourceLineNo">3072</span>      }<a name="line.3072"></a>
-<span class="sourceLineNo">3073</span>    }<a name="line.3073"></a>
-<span class="sourceLineNo">3074</span><a name="line.3074"></a>
-<span class="sourceLineNo">3075</span>    protected void checkAndPrepareMutation(int index, long timestamp) throws IOException {<a name="line.3075"></a>
-<span class="sourceLineNo">3076</span>      Mutation mutation = getMutation(index);<a name="line.3076"></a>
-<span class="sourceLineNo">3077</span>      try {<a name="line.3077"></a>
-<span class="sourceLineNo">3078</span>        this.checkAndPrepareMutation(mutation, timestamp);<a name="line.3078"></a>
-<span class="sourceLineNo">3079</span><a name="line.3079"></a>
-<span class="sourceLineNo">3080</span>        // store the family map reference to allow for mutations<a name="line.3080"></a>
-<span class="sourceLineNo">3081</span>        familyCellMaps[index] = mutation.getFamilyCellMap();<a name="line.3081"></a>
-<span class="sourceLineNo">3082</span>        // store durability for the batch (highest durability of all operations in the batch)<a name="line.3082"></a>
-<span class="sourceLineNo">3083</span>        Durability tmpDur = region.getEffectiveDurability(mutation.getDurability());<a name="line.3083"></a>
-<span class="sourceLineNo">3084</span>        if (tmpDur.ordinal() &gt; durability.ordinal()) {<a name="line.3084"></a>
-<span class="sourceLineNo">3085</span>          durability = tmpDur;<a name="line.3085"></a>
-<span class="sourceLineNo">3086</span>        }<a name="line.3086"></a>
-<span class="sourceLineNo">3087</span>      } catch (NoSuchColumnFamilyException nscfe) {<a name="line.3087"></a>
-<span class="sourceLineNo">3088</span>        final String msg = "No such column family in batch mutation. ";<a name="line.3088"></a>
-<span class="sourceLineNo">3089</span>        if (observedExceptions.hasSeenNoSuchFamily()) {<a name="line.3089"></a>
-<span class="sourceLineNo">3090</span>          LOG.warn(msg + nscfe.getMessage());<a name="line.3090"></a>
-<span class="sourceLineNo">3091</span>        } else {<a name="line.3091"></a>
-<span class="sourceLineNo">3092</span>          LOG.warn(msg, nscfe);<a name="line.3092"></a>
-<span class="sourceLineNo">3093</span>          observedExceptions.sawNoSuchFamily();<a name="line.3093"></a>
-<span class="sourceLineNo">3094</span>        }<a name="line.3094"></a>
-<span class="sourceLineNo">3095</span>        retCodeDetails[index] = new OperationStatus(<a name="line.3095"></a>
-<span class="sourceLineNo">3096</span>            OperationStatusCode.BAD_FAMILY, nscfe.getMessage());<a name="line.3096"></a>
-<span class="sourceLineNo">3097</span>        if (isAtomic()) { // fail, atomic means all or none<a name="line.3097"></a>
-<span class="sourceLineNo">3098</span>          throw nscfe;<a name="line.3098"></a>
-<span class="sourceLineNo">3099</span>        }<a name="line.3099"></a>
-<span class="sourceLineNo">3100</span>      } catch (FailedSanityCheckException fsce) {<a name="line.3100"></a>
-<span class="sourceLineNo">3101</span>        final String msg = "Batch Mutation did not pass sanity check. ";<a name="line.3101"></a>
-<span class="sourceLineNo">3102</span>        if (observedExceptions.hasSeenFailedSanityCheck()) {<a name="line.3102"></a>
-<span class="sourceLineNo">3103</span>          LOG.warn(msg + fsce.getMessage());<a name="line.3103"></a>
-<span class="sourceLineNo">3104</span>        } else {<a name="line.3104"></a>
-<span class="sourceLineNo">3105</span>          LOG.warn(msg, fsce);<a name="line.3105"></a>
-<span class="sourceLineNo">3106</span>          observedExceptions.sawFailedSanityCheck();<a name="line.3106"></a>
-<span class="sourceLineNo">3107</span>        }<a name="line.3107"></a>
-<span class="sourceLineNo">3108</span>        retCodeDetails[index] = new OperationStatus(<a name="line.3108"></a>
-<span class="sourceLineNo">3109</span>            OperationStatusCode.SANITY_CHECK_FAILURE, fsce.getMessage());<a name="line.3109"></a>
-<span class="sourceLineNo">3110</span>        if (isAtomic()) {<a name="line.3110"></a>
-<span class="sourceLineNo">3111</span>          throw fsce;<a name="line.3111"></a>
-<span class="sourceLineNo">3112</span>        }<a name="line.3112"></a>
-<span class="sourceLineNo">3113</span>      } catch (WrongRegionException we) {<a name="line.3113"></a>
-<span class="sourceLineNo">3114</span>        final String msg = "Batch mutation had a row that does not belong to this region. ";<a name="line.3114"></a>
-<span class="sourceLineNo">3115</span>        if (observedExceptions.hasSeenWrongRegion()) {<a name="line.3115"></a>
-<span class="sourceLineNo">3116</span>          LOG.warn(msg + we.getMessage());<a name="line.3116"></a>
-<span class="sourceLineNo">3117</span>        } else {<a name="line.3117"></a>
-<span class="sourceLineNo">3118</span>          LOG.warn(msg, we);<a name="line.3118"></a>
-<span class="sourceLineNo">3119</span>          observedExceptions.sawWrongRegion();<a name="line.3119"></a>
-<span class="sourceLineNo">3120</span>        }<a name="line.3120"></a>
-<span class="sourceLineNo">3121</span>        retCodeDetails[index] = new OperationStatus(<a name="line.3121"></a>
-<span class="sourceLineNo">3122</span>            OperationStatusCode.SANITY_CHECK_FAILURE, we.getMessage());<a name="line.3122"></a>
-<span class="sourceLineNo">3123</span>        if (isAtomic()) {<a name="line.3123"></a>
-<span class="sourceLineNo">3124</span>          throw we;<a name="line.3124"></a>
-<span class="sourceLineNo">3125</span>        }<a name="line.3125"></a>
-<span class="sourceLineNo">3126</span>      }<a name="line.3126"></a>
-<span class="sourceLineNo">3127</span>    }<a name="line.3127"></a>
-<span class="sourceLineNo">3128</span><a name="line.3128"></a>
-<span class="sourceLineNo">3129</span>    /**<a name="line.3129"></a>
-<span class="sourceLineNo">3130</span>     * Creates Mini-batch of all operations [nextIndexToProcess, lastIndexExclusive) for which<a name="line.3130"></a>
-<span class="sourceLineNo">3131</span>     * a row lock can be acquired. All mutations with locked rows are considered to be<a name="line.3131"></a>
-<span class="sourceLineNo">3132</span>     * In-progress operations and hence the name {@link MiniBatchOperationInProgress}. Mini batch<a name="line.3132"></a>
-<span class="sourceLineNo">3133</span>     * is window over {@link BatchOperation} and contains contiguous pending operations.<a name="line.3133"></a>
-<span class="sourceLineNo">3134</span>     *<a name="line.3134"></a>
-<span class="sourceLineNo">3135</span>     * @param acquiredRowLocks keeps track of rowLocks acquired.<a name="line.3135"></a>
-<span class="sourceLineNo">3136</span>     */<a name="line.3136"></a>
-<span class="sourceLineNo">3137</span>    public MiniBatchOperationInProgress&lt;Mutation&gt; lockRowsAndBuildMiniBatch(<a name="line.3137"></a>
-<span class="sourceLineNo">3138</span>        List&lt;RowLock&gt; acquiredRowLocks) throws IOException {<a name="line.3138"></a>
-<span class="sourceLineNo">3139</span>      int readyToWriteCount = 0;<a name="line.3139"></a>
-<span class="sourceLineNo">3140</span>      int lastIndexExclusive = 0;<a name="line.3140"></a>
-<span class="sourceLineNo">3141</span>      for (; lastIndexExclusive &lt; size(); lastIndexExclusive++) {<a name="line.3141"></a>
-<span class="sourceLineNo">3142</span>        if (!isOperationPending(lastIndexExclusive)) {<a name="line.3142"></a>
-<span class="sourceLineNo">3143</span>          continue;<a name="line.3143"></a>
-<span class="sourceLineNo">3144</span>        }<a name="line.3144"></a>
-<span class="sourceLineNo">3145</span>        Mutation mutation = getMutation(lastIndexExclusive);<a name="line.3145"></a>
-<span class="sourceLineNo">3146</span>        // If we haven't got any rows in our batch, we should block to get the next one.<a name="line.3146"></a>
-<span class="sourceLineNo">3147</span>        RowLock rowLock = null;<a name="line.3147"></a>
-<span class="sourceLineNo">3148</span>        try {<a name="line.3148"></a>
-<span class="sourceLineNo">3149</span>          // if atomic then get exclusive lock, else shared lock<a name="line.3149"></a>
-<span class="sourceLineNo">3150</span>          rowLock = region.getRowLockInternal(mutation.getRow(), !isAtomic());<a name="line.3150"></a>
-<span class="sourceLineNo">3151</span>        } catch (TimeoutIOException e) {<a name="line.3151"></a>
-<span class="sourceLineNo">3152</span>          // We will retry when other exceptions, but we should stop if we timeout .<a name="line.3152"></a>
-<span class="sourceLineNo">3153</span>          throw e;<a name="line.3153"></a>
-<span class="sourceLineNo">3154</span>        } catch (IOException ioe) {<a name="line.3154"></a>
-<span class="sourceLineNo">3155</span>          LOG.warn("Failed getting lock, row=" + Bytes.toStringBinary(mutation.getRow()), ioe);<a name="line.3155"></a>
-<span class="sourceLineNo">3156</span>          if (isAtomic()) { // fail, atomic means all or none<a name="line.3156"></a>
-<span class="sourceLineNo">3157</span>            throw ioe;<a name="line.3157"></a>
-<span class="sourceLineNo">3158</span>          }<a name="line.3158"></a>
-<span class="sourceLineNo">3159</span>        }<a name="line.3159"></a>
-<span class="sourceLineNo">3160</span>        if (rowLock == null) {<a name="line.3160"></a>
-<span class="sourceLineNo">3161</span>          // We failed to grab another lock<a name="line.3161"></a>
-<span class="sourceLineNo">3162</span>          if (isAtomic()) {<a name="line.3162"></a>
-<span class="sourceLineNo">3163</span>            throw new IOException("Can't apply all operations atomically!");<a name="line.3163"></a>
-<span class="sourceLineNo">3164</span>          }<a name="line.3164"></a>
-<span class="sourceLineNo">3165</span>          break; // Stop acquiring more rows for this batch<a name="line.3165"></a>
-<span class="sourceLineNo">3166</span>        } else {<a name="line.3166"></a>
-<span class="sourceLineNo">3167</span>          acquiredRowLocks.add(rowLock);<a name="line.3167"></a>
-<span class="sourceLineNo">3168</span>        }<a name="line.3168"></a>
-<span class="sourceLineNo">3169</span>        readyToWriteCount++;<a name="line.3169"></a>
-<span class="sourceLineNo">3170</span>      }<a name="line.3170"></a>
-<span class="sourceLineNo">3171</span>      return createMiniBatch(lastIndexExclusive, readyToWriteCount);<a name="line.3171"></a>
-<span class="sourceLineNo">3172</span>    }<a name="line.3172"></a>
-<span class="sourceLineNo">3173</span><a name="line.3173"></a>
-<span class="sourceLineNo">3174</span>    protected MiniBatchOperationInProgress&lt;Mutation&gt; createMiniBatch(final int lastIndexExclusive,<a name="line.3174"></a>
-<span class="sourceLineNo">3175</span>        final int readyToWriteCount) {<a name="line.3175"></a>
-<span class="sourceLineNo">3176</span>      return new MiniBatchOperationInProgress&lt;&gt;(getMutationsForCoprocs(), retCodeDetails,<a name="line.3176"></a>
-<span class="sourceLineNo">3177</span>          walEditsFromCoprocessors, nextIndexToProcess, lastIndexExclusive, readyToWriteCount);<a name="line.3177"></a>
-<span class="sourceLineNo">3178</span>    }<a name="line.3178"></a>
-<span class="sourceLineNo">3179</span><a name="line.3179"></a>
-<span class="sourceLineNo">3180</span>    /**<a name="line.3180"></a>
-<span class="sourceLineNo">3181</span>     * Builds separate WALEdit per nonce by applying input mutations. If WALEdits from CP are<a name="line.3181"></a>
-<span class="sourceLineNo">3182</span>     * present, they are merged to result WALEdit.<a name="line.3182"></a>
-<span class="sourceLineNo">3183</span>     */<a name="line.3183"></a>
-<span class="sourceLineNo">3184</span>    public List&lt;Pair&lt;NonceKey, WALEdit&gt;&gt; buildWALEdits(<a name="line.3184"></a>
-<span class="sourceLineNo">3185</span>        final MiniBatchOperationInProgress&lt;Mutation&gt; miniBatchOp) throws IOException {<a name="line.3185"></a>
-<span class="sourceLineNo">3186</span>      List&lt;Pair&lt;NonceKey, WALEdit&gt;&gt; walEdits = new ArrayList&lt;&gt;();<a name="line.3186"></a>
-<span class="sourceLineNo">3187</span><a name="line.3187"></a>
-<span class="sourceLineNo">3188</span>      visitBatchOperations(true, nextIndexToProcess + miniBatchOp.size(), new Visitor() {<a name="line.3188"></a>
-<span class="sourceLineNo">3189</span>        private Pair&lt;NonceKey, WALEdit&gt; curWALEditForNonce;<a name="line.3189"></a>
-<span class="sourceLineNo">3190</span>        @Override<a name="line.3190"></a>
-<span class="sourceLineNo">3191</span>        public boolean visit(int index) throws IOException {<a name="line.3191"></a>
-<span class="sourceLineNo">3192</span>          Mutation m = getMutation(index);<a name="line.3192"></a>
-<span class="sourceLineNo">3193</span>          // we use durability of the original mutation for the mutation passed by CP.<a name="line.3193"></a>
-<span class="sourceLineNo">3194</span>          if (region.getEffectiveDurability(m.getDurability()) == Durability.SKIP_WAL) {<a name="line.3194"></a>
-<span class="sourceLineNo">3195</span>            region.recordMutationWithoutWal(m.getFamilyCellMap());<a name="line.3195"></a>
-<span class="sourceLineNo">3196</span>            return true;<a name="line.3196"></a>
-<span class="sourceLineNo">3197</span>          }<a name="line.3197"></a>
-<span class="sourceLineNo">3198</span><a name="line.3198"></a>
-<span class="sourceLineNo">3199</span>          // the batch may contain multiple nonce keys (replay case). If so, write WALEdit for each.<a name="line.3199"></a>
-<span class="sourceLineNo">3200</span>          // Given how nonce keys are originally written, these should be contiguous.<a name="line.3200"></a>
-<span class="sourceLineNo">3201</span>          // They don't have to be, it will still work, just write more WALEdits than needed.<a name="line.3201"></a>
-<span class="sourceLineNo">3202</span>          long nonceGroup = getNonceGroup(index);<a name="line.3202"></a>
-<span class="sourceLineNo">3203</span>          long nonce = getNonce(index);<a name="line.3203"></a>
-<span class="sourceLineNo">3204</span>          if (curWALEditForNonce == null ||<a name="line.3204"></a>
-<span class="sourceLineNo">3205</span>              curWALEditForNonce.getFirst().getNonceGroup() != nonceGroup ||<a name="line.3205"></a>
-<span class="sourceLineNo">3206</span>              curWALEditForNonce.getFirst().getNonce() != nonce) {<a name="line.3206"></a>
-<span class="sourceLineNo">3207</span>            curWALEditForNonce = new Pair&lt;&gt;(new NonceKey(nonceGroup, nonce),<a name="line.3207"></a>
-<span class="sourceLineNo">3208</span>                new WALEdit(miniBatchOp.getCellCount(), isInReplay()));<a name="line.3208"></a>
-<span class="sourceLineNo">3209</span>            walEdits.add(curWALEditForNonce);<a name="line.3209"></a>
-<span class="sourceLineNo">3210</span>          }<a name="line.3210"></a>
-<span class="sourceLineNo">3211</span>          WALEdit walEdit = curWALEditForNonce.getSecond();<a name="line.3211"></a>
-<span class="sourceLineNo">3212</span><a name="line.3212"></a>
-<span class="sourceLineNo">3213</span>          // Add WAL edits by CP<a name="line.3213"></a>
-<span class="sourceLineNo">3214</span>          WALEdit fromCP = walEditsFromCoprocessors[index];<a name="line.3214"></a>
-<span class="sourceLineNo">3215</span>          if (fromCP != null) {<a name="line.3215"></a>
-<span class="sourceLineNo">3216</span>            for (Cell cell : fromCP.getCells()) {<a name="line.3216"></a>
-<span class="sourceLineNo">3217</span>              walEdit.add(cell);<a name="line.3217"></a>
-<span class="sourceLineNo">3218</span>            }<a name="line.3218"></a>
-<span class="sourceLineNo">3219</span>          }<a name="line.3219"></a>
-<span class="sourceLineNo">3220</span>          addFamilyMapToWALEdit(familyCellMaps[index], walEdit);<a name="line.3220"></a>
-<span class="sourceLineNo">3221</span><a name="line.3221"></a>
-<span class="sourceLineNo">3222</span>          return true;<a name="line.3222"></a>
-<span class="sourceLineNo">3223</span>        }<a name="line.3223"></a>
-<span class="sourceLineNo">3224</span>      });<a name="line.3224"></a>
-<span class="sourceLineNo">3225</span>      return walEdits;<a name="line.3225"></a>
-<span class="sourceLineNo">3226</span>    }<a name="line.3226"></a>
-<span class="sourceLineNo">3227</span><a name="line.3227"></a>
-<span class="sourceLineNo">3228</span>    /**<a name="line.3228"></a>
-<span class="sourceLineNo">3229</span>     * This method completes mini-batch operations by calling postBatchMutate() CP hook (if<a name="line.3229"></a>
-<span class="sourceLineNo">3230</span>     * required) and completing mvcc.<a name="line.3230"></a>
-<span class="sourceLineNo">3231</span>     */<a name="line.3231"></a>
-<span class="sourceLineNo">3232</span>    public void completeMiniBatchOperations(<a name="line.3232"></a>
-<span class="sourceLineNo">3233</span>        final MiniBatchOperationInProgress&lt;Mutation&gt; miniBatchOp, final WriteEntry writeEntry)<a name="line.3233"></a>
-<span class="sourceLineNo">3234</span>        throws IOException {<a name="line.3234"></a>
-<span class="sourceLineNo">3235</span>      if (writeEntry != null) {<a name="line.3235"></a>
-<span class="sourceLineNo">3236</span>        region.mvcc.completeAndWait(writeEntry);<a name="line.3236"></a>
-<span class="sourceLineNo">3237</span>      }<a name="line.3237"></a>
-<span class="sourceLineNo">3238</span>    }<a name="line.3238"></a>
-<span class="sourceLineNo">3239</span><a name="line.3239"></a>
-<span class="sourceLineNo">3240</span>    public void doPostOpCleanupForMiniBatch(<a name="line.3240"></a>
-<span class="sourceLineNo">3241</span>        final MiniBatchOperationInProgress&lt;Mutation&gt; miniBatchOp, final WALEdit walEdit,<a name="line.3241"></a>
-<span class="sourceLineNo">3242</span>        boolean success) throws IOException {}<a name="line.3242"></a>
-<span class="sourceLineNo">3243</span><a name="line.3243"></a>
-<span class="sourceLineNo">3244</span>    /**<a name="line.3244"></a>
-<span class="sourceLineNo">3245</span>     * Atomically apply the given map of family-&gt;edits to the memstore.<a name="line.3245"></a>
-<span class="sourceLineNo">3246</span>     * This handles the consistency control on its own, but the caller<a name="line.3246"></a>
-<span class="sourceLineNo">3247</span>     * should already have locked updatesLock.readLock(). This also does<a name="line.3247"></a>
-<span class="sourceLineNo">3248</span>     * &lt;b&gt;not&lt;/b&gt; check the families for validity.<a name="line.3248"></a>
-<span class="sourceLineNo">3249</span>     *<a name="line.3249"></a>
-<span class="sourceLineNo">3250</span>     * @param familyMap Map of Cells by family<a name="line.3250"></a>
-<span class="sourceLineNo">3251</span>     */<a name="line.3251"></a>
-<span class="sourceLineNo">3252</span>    protected void applyFamilyMapToMemStore(Map&lt;byte[], List&lt;Cell&gt;&gt; familyMap,<a name="line.3252"></a>
-<span class="sourceLineNo">3253</span>        MemStoreSizing memstoreAccounting) throws IOException {<a name="line.3253"></a>
-<span class="sourceLineNo">3254</span>      for (Map.Entry&lt;byte[], List&lt;Cell&gt;&gt; e : familyMap.entrySet()) {<a name="line.3254"></a>
-<span class="sourceLineNo">3255</span>        byte[] family = e.getKey();<a name="line.3255"></a>
-<span class="sourceLineNo">3256</span>        List&lt;Cell&gt; cells = e.getValue();<a name="line.3256"></a>
-<span class="sourceLineNo">3257</span>        assert cells instanceof RandomAccess;<a name="line.3257"></a>
-<span class="sourceLineNo">3258</span>        region.applyToMemStore(region.getStore(family), cells, false, memstoreAccounting);<a name="line.3258"></a>
-<span class="sourceLineNo">3259</span>      }<a name="line.3259"></a>
-<span class="sourceLineNo">3260</span>    }<a name="line.3260"></a>
-<span class="sourceLineNo">3261</span><a name="line.3261"></a>
-<span class="sourceLineNo">3262</span>    /**<a name="line.3262"></a>
-<span class="sourceLineNo">3263</span>     * Append the given map of family-&gt;edits to a WALEdit data structure.<a name="line.3263"></a>
-<span class="sourceLineNo">3264</span>     * This does not write to the WAL itself.<a name="line.3264"></a>
-<span class="sourceLineNo">3265</span>     * @param familyMap map of family-&gt;edits<a name="line.3265"></a>
-<span class="sourceLineNo">3266</span>     * @param walEdit the destination entry to append into<a name="line.3266"></a>
-<span class="sourceLineNo">3267</span>     */<a name="line.3267"></a>
-<span class="sourceLineNo">3268</span>    private void addFamilyMapToWALEdit(Map&lt;byte[], List&lt;Cell&gt;&gt; familyMap,<a name="line.3268"></a>
-<span class="sourceLineNo">3269</span>        WALEdit walEdit) {<a name="line.3269"></a>
-<span class="sourceLineNo">3270</span>      for (List&lt;Cell&gt; edits : familyMap.values()) {<a name="line.3270"></a>
-<span class="sourceLineNo">3271</span>        // Optimization: 'foreach' loop is not used. See:<a name="line.3271"></a>
-<span class="sourceLineNo">3272</span>        // HBASE-12023 HRegion.applyFamilyMapToMemstore creates too many iterator objects<a name="line.3272"></a>
-<span class="sourceLineNo">3273</span>        assert edits instanceof RandomAccess;<a name="line.3273"></a>
-<span class="sourceLineNo">3274</span>        int listSize = edits.size();<a name="line.3274"></a>
-<span class="sourceLineNo">3275</span>        for (int i=0; i &lt; listSize; i++) {<a name="line.3275"></a>
-<span class="sourceLineNo">3276</span>          Cell cell = edits.get(i);<a name="line.3276"></a>
-<span class="sourceLineNo">3277</span>          walEdit.add(cell);<a name="line.3277"></a>
-<span class="sourceLineNo">3278</span>        }<a name="line.3278"></a>
-<span class="sourceLineNo">3279</span>      }<a name="line.3279"></a>
-<span class="sourceLineNo">3280</span>    }<a name="line.3280"></a>
-<span class="sourceLineNo">3281</span>  }<a name="line.3281"></a>
-<span class="sourceLineNo">3282</span><a name="line.3282"></a>
-<span class="sourceLineNo">3283</span>  /**<a name="line.3283"></a>
-<span class="sourceLineNo">3284</span>   * Batch of mutation operations. Base class is shared with {@link ReplayBatchOperation} as most<a name="line.3284"></a>
-<span class="sourceLineNo">3285</span>   * of the logic is same.<a name="line.3285"></a>
-<span class="sourceLineNo">3286</span>   */<a name="line.3286"></a>
-<span class="sourceLineNo">3287</span>  static class MutationBatchOperation extends BatchOperation&lt;Mutation&gt; {<a name="line.3287"></a>
-<span class="sourceLineNo">3288</span>    private long nonceGroup;<a name="line.3288"></a>
-<span class="sourceLineNo">3289</span>    private long nonce;<a name="line.3289"></a>
-<span class="sourceLineNo">3290</span>    public MutationBatchOperation(final HRegion region, Mutation[] operations, boolean atomic,<a name="line.3290"></a>
-<span class="sourceLineNo">3291</span>        long nonceGroup, long nonce) {<a name="line.3291"></a>
-<span class="sourceLineNo">3292</span>      super(region, operations);<a name="line.3292"></a>
-<span class="sourceLineNo">3293</span>      this.atomic = atomic;<a name="line.3293"></a>
-<span class="sourceLineNo">3294</span>      this.nonceGroup = nonceGroup;<a name="line.3294"></a>
-<span class="sourceLineNo">3295</span>      this.nonce = nonce;<a name="line.3295"></a>
-<span class="sourceLineNo">3296</span>    }<a name="line.3296"></a>
-<span class="sourceLineNo">3297</span><a name="line.3297"></a>
-<span class="sourceLineNo">3298</span>    @Override<a name="line.3298"></a>
-<span class="sourceLineNo">3299</span>    public Mutation getMutation(int index) {<a name="line.3299"></a>
-<span class="sourceLineNo">3300</span>      return this.operations[index];<a name="line.3300"></a>
-<span class="sourceLineNo">3301</span>    }<a name="line.3301"></a>
-<span class="sourceLineNo">3302</span><a name="line.3302"></a>
-<span class="sourceLineNo">3303</span>    @Override<a name="line.3303"></a>
-<span class="sourceLineNo">3304</span>    public long getNonceGroup(int index) {<a name="line.3304"></a>
-<span class="sourceLineNo">3305</span>      return nonceGroup;<a name="line.3305"></a>
-<span class="sourceLineNo">3306</span>    }<a name="line.3306"></a>
-<span class="sourceLineNo">3307</span><a name="line.3

<TRUNCATED>

[48/51] [partial] hbase-site git commit: Published site at .

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/c54c242b/checkstyle.rss
----------------------------------------------------------------------
diff --git a/checkstyle.rss b/checkstyle.rss
index aaf290c..b92c586 100644
--- a/checkstyle.rss
+++ b/checkstyle.rss
@@ -25,8 +25,8 @@ under the License.
     <language>en-us</language>
     <copyright>&#169;2007 - 2017 The Apache Software Foundation</copyright>
     <item>
-      <title>File: 3444,
-             Errors: 20767,
+      <title>File: 3447,
+             Errors: 20747,
              Warnings: 0,
              Infos: 0
       </title>
@@ -5627,7 +5627,7 @@ under the License.
                   0
                 </td>
                 <td>
-                  1
+                  0
                 </td>
               </tr>
                           <tr>
@@ -8371,7 +8371,7 @@ under the License.
                   0
                 </td>
                 <td>
-                  6
+                  5
                 </td>
               </tr>
                           <tr>
@@ -11241,7 +11241,7 @@ under the License.
                   0
                 </td>
                 <td>
-                  15
+                  0
                 </td>
               </tr>
                           <tr>
@@ -14573,7 +14573,7 @@ under the License.
                   0
                 </td>
                 <td>
-                  3
+                  2
                 </td>
               </tr>
                           <tr>
@@ -18199,7 +18199,7 @@ under the License.
                   0
                 </td>
                 <td>
-                  5
+                  4
                 </td>
               </tr>
                           <tr>
@@ -22782,6 +22782,20 @@ under the License.
               </tr>
                           <tr>
                 <td>
+                  <a href="http://hbase.apache.org/checkstyle.html#org.apache.hadoop.hbase.zookeeper.ReadOnlyZKClient.java">org/apache/hadoop/hbase/zookeeper/ReadOnlyZKClient.java</a>
+                </td>
+                <td>
+                  0
+                </td>
+                <td>
+                  0
+                </td>
+                <td>
+                  0
+                </td>
+              </tr>
+                          <tr>
+                <td>
                   <a href="http://hbase.apache.org/checkstyle.html#org.apache.hadoop.hbase.client.RegionReplicaUtil.java">org/apache/hadoop/hbase/client/RegionReplicaUtil.java</a>
                 </td>
                 <td>
@@ -26156,6 +26170,20 @@ under the License.
               </tr>
                           <tr>
                 <td>
+                  <a href="http://hbase.apache.org/checkstyle.html#org.apache.hadoop.hbase.testclassification.ZKTests.java">org/apache/hadoop/hbase/testclassification/ZKTests.java</a>
+                </td>
+                <td>
+                  0
+                </td>
+                <td>
+                  0
+                </td>
+                <td>
+                  0
+                </td>
+              </tr>
+                          <tr>
+                <td>
                   <a href="http://hbase.apache.org/checkstyle.html#org.apache.hadoop.hbase.chaos.actions.RollingBatchRestartRsExceptMetaAction.java">org/apache/hadoop/hbase/chaos/actions/RollingBatchRestartRsExceptMetaAction.java</a>
                 </td>
                 <td>
@@ -33067,7 +33095,7 @@ under the License.
                   0
                 </td>
                 <td>
-                  1
+                  2
                 </td>
               </tr>
                           <tr>
@@ -34369,7 +34397,7 @@ under the License.
                   0
                 </td>
                 <td>
-                  4
+                  2
                 </td>
               </tr>
                           <tr>
@@ -37384,6 +37412,20 @@ under the License.
               </tr>
                           <tr>
                 <td>
+                  <a href="http://hbase.apache.org/checkstyle.html#org.apache.hadoop.hbase.zookeeper.TestReadOnlyZKClient.java">org/apache/hadoop/hbase/zookeeper/TestReadOnlyZKClient.java</a>
+                </td>
+                <td>
+                  0
+                </td>
+                <td>
+                  0
+                </td>
+                <td>
+                  0
+                </td>
+              </tr>
+                          <tr>
+                <td>
                   <a href="http://hbase.apache.org/checkstyle.html#org.apache.hadoop.hbase.client.Cancellable.java">org/apache/hadoop/hbase/client/Cancellable.java</a>
                 </td>
                 <td>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/c54c242b/coc.html
----------------------------------------------------------------------
diff --git a/coc.html b/coc.html
index 9f61a27..fbee962 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="20171202" />
+    <meta name="Date-Revision-yyyymmdd" content="20171203" />
     <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:private@hbase.apache.org">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-12-02</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2017-12-03</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/c54c242b/cygwin.html
----------------------------------------------------------------------
diff --git a/cygwin.html b/cygwin.html
index 0bef6b8..22428f3 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="20171202" />
+    <meta name="Date-Revision-yyyymmdd" content="20171203" />
     <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-12-02</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2017-12-03</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/c54c242b/dependencies.html
----------------------------------------------------------------------
diff --git a/dependencies.html b/dependencies.html
index fd3556e..34edc89 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="20171202" />
+    <meta name="Date-Revision-yyyymmdd" content="20171203" />
     <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" />
@@ -445,7 +445,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2017-12-02</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2017-12-03</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/c54c242b/dependency-convergence.html
----------------------------------------------------------------------
diff --git a/dependency-convergence.html b/dependency-convergence.html
index 260df71..dbffb4b 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="20171202" />
+    <meta name="Date-Revision-yyyymmdd" content="20171203" />
     <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" />
@@ -1008,7 +1008,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2017-12-02</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2017-12-03</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/c54c242b/dependency-info.html
----------------------------------------------------------------------
diff --git a/dependency-info.html b/dependency-info.html
index 00d7ca4..0955f03 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="20171202" />
+    <meta name="Date-Revision-yyyymmdd" content="20171203" />
     <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-12-02</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2017-12-03</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/c54c242b/dependency-management.html
----------------------------------------------------------------------
diff --git a/dependency-management.html b/dependency-management.html
index bed5036..01dcc45 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="20171202" />
+    <meta name="Date-Revision-yyyymmdd" content="20171203" />
     <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" />
@@ -974,7 +974,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2017-12-02</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2017-12-03</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/c54c242b/devapidocs/allclasses-frame.html
----------------------------------------------------------------------
diff --git a/devapidocs/allclasses-frame.html b/devapidocs/allclasses-frame.html
index 1d60909..7001a65 100644
--- a/devapidocs/allclasses-frame.html
+++ b/devapidocs/allclasses-frame.html
@@ -1921,6 +1921,8 @@
 <li><a href="org/apache/hadoop/hbase/types/RawStringTerminated.html" title="class in org.apache.hadoop.hbase.types" target="classFrame">RawStringTerminated</a></li>
 <li><a href="org/apache/hadoop/hbase/regionserver/wal/ReaderBase.html" title="class in org.apache.hadoop.hbase.regionserver.wal" target="classFrame">ReaderBase</a></li>
 <li><a href="org/apache/hadoop/hbase/util/ReadOnlyByteRangeException.html" title="class in org.apache.hadoop.hbase.util" target="classFrame">ReadOnlyByteRangeException</a></li>
+<li><a href="org/apache/hadoop/hbase/zookeeper/ReadOnlyZKClient.html" title="class in org.apache.hadoop.hbase.zookeeper" target="classFrame">ReadOnlyZKClient</a></li>
+<li><a href="org/apache/hadoop/hbase/zookeeper/ReadOnlyZKClient.Task.html" title="class in org.apache.hadoop.hbase.zookeeper" target="classFrame">ReadOnlyZKClient.Task</a></li>
 <li><a href="org/apache/hadoop/hbase/zookeeper/RecoverableZooKeeper.html" title="class in org.apache.hadoop.hbase.zookeeper" target="classFrame">RecoverableZooKeeper</a></li>
 <li><a href="org/apache/hadoop/hbase/replication/regionserver/RecoveredReplicationSource.html" title="class in org.apache.hadoop.hbase.replication.regionserver" target="classFrame">RecoveredReplicationSource</a></li>
 <li><a href="org/apache/hadoop/hbase/replication/regionserver/RecoveredReplicationSourceShipper.html" title="class in org.apache.hadoop.hbase.replication.regionserver" target="classFrame">RecoveredReplicationSourceShipper</a></li>
@@ -2778,7 +2780,6 @@
 <li><a href="org/apache/hadoop/hbase/wal/WAL.Entry.html" title="class in org.apache.hadoop.hbase.wal" target="classFrame">WAL.Entry</a></li>
 <li><a href="org/apache/hadoop/hbase/wal/WAL.Reader.html" title="interface in org.apache.hadoop.hbase.wal" target="classFrame"><span class="interfaceName">WAL.Reader</span></a></li>
 <li><a href="org/apache/hadoop/hbase/regionserver/wal/WALActionsListener.html" title="interface in org.apache.hadoop.hbase.regionserver.wal" target="classFrame"><span class="interfaceName">WALActionsListener</span></a></li>
-<li><a href="org/apache/hadoop/hbase/regionserver/wal/WALActionsListener.Base.html" title="class in org.apache.hadoop.hbase.regionserver.wal" target="classFrame">WALActionsListener.Base</a></li>
 <li><a href="org/apache/hadoop/hbase/regionserver/wal/WALCellCodec.html" title="class in org.apache.hadoop.hbase.regionserver.wal" target="classFrame">WALCellCodec</a></li>
 <li><a href="org/apache/hadoop/hbase/regionserver/wal/WALCellCodec.BaosAndCompressor.html" title="class in org.apache.hadoop.hbase.regionserver.wal" target="classFrame">WALCellCodec.BaosAndCompressor</a></li>
 <li><a href="org/apache/hadoop/hbase/regionserver/wal/WALCellCodec.ByteStringCompressor.html" title="interface in org.apache.hadoop.hbase.regionserver.wal" target="classFrame"><span class="interfaceName">WALCellCodec.ByteStringCompressor</span></a></li>
@@ -2841,7 +2842,7 @@
 <li><a href="org/apache/hadoop/hbase/YouAreDeadException.html" title="class in org.apache.hadoop.hbase" target="classFrame">YouAreDeadException</a></li>
 <li><a href="org/apache/hadoop/hbase/zookeeper/ZKAclReset.html" title="class in org.apache.hadoop.hbase.zookeeper" target="classFrame">ZKAclReset</a></li>
 <li><a href="org/apache/hadoop/hbase/client/ZKAsyncRegistry.html" title="class in org.apache.hadoop.hbase.client" target="classFrame">ZKAsyncRegistry</a></li>
-<li><a href="org/apache/hadoop/hbase/client/ZKAsyncRegistry.CuratorEventProcessor.html" title="interface in org.apache.hadoop.hbase.client" target="classFrame"><span class="interfaceName">ZKAsyncRegistry.CuratorEventProcessor</span></a></li>
+<li><a href="org/apache/hadoop/hbase/client/ZKAsyncRegistry.Converter.html" title="interface in org.apache.hadoop.hbase.client" target="classFrame"><span class="interfaceName">ZKAsyncRegistry.Converter</span></a></li>
 <li><a href="org/apache/hadoop/hbase/zookeeper/ZKClusterId.html" title="class in org.apache.hadoop.hbase.zookeeper" target="classFrame">ZKClusterId</a></li>
 <li><a href="org/apache/hadoop/hbase/zookeeper/ZKConfig.html" title="class in org.apache.hadoop.hbase.zookeeper" target="classFrame">ZKConfig</a></li>
 <li><a href="org/apache/hadoop/hbase/zookeeper/ZKConfig.ZKClusterKey.html" title="class in org.apache.hadoop.hbase.zookeeper" target="classFrame">ZKConfig.ZKClusterKey</a></li>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/c54c242b/devapidocs/allclasses-noframe.html
----------------------------------------------------------------------
diff --git a/devapidocs/allclasses-noframe.html b/devapidocs/allclasses-noframe.html
index 1420a9c..375d4a7 100644
--- a/devapidocs/allclasses-noframe.html
+++ b/devapidocs/allclasses-noframe.html
@@ -1921,6 +1921,8 @@
 <li><a href="org/apache/hadoop/hbase/types/RawStringTerminated.html" title="class in org.apache.hadoop.hbase.types">RawStringTerminated</a></li>
 <li><a href="org/apache/hadoop/hbase/regionserver/wal/ReaderBase.html" title="class in org.apache.hadoop.hbase.regionserver.wal">ReaderBase</a></li>
 <li><a href="org/apache/hadoop/hbase/util/ReadOnlyByteRangeException.html" title="class in org.apache.hadoop.hbase.util">ReadOnlyByteRangeException</a></li>
+<li><a href="org/apache/hadoop/hbase/zookeeper/ReadOnlyZKClient.html" title="class in org.apache.hadoop.hbase.zookeeper">ReadOnlyZKClient</a></li>
+<li><a href="org/apache/hadoop/hbase/zookeeper/ReadOnlyZKClient.Task.html" title="class in org.apache.hadoop.hbase.zookeeper">ReadOnlyZKClient.Task</a></li>
 <li><a href="org/apache/hadoop/hbase/zookeeper/RecoverableZooKeeper.html" title="class in org.apache.hadoop.hbase.zookeeper">RecoverableZooKeeper</a></li>
 <li><a href="org/apache/hadoop/hbase/replication/regionserver/RecoveredReplicationSource.html" title="class in org.apache.hadoop.hbase.replication.regionserver">RecoveredReplicationSource</a></li>
 <li><a href="org/apache/hadoop/hbase/replication/regionserver/RecoveredReplicationSourceShipper.html" title="class in org.apache.hadoop.hbase.replication.regionserver">RecoveredReplicationSourceShipper</a></li>
@@ -2778,7 +2780,6 @@
 <li><a href="org/apache/hadoop/hbase/wal/WAL.Entry.html" title="class in org.apache.hadoop.hbase.wal">WAL.Entry</a></li>
 <li><a href="org/apache/hadoop/hbase/wal/WAL.Reader.html" title="interface in org.apache.hadoop.hbase.wal"><span class="interfaceName">WAL.Reader</span></a></li>
 <li><a href="org/apache/hadoop/hbase/regionserver/wal/WALActionsListener.html" title="interface in org.apache.hadoop.hbase.regionserver.wal"><span class="interfaceName">WALActionsListener</span></a></li>
-<li><a href="org/apache/hadoop/hbase/regionserver/wal/WALActionsListener.Base.html" title="class in org.apache.hadoop.hbase.regionserver.wal">WALActionsListener.Base</a></li>
 <li><a href="org/apache/hadoop/hbase/regionserver/wal/WALCellCodec.html" title="class in org.apache.hadoop.hbase.regionserver.wal">WALCellCodec</a></li>
 <li><a href="org/apache/hadoop/hbase/regionserver/wal/WALCellCodec.BaosAndCompressor.html" title="class in org.apache.hadoop.hbase.regionserver.wal">WALCellCodec.BaosAndCompressor</a></li>
 <li><a href="org/apache/hadoop/hbase/regionserver/wal/WALCellCodec.ByteStringCompressor.html" title="interface in org.apache.hadoop.hbase.regionserver.wal"><span class="interfaceName">WALCellCodec.ByteStringCompressor</span></a></li>
@@ -2841,7 +2842,7 @@
 <li><a href="org/apache/hadoop/hbase/YouAreDeadException.html" title="class in org.apache.hadoop.hbase">YouAreDeadException</a></li>
 <li><a href="org/apache/hadoop/hbase/zookeeper/ZKAclReset.html" title="class in org.apache.hadoop.hbase.zookeeper">ZKAclReset</a></li>
 <li><a href="org/apache/hadoop/hbase/client/ZKAsyncRegistry.html" title="class in org.apache.hadoop.hbase.client">ZKAsyncRegistry</a></li>
-<li><a href="org/apache/hadoop/hbase/client/ZKAsyncRegistry.CuratorEventProcessor.html" title="interface in org.apache.hadoop.hbase.client"><span class="interfaceName">ZKAsyncRegistry.CuratorEventProcessor</span></a></li>
+<li><a href="org/apache/hadoop/hbase/client/ZKAsyncRegistry.Converter.html" title="interface in org.apache.hadoop.hbase.client"><span class="interfaceName">ZKAsyncRegistry.Converter</span></a></li>
 <li><a href="org/apache/hadoop/hbase/zookeeper/ZKClusterId.html" title="class in org.apache.hadoop.hbase.zookeeper">ZKClusterId</a></li>
 <li><a href="org/apache/hadoop/hbase/zookeeper/ZKConfig.html" title="class in org.apache.hadoop.hbase.zookeeper">ZKConfig</a></li>
 <li><a href="org/apache/hadoop/hbase/zookeeper/ZKConfig.ZKClusterKey.html" title="class in org.apache.hadoop.hbase.zookeeper">ZKConfig.ZKClusterKey</a></li>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/c54c242b/devapidocs/constant-values.html
----------------------------------------------------------------------
diff --git a/devapidocs/constant-values.html b/devapidocs/constant-values.html
index d7d47c3..e5ddfff 100644
--- a/devapidocs/constant-values.html
+++ b/devapidocs/constant-values.html
@@ -3705,21 +3705,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>"Sat Dec  2 14:42:12 UTC 2017"</code></td>
+<td class="colLast"><code>"Sun Dec  3 14:42:16 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>"d6a4a3dc331129e949faaaaa134107cb71172928"</code></td>
+<td class="colLast"><code>"7a5b0783068415eaca70ea2ca938ecbfe3bed30f"</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>"f5ac229014b3452e383c1cb180577e57"</code></td>
+<td class="colLast"><code>"30495beff23a8606d12cf6be21433aa2"</code></td>
 </tr>
 <tr class="rowColor">
 <td class="colFirst"><a name="org.apache.hadoop.hbase.Version.url">
@@ -28135,6 +28135,60 @@
 </li>
 <li class="blockList">
 <table class="constantsSummary" border="0" cellpadding="3" cellspacing="0" summary="Constant Field Values table, listing constant fields, and values">
+<caption><span>org.apache.hadoop.hbase.zookeeper.<a href="org/apache/hadoop/hbase/zookeeper/ReadOnlyZKClient.html" title="class in org.apache.hadoop.hbase.zookeeper">ReadOnlyZKClient</a></span><span class="tabEnd">&nbsp;</span></caption>
+<tr>
+<th class="colFirst" scope="col">Modifier and Type</th>
+<th scope="col">Constant Field</th>
+<th class="colLast" scope="col">Value</th>
+</tr>
+<tbody>
+<tr class="altColor">
+<td class="colFirst"><a name="org.apache.hadoop.hbase.zookeeper.ReadOnlyZKClient.DEFAULT_KEEPALIVE_MILLIS">
+<!--   -->
+</a><code>private&nbsp;static&nbsp;final&nbsp;int</code></td>
+<td><code><a href="org/apache/hadoop/hbase/zookeeper/ReadOnlyZKClient.html#DEFAULT_KEEPALIVE_MILLIS">DEFAULT_KEEPALIVE_MILLIS</a></code></td>
+<td class="colLast"><code>60000</code></td>
+</tr>
+<tr class="rowColor">
+<td class="colFirst"><a name="org.apache.hadoop.hbase.zookeeper.ReadOnlyZKClient.DEFAULT_RECOVERY_RETRY">
+<!--   -->
+</a><code>private&nbsp;static&nbsp;final&nbsp;int</code></td>
+<td><code><a href="org/apache/hadoop/hbase/zookeeper/ReadOnlyZKClient.html#DEFAULT_RECOVERY_RETRY">DEFAULT_RECOVERY_RETRY</a></code></td>
+<td class="colLast"><code>30</code></td>
+</tr>
+<tr class="altColor">
+<td class="colFirst"><a name="org.apache.hadoop.hbase.zookeeper.ReadOnlyZKClient.DEFAULT_RECOVERY_RETRY_INTERVAL_MILLIS">
+<!--   -->
+</a><code>private&nbsp;static&nbsp;final&nbsp;int</code></td>
+<td><code><a href="org/apache/hadoop/hbase/zookeeper/ReadOnlyZKClient.html#DEFAULT_RECOVERY_RETRY_INTERVAL_MILLIS">DEFAULT_RECOVERY_RETRY_INTERVAL_MILLIS</a></code></td>
+<td class="colLast"><code>1000</code></td>
+</tr>
+<tr class="rowColor">
+<td class="colFirst"><a name="org.apache.hadoop.hbase.zookeeper.ReadOnlyZKClient.KEEPALIVE_MILLIS">
+<!--   -->
+</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/zookeeper/ReadOnlyZKClient.html#KEEPALIVE_MILLIS">KEEPALIVE_MILLIS</a></code></td>
+<td class="colLast"><code>"zookeeper.keep-alive.time"</code></td>
+</tr>
+<tr class="altColor">
+<td class="colFirst"><a name="org.apache.hadoop.hbase.zookeeper.ReadOnlyZKClient.RECOVERY_RETRY">
+<!--   -->
+</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/zookeeper/ReadOnlyZKClient.html#RECOVERY_RETRY">RECOVERY_RETRY</a></code></td>
+<td class="colLast"><code>"zookeeper.recovery.retry"</code></td>
+</tr>
+<tr class="rowColor">
+<td class="colFirst"><a name="org.apache.hadoop.hbase.zookeeper.ReadOnlyZKClient.RECOVERY_RETRY_INTERVAL_MILLIS">
+<!--   -->
+</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/zookeeper/ReadOnlyZKClient.html#RECOVERY_RETRY_INTERVAL_MILLIS">RECOVERY_RETRY_INTERVAL_MILLIS</a></code></td>
+<td class="colLast"><code>"zookeeper.recovery.retry.intervalmill"</code></td>
+</tr>
+</tbody>
+</table>
+</li>
+<li class="blockList">
+<table class="constantsSummary" border="0" cellpadding="3" cellspacing="0" summary="Constant Field Values table, listing constant fields, and values">
 <caption><span>org.apache.hadoop.hbase.zookeeper.<a href="org/apache/hadoop/hbase/zookeeper/ZKConfig.html" title="class in org.apache.hadoop.hbase.zookeeper">ZKConfig</a></span><span class="tabEnd">&nbsp;</span></caption>
 <tr>
 <th class="colFirst" scope="col">Modifier and Type</th>


[28/51] [partial] hbase-site git commit: Published site at .

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/c54c242b/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/HRegion.FlushResult.Result.html
----------------------------------------------------------------------
diff --git a/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/HRegion.FlushResult.Result.html b/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/HRegion.FlushResult.Result.html
index 3edfbef..9707b2c 100644
--- a/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/HRegion.FlushResult.Result.html
+++ b/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/HRegion.FlushResult.Result.html
@@ -2459,5936 +2459,5935 @@
 <span class="sourceLineNo">2451</span>      }<a name="line.2451"></a>
 <span class="sourceLineNo">2452</span><a name="line.2452"></a>
 <span class="sourceLineNo">2453</span>      for (HStore s : storesToFlush) {<a name="line.2453"></a>
-<span class="sourceLineNo">2454</span>        MemStoreSize flushableSize = s.getFlushableSize();<a name="line.2454"></a>
-<span class="sourceLineNo">2455</span>        totalSizeOfFlushableStores.incMemStoreSize(flushableSize);<a name="line.2455"></a>
-<span class="sourceLineNo">2456</span>        storeFlushCtxs.put(s.getColumnFamilyDescriptor().getName(),<a name="line.2456"></a>
-<span class="sourceLineNo">2457</span>          s.createFlushContext(flushOpSeqId, tracker));<a name="line.2457"></a>
-<span class="sourceLineNo">2458</span>        // for writing stores to WAL<a name="line.2458"></a>
-<span class="sourceLineNo">2459</span>        committedFiles.put(s.getColumnFamilyDescriptor().getName(), null);<a name="line.2459"></a>
-<span class="sourceLineNo">2460</span>        storeFlushableSize.put(s.getColumnFamilyDescriptor().getName(), flushableSize);<a name="line.2460"></a>
-<span class="sourceLineNo">2461</span>      }<a name="line.2461"></a>
-<span class="sourceLineNo">2462</span><a name="line.2462"></a>
-<span class="sourceLineNo">2463</span>      // write the snapshot start to WAL<a name="line.2463"></a>
-<span class="sourceLineNo">2464</span>      if (wal != null &amp;&amp; !writestate.readOnly) {<a name="line.2464"></a>
-<span class="sourceLineNo">2465</span>        FlushDescriptor desc = ProtobufUtil.toFlushDescriptor(FlushAction.START_FLUSH,<a name="line.2465"></a>
-<span class="sourceLineNo">2466</span>            getRegionInfo(), flushOpSeqId, committedFiles);<a name="line.2466"></a>
-<span class="sourceLineNo">2467</span>        // No sync. Sync is below where no updates lock and we do FlushAction.COMMIT_FLUSH<a name="line.2467"></a>
-<span class="sourceLineNo">2468</span>        WALUtil.writeFlushMarker(wal, this.getReplicationScope(), getRegionInfo(), desc, false,<a name="line.2468"></a>
-<span class="sourceLineNo">2469</span>            mvcc);<a name="line.2469"></a>
-<span class="sourceLineNo">2470</span>      }<a name="line.2470"></a>
-<span class="sourceLineNo">2471</span><a name="line.2471"></a>
-<span class="sourceLineNo">2472</span>      // Prepare flush (take a snapshot)<a name="line.2472"></a>
-<span class="sourceLineNo">2473</span>      for (StoreFlushContext flush : storeFlushCtxs.values()) {<a name="line.2473"></a>
-<span class="sourceLineNo">2474</span>        flush.prepare();<a name="line.2474"></a>
-<span class="sourceLineNo">2475</span>      }<a name="line.2475"></a>
-<span class="sourceLineNo">2476</span>    } catch (IOException ex) {<a name="line.2476"></a>
-<span class="sourceLineNo">2477</span>      doAbortFlushToWAL(wal, flushOpSeqId, committedFiles);<a name="line.2477"></a>
-<span class="sourceLineNo">2478</span>      throw ex;<a name="line.2478"></a>
-<span class="sourceLineNo">2479</span>    } finally {<a name="line.2479"></a>
-<span class="sourceLineNo">2480</span>      this.updatesLock.writeLock().unlock();<a name="line.2480"></a>
-<span class="sourceLineNo">2481</span>    }<a name="line.2481"></a>
-<span class="sourceLineNo">2482</span>    String s = "Finished memstore snapshotting " + this + ", syncing WAL and waiting on mvcc, " +<a name="line.2482"></a>
-<span class="sourceLineNo">2483</span>        "flushsize=" + totalSizeOfFlushableStores;<a name="line.2483"></a>
-<span class="sourceLineNo">2484</span>    status.setStatus(s);<a name="line.2484"></a>
-<span class="sourceLineNo">2485</span>    doSyncOfUnflushedWALChanges(wal, getRegionInfo());<a name="line.2485"></a>
-<span class="sourceLineNo">2486</span>    return new PrepareFlushResult(storeFlushCtxs, committedFiles, storeFlushableSize, startTime,<a name="line.2486"></a>
-<span class="sourceLineNo">2487</span>        flushOpSeqId, flushedSeqId, totalSizeOfFlushableStores);<a name="line.2487"></a>
-<span class="sourceLineNo">2488</span>  }<a name="line.2488"></a>
-<span class="sourceLineNo">2489</span><a name="line.2489"></a>
-<span class="sourceLineNo">2490</span>  /**<a name="line.2490"></a>
-<span class="sourceLineNo">2491</span>   * Utility method broken out of internalPrepareFlushCache so that method is smaller.<a name="line.2491"></a>
-<span class="sourceLineNo">2492</span>   */<a name="line.2492"></a>
-<span class="sourceLineNo">2493</span>  private void logFatLineOnFlush(Collection&lt;HStore&gt; storesToFlush, long sequenceId) {<a name="line.2493"></a>
-<span class="sourceLineNo">2494</span>    if (!LOG.isInfoEnabled()) {<a name="line.2494"></a>
-<span class="sourceLineNo">2495</span>      return;<a name="line.2495"></a>
-<span class="sourceLineNo">2496</span>    }<a name="line.2496"></a>
-<span class="sourceLineNo">2497</span>    // Log a fat line detailing what is being flushed.<a name="line.2497"></a>
-<span class="sourceLineNo">2498</span>    StringBuilder perCfExtras = null;<a name="line.2498"></a>
-<span class="sourceLineNo">2499</span>    if (!isAllFamilies(storesToFlush)) {<a name="line.2499"></a>
-<span class="sourceLineNo">2500</span>      perCfExtras = new StringBuilder();<a name="line.2500"></a>
-<span class="sourceLineNo">2501</span>      for (HStore store: storesToFlush) {<a name="line.2501"></a>
-<span class="sourceLineNo">2502</span>        perCfExtras.append("; ").append(store.getColumnFamilyName());<a name="line.2502"></a>
-<span class="sourceLineNo">2503</span>        perCfExtras.append("=")<a name="line.2503"></a>
-<span class="sourceLineNo">2504</span>            .append(StringUtils.byteDesc(store.getFlushableSize().getDataSize()));<a name="line.2504"></a>
-<span class="sourceLineNo">2505</span>      }<a name="line.2505"></a>
-<span class="sourceLineNo">2506</span>    }<a name="line.2506"></a>
-<span class="sourceLineNo">2507</span>    LOG.info("Flushing " + + storesToFlush.size() + "/" + stores.size() +<a name="line.2507"></a>
-<span class="sourceLineNo">2508</span>        " column families, memstore=" + StringUtils.byteDesc(this.memstoreDataSize.get()) +<a name="line.2508"></a>
-<span class="sourceLineNo">2509</span>        ((perCfExtras != null &amp;&amp; perCfExtras.length() &gt; 0)? perCfExtras.toString(): "") +<a name="line.2509"></a>
-<span class="sourceLineNo">2510</span>        ((wal != null) ? "" : "; WAL is null, using passed sequenceid=" + sequenceId));<a name="line.2510"></a>
-<span class="sourceLineNo">2511</span>  }<a name="line.2511"></a>
-<span class="sourceLineNo">2512</span><a name="line.2512"></a>
-<span class="sourceLineNo">2513</span>  private void doAbortFlushToWAL(final WAL wal, final long flushOpSeqId,<a name="line.2513"></a>
-<span class="sourceLineNo">2514</span>      final Map&lt;byte[], List&lt;Path&gt;&gt; committedFiles) {<a name="line.2514"></a>
-<span class="sourceLineNo">2515</span>    if (wal == null) return;<a name="line.2515"></a>
-<span class="sourceLineNo">2516</span>    try {<a name="line.2516"></a>
-<span class="sourceLineNo">2517</span>      FlushDescriptor desc = ProtobufUtil.toFlushDescriptor(FlushAction.ABORT_FLUSH,<a name="line.2517"></a>
-<span class="sourceLineNo">2518</span>          getRegionInfo(), flushOpSeqId, committedFiles);<a name="line.2518"></a>
-<span class="sourceLineNo">2519</span>      WALUtil.writeFlushMarker(wal, this.getReplicationScope(), getRegionInfo(), desc, false,<a name="line.2519"></a>
-<span class="sourceLineNo">2520</span>          mvcc);<a name="line.2520"></a>
-<span class="sourceLineNo">2521</span>    } catch (Throwable t) {<a name="line.2521"></a>
-<span class="sourceLineNo">2522</span>      LOG.warn("Received unexpected exception trying to write ABORT_FLUSH marker to WAL:" +<a name="line.2522"></a>
-<span class="sourceLineNo">2523</span>          StringUtils.stringifyException(t));<a name="line.2523"></a>
-<span class="sourceLineNo">2524</span>      // ignore this since we will be aborting the RS with DSE.<a name="line.2524"></a>
-<span class="sourceLineNo">2525</span>    }<a name="line.2525"></a>
-<span class="sourceLineNo">2526</span>    // we have called wal.startCacheFlush(), now we have to abort it<a name="line.2526"></a>
-<span class="sourceLineNo">2527</span>    wal.abortCacheFlush(this.getRegionInfo().getEncodedNameAsBytes());<a name="line.2527"></a>
-<span class="sourceLineNo">2528</span>  }<a name="line.2528"></a>
-<span class="sourceLineNo">2529</span><a name="line.2529"></a>
-<span class="sourceLineNo">2530</span>  /**<a name="line.2530"></a>
-<span class="sourceLineNo">2531</span>   * Sync unflushed WAL changes. See HBASE-8208 for details<a name="line.2531"></a>
-<span class="sourceLineNo">2532</span>   */<a name="line.2532"></a>
-<span class="sourceLineNo">2533</span>  private static void doSyncOfUnflushedWALChanges(final WAL wal, final RegionInfo hri)<a name="line.2533"></a>
-<span class="sourceLineNo">2534</span>  throws IOException {<a name="line.2534"></a>
-<span class="sourceLineNo">2535</span>    if (wal == null) {<a name="line.2535"></a>
-<span class="sourceLineNo">2536</span>      return;<a name="line.2536"></a>
-<span class="sourceLineNo">2537</span>    }<a name="line.2537"></a>
-<span class="sourceLineNo">2538</span>    try {<a name="line.2538"></a>
-<span class="sourceLineNo">2539</span>      wal.sync(); // ensure that flush marker is sync'ed<a name="line.2539"></a>
-<span class="sourceLineNo">2540</span>    } catch (IOException ioe) {<a name="line.2540"></a>
-<span class="sourceLineNo">2541</span>      wal.abortCacheFlush(hri.getEncodedNameAsBytes());<a name="line.2541"></a>
-<span class="sourceLineNo">2542</span>      throw ioe;<a name="line.2542"></a>
-<span class="sourceLineNo">2543</span>    }<a name="line.2543"></a>
-<span class="sourceLineNo">2544</span>  }<a name="line.2544"></a>
-<span class="sourceLineNo">2545</span><a name="line.2545"></a>
-<span class="sourceLineNo">2546</span>  /**<a name="line.2546"></a>
-<span class="sourceLineNo">2547</span>   * @return True if passed Set is all families in the region.<a name="line.2547"></a>
-<span class="sourceLineNo">2548</span>   */<a name="line.2548"></a>
-<span class="sourceLineNo">2549</span>  private boolean isAllFamilies(Collection&lt;HStore&gt; families) {<a name="line.2549"></a>
-<span class="sourceLineNo">2550</span>    return families == null || this.stores.size() == families.size();<a name="line.2550"></a>
-<span class="sourceLineNo">2551</span>  }<a name="line.2551"></a>
-<span class="sourceLineNo">2552</span><a name="line.2552"></a>
-<span class="sourceLineNo">2553</span>  /**<a name="line.2553"></a>
-<span class="sourceLineNo">2554</span>   * Writes a marker to WAL indicating a flush is requested but cannot be complete due to various<a name="line.2554"></a>
-<span class="sourceLineNo">2555</span>   * reasons. Ignores exceptions from WAL. Returns whether the write succeeded.<a name="line.2555"></a>
-<span class="sourceLineNo">2556</span>   * @param wal<a name="line.2556"></a>
-<span class="sourceLineNo">2557</span>   * @return whether WAL write was successful<a name="line.2557"></a>
-<span class="sourceLineNo">2558</span>   */<a name="line.2558"></a>
-<span class="sourceLineNo">2559</span>  private boolean writeFlushRequestMarkerToWAL(WAL wal, boolean writeFlushWalMarker) {<a name="line.2559"></a>
-<span class="sourceLineNo">2560</span>    if (writeFlushWalMarker &amp;&amp; wal != null &amp;&amp; !writestate.readOnly) {<a name="line.2560"></a>
-<span class="sourceLineNo">2561</span>      FlushDescriptor desc = ProtobufUtil.toFlushDescriptor(FlushAction.CANNOT_FLUSH,<a name="line.2561"></a>
-<span class="sourceLineNo">2562</span>        getRegionInfo(), -1, new TreeMap&lt;&gt;(Bytes.BYTES_COMPARATOR));<a name="line.2562"></a>
-<span class="sourceLineNo">2563</span>      try {<a name="line.2563"></a>
-<span class="sourceLineNo">2564</span>        WALUtil.writeFlushMarker(wal, this.getReplicationScope(), getRegionInfo(), desc, true,<a name="line.2564"></a>
-<span class="sourceLineNo">2565</span>            mvcc);<a name="line.2565"></a>
-<span class="sourceLineNo">2566</span>        return true;<a name="line.2566"></a>
-<span class="sourceLineNo">2567</span>      } catch (IOException e) {<a name="line.2567"></a>
-<span class="sourceLineNo">2568</span>        LOG.warn(getRegionInfo().getEncodedName() + " : "<a name="line.2568"></a>
-<span class="sourceLineNo">2569</span>            + "Received exception while trying to write the flush request to wal", e);<a name="line.2569"></a>
-<span class="sourceLineNo">2570</span>      }<a name="line.2570"></a>
-<span class="sourceLineNo">2571</span>    }<a name="line.2571"></a>
-<span class="sourceLineNo">2572</span>    return false;<a name="line.2572"></a>
-<span class="sourceLineNo">2573</span>  }<a name="line.2573"></a>
-<span class="sourceLineNo">2574</span><a name="line.2574"></a>
-<span class="sourceLineNo">2575</span>  @edu.umd.cs.findbugs.annotations.SuppressWarnings(value="NN_NAKED_NOTIFY",<a name="line.2575"></a>
-<span class="sourceLineNo">2576</span>      justification="Intentional; notify is about completed flush")<a name="line.2576"></a>
-<span class="sourceLineNo">2577</span>  protected FlushResultImpl internalFlushCacheAndCommit(WAL wal, MonitoredTask status,<a name="line.2577"></a>
-<span class="sourceLineNo">2578</span>      PrepareFlushResult prepareResult, Collection&lt;HStore&gt; storesToFlush) throws IOException {<a name="line.2578"></a>
-<span class="sourceLineNo">2579</span>    // prepare flush context is carried via PrepareFlushResult<a name="line.2579"></a>
-<span class="sourceLineNo">2580</span>    TreeMap&lt;byte[], StoreFlushContext&gt; storeFlushCtxs = prepareResult.storeFlushCtxs;<a name="line.2580"></a>
-<span class="sourceLineNo">2581</span>    TreeMap&lt;byte[], List&lt;Path&gt;&gt; committedFiles = prepareResult.committedFiles;<a name="line.2581"></a>
-<span class="sourceLineNo">2582</span>    long startTime = prepareResult.startTime;<a name="line.2582"></a>
-<span class="sourceLineNo">2583</span>    long flushOpSeqId = prepareResult.flushOpSeqId;<a name="line.2583"></a>
-<span class="sourceLineNo">2584</span>    long flushedSeqId = prepareResult.flushedSeqId;<a name="line.2584"></a>
-<span class="sourceLineNo">2585</span><a name="line.2585"></a>
-<span class="sourceLineNo">2586</span>    String s = "Flushing stores of " + this;<a name="line.2586"></a>
-<span class="sourceLineNo">2587</span>    status.setStatus(s);<a name="line.2587"></a>
-<span class="sourceLineNo">2588</span>    if (LOG.isTraceEnabled()) LOG.trace(s);<a name="line.2588"></a>
-<span class="sourceLineNo">2589</span><a name="line.2589"></a>
-<span class="sourceLineNo">2590</span>    // Any failure from here on out will be catastrophic requiring server<a name="line.2590"></a>
-<span class="sourceLineNo">2591</span>    // restart so wal content can be replayed and put back into the memstore.<a name="line.2591"></a>
-<span class="sourceLineNo">2592</span>    // Otherwise, the snapshot content while backed up in the wal, it will not<a name="line.2592"></a>
-<span class="sourceLineNo">2593</span>    // be part of the current running servers state.<a name="line.2593"></a>
-<span class="sourceLineNo">2594</span>    boolean compactionRequested = false;<a name="line.2594"></a>
-<span class="sourceLineNo">2595</span>    long flushedOutputFileSize = 0;<a name="line.2595"></a>
-<span class="sourceLineNo">2596</span>    try {<a name="line.2596"></a>
-<span class="sourceLineNo">2597</span>      // A.  Flush memstore to all the HStores.<a name="line.2597"></a>
-<span class="sourceLineNo">2598</span>      // Keep running vector of all store files that includes both old and the<a name="line.2598"></a>
-<span class="sourceLineNo">2599</span>      // just-made new flush store file. The new flushed file is still in the<a name="line.2599"></a>
-<span class="sourceLineNo">2600</span>      // tmp directory.<a name="line.2600"></a>
-<span class="sourceLineNo">2601</span><a name="line.2601"></a>
-<span class="sourceLineNo">2602</span>      for (StoreFlushContext flush : storeFlushCtxs.values()) {<a name="line.2602"></a>
-<span class="sourceLineNo">2603</span>        flush.flushCache(status);<a name="line.2603"></a>
-<span class="sourceLineNo">2604</span>      }<a name="line.2604"></a>
-<span class="sourceLineNo">2605</span><a name="line.2605"></a>
-<span class="sourceLineNo">2606</span>      // Switch snapshot (in memstore) -&gt; new hfile (thus causing<a name="line.2606"></a>
-<span class="sourceLineNo">2607</span>      // all the store scanners to reset/reseek).<a name="line.2607"></a>
-<span class="sourceLineNo">2608</span>      Iterator&lt;HStore&gt; it = storesToFlush.iterator();<a name="line.2608"></a>
-<span class="sourceLineNo">2609</span>      // stores.values() and storeFlushCtxs have same order<a name="line.2609"></a>
-<span class="sourceLineNo">2610</span>      for (StoreFlushContext flush : storeFlushCtxs.values()) {<a name="line.2610"></a>
-<span class="sourceLineNo">2611</span>        boolean needsCompaction = flush.commit(status);<a name="line.2611"></a>
-<span class="sourceLineNo">2612</span>        if (needsCompaction) {<a name="line.2612"></a>
-<span class="sourceLineNo">2613</span>          compactionRequested = true;<a name="line.2613"></a>
-<span class="sourceLineNo">2614</span>        }<a name="line.2614"></a>
-<span class="sourceLineNo">2615</span>        byte[] storeName = it.next().getColumnFamilyDescriptor().getName();<a name="line.2615"></a>
-<span class="sourceLineNo">2616</span>        List&lt;Path&gt; storeCommittedFiles = flush.getCommittedFiles();<a name="line.2616"></a>
-<span class="sourceLineNo">2617</span>        committedFiles.put(storeName, storeCommittedFiles);<a name="line.2617"></a>
-<span class="sourceLineNo">2618</span>        // Flush committed no files, indicating flush is empty or flush was canceled<a name="line.2618"></a>
-<span class="sourceLineNo">2619</span>        if (storeCommittedFiles == null || storeCommittedFiles.isEmpty()) {<a name="line.2619"></a>
-<span class="sourceLineNo">2620</span>          MemStoreSize storeFlushableSize = prepareResult.storeFlushableSize.get(storeName);<a name="line.2620"></a>
-<span class="sourceLineNo">2621</span>          prepareResult.totalFlushableSize.decMemStoreSize(storeFlushableSize);<a name="line.2621"></a>
-<span class="sourceLineNo">2622</span>        }<a name="line.2622"></a>
-<span class="sourceLineNo">2623</span>        flushedOutputFileSize += flush.getOutputFileSize();<a name="line.2623"></a>
-<span class="sourceLineNo">2624</span>      }<a name="line.2624"></a>
-<span class="sourceLineNo">2625</span>      storeFlushCtxs.clear();<a name="line.2625"></a>
-<span class="sourceLineNo">2626</span><a name="line.2626"></a>
-<span class="sourceLineNo">2627</span>      // Set down the memstore size by amount of flush.<a name="line.2627"></a>
-<span class="sourceLineNo">2628</span>      this.decrMemStoreSize(prepareResult.totalFlushableSize);<a name="line.2628"></a>
-<span class="sourceLineNo">2629</span><a name="line.2629"></a>
-<span class="sourceLineNo">2630</span>      if (wal != null) {<a name="line.2630"></a>
-<span class="sourceLineNo">2631</span>        // write flush marker to WAL. If fail, we should throw DroppedSnapshotException<a name="line.2631"></a>
-<span class="sourceLineNo">2632</span>        FlushDescriptor desc = ProtobufUtil.toFlushDescriptor(FlushAction.COMMIT_FLUSH,<a name="line.2632"></a>
-<span class="sourceLineNo">2633</span>          getRegionInfo(), flushOpSeqId, committedFiles);<a name="line.2633"></a>
-<span class="sourceLineNo">2634</span>        WALUtil.writeFlushMarker(wal, this.getReplicationScope(), getRegionInfo(), desc, true,<a name="line.2634"></a>
-<span class="sourceLineNo">2635</span>            mvcc);<a name="line.2635"></a>
-<span class="sourceLineNo">2636</span>      }<a name="line.2636"></a>
-<span class="sourceLineNo">2637</span>    } catch (Throwable t) {<a name="line.2637"></a>
-<span class="sourceLineNo">2638</span>      // An exception here means that the snapshot was not persisted.<a name="line.2638"></a>
-<span class="sourceLineNo">2639</span>      // The wal needs to be replayed so its content is restored to memstore.<a name="line.2639"></a>
-<span class="sourceLineNo">2640</span>      // Currently, only a server restart will do this.<a name="line.2640"></a>
-<span class="sourceLineNo">2641</span>      // We used to only catch IOEs but its possible that we'd get other<a name="line.2641"></a>
-<span class="sourceLineNo">2642</span>      // exceptions -- e.g. HBASE-659 was about an NPE -- so now we catch<a name="line.2642"></a>
-<span class="sourceLineNo">2643</span>      // all and sundry.<a name="line.2643"></a>
-<span class="sourceLineNo">2644</span>      if (wal != null) {<a name="line.2644"></a>
-<span class="sourceLineNo">2645</span>        try {<a name="line.2645"></a>
-<span class="sourceLineNo">2646</span>          FlushDescriptor desc = ProtobufUtil.toFlushDescriptor(FlushAction.ABORT_FLUSH,<a name="line.2646"></a>
-<span class="sourceLineNo">2647</span>            getRegionInfo(), flushOpSeqId, committedFiles);<a name="line.2647"></a>
-<span class="sourceLineNo">2648</span>          WALUtil.writeFlushMarker(wal, this.replicationScope, getRegionInfo(), desc, false, mvcc);<a name="line.2648"></a>
-<span class="sourceLineNo">2649</span>        } catch (Throwable ex) {<a name="line.2649"></a>
-<span class="sourceLineNo">2650</span>          LOG.warn(getRegionInfo().getEncodedName() + " : "<a name="line.2650"></a>
-<span class="sourceLineNo">2651</span>              + "failed writing ABORT_FLUSH marker to WAL", ex);<a name="line.2651"></a>
-<span class="sourceLineNo">2652</span>          // ignore this since we will be aborting the RS with DSE.<a name="line.2652"></a>
-<span class="sourceLineNo">2653</span>        }<a name="line.2653"></a>
-<span class="sourceLineNo">2654</span>        wal.abortCacheFlush(this.getRegionInfo().getEncodedNameAsBytes());<a name="line.2654"></a>
-<span class="sourceLineNo">2655</span>      }<a name="line.2655"></a>
-<span class="sourceLineNo">2656</span>      DroppedSnapshotException dse = new DroppedSnapshotException("region: " +<a name="line.2656"></a>
-<span class="sourceLineNo">2657</span>          Bytes.toStringBinary(getRegionInfo().getRegionName()));<a name="line.2657"></a>
-<span class="sourceLineNo">2658</span>      dse.initCause(t);<a name="line.2658"></a>
-<span class="sourceLineNo">2659</span>      status.abort("Flush failed: " + StringUtils.stringifyException(t));<a name="line.2659"></a>
-<span class="sourceLineNo">2660</span><a name="line.2660"></a>
-<span class="sourceLineNo">2661</span>      // Callers for flushcache() should catch DroppedSnapshotException and abort the region server.<a name="line.2661"></a>
-<span class="sourceLineNo">2662</span>      // However, since we may have the region read lock, we cannot call close(true) here since<a name="line.2662"></a>
-<span class="sourceLineNo">2663</span>      // we cannot promote to a write lock. Instead we are setting closing so that all other region<a name="line.2663"></a>
-<span class="sourceLineNo">2664</span>      // operations except for close will be rejected.<a name="line.2664"></a>
-<span class="sourceLineNo">2665</span>      this.closing.set(true);<a name="line.2665"></a>
-<span class="sourceLineNo">2666</span><a name="line.2666"></a>
-<span class="sourceLineNo">2667</span>      if (rsServices != null) {<a name="line.2667"></a>
-<span class="sourceLineNo">2668</span>        // This is a safeguard against the case where the caller fails to explicitly handle aborting<a name="line.2668"></a>
-<span class="sourceLineNo">2669</span>        rsServices.abort("Replay of WAL required. Forcing server shutdown", dse);<a name="line.2669"></a>
-<span class="sourceLineNo">2670</span>      }<a name="line.2670"></a>
-<span class="sourceLineNo">2671</span><a name="line.2671"></a>
-<span class="sourceLineNo">2672</span>      throw dse;<a name="line.2672"></a>
-<span class="sourceLineNo">2673</span>    }<a name="line.2673"></a>
-<span class="sourceLineNo">2674</span><a name="line.2674"></a>
-<span class="sourceLineNo">2675</span>    // If we get to here, the HStores have been written.<a name="line.2675"></a>
-<span class="sourceLineNo">2676</span>    if (wal != null) {<a name="line.2676"></a>
-<span class="sourceLineNo">2677</span>      wal.completeCacheFlush(this.getRegionInfo().getEncodedNameAsBytes());<a name="line.2677"></a>
-<span class="sourceLineNo">2678</span>    }<a name="line.2678"></a>
-<span class="sourceLineNo">2679</span><a name="line.2679"></a>
-<span class="sourceLineNo">2680</span>    // Record latest flush time<a name="line.2680"></a>
-<span class="sourceLineNo">2681</span>    for (HStore store: storesToFlush) {<a name="line.2681"></a>
-<span class="sourceLineNo">2682</span>      this.lastStoreFlushTimeMap.put(store, startTime);<a name="line.2682"></a>
-<span class="sourceLineNo">2683</span>    }<a name="line.2683"></a>
-<span class="sourceLineNo">2684</span><a name="line.2684"></a>
-<span class="sourceLineNo">2685</span>    this.maxFlushedSeqId = flushedSeqId;<a name="line.2685"></a>
-<span class="sourceLineNo">2686</span>    this.lastFlushOpSeqId = flushOpSeqId;<a name="line.2686"></a>
-<span class="sourceLineNo">2687</span><a name="line.2687"></a>
-<span class="sourceLineNo">2688</span>    // C. Finally notify anyone waiting on memstore to clear:<a name="line.2688"></a>
-<span class="sourceLineNo">2689</span>    // e.g. checkResources().<a name="line.2689"></a>
-<span class="sourceLineNo">2690</span>    synchronized (this) {<a name="line.2690"></a>
-<span class="sourceLineNo">2691</span>      notifyAll(); // FindBugs NN_NAKED_NOTIFY<a name="line.2691"></a>
-<span class="sourceLineNo">2692</span>    }<a name="line.2692"></a>
-<span class="sourceLineNo">2693</span><a name="line.2693"></a>
-<span class="sourceLineNo">2694</span>    long time = EnvironmentEdgeManager.currentTime() - startTime;<a name="line.2694"></a>
-<span class="sourceLineNo">2695</span>    long memstoresize = this.memstoreDataSize.get();<a name="line.2695"></a>
-<span class="sourceLineNo">2696</span>    String msg = "Finished memstore flush of ~"<a name="line.2696"></a>
-<span class="sourceLineNo">2697</span>        + StringUtils.byteDesc(prepareResult.totalFlushableSize.getDataSize()) + "/"<a name="line.2697"></a>
-<span class="sourceLineNo">2698</span>        + prepareResult.totalFlushableSize.getDataSize() + ", currentsize="<a name="line.2698"></a>
-<span class="sourceLineNo">2699</span>        + StringUtils.byteDesc(memstoresize) + "/" + memstoresize<a name="line.2699"></a>
-<span class="sourceLineNo">2700</span>        + " for region " + this + " in " + time + "ms, sequenceid="<a name="line.2700"></a>
-<span class="sourceLineNo">2701</span>        + flushOpSeqId +  ", compaction requested=" + compactionRequested<a name="line.2701"></a>
-<span class="sourceLineNo">2702</span>        + ((wal == null) ? "; wal=null" : "");<a name="line.2702"></a>
-<span class="sourceLineNo">2703</span>    LOG.info(msg);<a name="line.2703"></a>
-<span class="sourceLineNo">2704</span>    status.setStatus(msg);<a name="line.2704"></a>
-<span class="sourceLineNo">2705</span><a name="line.2705"></a>
-<span class="sourceLineNo">2706</span>    if (rsServices != null &amp;&amp; rsServices.getMetrics() != null) {<a name="line.2706"></a>
-<span class="sourceLineNo">2707</span>      rsServices.getMetrics().updateFlush(time - startTime,<a name="line.2707"></a>
-<span class="sourceLineNo">2708</span>          prepareResult.totalFlushableSize.getDataSize(), flushedOutputFileSize);<a name="line.2708"></a>
-<span class="sourceLineNo">2709</span>    }<a name="line.2709"></a>
-<span class="sourceLineNo">2710</span><a name="line.2710"></a>
-<span class="sourceLineNo">2711</span>    return new FlushResultImpl(compactionRequested ?<a name="line.2711"></a>
-<span class="sourceLineNo">2712</span>        FlushResult.Result.FLUSHED_COMPACTION_NEEDED :<a name="line.2712"></a>
-<span class="sourceLineNo">2713</span>          FlushResult.Result.FLUSHED_NO_COMPACTION_NEEDED, flushOpSeqId);<a name="line.2713"></a>
-<span class="sourceLineNo">2714</span>  }<a name="line.2714"></a>
-<span class="sourceLineNo">2715</span><a name="line.2715"></a>
-<span class="sourceLineNo">2716</span>  /**<a name="line.2716"></a>
-<span class="sourceLineNo">2717</span>   * Method to safely get the next sequence number.<a name="line.2717"></a>
-<span class="sourceLineNo">2718</span>   * @return Next sequence number unassociated with any actual edit.<a name="line.2718"></a>
-<span class="sourceLineNo">2719</span>   * @throws IOException<a name="line.2719"></a>
-<span class="sourceLineNo">2720</span>   */<a name="line.2720"></a>
-<span class="sourceLineNo">2721</span>  @VisibleForTesting<a name="line.2721"></a>
-<span class="sourceLineNo">2722</span>  protected long getNextSequenceId(final WAL wal) throws IOException {<a name="line.2722"></a>
-<span class="sourceLineNo">2723</span>    WriteEntry we = mvcc.begin();<a name="line.2723"></a>
-<span class="sourceLineNo">2724</span>    mvcc.completeAndWait(we);<a name="line.2724"></a>
-<span class="sourceLineNo">2725</span>    return we.getWriteNumber();<a name="line.2725"></a>
-<span class="sourceLineNo">2726</span>  }<a name="line.2726"></a>
-<span class="sourceLineNo">2727</span><a name="line.2727"></a>
-<span class="sourceLineNo">2728</span>  //////////////////////////////////////////////////////////////////////////////<a name="line.2728"></a>
-<span class="sourceLineNo">2729</span>  // get() methods for client use.<a name="line.2729"></a>
-<span class="sourceLineNo">2730</span>  //////////////////////////////////////////////////////////////////////////////<a name="line.2730"></a>
-<span class="sourceLineNo">2731</span><a name="line.2731"></a>
-<span class="sourceLineNo">2732</span>  @Override<a name="line.2732"></a>
-<span class="sourceLineNo">2733</span>  public RegionScannerImpl getScanner(Scan scan) throws IOException {<a name="line.2733"></a>
-<span class="sourceLineNo">2734</span>   return getScanner(scan, null);<a name="line.2734"></a>
-<span class="sourceLineNo">2735</span>  }<a name="line.2735"></a>
-<span class="sourceLineNo">2736</span><a name="line.2736"></a>
-<span class="sourceLineNo">2737</span>  @Override<a name="line.2737"></a>
-<span class="sourceLineNo">2738</span>  public RegionScannerImpl getScanner(Scan scan, List&lt;KeyValueScanner&gt; additionalScanners)<a name="line.2738"></a>
-<span class="sourceLineNo">2739</span>      throws IOException {<a name="line.2739"></a>
-<span class="sourceLineNo">2740</span>    return getScanner(scan, additionalScanners, HConstants.NO_NONCE, HConstants.NO_NONCE);<a name="line.2740"></a>
-<span class="sourceLineNo">2741</span>  }<a name="line.2741"></a>
-<span class="sourceLineNo">2742</span><a name="line.2742"></a>
-<span class="sourceLineNo">2743</span>  private RegionScannerImpl getScanner(Scan scan, List&lt;KeyValueScanner&gt; additionalScanners,<a name="line.2743"></a>
-<span class="sourceLineNo">2744</span>      long nonceGroup, long nonce) throws IOException {<a name="line.2744"></a>
-<span class="sourceLineNo">2745</span>    startRegionOperation(Operation.SCAN);<a name="line.2745"></a>
-<span class="sourceLineNo">2746</span>    try {<a name="line.2746"></a>
-<span class="sourceLineNo">2747</span>      // Verify families are all valid<a name="line.2747"></a>
-<span class="sourceLineNo">2748</span>      if (!scan.hasFamilies()) {<a name="line.2748"></a>
-<span class="sourceLineNo">2749</span>        // Adding all families to scanner<a name="line.2749"></a>
-<span class="sourceLineNo">2750</span>        for (byte[] family : this.htableDescriptor.getColumnFamilyNames()) {<a name="line.2750"></a>
-<span class="sourceLineNo">2751</span>          scan.addFamily(family);<a name="line.2751"></a>
-<span class="sourceLineNo">2752</span>        }<a name="line.2752"></a>
-<span class="sourceLineNo">2753</span>      } else {<a name="line.2753"></a>
-<span class="sourceLineNo">2754</span>        for (byte[] family : scan.getFamilyMap().keySet()) {<a name="line.2754"></a>
-<span class="sourceLineNo">2755</span>          checkFamily(family);<a name="line.2755"></a>
-<span class="sourceLineNo">2756</span>        }<a name="line.2756"></a>
-<span class="sourceLineNo">2757</span>      }<a name="line.2757"></a>
-<span class="sourceLineNo">2758</span>      return instantiateRegionScanner(scan, additionalScanners, nonceGroup, nonce);<a name="line.2758"></a>
-<span class="sourceLineNo">2759</span>    } finally {<a name="line.2759"></a>
-<span class="sourceLineNo">2760</span>      closeRegionOperation(Operation.SCAN);<a name="line.2760"></a>
-<span class="sourceLineNo">2761</span>    }<a name="line.2761"></a>
-<span class="sourceLineNo">2762</span>  }<a name="line.2762"></a>
-<span class="sourceLineNo">2763</span><a name="line.2763"></a>
-<span class="sourceLineNo">2764</span>  protected RegionScanner instantiateRegionScanner(Scan scan,<a name="line.2764"></a>
-<span class="sourceLineNo">2765</span>      List&lt;KeyValueScanner&gt; additionalScanners) throws IOException {<a name="line.2765"></a>
-<span class="sourceLineNo">2766</span>    return instantiateRegionScanner(scan, additionalScanners, HConstants.NO_NONCE,<a name="line.2766"></a>
-<span class="sourceLineNo">2767</span>      HConstants.NO_NONCE);<a name="line.2767"></a>
-<span class="sourceLineNo">2768</span>  }<a name="line.2768"></a>
-<span class="sourceLineNo">2769</span><a name="line.2769"></a>
-<span class="sourceLineNo">2770</span>  protected RegionScannerImpl instantiateRegionScanner(Scan scan,<a name="line.2770"></a>
-<span class="sourceLineNo">2771</span>      List&lt;KeyValueScanner&gt; additionalScanners, long nonceGroup, long nonce) throws IOException {<a name="line.2771"></a>
-<span class="sourceLineNo">2772</span>    if (scan.isReversed()) {<a name="line.2772"></a>
-<span class="sourceLineNo">2773</span>      if (scan.getFilter() != null) {<a name="line.2773"></a>
-<span class="sourceLineNo">2774</span>        scan.getFilter().setReversed(true);<a name="line.2774"></a>
-<span class="sourceLineNo">2775</span>      }<a name="line.2775"></a>
-<span class="sourceLineNo">2776</span>      return new ReversedRegionScannerImpl(scan, additionalScanners, this);<a name="line.2776"></a>
-<span class="sourceLineNo">2777</span>    }<a name="line.2777"></a>
-<span class="sourceLineNo">2778</span>    return new RegionScannerImpl(scan, additionalScanners, this, nonceGroup, nonce);<a name="line.2778"></a>
-<span class="sourceLineNo">2779</span>  }<a name="line.2779"></a>
-<span class="sourceLineNo">2780</span><a name="line.2780"></a>
-<span class="sourceLineNo">2781</span>  /**<a name="line.2781"></a>
-<span class="sourceLineNo">2782</span>   * Prepare a delete for a row mutation processor<a name="line.2782"></a>
-<span class="sourceLineNo">2783</span>   * @param delete The passed delete is modified by this method. WARNING!<a name="line.2783"></a>
-<span class="sourceLineNo">2784</span>   * @throws IOException<a name="line.2784"></a>
-<span class="sourceLineNo">2785</span>   */<a name="line.2785"></a>
-<span class="sourceLineNo">2786</span>  public void prepareDelete(Delete delete) throws IOException {<a name="line.2786"></a>
-<span class="sourceLineNo">2787</span>    // Check to see if this is a deleteRow insert<a name="line.2787"></a>
-<span class="sourceLineNo">2788</span>    if(delete.getFamilyCellMap().isEmpty()){<a name="line.2788"></a>
-<span class="sourceLineNo">2789</span>      for(byte [] family : this.htableDescriptor.getColumnFamilyNames()){<a name="line.2789"></a>
-<span class="sourceLineNo">2790</span>        // Don't eat the timestamp<a name="line.2790"></a>
-<span class="sourceLineNo">2791</span>        delete.addFamily(family, delete.getTimeStamp());<a name="line.2791"></a>
-<span class="sourceLineNo">2792</span>      }<a name="line.2792"></a>
-<span class="sourceLineNo">2793</span>    } else {<a name="line.2793"></a>
-<span class="sourceLineNo">2794</span>      for(byte [] family : delete.getFamilyCellMap().keySet()) {<a name="line.2794"></a>
-<span class="sourceLineNo">2795</span>        if(family == null) {<a name="line.2795"></a>
-<span class="sourceLineNo">2796</span>          throw new NoSuchColumnFamilyException("Empty family is invalid");<a name="line.2796"></a>
-<span class="sourceLineNo">2797</span>        }<a name="line.2797"></a>
-<span class="sourceLineNo">2798</span>        checkFamily(family);<a name="line.2798"></a>
-<span class="sourceLineNo">2799</span>      }<a name="line.2799"></a>
-<span class="sourceLineNo">2800</span>    }<a name="line.2800"></a>
-<span class="sourceLineNo">2801</span>  }<a name="line.2801"></a>
-<span class="sourceLineNo">2802</span><a name="line.2802"></a>
-<span class="sourceLineNo">2803</span>  @Override<a name="line.2803"></a>
-<span class="sourceLineNo">2804</span>  public void delete(Delete delete) throws IOException {<a name="line.2804"></a>
-<span class="sourceLineNo">2805</span>    checkReadOnly();<a name="line.2805"></a>
-<span class="sourceLineNo">2806</span>    checkResources();<a name="line.2806"></a>
-<span class="sourceLineNo">2807</span>    startRegionOperation(Operation.DELETE);<a name="line.2807"></a>
-<span class="sourceLineNo">2808</span>    try {<a name="line.2808"></a>
-<span class="sourceLineNo">2809</span>      // All edits for the given row (across all column families) must happen atomically.<a name="line.2809"></a>
-<span class="sourceLineNo">2810</span>      doBatchMutate(delete);<a name="line.2810"></a>
-<span class="sourceLineNo">2811</span>    } finally {<a name="line.2811"></a>
-<span class="sourceLineNo">2812</span>      closeRegionOperation(Operation.DELETE);<a name="line.2812"></a>
-<span class="sourceLineNo">2813</span>    }<a name="line.2813"></a>
-<span class="sourceLineNo">2814</span>  }<a name="line.2814"></a>
-<span class="sourceLineNo">2815</span><a name="line.2815"></a>
-<span class="sourceLineNo">2816</span>  /**<a name="line.2816"></a>
-<span class="sourceLineNo">2817</span>   * Row needed by below method.<a name="line.2817"></a>
-<span class="sourceLineNo">2818</span>   */<a name="line.2818"></a>
-<span class="sourceLineNo">2819</span>  private static final byte [] FOR_UNIT_TESTS_ONLY = Bytes.toBytes("ForUnitTestsOnly");<a name="line.2819"></a>
-<span class="sourceLineNo">2820</span><a name="line.2820"></a>
-<span class="sourceLineNo">2821</span>  /**<a name="line.2821"></a>
-<span class="sourceLineNo">2822</span>   * This is used only by unit tests. Not required to be a public API.<a name="line.2822"></a>
-<span class="sourceLineNo">2823</span>   * @param familyMap map of family to edits for the given family.<a name="line.2823"></a>
-<span class="sourceLineNo">2824</span>   * @throws IOException<a name="line.2824"></a>
-<span class="sourceLineNo">2825</span>   */<a name="line.2825"></a>
-<span class="sourceLineNo">2826</span>  void delete(NavigableMap&lt;byte[], List&lt;Cell&gt;&gt; familyMap,<a name="line.2826"></a>
-<span class="sourceLineNo">2827</span>      Durability durability) throws IOException {<a name="line.2827"></a>
-<span class="sourceLineNo">2828</span>    Delete delete = new Delete(FOR_UNIT_TESTS_ONLY);<a name="line.2828"></a>
-<span class="sourceLineNo">2829</span>    delete.setFamilyCellMap(familyMap);<a name="line.2829"></a>
-<span class="sourceLineNo">2830</span>    delete.setDurability(durability);<a name="line.2830"></a>
-<span class="sourceLineNo">2831</span>    doBatchMutate(delete);<a name="line.2831"></a>
-<span class="sourceLineNo">2832</span>  }<a name="line.2832"></a>
-<span class="sourceLineNo">2833</span><a name="line.2833"></a>
-<span class="sourceLineNo">2834</span>  /**<a name="line.2834"></a>
-<span class="sourceLineNo">2835</span>   * Set up correct timestamps in the KVs in Delete object.<a name="line.2835"></a>
-<span class="sourceLineNo">2836</span>   * &lt;p&gt;Caller should have the row and region locks.<a name="line.2836"></a>
-<span class="sourceLineNo">2837</span>   * @param mutation<a name="line.2837"></a>
-<span class="sourceLineNo">2838</span>   * @param familyMap<a name="line.2838"></a>
-<span class="sourceLineNo">2839</span>   * @param byteNow<a name="line.2839"></a>
-<span class="sourceLineNo">2840</span>   * @throws IOException<a name="line.2840"></a>
-<span class="sourceLineNo">2841</span>   */<a name="line.2841"></a>
-<span class="sourceLineNo">2842</span>  public void prepareDeleteTimestamps(Mutation mutation, Map&lt;byte[], List&lt;Cell&gt;&gt; familyMap,<a name="line.2842"></a>
-<span class="sourceLineNo">2843</span>      byte[] byteNow) throws IOException {<a name="line.2843"></a>
-<span class="sourceLineNo">2844</span>    for (Map.Entry&lt;byte[], List&lt;Cell&gt;&gt; e : familyMap.entrySet()) {<a name="line.2844"></a>
-<span class="sourceLineNo">2845</span><a name="line.2845"></a>
-<span class="sourceLineNo">2846</span>      byte[] family = e.getKey();<a name="line.2846"></a>
-<span class="sourceLineNo">2847</span>      List&lt;Cell&gt; cells = e.getValue();<a name="line.2847"></a>
-<span class="sourceLineNo">2848</span>      assert cells instanceof RandomAccess;<a name="line.2848"></a>
-<span class="sourceLineNo">2849</span><a name="line.2849"></a>
-<span class="sourceLineNo">2850</span>      Map&lt;byte[], Integer&gt; kvCount = new TreeMap&lt;&gt;(Bytes.BYTES_COMPARATOR);<a name="line.2850"></a>
-<span class="sourceLineNo">2851</span>      int listSize = cells.size();<a name="line.2851"></a>
-<span class="sourceLineNo">2852</span>      for (int i=0; i &lt; listSize; i++) {<a name="line.2852"></a>
-<span class="sourceLineNo">2853</span>        Cell cell = cells.get(i);<a name="line.2853"></a>
-<span class="sourceLineNo">2854</span>        //  Check if time is LATEST, change to time of most recent addition if so<a name="line.2854"></a>
-<span class="sourceLineNo">2855</span>        //  This is expensive.<a name="line.2855"></a>
-<span class="sourceLineNo">2856</span>        if (cell.getTimestamp() == HConstants.LATEST_TIMESTAMP<a name="line.2856"></a>
-<span class="sourceLineNo">2857</span>            &amp;&amp; PrivateCellUtil.isDeleteType(cell)) {<a name="line.2857"></a>
-<span class="sourceLineNo">2858</span>          byte[] qual = CellUtil.cloneQualifier(cell);<a name="line.2858"></a>
-<span class="sourceLineNo">2859</span><a name="line.2859"></a>
-<span class="sourceLineNo">2860</span>          Integer count = kvCount.get(qual);<a name="line.2860"></a>
-<span class="sourceLineNo">2861</span>          if (count == null) {<a name="line.2861"></a>
-<span class="sourceLineNo">2862</span>            kvCount.put(qual, 1);<a name="line.2862"></a>
-<span class="sourceLineNo">2863</span>          } else {<a name="line.2863"></a>
-<span class="sourceLineNo">2864</span>            kvCount.put(qual, count + 1);<a name="line.2864"></a>
-<span class="sourceLineNo">2865</span>          }<a name="line.2865"></a>
-<span class="sourceLineNo">2866</span>          count = kvCount.get(qual);<a name="line.2866"></a>
-<span class="sourceLineNo">2867</span><a name="line.2867"></a>
-<span class="sourceLineNo">2868</span>          Get get = new Get(CellUtil.cloneRow(cell));<a name="line.2868"></a>
-<span class="sourceLineNo">2869</span>          get.setMaxVersions(count);<a name="line.2869"></a>
-<span class="sourceLineNo">2870</span>          get.addColumn(family, qual);<a name="line.2870"></a>
-<span class="sourceLineNo">2871</span>          if (coprocessorHost != null) {<a name="line.2871"></a>
-<span class="sourceLineNo">2872</span>            if (!coprocessorHost.prePrepareTimeStampForDeleteVersion(mutation, cell,<a name="line.2872"></a>
-<span class="sourceLineNo">2873</span>                byteNow, get)) {<a name="line.2873"></a>
-<span class="sourceLineNo">2874</span>              updateDeleteLatestVersionTimeStamp(cell, get, count, byteNow);<a name="line.2874"></a>
-<span class="sourceLineNo">2875</span>            }<a name="line.2875"></a>
-<span class="sourceLineNo">2876</span>          } else {<a name="line.2876"></a>
-<span class="sourceLineNo">2877</span>            updateDeleteLatestVersionTimeStamp(cell, get, count, byteNow);<a name="line.2877"></a>
-<span class="sourceLineNo">2878</span>          }<a name="line.2878"></a>
-<span class="sourceLineNo">2879</span>        } else {<a name="line.2879"></a>
-<span class="sourceLineNo">2880</span>          PrivateCellUtil.updateLatestStamp(cell, byteNow, 0);<a name="line.2880"></a>
-<span class="sourceLineNo">2881</span>        }<a name="line.2881"></a>
-<span class="sourceLineNo">2882</span>      }<a name="line.2882"></a>
-<span class="sourceLineNo">2883</span>    }<a name="line.2883"></a>
-<span class="sourceLineNo">2884</span>  }<a name="line.2884"></a>
-<span class="sourceLineNo">2885</span><a name="line.2885"></a>
-<span class="sourceLineNo">2886</span>  void updateDeleteLatestVersionTimeStamp(Cell cell, Get get, int count, byte[] byteNow)<a name="line.2886"></a>
-<span class="sourceLineNo">2887</span>      throws IOException {<a name="line.2887"></a>
-<span class="sourceLineNo">2888</span>    List&lt;Cell&gt; result = get(get, false);<a name="line.2888"></a>
-<span class="sourceLineNo">2889</span><a name="line.2889"></a>
-<span class="sourceLineNo">2890</span>    if (result.size() &lt; count) {<a name="line.2890"></a>
-<span class="sourceLineNo">2891</span>      // Nothing to delete<a name="line.2891"></a>
-<span class="sourceLineNo">2892</span>      PrivateCellUtil.updateLatestStamp(cell, byteNow, 0);<a name="line.2892"></a>
-<span class="sourceLineNo">2893</span>      return;<a name="line.2893"></a>
-<span class="sourceLineNo">2894</span>    }<a name="line.2894"></a>
-<span class="sourceLineNo">2895</span>    if (result.size() &gt; count) {<a name="line.2895"></a>
-<span class="sourceLineNo">2896</span>      throw new RuntimeException("Unexpected size: " + result.size());<a name="line.2896"></a>
-<span class="sourceLineNo">2897</span>    }<a name="line.2897"></a>
-<span class="sourceLineNo">2898</span>    Cell getCell = result.get(count - 1);<a name="line.2898"></a>
-<span class="sourceLineNo">2899</span>    PrivateCellUtil.setTimestamp(cell, getCell.getTimestamp());<a name="line.2899"></a>
-<span class="sourceLineNo">2900</span>  }<a name="line.2900"></a>
-<span class="sourceLineNo">2901</span><a name="line.2901"></a>
-<span class="sourceLineNo">2902</span>  @Override<a name="line.2902"></a>
-<span class="sourceLineNo">2903</span>  public void put(Put put) throws IOException {<a name="line.2903"></a>
-<span class="sourceLineNo">2904</span>    checkReadOnly();<a name="line.2904"></a>
-<span class="sourceLineNo">2905</span><a name="line.2905"></a>
-<span class="sourceLineNo">2906</span>    // Do a rough check that we have resources to accept a write.  The check is<a name="line.2906"></a>
-<span class="sourceLineNo">2907</span>    // 'rough' in that between the resource check and the call to obtain a<a name="line.2907"></a>
-<span class="sourceLineNo">2908</span>    // read lock, resources may run out.  For now, the thought is that this<a name="line.2908"></a>
-<span class="sourceLineNo">2909</span>    // will be extremely rare; we'll deal with it when it happens.<a name="line.2909"></a>
-<span class="sourceLineNo">2910</span>    checkResources();<a name="line.2910"></a>
-<span class="sourceLineNo">2911</span>    startRegionOperation(Operation.PUT);<a name="line.2911"></a>
-<span class="sourceLineNo">2912</span>    try {<a name="line.2912"></a>
-<span class="sourceLineNo">2913</span>      // All edits for the given row (across all column families) must happen atomically.<a name="line.2913"></a>
-<span class="sourceLineNo">2914</span>      doBatchMutate(put);<a name="line.2914"></a>
-<span class="sourceLineNo">2915</span>    } finally {<a name="line.2915"></a>
-<span class="sourceLineNo">2916</span>      closeRegionOperation(Operation.PUT);<a name="line.2916"></a>
-<span class="sourceLineNo">2917</span>    }<a name="line.2917"></a>
-<span class="sourceLineNo">2918</span>  }<a name="line.2918"></a>
-<span class="sourceLineNo">2919</span><a name="line.2919"></a>
-<span class="sourceLineNo">2920</span>  /**<a name="line.2920"></a>
-<span class="sourceLineNo">2921</span>   * Class that tracks the progress of a batch operations, accumulating status codes and tracking<a name="line.2921"></a>
-<span class="sourceLineNo">2922</span>   * the index at which processing is proceeding. These batch operations may get split into<a name="line.2922"></a>
-<span class="sourceLineNo">2923</span>   * mini-batches for processing.<a name="line.2923"></a>
-<span class="sourceLineNo">2924</span>   */<a name="line.2924"></a>
-<span class="sourceLineNo">2925</span>  private abstract static class BatchOperation&lt;T&gt; {<a name="line.2925"></a>
-<span class="sourceLineNo">2926</span>    protected final T[] operations;<a name="line.2926"></a>
-<span class="sourceLineNo">2927</span>    protected final OperationStatus[] retCodeDetails;<a name="line.2927"></a>
-<span class="sourceLineNo">2928</span>    protected final WALEdit[] walEditsFromCoprocessors;<a name="line.2928"></a>
-<span class="sourceLineNo">2929</span>    // reference family cell maps directly so coprocessors can mutate them if desired<a name="line.2929"></a>
-<span class="sourceLineNo">2930</span>    protected final Map&lt;byte[], List&lt;Cell&gt;&gt;[] familyCellMaps;<a name="line.2930"></a>
-<span class="sourceLineNo">2931</span><a name="line.2931"></a>
-<span class="sourceLineNo">2932</span>    protected final HRegion region;<a name="line.2932"></a>
-<span class="sourceLineNo">2933</span>    protected int nextIndexToProcess = 0;<a name="line.2933"></a>
-<span class="sourceLineNo">2934</span>    protected final ObservedExceptionsInBatch observedExceptions;<a name="line.2934"></a>
-<span class="sourceLineNo">2935</span>    //Durability of the batch (highest durability of all operations)<a name="line.2935"></a>
-<span class="sourceLineNo">2936</span>    protected Durability durability;<a name="line.2936"></a>
-<span class="sourceLineNo">2937</span>    protected boolean atomic = false;<a name="line.2937"></a>
-<span class="sourceLineNo">2938</span><a name="line.2938"></a>
-<span class="sourceLineNo">2939</span>    public BatchOperation(final HRegion region, T[] operations) {<a name="line.2939"></a>
-<span class="sourceLineNo">2940</span>      this.operations = operations;<a name="line.2940"></a>
-<span class="sourceLineNo">2941</span>      this.retCodeDetails = new OperationStatus[operations.length];<a name="line.2941"></a>
-<span class="sourceLineNo">2942</span>      Arrays.fill(this.retCodeDetails, OperationStatus.NOT_RUN);<a name="line.2942"></a>
-<span class="sourceLineNo">2943</span>      this.walEditsFromCoprocessors = new WALEdit[operations.length];<a name="line.2943"></a>
-<span class="sourceLineNo">2944</span>      familyCellMaps = new Map[operations.length];<a name="line.2944"></a>
-<span class="sourceLineNo">2945</span><a name="line.2945"></a>
-<span class="sourceLineNo">2946</span>      this.region = region;<a name="line.2946"></a>
-<span class="sourceLineNo">2947</span>      observedExceptions = new ObservedExceptionsInBatch();<a name="line.2947"></a>
-<span class="sourceLineNo">2948</span>      durability = Durability.USE_DEFAULT;<a name="line.2948"></a>
-<span class="sourceLineNo">2949</span>    }<a name="line.2949"></a>
-<span class="sourceLineNo">2950</span><a name="line.2950"></a>
-<span class="sourceLineNo">2951</span>    /**<a name="line.2951"></a>
-<span class="sourceLineNo">2952</span>     * Visitor interface for batch operations<a name="line.2952"></a>
-<span class="sourceLineNo">2953</span>     */<a name="line.2953"></a>
-<span class="sourceLineNo">2954</span>    @FunctionalInterface<a name="line.2954"></a>
-<span class="sourceLineNo">2955</span>    public interface Visitor {<a name="line.2955"></a>
-<span class="sourceLineNo">2956</span>      /**<a name="line.2956"></a>
-<span class="sourceLineNo">2957</span>       * @param index operation index<a name="line.2957"></a>
-<span class="sourceLineNo">2958</span>       * @return If true continue visiting remaining entries, break otherwise<a name="line.2958"></a>
-<span class="sourceLineNo">2959</span>       */<a name="line.2959"></a>
-<span class="sourceLineNo">2960</span>      boolean visit(int index) throws IOException;<a name="line.2960"></a>
-<span class="sourceLineNo">2961</span>    }<a name="line.2961"></a>
-<span class="sourceLineNo">2962</span><a name="line.2962"></a>
-<span class="sourceLineNo">2963</span>    /**<a name="line.2963"></a>
-<span class="sourceLineNo">2964</span>     * Helper method for visiting pending/ all batch operations<a name="line.2964"></a>
-<span class="sourceLineNo">2965</span>     */<a name="line.2965"></a>
-<span class="sourceLineNo">2966</span>    public void visitBatchOperations(boolean pendingOnly, int lastIndexExclusive, Visitor visitor)<a name="line.2966"></a>
-<span class="sourceLineNo">2967</span>        throws IOException {<a name="line.2967"></a>
-<span class="sourceLineNo">2968</span>      assert lastIndexExclusive &lt;= this.size();<a name="line.2968"></a>
-<span class="sourceLineNo">2969</span>      for (int i = nextIndexToProcess; i &lt; lastIndexExclusive; i++) {<a name="line.2969"></a>
-<span class="sourceLineNo">2970</span>        if (!pendingOnly || isOperationPending(i)) {<a name="line.2970"></a>
-<span class="sourceLineNo">2971</span>          if (!visitor.visit(i)) {<a name="line.2971"></a>
-<span class="sourceLineNo">2972</span>            break;<a name="line.2972"></a>
-<span class="sourceLineNo">2973</span>          }<a name="line.2973"></a>
-<span class="sourceLineNo">2974</span>        }<a name="line.2974"></a>
-<span class="sourceLineNo">2975</span>      }<a name="line.2975"></a>
-<span class="sourceLineNo">2976</span>    }<a name="line.2976"></a>
-<span class="sourceLineNo">2977</span><a name="line.2977"></a>
-<span class="sourceLineNo">2978</span>    public abstract Mutation getMutation(int index);<a name="line.2978"></a>
-<span class="sourceLineNo">2979</span>    public abstract long getNonceGroup(int index);<a name="line.2979"></a>
-<span class="sourceLineNo">2980</span>    public abstract long getNonce(int index);<a name="line.2980"></a>
-<span class="sourceLineNo">2981</span>    /** This method is potentially expensive and useful mostly for non-replay CP path. */<a name="line.2981"></a>
-<span class="sourceLineNo">2982</span>    public abstract Mutation[] getMutationsForCoprocs();<a name="line.2982"></a>
-<span class="sourceLineNo">2983</span>    public abstract boolean isInReplay();<a name="line.2983"></a>
-<span class="sourceLineNo">2984</span>    public abstract long getOrigLogSeqNum();<a name="line.2984"></a>
-<span class="sourceLineNo">2985</span>    public abstract void startRegionOperation() throws IOException;<a name="line.2985"></a>
-<span class="sourceLineNo">2986</span>    public abstract void closeRegionOperation() throws IOException;<a name="line.2986"></a>
-<span class="sourceLineNo">2987</span><a name="line.2987"></a>
-<span class="sourceLineNo">2988</span>    /**<a name="line.2988"></a>
-<span class="sourceLineNo">2989</span>     * Validates each mutation and prepares a batch for write. If necessary (non-replay case), runs<a name="line.2989"></a>
-<span class="sourceLineNo">2990</span>     * CP prePut()/ preDelete() hooks for all mutations in a batch. This is intended to operate on<a name="line.2990"></a>
-<span class="sourceLineNo">2991</span>     * entire batch and will be called from outside of class to check and prepare batch. This can<a name="line.2991"></a>
-<span class="sourceLineNo">2992</span>     * be implemented by calling helper method {@link #checkAndPrepareMutation(int, long)} in a<a name="line.2992"></a>
-<span class="sourceLineNo">2993</span>     * 'for' loop over mutations.<a name="line.2993"></a>
-<span class="sourceLineNo">2994</span>     */<a name="line.2994"></a>
-<span class="sourceLineNo">2995</span>    public abstract void checkAndPrepare() throws IOException;<a name="line.2995"></a>
-<span class="sourceLineNo">2996</span><a name="line.2996"></a>
-<span class="sourceLineNo">2997</span>    /**<a name="line.2997"></a>
-<span class="sourceLineNo">2998</span>     * Implement any Put request specific check and prepare logic here. Please refer to<a name="line.2998"></a>
-<span class="sourceLineNo">2999</span>     * {@link #checkAndPrepareMutation(Mutation, long)} for how its used.<a name="line.2999"></a>
-<span class="sourceLineNo">3000</span>     */<a name="line.3000"></a>
-<span class="sourceLineNo">3001</span>    protected abstract void checkAndPreparePut(final Put p) throws IOException;<a name="line.3001"></a>
-<span class="sourceLineNo">3002</span><a name="line.3002"></a>
-<span class="sourceLineNo">3003</span>    /**<a name="line.3003"></a>
-<span class="sourceLineNo">3004</span>     *  If necessary, calls preBatchMutate() CP hook for a mini-batch and updates metrics, cell<a name="line.3004"></a>
-<span class="sourceLineNo">3005</span>     *  count, tags and timestamp for all cells of all operations in a mini-batch.<a name="line.3005"></a>
-<span class="sourceLineNo">3006</span>     */<a name="line.3006"></a>
-<span class="sourceLineNo">3007</span>    public abstract void prepareMiniBatchOperations(MiniBatchOperationInProgress&lt;Mutation&gt;<a name="line.3007"></a>
-<span class="sourceLineNo">3008</span>        miniBatchOp, long timestamp, final List&lt;RowLock&gt; acquiredRowLocks) throws IOException;<a name="line.3008"></a>
-<span class="sourceLineNo">3009</span><a name="line.3009"></a>
-<span class="sourceLineNo">3010</span>    /**<a name="line.3010"></a>
-<span class="sourceLineNo">3011</span>     * Write mini-batch operations to MemStore<a name="line.3011"></a>
-<span class="sourceLineNo">3012</span>     */<a name="line.3012"></a>
-<span class="sourceLineNo">3013</span>    public abstract WriteEntry writeMiniBatchOperationsToMemStore(<a name="line.3013"></a>
-<span class="sourceLineNo">3014</span>        final MiniBatchOperationInProgress&lt;Mutation&gt; miniBatchOp, final WriteEntry writeEntry)<a name="line.3014"></a>
-<span class="sourceLineNo">3015</span>        throws IOException;<a name="line.3015"></a>
-<span class="sourceLineNo">3016</span><a name="line.3016"></a>
-<span class="sourceLineNo">3017</span>    protected void writeMiniBatchOperationsToMemStore(<a name="line.3017"></a>
-<span class="sourceLineNo">3018</span>        final MiniBatchOperationInProgress&lt;Mutation&gt; miniBatchOp, final long writeNumber)<a name="line.3018"></a>
-<span class="sourceLineNo">3019</span>        throws IOException {<a name="line.3019"></a>
-<span class="sourceLineNo">3020</span>      MemStoreSizing memStoreAccounting = new MemStoreSizing();<a name="line.3020"></a>
-<span class="sourceLineNo">3021</span>      visitBatchOperations(true, miniBatchOp.getLastIndexExclusive(), (int index) -&gt; {<a name="line.3021"></a>
-<span class="sourceLineNo">3022</span>        // We need to update the sequence id for following reasons.<a name="line.3022"></a>
-<span class="sourceLineNo">3023</span>        // 1) If the op is in replay mode, FSWALEntry#stampRegionSequenceId won't stamp sequence id.<a name="line.3023"></a>
-<span class="sourceLineNo">3024</span>        // 2) If no WAL, FSWALEntry won't be used<a name="line.3024"></a>
-<span class="sourceLineNo">3025</span>        // we use durability of the original mutation for the mutation passed by CP.<a name="line.3025"></a>
-<span class="sourceLineNo">3026</span>        if (isInReplay() || getMutation(index).getDurability() == Durability.SKIP_WAL) {<a name="line.3026"></a>
-<span class="sourceLineNo">3027</span>          region.updateSequenceId(familyCellMaps[index].values(), writeNumber);<a name="line.3027"></a>
-<span class="sourceLineNo">3028</span>        }<a name="line.3028"></a>
-<span class="sourceLineNo">3029</span>        applyFamilyMapToMemStore(familyCellMaps[index], memStoreAccounting);<a name="line.3029"></a>
-<span class="sourceLineNo">3030</span>        return true;<a name="line.3030"></a>
-<span class="sourceLineNo">3031</span>      });<a name="line.3031"></a>
-<span class="sourceLineNo">3032</span>      // update memStore size<a name="line.3032"></a>
-<span class="sourceLineNo">3033</span>      region.addAndGetMemStoreSize(memStoreAccounting);<a name="line.3033"></a>
-<span class="sourceLineNo">3034</span>    }<a name="line.3034"></a>
-<span class="sourceLineNo">3035</span><a name="line.3035"></a>
-<span class="sourceLineNo">3036</span>    public boolean isDone() {<a name="line.3036"></a>
-<span class="sourceLineNo">3037</span>      return nextIndexToProcess == operations.length;<a name="line.3037"></a>
-<span class="sourceLineNo">3038</span>    }<a name="line.3038"></a>
-<span class="sourceLineNo">3039</span><a name="line.3039"></a>
-<span class="sourceLineNo">3040</span>    public int size() {<a name="line.3040"></a>
-<span class="sourceLineNo">3041</span>      return operations.length;<a name="line.3041"></a>
-<span class="sourceLineNo">3042</span>    }<a name="line.3042"></a>
-<span class="sourceLineNo">3043</span><a name="line.3043"></a>
-<span class="sourceLineNo">3044</span>    public boolean isOperationPending(int index) {<a name="line.3044"></a>
-<span class="sourceLineNo">3045</span>      return retCodeDetails[index].getOperationStatusCode() == OperationStatusCode.NOT_RUN;<a name="line.3045"></a>
-<span class="sourceLineNo">3046</span>    }<a name="line.3046"></a>
-<span class="sourceLineNo">3047</span><a name="line.3047"></a>
-<span class="sourceLineNo">3048</span>    public List&lt;UUID&gt; getClusterIds() {<a name="line.3048"></a>
-<span class="sourceLineNo">3049</span>      assert size() != 0;<a name="line.3049"></a>
-<span class="sourceLineNo">3050</span>      return getMutation(0).getClusterIds();<a name="line.3050"></a>
-<span class="sourceLineNo">3051</span>    }<a name="line.3051"></a>
-<span class="sourceLineNo">3052</span><a name="line.3052"></a>
-<span class="sourceLineNo">3053</span>    boolean isAtomic() {<a name="line.3053"></a>
-<span class="sourceLineNo">3054</span>      return atomic;<a name="line.3054"></a>
-<span class="sourceLineNo">3055</span>    }<a name="line.3055"></a>
-<span class="sourceLineNo">3056</span><a name="line.3056"></a>
-<span class="sourceLineNo">3057</span>    /**<a name="line.3057"></a>
-<span class="sourceLineNo">3058</span>     * Helper method that checks and prepares only one mutation. This can be used to implement<a name="line.3058"></a>
-<span class="sourceLineNo">3059</span>     * {@link #checkAndPrepare()} for entire Batch.<a name="line.3059"></a>
-<span class="sourceLineNo">3060</span>     * NOTE: As CP prePut()/ preDelete() hooks may modify mutations, this method should be called<a name="line.3060"></a>
-<span class="sourceLineNo">3061</span>     * after prePut()/ preDelete() CP hooks are run for the mutation<a name="line.3061"></a>
-<span class="sourceLineNo">3062</span>     */<a name="line.3062"></a>
-<span class="sourceLineNo">3063</span>    protected void checkAndPrepareMutation(Mutation mutation, final long timestamp)<a name="line.3063"></a>
-<span class="sourceLineNo">3064</span>        throws IOException {<a name="line.3064"></a>
-<span class="sourceLineNo">3065</span>      region.checkRow(mutation.getRow(), "batchMutate");<a name="line.3065"></a>
-<span class="sourceLineNo">3066</span>      if (mutation instanceof Put) {<a name="line.3066"></a>
-<span class="sourceLineNo">3067</span>        // Check the families in the put. If bad, skip this one.<a name="line.3067"></a>
-<span class="sourceLineNo">3068</span>        checkAndPreparePut((Put) mutation);<a name="line.3068"></a>
-<span class="sourceLineNo">3069</span>        region.checkTimestamps(mutation.getFamilyCellMap(), timestamp);<a name="line.3069"></a>
-<span class="sourceLineNo">3070</span>      } else {<a name="line.3070"></a>
-<span class="sourceLineNo">3071</span>        region.prepareDelete((Delete) mutation);<a name="line.3071"></a>
-<span class="sourceLineNo">3072</span>      }<a name="line.3072"></a>
-<span class="sourceLineNo">3073</span>    }<a name="line.3073"></a>
-<span class="sourceLineNo">3074</span><a name="line.3074"></a>
-<span class="sourceLineNo">3075</span>    protected void checkAndPrepareMutation(int index, long timestamp) throws IOException {<a name="line.3075"></a>
-<span class="sourceLineNo">3076</span>      Mutation mutation = getMutation(index);<a name="line.3076"></a>
-<span class="sourceLineNo">3077</span>      try {<a name="line.3077"></a>
-<span class="sourceLineNo">3078</span>        this.checkAndPrepareMutation(mutation, timestamp);<a name="line.3078"></a>
-<span class="sourceLineNo">3079</span><a name="line.3079"></a>
-<span class="sourceLineNo">3080</span>        // store the family map reference to allow for mutations<a name="line.3080"></a>
-<span class="sourceLineNo">3081</span>        familyCellMaps[index] = mutation.getFamilyCellMap();<a name="line.3081"></a>
-<span class="sourceLineNo">3082</span>        // store durability for the batch (highest durability of all operations in the batch)<a name="line.3082"></a>
-<span class="sourceLineNo">3083</span>        Durability tmpDur = region.getEffectiveDurability(mutation.getDurability());<a name="line.3083"></a>
-<span class="sourceLineNo">3084</span>        if (tmpDur.ordinal() &gt; durability.ordinal()) {<a name="line.3084"></a>
-<span class="sourceLineNo">3085</span>          durability = tmpDur;<a name="line.3085"></a>
-<span class="sourceLineNo">3086</span>        }<a name="line.3086"></a>
-<span class="sourceLineNo">3087</span>      } catch (NoSuchColumnFamilyException nscfe) {<a name="line.3087"></a>
-<span class="sourceLineNo">3088</span>        final String msg = "No such column family in batch mutation. ";<a name="line.3088"></a>
-<span class="sourceLineNo">3089</span>        if (observedExceptions.hasSeenNoSuchFamily()) {<a name="line.3089"></a>
-<span class="sourceLineNo">3090</span>          LOG.warn(msg + nscfe.getMessage());<a name="line.3090"></a>
-<span class="sourceLineNo">3091</span>        } else {<a name="line.3091"></a>
-<span class="sourceLineNo">3092</span>          LOG.warn(msg, nscfe);<a name="line.3092"></a>
-<span class="sourceLineNo">3093</span>          observedExceptions.sawNoSuchFamily();<a name="line.3093"></a>
-<span class="sourceLineNo">3094</span>        }<a name="line.3094"></a>
-<span class="sourceLineNo">3095</span>        retCodeDetails[index] = new OperationStatus(<a name="line.3095"></a>
-<span class="sourceLineNo">3096</span>            OperationStatusCode.BAD_FAMILY, nscfe.getMessage());<a name="line.3096"></a>
-<span class="sourceLineNo">3097</span>        if (isAtomic()) { // fail, atomic means all or none<a name="line.3097"></a>
-<span class="sourceLineNo">3098</span>          throw nscfe;<a name="line.3098"></a>
-<span class="sourceLineNo">3099</span>        }<a name="line.3099"></a>
-<span class="sourceLineNo">3100</span>      } catch (FailedSanityCheckException fsce) {<a name="line.3100"></a>
-<span class="sourceLineNo">3101</span>        final String msg = "Batch Mutation did not pass sanity check. ";<a name="line.3101"></a>
-<span class="sourceLineNo">3102</span>        if (observedExceptions.hasSeenFailedSanityCheck()) {<a name="line.3102"></a>
-<span class="sourceLineNo">3103</span>          LOG.warn(msg + fsce.getMessage());<a name="line.3103"></a>
-<span class="sourceLineNo">3104</span>        } else {<a name="line.3104"></a>
-<span class="sourceLineNo">3105</span>          LOG.warn(msg, fsce);<a name="line.3105"></a>
-<span class="sourceLineNo">3106</span>          observedExceptions.sawFailedSanityCheck();<a name="line.3106"></a>
-<span class="sourceLineNo">3107</span>        }<a name="line.3107"></a>
-<span class="sourceLineNo">3108</span>        retCodeDetails[index] = new OperationStatus(<a name="line.3108"></a>
-<span class="sourceLineNo">3109</span>            OperationStatusCode.SANITY_CHECK_FAILURE, fsce.getMessage());<a name="line.3109"></a>
-<span class="sourceLineNo">3110</span>        if (isAtomic()) {<a name="line.3110"></a>
-<span class="sourceLineNo">3111</span>          throw fsce;<a name="line.3111"></a>
-<span class="sourceLineNo">3112</span>        }<a name="line.3112"></a>
-<span class="sourceLineNo">3113</span>      } catch (WrongRegionException we) {<a name="line.3113"></a>
-<span class="sourceLineNo">3114</span>        final String msg = "Batch mutation had a row that does not belong to this region. ";<a name="line.3114"></a>
-<span class="sourceLineNo">3115</span>        if (observedExceptions.hasSeenWrongRegion()) {<a name="line.3115"></a>
-<span class="sourceLineNo">3116</span>          LOG.warn(msg + we.getMessage());<a name="line.3116"></a>
-<span class="sourceLineNo">3117</span>        } else {<a name="line.3117"></a>
-<span class="sourceLineNo">3118</span>          LOG.warn(msg, we);<a name="line.3118"></a>
-<span class="sourceLineNo">3119</span>          observedExceptions.sawWrongRegion();<a name="line.3119"></a>
-<span class="sourceLineNo">3120</span>        }<a name="line.3120"></a>
-<span class="sourceLineNo">3121</span>        retCodeDetails[index] = new OperationStatus(<a name="line.3121"></a>
-<span class="sourceLineNo">3122</span>            OperationStatusCode.SANITY_CHECK_FAILURE, we.getMessage());<a name="line.3122"></a>
-<span class="sourceLineNo">3123</span>        if (isAtomic()) {<a name="line.3123"></a>
-<span class="sourceLineNo">3124</span>          throw we;<a name="line.3124"></a>
-<span class="sourceLineNo">3125</span>        }<a name="line.3125"></a>
-<span class="sourceLineNo">3126</span>      }<a name="line.3126"></a>
-<span class="sourceLineNo">3127</span>    }<a name="line.3127"></a>
-<span class="sourceLineNo">3128</span><a name="line.3128"></a>
-<span class="sourceLineNo">3129</span>    /**<a name="line.3129"></a>
-<span class="sourceLineNo">3130</span>     * Creates Mini-batch of all operations [nextIndexToProcess, lastIndexExclusive) for which<a name="line.3130"></a>
-<span class="sourceLineNo">3131</span>     * a row lock can be acquired. All mutations with locked rows are considered to be<a name="line.3131"></a>
-<span class="sourceLineNo">3132</span>     * In-progress operations and hence the name {@link MiniBatchOperationInProgress}. Mini batch<a name="line.3132"></a>
-<span class="sourceLineNo">3133</span>     * is window over {@link BatchOperation} and contains contiguous pending operations.<a name="line.3133"></a>
-<span class="sourceLineNo">3134</span>     *<a name="line.3134"></a>
-<span class="sourceLineNo">3135</span>     * @param acquiredRowLocks keeps track of rowLocks acquired.<a name="line.3135"></a>
-<span class="sourceLineNo">3136</span>     */<a name="line.3136"></a>
-<span class="sourceLineNo">3137</span>    public MiniBatchOperationInProgress&lt;Mutation&gt; lockRowsAndBuildMiniBatch(<a name="line.3137"></a>
-<span class="sourceLineNo">3138</span>        List&lt;RowLock&gt; acquiredRowLocks) throws IOException {<a name="line.3138"></a>
-<span class="sourceLineNo">3139</span>      int readyToWriteCount = 0;<a name="line.3139"></a>
-<span class="sourceLineNo">3140</span>      int lastIndexExclusive = 0;<a name="line.3140"></a>
-<span class="sourceLineNo">3141</span>      for (; lastIndexExclusive &lt; size(); lastIndexExclusive++) {<a name="line.3141"></a>
-<span class="sourceLineNo">3142</span>        if (!isOperationPending(lastIndexExclusive)) {<a name="line.3142"></a>
-<span class="sourceLineNo">3143</span>          continue;<a name="line.3143"></a>
-<span class="sourceLineNo">3144</span>        }<a name="line.3144"></a>
-<span class="sourceLineNo">3145</span>        Mutation mutation = getMutation(lastIndexExclusive);<a name="line.3145"></a>
-<span class="sourceLineNo">3146</span>        // If we haven't got any rows in our batch, we should block to get the next one.<a name="line.3146"></a>
-<span class="sourceLineNo">3147</span>        RowLock rowLock = null;<a name="line.3147"></a>
-<span class="sourceLineNo">3148</span>        try {<a name="line.3148"></a>
-<span class="sourceLineNo">3149</span>          // if atomic then get exclusive lock, else shared lock<a name="line.3149"></a>
-<span class="sourceLineNo">3150</span>          rowLock = region.getRowLockInternal(mutation.getRow(), !isAtomic());<a name="line.3150"></a>
-<span class="sourceLineNo">3151</span>        } catch (TimeoutIOException e) {<a name="line.3151"></a>
-<span class="sourceLineNo">3152</span>          // We will retry when other exceptions, but we should stop if we timeout .<a name="line.3152"></a>
-<span class="sourceLineNo">3153</span>          throw e;<a name="line.3153"></a>
-<span class="sourceLineNo">3154</span>        } catch (IOException ioe) {<a name="line.3154"></a>
-<span class="sourceLineNo">3155</span>          LOG.warn("Failed getting lock, row=" + Bytes.toStringBinary(mutation.getRow()), ioe);<a name="line.3155"></a>
-<span class="sourceLineNo">3156</span>          if (isAtomic()) { // fail, atomic means all or none<a name="line.3156"></a>
-<span class="sourceLineNo">3157</span>            throw ioe;<a name="line.3157"></a>
-<span class="sourceLineNo">3158</span>          }<a name="line.3158"></a>
-<span class="sourceLineNo">3159</span>        }<a name="line.3159"></a>
-<span class="sourceLineNo">3160</span>        if (rowLock == null) {<a name="line.3160"></a>
-<span class="sourceLineNo">3161</span>          // We failed to grab another lock<a name="line.3161"></a>
-<span class="sourceLineNo">3162</span>          if (isAtomic()) {<a name="line.3162"></a>
-<span class="sourceLineNo">3163</span>            throw new IOException("Can't apply all operations atomically!");<a name="line.3163"></a>
-<span class="sourceLineNo">3164</span>          }<a name="line.3164"></a>
-<span class="sourceLineNo">3165</span>          break; // Stop acquiring more rows for this batch<a name="line.3165"></a>
-<span class="sourceLineNo">3166</span>        } else {<a name="line.3166"></a>
-<span class="sourceLineNo">3167</span>          acquiredRowLocks.add(rowLock);<a name="line.3167"></a>
-<span class="sourceLineNo">3168</span>        }<a name="line.3168"></a>
-<span class="sourceLineNo">3169</span>        readyToWriteCount++;<a name="line.3169"></a>
-<span class="sourceLineNo">3170</span>      }<a name="line.3170"></a>
-<span class="sourceLineNo">3171</span>      return createMiniBatch(lastIndexExclusive, readyToWriteCount);<a name="line.3171"></a>
-<span class="sourceLineNo">3172</span>    }<a name="line.3172"></a>
-<span class="sourceLineNo">3173</span><a name="line.3173"></a>
-<span class="sourceLineNo">3174</span>    protected MiniBatchOperationInProgress&lt;Mutation&gt; createMiniBatch(final int lastIndexExclusive,<a name="line.3174"></a>
-<span class="sourceLineNo">3175</span>        final int readyToWriteCount) {<a name="line.3175"></a>
-<span class="sourceLineNo">3176</span>      return new MiniBatchOperationInProgress&lt;&gt;(getMutationsForCoprocs(), retCodeDetails,<a name="line.3176"></a>
-<span class="sourceLineNo">3177</span>          walEditsFromCoprocessors, nextIndexToProcess, lastIndexExclusive, readyToWriteCount);<a name="line.3177"></a>
-<span class="sourceLineNo">3178</span>    }<a name="line.3178"></a>
-<span class="sourceLineNo">3179</span><a name="line.3179"></a>
-<span class="sourceLineNo">3180</span>    /**<a name="line.3180"></a>
-<span class="sourceLineNo">3181</span>     * Builds separate WALEdit per nonce by applying input mutations. If WALEdits from CP are<a name="line.3181"></a>
-<span class="sourceLineNo">3182</span>     * present, they are merged to result WALEdit.<a name="line.3182"></a>
-<span class="sourceLineNo">3183</span>     */<a name="line.3183"></a>
-<span class="sourceLineNo">3184</span>    public List&lt;Pair&lt;NonceKey, WALEdit&gt;&gt; buildWALEdits(<a name="line.3184"></a>
-<span class="sourceLineNo">3185</span>        final MiniBatchOperationInProgress&lt;Mutation&gt; miniBatchOp) throws IOException {<a name="line.3185"></a>
-<span class="sourceLineNo">3186</span>      List&lt;Pair&lt;NonceKey, WALEdit&gt;&gt; walEdits = new ArrayList&lt;&gt;();<a name="line.3186"></a>
-<span class="sourceLineNo">3187</span><a name="line.3187"></a>
-<span class="sourceLineNo">3188</span>      visitBatchOperations(true, nextIndexToProcess + miniBatchOp.size(), new Visitor() {<a name="line.3188"></a>
-<span class="sourceLineNo">3189</span>        private Pair&lt;NonceKey, WALEdit&gt; curWALEditForNonce;<a name="line.3189"></a>
-<span class="sourceLineNo">3190</span>        @Override<a name="line.3190"></a>
-<span class="sourceLineNo">3191</span>        public boolean visit(int index) throws IOException {<a name="line.3191"></a>
-<span class="sourceLineNo">3192</span>          Mutation m = getMutation(index);<a name="line.3192"></a>
-<span class="sourceLineNo">3193</span>          // we use durability of the original mutation for the mutation passed by CP.<a name="line.3193"></a>
-<span class="sourceLineNo">3194</span>          if (region.getEffectiveDurability(m.getDurability()) == Durability.SKIP_WAL) {<a name="line.3194"></a>
-<span class="sourceLineNo">3195</span>            region.recordMutationWithoutWal(m.getFamilyCellMap());<a name="line.3195"></a>
-<span class="sourceLineNo">3196</span>            return true;<a name="line.3196"></a>
-<span class="sourceLineNo">3197</span>          }<a name="line.3197"></a>
-<span class="sourceLineNo">3198</span><a name="line.3198"></a>
-<span class="sourceLineNo">3199</span>          // the batch may contain multiple nonce keys (replay case). If so, write WALEdit for each.<a name="line.3199"></a>
-<span class="sourceLineNo">3200</span>          // Given how nonce keys are originally written, these should be contiguous.<a name="line.3200"></a>
-<span class="sourceLineNo">3201</span>          // They don't have to be, it will still work, just write more WALEdits than needed.<a name="line.3201"></a>
-<span class="sourceLineNo">3202</span>          long nonceGroup = getNonceGroup(index);<a name="line.3202"></a>
-<span class="sourceLineNo">3203</span>          long nonce = getNonce(index);<a name="line.3203"></a>
-<span class="sourceLineNo">3204</span>          if (curWALEditForNonce == null ||<a name="line.3204"></a>
-<span class="sourceLineNo">3205</span>              curWALEditForNonce.getFirst().getNonceGroup() != nonceGroup ||<a name="line.3205"></a>
-<span class="sourceLineNo">3206</span>              curWALEditForNonce.getFirst().getNonce() != nonce) {<a name="line.3206"></a>
-<span class="sourceLineNo">3207</span>            curWALEditForNonce = new Pair&lt;&gt;(new NonceKey(nonceGroup, nonce),<a name="line.3207"></a>
-<span class="sourceLineNo">3208</span>                new WALEdit(miniBatchOp.getCellCount(), isInReplay()));<a name="line.3208"></a>
-<span class="sourceLineNo">3209</span>            walEdits.add(curWALEditForNonce);<a name="line.3209"></a>
-<span class="sourceLineNo">3210</span>          }<a name="line.3210"></a>
-<span class="sourceLineNo">3211</span>          WALEdit walEdit = curWALEditForNonce.getSecond();<a name="line.3211"></a>
-<span class="sourceLineNo">3212</span><a name="line.3212"></a>
-<span class="sourceLineNo">3213</span>          // Add WAL edits by CP<a name="line.3213"></a>
-<span class="sourceLineNo">3214</span>          WALEdit fromCP = walEditsFromCoprocessors[index];<a name="line.3214"></a>
-<span class="sourceLineNo">3215</span>          if (fromCP != null) {<a name="line.3215"></a>
-<span class="sourceLineNo">3216</span>            for (Cell cell : fromCP.getCells()) {<a name="line.3216"></a>
-<span class="sourceLineNo">3217</span>              walEdit.add(cell);<a name="line.3217"></a>
-<span class="sourceLineNo">3218</span>            }<a name="line.3218"></a>
-<span class="sourceLineNo">3219</span>          }<a name="line.3219"></a>
-<span class="sourceLineNo">3220</span>          addFamilyMapToWALEdit(familyCellMaps[index], walEdit);<a name="line.3220"></a>
-<span class="sourceLineNo">3221</span><a name="line.3221"></a>
-<span class="sourceLineNo">3222</span>          return true;<a name="line.3222"></a>
-<span class="sourceLineNo">3223</span>        }<a name="line.3223"></a>
-<span class="sourceLineNo">3224</span>      });<a name="line.3224"></a>
-<span class="sourceLineNo">3225</span>      return walEdits;<a name="line.3225"></a>
-<span class="sourceLineNo">3226</span>    }<a name="line.3226"></a>
-<span class="sourceLineNo">3227</span><a name="line.3227"></a>
-<span class="sourceLineNo">3228</span>    /**<a name="line.3228"></a>
-<span class="sourceLineNo">3229</span>     * This method completes mini-batch operations by calling postBatchMutate() CP hook (if<a name="line.3229"></a>
-<span class="sourceLineNo">3230</span>     * required) and completing mvcc.<a name="line.3230"></a>
-<span class="sourceLineNo">3231</span>     */<a name="line.3231"></a>
-<span class="sourceLineNo">3232</span>    public void completeMiniBatchOperations(<a name="line.3232"></a>
-<span class="sourceLineNo">3233</span>        final MiniBatchOperationInProgress&lt;Mutation&gt; miniBatchOp, final WriteEntry writeEntry)<a name="line.3233"></a>
-<span class="sourceLineNo">3234</span>        throws IOException {<a name="line.3234"></a>
-<span class="sourceLineNo">3235</span>      if (writeEntry != null) {<a name="line.3235"></a>
-<span class="sourceLineNo">3236</span>        region.mvcc.completeAndWait(writeEntry);<a name="line.3236"></a>
-<span class="sourceLineNo">3237</span>      }<a name="line.3237"></a>
-<span class="sourceLineNo">3238</span>    }<a name="line.3238"></a>
-<span class="sourceLineNo">3239</span><a name="line.3239"></a>
-<span class="sourceLineNo">3240</span>    public void doPostOpCleanupForMiniBatch(<a name="line.3240"></a>
-<span class="sourceLineNo">3241</span>        final MiniBatchOperationInProgress&lt;Mutation&gt; miniBatchOp, final WALEdit walEdit,<a name="line.3241"></a>
-<span class="sourceLineNo">3242</span>        boolean success) throws IOException {}<a name="line.3242"></a>
-<span class="sourceLineNo">3243</span><a name="line.3243"></a>
-<span class="sourceLineNo">3244</span>    /**<a name="line.3244"></a>
-<span class="sourceLineNo">3245</span>     * Atomically apply the given map of family-&gt;edits to the memstore.<a name="line.3245"></a>
-<span class="sourceLineNo">3246</span>     * This handles the consistency control on its own, but the caller<a name="line.3246"></a>
-<span class="sourceLineNo">3247</span>     * should already have locked updatesLock.readLock(). This also does<a name="line.3247"></a>
-<span class="sourceLineNo">3248</span>     * &lt;b&gt;not&lt;/b&gt; check the families for validity.<a name="line.3248"></a>
-<span class="sourceLineNo">3249</span>     *<a name="line.3249"></a>
-<span class="sourceLineNo">3250</span>     * @param familyMap Map of Cells by family<a name="line.3250"></a>
-<span class="sourceLineNo">3251</span>     */<a name="line.3251"></a>
-<span class="sourceLineNo">3252</span>    protected void applyFamilyMapToMemStore(Map&lt;byte[], List&lt;Cell&gt;&gt; familyMap,<a name="line.3252"></a>
-<span class="sourceLineNo">3253</span>        MemStoreSizing memstoreAccounting) throws IOException {<a name="line.3253"></a>
-<span class="sourceLineNo">3254</span>      for (Map.Entry&lt;byte[], List&lt;Cell&gt;&gt; e : familyMap.entrySet()) {<a name="line.3254"></a>
-<span class="sourceLineNo">3255</span>        byte[] family = e.getKey();<a name="line.3255"></a>
-<span class="sourceLineNo">3256</span>        List&lt;Cell&gt; cells = e.getValue();<a name="line.3256"></a>
-<span class="sourceLineNo">3257</span>        assert cells instanceof RandomAccess;<a name="line.3257"></a>
-<span class="sourceLineNo">3258</span>        region.applyToMemStore(region.getStore(family), cells, false, memstoreAccounting);<a name="line.3258"></a>
-<span class="sourceLineNo">3259</span>      }<a name="line.3259"></a>
-<span class="sourceLineNo">3260</span>    }<a name="line.3260"></a>
-<span class="sourceLineNo">3261</span><a name="line.3261"></a>
-<span class="sourceLineNo">3262</span>    /**<a name="line.3262"></a>
-<span class="sourceLineNo">3263</span>     * Append the given map of family-&gt;edits to a WALEdit data structure.<a name="line.3263"></a>
-<span class="sourceLineNo">3264</span>     * This does not write to the WAL itself.<a name="line.3264"></a>
-<span class="sourceLineNo">3265</span>     * @param familyMap map of family-&gt;edits<a name="line.3265"></a>
-<span class="sourceLineNo">3266</span>     * @param walEdit the destination entry to append into<a name="line.3266"></a>
-<span class="sourceLineNo">3267</span>     */<a name="line.3267"></a>
-<span class="sourceLineNo">3268</span>    private void addFamilyMapToWALEdit(Map&lt;byte[], List&lt;Cell&gt;&gt; familyMap,<a name="line.3268"></a>
-<span class="sourceLineNo">3269</span>        WALEdit walEdit) {<a name="line.3269"></a>
-<span class="sourceLineNo">3270</span>      for (List&lt;Cell&gt; edits : familyMap.values()) {<a name="line.3270"></a>
-<span class="sourceLineNo">3271</span>        // Optimization: 'foreach' loop is not used. See:<a name="line.3271"></a>
-<span class="sourceLineNo">3272</span>        // HBASE-12023 HRegion.applyFamilyMapToMemstore creates too many iterator objects<a name="line.3272"></a>
-<span class="sourceLineNo">3273</span>        assert edits instanceof RandomAccess;<a name="line.3273"></a>
-<span class="sourceLineNo">3274</span>        int listSize = edits.size();<a name="line.3274"></a>
-<span class="sourceLineNo">3275</span>        for (int i=0; i &lt; listSize; i++) {<a name="line.3275"></a>
-<span class="sourceLineNo">3276</span>          Cell cell = edits.get(i);<a name="line.3276"></a>
-<span class="sourceLineNo">3277</span>          walEdit.add(cell);<a name="line.3277"></a>
-<span class="sourceLineNo">3278</span>        }<a name="line.3278"></a>
-<span class="sourceLineNo">3279</span>      }<a name="line.3279"></a>
-<span class="sourceLineNo">3280</span>    }<a name="line.3280"></a>
-<span class="sourceLineNo">3281</span>  }<a name="line.3281"></a>
-<span class="sourceLineNo">3282</span><a name="line.3282"></a>
-<span class="sourceLineNo">3283</span>  /**<a name="line.3283"></a>
-<span class="sourceLineNo">3284</span>   * Batch of mutation operations. Base class is shared with {@link ReplayBatchOperation} as most<a name="line.3284"></a>
-<span class="sourceLineNo">3285</span>   * of the logic is same.<a name="line.3285"></a>
-<span class="sourceLineNo">3286</span>   */<a name="line.3286"></a>
-<span class="sourceLineNo">3287</span>  static class MutationBatchOperation extends BatchOperation&lt;Mutation&gt; {<a name="line.3287"></a>
-<span class="sourceLineNo">3288</span>    private long nonceGroup;<a name="line.3288"></a>
-<span class="sourceLineNo">3289</span>    private long nonce;<a name="line.3289"></a>
-<span class="sourceLineNo">3290</span>    public MutationBatchOperation(final HRegion region, Mutation[] operations, boolean atomic,<a name="line.3290"></a>
-<span class="sourceLineNo">3291</span>        long nonceGroup, long nonce) {<a name="line.3291"></a>
-<span class="sourceLineNo">3292</span>      super(region, operations);<a name="line.3292"></a>
-<span class="sourceLineNo">3293</span>      this.atomic = atomic;<a name="line.3293"></a>
-<span class="sourceLineNo">3294</span>      this.nonceGroup = nonceGroup;<a name="line.3294"></a>
-<span class="sourceLineNo">3295</span>      this.nonce = nonce;<a name="line.3295"></a>
-<span class="sourceLineNo">3296</span>    }<a name="line.3296"></a>
-<span class="sourceLineNo">3297</span><a name="line.3297"></a>
-<span class="sourceLineNo">3298</span>    @Override<a name="line.3298"></a>
-<span class="sourceLineNo">3299</span>    public Mutation getMutation(int index) {<a name="line.3299"></a>
-<span class="sourceLineNo">3300</span>      return this.operations[index];<a name="line.3300"></a>
-<span class="sourceLineNo">3301</span>    }<a name="line.3301"></a>
-<span class="sourceLineNo">3302</span><a name="line.3302"></a>
-<span class="sourceLineNo">3303</span>    @Override<a name="line.3303"></a>
-<span class="sourceLineNo">3304</span>    public long getNonceGroup(int index) {<a name="line.3304"></a>
-<span class="sourceLineNo">3305</span>      return nonceGroup;<a name="line.3305"></a>
-<span class="sourceLineNo">3306</span>    }<a name="line.3306"></a>
-<span class="sourceLineNo">3307</span><a name="line.3

<TRUNCATED>

[10/51] [partial] hbase-site git commit: Published site at .

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/c54c242b/hbase-build-configuration/hbase-archetypes/hbase-client-project/dependencies.html
----------------------------------------------------------------------
diff --git a/hbase-build-configuration/hbase-archetypes/hbase-client-project/dependencies.html b/hbase-build-configuration/hbase-archetypes/hbase-client-project/dependencies.html
index 6003316..7971bf8 100644
--- a/hbase-build-configuration/hbase-archetypes/hbase-client-project/dependencies.html
+++ b/hbase-build-configuration/hbase-archetypes/hbase-client-project/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="20171202" />
+    <meta name="Date-Revision-yyyymmdd" content="20171203" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase - Exemplar for hbase-client archetype &#x2013; Project Dependencies</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -1571,7 +1571,16 @@ Jackson JSON processor's data binding functionality.</p>
 <p><b>Description: </b>JSch is a pure Java implementation of SSH2</p>
 <p><b>URL: </b><a class="externalLink" href="http://www.jcraft.com/jsch/">http://www.jcraft.com/jsch/</a></p>
 <p><b>Project Licenses: </b><a class="externalLink" href="http://www.jcraft.com/jsch/LICENSE.txt">Revised BSD</a></p></td></tr></table></div></li>
-<li>org.apache.curator:curator-recipes:jar:4.0.0 (compile) <img id="_img79" src="./images/icon_info_sml.gif" alt="[Information]" onclick="toggleDependencyDetails( '_dep78', '_img79' );" style="cursor: pointer; vertical-align: text-bottom;"></img><div id="_dep78" style="display:none">
+<li>org.apache.curator:curator-client:jar:4.0.0 (compile) <img id="_img79" src="./images/icon_info_sml.gif" alt="[Information]" onclick="toggleDependencyDetails( '_dep78', '_img79' );" style="cursor: pointer; vertical-align: text-bottom;"></img><div id="_dep78" style="display:none">
+<table border="0" class="table table-striped">
+<tr class="a">
+<th>Curator Client</th></tr>
+<tr class="b">
+<td>
+<p><b>Description: </b>Low-level API</p>
+<p><b>URL: </b><a class="externalLink" href="http://curator.apache.org/curator-client">http://curator.apache.org/curator-client</a></p>
+<p><b>Project Licenses: </b><a class="externalLink" href="http://www.apache.org/licenses/LICENSE-2.0.txt">The Apache Software License, Version 2.0</a></p></td></tr></table></div></li>
+<li>org.apache.curator:curator-recipes:jar:4.0.0 (compile) <img id="_img81" src="./images/icon_info_sml.gif" alt="[Information]" onclick="toggleDependencyDetails( '_dep80', '_img81' );" style="cursor: pointer; vertical-align: text-bottom;"></img><div id="_dep80" style="display:none">
 <table border="0" class="table table-striped">
 <tr class="a">
 <th>Curator Recipes</th></tr>
@@ -1580,7 +1589,7 @@ Jackson JSON processor's data binding functionality.</p>
 <p><b>Description: </b>All of the recipes listed on the ZooKeeper recipes doc (except two phase commit).</p>
 <p><b>URL: </b><a class="externalLink" href="http://curator.apache.org/curator-recipes">http://curator.apache.org/curator-recipes</a></p>
 <p><b>Project Licenses: </b><a class="externalLink" href="http://www.apache.org/licenses/LICENSE-2.0.txt">The Apache Software License, Version 2.0</a></p></td></tr></table></div></li>
-<li>org.apache.commons:commons-compress:jar:1.4.1 (compile) <img id="_img81" src="./images/icon_info_sml.gif" alt="[Information]" onclick="toggleDependencyDetails( '_dep80', '_img81' );" style="cursor: pointer; vertical-align: text-bottom;"></img><div id="_dep80" style="display:none">
+<li>org.apache.commons:commons-compress:jar:1.4.1 (compile) <img id="_img83" src="./images/icon_info_sml.gif" alt="[Information]" onclick="toggleDependencyDetails( '_dep82', '_img83' );" style="cursor: pointer; vertical-align: text-bottom;"></img><div id="_dep82" style="display:none">
 <table border="0" class="table table-striped">
 <tr class="a">
 <th>Commons Compress</th></tr>
@@ -1591,7 +1600,7 @@ These include: bzip2, gzip, pack200, xz and ar, cpio, jar, tar, zip, dump.</p>
 <p><b>URL: </b><a class="externalLink" href="http://commons.apache.org/compress/">http://commons.apache.org/compress/</a></p>
 <p><b>Project Licenses: </b><a class="externalLink" href="http://www.apache.org/licenses/LICENSE-2.0.txt">The Apache Software License, Version 2.0</a></p></td></tr></table></div>
 <ul>
-<li>org.tukaani:xz:jar:1.0 (compile) <img id="_img83" src="./images/icon_info_sml.gif" alt="[Information]" onclick="toggleDependencyDetails( '_dep82', '_img83' );" style="cursor: pointer; vertical-align: text-bottom;"></img><div id="_dep82" style="display:none">
+<li>org.tukaani:xz:jar:1.0 (compile) <img id="_img85" src="./images/icon_info_sml.gif" alt="[Information]" onclick="toggleDependencyDetails( '_dep84', '_img85' );" style="cursor: pointer; vertical-align: text-bottom;"></img><div id="_dep84" style="display:none">
 <table border="0" class="table table-striped">
 <tr class="a">
 <th>XZ for Java</th></tr>
@@ -1600,7 +1609,7 @@ These include: bzip2, gzip, pack200, xz and ar, cpio, jar, tar, zip, dump.</p>
 <p><b>Description: </b>XZ data compression</p>
 <p><b>URL: </b><a class="externalLink" href="http://tukaani.org/xz/java.html">http://tukaani.org/xz/java.html</a></p>
 <p><b>Project Licenses: </b>Public Domain</p></td></tr></table></div></li></ul></li></ul></li>
-<li>org.apache.hadoop:hadoop-auth:jar:2.7.4 (compile) <img id="_img85" src="./images/icon_info_sml.gif" alt="[Information]" onclick="toggleDependencyDetails( '_dep84', '_img85' );" style="cursor: pointer; vertical-align: text-bottom;"></img><div id="_dep84" style="display:none">
+<li>org.apache.hadoop:hadoop-auth:jar:2.7.4 (compile) <img id="_img87" src="./images/icon_info_sml.gif" alt="[Information]" onclick="toggleDependencyDetails( '_dep86', '_img87' );" style="cursor: pointer; vertical-align: text-bottom;"></img><div id="_dep86" style="display:none">
 <table border="0" class="table table-striped">
 <tr class="a">
 <th>Apache Hadoop Auth</th></tr>
@@ -1609,7 +1618,7 @@ These include: bzip2, gzip, pack200, xz and ar, cpio, jar, tar, zip, dump.</p>
 <p><b>Description: </b>Apache Hadoop Auth - Java HTTP SPNEGO</p>
 <p><b>Project Licenses: </b><a class="externalLink" href="http://www.apache.org/licenses/LICENSE-2.0.txt">Apache License, Version 2.0</a></p></td></tr></table></div>
 <ul>
-<li>org.apache.httpcomponents:httpclient:jar:4.5.3 (compile) <img id="_img87" src="./images/icon_info_sml.gif" alt="[Information]" onclick="toggleDependencyDetails( '_dep86', '_img87' );" style="cursor: pointer; vertical-align: text-bottom;"></img><div id="_dep86" style="display:none">
+<li>org.apache.httpcomponents:httpclient:jar:4.5.3 (compile) <img id="_img89" src="./images/icon_info_sml.gif" alt="[Information]" onclick="toggleDependencyDetails( '_dep88', '_img89' );" style="cursor: pointer; vertical-align: text-bottom;"></img><div id="_dep88" style="display:none">
 <table border="0" class="table table-striped">
 <tr class="a">
 <th>Apache HttpClient</th></tr>
@@ -1618,7 +1627,7 @@ These include: bzip2, gzip, pack200, xz and ar, cpio, jar, tar, zip, dump.</p>
 <p><b>Description: </b>Apache HttpComponents Client</p>
 <p><b>URL: </b><a class="externalLink" href="http://hc.apache.org/httpcomponents-client">http://hc.apache.org/httpcomponents-client</a></p>
 <p><b>Project Licenses: </b><a class="externalLink" href="http://www.apache.org/licenses/LICENSE-2.0.txt">Apache License, Version 2.0</a></p></td></tr></table></div></li>
-<li>org.apache.directory.server:apacheds-kerberos-codec:jar:2.0.0-M15 (compile) <img id="_img89" src="./images/icon_info_sml.gif" alt="[Information]" onclick="toggleDependencyDetails( '_dep88', '_img89' );" style="cursor: pointer; vertical-align: text-bottom;"></img><div id="_dep88" style="display:none">
+<li>org.apache.directory.server:apacheds-kerberos-codec:jar:2.0.0-M15 (compile) <img id="_img91" src="./images/icon_info_sml.gif" alt="[Information]" onclick="toggleDependencyDetails( '_dep90', '_img91' );" style="cursor: pointer; vertical-align: text-bottom;"></img><div id="_dep90" style="display:none">
 <table border="0" class="table table-striped">
 <tr class="a">
 <th>ApacheDS Protocol Kerberos Codec</th></tr>
@@ -1628,7 +1637,7 @@ These include: bzip2, gzip, pack200, xz and ar, cpio, jar, tar, zip, dump.</p>
 <p><b>URL: </b><a class="externalLink" href="http://directory.apache.org/apacheds/1.5/apacheds-kerberos-codec">http://directory.apache.org/apacheds/1.5/apacheds-kerberos-codec</a></p>
 <p><b>Project Licenses: </b><a class="externalLink" href="http://www.apache.org/licenses/LICENSE-2.0.txt">The Apache Software License, Version 2.0</a></p></td></tr></table></div>
 <ul>
-<li>org.apache.directory.server:apacheds-i18n:jar:2.0.0-M15 (compile) <img id="_img91" src="./images/icon_info_sml.gif" alt="[Information]" onclick="toggleDependencyDetails( '_dep90', '_img91' );" style="cursor: pointer; vertical-align: text-bottom;"></img><div id="_dep90" style="display:none">
+<li>org.apache.directory.server:apacheds-i18n:jar:2.0.0-M15 (compile) <img id="_img93" src="./images/icon_info_sml.gif" alt="[Information]" onclick="toggleDependencyDetails( '_dep92', '_img93' );" style="cursor: pointer; vertical-align: text-bottom;"></img><div id="_dep92" style="display:none">
 <table border="0" class="table table-striped">
 <tr class="a">
 <th>ApacheDS I18n</th></tr>
@@ -1637,7 +1646,7 @@ These include: bzip2, gzip, pack200, xz and ar, cpio, jar, tar, zip, dump.</p>
 <p><b>Description: </b>Internationalization of errors and other messages</p>
 <p><b>URL: </b><a class="externalLink" href="http://directory.apache.org/apacheds/1.5/apacheds-i18n">http://directory.apache.org/apacheds/1.5/apacheds-i18n</a></p>
 <p><b>Project Licenses: </b><a class="externalLink" href="http://www.apache.org/licenses/LICENSE-2.0.txt">The Apache Software License, Version 2.0</a></p></td></tr></table></div></li>
-<li>org.apache.directory.api:api-asn1-api:jar:1.0.0-M20 (compile) <img id="_img93" src="./images/icon_info_sml.gif" alt="[Information]" onclick="toggleDependencyDetails( '_dep92', '_img93' );" style="cursor: pointer; vertical-align: text-bottom;"></img><div id="_dep92" style="display:none">
+<li>org.apache.directory.api:api-asn1-api:jar:1.0.0-M20 (compile) <img id="_img95" src="./images/icon_info_sml.gif" alt="[Information]" onclick="toggleDependencyDetails( '_dep94', '_img95' );" style="cursor: pointer; vertical-align: text-bottom;"></img><div id="_dep94" style="display:none">
 <table border="0" class="table table-striped">
 <tr class="a">
 <th>Apache Directory API ASN.1 API</th></tr>
@@ -1646,7 +1655,7 @@ These include: bzip2, gzip, pack200, xz and ar, cpio, jar, tar, zip, dump.</p>
 <p><b>Description: </b>ASN.1 API</p>
 <p><b>URL: </b><a class="externalLink" href="http://directory.apache.org/api-parent/api-asn1-parent/api-asn1-api/">http://directory.apache.org/api-parent/api-asn1-parent/api-asn1-api/</a></p>
 <p><b>Project Licenses: </b><a class="externalLink" href="http://www.apache.org/licenses/LICENSE-2.0.txt">The Apache Software License, Version 2.0</a></p></td></tr></table></div></li>
-<li>org.apache.directory.api:api-util:jar:1.0.0-M20 (compile) <img id="_img95" src="./images/icon_info_sml.gif" alt="[Information]" onclick="toggleDependencyDetails( '_dep94', '_img95' );" style="cursor: pointer; vertical-align: text-bottom;"></img><div id="_dep94" style="display:none">
+<li>org.apache.directory.api:api-util:jar:1.0.0-M20 (compile) <img id="_img97" src="./images/icon_info_sml.gif" alt="[Information]" onclick="toggleDependencyDetails( '_dep96', '_img97' );" style="cursor: pointer; vertical-align: text-bottom;"></img><div id="_dep96" style="display:none">
 <table border="0" class="table table-striped">
 <tr class="a">
 <th>Apache Directory LDAP API Utilities</th></tr>
@@ -1654,8 +1663,17 @@ These include: bzip2, gzip, pack200, xz and ar, cpio, jar, tar, zip, dump.</p>
 <td>
 <p><b>Description: </b>Utilities shared across this top level project</p>
 <p><b>URL: </b><a class="externalLink" href="http://directory.apache.org/api-parent/api-util/">http://directory.apache.org/api-parent/api-util/</a></p>
-<p><b>Project Licenses: </b><a class="externalLink" href="http://www.apache.org/licenses/LICENSE-2.0.txt">The Apache Software License, Version 2.0</a></p></td></tr></table></div></li></ul></li></ul></li>
-<li>org.apache.hadoop:hadoop-client:jar:2.7.4 (test) <img id="_img97" src="./images/icon_info_sml.gif" alt="[Information]" onclick="toggleDependencyDetails( '_dep96', '_img97' );" style="cursor: pointer; vertical-align: text-bottom;"></img><div id="_dep96" style="display:none">
+<p><b>Project Licenses: </b><a class="externalLink" href="http://www.apache.org/licenses/LICENSE-2.0.txt">The Apache Software License, Version 2.0</a></p></td></tr></table></div></li></ul></li>
+<li>org.apache.curator:curator-framework:jar:4.0.0 (compile) <img id="_img99" src="./images/icon_info_sml.gif" alt="[Information]" onclick="toggleDependencyDetails( '_dep98', '_img99' );" style="cursor: pointer; vertical-align: text-bottom;"></img><div id="_dep98" style="display:none">
+<table border="0" class="table table-striped">
+<tr class="a">
+<th>Curator Framework</th></tr>
+<tr class="b">
+<td>
+<p><b>Description: </b>High-level API that greatly simplifies using ZooKeeper.</p>
+<p><b>URL: </b><a class="externalLink" href="http://curator.apache.org/curator-framework">http://curator.apache.org/curator-framework</a></p>
+<p><b>Project Licenses: </b><a class="externalLink" href="http://www.apache.org/licenses/LICENSE-2.0.txt">The Apache Software License, Version 2.0</a></p></td></tr></table></div></li></ul></li>
+<li>org.apache.hadoop:hadoop-client:jar:2.7.4 (test) <img id="_img101" src="./images/icon_info_sml.gif" alt="[Information]" onclick="toggleDependencyDetails( '_dep100', '_img101' );" style="cursor: pointer; vertical-align: text-bottom;"></img><div id="_dep100" style="display:none">
 <table border="0" class="table table-striped">
 <tr class="a">
 <th>Apache Hadoop Client</th></tr>
@@ -1664,7 +1682,7 @@ These include: bzip2, gzip, pack200, xz and ar, cpio, jar, tar, zip, dump.</p>
 <p><b>Description: </b>Apache Hadoop Client</p>
 <p><b>Project Licenses: </b><a class="externalLink" href="http://www.apache.org/licenses/LICENSE-2.0.txt">Apache License, Version 2.0</a></p></td></tr></table></div>
 <ul>
-<li>org.apache.hadoop:hadoop-mapreduce-client-app:jar:2.7.4 (test) <img id="_img99" src="./images/icon_info_sml.gif" alt="[Information]" onclick="toggleDependencyDetails( '_dep98', '_img99' );" style="cursor: pointer; vertical-align: text-bottom;"></img><div id="_dep98" style="display:none">
+<li>org.apache.hadoop:hadoop-mapreduce-client-app:jar:2.7.4 (test) <img id="_img103" src="./images/icon_info_sml.gif" alt="[Information]" onclick="toggleDependencyDetails( '_dep102', '_img103' );" style="cursor: pointer; vertical-align: text-bottom;"></img><div id="_dep102" style="display:none">
 <table border="0" class="table table-striped">
 <tr class="a">
 <th>hadoop-mapreduce-client-app</th></tr>
@@ -1672,7 +1690,7 @@ These include: bzip2, gzip, pack200, xz and ar, cpio, jar, tar, zip, dump.</p>
 <td>
 <p><b>Description: </b>Apache Hadoop Project POM</p>
 <p><b>Project Licenses: </b><a class="externalLink" href="http://www.apache.org/licenses/LICENSE-2.0.txt">Apache License, Version 2.0</a></p></td></tr></table></div></li>
-<li>org.apache.hadoop:hadoop-yarn-api:jar:2.7.4 (compile) <img id="_img101" src="./images/icon_info_sml.gif" alt="[Information]" onclick="toggleDependencyDetails( '_dep100', '_img101' );" style="cursor: pointer; vertical-align: text-bottom;"></img><div id="_dep100" style="display:none">
+<li>org.apache.hadoop:hadoop-yarn-api:jar:2.7.4 (compile) <img id="_img105" src="./images/icon_info_sml.gif" alt="[Information]" onclick="toggleDependencyDetails( '_dep104', '_img105' );" style="cursor: pointer; vertical-align: text-bottom;"></img><div id="_dep104" style="display:none">
 <table border="0" class="table table-striped">
 <tr class="a">
 <th>hadoop-yarn-api</th></tr>
@@ -1680,7 +1698,7 @@ These include: bzip2, gzip, pack200, xz and ar, cpio, jar, tar, zip, dump.</p>
 <td>
 <p><b>Description: </b>Apache Hadoop Project POM</p>
 <p><b>Project Licenses: </b><a class="externalLink" href="http://www.apache.org/licenses/LICENSE-2.0.txt">Apache License, Version 2.0</a></p></td></tr></table></div></li></ul></li>
-<li>org.apache.hadoop:hadoop-mapreduce-client-core:jar:2.7.4 (compile) <img id="_img103" src="./images/icon_info_sml.gif" alt="[Information]" onclick="toggleDependencyDetails( '_dep102', '_img103' );" style="cursor: pointer; vertical-align: text-bottom;"></img><div id="_dep102" style="display:none">
+<li>org.apache.hadoop:hadoop-mapreduce-client-core:jar:2.7.4 (compile) <img id="_img107" src="./images/icon_info_sml.gif" alt="[Information]" onclick="toggleDependencyDetails( '_dep106', '_img107' );" style="cursor: pointer; vertical-align: text-bottom;"></img><div id="_dep106" style="display:none">
 <table border="0" class="table table-striped">
 <tr class="a">
 <th>hadoop-mapreduce-client-core</th></tr>
@@ -1689,7 +1707,7 @@ These include: bzip2, gzip, pack200, xz and ar, cpio, jar, tar, zip, dump.</p>
 <p><b>Description: </b>Apache Hadoop Project POM</p>
 <p><b>Project Licenses: </b><a class="externalLink" href="http://www.apache.org/licenses/LICENSE-2.0.txt">Apache License, Version 2.0</a></p></td></tr></table></div>
 <ul>
-<li>org.apache.hadoop:hadoop-yarn-common:jar:2.7.4 (compile) <img id="_img105" src="./images/icon_info_sml.gif" alt="[Information]" onclick="toggleDependencyDetails( '_dep104', '_img105' );" style="cursor: pointer; vertical-align: text-bottom;"></img><div id="_dep104" style="display:none">
+<li>org.apache.hadoop:hadoop-yarn-common:jar:2.7.4 (compile) <img id="_img109" src="./images/icon_info_sml.gif" alt="[Information]" onclick="toggleDependencyDetails( '_dep108', '_img109' );" style="cursor: pointer; vertical-align: text-bottom;"></img><div id="_dep108" style="display:none">
 <table border="0" class="table table-striped">
 <tr class="a">
 <th>hadoop-yarn-common</th></tr>
@@ -1698,7 +1716,7 @@ These include: bzip2, gzip, pack200, xz and ar, cpio, jar, tar, zip, dump.</p>
 <p><b>Description: </b>Apache Hadoop Project POM</p>
 <p><b>Project Licenses: </b><a class="externalLink" href="http://www.apache.org/licenses/LICENSE-2.0.txt">Apache License, Version 2.0</a></p></td></tr></table></div>
 <ul>
-<li>javax.xml.bind:jaxb-api:jar:2.2.12 (compile) <img id="_img107" src="./images/icon_info_sml.gif" alt="[Information]" onclick="toggleDependencyDetails( '_dep106', '_img107' );" style="cursor: pointer; vertical-align: text-bottom;"></img><div id="_dep106" style="display:none">
+<li>javax.xml.bind:jaxb-api:jar:2.2.12 (compile) <img id="_img111" src="./images/icon_info_sml.gif" alt="[Information]" onclick="toggleDependencyDetails( '_dep110', '_img111' );" style="cursor: pointer; vertical-align: text-bottom;"></img><div id="_dep110" style="display:none">
 <table border="0" class="table table-striped">
 <tr class="a">
 <th>Java Architecture for XML Binding</th></tr>
@@ -1707,7 +1725,7 @@ These include: bzip2, gzip, pack200, xz and ar, cpio, jar, tar, zip, dump.</p>
 <p><b>Description: </b>JAXB (JSR 222) API</p>
 <p><b>URL: </b><a class="externalLink" href="http://jaxb.java.net/">http://jaxb.java.net/</a></p>
 <p><b>Project Licenses: </b><a class="externalLink" href="https://glassfish.java.net/public/CDDL+GPL_1_1.html">CDDL 1.1</a>, <a class="externalLink" href="https://glassfish.java.net/public/CDDL+GPL_1_1.html">GPL2 w/ CPE</a></p></td></tr></table></div></li>
-<li>com.sun.jersey:jersey-client:jar:1.9 (compile) <img id="_img109" src="./images/icon_info_sml.gif" alt="[Information]" onclick="toggleDependencyDetails( '_dep108', '_img109' );" style="cursor: pointer; vertical-align: text-bottom;"></img><div id="_dep108" style="display:none">
+<li>com.sun.jersey:jersey-client:jar:1.9 (compile) <img id="_img113" src="./images/icon_info_sml.gif" alt="[Information]" onclick="toggleDependencyDetails( '_dep112', '_img113' );" style="cursor: pointer; vertical-align: text-bottom;"></img><div id="_dep112" style="display:none">
 <table border="0" class="table table-striped">
 <tr class="a">
 <th>jersey-client</th></tr>
@@ -1718,7 +1736,7 @@ These include: bzip2, gzip, pack200, xz and ar, cpio, jar, tar, zip, dump.</p>
         RESTful Web services.</p>
 <p><b>URL: </b><a class="externalLink" href="https://jersey.java.net/jersey-client/">https://jersey.java.net/jersey-client/</a></p>
 <p><b>Project Licenses: </b><a class="externalLink" href="http://glassfish.java.net/public/CDDL+GPL_1_1.html">CDDL 1.1</a>, <a class="externalLink" href="http://glassfish.java.net/public/CDDL+GPL_1_1.html">GPL2 w/ CPE</a></p></td></tr></table></div></li>
-<li>com.google.inject:guice:jar:3.0 (compile) <img id="_img111" src="./images/icon_info_sml.gif" alt="[Information]" onclick="toggleDependencyDetails( '_dep110', '_img111' );" style="cursor: pointer; vertical-align: text-bottom;"></img><div id="_dep110" style="display:none">
+<li>com.google.inject:guice:jar:3.0 (compile) <img id="_img115" src="./images/icon_info_sml.gif" alt="[Information]" onclick="toggleDependencyDetails( '_dep114', '_img115' );" style="cursor: pointer; vertical-align: text-bottom;"></img><div id="_dep114" style="display:none">
 <table border="0" class="table table-striped">
 <tr class="a">
 <th>Google Guice - Core Library</th></tr>
@@ -1728,7 +1746,7 @@ These include: bzip2, gzip, pack200, xz and ar, cpio, jar, tar, zip, dump.</p>
 <p><b>URL: </b><a class="externalLink" href="http://code.google.com/p/google-guice/guice/">http://code.google.com/p/google-guice/guice/</a></p>
 <p><b>Project Licenses: </b><a class="externalLink" href="http://www.apache.org/licenses/LICENSE-2.0.txt">The Apache Software License, Version 2.0</a></p></td></tr></table></div>
 <ul>
-<li>aopalliance:aopalliance:jar:1.0 (compile) <img id="_img113" src="./images/icon_info_sml.gif" alt="[Information]" onclick="toggleDependencyDetails( '_dep112', '_img113' );" style="cursor: pointer; vertical-align: text-bottom;"></img><div id="_dep112" style="display:none">
+<li>aopalliance:aopalliance:jar:1.0 (compile) <img id="_img117" src="./images/icon_info_sml.gif" alt="[Information]" onclick="toggleDependencyDetails( '_dep116', '_img117' );" style="cursor: pointer; vertical-align: text-bottom;"></img><div id="_dep116" style="display:none">
 <table border="0" class="table table-striped">
 <tr class="a">
 <th>AOP alliance</th></tr>
@@ -1737,7 +1755,7 @@ These include: bzip2, gzip, pack200, xz and ar, cpio, jar, tar, zip, dump.</p>
 <p><b>Description: </b>AOP Alliance</p>
 <p><b>URL: </b><a class="externalLink" href="http://aopalliance.sourceforge.net">http://aopalliance.sourceforge.net</a></p>
 <p><b>Project Licenses: </b>Public Domain</p></td></tr></table></div></li></ul></li>
-<li>com.sun.jersey.contribs:jersey-guice:jar:1.9 (compile) <img id="_img115" src="./images/icon_info_sml.gif" alt="[Information]" onclick="toggleDependencyDetails( '_dep114', '_img115' );" style="cursor: pointer; vertical-align: text-bottom;"></img><div id="_dep114" style="display:none">
+<li>com.sun.jersey.contribs:jersey-guice:jar:1.9 (compile) <img id="_img119" src="./images/icon_info_sml.gif" alt="[Information]" onclick="toggleDependencyDetails( '_dep118', '_img119' );" style="cursor: pointer; vertical-align: text-bottom;"></img><div id="_dep118" style="display:none">
 <table border="0" class="table table-striped">
 <tr class="a">
 <th>jersey-guice</th></tr>
@@ -1747,7 +1765,7 @@ These include: bzip2, gzip, pack200, xz and ar, cpio, jar, tar, zip, dump.</p>
         with other projects/frameworks.</p>
 <p><b>URL: </b><a class="externalLink" href="https://jersey.java.net/jersey-contribs/jersey-guice/">https://jersey.java.net/jersey-contribs/jersey-guice/</a></p>
 <p><b>Project Licenses: </b><a class="externalLink" href="http://glassfish.java.net/public/CDDL+GPL_1_1.html">CDDL 1.1</a>, <a class="externalLink" href="http://glassfish.java.net/public/CDDL+GPL_1_1.html">GPL2 w/ CPE</a></p></td></tr></table></div></li></ul></li>
-<li>com.google.inject.extensions:guice-servlet:jar:3.0 (compile) <img id="_img117" src="./images/icon_info_sml.gif" alt="[Information]" onclick="toggleDependencyDetails( '_dep116', '_img117' );" style="cursor: pointer; vertical-align: text-bottom;"></img><div id="_dep116" style="display:none">
+<li>com.google.inject.extensions:guice-servlet:jar:3.0 (compile) <img id="_img121" src="./images/icon_info_sml.gif" alt="[Information]" onclick="toggleDependencyDetails( '_dep120', '_img121' );" style="cursor: pointer; vertical-align: text-bottom;"></img><div id="_dep120" style="display:none">
 <table border="0" class="table table-striped">
 <tr class="a">
 <th>Google Guice - Extensions - Servlet</th></tr>
@@ -1756,7 +1774,7 @@ These include: bzip2, gzip, pack200, xz and ar, cpio, jar, tar, zip, dump.</p>
 <p><b>Description: </b>Guice is a lightweight dependency injection framework for Java 5 and above</p>
 <p><b>URL: </b><a class="externalLink" href="http://code.google.com/p/google-guice/extensions-parent/guice-servlet/">http://code.google.com/p/google-guice/extensions-parent/guice-servlet/</a></p>
 <p><b>Project Licenses: </b><a class="externalLink" href="http://www.apache.org/licenses/LICENSE-2.0.txt">The Apache Software License, Version 2.0</a></p></td></tr></table></div></li></ul></li>
-<li>org.apache.hadoop:hadoop-mapreduce-client-jobclient:jar:2.7.4 (test) <img id="_img119" src="./images/icon_info_sml.gif" alt="[Information]" onclick="toggleDependencyDetails( '_dep118', '_img119' );" style="cursor: pointer; vertical-align: text-bottom;"></img><div id="_dep118" style="display:none">
+<li>org.apache.hadoop:hadoop-mapreduce-client-jobclient:jar:2.7.4 (test) <img id="_img123" src="./images/icon_info_sml.gif" alt="[Information]" onclick="toggleDependencyDetails( '_dep122', '_img123' );" style="cursor: pointer; vertical-align: text-bottom;"></img><div id="_dep122" style="display:none">
 <table border="0" class="table table-striped">
 <tr class="a">
 <th>hadoop-mapreduce-client-jobclient</th></tr>
@@ -1765,7 +1783,7 @@ These include: bzip2, gzip, pack200, xz and ar, cpio, jar, tar, zip, dump.</p>
 <p><b>Description: </b>Apache Hadoop Project POM</p>
 <p><b>Project Licenses: </b><a class="externalLink" href="http://www.apache.org/licenses/LICENSE-2.0.txt">Apache License, Version 2.0</a></p></td></tr></table></div>
 <ul>
-<li>org.apache.hadoop:hadoop-mapreduce-client-common:jar:2.7.4 (test) <img id="_img121" src="./images/icon_info_sml.gif" alt="[Information]" onclick="toggleDependencyDetails( '_dep120', '_img121' );" style="cursor: pointer; vertical-align: text-bottom;"></img><div id="_dep120" style="display:none">
+<li>org.apache.hadoop:hadoop-mapreduce-client-common:jar:2.7.4 (test) <img id="_img125" src="./images/icon_info_sml.gif" alt="[Information]" onclick="toggleDependencyDetails( '_dep124', '_img125' );" style="cursor: pointer; vertical-align: text-bottom;"></img><div id="_dep124" style="display:none">
 <table border="0" class="table table-striped">
 <tr class="a">
 <th>hadoop-mapreduce-client-common</th></tr>
@@ -1774,7 +1792,7 @@ These include: bzip2, gzip, pack200, xz and ar, cpio, jar, tar, zip, dump.</p>
 <p><b>Description: </b>Apache Hadoop Project POM</p>
 <p><b>Project Licenses: </b><a class="externalLink" href="http://www.apache.org/licenses/LICENSE-2.0.txt">Apache License, Version 2.0</a></p></td></tr></table></div>
 <ul>
-<li>org.apache.hadoop:hadoop-yarn-client:jar:2.7.4 (test) <img id="_img123" src="./images/icon_info_sml.gif" alt="[Information]" onclick="toggleDependencyDetails( '_dep122', '_img123' );" style="cursor: pointer; vertical-align: text-bottom;"></img><div id="_dep122" style="display:none">
+<li>org.apache.hadoop:hadoop-yarn-client:jar:2.7.4 (test) <img id="_img127" src="./images/icon_info_sml.gif" alt="[Information]" onclick="toggleDependencyDetails( '_dep126', '_img127' );" style="cursor: pointer; vertical-align: text-bottom;"></img><div id="_dep126" style="display:none">
 <table border="0" class="table table-striped">
 <tr class="a">
 <th>hadoop-yarn-client</th></tr>
@@ -1782,7 +1800,7 @@ These include: bzip2, gzip, pack200, xz and ar, cpio, jar, tar, zip, dump.</p>
 <td>
 <p><b>Description: </b>Apache Hadoop Project POM</p>
 <p><b>Project Licenses: </b><a class="externalLink" href="http://www.apache.org/licenses/LICENSE-2.0.txt">Apache License, Version 2.0</a></p></td></tr></table></div></li>
-<li>org.apache.hadoop:hadoop-yarn-server-common:jar:2.7.4 (test) <img id="_img125" src="./images/icon_info_sml.gif" alt="[Information]" onclick="toggleDependencyDetails( '_dep124', '_img125' );" style="cursor: pointer; vertical-align: text-bottom;"></img><div id="_dep124" style="display:none">
+<li>org.apache.hadoop:hadoop-yarn-server-common:jar:2.7.4 (test) <img id="_img129" src="./images/icon_info_sml.gif" alt="[Information]" onclick="toggleDependencyDetails( '_dep128', '_img129' );" style="cursor: pointer; vertical-align: text-bottom;"></img><div id="_dep128" style="display:none">
 <table border="0" class="table table-striped">
 <tr class="a">
 <th>hadoop-yarn-server-common</th></tr>
@@ -1790,7 +1808,7 @@ These include: bzip2, gzip, pack200, xz and ar, cpio, jar, tar, zip, dump.</p>
 <td>
 <p><b>Description: </b>Apache Hadoop Project POM</p>
 <p><b>Project Licenses: </b><a class="externalLink" href="http://www.apache.org/licenses/LICENSE-2.0.txt">Apache License, Version 2.0</a></p></td></tr></table></div></li></ul></li>
-<li>org.apache.hadoop:hadoop-mapreduce-client-shuffle:jar:2.7.4 (test) <img id="_img127" src="./images/icon_info_sml.gif" alt="[Information]" onclick="toggleDependencyDetails( '_dep126', '_img127' );" style="cursor: pointer; vertical-align: text-bottom;"></img><div id="_dep126" style="display:none">
+<li>org.apache.hadoop:hadoop-mapreduce-client-shuffle:jar:2.7.4 (test) <img id="_img131" src="./images/icon_info_sml.gif" alt="[Information]" onclick="toggleDependencyDetails( '_dep130', '_img131' );" style="cursor: pointer; vertical-align: text-bottom;"></img><div id="_dep130" style="display:none">
 <table border="0" class="table table-striped">
 <tr class="a">
 <th>hadoop-mapreduce-client-shuffle</th></tr>
@@ -1799,7 +1817,7 @@ These include: bzip2, gzip, pack200, xz and ar, cpio, jar, tar, zip, dump.</p>
 <p><b>Description: </b>Apache Hadoop Project POM</p>
 <p><b>Project Licenses: </b><a class="externalLink" href="http://www.apache.org/licenses/LICENSE-2.0.txt">Apache License, Version 2.0</a></p></td></tr></table></div>
 <ul>
-<li>org.apache.hadoop:hadoop-yarn-server-nodemanager:jar:2.7.4 (test) <img id="_img129" src="./images/icon_info_sml.gif" alt="[Information]" onclick="toggleDependencyDetails( '_dep128', '_img129' );" style="cursor: pointer; vertical-align: text-bottom;"></img><div id="_dep128" style="display:none">
+<li>org.apache.hadoop:hadoop-yarn-server-nodemanager:jar:2.7.4 (test) <img id="_img133" src="./images/icon_info_sml.gif" alt="[Information]" onclick="toggleDependencyDetails( '_dep132', '_img133' );" style="cursor: pointer; vertical-align: text-bottom;"></img><div id="_dep132" style="display:none">
 <table border="0" class="table table-striped">
 <tr class="a">
 <th>hadoop-yarn-server-nodemanager</th></tr>
@@ -1807,7 +1825,7 @@ These include: bzip2, gzip, pack200, xz and ar, cpio, jar, tar, zip, dump.</p>
 <td>
 <p><b>Description: </b>Apache Hadoop Project POM</p>
 <p><b>Project Licenses: </b><a class="externalLink" href="http://www.apache.org/licenses/LICENSE-2.0.txt">Apache License, Version 2.0</a></p></td></tr></table></div></li></ul></li></ul></li>
-<li>org.apache.hadoop:hadoop-hdfs:jar:2.7.4 (test) <img id="_img131" src="./images/icon_info_sml.gif" alt="[Information]" onclick="toggleDependencyDetails( '_dep130', '_img131' );" style="cursor: pointer; vertical-align: text-bottom;"></img><div id="_dep130" style="display:none">
+<li>org.apache.hadoop:hadoop-hdfs:jar:2.7.4 (test) <img id="_img135" src="./images/icon_info_sml.gif" alt="[Information]" onclick="toggleDependencyDetails( '_dep134', '_img135' );" style="cursor: pointer; vertical-align: text-bottom;"></img><div id="_dep134" style="display:none">
 <table border="0" class="table table-striped">
 <tr class="a">
 <th>Apache Hadoop HDFS</th></tr>
@@ -1816,7 +1834,7 @@ These include: bzip2, gzip, pack200, xz and ar, cpio, jar, tar, zip, dump.</p>
 <p><b>Description: </b>Apache Hadoop HDFS</p>
 <p><b>Project Licenses: </b><a class="externalLink" href="http://www.apache.org/licenses/LICENSE-2.0.txt">Apache License, Version 2.0</a></p></td></tr></table></div>
 <ul>
-<li>commons-daemon:commons-daemon:jar:1.0.13 (test) <img id="_img133" src="./images/icon_info_sml.gif" alt="[Information]" onclick="toggleDependencyDetails( '_dep132', '_img133' );" style="cursor: pointer; vertical-align: text-bottom;"></img><div id="_dep132" style="display:none">
+<li>commons-daemon:commons-daemon:jar:1.0.13 (test) <img id="_img137" src="./images/icon_info_sml.gif" alt="[Information]" onclick="toggleDependencyDetails( '_dep136', '_img137' );" style="cursor: pointer; vertical-align: text-bottom;"></img><div id="_dep136" style="display:none">
 <table border="0" class="table table-striped">
 <tr class="a">
 <th>Commons Daemon</th></tr>
@@ -1825,7 +1843,7 @@ These include: bzip2, gzip, pack200, xz and ar, cpio, jar, tar, zip, dump.</p>
 <p><b>Description: </b>Apache Commons Daemon software provides an alternative invocation mechanism for unix-daemon-like Java code.</p>
 <p><b>URL: </b><a class="externalLink" href="http://commons.apache.org/daemon/">http://commons.apache.org/daemon/</a></p>
 <p><b>Project Licenses: </b><a class="externalLink" href="http://www.apache.org/licenses/LICENSE-2.0.txt">The Apache Software License, Version 2.0</a></p></td></tr></table></div></li>
-<li>io.netty:netty-all:jar:4.0.23.Final (test) <img id="_img135" src="./images/icon_info_sml.gif" alt="[Information]" onclick="toggleDependencyDetails( '_dep134', '_img135' );" style="cursor: pointer; vertical-align: text-bottom;"></img><div id="_dep134" style="display:none">
+<li>io.netty:netty-all:jar:4.0.23.Final (test) <img id="_img139" src="./images/icon_info_sml.gif" alt="[Information]" onclick="toggleDependencyDetails( '_dep138', '_img139' );" style="cursor: pointer; vertical-align: text-bottom;"></img><div id="_dep138" style="display:none">
 <table border="0" class="table table-striped">
 <tr class="a">
 <th>Netty/All-in-One</th></tr>
@@ -1836,7 +1854,7 @@ These include: bzip2, gzip, pack200, xz and ar, cpio, jar, tar, zip, dump.</p>
     clients.</p>
 <p><b>URL: </b><a class="externalLink" href="http://netty.io/netty-all/">http://netty.io/netty-all/</a></p>
 <p><b>Project Licenses: </b><a class="externalLink" href="http://www.apache.org/licenses/LICENSE-2.0">Apache License, Version 2.0</a></p></td></tr></table></div></li>
-<li>org.fusesource.leveldbjni:leveldbjni-all:jar:1.8 (test) <img id="_img137" src="./images/icon_info_sml.gif" alt="[Information]" onclick="toggleDependencyDetails( '_dep136', '_img137' );" style="cursor: pointer; vertical-align: text-bottom;"></img><div id="_dep136" style="display:none">
+<li>org.fusesource.leveldbjni:leveldbjni-all:jar:1.8 (test) <img id="_img141" src="./images/icon_info_sml.gif" alt="[Information]" onclick="toggleDependencyDetails( '_dep140', '_img141' );" style="cursor: pointer; vertical-align: text-bottom;"></img><div id="_dep140" style="display:none">
 <table border="0" class="table table-striped">
 <tr class="a">
 <th>leveldbjni-all</th></tr>
@@ -1845,7 +1863,7 @@ These include: bzip2, gzip, pack200, xz and ar, cpio, jar, tar, zip, dump.</p>
 <p><b>Description: </b>An uber jar which contains all the leveldbjni platform libraries and dependencies</p>
 <p><b>URL: </b><a class="externalLink" href="http://leveldbjni.fusesource.org/leveldbjni-all">http://leveldbjni.fusesource.org/leveldbjni-all</a></p>
 <p><b>Project Licenses: </b><a class="externalLink" href="http://www.opensource.org/licenses/BSD-3-Clause">The BSD 3-Clause License</a></p></td></tr></table></div></li></ul></li>
-<li>org.apache.hadoop:hadoop-hdfs:test-jar:tests:2.7.4 (test) <img id="_img139" src="./images/icon_info_sml.gif" alt="[Information]" onclick="toggleDependencyDetails( '_dep138', '_img139' );" style="cursor: pointer; vertical-align: text-bottom;"></img><div id="_dep138" style="display:none">
+<li>org.apache.hadoop:hadoop-hdfs:test-jar:tests:2.7.4 (test) <img id="_img143" src="./images/icon_info_sml.gif" alt="[Information]" onclick="toggleDependencyDetails( '_dep142', '_img143' );" style="cursor: pointer; vertical-align: text-bottom;"></img><div id="_dep142" style="display:none">
 <table border="0" class="table table-striped">
 <tr class="a">
 <th>Apache Hadoop HDFS</th></tr>
@@ -1853,7 +1871,7 @@ These include: bzip2, gzip, pack200, xz and ar, cpio, jar, tar, zip, dump.</p>
 <td>
 <p><b>Description: </b>Apache Hadoop HDFS</p>
 <p><b>Project Licenses: </b><a class="externalLink" href="http://www.apache.org/licenses/LICENSE-2.0.txt">Apache License, Version 2.0</a></p></td></tr></table></div></li>
-<li>org.apache.hadoop:hadoop-minicluster:jar:2.7.4 (test) <img id="_img141" src="./images/icon_info_sml.gif" alt="[Information]" onclick="toggleDependencyDetails( '_dep140', '_img141' );" style="cursor: pointer; vertical-align: text-bottom;"></img><div id="_dep140" style="display:none">
+<li>org.apache.hadoop:hadoop-minicluster:jar:2.7.4 (test) <img id="_img145" src="./images/icon_info_sml.gif" alt="[Information]" onclick="toggleDependencyDetails( '_dep144', '_img145' );" style="cursor: pointer; vertical-align: text-bottom;"></img><div id="_dep144" style="display:none">
 <table border="0" class="table table-striped">
 <tr class="a">
 <th>Apache Hadoop Mini-Cluster</th></tr>
@@ -1862,7 +1880,7 @@ These include: bzip2, gzip, pack200, xz and ar, cpio, jar, tar, zip, dump.</p>
 <p><b>Description: </b>Apache Hadoop Mini-Cluster</p>
 <p><b>Project Licenses: </b><a class="externalLink" href="http://www.apache.org/licenses/LICENSE-2.0.txt">Apache License, Version 2.0</a></p></td></tr></table></div>
 <ul>
-<li>org.apache.hadoop:hadoop-common:test-jar:tests:2.7.4 (test) <img id="_img143" src="./images/icon_info_sml.gif" alt="[Information]" onclick="toggleDependencyDetails( '_dep142', '_img143' );" style="cursor: pointer; vertical-align: text-bottom;"></img><div id="_dep142" style="display:none">
+<li>org.apache.hadoop:hadoop-common:test-jar:tests:2.7.4 (test) <img id="_img147" src="./images/icon_info_sml.gif" alt="[Information]" onclick="toggleDependencyDetails( '_dep146', '_img147' );" style="cursor: pointer; vertical-align: text-bottom;"></img><div id="_dep146" style="display:none">
 <table border="0" class="table table-striped">
 <tr class="a">
 <th>Apache Hadoop Common</th></tr>
@@ -1871,7 +1889,7 @@ These include: bzip2, gzip, pack200, xz and ar, cpio, jar, tar, zip, dump.</p>
 <p><b>Description: </b>Apache Hadoop Common</p>
 <p><b>Project Licenses: </b><a class="externalLink" href="http://www.apache.org/licenses/LICENSE-2.0.txt">Apache License, Version 2.0</a></p></td></tr></table></div>
 <ul>
-<li>org.codehaus.jackson:jackson-core-asl:jar:1.9.13 (test) <img id="_img145" src="./images/icon_info_sml.gif" alt="[Information]" onclick="toggleDependencyDetails( '_dep144', '_img145' );" style="cursor: pointer; vertical-align: text-bottom;"></img><div id="_dep144" style="display:none">
+<li>org.codehaus.jackson:jackson-core-asl:jar:1.9.13 (test) <img id="_img149" src="./images/icon_info_sml.gif" alt="[Information]" onclick="toggleDependencyDetails( '_dep148', '_img149' );" style="cursor: pointer; vertical-align: text-bottom;"></img><div id="_dep148" style="display:none">
 <table border="0" class="table table-striped">
 <tr class="a">
 <th>Jackson</th></tr>
@@ -1880,7 +1898,7 @@ These include: bzip2, gzip, pack200, xz and ar, cpio, jar, tar, zip, dump.</p>
 <p><b>Description: </b>Jackson is a high-performance JSON processor (parser, generator)</p>
 <p><b>URL: </b><a class="externalLink" href="http://jackson.codehaus.org">http://jackson.codehaus.org</a></p>
 <p><b>Project Licenses: </b><a class="externalLink" href="http://www.apache.org/licenses/LICENSE-2.0.txt">The Apache Software License, Version 2.0</a></p></td></tr></table></div></li>
-<li>org.codehaus.jackson:jackson-mapper-asl:jar:1.9.13 (test) <img id="_img147" src="./images/icon_info_sml.gif" alt="[Information]" onclick="toggleDependencyDetails( '_dep146', '_img147' );" style="cursor: pointer; vertical-align: text-bottom;"></img><div id="_dep146" style="display:none">
+<li>org.codehaus.jackson:jackson-mapper-asl:jar:1.9.13 (test) <img id="_img151" src="./images/icon_info_sml.gif" alt="[Information]" onclick="toggleDependencyDetails( '_dep150', '_img151' );" style="cursor: pointer; vertical-align: text-bottom;"></img><div id="_dep150" style="display:none">
 <table border="0" class="table table-striped">
 <tr class="a">
 <th>Data Mapper for Jackson</th></tr>
@@ -1890,7 +1908,7 @@ These include: bzip2, gzip, pack200, xz and ar, cpio, jar, tar, zip, dump.</p>
 built on Jackson JSON processor</p>
 <p><b>URL: </b><a class="externalLink" href="http://jackson.codehaus.org">http://jackson.codehaus.org</a></p>
 <p><b>Project Licenses: </b><a class="externalLink" href="http://www.apache.org/licenses/LICENSE-2.0.txt">The Apache Software License, Version 2.0</a></p></td></tr></table></div></li></ul></li>
-<li>org.apache.hadoop:hadoop-yarn-server-tests:test-jar:tests:2.7.4 (test) <img id="_img149" src="./images/icon_info_sml.gif" alt="[Information]" onclick="toggleDependencyDetails( '_dep148', '_img149' );" style="cursor: pointer; vertical-align: text-bottom;"></img><div id="_dep148" style="display:none">
+<li>org.apache.hadoop:hadoop-yarn-server-tests:test-jar:tests:2.7.4 (test) <img id="_img153" src="./images/icon_info_sml.gif" alt="[Information]" onclick="toggleDependencyDetails( '_dep152', '_img153' );" style="cursor: pointer; vertical-align: text-bottom;"></img><div id="_dep152" style="display:none">
 <table border="0" class="table table-striped">
 <tr class="a">
 <th>hadoop-yarn-server-tests</th></tr>
@@ -1899,7 +1917,7 @@ built on Jackson JSON processor</p>
 <p><b>Description: </b>Apache Hadoop Project POM</p>
 <p><b>Project Licenses: </b><a class="externalLink" href="http://www.apache.org/licenses/LICENSE-2.0.txt">Apache License, Version 2.0</a></p></td></tr></table></div>
 <ul>
-<li>org.apache.hadoop:hadoop-yarn-server-resourcemanager:jar:2.7.4 (test) <img id="_img151" src="./images/icon_info_sml.gif" alt="[Information]" onclick="toggleDependencyDetails( '_dep150', '_img151' );" style="cursor: pointer; vertical-align: text-bottom;"></img><div id="_dep150" style="display:none">
+<li>org.apache.hadoop:hadoop-yarn-server-resourcemanager:jar:2.7.4 (test) <img id="_img155" src="./images/icon_info_sml.gif" alt="[Information]" onclick="toggleDependencyDetails( '_dep154', '_img155' );" style="cursor: pointer; vertical-align: text-bottom;"></img><div id="_dep154" style="display:none">
 <table border="0" class="table table-striped">
 <tr class="a">
 <th>hadoop-yarn-server-resourcemanager</th></tr>
@@ -1908,7 +1926,7 @@ built on Jackson JSON processor</p>
 <p><b>Description: </b>Apache Hadoop Project POM</p>
 <p><b>Project Licenses: </b><a class="externalLink" href="http://www.apache.org/licenses/LICENSE-2.0.txt">Apache License, Version 2.0</a></p></td></tr></table></div>
 <ul>
-<li>org.apache.hadoop:hadoop-yarn-server-applicationhistoryservice:jar:2.7.4 (test) <img id="_img153" src="./images/icon_info_sml.gif" alt="[Information]" onclick="toggleDependencyDetails( '_dep152', '_img153' );" style="cursor: pointer; vertical-align: text-bottom;"></img><div id="_dep152" style="display:none">
+<li>org.apache.hadoop:hadoop-yarn-server-applicationhistoryservice:jar:2.7.4 (test) <img id="_img157" src="./images/icon_info_sml.gif" alt="[Information]" onclick="toggleDependencyDetails( '_dep156', '_img157' );" style="cursor: pointer; vertical-align: text-bottom;"></img><div id="_dep156" style="display:none">
 <table border="0" class="table table-striped">
 <tr class="a">
 <th>hadoop-yarn-server-applicationhistoryservice</th></tr>
@@ -1916,7 +1934,7 @@ built on Jackson JSON processor</p>
 <td>
 <p><b>Description: </b>Apache Hadoop Project POM</p>
 <p><b>Project Licenses: </b><a class="externalLink" href="http://www.apache.org/licenses/LICENSE-2.0.txt">Apache License, Version 2.0</a></p></td></tr></table></div></li>
-<li>org.apache.hadoop:hadoop-yarn-server-web-proxy:jar:2.7.4 (test) <img id="_img155" src="./images/icon_info_sml.gif" alt="[Information]" onclick="toggleDependencyDetails( '_dep154', '_img155' );" style="cursor: pointer; vertical-align: text-bottom;"></img><div id="_dep154" style="display:none">
+<li>org.apache.hadoop:hadoop-yarn-server-web-proxy:jar:2.7.4 (test) <img id="_img159" src="./images/icon_info_sml.gif" alt="[Information]" onclick="toggleDependencyDetails( '_dep158', '_img159' );" style="cursor: pointer; vertical-align: text-bottom;"></img><div id="_dep158" style="display:none">
 <table border="0" class="table table-striped">
 <tr class="a">
 <th>hadoop-yarn-server-web-proxy</th></tr>
@@ -1924,7 +1942,7 @@ built on Jackson JSON processor</p>
 <td>
 <p><b>Description: </b>Apache Hadoop Project POM</p>
 <p><b>Project Licenses: </b><a class="externalLink" href="http://www.apache.org/licenses/LICENSE-2.0.txt">Apache License, Version 2.0</a></p></td></tr></table></div></li>
-<li>org.apache.zookeeper:zookeeper:test-jar:tests:3.4.6 (test) <img id="_img157" src="./images/icon_info_sml.gif" alt="[Information]" onclick="toggleDependencyDetails( '_dep156', '_img157' );" style="cursor: pointer; vertical-align: text-bottom;"></img><div id="_dep156" style="display:none">
+<li>org.apache.zookeeper:zookeeper:test-jar:tests:3.4.6 (test) <img id="_img161" src="./images/icon_info_sml.gif" alt="[Information]" onclick="toggleDependencyDetails( '_dep160', '_img161' );" style="cursor: pointer; vertical-align: text-bottom;"></img><div id="_dep160" style="display:none">
 <table border="0" class="table table-striped">
 <tr class="a">
 <th>zookeeper</th></tr>
@@ -1932,7 +1950,7 @@ built on Jackson JSON processor</p>
 <td>
 <p><b>Description: </b>There is currently no description associated with this project.</p>
 <p><b>Project Licenses: </b>No licenses are defined for this project.</p></td></tr></table></div></li></ul></li></ul></li>
-<li>org.apache.hadoop:hadoop-mapreduce-client-jobclient:test-jar:tests:2.7.4 (test) <img id="_img159" src="./images/icon_info_sml.gif" alt="[Information]" onclick="toggleDependencyDetails( '_dep158', '_img159' );" style="cursor: pointer; vertical-align: text-bottom;"></img><div id="_dep158" style="display:none">
+<li>org.apache.hadoop:hadoop-mapreduce-client-jobclient:test-jar:tests:2.7.4 (test) <img id="_img163" src="./images/icon_info_sml.gif" alt="[Information]" onclick="toggleDependencyDetails( '_dep162', '_img163' );" style="cursor: pointer; vertical-align: text-bottom;"></img><div id="_dep162" style="display:none">
 <table border="0" class="table table-striped">
 <tr class="a">
 <th>hadoop-mapreduce-client-jobclient</th></tr>
@@ -1940,7 +1958,7 @@ built on Jackson JSON processor</p>
 <td>
 <p><b>Description: </b>Apache Hadoop Project POM</p>
 <p><b>Project Licenses: </b><a class="externalLink" href="http://www.apache.org/licenses/LICENSE-2.0.txt">Apache License, Version 2.0</a></p></td></tr></table></div></li>
-<li>org.apache.hadoop:hadoop-mapreduce-client-hs:jar:2.7.4 (test) <img id="_img161" src="./images/icon_info_sml.gif" alt="[Information]" onclick="toggleDependencyDetails( '_dep160', '_img161' );" style="cursor: pointer; vertical-align: text-bottom;"></img><div id="_dep160" style="display:none">
+<li>org.apache.hadoop:hadoop-mapreduce-client-hs:jar:2.7.4 (test) <img id="_img165" src="./images/icon_info_sml.gif" alt="[Information]" onclick="toggleDependencyDetails( '_dep164', '_img165' );" style="cursor: pointer; vertical-align: text-bottom;"></img><div id="_dep164" style="display:none">
 <table border="0" class="table table-striped">
 <tr class="a">
 <th>hadoop-mapreduce-client-hs</th></tr>
@@ -1948,7 +1966,7 @@ built on Jackson JSON processor</p>
 <td>
 <p><b>Description: </b>Apache Hadoop Project POM</p>
 <p><b>Project Licenses: </b><a class="externalLink" href="http://www.apache.org/licenses/LICENSE-2.0.txt">Apache License, Version 2.0</a></p></td></tr></table></div></li></ul></li></ul></li>
-<li>org.apache.hbase:hbase-common:jar:3.0.0-SNAPSHOT (compile) <img id="_img163" src="./images/icon_info_sml.gif" alt="[Information]" onclick="toggleDependencyDetails( '_dep162', '_img163' );" style="cursor: pointer; vertical-align: text-bottom;"></img><div id="_dep162" style="display:none">
+<li>org.apache.hbase:hbase-common:jar:3.0.0-SNAPSHOT (compile) <img id="_img167" src="./images/icon_info_sml.gif" alt="[Information]" onclick="toggleDependencyDetails( '_dep166', '_img167' );" style="cursor: pointer; vertical-align: text-bottom;"></img><div id="_dep166" style="display:none">
 <table border="0" class="table table-striped">
 <tr class="a">
 <th>Apache HBase - Common</th></tr>
@@ -1958,7 +1976,7 @@ built on Jackson JSON processor</p>
 <p><b>URL: </b><a class="externalLink" href="http://hbase.apache.org/hbase-build-configuration/hbase-common">http://hbase.apache.org/hbase-build-configuration/hbase-common</a></p>
 <p><b>Project Licenses: </b><a class="externalLink" href="https://www.apache.org/licenses/LICENSE-2.0.txt">Apache License, Version 2.0</a></p></td></tr></table></div>
 <ul>
-<li>org.apache.hbase.thirdparty:hbase-shaded-miscellaneous:jar:1.0.1 (compile) <img id="_img165" src="./images/icon_info_sml.gif" alt="[Information]" onclick="toggleDependencyDetails( '_dep164', '_img165' );" style="cursor: pointer; vertical-align: text-bottom;"></img><div id="_dep164" style="display:none">
+<li>org.apache.hbase.thirdparty:hbase-shaded-miscellaneous:jar:1.0.1 (compile) <img id="_img169" src="./images/icon_info_sml.gif" alt="[Information]" onclick="toggleDependencyDetails( '_dep168', '_img169' );" style="cursor: pointer; vertical-align: text-bottom;"></img><div id="_dep168" style="display:none">
 <table border="0" class="table table-striped">
 <tr class="a">
 <th>Apache HBase Relocated (Shaded) Third-party Miscellaneous Libs</th></tr>
@@ -1968,7 +1986,7 @@ built on Jackson JSON processor</p>
     See below for what this miscellaney includes.</p>
 <p><b>URL: </b><a class="externalLink" href="http://hbase.apache.org/hbase-shaded-miscellaneous">http://hbase.apache.org/hbase-shaded-miscellaneous</a></p>
 <p><b>Project Licenses: </b><a class="externalLink" href="https://www.apache.org/licenses/LICENSE-2.0.txt">Apache License, Version 2.0</a></p></td></tr></table></div></li>
-<li>commons-logging:commons-logging:jar:1.2 (compile) <img id="_img167" src="./images/icon_info_sml.gif" alt="[Information]" onclick="toggleDependencyDetails( '_dep166', '_img167' );" style="cursor: pointer; vertical-align: text-bottom;"></img><div id="_dep166" style="display:none">
+<li>commons-logging:commons-logging:jar:1.2 (compile) <img id="_img171" src="./images/icon_info_sml.gif" alt="[Information]" onclick="toggleDependencyDetails( '_dep170', '_img171' );" style="cursor: pointer; vertical-align: text-bottom;"></img><div id="_dep170" style="display:none">
 <table border="0" class="table table-striped">
 <tr class="a">
 <th>Apache Commons Logging</th></tr>
@@ -1978,7 +1996,7 @@ built on Jackson JSON processor</p>
     well known logging systems.</p>
 <p><b>URL: </b><a class="externalLink" href="http://commons.apache.org/proper/commons-logging/">http://commons.apache.org/proper/commons-logging/</a></p>
 <p><b>Project Licenses: </b><a class="externalLink" href="http://www.apache.org/licenses/LICENSE-2.0.txt">The Apache Software License, Version 2.0</a></p></td></tr></table></div></li>
-<li>commons-codec:commons-codec:jar:1.10 (compile) <img id="_img169" src="./images/icon_info_sml.gif" alt="[Information]" onclick="toggleDependencyDetails( '_dep168', '_img169' );" style="cursor: pointer; vertical-align: text-bottom;"></img><div id="_dep168" style="display:none">
+<li>commons-codec:commons-codec:jar:1.10 (compile) <img id="_img173" src="./images/icon_info_sml.gif" alt="[Information]" onclick="toggleDependencyDetails( '_dep172', '_img173' );" style="cursor: pointer; vertical-align: text-bottom;"></img><div id="_dep172" style="display:none">
 <table border="0" class="table table-striped">
 <tr class="a">
 <th>Apache Commons Codec</th></tr>
@@ -1990,7 +2008,7 @@ built on Jackson JSON processor</p>
      collection of phonetic encoding utilities.</p>
 <p><b>URL: </b><a class="externalLink" href="http://commons.apache.org/proper/commons-codec/">http://commons.apache.org/proper/commons-codec/</a></p>
 <p><b>Project Licenses: </b><a class="externalLink" href="http://www.apache.org/licenses/LICENSE-2.0.txt">Apache License, Version 2.0</a></p></td></tr></table></div></li>
-<li>org.apache.commons:commons-lang3:jar:3.6 (compile) <img id="_img171" src="./images/icon_info_sml.gif" alt="[Information]" onclick="toggleDependencyDetails( '_dep170', '_img171' );" style="cursor: pointer; vertical-align: text-bottom;"></img><div id="_dep170" style="display:none">
+<li>org.apache.commons:commons-lang3:jar:3.6 (compile) <img id="_img175" src="./images/icon_info_sml.gif" alt="[Information]" onclick="toggleDependencyDetails( '_dep174', '_img175' );" style="cursor: pointer; vertical-align: text-bottom;"></img><div id="_dep174" style="display:none">
 <table border="0" class="table table-striped">
 <tr class="a">
 <th>Apache Commons Lang</th></tr>
@@ -2001,7 +2019,7 @@ built on Jackson JSON processor</p>
   standard as to justify existence in java.lang.</p>
 <p><b>URL: </b><a class="externalLink" href="http://commons.apache.org/proper/commons-lang/">http://commons.apache.org/proper/commons-lang/</a></p>
 <p><b>Project Licenses: </b><a class="externalLink" href="https://www.apache.org/licenses/LICENSE-2.0.txt">Apache License, Version 2.0</a></p></td></tr></table></div></li>
-<li>org.apache.commons:commons-collections4:jar:4.1 (compile) <img id="_img173" src="./images/icon_info_sml.gif" alt="[Information]" onclick="toggleDependencyDetails( '_dep172', '_img173' );" style="cursor: pointer; vertical-align: text-bottom;"></img><div id="_dep172" style="display:none">
+<li>org.apache.commons:commons-collections4:jar:4.1 (compile) <img id="_img177" src="./images/icon_info_sml.gif" alt="[Information]" onclick="toggleDependencyDetails( '_dep176', '_img177' );" style="cursor: pointer; vertical-align: text-bottom;"></img><div id="_dep176" style="display:none">
 <table border="0" class="table table-striped">
 <tr class="a">
 <th>Apache Commons Collections</th></tr>
@@ -2010,7 +2028,7 @@ built on Jackson JSON processor</p>
 <p><b>Description: </b>The Apache Commons Collections package contains types that extend and augment the Java Collections Framework.</p>
 <p><b>URL: </b><a class="externalLink" href="http://commons.apache.org/proper/commons-collections/">http://commons.apache.org/proper/commons-collections/</a></p>
 <p><b>Project Licenses: </b><a class="externalLink" href="http://www.apache.org/licenses/LICENSE-2.0.txt">Apache License, Version 2.0</a></p></td></tr></table></div></li>
-<li>commons-io:commons-io:jar:2.5 (compile) <img id="_img175" src="./images/icon_info_sml.gif" alt="[Information]" onclick="toggleDependencyDetails( '_dep174', '_img175' );" style="cursor: pointer; vertical-align: text-bottom;"></img><div id="_dep174" style="display:none">
+<li>commons-io:commons-io:jar:2.5 (compile) <img id="_img179" src="./images/icon_info_sml.gif" alt="[Information]" onclick="toggleDependencyDetails( '_dep178', '_img179' );" style="cursor: pointer; vertical-align: text-bottom;"></img><div id="_dep178" style="display:none">
 <table border="0" class="table table-striped">
 <tr class="a">
 <th>Apache Commons IO</th></tr>
@@ -2020,7 +2038,7 @@ built on Jackson JSON processor</p>
 file comparators, endian transformation classes, and much more.</p>
 <p><b>URL: </b><a class="externalLink" href="http://commons.apache.org/proper/commons-io/">http://commons.apache.org/proper/commons-io/</a></p>
 <p><b>Project Licenses: </b><a class="externalLink" href="http://www.apache.org/licenses/LICENSE-2.0.txt">Apache License, Version 2.0</a></p></td></tr></table></div></li>
-<li>com.google.protobuf:protobuf-java:jar:2.5.0 (compile) <img id="_img177" src="./images/icon_info_sml.gif" alt="[Information]" onclick="toggleDependencyDetails( '_dep176', '_img177' );" style="cursor: pointer; vertical-align: text-bottom;"></img><div id="_dep176" style="display:none">
+<li>com.google.protobuf:protobuf-java:jar:2.5.0 (compile) <img id="_img181" src="./images/icon_info_sml.gif" alt="[Information]" onclick="toggleDependencyDetails( '_dep180', '_img181' );" style="cursor: pointer; vertical-align: text-bottom;"></img><div id="_dep180" style="display:none">
 <table border="0" class="table table-striped">
 <tr class="a">
 <th>Protocol Buffer Java API</th></tr>
@@ -2030,7 +2048,7 @@ file comparators, endian transformation classes, and much more.</p>
     extensible format.</p>
 <p><b>URL: </b><a class="externalLink" href="http://code.google.com/p/protobuf">http://code.google.com/p/protobuf</a></p>
 <p><b>Project Licenses: </b><a class="externalLink" href="http://www.opensource.org/licenses/bsd-license.php">New BSD license</a></p></td></tr></table></div></li>
-<li>org.apache.htrace:htrace-core4:jar:4.2.0-incubating (compile) <img id="_img179" src="./images/icon_info_sml.gif" alt="[Information]" onclick="toggleDependencyDetails( '_dep178', '_img179' );" style="cursor: pointer; vertical-align: text-bottom;"></img><div id="_dep178" style="display:none">
+<li>org.apache.htrace:htrace-core4:jar:4.2.0-incubating (compile) <img id="_img183" src="./images/icon_info_sml.gif" alt="[Information]" onclick="toggleDependencyDetails( '_dep182', '_img183' );" style="cursor: pointer; vertical-align: text-bottom;"></img><div id="_dep182" style="display:none">
 <table border="0" class="table table-striped">
 <tr class="a">
 <th>htrace-core4</th></tr>
@@ -2039,7 +2057,7 @@ file comparators, endian transformation classes, and much more.</p>
 <p><b>Description: </b>A distributed tracing framework.</p>
 <p><b>URL: </b><a class="externalLink" href="http://incubator.apache.org/projects/htrace.html">http://incubator.apache.org/projects/htrace.html</a></p>
 <p><b>Project Licenses: </b><a class="externalLink" href="http://www.apache.org/licenses/LICENSE-2.0.txt">Apache License, Version 2.0</a></p></td></tr></table></div></li>
-<li>org.apache.commons:commons-crypto:jar:1.0.0 (compile) <img id="_img181" src="./images/icon_info_sml.gif" alt="[Information]" onclick="toggleDependencyDetails( '_dep180', '_img181' );" style="cursor: pointer; vertical-align: text-bottom;"></img><div id="_dep180" style="display:none">
+<li>org.apache.commons:commons-crypto:jar:1.0.0 (compile) <img id="_img185" src="./images/icon_info_sml.gif" alt="[Information]" onclick="toggleDependencyDetails( '_dep184', '_img185' );" style="cursor: pointer; vertical-align: text-bottom;"></img><div id="_dep184" style="display:none">
 <table border="0" class="table table-striped">
 <tr class="a">
 <th>Apache Commons Crypto</th></tr>
@@ -2091,7 +2109,7 @@ The following provides more details on the included cryptographic software:
 * Commons Crypto link to and use [OpenSSL](https://www.openssl.org/) ciphers</p>
 <p><b>URL: </b><a class="externalLink" href="http://commons.apache.org/proper/commons-crypto/">http://commons.apache.org/proper/commons-crypto/</a></p>
 <p><b>Project Licenses: </b><a class="externalLink" href="http://www.apache.org/licenses/LICENSE-2.0.txt">Apache License, Version 2.0</a></p></td></tr></table></div></li>
-<li>commons-cli:commons-cli:jar:1.4 (compile) <img id="_img183" src="./images/icon_info_sml.gif" alt="[Information]" onclick="toggleDependencyDetails( '_dep182', '_img183' );" style="cursor: pointer; vertical-align: text-bottom;"></img><div id="_dep182" style="display:none">
+<li>commons-cli:commons-cli:jar:1.4 (compile) <img id="_img187" src="./images/icon_info_sml.gif" alt="[Information]" onclick="toggleDependencyDetails( '_dep186', '_img187' );" style="cursor: pointer; vertical-align: text-bottom;"></img><div id="_dep186" style="display:none">
 <table border="0" class="table table-striped">
 <tr class="a">
 <th>Apache Commons CLI</th></tr>
@@ -2100,7 +2118,7 @@ The following provides more details on the included cryptographic software:
 <p><b>Description: </b>Apache Commons CLI provides a simple API for presenting, processing and validating a command line interface.</p>
 <p><b>URL: </b><a class="externalLink" href="http://commons.apache.org/proper/commons-cli/">http://commons.apache.org/proper/commons-cli/</a></p>
 <p><b>Project Licenses: </b><a class="externalLink" href="https://www.apache.org/licenses/LICENSE-2.0.txt">Apache License, Version 2.0</a></p></td></tr></table></div></li>
-<li>com.github.stephenc.findbugs:findbugs-annotations:jar:1.3.9-1 (compile) <img id="_img185" src="./images/icon_info_sml.gif" alt="[Information]" onclick="toggleDependencyDetails( '_dep184', '_img185' );" style="cursor: pointer; vertical-align: text-bottom;"></img><div id="_dep184" style="display:none">
+<li>com.github.stephenc.findbugs:findbugs-annotations:jar:1.3.9-1 (compile) <img id="_img189" src="./images/icon_info_sml.gif" alt="[Information]" onclick="toggleDependencyDetails( '_dep188', '_img189' );" style="cursor: pointer; vertical-align: text-bottom;"></img><div id="_dep188" style="display:none">
 <table border="0" class="table table-striped">
 <tr class="a">
 <th>Findbugs Annotations under Apache License</th></tr>
@@ -2110,7 +2128,7 @@ The following provides more details on the included cryptographic software:
     by the javadocs and at http://findbugs.sourceforge.net/manual/annotations.html.</p>
 <p><b>URL: </b><a class="externalLink" href="http://stephenc.github.com/findbugs-annotations">http://stephenc.github.com/findbugs-annotations</a></p>
 <p><b>Project Licenses: </b><a class="externalLink" href="http://www.apache.org/licenses/LICENSE-2.0.txt">Apache License, Version 2.0</a></p></td></tr></table></div></li>
-<li>com.fasterxml.jackson.core:jackson-databind:jar:2.9.2 (compile) <img id="_img187" src="./images/icon_info_sml.gif" alt="[Information]" onclick="toggleDependencyDetails( '_dep186', '_img187' );" style="cursor: pointer; vertical-align: text-bottom;"></img><div id="_dep186" style="display:none">
+<li>com.fasterxml.jackson.core:jackson-databind:jar:2.9.2 (compile) <img id="_img191" src="./images/icon_info_sml.gif" alt="[Information]" onclick="toggleDependencyDetails( '_dep190', '_img191' );" style="cursor: pointer; vertical-align: text-bottom;"></img><div id="_dep190" style="display:none">
 <table border="0" class="table table-striped">
 <tr class="a">
 <th>jackson-databind</th></tr>
@@ -2120,7 +2138,7 @@ The following provides more details on the included cryptographic software:
 <p><b>URL: </b><a class="externalLink" href="http://github.com/FasterXML/jackson">http://github.com/FasterXML/jackson</a></p>
 <p><b>Project Licenses: </b><a class="externalLink" href="http://www.apache.org/licenses/LICENSE-2.0.txt">The Apache Software License, Version 2.0</a></p></td></tr></table></div>
 <ul>
-<li>com.fasterxml.jackson.core:jackson-annotations:jar:2.9.0 (compile) <img id="_img189" src="./images/icon_info_sml.gif" alt="[Information]" onclick="toggleDependencyDetails( '_dep188', '_img189' );" style="cursor: pointer; vertical-align: text-bottom;"></img><div id="_dep188" style="display:none">
+<li>com.fasterxml.jackson.core:jackson-annotations:jar:2.9.0 (compile) <img id="_img193" src="./images/icon_info_sml.gif" alt="[Information]" onclick="toggleDependencyDetails( '_dep192', '_img193' );" style="cursor: pointer; vertical-align: text-bottom;"></img><div id="_dep192" style="display:none">
 <table border="0" class="table table-striped">
 <tr class="a">
 <th>Jackson-annotations</th></tr>
@@ -2129,7 +2147,7 @@ The following provides more details on the included cryptographic software:
 <p><b>Description: </b>Core annotations used for value types, used by Jackson data binding package.</p>
 <p><b>URL: </b><a class="externalLink" href="http://github.com/FasterXML/jackson">http://github.com/FasterXML/jackson</a></p>
 <p><b>Project Licenses: </b><a class="externalLink" href="http://www.apache.org/licenses/LICENSE-2.0.txt">The Apache Software License, Version 2.0</a></p></td></tr></table></div></li>
-<li>com.fasterxml.jackson.core:jackson-core:jar:2.9.2 (compile) <img id="_img191" src="./images/icon_info_sml.gif" alt="[Information]" onclick="toggleDependencyDetails( '_dep190', '_img191' );" style="cursor: pointer; vertical-align: text-bottom;"></img><div id="_dep190" style="display:none">
+<li>com.fasterxml.jackson.core:jackson-core:jar:2.9.2 (compile) <img id="_img195" src="./images/icon_info_sml.gif" alt="[Information]" onclick="toggleDependencyDetails( '_dep194', '_img195' );" style="cursor: pointer; vertical-align: text-bottom;"></img><div id="_dep194" style="display:none">
 <table border="0" class="table table-striped">
 <tr class="a">
 <th>Jackson-core</th></tr>
@@ -2138,7 +2156,7 @@ The following provides more details on the included cryptographic software:
 <p><b>Description: </b>Core Jackson processing abstractions (aka Streaming API), implementation for JSON</p>
 <p><b>URL: </b><a class="externalLink" href="https://github.com/FasterXML/jackson-core">https://github.com/FasterXML/jackson-core</a></p>
 <p><b>Project Licenses: </b><a class="externalLink" href="http://www.apache.org/licenses/LICENSE-2.0.txt">The Apache Software License, Version 2.0</a></p></td></tr></table></div></li></ul></li>
-<li>log4j:log4j:jar:1.2.17 (compile) <img id="_img193" src="./images/icon_info_sml.gif" alt="[Information]" onclick="toggleDependencyDetails( '_dep192', '_img193' );" style="cursor: pointer; vertical-align: text-bottom;"></img><div id="_dep192" style="display:none">
+<li>log4j:log4j:jar:1.2.17 (compile) <img id="_img197" src="./images/icon_info_sml.gif" alt="[Information]" onclick="toggleDependencyDetails( '_dep196', '_img197' );" style="cursor: pointer; vertical-align: text-bottom;"></img><div id="_dep196" style="display:none">
 <table border="0" class="table table-striped">
 <tr class="a">
 <th>Apache Log4j</th></tr>
@@ -2147,7 +2165,7 @@ The following provides more details on the included cryptographic software:
 <p><b>Description: </b>Apache Log4j 1.2</p>
 <p><b>URL: </b><a class="externalLink" href="http://logging.apache.org/log4j/1.2/">http://logging.apache.org/log4j/1.2/</a></p>
 <p><b>Project Licenses: </b><a class="externalLink" href="http://www.apache.org/licenses/LICENSE-2.0.txt">The Apache Software License, Version 2.0</a></p></td></tr></table></div></li></ul></li>
-<li>org.apache.hbase:hbase-client:jar:3.0.0-SNAPSHOT (compile) <img id="_img195" src="./images/icon_info_sml.gif" alt="[Information]" onclick="toggleDependencyDetails( '_dep194', '_img195' );" style="cursor: pointer; vertical-align: text-bottom;"></img><div id="_dep194" style="display:none">
+<li>org.apache.hbase:hbase-client:jar:3.0.0-SNAPSHOT (compile) <img id="_img199" src="./images/icon_info_sml.gif" alt="[Information]" onclick="toggleDependencyDetails( '_dep198', '_img199' );" style="cursor: pointer; vertical-align: text-bottom;"></img><div id="_dep198" style="display:none">
 <table border="0" class="table table-striped">
 <tr class="a">
 <th>Apache HBase - Client</th></tr>
@@ -2157,7 +2175,7 @@ The following provides more details on the included cryptographic software:
 <p><b>URL: </b><a class="externalLink" href="http://hbase.apache.org/hbase-build-configuration/hbase-client">http://hbase.apache.org/hbase-build-configuration/hbase-client</a></p>
 <p><b>Project Licenses: </b><a class="externalLink" href="https://www.apache.org/licenses/LICENSE-2.0.txt">Apache License, Version 2.0</a></p></td></tr></table></div>
 <ul>
-<li>org.apache.hbase.thirdparty:hbase-shaded-protobuf:jar:1.0.1 (compile) <img id="_img197" src="./images/icon_info_sml.gif" alt="[Information]" onclick="toggleDependencyDetails( '_dep196', '_img197' );" style="cursor: pointer; vertical-align: text-bottom;"></img><div id="_dep196" style="display:none">
+<li>org.apache.hbase.thirdparty:hbase-shaded-protobuf:jar:1.0.1 (compile) <img id="_img201" src="./images/icon_info_sml.gif" alt="[Information]" onclick="toggleDependencyDetails( '_dep200', '_img201' );" style="cursor: pointer; vertical-align: text-bottom;"></img><div id="_dep200" style="display:none">
 <table border="0" class="table table-striped">
 <tr class="a">
 <th>Apache HBase Patched &amp; Relocated (Shaded) Protobuf</th></tr>
@@ -2166,7 +2184,7 @@ The following provides more details on the included cryptographic software:
 <p><b>Description: </b>Pulls down protobuf, patches it, compiles, and then relocates/shades.</p>
 <p><b>URL: </b><a class="externalLink" href="http://hbase.apache.org/hbase-shaded-protobuf">http://hbase.apache.org/hbase-shaded-protobuf</a></p>
 <p><b>Project Licenses: </b><a class="externalLink" href="https://www.apache.org/licenses/LICENSE-2.0.txt">Apache License, Version 2.0</a></p></td></tr></table></div></li>
-<li>org.apache.hbase:hbase-protocol-shaded:jar:3.0.0-SNAPSHOT (compile) <img id="_img199" src="./images/icon_info_sml.gif" alt="[Information]" onclick="toggleDependencyDetails( '_dep198', '_img199' );" style="cursor: pointer; vertical-align: text-bottom;"></img><div id="_dep198" style="display:none">
+<li>org.apache.hbase:hbase-protocol-shaded:jar:3.0.0-SNAPSHOT (compile) <img id="_img203" src="./images/icon_info_sml.gif" alt="[Information]" onclick="toggleDependencyDetails( '_dep202', '_img203' );" style="cursor: pointer; vertical-align: text-bottom;"></img><div id="_dep202" style="display:none">
 <table border="0" class="table table-striped">
 <tr class="a">
 <th>Apache HBase - Shaded Protocol</th></tr>
@@ -2175,7 +2193,7 @@ The following provides more details on the included cryptographic software:
 <p><b>Description: </b>Shaded protobuf protocol classes used by HBase internally.</p>
 <p><b>URL: </b><a class="externalLink" href="http://hbase.apache.org/hbase-build-configuration/hbase-protocol-shaded">http://hbase.apache.org/hbase-build-configuration/hbase-protocol-shaded</a></p>
 <p><b>Project Licenses: </b><a class="externalLink" href="https://www.apache.org/licenses/LICENSE-2.0.txt">Apache License, Version 2.0</a></p></td></tr></table></div></li>
-<li>org.apache.hbase.thirdparty:hbase-shaded-netty:jar:1.0.1 (compile) <img id="_img201" src="./images/icon_info_sml.gif" alt="[Information]" onclick="toggleDependencyDetails( '_dep200', '_img201' );" style="cursor: pointer; vertical-align: text-bottom;"></img><div id="_dep200" style="display:none">
+<li>org.apache.hbase.thirdparty:hbase-shaded-netty:jar:1.0.1 (compile) <img id="_img205" src="./images/icon_info_sml.gif" alt="[Information]" onclick="toggleDependencyDetails( '_dep204', '_img205' );" style="cursor: pointer; vertical-align: text-bottom;"></img><div id="_dep204" style="display:none">
 <table border="0" class="table table-striped">
 <tr class="a">
 <th>Apache HBase Relocated (Shaded) Netty Libs</th></tr>
@@ -2184,7 +2202,7 @@ The following provides more details on the included cryptographic software:
 <p><b>Description: </b>Pulls down netty.io, relocates nd then makes a fat new jar with them all in it.</p>
 <p><b>URL: </b><a class="externalLink" href="http://hbase.apache.org/hbase-shaded-netty">http://hbase.apache.org/hbase-shaded-netty</a></p>
 <p><b>Project Licenses: </b><a class="externalLink" href="https://www.apache.org/licenses/LICENSE-2.0.txt">Apache License, Version 2.0</a></p></td></tr></table></div></li>
-<li>org.apache.zookeeper:zookeeper:jar:3.4.10 (compile) <img id="_img203" src="./images/icon_info_sml.gif" alt="[Information]" onclick="toggleDependencyDetails( '_dep202', '_img203' );" style="cursor: pointer; vertical-align: text-bottom;"></img><div id="_dep202" style="display:none">
+<li>org.apache.zookeeper:zookeeper:jar:3.4.10 (compile) <img id="_img207" src="./images/icon_info_sml.gif" alt="[Information]" onclick="toggleDependencyDetails( '_dep206', '_img207' );" style="cursor: pointer; vertical-align: text-bottom;"></img><div id="_dep206" style="display:none">
 <table border="0" class="table table-striped">
 <tr class="a">
 <th>zookeeper</th></tr>
@@ -2192,7 +2210,7 @@ The following provides more details on the included cryptographic software:
 <td>
 <p><b>Description: </b>There is currently no description associated with this project.</p>
 <p><b>Project Licenses: </b><a class="externalLink" href="http://www.apache.org/licenses/LICENSE-2.0.txt">The Apache Software License, Version 2.0</a></p></td></tr></table></div></li>
-<li>org.jruby.jcodings:jcodings:jar:1.0.18 (compile) <img id="_img205" src="./images/icon_info_sml.gif" alt="[Information]" onclick="toggleDependencyDetails( '_dep204', '_img205' );" style="cursor: pointer; vertical-align: text-bottom;"></img><div id="_dep204" style="display:none">
+<li>org.jruby.jcodings:jcodings:jar:1.0.18 (compile) <img id="_img209" src="./images/icon_info_sml.gif" alt="[Information]" onclick="toggleDependencyDetails( '_dep208', '_img209' );" style="cursor: pointer; vertical-align: text-bottom;"></img><div id="_dep208" style="display:none">
 <table border="0" class="table table-striped">
 <tr class="a">
 <th>JCodings</th></tr>
@@ -2201,7 +2219,7 @@ The following provides more details on the included cryptographic software:
 <p><b>Description: </b>Byte based encoding support library for java</p>
 <p><b>URL: </b><a class="externalLink" href="http://nexus.sonatype.org/oss-repository-hosting.html/jcodings">http://nexus.sonatype.org/oss-repository-hosting.html/jcodings</a></p>
 <p><b>Project Licenses: </b><a class="externalLink" href="http://www.opensource.org/licenses/mit-license.php">MIT License</a></p></td></tr></table></div></li>
-<li>org.jruby.joni:joni:jar:2.1.11 (compile) <img id="_img207" src="./images/icon_info_sml.gif" alt="[Information]" onclick="toggleDependencyDetails( '_dep206', '_img207' );" style="cursor: pointer; vertical-align: text-bottom;"></img><div id="_dep206" style="display:none">
+<li>org.jruby.joni:joni:jar:2.1.11 (compile) <img id="_img211" src="./images/icon_info_sml.gif" alt="[Information]" onclick="toggleDependencyDetails( '_dep210', '_img211' );" style="cursor: pointer; vertical-align: text-bottom;"></img><div id="_dep210" style="display:none">
 <table border="0" class="table table-striped">
 <tr class="a">
 <th>Joni</th></tr>
@@ -2211,7 +2229,7 @@ The following provides more details on the included cryptographic software:
     that uses byte arrays directly instead of java Strings and chars</p>
 <p><b>URL: </b><a class="externalLink" href="http://nexus.sonatype.org/oss-repository-hosting.html/joni">http://nexus.sonatype.org/oss-repository-hosting.html/joni</a></p>
 <p><b>Project Licenses: </b><a class="externalLink" href="http://www.opensource.org/licenses/mit-license.php">MIT License</a></p></td></tr></table></div></li>
-<li>io.dropwizard.metrics:metrics-core:jar:3.2.1 (compile) <img id="_img209" src="./images/icon_info_sml.gif" alt="[Information]" onclick="toggleDependencyDetails( '_dep208', '_img209' );" style="cursor: pointer; vertical-align: text-bottom;"></img><div id="_dep208" style="display:none">
+<li>io.dropwizard.metrics:metrics-core:jar:3.2.1 (compile) <img id="_img213" src="./images/icon_info_sml.gif" alt="[Information]" onclick="toggleDependencyDetails( '_dep212', '_img213' );" style="cursor: pointer; vertical-align: text-bottom;"></img><div id="_dep212" style="display:none">
 <table border="0" class="table table-striped">
 <tr class="a">
 <th>Metrics Core</th></tr>
@@ -2221,25 +2239,7 @@ The following provides more details on the included cryptographic software:
         production. Metrics provides a powerful toolkit of ways to measure the behavior of critical
         components in your production environment.</p>
 <p><b>URL: </b><a class="externalLink" href="http://metrics.codahale.com/metrics-core/">http://metrics.codahale.com/metrics-core/</a></p>
-<p><b>Project Licenses: </b><a class="externalLink" href="http://www.apache.org/licenses/LICENSE-2.0.html">Apache License 2.0</a></p></td></tr></table></div></li>
-<li>org.apache.curator:curator-framework:jar:4.0.0 (compile) <img id="_img211" src="./images/icon_info_sml.gif" alt="[Information]" onclick="toggleDependencyDetails( '_dep210', '_img211' );" style="cursor: pointer; vertical-align: text-bottom;"></img><div id="_dep210" style="display:none">
-<table border="0" class="table table-striped">
-<tr class="a">
-<th>Curator Framework</th></tr>
-<tr class="b">
-<td>
-<p><b>Description: </b>High-level API that greatly simplifies using ZooKeeper.</p>
-<p><b>URL: </b><a class="externalLink" href="http://curator.apache.org/curator-framework">http://curator.apache.org/curator-framework</a></p>
-<p><b>Project Licenses: </b><a class="externalLink" href="http://www.apache.org/licenses/LICENSE-2.0.txt">The Apache Software License, Version 2.0</a></p></td></tr></table></div></li>
-<li>org.apache.curator:curator-client:jar:4.0.0 (compile) <img id="_img213" src="./images/icon_info_sml.gif" alt="[Information]" onclick="toggleDependencyDetails( '_dep212', '_img213' );" style="cursor: pointer; vertical-align: text-bottom;"></img><div id="_dep212" style="display:none">
-<table border="0" class="table table-striped">
-<tr class="a">
-<th>Curator Client</th></tr>
-<tr class="b">
-<td>
-<p><b>Description: </b>Low-level API</p>
-<p><b>URL: </b><a class="externalLink" href="http://curator.apache.org/curator-client">http://curator.apache.org/curator-client</a></p>
-<p><b>Project Licenses: </b><a class="externalLink" href="http://www.apache.org/licenses/LICENSE-2.0.txt">The Apache Software License, Version 2.0</a></p></td></tr></table></div></li></ul></li>
+<p><b>Project Licenses: </b><a class="externalLink" href="http://www.apache.org/licenses/LICENSE-2.0.html">Apache License 2.0</a></p></td></tr></table></div></li></ul></li>
 <li>org.apache.hbase:hbase-server:test-jar:tests:3.0.0-SNAPSHOT (test) <img id="_img215" src="./images/icon_info_sml.gif" alt="[Information]" onclick="toggleDependencyDetails( '_dep214', '_img215' );" style="cursor: pointer; vertical-align: text-bottom;"></img><div id="_dep214" style="display:none">
 <table border="0" class="table table-striped">
 <tr class="a">
@@ -3459,7 +3459,7 @@ The following provides more details on the included cryptographic software:
 <td>No</td></tr>
 <tr class="b">
 <td>hbase-annotations-3.0.0-SNAPSHOT-tests.jar</td>
-<td>14.3 kB</td>
+<td>14.7 kB</td>
 <td>-</td>
 <td>-</td>
 <td>-</td>
@@ -4144,7 +4144,7 @@ The following provides more details on the included cryptographic software:
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2017-12-02</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2017-12-03</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/c54c242b/hbase-build-configuration/hbase-archetypes/hbase-client-project/dependency-convergence.html
----------------------------------------------------------------------
diff --git a/hbase-build-configuration/hbase-archetypes/hbase-client-project/dependency-convergence.html b/hbase-build-configuration/hbase-archetypes/hbase-client-project/dependency-convergence.html
index 0a58bbe..49165b9 100644
--- a/hbase-build-configuration/hbase-archetypes/hbase-client-project/dependency-convergence.html
+++ b/hbase-build-configuration/hbase-archetypes/hbase-client-project/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="20171202" />
+    <meta name="Date-Revision-yyyymmdd" content="20171203" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase - Exemplar for hbase-client archetype &#x2013; Reactor Dependency Convergence</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -838,7 +838,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2017-12-02</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2017-12-03</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/c54c242b/hbase-build-configuration/hbase-archetypes/hbase-client-project/dependency-info.html
----------------------------------------------------------------------
diff --git a/hbase-build-configuration/hbase-archetypes/hbase-client-project/dependency-info.html b/hbase-build-configuration/hbase-archetypes/hbase-client-project/dependency-info.html
index fbd7c1c..7967170 100644
--- a/hbase-build-configuration/hbase-archetypes/hbase-client-project/dependency-info.html
+++ b/hbase-build-configuration/hbase-archetypes/hbase-client-project/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="20171202" />
+    <meta name="Date-Revision-yyyymmdd" content="20171203" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase - Exemplar for hbase-client archetype &#x2013; Dependency Information</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -147,7 +147,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2017-12-02</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2017-12-03</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/c54c242b/hbase-build-configuration/hbase-archetypes/hbase-client-project/dependency-management.html
----------------------------------------------------------------------
diff --git a/hbase-build-configuration/hbase-archetypes/hbase-client-project/dependency-management.html b/hbase-build-configuration/hbase-archetypes/hbase-client-project/dependency-management.html
index a03716a..96200f6 100644
--- a/hbase-build-configuration/hbase-archetypes/hbase-client-project/dependency-management.html
+++ b/hbase-build-configuration/hbase-archetypes/hbase-client-project/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="20171202" />
+    <meta name="Date-Revision-yyyymmdd" content="20171203" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase - Exemplar for hbase-client archetype &#x2013; Project Dependency Management</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -804,7 +804,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2017-12-02</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2017-12-03</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/c54c242b/hbase-build-configuration/hbase-archetypes/hbase-client-project/index.html
----------------------------------------------------------------------
diff --git a/hbase-build-configuration/hbase-archetypes/hbase-client-project/index.html b/hbase-build-configuration/hbase-archetypes/hbase-client-project/index.html
index 2e40359..a1ef62d 100644
--- a/hbase-build-configuration/hbase-archetypes/hbase-client-project/index.html
+++ b/hbase-build-configuration/hbase-archetypes/hbase-client-project/index.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="20171202" />
+    <meta name="Date-Revision-yyyymmdd" content="20171203" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase - Exemplar for hbase-client archetype &#x2013; About</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -119,7 +119,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2017-12-02</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2017-12-03</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/c54c242b/hbase-build-configuration/hbase-archetypes/hbase-client-project/integration.html
----------------------------------------------------------------------
diff --git a/hbase-build-configuration/hbase-archetypes/hbase-client-project/integration.html b/hbase-build-configuration/hbase-archetypes/hbase-client-project/integration.html
index 6c93679..ee849b7 100644
--- a/hbase-build-configuration/hbase-archetypes/hbase-client-project/integration.html
+++ b/hbase-build-configuration/hbase-archetypes/hbase-client-project/integration.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="20171202" />
+    <meta name="Date-Revision-yyyymmdd" content="20171203" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase - Exemplar for hbase-client archetype &#x2013; CI Management</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -126,7 +126,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2017-12-02</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2017-12-03</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/c54c242b/hbase-build-configuration/hbase-archetypes/hbase-client-project/issue-tracking.html
----------------------------------------------------------------------
diff --git a/hbase-build-configuration/hbase-archetypes/hbase-client-project/issue-tracking.html b/hbase-build-configuration/hbase-archetypes/hbase-client-project/issue-tracking.html
index ee9c100..e75f8b1 100644
--- a/hbase-build-configuration/hbase-archetypes/hbase-client-project/issue-tracking.html
+++ b/hbase-build-configuration/hbase-archetypes/hbase-client-project/issue-tracking.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="20171202" />
+    <meta name="Date-Revision-yyyymmdd" content="20171203" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase - Exemplar for hbase-client archetype &#x2013; Issue Management</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -123,7 +123,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2017-12-02</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2017-12-03</li>
             </p>
                 </div>
 


[34/51] [partial] hbase-site git commit: Published site at .

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/c54c242b/devapidocs/src-html/org/apache/hadoop/hbase/client/ZKAsyncRegistry.CuratorEventProcessor.html
----------------------------------------------------------------------
diff --git a/devapidocs/src-html/org/apache/hadoop/hbase/client/ZKAsyncRegistry.CuratorEventProcessor.html b/devapidocs/src-html/org/apache/hadoop/hbase/client/ZKAsyncRegistry.CuratorEventProcessor.html
deleted file mode 100644
index 74375dd..0000000
--- a/devapidocs/src-html/org/apache/hadoop/hbase/client/ZKAsyncRegistry.CuratorEventProcessor.html
+++ /dev/null
@@ -1,337 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<html lang="en">
-<head>
-<title>Source code</title>
-<link rel="stylesheet" type="text/css" href="../../../../../../stylesheet.css" title="Style">
-</head>
-<body>
-<div class="sourceContainer">
-<pre><span class="sourceLineNo">001</span>/**<a name="line.1"></a>
-<span class="sourceLineNo">002</span> * Licensed to the Apache Software Foundation (ASF) under one<a name="line.2"></a>
-<span class="sourceLineNo">003</span> * or more contributor license agreements.  See the NOTICE file<a name="line.3"></a>
-<span class="sourceLineNo">004</span> * distributed with this work for additional information<a name="line.4"></a>
-<span class="sourceLineNo">005</span> * regarding copyright ownership.  The ASF licenses this file<a name="line.5"></a>
-<span class="sourceLineNo">006</span> * to you under the Apache License, Version 2.0 (the<a name="line.6"></a>
-<span class="sourceLineNo">007</span> * "License"); you may not use this file except in compliance<a name="line.7"></a>
-<span class="sourceLineNo">008</span> * with the License.  You may obtain a copy of the License at<a name="line.8"></a>
-<span class="sourceLineNo">009</span> *<a name="line.9"></a>
-<span class="sourceLineNo">010</span> *     http://www.apache.org/licenses/LICENSE-2.0<a name="line.10"></a>
-<span class="sourceLineNo">011</span> *<a name="line.11"></a>
-<span class="sourceLineNo">012</span> * Unless required by applicable law or agreed to in writing, software<a name="line.12"></a>
-<span class="sourceLineNo">013</span> * distributed under the License is distributed on an "AS IS" BASIS,<a name="line.13"></a>
-<span class="sourceLineNo">014</span> * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.<a name="line.14"></a>
-<span class="sourceLineNo">015</span> * See the License for the specific language governing permissions and<a name="line.15"></a>
-<span class="sourceLineNo">016</span> * limitations under the License.<a name="line.16"></a>
-<span class="sourceLineNo">017</span> */<a name="line.17"></a>
-<span class="sourceLineNo">018</span>package org.apache.hadoop.hbase.client;<a name="line.18"></a>
-<span class="sourceLineNo">019</span><a name="line.19"></a>
-<span class="sourceLineNo">020</span>import static org.apache.hadoop.hbase.HConstants.DEFAULT_ZK_SESSION_TIMEOUT;<a name="line.20"></a>
-<span class="sourceLineNo">021</span>import static org.apache.hadoop.hbase.HConstants.ZK_SESSION_TIMEOUT;<a name="line.21"></a>
-<span class="sourceLineNo">022</span>import static org.apache.hadoop.hbase.client.RegionInfo.DEFAULT_REPLICA_ID;<a name="line.22"></a>
-<span class="sourceLineNo">023</span>import static org.apache.hadoop.hbase.client.RegionInfoBuilder.FIRST_META_REGIONINFO;<a name="line.23"></a>
-<span class="sourceLineNo">024</span>import static org.apache.hadoop.hbase.client.RegionReplicaUtil.getRegionInfoForDefaultReplica;<a name="line.24"></a>
-<span class="sourceLineNo">025</span>import static org.apache.hadoop.hbase.client.RegionReplicaUtil.getRegionInfoForReplica;<a name="line.25"></a>
-<span class="sourceLineNo">026</span>import static org.apache.hadoop.hbase.shaded.protobuf.ProtobufUtil.lengthOfPBMagic;<a name="line.26"></a>
-<span class="sourceLineNo">027</span>import static org.apache.hadoop.hbase.zookeeper.ZKMetadata.removeMetaData;<a name="line.27"></a>
-<span class="sourceLineNo">028</span><a name="line.28"></a>
-<span class="sourceLineNo">029</span>import java.io.IOException;<a name="line.29"></a>
-<span class="sourceLineNo">030</span>import java.util.concurrent.CompletableFuture;<a name="line.30"></a>
-<span class="sourceLineNo">031</span>import java.util.concurrent.TimeUnit;<a name="line.31"></a>
-<span class="sourceLineNo">032</span><a name="line.32"></a>
-<span class="sourceLineNo">033</span>import org.apache.commons.lang3.mutable.MutableInt;<a name="line.33"></a>
-<span class="sourceLineNo">034</span>import org.apache.commons.logging.Log;<a name="line.34"></a>
-<span class="sourceLineNo">035</span>import org.apache.commons.logging.LogFactory;<a name="line.35"></a>
-<span class="sourceLineNo">036</span>import org.apache.curator.framework.CuratorFramework;<a name="line.36"></a>
-<span class="sourceLineNo">037</span>import org.apache.curator.framework.CuratorFrameworkFactory;<a name="line.37"></a>
-<span class="sourceLineNo">038</span>import org.apache.curator.framework.api.BackgroundPathable;<a name="line.38"></a>
-<span class="sourceLineNo">039</span>import org.apache.curator.framework.api.CuratorEvent;<a name="line.39"></a>
-<span class="sourceLineNo">040</span>import org.apache.curator.retry.RetryNTimes;<a name="line.40"></a>
-<span class="sourceLineNo">041</span>import org.apache.hadoop.conf.Configuration;<a name="line.41"></a>
-<span class="sourceLineNo">042</span>import org.apache.hadoop.hbase.ClusterId;<a name="line.42"></a>
-<span class="sourceLineNo">043</span>import org.apache.hadoop.hbase.HRegionLocation;<a name="line.43"></a>
-<span class="sourceLineNo">044</span>import org.apache.hadoop.hbase.RegionLocations;<a name="line.44"></a>
-<span class="sourceLineNo">045</span>import org.apache.hadoop.hbase.ServerName;<a name="line.45"></a>
-<span class="sourceLineNo">046</span>import org.apache.hadoop.hbase.exceptions.DeserializationException;<a name="line.46"></a>
-<span class="sourceLineNo">047</span>import org.apache.hadoop.hbase.master.RegionState;<a name="line.47"></a>
-<span class="sourceLineNo">048</span>import org.apache.hadoop.hbase.shaded.com.google.common.annotations.VisibleForTesting;<a name="line.48"></a>
-<span class="sourceLineNo">049</span>import org.apache.hadoop.hbase.shaded.protobuf.generated.HBaseProtos;<a name="line.49"></a>
-<span class="sourceLineNo">050</span>import org.apache.hadoop.hbase.shaded.protobuf.generated.ZooKeeperProtos;<a name="line.50"></a>
-<span class="sourceLineNo">051</span>import org.apache.hadoop.hbase.util.Pair;<a name="line.51"></a>
-<span class="sourceLineNo">052</span>import org.apache.hadoop.hbase.util.Threads;<a name="line.52"></a>
-<span class="sourceLineNo">053</span>import org.apache.hadoop.hbase.zookeeper.ZKConfig;<a name="line.53"></a>
-<span class="sourceLineNo">054</span>import org.apache.hadoop.hbase.zookeeper.ZNodePaths;<a name="line.54"></a>
-<span class="sourceLineNo">055</span>import org.apache.yetus.audience.InterfaceAudience;<a name="line.55"></a>
-<span class="sourceLineNo">056</span>import org.apache.zookeeper.data.Stat;<a name="line.56"></a>
-<span class="sourceLineNo">057</span><a name="line.57"></a>
-<span class="sourceLineNo">058</span><a name="line.58"></a>
-<span class="sourceLineNo">059</span>/**<a name="line.59"></a>
-<span class="sourceLineNo">060</span> * Fetch the registry data from zookeeper.<a name="line.60"></a>
-<span class="sourceLineNo">061</span> */<a name="line.61"></a>
-<span class="sourceLineNo">062</span>@InterfaceAudience.Private<a name="line.62"></a>
-<span class="sourceLineNo">063</span>class ZKAsyncRegistry implements AsyncRegistry {<a name="line.63"></a>
-<span class="sourceLineNo">064</span><a name="line.64"></a>
-<span class="sourceLineNo">065</span>  private static final Log LOG = LogFactory.getLog(ZKAsyncRegistry.class);<a name="line.65"></a>
-<span class="sourceLineNo">066</span><a name="line.66"></a>
-<span class="sourceLineNo">067</span>  private final CuratorFramework zk;<a name="line.67"></a>
-<span class="sourceLineNo">068</span><a name="line.68"></a>
-<span class="sourceLineNo">069</span>  private final ZNodePaths znodePaths;<a name="line.69"></a>
-<span class="sourceLineNo">070</span><a name="line.70"></a>
-<span class="sourceLineNo">071</span>  ZKAsyncRegistry(Configuration conf) {<a name="line.71"></a>
-<span class="sourceLineNo">072</span>    this.znodePaths = new ZNodePaths(conf);<a name="line.72"></a>
-<span class="sourceLineNo">073</span>    int zkSessionTimeout = conf.getInt(ZK_SESSION_TIMEOUT, DEFAULT_ZK_SESSION_TIMEOUT);<a name="line.73"></a>
-<span class="sourceLineNo">074</span>    int zkRetry = conf.getInt("zookeeper.recovery.retry", 30);<a name="line.74"></a>
-<span class="sourceLineNo">075</span>    int zkRetryIntervalMs = conf.getInt("zookeeper.recovery.retry.intervalmill", 1000);<a name="line.75"></a>
-<span class="sourceLineNo">076</span>    this.zk = CuratorFrameworkFactory.builder()<a name="line.76"></a>
-<span class="sourceLineNo">077</span>        .connectString(ZKConfig.getZKQuorumServersString(conf)).sessionTimeoutMs(zkSessionTimeout)<a name="line.77"></a>
-<span class="sourceLineNo">078</span>        .retryPolicy(new RetryNTimes(zkRetry, zkRetryIntervalMs))<a name="line.78"></a>
-<span class="sourceLineNo">079</span>        .threadFactory(<a name="line.79"></a>
-<span class="sourceLineNo">080</span>          Threads.newDaemonThreadFactory(String.format("ZKClusterRegistry-0x%08x", hashCode())))<a name="line.80"></a>
-<span class="sourceLineNo">081</span>        .build();<a name="line.81"></a>
-<span class="sourceLineNo">082</span>    this.zk.start();<a name="line.82"></a>
-<span class="sourceLineNo">083</span>    // TODO: temporary workaround for HBASE-19312, must be removed before 2.0.0 release!<a name="line.83"></a>
-<span class="sourceLineNo">084</span>    try {<a name="line.84"></a>
-<span class="sourceLineNo">085</span>      this.zk.blockUntilConnected(2, TimeUnit.SECONDS);<a name="line.85"></a>
-<span class="sourceLineNo">086</span>    } catch (InterruptedException e) {<a name="line.86"></a>
-<span class="sourceLineNo">087</span>      return;<a name="line.87"></a>
-<span class="sourceLineNo">088</span>    }<a name="line.88"></a>
-<span class="sourceLineNo">089</span>  }<a name="line.89"></a>
-<span class="sourceLineNo">090</span><a name="line.90"></a>
-<span class="sourceLineNo">091</span>  private interface CuratorEventProcessor&lt;T&gt; {<a name="line.91"></a>
-<span class="sourceLineNo">092</span>    T process(CuratorEvent event) throws Exception;<a name="line.92"></a>
-<span class="sourceLineNo">093</span>  }<a name="line.93"></a>
-<span class="sourceLineNo">094</span><a name="line.94"></a>
-<span class="sourceLineNo">095</span>  private static &lt;T&gt; CompletableFuture&lt;T&gt; exec(BackgroundPathable&lt;?&gt; opBuilder, String path,<a name="line.95"></a>
-<span class="sourceLineNo">096</span>      CuratorEventProcessor&lt;T&gt; processor) {<a name="line.96"></a>
-<span class="sourceLineNo">097</span>    CompletableFuture&lt;T&gt; future = new CompletableFuture&lt;&gt;();<a name="line.97"></a>
-<span class="sourceLineNo">098</span>    try {<a name="line.98"></a>
-<span class="sourceLineNo">099</span>      opBuilder.inBackground((client, event) -&gt; {<a name="line.99"></a>
-<span class="sourceLineNo">100</span>        try {<a name="line.100"></a>
-<span class="sourceLineNo">101</span>          future.complete(processor.process(event));<a name="line.101"></a>
-<span class="sourceLineNo">102</span>        } catch (Exception e) {<a name="line.102"></a>
-<span class="sourceLineNo">103</span>          future.completeExceptionally(e);<a name="line.103"></a>
-<span class="sourceLineNo">104</span>        }<a name="line.104"></a>
-<span class="sourceLineNo">105</span>      }).withUnhandledErrorListener((msg, e) -&gt; future.completeExceptionally(e)).forPath(path);<a name="line.105"></a>
-<span class="sourceLineNo">106</span>    } catch (Exception e) {<a name="line.106"></a>
-<span class="sourceLineNo">107</span>      future.completeExceptionally(e);<a name="line.107"></a>
-<span class="sourceLineNo">108</span>    }<a name="line.108"></a>
-<span class="sourceLineNo">109</span>    return future;<a name="line.109"></a>
-<span class="sourceLineNo">110</span>  }<a name="line.110"></a>
-<span class="sourceLineNo">111</span><a name="line.111"></a>
-<span class="sourceLineNo">112</span>  private static String getClusterId(CuratorEvent event) throws DeserializationException {<a name="line.112"></a>
-<span class="sourceLineNo">113</span>    byte[] data = event.getData();<a name="line.113"></a>
-<span class="sourceLineNo">114</span>    if (data == null || data.length == 0) {<a name="line.114"></a>
-<span class="sourceLineNo">115</span>      return null;<a name="line.115"></a>
-<span class="sourceLineNo">116</span>    }<a name="line.116"></a>
-<span class="sourceLineNo">117</span>    data = removeMetaData(data);<a name="line.117"></a>
-<span class="sourceLineNo">118</span>    return ClusterId.parseFrom(data).toString();<a name="line.118"></a>
-<span class="sourceLineNo">119</span>  }<a name="line.119"></a>
-<span class="sourceLineNo">120</span><a name="line.120"></a>
-<span class="sourceLineNo">121</span>  @Override<a name="line.121"></a>
-<span class="sourceLineNo">122</span>  public CompletableFuture&lt;String&gt; getClusterId() {<a name="line.122"></a>
-<span class="sourceLineNo">123</span>    return exec(zk.getData(), znodePaths.clusterIdZNode, ZKAsyncRegistry::getClusterId);<a name="line.123"></a>
-<span class="sourceLineNo">124</span>  }<a name="line.124"></a>
-<span class="sourceLineNo">125</span><a name="line.125"></a>
-<span class="sourceLineNo">126</span>  @VisibleForTesting<a name="line.126"></a>
-<span class="sourceLineNo">127</span>  CuratorFramework getCuratorFramework() {<a name="line.127"></a>
-<span class="sourceLineNo">128</span>    return zk;<a name="line.128"></a>
-<span class="sourceLineNo">129</span>  }<a name="line.129"></a>
-<span class="sourceLineNo">130</span><a name="line.130"></a>
-<span class="sourceLineNo">131</span>  private static ZooKeeperProtos.MetaRegionServer getMetaProto(CuratorEvent event)<a name="line.131"></a>
-<span class="sourceLineNo">132</span>      throws IOException {<a name="line.132"></a>
-<span class="sourceLineNo">133</span>    byte[] data = event.getData();<a name="line.133"></a>
-<span class="sourceLineNo">134</span>    if (data == null || data.length == 0) {<a name="line.134"></a>
-<span class="sourceLineNo">135</span>      return null;<a name="line.135"></a>
-<span class="sourceLineNo">136</span>    }<a name="line.136"></a>
-<span class="sourceLineNo">137</span>    data = removeMetaData(data);<a name="line.137"></a>
-<span class="sourceLineNo">138</span>    int prefixLen = lengthOfPBMagic();<a name="line.138"></a>
-<span class="sourceLineNo">139</span>    return ZooKeeperProtos.MetaRegionServer.parser().parseFrom(data, prefixLen,<a name="line.139"></a>
-<span class="sourceLineNo">140</span>      data.length - prefixLen);<a name="line.140"></a>
-<span class="sourceLineNo">141</span>  }<a name="line.141"></a>
-<span class="sourceLineNo">142</span><a name="line.142"></a>
-<span class="sourceLineNo">143</span>  private static void tryComplete(MutableInt remaining, HRegionLocation[] locs,<a name="line.143"></a>
-<span class="sourceLineNo">144</span>      CompletableFuture&lt;RegionLocations&gt; future) {<a name="line.144"></a>
-<span class="sourceLineNo">145</span>    remaining.decrement();<a name="line.145"></a>
-<span class="sourceLineNo">146</span>    if (remaining.intValue() &gt; 0) {<a name="line.146"></a>
-<span class="sourceLineNo">147</span>      return;<a name="line.147"></a>
-<span class="sourceLineNo">148</span>    }<a name="line.148"></a>
-<span class="sourceLineNo">149</span>    future.complete(new RegionLocations(locs));<a name="line.149"></a>
-<span class="sourceLineNo">150</span>  }<a name="line.150"></a>
-<span class="sourceLineNo">151</span><a name="line.151"></a>
-<span class="sourceLineNo">152</span>  private Pair&lt;RegionState.State, ServerName&gt; getStateAndServerName(<a name="line.152"></a>
-<span class="sourceLineNo">153</span>      ZooKeeperProtos.MetaRegionServer proto) {<a name="line.153"></a>
-<span class="sourceLineNo">154</span>    RegionState.State state;<a name="line.154"></a>
-<span class="sourceLineNo">155</span>    if (proto.hasState()) {<a name="line.155"></a>
-<span class="sourceLineNo">156</span>      state = RegionState.State.convert(proto.getState());<a name="line.156"></a>
-<span class="sourceLineNo">157</span>    } else {<a name="line.157"></a>
-<span class="sourceLineNo">158</span>      state = RegionState.State.OPEN;<a name="line.158"></a>
-<span class="sourceLineNo">159</span>    }<a name="line.159"></a>
-<span class="sourceLineNo">160</span>    HBaseProtos.ServerName snProto = proto.getServer();<a name="line.160"></a>
-<span class="sourceLineNo">161</span>    return Pair.newPair(state,<a name="line.161"></a>
-<span class="sourceLineNo">162</span>      ServerName.valueOf(snProto.getHostName(), snProto.getPort(), snProto.getStartCode()));<a name="line.162"></a>
-<span class="sourceLineNo">163</span>  }<a name="line.163"></a>
-<span class="sourceLineNo">164</span><a name="line.164"></a>
-<span class="sourceLineNo">165</span>  @Override<a name="line.165"></a>
-<span class="sourceLineNo">166</span>  public CompletableFuture&lt;RegionLocations&gt; getMetaRegionLocation() {<a name="line.166"></a>
-<span class="sourceLineNo">167</span>    CompletableFuture&lt;RegionLocations&gt; future = new CompletableFuture&lt;&gt;();<a name="line.167"></a>
-<span class="sourceLineNo">168</span>    HRegionLocation[] locs = new HRegionLocation[znodePaths.metaReplicaZNodes.size()];<a name="line.168"></a>
-<span class="sourceLineNo">169</span>    MutableInt remaining = new MutableInt(locs.length);<a name="line.169"></a>
-<span class="sourceLineNo">170</span>    znodePaths.metaReplicaZNodes.forEach((replicaId, path) -&gt; {<a name="line.170"></a>
-<span class="sourceLineNo">171</span>      if (replicaId == DEFAULT_REPLICA_ID) {<a name="line.171"></a>
-<span class="sourceLineNo">172</span>        exec(zk.getData(), path, ZKAsyncRegistry::getMetaProto).whenComplete((proto, error) -&gt; {<a name="line.172"></a>
-<span class="sourceLineNo">173</span>          if (error != null) {<a name="line.173"></a>
-<span class="sourceLineNo">174</span>            future.completeExceptionally(error);<a name="line.174"></a>
-<span class="sourceLineNo">175</span>            return;<a name="line.175"></a>
-<span class="sourceLineNo">176</span>          }<a name="line.176"></a>
-<span class="sourceLineNo">177</span>          if (proto == null) {<a name="line.177"></a>
-<span class="sourceLineNo">178</span>            future.completeExceptionally(new IOException("Meta znode is null"));<a name="line.178"></a>
-<span class="sourceLineNo">179</span>            return;<a name="line.179"></a>
-<span class="sourceLineNo">180</span>          }<a name="line.180"></a>
-<span class="sourceLineNo">181</span>          Pair&lt;RegionState.State, ServerName&gt; stateAndServerName = getStateAndServerName(proto);<a name="line.181"></a>
-<span class="sourceLineNo">182</span>          if (stateAndServerName.getFirst() != RegionState.State.OPEN) {<a name="line.182"></a>
-<span class="sourceLineNo">183</span>            future.completeExceptionally(<a name="line.183"></a>
-<span class="sourceLineNo">184</span>              new IOException("Meta region is in state " + stateAndServerName.getFirst()));<a name="line.184"></a>
-<span class="sourceLineNo">185</span>            return;<a name="line.185"></a>
-<span class="sourceLineNo">186</span>          }<a name="line.186"></a>
-<span class="sourceLineNo">187</span>          locs[DEFAULT_REPLICA_ID] = new HRegionLocation(<a name="line.187"></a>
-<span class="sourceLineNo">188</span>              getRegionInfoForDefaultReplica(FIRST_META_REGIONINFO),<a name="line.188"></a>
-<span class="sourceLineNo">189</span>              stateAndServerName.getSecond());<a name="line.189"></a>
-<span class="sourceLineNo">190</span>          tryComplete(remaining, locs, future);<a name="line.190"></a>
-<span class="sourceLineNo">191</span>        });<a name="line.191"></a>
-<span class="sourceLineNo">192</span>      } else {<a name="line.192"></a>
-<span class="sourceLineNo">193</span>        exec(zk.getData(), path, ZKAsyncRegistry::getMetaProto).whenComplete((proto, error) -&gt; {<a name="line.193"></a>
-<span class="sourceLineNo">194</span>          if (future.isDone()) {<a name="line.194"></a>
-<span class="sourceLineNo">195</span>            return;<a name="line.195"></a>
-<span class="sourceLineNo">196</span>          }<a name="line.196"></a>
-<span class="sourceLineNo">197</span>          if (error != null) {<a name="line.197"></a>
-<span class="sourceLineNo">198</span>            LOG.warn("Failed to fetch " + path, error);<a name="line.198"></a>
-<span class="sourceLineNo">199</span>            locs[replicaId] = null;<a name="line.199"></a>
-<span class="sourceLineNo">200</span>          } else if (proto == null) {<a name="line.200"></a>
-<span class="sourceLineNo">201</span>            LOG.warn("Meta znode for replica " + replicaId + " is null");<a name="line.201"></a>
-<span class="sourceLineNo">202</span>            locs[replicaId] = null;<a name="line.202"></a>
-<span class="sourceLineNo">203</span>          } else {<a name="line.203"></a>
-<span class="sourceLineNo">204</span>            Pair&lt;RegionState.State, ServerName&gt; stateAndServerName = getStateAndServerName(proto);<a name="line.204"></a>
-<span class="sourceLineNo">205</span>            if (stateAndServerName.getFirst() != RegionState.State.OPEN) {<a name="line.205"></a>
-<span class="sourceLineNo">206</span>              LOG.warn("Meta region for replica " + replicaId + " is in state "<a name="line.206"></a>
-<span class="sourceLineNo">207</span>                  + stateAndServerName.getFirst());<a name="line.207"></a>
-<span class="sourceLineNo">208</span>              locs[replicaId] = null;<a name="line.208"></a>
-<span class="sourceLineNo">209</span>            } else {<a name="line.209"></a>
-<span class="sourceLineNo">210</span>              locs[replicaId] = new HRegionLocation(<a name="line.210"></a>
-<span class="sourceLineNo">211</span>                  getRegionInfoForReplica(FIRST_META_REGIONINFO, replicaId),<a name="line.211"></a>
-<span class="sourceLineNo">212</span>                  stateAndServerName.getSecond());<a name="line.212"></a>
-<span class="sourceLineNo">213</span>            }<a name="line.213"></a>
-<span class="sourceLineNo">214</span>          }<a name="line.214"></a>
-<span class="sourceLineNo">215</span>          tryComplete(remaining, locs, future);<a name="line.215"></a>
-<span class="sourceLineNo">216</span>        });<a name="line.216"></a>
-<span class="sourceLineNo">217</span>      }<a name="line.217"></a>
-<span class="sourceLineNo">218</span>    });<a name="line.218"></a>
-<span class="sourceLineNo">219</span>    return future;<a name="line.219"></a>
-<span class="sourceLineNo">220</span>  }<a name="line.220"></a>
-<span class="sourceLineNo">221</span><a name="line.221"></a>
-<span class="sourceLineNo">222</span>  private static int getCurrentNrHRS(CuratorEvent event) {<a name="line.222"></a>
-<span class="sourceLineNo">223</span>    Stat stat = event.getStat();<a name="line.223"></a>
-<span class="sourceLineNo">224</span>    return stat != null ? stat.getNumChildren() : 0;<a name="line.224"></a>
-<span class="sourceLineNo">225</span>  }<a name="line.225"></a>
-<span class="sourceLineNo">226</span><a name="line.226"></a>
-<span class="sourceLineNo">227</span>  @Override<a name="line.227"></a>
-<span class="sourceLineNo">228</span>  public CompletableFuture&lt;Integer&gt; getCurrentNrHRS() {<a name="line.228"></a>
-<span class="sourceLineNo">229</span>    return exec(zk.checkExists(), znodePaths.rsZNode, ZKAsyncRegistry::getCurrentNrHRS);<a name="line.229"></a>
-<span class="sourceLineNo">230</span>  }<a name="line.230"></a>
-<span class="sourceLineNo">231</span><a name="line.231"></a>
-<span class="sourceLineNo">232</span>  private static ZooKeeperProtos.Master getMasterProto(CuratorEvent event) throws IOException {<a name="line.232"></a>
-<span class="sourceLineNo">233</span>    byte[] data = event.getData();<a name="line.233"></a>
-<span class="sourceLineNo">234</span>    if (data == null || data.length == 0) {<a name="line.234"></a>
-<span class="sourceLineNo">235</span>      return null;<a name="line.235"></a>
-<span class="sourceLineNo">236</span>    }<a name="line.236"></a>
-<span class="sourceLineNo">237</span>    data = removeMetaData(data);<a name="line.237"></a>
-<span class="sourceLineNo">238</span>    int prefixLen = lengthOfPBMagic();<a name="line.238"></a>
-<span class="sourceLineNo">239</span>    return ZooKeeperProtos.Master.parser().parseFrom(data, prefixLen, data.length - prefixLen);<a name="line.239"></a>
-<span class="sourceLineNo">240</span>  }<a name="line.240"></a>
-<span class="sourceLineNo">241</span><a name="line.241"></a>
-<span class="sourceLineNo">242</span>  @Override<a name="line.242"></a>
-<span class="sourceLineNo">243</span>  public CompletableFuture&lt;ServerName&gt; getMasterAddress() {<a name="line.243"></a>
-<span class="sourceLineNo">244</span>    return exec(zk.getData(), znodePaths.masterAddressZNode, ZKAsyncRegistry::getMasterProto)<a name="line.244"></a>
-<span class="sourceLineNo">245</span>        .thenApply(proto -&gt; {<a name="line.245"></a>
-<span class="sourceLineNo">246</span>          if (proto == null) {<a name="line.246"></a>
-<span class="sourceLineNo">247</span>            return null;<a name="line.247"></a>
-<span class="sourceLineNo">248</span>          }<a name="line.248"></a>
-<span class="sourceLineNo">249</span>          HBaseProtos.ServerName snProto = proto.getMaster();<a name="line.249"></a>
-<span class="sourceLineNo">250</span>          return ServerName.valueOf(snProto.getHostName(), snProto.getPort(),<a name="line.250"></a>
-<span class="sourceLineNo">251</span>            snProto.getStartCode());<a name="line.251"></a>
-<span class="sourceLineNo">252</span>        });<a name="line.252"></a>
-<span class="sourceLineNo">253</span>  }<a name="line.253"></a>
-<span class="sourceLineNo">254</span><a name="line.254"></a>
-<span class="sourceLineNo">255</span>  @Override<a name="line.255"></a>
-<span class="sourceLineNo">256</span>  public CompletableFuture&lt;Integer&gt; getMasterInfoPort() {<a name="line.256"></a>
-<span class="sourceLineNo">257</span>    return exec(zk.getData(), znodePaths.masterAddressZNode, ZKAsyncRegistry::getMasterProto)<a name="line.257"></a>
-<span class="sourceLineNo">258</span>        .thenApply(proto -&gt; proto != null ? proto.getInfoPort() : 0);<a name="line.258"></a>
-<span class="sourceLineNo">259</span>  }<a name="line.259"></a>
-<span class="sourceLineNo">260</span><a name="line.260"></a>
-<span class="sourceLineNo">261</span>  @Override<a name="line.261"></a>
-<span class="sourceLineNo">262</span>  public void close() {<a name="line.262"></a>
-<span class="sourceLineNo">263</span>    zk.close();<a name="line.263"></a>
-<span class="sourceLineNo">264</span>  }<a name="line.264"></a>
-<span class="sourceLineNo">265</span>}<a name="line.265"></a>
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-</pre>
-</div>
-</body>
-</html>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/c54c242b/devapidocs/src-html/org/apache/hadoop/hbase/client/ZKAsyncRegistry.html
----------------------------------------------------------------------
diff --git a/devapidocs/src-html/org/apache/hadoop/hbase/client/ZKAsyncRegistry.html b/devapidocs/src-html/org/apache/hadoop/hbase/client/ZKAsyncRegistry.html
index 74375dd..d8722e4 100644
--- a/devapidocs/src-html/org/apache/hadoop/hbase/client/ZKAsyncRegistry.html
+++ b/devapidocs/src-html/org/apache/hadoop/hbase/client/ZKAsyncRegistry.html
@@ -25,252 +25,217 @@
 <span class="sourceLineNo">017</span> */<a name="line.17"></a>
 <span class="sourceLineNo">018</span>package org.apache.hadoop.hbase.client;<a name="line.18"></a>
 <span class="sourceLineNo">019</span><a name="line.19"></a>
-<span class="sourceLineNo">020</span>import static org.apache.hadoop.hbase.HConstants.DEFAULT_ZK_SESSION_TIMEOUT;<a name="line.20"></a>
-<span class="sourceLineNo">021</span>import static org.apache.hadoop.hbase.HConstants.ZK_SESSION_TIMEOUT;<a name="line.21"></a>
-<span class="sourceLineNo">022</span>import static org.apache.hadoop.hbase.client.RegionInfo.DEFAULT_REPLICA_ID;<a name="line.22"></a>
-<span class="sourceLineNo">023</span>import static org.apache.hadoop.hbase.client.RegionInfoBuilder.FIRST_META_REGIONINFO;<a name="line.23"></a>
-<span class="sourceLineNo">024</span>import static org.apache.hadoop.hbase.client.RegionReplicaUtil.getRegionInfoForDefaultReplica;<a name="line.24"></a>
-<span class="sourceLineNo">025</span>import static org.apache.hadoop.hbase.client.RegionReplicaUtil.getRegionInfoForReplica;<a name="line.25"></a>
-<span class="sourceLineNo">026</span>import static org.apache.hadoop.hbase.shaded.protobuf.ProtobufUtil.lengthOfPBMagic;<a name="line.26"></a>
-<span class="sourceLineNo">027</span>import static org.apache.hadoop.hbase.zookeeper.ZKMetadata.removeMetaData;<a name="line.27"></a>
-<span class="sourceLineNo">028</span><a name="line.28"></a>
-<span class="sourceLineNo">029</span>import java.io.IOException;<a name="line.29"></a>
-<span class="sourceLineNo">030</span>import java.util.concurrent.CompletableFuture;<a name="line.30"></a>
-<span class="sourceLineNo">031</span>import java.util.concurrent.TimeUnit;<a name="line.31"></a>
-<span class="sourceLineNo">032</span><a name="line.32"></a>
-<span class="sourceLineNo">033</span>import org.apache.commons.lang3.mutable.MutableInt;<a name="line.33"></a>
-<span class="sourceLineNo">034</span>import org.apache.commons.logging.Log;<a name="line.34"></a>
-<span class="sourceLineNo">035</span>import org.apache.commons.logging.LogFactory;<a name="line.35"></a>
-<span class="sourceLineNo">036</span>import org.apache.curator.framework.CuratorFramework;<a name="line.36"></a>
-<span class="sourceLineNo">037</span>import org.apache.curator.framework.CuratorFrameworkFactory;<a name="line.37"></a>
-<span class="sourceLineNo">038</span>import org.apache.curator.framework.api.BackgroundPathable;<a name="line.38"></a>
-<span class="sourceLineNo">039</span>import org.apache.curator.framework.api.CuratorEvent;<a name="line.39"></a>
-<span class="sourceLineNo">040</span>import org.apache.curator.retry.RetryNTimes;<a name="line.40"></a>
-<span class="sourceLineNo">041</span>import org.apache.hadoop.conf.Configuration;<a name="line.41"></a>
-<span class="sourceLineNo">042</span>import org.apache.hadoop.hbase.ClusterId;<a name="line.42"></a>
-<span class="sourceLineNo">043</span>import org.apache.hadoop.hbase.HRegionLocation;<a name="line.43"></a>
-<span class="sourceLineNo">044</span>import org.apache.hadoop.hbase.RegionLocations;<a name="line.44"></a>
-<span class="sourceLineNo">045</span>import org.apache.hadoop.hbase.ServerName;<a name="line.45"></a>
-<span class="sourceLineNo">046</span>import org.apache.hadoop.hbase.exceptions.DeserializationException;<a name="line.46"></a>
-<span class="sourceLineNo">047</span>import org.apache.hadoop.hbase.master.RegionState;<a name="line.47"></a>
-<span class="sourceLineNo">048</span>import org.apache.hadoop.hbase.shaded.com.google.common.annotations.VisibleForTesting;<a name="line.48"></a>
-<span class="sourceLineNo">049</span>import org.apache.hadoop.hbase.shaded.protobuf.generated.HBaseProtos;<a name="line.49"></a>
-<span class="sourceLineNo">050</span>import org.apache.hadoop.hbase.shaded.protobuf.generated.ZooKeeperProtos;<a name="line.50"></a>
-<span class="sourceLineNo">051</span>import org.apache.hadoop.hbase.util.Pair;<a name="line.51"></a>
-<span class="sourceLineNo">052</span>import org.apache.hadoop.hbase.util.Threads;<a name="line.52"></a>
-<span class="sourceLineNo">053</span>import org.apache.hadoop.hbase.zookeeper.ZKConfig;<a name="line.53"></a>
-<span class="sourceLineNo">054</span>import org.apache.hadoop.hbase.zookeeper.ZNodePaths;<a name="line.54"></a>
-<span class="sourceLineNo">055</span>import org.apache.yetus.audience.InterfaceAudience;<a name="line.55"></a>
-<span class="sourceLineNo">056</span>import org.apache.zookeeper.data.Stat;<a name="line.56"></a>
-<span class="sourceLineNo">057</span><a name="line.57"></a>
+<span class="sourceLineNo">020</span>import static org.apache.hadoop.hbase.client.RegionInfo.DEFAULT_REPLICA_ID;<a name="line.20"></a>
+<span class="sourceLineNo">021</span>import static org.apache.hadoop.hbase.client.RegionInfoBuilder.FIRST_META_REGIONINFO;<a name="line.21"></a>
+<span class="sourceLineNo">022</span>import static org.apache.hadoop.hbase.client.RegionReplicaUtil.getRegionInfoForDefaultReplica;<a name="line.22"></a>
+<span class="sourceLineNo">023</span>import static org.apache.hadoop.hbase.client.RegionReplicaUtil.getRegionInfoForReplica;<a name="line.23"></a>
+<span class="sourceLineNo">024</span>import static org.apache.hadoop.hbase.shaded.protobuf.ProtobufUtil.lengthOfPBMagic;<a name="line.24"></a>
+<span class="sourceLineNo">025</span>import static org.apache.hadoop.hbase.zookeeper.ZKMetadata.removeMetaData;<a name="line.25"></a>
+<span class="sourceLineNo">026</span><a name="line.26"></a>
+<span class="sourceLineNo">027</span>import java.io.IOException;<a name="line.27"></a>
+<span class="sourceLineNo">028</span>import java.util.concurrent.CompletableFuture;<a name="line.28"></a>
+<span class="sourceLineNo">029</span><a name="line.29"></a>
+<span class="sourceLineNo">030</span>import org.apache.commons.lang3.mutable.MutableInt;<a name="line.30"></a>
+<span class="sourceLineNo">031</span>import org.apache.commons.logging.Log;<a name="line.31"></a>
+<span class="sourceLineNo">032</span>import org.apache.commons.logging.LogFactory;<a name="line.32"></a>
+<span class="sourceLineNo">033</span>import org.apache.hadoop.conf.Configuration;<a name="line.33"></a>
+<span class="sourceLineNo">034</span>import org.apache.hadoop.hbase.ClusterId;<a name="line.34"></a>
+<span class="sourceLineNo">035</span>import org.apache.hadoop.hbase.HRegionLocation;<a name="line.35"></a>
+<span class="sourceLineNo">036</span>import org.apache.hadoop.hbase.RegionLocations;<a name="line.36"></a>
+<span class="sourceLineNo">037</span>import org.apache.hadoop.hbase.ServerName;<a name="line.37"></a>
+<span class="sourceLineNo">038</span>import org.apache.hadoop.hbase.exceptions.DeserializationException;<a name="line.38"></a>
+<span class="sourceLineNo">039</span>import org.apache.hadoop.hbase.master.RegionState;<a name="line.39"></a>
+<span class="sourceLineNo">040</span>import org.apache.hadoop.hbase.util.Pair;<a name="line.40"></a>
+<span class="sourceLineNo">041</span>import org.apache.hadoop.hbase.zookeeper.ReadOnlyZKClient;<a name="line.41"></a>
+<span class="sourceLineNo">042</span>import org.apache.hadoop.hbase.zookeeper.ZNodePaths;<a name="line.42"></a>
+<span class="sourceLineNo">043</span>import org.apache.yetus.audience.InterfaceAudience;<a name="line.43"></a>
+<span class="sourceLineNo">044</span><a name="line.44"></a>
+<span class="sourceLineNo">045</span>import org.apache.hadoop.hbase.shaded.com.google.common.annotations.VisibleForTesting;<a name="line.45"></a>
+<span class="sourceLineNo">046</span>import org.apache.hadoop.hbase.shaded.protobuf.generated.HBaseProtos;<a name="line.46"></a>
+<span class="sourceLineNo">047</span>import org.apache.hadoop.hbase.shaded.protobuf.generated.ZooKeeperProtos;<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> * Fetch the registry data from zookeeper.<a name="line.50"></a>
+<span class="sourceLineNo">051</span> */<a name="line.51"></a>
+<span class="sourceLineNo">052</span>@InterfaceAudience.Private<a name="line.52"></a>
+<span class="sourceLineNo">053</span>class ZKAsyncRegistry implements AsyncRegistry {<a name="line.53"></a>
+<span class="sourceLineNo">054</span><a name="line.54"></a>
+<span class="sourceLineNo">055</span>  private static final Log LOG = LogFactory.getLog(ZKAsyncRegistry.class);<a name="line.55"></a>
+<span class="sourceLineNo">056</span><a name="line.56"></a>
+<span class="sourceLineNo">057</span>  private final ReadOnlyZKClient zk;<a name="line.57"></a>
 <span class="sourceLineNo">058</span><a name="line.58"></a>
-<span class="sourceLineNo">059</span>/**<a name="line.59"></a>
-<span class="sourceLineNo">060</span> * Fetch the registry data from zookeeper.<a name="line.60"></a>
-<span class="sourceLineNo">061</span> */<a name="line.61"></a>
-<span class="sourceLineNo">062</span>@InterfaceAudience.Private<a name="line.62"></a>
-<span class="sourceLineNo">063</span>class ZKAsyncRegistry implements AsyncRegistry {<a name="line.63"></a>
-<span class="sourceLineNo">064</span><a name="line.64"></a>
-<span class="sourceLineNo">065</span>  private static final Log LOG = LogFactory.getLog(ZKAsyncRegistry.class);<a name="line.65"></a>
-<span class="sourceLineNo">066</span><a name="line.66"></a>
-<span class="sourceLineNo">067</span>  private final CuratorFramework zk;<a name="line.67"></a>
-<span class="sourceLineNo">068</span><a name="line.68"></a>
-<span class="sourceLineNo">069</span>  private final ZNodePaths znodePaths;<a name="line.69"></a>
-<span class="sourceLineNo">070</span><a name="line.70"></a>
-<span class="sourceLineNo">071</span>  ZKAsyncRegistry(Configuration conf) {<a name="line.71"></a>
-<span class="sourceLineNo">072</span>    this.znodePaths = new ZNodePaths(conf);<a name="line.72"></a>
-<span class="sourceLineNo">073</span>    int zkSessionTimeout = conf.getInt(ZK_SESSION_TIMEOUT, DEFAULT_ZK_SESSION_TIMEOUT);<a name="line.73"></a>
-<span class="sourceLineNo">074</span>    int zkRetry = conf.getInt("zookeeper.recovery.retry", 30);<a name="line.74"></a>
-<span class="sourceLineNo">075</span>    int zkRetryIntervalMs = conf.getInt("zookeeper.recovery.retry.intervalmill", 1000);<a name="line.75"></a>
-<span class="sourceLineNo">076</span>    this.zk = CuratorFrameworkFactory.builder()<a name="line.76"></a>
-<span class="sourceLineNo">077</span>        .connectString(ZKConfig.getZKQuorumServersString(conf)).sessionTimeoutMs(zkSessionTimeout)<a name="line.77"></a>
-<span class="sourceLineNo">078</span>        .retryPolicy(new RetryNTimes(zkRetry, zkRetryIntervalMs))<a name="line.78"></a>
-<span class="sourceLineNo">079</span>        .threadFactory(<a name="line.79"></a>
-<span class="sourceLineNo">080</span>          Threads.newDaemonThreadFactory(String.format("ZKClusterRegistry-0x%08x", hashCode())))<a name="line.80"></a>
-<span class="sourceLineNo">081</span>        .build();<a name="line.81"></a>
-<span class="sourceLineNo">082</span>    this.zk.start();<a name="line.82"></a>
-<span class="sourceLineNo">083</span>    // TODO: temporary workaround for HBASE-19312, must be removed before 2.0.0 release!<a name="line.83"></a>
-<span class="sourceLineNo">084</span>    try {<a name="line.84"></a>
-<span class="sourceLineNo">085</span>      this.zk.blockUntilConnected(2, TimeUnit.SECONDS);<a name="line.85"></a>
-<span class="sourceLineNo">086</span>    } catch (InterruptedException e) {<a name="line.86"></a>
-<span class="sourceLineNo">087</span>      return;<a name="line.87"></a>
-<span class="sourceLineNo">088</span>    }<a name="line.88"></a>
-<span class="sourceLineNo">089</span>  }<a name="line.89"></a>
-<span class="sourceLineNo">090</span><a name="line.90"></a>
-<span class="sourceLineNo">091</span>  private interface CuratorEventProcessor&lt;T&gt; {<a name="line.91"></a>
-<span class="sourceLineNo">092</span>    T process(CuratorEvent event) throws Exception;<a name="line.92"></a>
-<span class="sourceLineNo">093</span>  }<a name="line.93"></a>
-<span class="sourceLineNo">094</span><a name="line.94"></a>
-<span class="sourceLineNo">095</span>  private static &lt;T&gt; CompletableFuture&lt;T&gt; exec(BackgroundPathable&lt;?&gt; opBuilder, String path,<a name="line.95"></a>
-<span class="sourceLineNo">096</span>      CuratorEventProcessor&lt;T&gt; processor) {<a name="line.96"></a>
-<span class="sourceLineNo">097</span>    CompletableFuture&lt;T&gt; future = new CompletableFuture&lt;&gt;();<a name="line.97"></a>
-<span class="sourceLineNo">098</span>    try {<a name="line.98"></a>
-<span class="sourceLineNo">099</span>      opBuilder.inBackground((client, event) -&gt; {<a name="line.99"></a>
-<span class="sourceLineNo">100</span>        try {<a name="line.100"></a>
-<span class="sourceLineNo">101</span>          future.complete(processor.process(event));<a name="line.101"></a>
-<span class="sourceLineNo">102</span>        } catch (Exception e) {<a name="line.102"></a>
-<span class="sourceLineNo">103</span>          future.completeExceptionally(e);<a name="line.103"></a>
-<span class="sourceLineNo">104</span>        }<a name="line.104"></a>
-<span class="sourceLineNo">105</span>      }).withUnhandledErrorListener((msg, e) -&gt; future.completeExceptionally(e)).forPath(path);<a name="line.105"></a>
-<span class="sourceLineNo">106</span>    } catch (Exception e) {<a name="line.106"></a>
-<span class="sourceLineNo">107</span>      future.completeExceptionally(e);<a name="line.107"></a>
-<span class="sourceLineNo">108</span>    }<a name="line.108"></a>
-<span class="sourceLineNo">109</span>    return future;<a name="line.109"></a>
-<span class="sourceLineNo">110</span>  }<a name="line.110"></a>
-<span class="sourceLineNo">111</span><a name="line.111"></a>
-<span class="sourceLineNo">112</span>  private static String getClusterId(CuratorEvent event) throws DeserializationException {<a name="line.112"></a>
-<span class="sourceLineNo">113</span>    byte[] data = event.getData();<a name="line.113"></a>
-<span class="sourceLineNo">114</span>    if (data == null || data.length == 0) {<a name="line.114"></a>
-<span class="sourceLineNo">115</span>      return null;<a name="line.115"></a>
-<span class="sourceLineNo">116</span>    }<a name="line.116"></a>
-<span class="sourceLineNo">117</span>    data = removeMetaData(data);<a name="line.117"></a>
-<span class="sourceLineNo">118</span>    return ClusterId.parseFrom(data).toString();<a name="line.118"></a>
-<span class="sourceLineNo">119</span>  }<a name="line.119"></a>
-<span class="sourceLineNo">120</span><a name="line.120"></a>
-<span class="sourceLineNo">121</span>  @Override<a name="line.121"></a>
-<span class="sourceLineNo">122</span>  public CompletableFuture&lt;String&gt; getClusterId() {<a name="line.122"></a>
-<span class="sourceLineNo">123</span>    return exec(zk.getData(), znodePaths.clusterIdZNode, ZKAsyncRegistry::getClusterId);<a name="line.123"></a>
-<span class="sourceLineNo">124</span>  }<a name="line.124"></a>
-<span class="sourceLineNo">125</span><a name="line.125"></a>
-<span class="sourceLineNo">126</span>  @VisibleForTesting<a name="line.126"></a>
-<span class="sourceLineNo">127</span>  CuratorFramework getCuratorFramework() {<a name="line.127"></a>
-<span class="sourceLineNo">128</span>    return zk;<a name="line.128"></a>
-<span class="sourceLineNo">129</span>  }<a name="line.129"></a>
-<span class="sourceLineNo">130</span><a name="line.130"></a>
-<span class="sourceLineNo">131</span>  private static ZooKeeperProtos.MetaRegionServer getMetaProto(CuratorEvent event)<a name="line.131"></a>
-<span class="sourceLineNo">132</span>      throws IOException {<a name="line.132"></a>
-<span class="sourceLineNo">133</span>    byte[] data = event.getData();<a name="line.133"></a>
-<span class="sourceLineNo">134</span>    if (data == null || data.length == 0) {<a name="line.134"></a>
-<span class="sourceLineNo">135</span>      return null;<a name="line.135"></a>
-<span class="sourceLineNo">136</span>    }<a name="line.136"></a>
-<span class="sourceLineNo">137</span>    data = removeMetaData(data);<a name="line.137"></a>
-<span class="sourceLineNo">138</span>    int prefixLen = lengthOfPBMagic();<a name="line.138"></a>
-<span class="sourceLineNo">139</span>    return ZooKeeperProtos.MetaRegionServer.parser().parseFrom(data, prefixLen,<a name="line.139"></a>
-<span class="sourceLineNo">140</span>      data.length - prefixLen);<a name="line.140"></a>
-<span class="sourceLineNo">141</span>  }<a name="line.141"></a>
-<span class="sourceLineNo">142</span><a name="line.142"></a>
-<span class="sourceLineNo">143</span>  private static void tryComplete(MutableInt remaining, HRegionLocation[] locs,<a name="line.143"></a>
-<span class="sourceLineNo">144</span>      CompletableFuture&lt;RegionLocations&gt; future) {<a name="line.144"></a>
-<span class="sourceLineNo">145</span>    remaining.decrement();<a name="line.145"></a>
-<span class="sourceLineNo">146</span>    if (remaining.intValue() &gt; 0) {<a name="line.146"></a>
-<span class="sourceLineNo">147</span>      return;<a name="line.147"></a>
-<span class="sourceLineNo">148</span>    }<a name="line.148"></a>
-<span class="sourceLineNo">149</span>    future.complete(new RegionLocations(locs));<a name="line.149"></a>
-<span class="sourceLineNo">150</span>  }<a name="line.150"></a>
-<span class="sourceLineNo">151</span><a name="line.151"></a>
-<span class="sourceLineNo">152</span>  private Pair&lt;RegionState.State, ServerName&gt; getStateAndServerName(<a name="line.152"></a>
-<span class="sourceLineNo">153</span>      ZooKeeperProtos.MetaRegionServer proto) {<a name="line.153"></a>
-<span class="sourceLineNo">154</span>    RegionState.State state;<a name="line.154"></a>
-<span class="sourceLineNo">155</span>    if (proto.hasState()) {<a name="line.155"></a>
-<span class="sourceLineNo">156</span>      state = RegionState.State.convert(proto.getState());<a name="line.156"></a>
-<span class="sourceLineNo">157</span>    } else {<a name="line.157"></a>
-<span class="sourceLineNo">158</span>      state = RegionState.State.OPEN;<a name="line.158"></a>
-<span class="sourceLineNo">159</span>    }<a name="line.159"></a>
-<span class="sourceLineNo">160</span>    HBaseProtos.ServerName snProto = proto.getServer();<a name="line.160"></a>
-<span class="sourceLineNo">161</span>    return Pair.newPair(state,<a name="line.161"></a>
-<span class="sourceLineNo">162</span>      ServerName.valueOf(snProto.getHostName(), snProto.getPort(), snProto.getStartCode()));<a name="line.162"></a>
-<span class="sourceLineNo">163</span>  }<a name="line.163"></a>
-<span class="sourceLineNo">164</span><a name="line.164"></a>
-<span class="sourceLineNo">165</span>  @Override<a name="line.165"></a>
-<span class="sourceLineNo">166</span>  public CompletableFuture&lt;RegionLocations&gt; getMetaRegionLocation() {<a name="line.166"></a>
-<span class="sourceLineNo">167</span>    CompletableFuture&lt;RegionLocations&gt; future = new CompletableFuture&lt;&gt;();<a name="line.167"></a>
-<span class="sourceLineNo">168</span>    HRegionLocation[] locs = new HRegionLocation[znodePaths.metaReplicaZNodes.size()];<a name="line.168"></a>
-<span class="sourceLineNo">169</span>    MutableInt remaining = new MutableInt(locs.length);<a name="line.169"></a>
-<span class="sourceLineNo">170</span>    znodePaths.metaReplicaZNodes.forEach((replicaId, path) -&gt; {<a name="line.170"></a>
-<span class="sourceLineNo">171</span>      if (replicaId == DEFAULT_REPLICA_ID) {<a name="line.171"></a>
-<span class="sourceLineNo">172</span>        exec(zk.getData(), path, ZKAsyncRegistry::getMetaProto).whenComplete((proto, error) -&gt; {<a name="line.172"></a>
-<span class="sourceLineNo">173</span>          if (error != null) {<a name="line.173"></a>
-<span class="sourceLineNo">174</span>            future.completeExceptionally(error);<a name="line.174"></a>
-<span class="sourceLineNo">175</span>            return;<a name="line.175"></a>
-<span class="sourceLineNo">176</span>          }<a name="line.176"></a>
-<span class="sourceLineNo">177</span>          if (proto == null) {<a name="line.177"></a>
-<span class="sourceLineNo">178</span>            future.completeExceptionally(new IOException("Meta znode is null"));<a name="line.178"></a>
-<span class="sourceLineNo">179</span>            return;<a name="line.179"></a>
-<span class="sourceLineNo">180</span>          }<a name="line.180"></a>
-<span class="sourceLineNo">181</span>          Pair&lt;RegionState.State, ServerName&gt; stateAndServerName = getStateAndServerName(proto);<a name="line.181"></a>
-<span class="sourceLineNo">182</span>          if (stateAndServerName.getFirst() != RegionState.State.OPEN) {<a name="line.182"></a>
-<span class="sourceLineNo">183</span>            future.completeExceptionally(<a name="line.183"></a>
-<span class="sourceLineNo">184</span>              new IOException("Meta region is in state " + stateAndServerName.getFirst()));<a name="line.184"></a>
-<span class="sourceLineNo">185</span>            return;<a name="line.185"></a>
-<span class="sourceLineNo">186</span>          }<a name="line.186"></a>
-<span class="sourceLineNo">187</span>          locs[DEFAULT_REPLICA_ID] = new HRegionLocation(<a name="line.187"></a>
-<span class="sourceLineNo">188</span>              getRegionInfoForDefaultReplica(FIRST_META_REGIONINFO),<a name="line.188"></a>
-<span class="sourceLineNo">189</span>              stateAndServerName.getSecond());<a name="line.189"></a>
-<span class="sourceLineNo">190</span>          tryComplete(remaining, locs, future);<a name="line.190"></a>
-<span class="sourceLineNo">191</span>        });<a name="line.191"></a>
-<span class="sourceLineNo">192</span>      } else {<a name="line.192"></a>
-<span class="sourceLineNo">193</span>        exec(zk.getData(), path, ZKAsyncRegistry::getMetaProto).whenComplete((proto, error) -&gt; {<a name="line.193"></a>
-<span class="sourceLineNo">194</span>          if (future.isDone()) {<a name="line.194"></a>
-<span class="sourceLineNo">195</span>            return;<a name="line.195"></a>
-<span class="sourceLineNo">196</span>          }<a name="line.196"></a>
-<span class="sourceLineNo">197</span>          if (error != null) {<a name="line.197"></a>
-<span class="sourceLineNo">198</span>            LOG.warn("Failed to fetch " + path, error);<a name="line.198"></a>
-<span class="sourceLineNo">199</span>            locs[replicaId] = null;<a name="line.199"></a>
-<span class="sourceLineNo">200</span>          } else if (proto == null) {<a name="line.200"></a>
-<span class="sourceLineNo">201</span>            LOG.warn("Meta znode for replica " + replicaId + " is null");<a name="line.201"></a>
-<span class="sourceLineNo">202</span>            locs[replicaId] = null;<a name="line.202"></a>
-<span class="sourceLineNo">203</span>          } else {<a name="line.203"></a>
-<span class="sourceLineNo">204</span>            Pair&lt;RegionState.State, ServerName&gt; stateAndServerName = getStateAndServerName(proto);<a name="line.204"></a>
-<span class="sourceLineNo">205</span>            if (stateAndServerName.getFirst() != RegionState.State.OPEN) {<a name="line.205"></a>
-<span class="sourceLineNo">206</span>              LOG.warn("Meta region for replica " + replicaId + " is in state "<a name="line.206"></a>
-<span class="sourceLineNo">207</span>                  + stateAndServerName.getFirst());<a name="line.207"></a>
-<span class="sourceLineNo">208</span>              locs[replicaId] = null;<a name="line.208"></a>
-<span class="sourceLineNo">209</span>            } else {<a name="line.209"></a>
-<span class="sourceLineNo">210</span>              locs[replicaId] = new HRegionLocation(<a name="line.210"></a>
-<span class="sourceLineNo">211</span>                  getRegionInfoForReplica(FIRST_META_REGIONINFO, replicaId),<a name="line.211"></a>
-<span class="sourceLineNo">212</span>                  stateAndServerName.getSecond());<a name="line.212"></a>
-<span class="sourceLineNo">213</span>            }<a name="line.213"></a>
-<span class="sourceLineNo">214</span>          }<a name="line.214"></a>
-<span class="sourceLineNo">215</span>          tryComplete(remaining, locs, future);<a name="line.215"></a>
-<span class="sourceLineNo">216</span>        });<a name="line.216"></a>
-<span class="sourceLineNo">217</span>      }<a name="line.217"></a>
-<span class="sourceLineNo">218</span>    });<a name="line.218"></a>
-<span class="sourceLineNo">219</span>    return future;<a name="line.219"></a>
-<span class="sourceLineNo">220</span>  }<a name="line.220"></a>
-<span class="sourceLineNo">221</span><a name="line.221"></a>
-<span class="sourceLineNo">222</span>  private static int getCurrentNrHRS(CuratorEvent event) {<a name="line.222"></a>
-<span class="sourceLineNo">223</span>    Stat stat = event.getStat();<a name="line.223"></a>
-<span class="sourceLineNo">224</span>    return stat != null ? stat.getNumChildren() : 0;<a name="line.224"></a>
-<span class="sourceLineNo">225</span>  }<a name="line.225"></a>
-<span class="sourceLineNo">226</span><a name="line.226"></a>
-<span class="sourceLineNo">227</span>  @Override<a name="line.227"></a>
-<span class="sourceLineNo">228</span>  public CompletableFuture&lt;Integer&gt; getCurrentNrHRS() {<a name="line.228"></a>
-<span class="sourceLineNo">229</span>    return exec(zk.checkExists(), znodePaths.rsZNode, ZKAsyncRegistry::getCurrentNrHRS);<a name="line.229"></a>
-<span class="sourceLineNo">230</span>  }<a name="line.230"></a>
-<span class="sourceLineNo">231</span><a name="line.231"></a>
-<span class="sourceLineNo">232</span>  private static ZooKeeperProtos.Master getMasterProto(CuratorEvent event) throws IOException {<a name="line.232"></a>
-<span class="sourceLineNo">233</span>    byte[] data = event.getData();<a name="line.233"></a>
-<span class="sourceLineNo">234</span>    if (data == null || data.length == 0) {<a name="line.234"></a>
-<span class="sourceLineNo">235</span>      return null;<a name="line.235"></a>
-<span class="sourceLineNo">236</span>    }<a name="line.236"></a>
-<span class="sourceLineNo">237</span>    data = removeMetaData(data);<a name="line.237"></a>
-<span class="sourceLineNo">238</span>    int prefixLen = lengthOfPBMagic();<a name="line.238"></a>
-<span class="sourceLineNo">239</span>    return ZooKeeperProtos.Master.parser().parseFrom(data, prefixLen, data.length - prefixLen);<a name="line.239"></a>
-<span class="sourceLineNo">240</span>  }<a name="line.240"></a>
-<span class="sourceLineNo">241</span><a name="line.241"></a>
-<span class="sourceLineNo">242</span>  @Override<a name="line.242"></a>
-<span class="sourceLineNo">243</span>  public CompletableFuture&lt;ServerName&gt; getMasterAddress() {<a name="line.243"></a>
-<span class="sourceLineNo">244</span>    return exec(zk.getData(), znodePaths.masterAddressZNode, ZKAsyncRegistry::getMasterProto)<a name="line.244"></a>
-<span class="sourceLineNo">245</span>        .thenApply(proto -&gt; {<a name="line.245"></a>
-<span class="sourceLineNo">246</span>          if (proto == null) {<a name="line.246"></a>
-<span class="sourceLineNo">247</span>            return null;<a name="line.247"></a>
-<span class="sourceLineNo">248</span>          }<a name="line.248"></a>
-<span class="sourceLineNo">249</span>          HBaseProtos.ServerName snProto = proto.getMaster();<a name="line.249"></a>
-<span class="sourceLineNo">250</span>          return ServerName.valueOf(snProto.getHostName(), snProto.getPort(),<a name="line.250"></a>
-<span class="sourceLineNo">251</span>            snProto.getStartCode());<a name="line.251"></a>
-<span class="sourceLineNo">252</span>        });<a name="line.252"></a>
-<span class="sourceLineNo">253</span>  }<a name="line.253"></a>
-<span class="sourceLineNo">254</span><a name="line.254"></a>
-<span class="sourceLineNo">255</span>  @Override<a name="line.255"></a>
-<span class="sourceLineNo">256</span>  public CompletableFuture&lt;Integer&gt; getMasterInfoPort() {<a name="line.256"></a>
-<span class="sourceLineNo">257</span>    return exec(zk.getData(), znodePaths.masterAddressZNode, ZKAsyncRegistry::getMasterProto)<a name="line.257"></a>
-<span class="sourceLineNo">258</span>        .thenApply(proto -&gt; proto != null ? proto.getInfoPort() : 0);<a name="line.258"></a>
-<span class="sourceLineNo">259</span>  }<a name="line.259"></a>
-<span class="sourceLineNo">260</span><a name="line.260"></a>
-<span class="sourceLineNo">261</span>  @Override<a name="line.261"></a>
-<span class="sourceLineNo">262</span>  public void close() {<a name="line.262"></a>
-<span class="sourceLineNo">263</span>    zk.close();<a name="line.263"></a>
-<span class="sourceLineNo">264</span>  }<a name="line.264"></a>
-<span class="sourceLineNo">265</span>}<a name="line.265"></a>
+<span class="sourceLineNo">059</span>  private final ZNodePaths znodePaths;<a name="line.59"></a>
+<span class="sourceLineNo">060</span><a name="line.60"></a>
+<span class="sourceLineNo">061</span>  ZKAsyncRegistry(Configuration conf) {<a name="line.61"></a>
+<span class="sourceLineNo">062</span>    this.znodePaths = new ZNodePaths(conf);<a name="line.62"></a>
+<span class="sourceLineNo">063</span>    this.zk = new ReadOnlyZKClient(conf);<a name="line.63"></a>
+<span class="sourceLineNo">064</span>  }<a name="line.64"></a>
+<span class="sourceLineNo">065</span><a name="line.65"></a>
+<span class="sourceLineNo">066</span>  private interface Converter&lt;T&gt; {<a name="line.66"></a>
+<span class="sourceLineNo">067</span>    T convert(byte[] data) throws Exception;<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>  private &lt;T&gt; CompletableFuture&lt;T&gt; getAndConvert(String path, Converter&lt;T&gt; converter) {<a name="line.70"></a>
+<span class="sourceLineNo">071</span>    CompletableFuture&lt;T&gt; future = new CompletableFuture&lt;&gt;();<a name="line.71"></a>
+<span class="sourceLineNo">072</span>    zk.get(path).whenComplete((data, error) -&gt; {<a name="line.72"></a>
+<span class="sourceLineNo">073</span>      if (error != null) {<a name="line.73"></a>
+<span class="sourceLineNo">074</span>        future.completeExceptionally(error);<a name="line.74"></a>
+<span class="sourceLineNo">075</span>        return;<a name="line.75"></a>
+<span class="sourceLineNo">076</span>      }<a name="line.76"></a>
+<span class="sourceLineNo">077</span>      try {<a name="line.77"></a>
+<span class="sourceLineNo">078</span>        future.complete(converter.convert(data));<a name="line.78"></a>
+<span class="sourceLineNo">079</span>      } catch (Exception e) {<a name="line.79"></a>
+<span class="sourceLineNo">080</span>        future.completeExceptionally(e);<a name="line.80"></a>
+<span class="sourceLineNo">081</span>      }<a name="line.81"></a>
+<span class="sourceLineNo">082</span>    });<a name="line.82"></a>
+<span class="sourceLineNo">083</span>    return future;<a name="line.83"></a>
+<span class="sourceLineNo">084</span>  }<a name="line.84"></a>
+<span class="sourceLineNo">085</span><a name="line.85"></a>
+<span class="sourceLineNo">086</span>  private static String getClusterId(byte[] data) throws DeserializationException {<a name="line.86"></a>
+<span class="sourceLineNo">087</span>    if (data == null || data.length == 0) {<a name="line.87"></a>
+<span class="sourceLineNo">088</span>      return null;<a name="line.88"></a>
+<span class="sourceLineNo">089</span>    }<a name="line.89"></a>
+<span class="sourceLineNo">090</span>    data = removeMetaData(data);<a name="line.90"></a>
+<span class="sourceLineNo">091</span>    return ClusterId.parseFrom(data).toString();<a name="line.91"></a>
+<span class="sourceLineNo">092</span>  }<a name="line.92"></a>
+<span class="sourceLineNo">093</span><a name="line.93"></a>
+<span class="sourceLineNo">094</span>  @Override<a name="line.94"></a>
+<span class="sourceLineNo">095</span>  public CompletableFuture&lt;String&gt; getClusterId() {<a name="line.95"></a>
+<span class="sourceLineNo">096</span>    return getAndConvert(znodePaths.clusterIdZNode, ZKAsyncRegistry::getClusterId);<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>  @VisibleForTesting<a name="line.99"></a>
+<span class="sourceLineNo">100</span>  ReadOnlyZKClient getZKClient() {<a name="line.100"></a>
+<span class="sourceLineNo">101</span>    return zk;<a name="line.101"></a>
+<span class="sourceLineNo">102</span>  }<a name="line.102"></a>
+<span class="sourceLineNo">103</span><a name="line.103"></a>
+<span class="sourceLineNo">104</span>  private static ZooKeeperProtos.MetaRegionServer getMetaProto(byte[] data) throws IOException {<a name="line.104"></a>
+<span class="sourceLineNo">105</span>    if (data == null || data.length == 0) {<a name="line.105"></a>
+<span class="sourceLineNo">106</span>      return null;<a name="line.106"></a>
+<span class="sourceLineNo">107</span>    }<a name="line.107"></a>
+<span class="sourceLineNo">108</span>    data = removeMetaData(data);<a name="line.108"></a>
+<span class="sourceLineNo">109</span>    int prefixLen = lengthOfPBMagic();<a name="line.109"></a>
+<span class="sourceLineNo">110</span>    return ZooKeeperProtos.MetaRegionServer.parser().parseFrom(data, prefixLen,<a name="line.110"></a>
+<span class="sourceLineNo">111</span>      data.length - prefixLen);<a name="line.111"></a>
+<span class="sourceLineNo">112</span>  }<a name="line.112"></a>
+<span class="sourceLineNo">113</span><a name="line.113"></a>
+<span class="sourceLineNo">114</span>  private static void tryComplete(MutableInt remaining, HRegionLocation[] locs,<a name="line.114"></a>
+<span class="sourceLineNo">115</span>      CompletableFuture&lt;RegionLocations&gt; future) {<a name="line.115"></a>
+<span class="sourceLineNo">116</span>    remaining.decrement();<a name="line.116"></a>
+<span class="sourceLineNo">117</span>    if (remaining.intValue() &gt; 0) {<a name="line.117"></a>
+<span class="sourceLineNo">118</span>      return;<a name="line.118"></a>
+<span class="sourceLineNo">119</span>    }<a name="line.119"></a>
+<span class="sourceLineNo">120</span>    future.complete(new RegionLocations(locs));<a name="line.120"></a>
+<span class="sourceLineNo">121</span>  }<a name="line.121"></a>
+<span class="sourceLineNo">122</span><a name="line.122"></a>
+<span class="sourceLineNo">123</span>  private Pair&lt;RegionState.State, ServerName&gt; getStateAndServerName(<a name="line.123"></a>
+<span class="sourceLineNo">124</span>      ZooKeeperProtos.MetaRegionServer proto) {<a name="line.124"></a>
+<span class="sourceLineNo">125</span>    RegionState.State state;<a name="line.125"></a>
+<span class="sourceLineNo">126</span>    if (proto.hasState()) {<a name="line.126"></a>
+<span class="sourceLineNo">127</span>      state = RegionState.State.convert(proto.getState());<a name="line.127"></a>
+<span class="sourceLineNo">128</span>    } else {<a name="line.128"></a>
+<span class="sourceLineNo">129</span>      state = RegionState.State.OPEN;<a name="line.129"></a>
+<span class="sourceLineNo">130</span>    }<a name="line.130"></a>
+<span class="sourceLineNo">131</span>    HBaseProtos.ServerName snProto = proto.getServer();<a name="line.131"></a>
+<span class="sourceLineNo">132</span>    return Pair.newPair(state,<a name="line.132"></a>
+<span class="sourceLineNo">133</span>      ServerName.valueOf(snProto.getHostName(), snProto.getPort(), snProto.getStartCode()));<a name="line.133"></a>
+<span class="sourceLineNo">134</span>  }<a name="line.134"></a>
+<span class="sourceLineNo">135</span><a name="line.135"></a>
+<span class="sourceLineNo">136</span>  @Override<a name="line.136"></a>
+<span class="sourceLineNo">137</span>  public CompletableFuture&lt;RegionLocations&gt; getMetaRegionLocation() {<a name="line.137"></a>
+<span class="sourceLineNo">138</span>    CompletableFuture&lt;RegionLocations&gt; future = new CompletableFuture&lt;&gt;();<a name="line.138"></a>
+<span class="sourceLineNo">139</span>    HRegionLocation[] locs = new HRegionLocation[znodePaths.metaReplicaZNodes.size()];<a name="line.139"></a>
+<span class="sourceLineNo">140</span>    MutableInt remaining = new MutableInt(locs.length);<a name="line.140"></a>
+<span class="sourceLineNo">141</span>    znodePaths.metaReplicaZNodes.forEach((replicaId, path) -&gt; {<a name="line.141"></a>
+<span class="sourceLineNo">142</span>      if (replicaId == DEFAULT_REPLICA_ID) {<a name="line.142"></a>
+<span class="sourceLineNo">143</span>        getAndConvert(path, ZKAsyncRegistry::getMetaProto).whenComplete((proto, error) -&gt; {<a name="line.143"></a>
+<span class="sourceLineNo">144</span>          if (error != null) {<a name="line.144"></a>
+<span class="sourceLineNo">145</span>            future.completeExceptionally(error);<a name="line.145"></a>
+<span class="sourceLineNo">146</span>            return;<a name="line.146"></a>
+<span class="sourceLineNo">147</span>          }<a name="line.147"></a>
+<span class="sourceLineNo">148</span>          if (proto == null) {<a name="line.148"></a>
+<span class="sourceLineNo">149</span>            future.completeExceptionally(new IOException("Meta znode is null"));<a name="line.149"></a>
+<span class="sourceLineNo">150</span>            return;<a name="line.150"></a>
+<span class="sourceLineNo">151</span>          }<a name="line.151"></a>
+<span class="sourceLineNo">152</span>          Pair&lt;RegionState.State, ServerName&gt; stateAndServerName = getStateAndServerName(proto);<a name="line.152"></a>
+<span class="sourceLineNo">153</span>          if (stateAndServerName.getFirst() != RegionState.State.OPEN) {<a name="line.153"></a>
+<span class="sourceLineNo">154</span>            future.completeExceptionally(<a name="line.154"></a>
+<span class="sourceLineNo">155</span>              new IOException("Meta region is in state " + stateAndServerName.getFirst()));<a name="line.155"></a>
+<span class="sourceLineNo">156</span>            return;<a name="line.156"></a>
+<span class="sourceLineNo">157</span>          }<a name="line.157"></a>
+<span class="sourceLineNo">158</span>          locs[DEFAULT_REPLICA_ID] =<a name="line.158"></a>
+<span class="sourceLineNo">159</span>              new HRegionLocation(getRegionInfoForDefaultReplica(FIRST_META_REGIONINFO),<a name="line.159"></a>
+<span class="sourceLineNo">160</span>                  stateAndServerName.getSecond());<a name="line.160"></a>
+<span class="sourceLineNo">161</span>          tryComplete(remaining, locs, future);<a name="line.161"></a>
+<span class="sourceLineNo">162</span>        });<a name="line.162"></a>
+<span class="sourceLineNo">163</span>      } else {<a name="line.163"></a>
+<span class="sourceLineNo">164</span>        getAndConvert(path, ZKAsyncRegistry::getMetaProto).whenComplete((proto, error) -&gt; {<a name="line.164"></a>
+<span class="sourceLineNo">165</span>          if (future.isDone()) {<a name="line.165"></a>
+<span class="sourceLineNo">166</span>            return;<a name="line.166"></a>
+<span class="sourceLineNo">167</span>          }<a name="line.167"></a>
+<span class="sourceLineNo">168</span>          if (error != null) {<a name="line.168"></a>
+<span class="sourceLineNo">169</span>            LOG.warn("Failed to fetch " + path, error);<a name="line.169"></a>
+<span class="sourceLineNo">170</span>            locs[replicaId] = null;<a name="line.170"></a>
+<span class="sourceLineNo">171</span>          } else if (proto == null) {<a name="line.171"></a>
+<span class="sourceLineNo">172</span>            LOG.warn("Meta znode for replica " + replicaId + " is null");<a name="line.172"></a>
+<span class="sourceLineNo">173</span>            locs[replicaId] = null;<a name="line.173"></a>
+<span class="sourceLineNo">174</span>          } else {<a name="line.174"></a>
+<span class="sourceLineNo">175</span>            Pair&lt;RegionState.State, ServerName&gt; stateAndServerName = getStateAndServerName(proto);<a name="line.175"></a>
+<span class="sourceLineNo">176</span>            if (stateAndServerName.getFirst() != RegionState.State.OPEN) {<a name="line.176"></a>
+<span class="sourceLineNo">177</span>              LOG.warn("Meta region for replica " + replicaId + " is in state " +<a name="line.177"></a>
+<span class="sourceLineNo">178</span>                  stateAndServerName.getFirst());<a name="line.178"></a>
+<span class="sourceLineNo">179</span>              locs[replicaId] = null;<a name="line.179"></a>
+<span class="sourceLineNo">180</span>            } else {<a name="line.180"></a>
+<span class="sourceLineNo">181</span>              locs[replicaId] =<a name="line.181"></a>
+<span class="sourceLineNo">182</span>                  new HRegionLocation(getRegionInfoForReplica(FIRST_META_REGIONINFO, replicaId),<a name="line.182"></a>
+<span class="sourceLineNo">183</span>                      stateAndServerName.getSecond());<a name="line.183"></a>
+<span class="sourceLineNo">184</span>            }<a name="line.184"></a>
+<span class="sourceLineNo">185</span>          }<a name="line.185"></a>
+<span class="sourceLineNo">186</span>          tryComplete(remaining, locs, future);<a name="line.186"></a>
+<span class="sourceLineNo">187</span>        });<a name="line.187"></a>
+<span class="sourceLineNo">188</span>      }<a name="line.188"></a>
+<span class="sourceLineNo">189</span>    });<a name="line.189"></a>
+<span class="sourceLineNo">190</span>    return future;<a name="line.190"></a>
+<span class="sourceLineNo">191</span>  }<a name="line.191"></a>
+<span class="sourceLineNo">192</span><a name="line.192"></a>
+<span class="sourceLineNo">193</span>  @Override<a name="line.193"></a>
+<span class="sourceLineNo">194</span>  public CompletableFuture&lt;Integer&gt; getCurrentNrHRS() {<a name="line.194"></a>
+<span class="sourceLineNo">195</span>    return zk.exists(znodePaths.rsZNode).thenApply(s -&gt; s != null ? s.getNumChildren() : 0);<a name="line.195"></a>
+<span class="sourceLineNo">196</span>  }<a name="line.196"></a>
+<span class="sourceLineNo">197</span><a name="line.197"></a>
+<span class="sourceLineNo">198</span>  private static ZooKeeperProtos.Master getMasterProto(byte[] data) throws IOException {<a name="line.198"></a>
+<span class="sourceLineNo">199</span>    if (data == null || data.length == 0) {<a name="line.199"></a>
+<span class="sourceLineNo">200</span>      return null;<a name="line.200"></a>
+<span class="sourceLineNo">201</span>    }<a name="line.201"></a>
+<span class="sourceLineNo">202</span>    data = removeMetaData(data);<a name="line.202"></a>
+<span class="sourceLineNo">203</span>    int prefixLen = lengthOfPBMagic();<a name="line.203"></a>
+<span class="sourceLineNo">204</span>    return ZooKeeperProtos.Master.parser().parseFrom(data, prefixLen, data.length - prefixLen);<a name="line.204"></a>
+<span class="sourceLineNo">205</span>  }<a name="line.205"></a>
+<span class="sourceLineNo">206</span><a name="line.206"></a>
+<span class="sourceLineNo">207</span>  @Override<a name="line.207"></a>
+<span class="sourceLineNo">208</span>  public CompletableFuture&lt;ServerName&gt; getMasterAddress() {<a name="line.208"></a>
+<span class="sourceLineNo">209</span>    return getAndConvert(znodePaths.masterAddressZNode, ZKAsyncRegistry::getMasterProto)<a name="line.209"></a>
+<span class="sourceLineNo">210</span>        .thenApply(proto -&gt; {<a name="line.210"></a>
+<span class="sourceLineNo">211</span>          if (proto == null) {<a name="line.211"></a>
+<span class="sourceLineNo">212</span>            return null;<a name="line.212"></a>
+<span class="sourceLineNo">213</span>          }<a name="line.213"></a>
+<span class="sourceLineNo">214</span>          HBaseProtos.ServerName snProto = proto.getMaster();<a name="line.214"></a>
+<span class="sourceLineNo">215</span>          return ServerName.valueOf(snProto.getHostName(), snProto.getPort(),<a name="line.215"></a>
+<span class="sourceLineNo">216</span>            snProto.getStartCode());<a name="line.216"></a>
+<span class="sourceLineNo">217</span>        });<a name="line.217"></a>
+<span class="sourceLineNo">218</span>  }<a name="line.218"></a>
+<span class="sourceLineNo">219</span><a name="line.219"></a>
+<span class="sourceLineNo">220</span>  @Override<a name="line.220"></a>
+<span class="sourceLineNo">221</span>  public CompletableFuture&lt;Integer&gt; getMasterInfoPort() {<a name="line.221"></a>
+<span class="sourceLineNo">222</span>    return getAndConvert(znodePaths.masterAddressZNode, ZKAsyncRegistry::getMasterProto)<a name="line.222"></a>
+<span class="sourceLineNo">223</span>        .thenApply(proto -&gt; proto != null ? proto.getInfoPort() : 0);<a name="line.223"></a>
+<span class="sourceLineNo">224</span>  }<a name="line.224"></a>
+<span class="sourceLineNo">225</span><a name="line.225"></a>
+<span class="sourceLineNo">226</span>  @Override<a name="line.226"></a>
+<span class="sourceLineNo">227</span>  public void close() {<a name="line.227"></a>
+<span class="sourceLineNo">228</span>    zk.close();<a name="line.228"></a>
+<span class="sourceLineNo">229</span>  }<a name="line.229"></a>
+<span class="sourceLineNo">230</span>}<a name="line.230"></a>
 
 
 


[40/51] [partial] hbase-site git commit: Published site at .

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/c54c242b/devapidocs/org/apache/hadoop/hbase/regionserver/HStore.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/regionserver/HStore.html b/devapidocs/org/apache/hadoop/hbase/regionserver/HStore.html
index c8e3361..b6dd296 100644
--- a/devapidocs/org/apache/hadoop/hbase/regionserver/HStore.html
+++ b/devapidocs/org/apache/hadoop/hbase/regionserver/HStore.html
@@ -118,7 +118,7 @@ var activeTableTab = "activeTableTab";
 <hr>
 <br>
 <pre>@InterfaceAudience.Private
-public class <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStore.html#line.126">HStore</a>
+public class <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStore.html#line.125">HStore</a>
 extends <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a>
 implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/Store.html" title="interface in org.apache.hadoop.hbase.regionserver">Store</a>, <a href="../../../../../org/apache/hadoop/hbase/io/HeapSize.html" title="interface in org.apache.hadoop.hbase.io">HeapSize</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreConfigInformation.html" title="interface in org.apache.hadoop.hbase.regionserver">StoreConfigInformation</a>, <a href="../../../../../org/apache/hadoop/hbase/conf/PropagatingConfigurationObserver.html" title="interface in org.apache.hadoop.hbase.conf">PropagatingConfigurationObserver</a></pre>
 <div class="block">A Store holds a column family in a Region.  Its a memstore and a set of zero
@@ -1218,7 +1218,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/Store.ht
 <ul class="blockList">
 <li class="blockList">
 <h4>MEMSTORE_CLASS_NAME</h4>
-<pre>public static 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> <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStore.html#line.127">MEMSTORE_CLASS_NAME</a></pre>
+<pre>public static 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> <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStore.html#line.126">MEMSTORE_CLASS_NAME</a></pre>
 <dl>
 <dt><span class="seeLabel">See Also:</span></dt>
 <dd><a href="../../../../../constant-values.html#org.apache.hadoop.hbase.regionserver.HStore.MEMSTORE_CLASS_NAME">Constant Field Values</a></dd>
@@ -1231,7 +1231,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/Store.ht
 <ul class="blockList">
 <li class="blockList">
 <h4>COMPACTCHECKER_INTERVAL_MULTIPLIER_KEY</h4>
-<pre>public static 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> <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStore.html#line.128">COMPACTCHECKER_INTERVAL_MULTIPLIER_KEY</a></pre>
+<pre>public static 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> <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStore.html#line.127">COMPACTCHECKER_INTERVAL_MULTIPLIER_KEY</a></pre>
 <dl>
 <dt><span class="seeLabel">See Also:</span></dt>
 <dd><a href="../../../../../constant-values.html#org.apache.hadoop.hbase.regionserver.HStore.COMPACTCHECKER_INTERVAL_MULTIPLIER_KEY">Constant Field Values</a></dd>
@@ -1244,7 +1244,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/Store.ht
 <ul class="blockList">
 <li class="blockList">
 <h4>BLOCKING_STOREFILES_KEY</h4>
-<pre>public static 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> <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStore.html#line.130">BLOCKING_STOREFILES_KEY</a></pre>
+<pre>public static 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> <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStore.html#line.129">BLOCKING_STOREFILES_KEY</a></pre>
 <dl>
 <dt><span class="seeLabel">See Also:</span></dt>
 <dd><a href="../../../../../constant-values.html#org.apache.hadoop.hbase.regionserver.HStore.BLOCKING_STOREFILES_KEY">Constant Field Values</a></dd>
@@ -1257,7 +1257,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/Store.ht
 <ul class="blockList">
 <li class="blockList">
 <h4>BLOCK_STORAGE_POLICY_KEY</h4>
-<pre>public static 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> <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStore.html#line.131">BLOCK_STORAGE_POLICY_KEY</a></pre>
+<pre>public static 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> <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStore.html#line.130">BLOCK_STORAGE_POLICY_KEY</a></pre>
 <dl>
 <dt><span class="seeLabel">See Also:</span></dt>
 <dd><a href="../../../../../constant-values.html#org.apache.hadoop.hbase.regionserver.HStore.BLOCK_STORAGE_POLICY_KEY">Constant Field Values</a></dd>
@@ -1270,7 +1270,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/Store.ht
 <ul class="blockList">
 <li class="blockList">
 <h4>DEFAULT_BLOCK_STORAGE_POLICY</h4>
-<pre>public static 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> <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStore.html#line.133">DEFAULT_BLOCK_STORAGE_POLICY</a></pre>
+<pre>public static 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> <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStore.html#line.132">DEFAULT_BLOCK_STORAGE_POLICY</a></pre>
 <dl>
 <dt><span class="seeLabel">See Also:</span></dt>
 <dd><a href="../../../../../constant-values.html#org.apache.hadoop.hbase.regionserver.HStore.DEFAULT_BLOCK_STORAGE_POLICY">Constant Field Values</a></dd>
@@ -1283,7 +1283,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/Store.ht
 <ul class="blockList">
 <li class="blockList">
 <h4>DEFAULT_COMPACTCHECKER_INTERVAL_MULTIPLIER</h4>
-<pre>public static final&nbsp;int <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStore.html#line.134">DEFAULT_COMPACTCHECKER_INTERVAL_MULTIPLIER</a></pre>
+<pre>public static final&nbsp;int <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStore.html#line.133">DEFAULT_COMPACTCHECKER_INTERVAL_MULTIPLIER</a></pre>
 <dl>
 <dt><span class="seeLabel">See Also:</span></dt>
 <dd><a href="../../../../../constant-values.html#org.apache.hadoop.hbase.regionserver.HStore.DEFAULT_COMPACTCHECKER_INTERVAL_MULTIPLIER">Constant Field Values</a></dd>
@@ -1296,7 +1296,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/Store.ht
 <ul class="blockList">
 <li class="blockList">
 <h4>DEFAULT_BLOCKING_STOREFILE_COUNT</h4>
-<pre>public static final&nbsp;int <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStore.html#line.135">DEFAULT_BLOCKING_STOREFILE_COUNT</a></pre>
+<pre>public static final&nbsp;int <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStore.html#line.134">DEFAULT_BLOCKING_STOREFILE_COUNT</a></pre>
 <dl>
 <dt><span class="seeLabel">See Also:</span></dt>
 <dd><a href="../../../../../constant-values.html#org.apache.hadoop.hbase.regionserver.HStore.DEFAULT_BLOCKING_STOREFILE_COUNT">Constant Field Values</a></dd>
@@ -1309,7 +1309,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/Store.ht
 <ul class="blockList">
 <li class="blockList">
 <h4>LOG</h4>
-<pre>private static final&nbsp;org.apache.commons.logging.Log <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStore.html#line.137">LOG</a></pre>
+<pre>private static final&nbsp;org.apache.commons.logging.Log <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStore.html#line.136">LOG</a></pre>
 </li>
 </ul>
 <a name="memstore">
@@ -1318,7 +1318,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/Store.ht
 <ul class="blockList">
 <li class="blockList">
 <h4>memstore</h4>
-<pre>protected final&nbsp;<a href="../../../../../org/apache/hadoop/hbase/regionserver/MemStore.html" title="interface in org.apache.hadoop.hbase.regionserver">MemStore</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStore.html#line.139">memstore</a></pre>
+<pre>protected final&nbsp;<a href="../../../../../org/apache/hadoop/hbase/regionserver/MemStore.html" title="interface in org.apache.hadoop.hbase.regionserver">MemStore</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStore.html#line.138">memstore</a></pre>
 </li>
 </ul>
 <a name="region">
@@ -1327,7 +1327,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/Store.ht
 <ul class="blockList">
 <li class="blockList">
 <h4>region</h4>
-<pre>protected final&nbsp;<a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegion.html" title="class in org.apache.hadoop.hbase.regionserver">HRegion</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStore.html#line.141">region</a></pre>
+<pre>protected final&nbsp;<a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegion.html" title="class in org.apache.hadoop.hbase.regionserver">HRegion</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStore.html#line.140">region</a></pre>
 </li>
 </ul>
 <a name="family">
@@ -1336,7 +1336,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/Store.ht
 <ul class="blockList">
 <li class="blockList">
 <h4>family</h4>
-<pre>private final&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/ColumnFamilyDescriptor.html" title="interface in org.apache.hadoop.hbase.client">ColumnFamilyDescriptor</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStore.html#line.142">family</a></pre>
+<pre>private final&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/ColumnFamilyDescriptor.html" title="interface in org.apache.hadoop.hbase.client">ColumnFamilyDescriptor</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStore.html#line.141">family</a></pre>
 </li>
 </ul>
 <a name="fs">
@@ -1345,7 +1345,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/Store.ht
 <ul class="blockList">
 <li class="blockList">
 <h4>fs</h4>
-<pre>private final&nbsp;<a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionFileSystem.html" title="class in org.apache.hadoop.hbase.regionserver">HRegionFileSystem</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStore.html#line.143">fs</a></pre>
+<pre>private final&nbsp;<a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionFileSystem.html" title="class in org.apache.hadoop.hbase.regionserver">HRegionFileSystem</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStore.html#line.142">fs</a></pre>
 </li>
 </ul>
 <a name="conf">
@@ -1354,7 +1354,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/Store.ht
 <ul class="blockList">
 <li class="blockList">
 <h4>conf</h4>
-<pre>protected&nbsp;org.apache.hadoop.conf.Configuration <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStore.html#line.144">conf</a></pre>
+<pre>protected&nbsp;org.apache.hadoop.conf.Configuration <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStore.html#line.143">conf</a></pre>
 </li>
 </ul>
 <a name="cacheConf">
@@ -1363,7 +1363,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/Store.ht
 <ul class="blockList">
 <li class="blockList">
 <h4>cacheConf</h4>
-<pre>protected&nbsp;<a href="../../../../../org/apache/hadoop/hbase/io/hfile/CacheConfig.html" title="class in org.apache.hadoop.hbase.io.hfile">CacheConfig</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStore.html#line.145">cacheConf</a></pre>
+<pre>protected&nbsp;<a href="../../../../../org/apache/hadoop/hbase/io/hfile/CacheConfig.html" title="class in org.apache.hadoop.hbase.io.hfile">CacheConfig</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStore.html#line.144">cacheConf</a></pre>
 </li>
 </ul>
 <a name="lastCompactSize">
@@ -1372,7 +1372,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/Store.ht
 <ul class="blockList">
 <li class="blockList">
 <h4>lastCompactSize</h4>
-<pre>private&nbsp;long <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStore.html#line.146">lastCompactSize</a></pre>
+<pre>private&nbsp;long <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStore.html#line.145">lastCompactSize</a></pre>
 </li>
 </ul>
 <a name="forceMajor">
@@ -1381,7 +1381,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/Store.ht
 <ul class="blockList">
 <li class="blockList">
 <h4>forceMajor</h4>
-<pre>volatile&nbsp;boolean <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStore.html#line.147">forceMajor</a></pre>
+<pre>volatile&nbsp;boolean <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStore.html#line.146">forceMajor</a></pre>
 </li>
 </ul>
 <a name="closeCheckInterval">
@@ -1390,7 +1390,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/Store.ht
 <ul class="blockList">
 <li class="blockList">
 <h4>closeCheckInterval</h4>
-<pre>static&nbsp;int <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStore.html#line.149">closeCheckInterval</a></pre>
+<pre>static&nbsp;int <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStore.html#line.148">closeCheckInterval</a></pre>
 </li>
 </ul>
 <a name="storeSize">
@@ -1399,7 +1399,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/Store.ht
 <ul class="blockList">
 <li class="blockList">
 <h4>storeSize</h4>
-<pre>private volatile&nbsp;long <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStore.html#line.150">storeSize</a></pre>
+<pre>private volatile&nbsp;long <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStore.html#line.149">storeSize</a></pre>
 </li>
 </ul>
 <a name="totalUncompressedBytes">
@@ -1408,7 +1408,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/Store.ht
 <ul class="blockList">
 <li class="blockList">
 <h4>totalUncompressedBytes</h4>
-<pre>private volatile&nbsp;long <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStore.html#line.151">totalUncompressedBytes</a></pre>
+<pre>private volatile&nbsp;long <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStore.html#line.150">totalUncompressedBytes</a></pre>
 </li>
 </ul>
 <a name="lock">
@@ -1417,7 +1417,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/Store.ht
 <ul class="blockList">
 <li class="blockList">
 <h4>lock</h4>
-<pre>final&nbsp;<a href="http://docs.oracle.com/javase/8/docs/api/java/util/concurrent/locks/ReentrantReadWriteLock.html?is-external=true" title="class or interface in java.util.concurrent.locks">ReentrantReadWriteLock</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStore.html#line.162">lock</a></pre>
+<pre>final&nbsp;<a href="http://docs.oracle.com/javase/8/docs/api/java/util/concurrent/locks/ReentrantReadWriteLock.html?is-external=true" title="class or interface in java.util.concurrent.locks">ReentrantReadWriteLock</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStore.html#line.161">lock</a></pre>
 <div class="block">RWLock for store operations.
  Locked in shared mode when the list of component stores is looked at:
    - all reads/writes to table data
@@ -1433,7 +1433,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/Store.ht
 <ul class="blockList">
 <li class="blockList">
 <h4>archiveLock</h4>
-<pre>final&nbsp;<a href="http://docs.oracle.com/javase/8/docs/api/java/util/concurrent/locks/ReentrantLock.html?is-external=true" title="class or interface in java.util.concurrent.locks">ReentrantLock</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStore.html#line.174">archiveLock</a></pre>
+<pre>final&nbsp;<a href="http://docs.oracle.com/javase/8/docs/api/java/util/concurrent/locks/ReentrantLock.html?is-external=true" title="class or interface in java.util.concurrent.locks">ReentrantLock</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStore.html#line.173">archiveLock</a></pre>
 <div class="block">Lock specific to archiving compacted store files.  This avoids races around
  the combination of retrieving the list of compacted files and moving them to
  the archive directory.  Since this is usually a background process (other than
@@ -1451,7 +1451,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/Store.ht
 <ul class="blockList">
 <li class="blockList">
 <h4>verifyBulkLoads</h4>
-<pre>private final&nbsp;boolean <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStore.html#line.176">verifyBulkLoads</a></pre>
+<pre>private final&nbsp;boolean <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStore.html#line.175">verifyBulkLoads</a></pre>
 </li>
 </ul>
 <a name="scanInfo">
@@ -1460,7 +1460,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/Store.ht
 <ul class="blockList">
 <li class="blockList">
 <h4>scanInfo</h4>
-<pre>private&nbsp;<a href="../../../../../org/apache/hadoop/hbase/regionserver/ScanInfo.html" title="class in org.apache.hadoop.hbase.regionserver">ScanInfo</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStore.html#line.178">scanInfo</a></pre>
+<pre>private&nbsp;<a href="../../../../../org/apache/hadoop/hbase/regionserver/ScanInfo.html" title="class in org.apache.hadoop.hbase.regionserver">ScanInfo</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStore.html#line.177">scanInfo</a></pre>
 </li>
 </ul>
 <a name="filesCompacting">
@@ -1469,7 +1469,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/Store.ht
 <ul class="blockList">
 <li class="blockList">
 <h4>filesCompacting</h4>
-<pre>final&nbsp;<a href="http://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/regionserver/HStoreFile.html" title="class in org.apache.hadoop.hbase.regionserver">HStoreFile</a>&gt; <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStore.html#line.181">filesCompacting</a></pre>
+<pre>final&nbsp;<a href="http://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/regionserver/HStoreFile.html" title="class in org.apache.hadoop.hbase.regionserver">HStoreFile</a>&gt; <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStore.html#line.180">filesCompacting</a></pre>
 </li>
 </ul>
 <a name="changedReaderObservers">
@@ -1478,7 +1478,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/Store.ht
 <ul class="blockList">
 <li class="blockList">
 <h4>changedReaderObservers</h4>
-<pre>private final&nbsp;<a href="http://docs.oracle.com/javase/8/docs/api/java/util/Set.html?is-external=true" title="class or interface in java.util">Set</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/regionserver/ChangedReadersObserver.html" title="interface in org.apache.hadoop.hbase.regionserver">ChangedReadersObserver</a>&gt; <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStore.html#line.184">changedReaderObservers</a></pre>
+<pre>private final&nbsp;<a href="http://docs.oracle.com/javase/8/docs/api/java/util/Set.html?is-external=true" title="class or interface in java.util">Set</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/regionserver/ChangedReadersObserver.html" title="interface in org.apache.hadoop.hbase.regionserver">ChangedReadersObserver</a>&gt; <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStore.html#line.183">changedReaderObservers</a></pre>
 </li>
 </ul>
 <a name="blocksize">
@@ -1487,7 +1487,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/Store.ht
 <ul class="blockList">
 <li class="blockList">
 <h4>blocksize</h4>
-<pre>protected final&nbsp;int <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStore.html#line.187">blocksize</a></pre>
+<pre>protected final&nbsp;int <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStore.html#line.186">blocksize</a></pre>
 </li>
 </ul>
 <a name="dataBlockEncoder">
@@ -1496,7 +1496,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/Store.ht
 <ul class="blockList">
 <li class="blockList">
 <h4>dataBlockEncoder</h4>
-<pre>private&nbsp;<a href="../../../../../org/apache/hadoop/hbase/io/hfile/HFileDataBlockEncoder.html" title="interface in org.apache.hadoop.hbase.io.hfile">HFileDataBlockEncoder</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStore.html#line.188">dataBlockEncoder</a></pre>
+<pre>private&nbsp;<a href="../../../../../org/apache/hadoop/hbase/io/hfile/HFileDataBlockEncoder.html" title="interface in org.apache.hadoop.hbase.io.hfile">HFileDataBlockEncoder</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStore.html#line.187">dataBlockEncoder</a></pre>
 </li>
 </ul>
 <a name="checksumType">
@@ -1505,7 +1505,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/Store.ht
 <ul class="blockList">
 <li class="blockList">
 <h4>checksumType</h4>
-<pre>protected&nbsp;<a href="../../../../../org/apache/hadoop/hbase/util/ChecksumType.html" title="enum in org.apache.hadoop.hbase.util">ChecksumType</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStore.html#line.191">checksumType</a></pre>
+<pre>protected&nbsp;<a href="../../../../../org/apache/hadoop/hbase/util/ChecksumType.html" title="enum in org.apache.hadoop.hbase.util">ChecksumType</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStore.html#line.190">checksumType</a></pre>
 <div class="block">Checksum configuration</div>
 </li>
 </ul>
@@ -1515,7 +1515,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/Store.ht
 <ul class="blockList">
 <li class="blockList">
 <h4>bytesPerChecksum</h4>
-<pre>protected&nbsp;int <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStore.html#line.192">bytesPerChecksum</a></pre>
+<pre>protected&nbsp;int <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStore.html#line.191">bytesPerChecksum</a></pre>
 </li>
 </ul>
 <a name="comparator">
@@ -1524,7 +1524,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/Store.ht
 <ul class="blockList">
 <li class="blockList">
 <h4>comparator</h4>
-<pre>protected final&nbsp;<a href="../../../../../org/apache/hadoop/hbase/CellComparator.html" title="interface in org.apache.hadoop.hbase">CellComparator</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStore.html#line.195">comparator</a></pre>
+<pre>protected final&nbsp;<a href="../../../../../org/apache/hadoop/hbase/CellComparator.html" title="interface in org.apache.hadoop.hbase">CellComparator</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStore.html#line.194">comparator</a></pre>
 </li>
 </ul>
 <a name="storeEngine">
@@ -1533,7 +1533,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/Store.ht
 <ul class="blockList">
 <li class="blockList">
 <h4>storeEngine</h4>
-<pre>final&nbsp;<a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreEngine.html" title="class in org.apache.hadoop.hbase.regionserver">StoreEngine</a>&lt;?,?,?,?&gt; <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStore.html#line.197">storeEngine</a></pre>
+<pre>final&nbsp;<a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreEngine.html" title="class in org.apache.hadoop.hbase.regionserver">StoreEngine</a>&lt;?,?,?,?&gt; <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStore.html#line.196">storeEngine</a></pre>
 </li>
 </ul>
 <a name="offPeakCompactionTracker">
@@ -1542,7 +1542,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/Store.ht
 <ul class="blockList">
 <li class="blockList">
 <h4>offPeakCompactionTracker</h4>
-<pre>private static final&nbsp;<a href="http://docs.oracle.com/javase/8/docs/api/java/util/concurrent/atomic/AtomicBoolean.html?is-external=true" title="class or interface in java.util.concurrent.atomic">AtomicBoolean</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStore.html#line.199">offPeakCompactionTracker</a></pre>
+<pre>private static final&nbsp;<a href="http://docs.oracle.com/javase/8/docs/api/java/util/concurrent/atomic/AtomicBoolean.html?is-external=true" title="class or interface in java.util.concurrent.atomic">AtomicBoolean</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStore.html#line.198">offPeakCompactionTracker</a></pre>
 </li>
 </ul>
 <a name="offPeakHours">
@@ -1551,7 +1551,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/Store.ht
 <ul class="blockList">
 <li class="blockList">
 <h4>offPeakHours</h4>
-<pre>private volatile&nbsp;<a href="../../../../../org/apache/hadoop/hbase/regionserver/compactions/OffPeakHours.html" title="class in org.apache.hadoop.hbase.regionserver.compactions">OffPeakHours</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStore.html#line.200">offPeakHours</a></pre>
+<pre>private volatile&nbsp;<a href="../../../../../org/apache/hadoop/hbase/regionserver/compactions/OffPeakHours.html" title="class in org.apache.hadoop.hbase.regionserver.compactions">OffPeakHours</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStore.html#line.199">offPeakHours</a></pre>
 </li>
 </ul>
 <a name="DEFAULT_FLUSH_RETRIES_NUMBER">
@@ -1560,7 +1560,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/Store.ht
 <ul class="blockList">
 <li class="blockList">
 <h4>DEFAULT_FLUSH_RETRIES_NUMBER</h4>
-<pre>private static final&nbsp;int <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStore.html#line.202">DEFAULT_FLUSH_RETRIES_NUMBER</a></pre>
+<pre>private static final&nbsp;int <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStore.html#line.201">DEFAULT_FLUSH_RETRIES_NUMBER</a></pre>
 <dl>
 <dt><span class="seeLabel">See Also:</span></dt>
 <dd><a href="../../../../../constant-values.html#org.apache.hadoop.hbase.regionserver.HStore.DEFAULT_FLUSH_RETRIES_NUMBER">Constant Field Values</a></dd>
@@ -1573,7 +1573,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/Store.ht
 <ul class="blockList">
 <li class="blockList">
 <h4>flushRetriesNumber</h4>
-<pre>private&nbsp;int <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStore.html#line.203">flushRetriesNumber</a></pre>
+<pre>private&nbsp;int <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStore.html#line.202">flushRetriesNumber</a></pre>
 </li>
 </ul>
 <a name="pauseTime">
@@ -1582,7 +1582,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/Store.ht
 <ul class="blockList">
 <li class="blockList">
 <h4>pauseTime</h4>
-<pre>private&nbsp;int <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStore.html#line.204">pauseTime</a></pre>
+<pre>private&nbsp;int <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStore.html#line.203">pauseTime</a></pre>
 </li>
 </ul>
 <a name="blockingFileCount">
@@ -1591,7 +1591,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/Store.ht
 <ul class="blockList">
 <li class="blockList">
 <h4>blockingFileCount</h4>
-<pre>private&nbsp;long <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStore.html#line.206">blockingFileCount</a></pre>
+<pre>private&nbsp;long <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStore.html#line.205">blockingFileCount</a></pre>
 </li>
 </ul>
 <a name="compactionCheckMultiplier">
@@ -1600,7 +1600,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/Store.ht
 <ul class="blockList">
 <li class="blockList">
 <h4>compactionCheckMultiplier</h4>
-<pre>private&nbsp;int <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStore.html#line.207">compactionCheckMultiplier</a></pre>
+<pre>private&nbsp;int <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStore.html#line.206">compactionCheckMultiplier</a></pre>
 </li>
 </ul>
 <a name="cryptoContext">
@@ -1609,7 +1609,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/Store.ht
 <ul class="blockList">
 <li class="blockList">
 <h4>cryptoContext</h4>
-<pre>protected&nbsp;<a href="../../../../../org/apache/hadoop/hbase/io/crypto/Encryption.Context.html" title="class in org.apache.hadoop.hbase.io.crypto">Encryption.Context</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStore.html#line.208">cryptoContext</a></pre>
+<pre>protected&nbsp;<a href="../../../../../org/apache/hadoop/hbase/io/crypto/Encryption.Context.html" title="class in org.apache.hadoop.hbase.io.crypto">Encryption.Context</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStore.html#line.207">cryptoContext</a></pre>
 </li>
 </ul>
 <a name="flushedCellsCount">
@@ -1618,7 +1618,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/Store.ht
 <ul class="blockList">
 <li class="blockList">
 <h4>flushedCellsCount</h4>
-<pre>private volatile&nbsp;long <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStore.html#line.210">flushedCellsCount</a></pre>
+<pre>private volatile&nbsp;long <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStore.html#line.209">flushedCellsCount</a></pre>
 </li>
 </ul>
 <a name="compactedCellsCount">
@@ -1627,7 +1627,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/Store.ht
 <ul class="blockList">
 <li class="blockList">
 <h4>compactedCellsCount</h4>
-<pre>private volatile&nbsp;long <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStore.html#line.211">compactedCellsCount</a></pre>
+<pre>private volatile&nbsp;long <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStore.html#line.210">compactedCellsCount</a></pre>
 </li>
 </ul>
 <a name="majorCompactedCellsCount">
@@ -1636,7 +1636,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/Store.ht
 <ul class="blockList">
 <li class="blockList">
 <h4>majorCompactedCellsCount</h4>
-<pre>private volatile&nbsp;long <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStore.html#line.212">majorCompactedCellsCount</a></pre>
+<pre>private volatile&nbsp;long <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStore.html#line.211">majorCompactedCellsCount</a></pre>
 </li>
 </ul>
 <a name="flushedCellsSize">
@@ -1645,7 +1645,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/Store.ht
 <ul class="blockList">
 <li class="blockList">
 <h4>flushedCellsSize</h4>
-<pre>private volatile&nbsp;long <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStore.html#line.213">flushedCellsSize</a></pre>
+<pre>private volatile&nbsp;long <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStore.html#line.212">flushedCellsSize</a></pre>
 </li>
 </ul>
 <a name="flushedOutputFileSize">
@@ -1654,7 +1654,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/Store.ht
 <ul class="blockList">
 <li class="blockList">
 <h4>flushedOutputFileSize</h4>
-<pre>private volatile&nbsp;long <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStore.html#line.214">flushedOutputFileSize</a></pre>
+<pre>private volatile&nbsp;long <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStore.html#line.213">flushedOutputFileSize</a></pre>
 </li>
 </ul>
 <a name="compactedCellsSize">
@@ -1663,7 +1663,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/Store.ht
 <ul class="blockList">
 <li class="blockList">
 <h4>compactedCellsSize</h4>
-<pre>private volatile&nbsp;long <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStore.html#line.215">compactedCellsSize</a></pre>
+<pre>private volatile&nbsp;long <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStore.html#line.214">compactedCellsSize</a></pre>
 </li>
 </ul>
 <a name="majorCompactedCellsSize">
@@ -1672,7 +1672,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/Store.ht
 <ul class="blockList">
 <li class="blockList">
 <h4>majorCompactedCellsSize</h4>
-<pre>private volatile&nbsp;long <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStore.html#line.216">majorCompactedCellsSize</a></pre>
+<pre>private volatile&nbsp;long <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStore.html#line.215">majorCompactedCellsSize</a></pre>
 </li>
 </ul>
 <a name="FIXED_OVERHEAD">
@@ -1707,7 +1707,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/Store.ht
 <ul class="blockListLast">
 <li class="blockList">
 <h4>HStore</h4>
-<pre>protected&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStore.html#line.226">HStore</a>(<a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegion.html" title="class in org.apache.hadoop.hbase.regionserver">HRegion</a>&nbsp;region,
+<pre>protected&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStore.html#line.225">HStore</a>(<a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegion.html" title="class in org.apache.hadoop.hbase.regionserver">HRegion</a>&nbsp;region,
                  <a href="../../../../../org/apache/hadoop/hbase/client/ColumnFamilyDescriptor.html" title="interface in org.apache.hadoop.hbase.client">ColumnFamilyDescriptor</a>&nbsp;family,
                  org.apache.hadoop.conf.Configuration&nbsp;confParam)
           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>
@@ -1737,7 +1737,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/Store.ht
 <ul class="blockList">
 <li class="blockList">
 <h4>createCacheConf</h4>
-<pre>protected&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStore.html#line.337">createCacheConf</a>(<a href="../../../../../org/apache/hadoop/hbase/client/ColumnFamilyDescriptor.html" title="interface in org.apache.hadoop.hbase.client">ColumnFamilyDescriptor</a>&nbsp;family)</pre>
+<pre>protected&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStore.html#line.336">createCacheConf</a>(<a href="../../../../../org/apache/hadoop/hbase/client/ColumnFamilyDescriptor.html" title="interface in org.apache.hadoop.hbase.client">ColumnFamilyDescriptor</a>&nbsp;family)</pre>
 <div class="block">Creates the cache config.</div>
 <dl>
 <dt><span class="paramLabel">Parameters:</span></dt>
@@ -1751,7 +1751,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/Store.ht
 <ul class="blockList">
 <li class="blockList">
 <h4>createStoreEngine</h4>
-<pre>protected&nbsp;<a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreEngine.html" title="class in org.apache.hadoop.hbase.regionserver">StoreEngine</a>&lt;?,?,?,?&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStore.html#line.349">createStoreEngine</a>(<a href="../../../../../org/apache/hadoop/hbase/regionserver/HStore.html" title="class in org.apache.hadoop.hbase.regionserver">HStore</a>&nbsp;store,
+<pre>protected&nbsp;<a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreEngine.html" title="class in org.apache.hadoop.hbase.regionserver">StoreEngine</a>&lt;?,?,?,?&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStore.html#line.348">createStoreEngine</a>(<a href="../../../../../org/apache/hadoop/hbase/regionserver/HStore.html" title="class in org.apache.hadoop.hbase.regionserver">HStore</a>&nbsp;store,
                                                  org.apache.hadoop.conf.Configuration&nbsp;conf,
                                                  <a href="../../../../../org/apache/hadoop/hbase/CellComparator.html" title="interface in org.apache.hadoop.hbase">CellComparator</a>&nbsp;kvComparator)
                                           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>
@@ -1775,7 +1775,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/Store.ht
 <ul class="blockList">
 <li class="blockList">
 <h4>determineTTLFromFamily</h4>
-<pre>public static&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStore.html#line.358">determineTTLFromFamily</a>(<a href="../../../../../org/apache/hadoop/hbase/client/ColumnFamilyDescriptor.html" title="interface in org.apache.hadoop.hbase.client">ColumnFamilyDescriptor</a>&nbsp;family)</pre>
+<pre>public static&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStore.html#line.357">determineTTLFromFamily</a>(<a href="../../../../../org/apache/hadoop/hbase/client/ColumnFamilyDescriptor.html" title="interface in org.apache.hadoop.hbase.client">ColumnFamilyDescriptor</a>&nbsp;family)</pre>
 <dl>
 <dt><span class="paramLabel">Parameters:</span></dt>
 <dd><code>family</code> - </dd>
@@ -1790,7 +1790,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/Store.ht
 <ul class="blockList">
 <li class="blockList">
 <h4>getColumnFamilyName</h4>
-<pre>public&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/regionserver/HStore.html#line.374">getColumnFamilyName</a>()</pre>
+<pre>public&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/regionserver/HStore.html#line.373">getColumnFamilyName</a>()</pre>
 <dl>
 <dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
 <dd><code><a href="../../../../../org/apache/hadoop/hbase/regionserver/Store.html#getColumnFamilyName--">getColumnFamilyName</a></code>&nbsp;in interface&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/regionserver/Store.html" title="interface in org.apache.hadoop.hbase.regionserver">Store</a></code></dd>
@@ -1803,7 +1803,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/Store.ht
 <ul class="blockList">
 <li class="blockList">
 <h4>getTableName</h4>
-<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/TableName.html" title="class in org.apache.hadoop.hbase">TableName</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStore.html#line.379">getTableName</a>()</pre>
+<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/TableName.html" title="class in org.apache.hadoop.hbase">TableName</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStore.html#line.378">getTableName</a>()</pre>
 <dl>
 <dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
 <dd><code><a href="../../../../../org/apache/hadoop/hbase/regionserver/Store.html#getTableName--">getTableName</a></code>&nbsp;in interface&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/regionserver/Store.html" title="interface in org.apache.hadoop.hbase.regionserver">Store</a></code></dd>
@@ -1816,7 +1816,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/Store.ht
 <ul class="blockList">
 <li class="blockList">
 <h4>getFileSystem</h4>
-<pre>public&nbsp;org.apache.hadoop.fs.FileSystem&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStore.html#line.384">getFileSystem</a>()</pre>
+<pre>public&nbsp;org.apache.hadoop.fs.FileSystem&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStore.html#line.383">getFileSystem</a>()</pre>
 <dl>
 <dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
 <dd><code><a href="../../../../../org/apache/hadoop/hbase/regionserver/Store.html#getFileSystem--">getFileSystem</a></code>&nbsp;in interface&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/regionserver/Store.html" title="interface in org.apache.hadoop.hbase.regionserver">Store</a></code></dd>
@@ -1829,7 +1829,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/Store.ht
 <ul class="blockList">
 <li class="blockList">
 <h4>getRegionFileSystem</h4>
-<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionFileSystem.html" title="class in org.apache.hadoop.hbase.regionserver">HRegionFileSystem</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStore.html#line.388">getRegionFileSystem</a>()</pre>
+<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionFileSystem.html" title="class in org.apache.hadoop.hbase.regionserver">HRegionFileSystem</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStore.html#line.387">getRegionFileSystem</a>()</pre>
 </li>
 </ul>
 <a name="getStoreFileTtl--">
@@ -1838,7 +1838,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/Store.ht
 <ul class="blockList">
 <li class="blockList">
 <h4>getStoreFileTtl</h4>
-<pre>public&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStore.html#line.394">getStoreFileTtl</a>()</pre>
+<pre>public&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStore.html#line.393">getStoreFileTtl</a>()</pre>
 <dl>
 <dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
 <dd><code><a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreConfigInformation.html#getStoreFileTtl--">getStoreFileTtl</a></code>&nbsp;in interface&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreConfigInformation.html" title="interface in org.apache.hadoop.hbase.regionserver">StoreConfigInformation</a></code></dd>
@@ -1853,7 +1853,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/Store.ht
 <ul class="blockList">
 <li class="blockList">
 <h4>getMemStoreFlushSize</h4>
-<pre>public&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStore.html#line.400">getMemStoreFlushSize</a>()</pre>
+<pre>public&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStore.html#line.399">getMemStoreFlushSize</a>()</pre>
 <dl>
 <dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
 <dd><code><a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreConfigInformation.html#getMemStoreFlushSize--">getMemStoreFlushSize</a></code>&nbsp;in interface&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreConfigInformation.html" title="interface in org.apache.hadoop.hbase.regionserver">StoreConfigInformation</a></code></dd>
@@ -1868,7 +1868,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/Store.ht
 <ul class="blockList">
 <li class="blockList">
 <h4>getFlushableSize</h4>
-<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/regionserver/MemStoreSize.html" title="class in org.apache.hadoop.hbase.regionserver">MemStoreSize</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStore.html#line.406">getFlushableSize</a>()</pre>
+<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/regionserver/MemStoreSize.html" title="class in org.apache.hadoop.hbase.regionserver">MemStoreSize</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStore.html#line.405">getFlushableSize</a>()</pre>
 <dl>
 <dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
 <dd><code><a href="../../../../../org/apache/hadoop/hbase/regionserver/Store.html#getFlushableSize--">getFlushableSize</a></code>&nbsp;in interface&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/regionserver/Store.html" title="interface in org.apache.hadoop.hbase.regionserver">Store</a></code></dd>
@@ -1885,7 +1885,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/Store.ht
 <ul class="blockList">
 <li class="blockList">
 <h4>getSnapshotSize</h4>
-<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/regionserver/MemStoreSize.html" title="class in org.apache.hadoop.hbase.regionserver">MemStoreSize</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStore.html#line.411">getSnapshotSize</a>()</pre>
+<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/regionserver/MemStoreSize.html" title="class in org.apache.hadoop.hbase.regionserver">MemStoreSize</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStore.html#line.410">getSnapshotSize</a>()</pre>
 <dl>
 <dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
 <dd><code><a href="../../../../../org/apache/hadoop/hbase/regionserver/Store.html#getSnapshotSize--">getSnapshotSize</a></code>&nbsp;in interface&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/regionserver/Store.html" title="interface in org.apache.hadoop.hbase.regionserver">Store</a></code></dd>
@@ -1900,7 +1900,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/Store.ht
 <ul class="blockList">
 <li class="blockList">
 <h4>getCompactionCheckMultiplier</h4>
-<pre>public&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStore.html#line.416">getCompactionCheckMultiplier</a>()</pre>
+<pre>public&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStore.html#line.415">getCompactionCheckMultiplier</a>()</pre>
 <dl>
 <dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
 <dd><code><a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreConfigInformation.html#getCompactionCheckMultiplier--">getCompactionCheckMultiplier</a></code>&nbsp;in interface&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreConfigInformation.html" title="interface in org.apache.hadoop.hbase.regionserver">StoreConfigInformation</a></code></dd>
@@ -1917,7 +1917,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/Store.ht
 <ul class="blockList">
 <li class="blockList">
 <h4>getBlockingFileCount</h4>
-<pre>public&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStore.html#line.421">getBlockingFileCount</a>()</pre>
+<pre>public&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStore.html#line.420">getBlockingFileCount</a>()</pre>
 <div class="block"><span class="descfrmTypeLabel">Description copied from interface:&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreConfigInformation.html#getBlockingFileCount--">StoreConfigInformation</a></code></span></div>
 <div class="block">The number of files required before flushes for this store will be blocked.</div>
 <dl>
@@ -1932,7 +1932,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/Store.ht
 <ul class="blockList">
 <li class="blockList">
 <h4>getBytesPerChecksum</h4>
-<pre>public static&nbsp;int&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStore.html#line.431">getBytesPerChecksum</a>(org.apache.hadoop.conf.Configuration&nbsp;conf)</pre>
+<pre>public static&nbsp;int&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStore.html#line.430">getBytesPerChecksum</a>(org.apache.hadoop.conf.Configuration&nbsp;conf)</pre>
 <div class="block">Returns the configured bytesPerChecksum value.</div>
 <dl>
 <dt><span class="paramLabel">Parameters:</span></dt>
@@ -1948,7 +1948,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/Store.ht
 <ul class="blockList">
 <li class="blockList">
 <h4>getChecksumType</h4>
-<pre>public static&nbsp;<a href="../../../../../org/apache/hadoop/hbase/util/ChecksumType.html" title="enum in org.apache.hadoop.hbase.util">ChecksumType</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStore.html#line.441">getChecksumType</a>(org.apache.hadoop.conf.Configuration&nbsp;conf)</pre>
+<pre>public static&nbsp;<a href="../../../../../org/apache/hadoop/hbase/util/ChecksumType.html" title="enum in org.apache.hadoop.hbase.util">ChecksumType</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStore.html#line.440">getChecksumType</a>(org.apache.hadoop.conf.Configuration&nbsp;conf)</pre>
 <div class="block">Returns the configured checksum algorithm.</div>
 <dl>
 <dt><span class="paramLabel">Parameters:</span></dt>
@@ -1964,7 +1964,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/Store.ht
 <ul class="blockList">
 <li class="blockList">
 <h4>getCloseCheckInterval</h4>
-<pre>public static&nbsp;int&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStore.html#line.453">getCloseCheckInterval</a>()</pre>
+<pre>public static&nbsp;int&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStore.html#line.452">getCloseCheckInterval</a>()</pre>
 <dl>
 <dt><span class="returnLabel">Returns:</span></dt>
 <dd>how many bytes to write between status checks</dd>
@@ -1977,7 +1977,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/Store.ht
 <ul class="blockList">
 <li class="blockList">
 <h4>getColumnFamilyDescriptor</h4>
-<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/ColumnFamilyDescriptor.html" title="interface in org.apache.hadoop.hbase.client">ColumnFamilyDescriptor</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStore.html#line.458">getColumnFamilyDescriptor</a>()</pre>
+<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/ColumnFamilyDescriptor.html" title="interface in org.apache.hadoop.hbase.client">ColumnFamilyDescriptor</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStore.html#line.457">getColumnFamilyDescriptor</a>()</pre>
 <dl>
 <dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
 <dd><code><a href="../../../../../org/apache/hadoop/hbase/regionserver/Store.html#getColumnFamilyDescriptor--">getColumnFamilyDescriptor</a></code>&nbsp;in interface&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/regionserver/Store.html" title="interface in org.apache.hadoop.hbase.regionserver">Store</a></code></dd>
@@ -1990,7 +1990,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/Store.ht
 <ul class="blockList">
 <li class="blockList">
 <h4>getMaxSequenceId</h4>
-<pre>public&nbsp;<a href="http://docs.oracle.com/javase/8/docs/api/java/util/OptionalLong.html?is-external=true" title="class or interface in java.util">OptionalLong</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStore.html#line.463">getMaxSequenceId</a>()</pre>
+<pre>public&nbsp;<a href="http://docs.oracle.com/javase/8/docs/api/java/util/OptionalLong.html?is-external=true" title="class or interface in java.util">OptionalLong</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStore.html#line.462">getMaxSequenceId</a>()</pre>
 <dl>
 <dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
 <dd><code><a href="../../../../../org/apache/hadoop/hbase/regionserver/Store.html#getMaxSequenceId--">getMaxSequenceId</a></code>&nbsp;in interface&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/regionserver/Store.html" title="interface in org.apache.hadoop.hbase.regionserver">Store</a></code></dd>
@@ -2005,7 +2005,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/Store.ht
 <ul class="blockList">
 <li class="blockList">
 <h4>getMaxMemStoreTS</h4>
-<pre>public&nbsp;<a href="http://docs.oracle.com/javase/8/docs/api/java/util/OptionalLong.html?is-external=true" title="class or interface in java.util">OptionalLong</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStore.html#line.468">getMaxMemStoreTS</a>()</pre>
+<pre>public&nbsp;<a href="http://docs.oracle.com/javase/8/docs/api/java/util/OptionalLong.html?is-external=true" title="class or interface in java.util">OptionalLong</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStore.html#line.467">getMaxMemStoreTS</a>()</pre>
 <dl>
 <dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
 <dd><code><a href="../../../../../org/apache/hadoop/hbase/regionserver/Store.html#getMaxMemStoreTS--">getMaxMemStoreTS</a></code>&nbsp;in interface&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/regionserver/Store.html" title="interface in org.apache.hadoop.hbase.regionserver">Store</a></code></dd>
@@ -2021,7 +2021,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/Store.ht
 <li class="blockList">
 <h4>getStoreHomedir</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;org.apache.hadoop.fs.Path&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStore.html#line.479">getStoreHomedir</a>(org.apache.hadoop.fs.Path&nbsp;tabledir,
+public static&nbsp;org.apache.hadoop.fs.Path&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStore.html#line.478">getStoreHomedir</a>(org.apache.hadoop.fs.Path&nbsp;tabledir,
                                                                     <a href="../../../../../org/apache/hadoop/hbase/client/RegionInfo.html" title="interface in org.apache.hadoop.hbase.client">RegionInfo</a>&nbsp;hri,
                                                                     byte[]&nbsp;family)</pre>
 <div class="block"><span class="deprecatedLabel">Deprecated.</span>&nbsp;</div>
@@ -2042,7 +2042,7 @@ public static&nbsp;org.apache.hadoop.fs.Path&nbsp;<a href="../../../../../src-ht
 <li class="blockList">
 <h4>getStoreHomedir</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;org.apache.hadoop.fs.Path&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStore.html#line.491">getStoreHomedir</a>(org.apache.hadoop.fs.Path&nbsp;tabledir,
+public static&nbsp;org.apache.hadoop.fs.Path&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStore.html#line.490">getStoreHomedir</a>(org.apache.hadoop.fs.Path&nbsp;tabledir,
                                                                     <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;encodedName,
                                                                     byte[]&nbsp;family)</pre>
 <div class="block"><span class="deprecatedLabel">Deprecated.</span>&nbsp;</div>
@@ -2062,7 +2062,7 @@ public static&nbsp;org.apache.hadoop.fs.Path&nbsp;<a href="../../../../../src-ht
 <ul class="blockList">
 <li class="blockList">
 <h4>getDataBlockEncoder</h4>
-<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/io/hfile/HFileDataBlockEncoder.html" title="interface in org.apache.hadoop.hbase.io.hfile">HFileDataBlockEncoder</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStore.html#line.499">getDataBlockEncoder</a>()</pre>
+<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/io/hfile/HFileDataBlockEncoder.html" title="interface in org.apache.hadoop.hbase.io.hfile">HFileDataBlockEncoder</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStore.html#line.498">getDataBlockEncoder</a>()</pre>
 <dl>
 <dt><span class="returnLabel">Returns:</span></dt>
 <dd>the data block encoder</dd>
@@ -2075,7 +2075,7 @@ public static&nbsp;org.apache.hadoop.fs.Path&nbsp;<a href="../../../../../src-ht
 <ul class="blockList">
 <li class="blockList">
 <h4>setDataBlockEncoderInTest</h4>
-<pre>void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStore.html#line.507">setDataBlockEncoderInTest</a>(<a href="../../../../../org/apache/hadoop/hbase/io/hfile/HFileDataBlockEncoder.html" title="interface in org.apache.hadoop.hbase.io.hfile">HFileDataBlockEncoder</a>&nbsp;blockEncoder)</pre>
+<pre>void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStore.html#line.506">setDataBlockEncoderInTest</a>(<a href="../../../../../org/apache/hadoop/hbase/io/hfile/HFileDataBlockEncoder.html" title="interface in org.apache.hadoop.hbase.io.hfile">HFileDataBlockEncoder</a>&nbsp;blockEncoder)</pre>
 <div class="block">Should be used only in tests.</div>
 <dl>
 <dt><span class="paramLabel">Parameters:</span></dt>
@@ -2089,7 +2089,7 @@ public static&nbsp;org.apache.hadoop.fs.Path&nbsp;<a href="../../../../../src-ht
 <ul class="blockList">
 <li class="blockList">
 <h4>loadStoreFiles</h4>
-<pre>private&nbsp;<a href="http://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/regionserver/HStoreFile.html" title="class in org.apache.hadoop.hbase.regionserver">HStoreFile</a>&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStore.html#line.516">loadStoreFiles</a>()
+<pre>private&nbsp;<a href="http://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/regionserver/HStoreFile.html" title="class in org.apache.hadoop.hbase.regionserver">HStoreFile</a>&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStore.html#line.515">loadStoreFiles</a>()
                                  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">Creates an unsorted list of StoreFile loaded in parallel
  from the given directory.</div>
@@ -2105,7 +2105,7 @@ public static&nbsp;org.apache.hadoop.fs.Path&nbsp;<a href="../../../../../src-ht
 <ul class="blockList">
 <li class="blockList">
 <h4>openStoreFiles</h4>
-<pre>private&nbsp;<a href="http://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/regionserver/HStoreFile.html" title="class in org.apache.hadoop.hbase.regionserver">HStoreFile</a>&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStore.html#line.521">openStoreFiles</a>(<a href="http://docs.oracle.com/javase/8/docs/api/java/util/Collection.html?is-external=true" title="class or interface in java.util">Collection</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFileInfo.html" title="class in org.apache.hadoop.hbase.regionserver">StoreFileInfo</a>&gt;&nbsp;files)
+<pre>private&nbsp;<a href="http://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/regionserver/HStoreFile.html" title="class in org.apache.hadoop.hbase.regionserver">HStoreFile</a>&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStore.html#line.520">openStoreFiles</a>(<a href="http://docs.oracle.com/javase/8/docs/api/java/util/Collection.html?is-external=true" title="class or interface in java.util">Collection</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFileInfo.html" title="class in org.apache.hadoop.hbase.regionserver">StoreFileInfo</a>&gt;&nbsp;files)
                                  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>
 <dl>
 <dt><span class="throwsLabel">Throws:</span></dt>
@@ -2119,7 +2119,7 @@ public static&nbsp;org.apache.hadoop.fs.Path&nbsp;<a href="../../../../../src-ht
 <ul class="blockList">
 <li class="blockList">
 <h4>refreshStoreFiles</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStore.html#line.580">refreshStoreFiles</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStore.html#line.579">refreshStoreFiles</a>()
                        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="descfrmTypeLabel">Description copied from interface:&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/regionserver/Store.html#refreshStoreFiles--">Store</a></code></span></div>
 <div class="block">Checks the underlying store files, and opens the files that have not been opened, and removes
@@ -2139,7 +2139,7 @@ public static&nbsp;org.apache.hadoop.fs.Path&nbsp;<a href="../../../../../src-ht
 <ul class="blockList">
 <li class="blockList">
 <h4>refreshStoreFiles</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStore.html#line.590">refreshStoreFiles</a>(<a href="http://docs.oracle.com/javase/8/docs/api/java/util/Collection.html?is-external=true" title="class or interface in java.util">Collection</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>&gt;&nbsp;newFiles)
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStore.html#line.589">refreshStoreFiles</a>(<a href="http://docs.oracle.com/javase/8/docs/api/java/util/Collection.html?is-external=true" title="class or interface in java.util">Collection</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>&gt;&nbsp;newFiles)
                        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">Replaces the store files that the store has with the given files. Mainly used by secondary
  region replicas to keep up to date with the primary region files.</div>
@@ -2155,7 +2155,7 @@ public static&nbsp;org.apache.hadoop.fs.Path&nbsp;<a href="../../../../../src-ht
 <ul class="blockList">
 <li class="blockList">
 <h4>refreshStoreFilesInternal</h4>
-<pre>private&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStore.html#line.605">refreshStoreFilesInternal</a>(<a href="http://docs.oracle.com/javase/8/docs/api/java/util/Collection.html?is-external=true" title="class or interface in java.util">Collection</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFileInfo.html" title="class in org.apache.hadoop.hbase.regionserver">StoreFileInfo</a>&gt;&nbsp;newFiles)
+<pre>private&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStore.html#line.604">refreshStoreFilesInternal</a>(<a href="http://docs.oracle.com/javase/8/docs/api/java/util/Collection.html?is-external=true" title="class or interface in java.util">Collection</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFileInfo.html" title="class in org.apache.hadoop.hbase.regionserver">StoreFileInfo</a>&gt;&nbsp;newFiles)
                                 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">Checks the underlying store files, and opens the files that  have not
  been opened, and removes the store file readers for store files no longer
@@ -2173,7 +2173,7 @@ public static&nbsp;org.apache.hadoop.fs.Path&nbsp;<a href="../../../../../src-ht
 <ul class="blockList">
 <li class="blockList">
 <h4>createStoreFileAndReader</h4>
-<pre>private&nbsp;<a href="../../../../../org/apache/hadoop/hbase/regionserver/HStoreFile.html" title="class in org.apache.hadoop.hbase.regionserver">HStoreFile</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStore.html#line.657">createStoreFileAndReader</a>(org.apache.hadoop.fs.Path&nbsp;p)
+<pre>private&nbsp;<a href="../../../../../org/apache/hadoop/hbase/regionserver/HStoreFile.html" title="class in org.apache.hadoop.hbase.regionserver">HStoreFile</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStore.html#line.656">createStoreFileAndReader</a>(org.apache.hadoop.fs.Path&nbsp;p)
                                      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>
 <dl>
 <dt><span class="throwsLabel">Throws:</span></dt>
@@ -2187,7 +2187,7 @@ public static&nbsp;org.apache.hadoop.fs.Path&nbsp;<a href="../../../../../src-ht
 <ul class="blockList">
 <li class="blockList">
 <h4>createStoreFileAndReader</h4>
-<pre>private&nbsp;<a href="../../../../../org/apache/hadoop/hbase/regionserver/HStoreFile.html" title="class in org.apache.hadoop.hbase.regionserver">HStoreFile</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStore.html#line.662">createStoreFileAndReader</a>(<a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFileInfo.html" title="class in org.apache.hadoop.hbase.regionserver">StoreFileInfo</a>&nbsp;info)
+<pre>private&nbsp;<a href="../../../../../org/apache/hadoop/hbase/regionserver/HStoreFile.html" title="class in org.apache.hadoop.hbase.regionserver">HStoreFile</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStore.html#line.661">createStoreFileAndReader</a>(<a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFileInfo.html" title="class in org.apache.hadoop.hbase.regionserver">StoreFileInfo</a>&nbsp;info)
                                      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>
 <dl>
 <dt><span class="throwsLabel">Throws:</span></dt>
@@ -2201,7 +2201,7 @@ public static&nbsp;org.apache.hadoop.fs.Path&nbsp;<a href="../../../../../src-ht
 <ul class="blockList">
 <li class="blockList">
 <h4>startReplayingFromWAL</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStore.html#line.674">startReplayingFromWAL</a>()</pre>
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStore.html#line.673">startReplayingFromWAL</a>()</pre>
 <div class="block">This message intends to inform the MemStore that next coming updates
  are going to be part of the replaying edits from WAL</div>
 </li>
@@ -2212,7 +2212,7 @@ public static&nbsp;org.apache.hadoop.fs.Path&nbsp;<a href="../../../../../src-ht
 <ul class="blockList">
 <li class="blockList">
 <h4>stopReplayingFromWAL</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStore.html#line.682">stopReplayingFromWAL</a>()</pre>
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStore.html#line.681">stopReplayingFromWAL</a>()</pre>
 <div class="block">This message intends to inform the MemStore that the replaying edits from WAL
  are done</div>
 </li>
@@ -2223,7 +2223,7 @@ public static&nbsp;org.apache.hadoop.fs.Path&nbsp;<a href="../../../../../src-ht
 <ul class="blockList">
 <li class="blockList">
 <h4>add</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStore.html#line.689">add</a>(<a href="../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&nbsp;cell,
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStore.html#line.688">add</a>(<a href="../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&nbsp;cell,
                 <a href="../../../../../org/apache/hadoop/hbase/regionserver/MemStoreSizing.html" title="class in org.apache.hadoop.hbase.regionserver">MemStoreSizing</a>&nbsp;memstoreSizing)</pre>
 <div class="block">Adds a value to the memstore</div>
 </li>
@@ -2234,7 +2234,7 @@ public static&nbsp;org.apache.hadoop.fs.Path&nbsp;<a href="../../../../../src-ht
 <ul class="blockList">
 <li class="blockList">
 <h4>add</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStore.html#line.701">add</a>(<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Iterable.html?is-external=true" title="class or interface in java.lang">Iterable</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&gt;&nbsp;cells,
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStore.html#line.700">add</a>(<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Iterable.html?is-external=true" title="class or interface in java.lang">Iterable</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&gt;&nbsp;cells,
                 <a href="../../../../../org/apache/hadoop/hbase/regionserver/MemStoreSizing.html" title="class in org.apache.hadoop.hbase.regionserver">MemStoreSizing</a>&nbsp;memstoreSizing)</pre>
 <div class="block">Adds the specified value to the memstore</div>
 </li>
@@ -2245,7 +2245,7 @@ public static&nbsp;org.apache.hadoop.fs.Path&nbsp;<a href="../../../../../src-ht
 <ul class="blockList">
 <li class="blockList">
 <h4>timeOfOldestEdit</h4>
-<pre>public&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStore.html#line.711">timeOfOldestEdit</a>()</pre>
+<pre>public&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStore.html#line.710">timeOfOldestEdit</a>()</pre>
 <div class="block"><span class="descfrmTypeLabel">Description copied from interface:&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/regionserver/Store.html#timeOfOldestEdit--">Store</a></code></span></div>
 <div class="block">When was the last edit done in the memstore</div>
 <dl>
@@ -2260,7 +2260,7 @@ public static&nbsp;org.apache.hadoop.fs.Path&nbsp;<a href="../../../../../src-ht
 <ul class="blockList">
 <li class="blockList">
 <h4>getStorefiles</h4>
-<pre>public&nbsp;<a href="http://docs.oracle.com/javase/8/docs/api/java/util/Collection.html?is-external=true" title="class or interface in java.util">Collection</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/regionserver/HStoreFile.html" title="class in org.apache.hadoop.hbase.regionserver">HStoreFile</a>&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStore.html#line.719">getStorefiles</a>()</pre>
+<pre>public&nbsp;<a href="http://docs.oracle.com/javase/8/docs/api/java/util/Collection.html?is-external=true" title="class or interface in java.util">Collection</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/regionserver/HStoreFile.html" title="class in org.apache.hadoop.hbase.regionserver">HStoreFile</a>&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStore.html#line.718">getStorefiles</a>()</pre>
 <dl>
 <dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
 <dd><code><a href="../../../../../org/apache/hadoop/hbase/regionserver/Store.html#getStorefiles--">getStorefiles</a></code>&nbsp;in interface&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/regionserver/Store.html" title="interface in org.apache.hadoop.hbase.regionserver">Store</a></code></dd>
@@ -2275,7 +2275,7 @@ public static&nbsp;org.apache.hadoop.fs.Path&nbsp;<a href="../../../../../src-ht
 <ul class="blockList">
 <li class="blockList">
 <h4>getCompactedFiles</h4>
-<pre>public&nbsp;<a href="http://docs.oracle.com/javase/8/docs/api/java/util/Collection.html?is-external=true" title="class or interface in java.util">Collection</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/regionserver/HStoreFile.html" title="class in org.apache.hadoop.hbase.regionserver">HStoreFile</a>&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStore.html#line.724">getCompactedFiles</a>()</pre>
+<pre>public&nbsp;<a href="http://docs.oracle.com/javase/8/docs/api/java/util/Collection.html?is-external=true" title="class or interface in java.util">Collection</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/regionserver/HStoreFile.html" title="class in org.apache.hadoop.hbase.regionserver">HStoreFile</a>&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStore.html#line.723">getCompactedFiles</a>()</pre>
 <dl>
 <dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
 <dd><code><a href="../../../../../org/apache/hadoop/hbase/regionserver/Store.html#getCompactedFiles--">getCompactedFiles</a></code>&nbsp;in interface&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/regionserver/Store.html" title="interface in org.apache.hadoop.hbase.regionserver">Store</a></code></dd>
@@ -2288,7 +2288,7 @@ public static&nbsp;org.apache.hadoop.fs.Path&nbsp;<a href="../../../../../src-ht
 <ul class="blockList">
 <li class="blockList">
 <h4>assertBulkLoadHFileOk</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStore.html#line.732">assertBulkLoadHFileOk</a>(org.apache.hadoop.fs.Path&nbsp;srcPath)
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStore.html#line.731">assertBulkLoadHFileOk</a>(org.apache.hadoop.fs.Path&nbsp;srcPath)
                            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">This throws a WrongRegionException if the HFile does not fit in this region, or an
  InvalidHFileException if the HFile is not valid.</div>
@@ -2304,7 +2304,7 @@ public static&nbsp;org.apache.hadoop.fs.Path&nbsp;<a href="../../../../../src-ht
 <ul class="blockList">
 <li class="blockList">
 <h4>preBulkLoadHFile</h4>
-<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/util/Pair.html" title="class in org.apache.hadoop.hbase.util">Pair</a>&lt;org.apache.hadoop.fs.Path,org.apache.hadoop.fs.Path&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStore.html#line.809">preBulkLoadHFile</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;srcPathStr,
+<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/util/Pair.html" title="class in org.apache.hadoop.hbase.util">Pair</a>&lt;org.apache.hadoop.fs.Path,org.apache.hadoop.fs.Path&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStore.html#line.808">preBulkLoadHFile</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;srcPathStr,
                                                                                   long&nbsp;seqNum)
                                                                            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">This method should only be called from Region. It is assumed that the ranges of values in the
@@ -2324,7 +2324,7 @@ public static&nbsp;org.apache.hadoop.fs.Path&nbsp;<a href="../../../../../src-ht
 <ul class="blockList">
 <li class="blockList">
 <h4>bulkLoadHFile</h4>
-<pre>public&nbsp;org.apache.hadoop.fs.Path&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStore.html#line.814">bulkLoadHFile</a>(byte[]&nbsp;family,
+<pre>public&nbsp;org.apache.hadoop.fs.Path&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStore.html#line.813">bulkLoadHFile</a>(byte[]&nbsp;family,
                                                <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;srcPathStr,
                                                org.apache.hadoop.fs.Path&nbsp;dstPath)
                                         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>
@@ -2340,7 +2340,7 @@ public static&nbsp;org.apache.hadoop.fs.Path&nbsp;<a href="../../../../../src-ht
 <ul class="blockList">
 <li class="blockList">
 <h4>bulkLoadHFile</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStore.html#line.836">bulkLoadHFile</a>(<a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFileInfo.html" title="class in org.apache.hadoop.hbase.regionserver">StoreFileInfo</a>&nbsp;fileInfo)
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStore.html#line.835">bulkLoadHFile</a>(<a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFileInfo.html" title="class in org.apache.hadoop.hbase.regionserver">StoreFileInfo</a>&nbsp;fileInfo)
                    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>
 <dl>
 <dt><span class="throwsLabel">Throws:</span></dt>
@@ -2354,7 +2354,7 @@ public static&nbsp;org.apache.hadoop.fs.Path&nbsp;<a href="../../../../../src-ht
 <ul class="blockList">
 <li class="blockList">
 <h4>bulkLoadHFile</h4>
-<pre>private&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStore.html#line.841">bulkLoadHFile</a>(<a href="../../../../../org/apache/hadoop/hbase/regionserver/HStoreFile.html" title="class in org.apache.hadoop.hbase.regionserver">HStoreFile</a>&nbsp;sf)
+<pre>private&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStore.html#line.840">bulkLoadHFile</a>(<a href="../../../../../org/apache/hadoop/hbase/regionserver/HStoreFile.html" title="class in org.apache.hadoop.hbase.regionserver">HStoreFile</a>&nbsp;sf)
                     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>
 <dl>
 <dt><span class="throwsLabel">Throws:</span></dt>
@@ -2368,7 +2368,7 @@ public static&nbsp;org.apache.hadoop.fs.Path&nbsp;<a href="../../../../../src-ht
 <ul class="blockList">
 <li class="blockList">
 <h4>close</h4>
-<pre>public&nbsp;org.apache.hadoop.hbase.shaded.com.google.common.collect.ImmutableCollection&lt;<a href="../../../../../org/apache/hadoop/hbase/regionserver/HStoreFile.html" title="class in org.apache.hadoop.hbase.regionserver">HStoreFile</a>&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStore.html#line.873">close</a>()
+<pre>public&nbsp;org.apache.hadoop.hbase.shaded.com.google.common.collect.ImmutableCollection&lt;<a href="../../../../../org/apache/hadoop/hbase/regionserver/HStoreFile.html" title="class in org.apache.hadoop.hbase.regionserver">HStoreFile</a>&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStore.html#line.872">close</a>()
                                                                                                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">Close all the readers We don't need to worry about subsequent requests because the Region holds
  a write lock that will prevent any more reads or writes.</div>
@@ -2386,7 +2386,7 @@ public static&nbsp;org.apache.hadoop.fs.Path&nbsp;<a href="../../../../../src-ht
 <ul class="blockList">
 <li class="blockList">
 <h4>snapshot</h4>
-<pre>void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStore.html#line.940">snapshot</a>()</pre>
+<pre>void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStore.html#line.939">snapshot</a>()</pre>
 <div class="block">Snapshot this stores memstore. Call before running
  <a href="../../../../../org/apache/hadoop/hbase/regionserver/HStore.html#flushCache-long-org.apache.hadoop.hbase.regionserver.MemStoreSnapshot-org.apache.hadoop.hbase.monitoring.MonitoredTask-org.apache.hadoop.hbase.regionserver.throttle.ThroughputController-org.apache.hadoop.hbase.regionserver.FlushLifeCycleTracker-"><code>flushCache(long, MemStoreSnapshot, MonitoredTask, ThroughputController,
  FlushLifeCycleTracker)</code></a>
@@ -2399,7 +2399,7 @@ public static&nbsp;org.apache.hadoop.fs.Path&nbsp;<a href="../../../../../src-ht
 <ul class="blockList">
 <li class="blockList">
 <h4>flushCache</h4>
-<pre>protected&nbsp;<a href="http://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;org.apache.hadoop.fs.Path&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStore.html#line.958">flushCache</a>(long&nbsp;logCacheFlushId,
+<pre>protected&nbsp;<a href="http://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;org.apache.hadoop.fs.Path&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStore.html#line.957">flushCache</a>(long&nbsp;logCacheFlushId,
                                                      <a href="../../../../../org/apache/hadoop/hbase/regionserver/MemStoreSnapshot.html" title="class in org.apache.hadoop.hbase.regionserver">MemStoreSnapshot</a>&nbsp;snapshot,
                                                      <a href="../../../../../org/apache/hadoop/hbase/monitoring/MonitoredTask.html" title="interface in org.apache.hadoop.hbase.monitoring">MonitoredTask</a>&nbsp;status,
                                                      <a href="../../../../../org/apache/hadoop/hbase/regionserver/throttle/ThroughputController.html" title="interface in org.apache.hadoop.hbase.regionserver.throttle">ThroughputController</a>&nbsp;throughputController,
@@ -2425,7 +2425,7 @@ public static&nbsp;org.apache.hadoop.fs.Path&nbsp;<a href="../../../../../src-ht
 <ul class="blockList">
 <li class="blockList">
 <h4>commitFile</h4>
-<pre>private&nbsp;<a href="../../../../../org/apache/hadoop/hbase/regionserver/HStoreFile.html" title="class in org.apache.hadoop.hbase.regionserver">HStoreFile</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStore.html#line.1011">commitFile</a>(org.apache.hadoop.fs.Path&nbsp;path,
+<pre>private&nbsp;<a href="../../../../../org/apache/hadoop/hbase/regionserver/HStoreFile.html" title="class in org.apache.hadoop.hbase.regionserver">HStoreFile</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStore.html#line.1010">commitFile</a>(org.apache.hadoop.fs.Path&nbsp;path,
                               long&nbsp;logCacheFlushId,
                               <a href="../../../../../org/apache/hadoop/hbase/monitoring/MonitoredTask.html" title="interface in org.apache.hadoop.hbase.monitoring">MonitoredTask</a>&nbsp;status)
                        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>
@@ -2447,7 +2447,7 @@ public static&nbsp;org.apache.hadoop.fs.Path&nbsp;<a href="../../../../../src-ht
 <ul class="blockList">
 <li class="blockList">
 <h4>createWriterInTmp</h4>
-<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFileWriter.html" title="class in org.apache.hadoop.hbase.regionserver">StoreFileWriter</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStore.html#line.1041">createWriterInTmp</a>(long&nbsp;maxKeyCount,
+<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFileWriter.html" title="class in org.apache.hadoop.hbase.regionserver">StoreFileWriter</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStore.html#line.1040">createWriterInTmp</a>(long&nbsp;maxKeyCount,
                                          <a href="../../../../../org/apache/hadoop/hbase/io/compress/Compression.Algorithm.html" title="enum in org.apache.hadoop.hbase.io.compress">Compression.Algorithm</a>&nbsp;compression,
                                          boolean&nbsp;isCompaction,
                                          boolean&nbsp;includeMVCCReadpoint,
@@ -2474,7 +2474,7 @@ public static&nbsp;org.apache.hadoop.fs.Path&nbsp;<a href="../../../../../src-ht
 <ul class="blockList">
 <li class="blockList">
 <h4>createFileContext</h4>
-<pre>private&nbsp;<a href="../../../../../org/apache/hadoop/hbase/io/hfile/HFileContext.html" title="class in org.apache.hadoop.hbase.io.hfile">HFileContext</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStore.html#line.1072">createFileContext</a>(<a href="../../../../../org/apache/hadoop/hbase/io/compress/Compression.Algorithm.html" title="enum in org.apache.hadoop.hbase.io.compress">Compression.Algorithm</a>&nbsp;compression,
+<pre>private&nbsp;<a href="../../../../../org/apache/hadoop/hbase/io/hfile/HFileContext.html" title="class in org.apache.hadoop.hbase.io.hfile">HFileContext</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStore.html#line.1071">createFileContext</a>(<a href="../../../../../org/apache/hadoop/hbase/io/compress/Compression.Algorithm.html" title="enum in org.apache.hadoop.hbase.io.compress">Compression.Algorithm</a>&nbsp;compression,
                                        boolean&nbsp;includeMVCCReadpoint,
                                        boolean&nbsp;includesTag,
                                        <a href="../../../../../org/apache/hadoop/hbase/io/crypto/Encryption.Context.html" title="class in org.apache.hadoop.hbase.io.crypto">Encryption.Context</a>&nbsp;cryptoContext)</pre>
@@ -2486,7 +2486,7 @@ public static&nbsp;org.apache.hadoop.fs.Path&nbsp;<a href="../../../../../src-ht
 <ul class="blockList">
 <li class="blockList">
 <h4>getTotalSize</h4>
-<pre>private&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStore.html#line.1094">getTotalSize</a>(<a href="http://docs.oracle.com/javase/8/docs/api/java/util/Collection.html?is-ext

<TRUNCATED>

[13/51] [partial] hbase-site git commit: Published site at .

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/c54c242b/devapidocs/src-html/org/apache/hadoop/hbase/zookeeper/ReadOnlyZKClient.Task.html
----------------------------------------------------------------------
diff --git a/devapidocs/src-html/org/apache/hadoop/hbase/zookeeper/ReadOnlyZKClient.Task.html b/devapidocs/src-html/org/apache/hadoop/hbase/zookeeper/ReadOnlyZKClient.Task.html
new file mode 100644
index 0000000..6c7ef2a
--- /dev/null
+++ b/devapidocs/src-html/org/apache/hadoop/hbase/zookeeper/ReadOnlyZKClient.Task.html
@@ -0,0 +1,419 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html lang="en">
+<head>
+<title>Source code</title>
+<link rel="stylesheet" type="text/css" href="../../../../../../stylesheet.css" title="Style">
+</head>
+<body>
+<div class="sourceContainer">
+<pre><span class="sourceLineNo">001</span>/**<a name="line.1"></a>
+<span class="sourceLineNo">002</span> * Licensed to the Apache Software Foundation (ASF) under one<a name="line.2"></a>
+<span class="sourceLineNo">003</span> * or more contributor license agreements.  See the NOTICE file<a name="line.3"></a>
+<span class="sourceLineNo">004</span> * distributed with this work for additional information<a name="line.4"></a>
+<span class="sourceLineNo">005</span> * regarding copyright ownership.  The ASF licenses this file<a name="line.5"></a>
+<span class="sourceLineNo">006</span> * to you under the Apache License, Version 2.0 (the<a name="line.6"></a>
+<span class="sourceLineNo">007</span> * "License"); you may not use this file except in compliance<a name="line.7"></a>
+<span class="sourceLineNo">008</span> * with the License.  You may obtain a copy of the License at<a name="line.8"></a>
+<span class="sourceLineNo">009</span> *<a name="line.9"></a>
+<span class="sourceLineNo">010</span> *     http://www.apache.org/licenses/LICENSE-2.0<a name="line.10"></a>
+<span class="sourceLineNo">011</span> *<a name="line.11"></a>
+<span class="sourceLineNo">012</span> * Unless required by applicable law or agreed to in writing, software<a name="line.12"></a>
+<span class="sourceLineNo">013</span> * distributed under the License is distributed on an "AS IS" BASIS,<a name="line.13"></a>
+<span class="sourceLineNo">014</span> * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.<a name="line.14"></a>
+<span class="sourceLineNo">015</span> * See the License for the specific language governing permissions and<a name="line.15"></a>
+<span class="sourceLineNo">016</span> * limitations under the License.<a name="line.16"></a>
+<span class="sourceLineNo">017</span> */<a name="line.17"></a>
+<span class="sourceLineNo">018</span>package org.apache.hadoop.hbase.zookeeper;<a name="line.18"></a>
+<span class="sourceLineNo">019</span><a name="line.19"></a>
+<span class="sourceLineNo">020</span>import static org.apache.hadoop.hbase.HConstants.DEFAULT_ZK_SESSION_TIMEOUT;<a name="line.20"></a>
+<span class="sourceLineNo">021</span>import static org.apache.hadoop.hbase.HConstants.ZK_SESSION_TIMEOUT;<a name="line.21"></a>
+<span class="sourceLineNo">022</span><a name="line.22"></a>
+<span class="sourceLineNo">023</span>import java.io.Closeable;<a name="line.23"></a>
+<span class="sourceLineNo">024</span>import java.io.IOException;<a name="line.24"></a>
+<span class="sourceLineNo">025</span>import java.util.Arrays;<a name="line.25"></a>
+<span class="sourceLineNo">026</span>import java.util.EnumSet;<a name="line.26"></a>
+<span class="sourceLineNo">027</span>import java.util.concurrent.CompletableFuture;<a name="line.27"></a>
+<span class="sourceLineNo">028</span>import java.util.concurrent.DelayQueue;<a name="line.28"></a>
+<span class="sourceLineNo">029</span>import java.util.concurrent.Delayed;<a name="line.29"></a>
+<span class="sourceLineNo">030</span>import java.util.concurrent.TimeUnit;<a name="line.30"></a>
+<span class="sourceLineNo">031</span>import java.util.concurrent.atomic.AtomicBoolean;<a name="line.31"></a>
+<span class="sourceLineNo">032</span><a name="line.32"></a>
+<span class="sourceLineNo">033</span>import org.apache.commons.logging.Log;<a name="line.33"></a>
+<span class="sourceLineNo">034</span>import org.apache.commons.logging.LogFactory;<a name="line.34"></a>
+<span class="sourceLineNo">035</span>import org.apache.hadoop.conf.Configuration;<a name="line.35"></a>
+<span class="sourceLineNo">036</span>import org.apache.yetus.audience.InterfaceAudience;<a name="line.36"></a>
+<span class="sourceLineNo">037</span>import org.apache.zookeeper.KeeperException;<a name="line.37"></a>
+<span class="sourceLineNo">038</span>import org.apache.zookeeper.KeeperException.Code;<a name="line.38"></a>
+<span class="sourceLineNo">039</span>import org.apache.zookeeper.ZooKeeper;<a name="line.39"></a>
+<span class="sourceLineNo">040</span>import org.apache.zookeeper.data.Stat;<a name="line.40"></a>
+<span class="sourceLineNo">041</span><a name="line.41"></a>
+<span class="sourceLineNo">042</span>import org.apache.hadoop.hbase.shaded.com.google.common.annotations.VisibleForTesting;<a name="line.42"></a>
+<span class="sourceLineNo">043</span><a name="line.43"></a>
+<span class="sourceLineNo">044</span>/**<a name="line.44"></a>
+<span class="sourceLineNo">045</span> * A very simple read only zookeeper implementation without watcher support.<a name="line.45"></a>
+<span class="sourceLineNo">046</span> */<a name="line.46"></a>
+<span class="sourceLineNo">047</span>@InterfaceAudience.Private<a name="line.47"></a>
+<span class="sourceLineNo">048</span>public final class ReadOnlyZKClient implements Closeable {<a name="line.48"></a>
+<span class="sourceLineNo">049</span><a name="line.49"></a>
+<span class="sourceLineNo">050</span>  private static final Log LOG = LogFactory.getLog(ReadOnlyZKClient.class);<a name="line.50"></a>
+<span class="sourceLineNo">051</span><a name="line.51"></a>
+<span class="sourceLineNo">052</span>  public static final String RECOVERY_RETRY = "zookeeper.recovery.retry";<a name="line.52"></a>
+<span class="sourceLineNo">053</span><a name="line.53"></a>
+<span class="sourceLineNo">054</span>  private static final int DEFAULT_RECOVERY_RETRY = 30;<a name="line.54"></a>
+<span class="sourceLineNo">055</span><a name="line.55"></a>
+<span class="sourceLineNo">056</span>  public static final String RECOVERY_RETRY_INTERVAL_MILLIS =<a name="line.56"></a>
+<span class="sourceLineNo">057</span>      "zookeeper.recovery.retry.intervalmill";<a name="line.57"></a>
+<span class="sourceLineNo">058</span><a name="line.58"></a>
+<span class="sourceLineNo">059</span>  private static final int DEFAULT_RECOVERY_RETRY_INTERVAL_MILLIS = 1000;<a name="line.59"></a>
+<span class="sourceLineNo">060</span><a name="line.60"></a>
+<span class="sourceLineNo">061</span>  public static final String KEEPALIVE_MILLIS = "zookeeper.keep-alive.time";<a name="line.61"></a>
+<span class="sourceLineNo">062</span><a name="line.62"></a>
+<span class="sourceLineNo">063</span>  private static final int DEFAULT_KEEPALIVE_MILLIS = 60000;<a name="line.63"></a>
+<span class="sourceLineNo">064</span><a name="line.64"></a>
+<span class="sourceLineNo">065</span>  private static final EnumSet&lt;Code&gt; FAIL_FAST_CODES = EnumSet.of(Code.NOAUTH, Code.AUTHFAILED);<a name="line.65"></a>
+<span class="sourceLineNo">066</span><a name="line.66"></a>
+<span class="sourceLineNo">067</span>  private final String connectString;<a name="line.67"></a>
+<span class="sourceLineNo">068</span><a name="line.68"></a>
+<span class="sourceLineNo">069</span>  private final int sessionTimeoutMs;<a name="line.69"></a>
+<span class="sourceLineNo">070</span><a name="line.70"></a>
+<span class="sourceLineNo">071</span>  private final int maxRetries;<a name="line.71"></a>
+<span class="sourceLineNo">072</span><a name="line.72"></a>
+<span class="sourceLineNo">073</span>  private final int retryIntervalMs;<a name="line.73"></a>
+<span class="sourceLineNo">074</span><a name="line.74"></a>
+<span class="sourceLineNo">075</span>  private final int keepAliveTimeMs;<a name="line.75"></a>
+<span class="sourceLineNo">076</span><a name="line.76"></a>
+<span class="sourceLineNo">077</span>  private static abstract class Task implements Delayed {<a name="line.77"></a>
+<span class="sourceLineNo">078</span><a name="line.78"></a>
+<span class="sourceLineNo">079</span>    protected long time = System.nanoTime();<a name="line.79"></a>
+<span class="sourceLineNo">080</span><a name="line.80"></a>
+<span class="sourceLineNo">081</span>    public boolean needZk() {<a name="line.81"></a>
+<span class="sourceLineNo">082</span>      return false;<a name="line.82"></a>
+<span class="sourceLineNo">083</span>    }<a name="line.83"></a>
+<span class="sourceLineNo">084</span><a name="line.84"></a>
+<span class="sourceLineNo">085</span>    public void exec(ZooKeeper zk) {<a name="line.85"></a>
+<span class="sourceLineNo">086</span>    }<a name="line.86"></a>
+<span class="sourceLineNo">087</span><a name="line.87"></a>
+<span class="sourceLineNo">088</span>    public void connectFailed(IOException e) {<a name="line.88"></a>
+<span class="sourceLineNo">089</span>    }<a name="line.89"></a>
+<span class="sourceLineNo">090</span><a name="line.90"></a>
+<span class="sourceLineNo">091</span>    public void closed(IOException e) {<a name="line.91"></a>
+<span class="sourceLineNo">092</span>    }<a name="line.92"></a>
+<span class="sourceLineNo">093</span><a name="line.93"></a>
+<span class="sourceLineNo">094</span>    @Override<a name="line.94"></a>
+<span class="sourceLineNo">095</span>    public int compareTo(Delayed o) {<a name="line.95"></a>
+<span class="sourceLineNo">096</span>      Task that = (Task) o;<a name="line.96"></a>
+<span class="sourceLineNo">097</span>      int c = Long.compare(time, that.time);<a name="line.97"></a>
+<span class="sourceLineNo">098</span>      if (c != 0) {<a name="line.98"></a>
+<span class="sourceLineNo">099</span>        return c;<a name="line.99"></a>
+<span class="sourceLineNo">100</span>      }<a name="line.100"></a>
+<span class="sourceLineNo">101</span>      return Integer.compare(System.identityHashCode(this), System.identityHashCode(that));<a name="line.101"></a>
+<span class="sourceLineNo">102</span>    }<a name="line.102"></a>
+<span class="sourceLineNo">103</span><a name="line.103"></a>
+<span class="sourceLineNo">104</span>    @Override<a name="line.104"></a>
+<span class="sourceLineNo">105</span>    public long getDelay(TimeUnit unit) {<a name="line.105"></a>
+<span class="sourceLineNo">106</span>      return unit.convert(time - System.nanoTime(), TimeUnit.NANOSECONDS);<a name="line.106"></a>
+<span class="sourceLineNo">107</span>    }<a name="line.107"></a>
+<span class="sourceLineNo">108</span>  }<a name="line.108"></a>
+<span class="sourceLineNo">109</span><a name="line.109"></a>
+<span class="sourceLineNo">110</span>  private static final Task CLOSE = new Task() {<a name="line.110"></a>
+<span class="sourceLineNo">111</span>  };<a name="line.111"></a>
+<span class="sourceLineNo">112</span><a name="line.112"></a>
+<span class="sourceLineNo">113</span>  private final DelayQueue&lt;Task&gt; tasks = new DelayQueue&lt;&gt;();<a name="line.113"></a>
+<span class="sourceLineNo">114</span><a name="line.114"></a>
+<span class="sourceLineNo">115</span>  private final AtomicBoolean closed = new AtomicBoolean(false);<a name="line.115"></a>
+<span class="sourceLineNo">116</span><a name="line.116"></a>
+<span class="sourceLineNo">117</span>  private ZooKeeper zookeeper;<a name="line.117"></a>
+<span class="sourceLineNo">118</span><a name="line.118"></a>
+<span class="sourceLineNo">119</span>  private String getId() {<a name="line.119"></a>
+<span class="sourceLineNo">120</span>    return String.format("0x%08x", System.identityHashCode(this));<a name="line.120"></a>
+<span class="sourceLineNo">121</span>  }<a name="line.121"></a>
+<span class="sourceLineNo">122</span><a name="line.122"></a>
+<span class="sourceLineNo">123</span>  public ReadOnlyZKClient(Configuration conf) {<a name="line.123"></a>
+<span class="sourceLineNo">124</span>    this.connectString = ZKConfig.getZKQuorumServersString(conf);<a name="line.124"></a>
+<span class="sourceLineNo">125</span>    this.sessionTimeoutMs = conf.getInt(ZK_SESSION_TIMEOUT, DEFAULT_ZK_SESSION_TIMEOUT);<a name="line.125"></a>
+<span class="sourceLineNo">126</span>    this.maxRetries = conf.getInt(RECOVERY_RETRY, DEFAULT_RECOVERY_RETRY);<a name="line.126"></a>
+<span class="sourceLineNo">127</span>    this.retryIntervalMs =<a name="line.127"></a>
+<span class="sourceLineNo">128</span>        conf.getInt(RECOVERY_RETRY_INTERVAL_MILLIS, DEFAULT_RECOVERY_RETRY_INTERVAL_MILLIS);<a name="line.128"></a>
+<span class="sourceLineNo">129</span>    this.keepAliveTimeMs = conf.getInt(KEEPALIVE_MILLIS, DEFAULT_KEEPALIVE_MILLIS);<a name="line.129"></a>
+<span class="sourceLineNo">130</span>    LOG.info("Start read only zookeeper connection " + getId() + " to " + connectString +<a name="line.130"></a>
+<span class="sourceLineNo">131</span>        ", session timeout " + sessionTimeoutMs + " ms, retries " + maxRetries +<a name="line.131"></a>
+<span class="sourceLineNo">132</span>        ", retry interval " + retryIntervalMs + " ms, keep alive " + keepAliveTimeMs + " ms");<a name="line.132"></a>
+<span class="sourceLineNo">133</span>    Thread t = new Thread(this::run, "ReadOnlyZKClient");<a name="line.133"></a>
+<span class="sourceLineNo">134</span>    t.setDaemon(true);<a name="line.134"></a>
+<span class="sourceLineNo">135</span>    t.start();<a name="line.135"></a>
+<span class="sourceLineNo">136</span>  }<a name="line.136"></a>
+<span class="sourceLineNo">137</span><a name="line.137"></a>
+<span class="sourceLineNo">138</span>  private abstract class ZKTask&lt;T&gt; extends Task {<a name="line.138"></a>
+<span class="sourceLineNo">139</span><a name="line.139"></a>
+<span class="sourceLineNo">140</span>    protected final String path;<a name="line.140"></a>
+<span class="sourceLineNo">141</span><a name="line.141"></a>
+<span class="sourceLineNo">142</span>    private final CompletableFuture&lt;T&gt; future;<a name="line.142"></a>
+<span class="sourceLineNo">143</span><a name="line.143"></a>
+<span class="sourceLineNo">144</span>    private final String operationType;<a name="line.144"></a>
+<span class="sourceLineNo">145</span><a name="line.145"></a>
+<span class="sourceLineNo">146</span>    private int retries;<a name="line.146"></a>
+<span class="sourceLineNo">147</span><a name="line.147"></a>
+<span class="sourceLineNo">148</span>    protected ZKTask(String path, CompletableFuture&lt;T&gt; future, String operationType) {<a name="line.148"></a>
+<span class="sourceLineNo">149</span>      this.path = path;<a name="line.149"></a>
+<span class="sourceLineNo">150</span>      this.future = future;<a name="line.150"></a>
+<span class="sourceLineNo">151</span>      this.operationType = operationType;<a name="line.151"></a>
+<span class="sourceLineNo">152</span>    }<a name="line.152"></a>
+<span class="sourceLineNo">153</span><a name="line.153"></a>
+<span class="sourceLineNo">154</span>    protected final void onComplete(ZooKeeper zk, int rc, T ret, boolean errorIfNoNode) {<a name="line.154"></a>
+<span class="sourceLineNo">155</span>      tasks.add(new Task() {<a name="line.155"></a>
+<span class="sourceLineNo">156</span><a name="line.156"></a>
+<span class="sourceLineNo">157</span>        @Override<a name="line.157"></a>
+<span class="sourceLineNo">158</span>        public void exec(ZooKeeper alwaysNull) {<a name="line.158"></a>
+<span class="sourceLineNo">159</span>          Code code = Code.get(rc);<a name="line.159"></a>
+<span class="sourceLineNo">160</span>          if (code == Code.OK) {<a name="line.160"></a>
+<span class="sourceLineNo">161</span>            future.complete(ret);<a name="line.161"></a>
+<span class="sourceLineNo">162</span>          } else if (code == Code.NONODE) {<a name="line.162"></a>
+<span class="sourceLineNo">163</span>            if (errorIfNoNode) {<a name="line.163"></a>
+<span class="sourceLineNo">164</span>              future.completeExceptionally(KeeperException.create(code, path));<a name="line.164"></a>
+<span class="sourceLineNo">165</span>            } else {<a name="line.165"></a>
+<span class="sourceLineNo">166</span>              future.complete(ret);<a name="line.166"></a>
+<span class="sourceLineNo">167</span>            }<a name="line.167"></a>
+<span class="sourceLineNo">168</span>          } else if (FAIL_FAST_CODES.contains(code)) {<a name="line.168"></a>
+<span class="sourceLineNo">169</span>            future.completeExceptionally(KeeperException.create(code, path));<a name="line.169"></a>
+<span class="sourceLineNo">170</span>          } else {<a name="line.170"></a>
+<span class="sourceLineNo">171</span>            if (code == Code.SESSIONEXPIRED) {<a name="line.171"></a>
+<span class="sourceLineNo">172</span>              LOG.warn(getId() + " session expired, close and reconnect");<a name="line.172"></a>
+<span class="sourceLineNo">173</span>              try {<a name="line.173"></a>
+<span class="sourceLineNo">174</span>                zk.close();<a name="line.174"></a>
+<span class="sourceLineNo">175</span>              } catch (InterruptedException e) {<a name="line.175"></a>
+<span class="sourceLineNo">176</span>              }<a name="line.176"></a>
+<span class="sourceLineNo">177</span>            }<a name="line.177"></a>
+<span class="sourceLineNo">178</span>            if (ZKTask.this.delay(retryIntervalMs, maxRetries)) {<a name="line.178"></a>
+<span class="sourceLineNo">179</span>              LOG.warn(getId() + " failed for " + operationType + " of " + path + ", code = " +<a name="line.179"></a>
+<span class="sourceLineNo">180</span>                  code + ", retries = " + ZKTask.this.retries);<a name="line.180"></a>
+<span class="sourceLineNo">181</span>              tasks.add(ZKTask.this);<a name="line.181"></a>
+<span class="sourceLineNo">182</span>            } else {<a name="line.182"></a>
+<span class="sourceLineNo">183</span>              LOG.warn(getId() + " failed for " + operationType + " of " + path + ", code = " +<a name="line.183"></a>
+<span class="sourceLineNo">184</span>                  code + ", retries = " + ZKTask.this.retries + ", give up");<a name="line.184"></a>
+<span class="sourceLineNo">185</span>              future.completeExceptionally(KeeperException.create(code, path));<a name="line.185"></a>
+<span class="sourceLineNo">186</span>            }<a name="line.186"></a>
+<span class="sourceLineNo">187</span>          }<a name="line.187"></a>
+<span class="sourceLineNo">188</span>        }<a name="line.188"></a>
+<span class="sourceLineNo">189</span><a name="line.189"></a>
+<span class="sourceLineNo">190</span>        @Override<a name="line.190"></a>
+<span class="sourceLineNo">191</span>        public void closed(IOException e) {<a name="line.191"></a>
+<span class="sourceLineNo">192</span>          // It may happen that a request is succeeded and the onComplete has been called and pushed<a name="line.192"></a>
+<span class="sourceLineNo">193</span>          // us into the task queue, but before we get called a close is called and here we will<a name="line.193"></a>
+<span class="sourceLineNo">194</span>          // fail the request, although it is succeeded actually.<a name="line.194"></a>
+<span class="sourceLineNo">195</span>          // This is not a perfect solution but anyway, it is better than hang the requests for<a name="line.195"></a>
+<span class="sourceLineNo">196</span>          // ever, and also acceptable as if you close the zk client before actually getting the<a name="line.196"></a>
+<span class="sourceLineNo">197</span>          // response then a failure is always possible.<a name="line.197"></a>
+<span class="sourceLineNo">198</span>          future.completeExceptionally(e);<a name="line.198"></a>
+<span class="sourceLineNo">199</span>        }<a name="line.199"></a>
+<span class="sourceLineNo">200</span>      });<a name="line.200"></a>
+<span class="sourceLineNo">201</span>    }<a name="line.201"></a>
+<span class="sourceLineNo">202</span><a name="line.202"></a>
+<span class="sourceLineNo">203</span>    @Override<a name="line.203"></a>
+<span class="sourceLineNo">204</span>    public boolean needZk() {<a name="line.204"></a>
+<span class="sourceLineNo">205</span>      return true;<a name="line.205"></a>
+<span class="sourceLineNo">206</span>    }<a name="line.206"></a>
+<span class="sourceLineNo">207</span><a name="line.207"></a>
+<span class="sourceLineNo">208</span>    public boolean delay(long intervalMs, int maxRetries) {<a name="line.208"></a>
+<span class="sourceLineNo">209</span>      if (retries &gt;= maxRetries) {<a name="line.209"></a>
+<span class="sourceLineNo">210</span>        return false;<a name="line.210"></a>
+<span class="sourceLineNo">211</span>      }<a name="line.211"></a>
+<span class="sourceLineNo">212</span>      retries++;<a name="line.212"></a>
+<span class="sourceLineNo">213</span>      time = System.nanoTime() + TimeUnit.MILLISECONDS.toNanos(intervalMs);<a name="line.213"></a>
+<span class="sourceLineNo">214</span>      return true;<a name="line.214"></a>
+<span class="sourceLineNo">215</span>    }<a name="line.215"></a>
+<span class="sourceLineNo">216</span><a name="line.216"></a>
+<span class="sourceLineNo">217</span>    @Override<a name="line.217"></a>
+<span class="sourceLineNo">218</span>    public void connectFailed(IOException e) {<a name="line.218"></a>
+<span class="sourceLineNo">219</span>      if (delay(retryIntervalMs, maxRetries)) {<a name="line.219"></a>
+<span class="sourceLineNo">220</span>        LOG.warn(getId() + " failed to connect to zk for " + operationType + " of " + path +<a name="line.220"></a>
+<span class="sourceLineNo">221</span>            ", retries = " + retries,<a name="line.221"></a>
+<span class="sourceLineNo">222</span>          e);<a name="line.222"></a>
+<span class="sourceLineNo">223</span>        tasks.add(this);<a name="line.223"></a>
+<span class="sourceLineNo">224</span>      } else {<a name="line.224"></a>
+<span class="sourceLineNo">225</span>        LOG.warn(getId() + " failed to connect to zk for " + operationType + " of " + path +<a name="line.225"></a>
+<span class="sourceLineNo">226</span>            ", retries = " + retries + ", give up",<a name="line.226"></a>
+<span class="sourceLineNo">227</span>          e);<a name="line.227"></a>
+<span class="sourceLineNo">228</span>        future.completeExceptionally(e);<a name="line.228"></a>
+<span class="sourceLineNo">229</span>      }<a name="line.229"></a>
+<span class="sourceLineNo">230</span>    }<a name="line.230"></a>
+<span class="sourceLineNo">231</span><a name="line.231"></a>
+<span class="sourceLineNo">232</span>    @Override<a name="line.232"></a>
+<span class="sourceLineNo">233</span>    public void closed(IOException e) {<a name="line.233"></a>
+<span class="sourceLineNo">234</span>      future.completeExceptionally(e);<a name="line.234"></a>
+<span class="sourceLineNo">235</span>    }<a name="line.235"></a>
+<span class="sourceLineNo">236</span>  }<a name="line.236"></a>
+<span class="sourceLineNo">237</span><a name="line.237"></a>
+<span class="sourceLineNo">238</span>  private static &lt;T&gt; CompletableFuture&lt;T&gt; failed(Throwable e) {<a name="line.238"></a>
+<span class="sourceLineNo">239</span>    CompletableFuture&lt;T&gt; future = new CompletableFuture&lt;&gt;();<a name="line.239"></a>
+<span class="sourceLineNo">240</span>    future.completeExceptionally(e);<a name="line.240"></a>
+<span class="sourceLineNo">241</span>    return future;<a name="line.241"></a>
+<span class="sourceLineNo">242</span>  }<a name="line.242"></a>
+<span class="sourceLineNo">243</span><a name="line.243"></a>
+<span class="sourceLineNo">244</span>  public CompletableFuture&lt;byte[]&gt; get(String path) {<a name="line.244"></a>
+<span class="sourceLineNo">245</span>    if (closed.get()) {<a name="line.245"></a>
+<span class="sourceLineNo">246</span>      return failed(new IOException("Client already closed"));<a name="line.246"></a>
+<span class="sourceLineNo">247</span>    }<a name="line.247"></a>
+<span class="sourceLineNo">248</span>    CompletableFuture&lt;byte[]&gt; future = new CompletableFuture&lt;&gt;();<a name="line.248"></a>
+<span class="sourceLineNo">249</span>    tasks.add(new ZKTask&lt;byte[]&gt;(path, future, "get") {<a name="line.249"></a>
+<span class="sourceLineNo">250</span><a name="line.250"></a>
+<span class="sourceLineNo">251</span>      @Override<a name="line.251"></a>
+<span class="sourceLineNo">252</span>      public void exec(ZooKeeper zk) {<a name="line.252"></a>
+<span class="sourceLineNo">253</span>        zk.getData(path, false, (rc, path, ctx, data, stat) -&gt; onComplete(zk, rc, data, true),<a name="line.253"></a>
+<span class="sourceLineNo">254</span>          null);<a name="line.254"></a>
+<span class="sourceLineNo">255</span>      }<a name="line.255"></a>
+<span class="sourceLineNo">256</span>    });<a name="line.256"></a>
+<span class="sourceLineNo">257</span>    return future;<a name="line.257"></a>
+<span class="sourceLineNo">258</span>  }<a name="line.258"></a>
+<span class="sourceLineNo">259</span><a name="line.259"></a>
+<span class="sourceLineNo">260</span>  public CompletableFuture&lt;Stat&gt; exists(String path) {<a name="line.260"></a>
+<span class="sourceLineNo">261</span>    if (closed.get()) {<a name="line.261"></a>
+<span class="sourceLineNo">262</span>      return failed(new IOException("Client already closed"));<a name="line.262"></a>
+<span class="sourceLineNo">263</span>    }<a name="line.263"></a>
+<span class="sourceLineNo">264</span>    CompletableFuture&lt;Stat&gt; future = new CompletableFuture&lt;&gt;();<a name="line.264"></a>
+<span class="sourceLineNo">265</span>    tasks.add(new ZKTask&lt;Stat&gt;(path, future, "exists") {<a name="line.265"></a>
+<span class="sourceLineNo">266</span><a name="line.266"></a>
+<span class="sourceLineNo">267</span>      @Override<a name="line.267"></a>
+<span class="sourceLineNo">268</span>      public void exec(ZooKeeper zk) {<a name="line.268"></a>
+<span class="sourceLineNo">269</span>        zk.exists(path, false, (rc, path, ctx, stat) -&gt; onComplete(zk, rc, stat, false), null);<a name="line.269"></a>
+<span class="sourceLineNo">270</span>      }<a name="line.270"></a>
+<span class="sourceLineNo">271</span>    });<a name="line.271"></a>
+<span class="sourceLineNo">272</span>    return future;<a name="line.272"></a>
+<span class="sourceLineNo">273</span>  }<a name="line.273"></a>
+<span class="sourceLineNo">274</span><a name="line.274"></a>
+<span class="sourceLineNo">275</span>  private void closeZk() {<a name="line.275"></a>
+<span class="sourceLineNo">276</span>    if (zookeeper != null) {<a name="line.276"></a>
+<span class="sourceLineNo">277</span>      try {<a name="line.277"></a>
+<span class="sourceLineNo">278</span>        zookeeper.close();<a name="line.278"></a>
+<span class="sourceLineNo">279</span>      } catch (InterruptedException e) {<a name="line.279"></a>
+<span class="sourceLineNo">280</span>      }<a name="line.280"></a>
+<span class="sourceLineNo">281</span>      zookeeper = null;<a name="line.281"></a>
+<span class="sourceLineNo">282</span>    }<a name="line.282"></a>
+<span class="sourceLineNo">283</span>  }<a name="line.283"></a>
+<span class="sourceLineNo">284</span><a name="line.284"></a>
+<span class="sourceLineNo">285</span>  private ZooKeeper getZk() throws IOException {<a name="line.285"></a>
+<span class="sourceLineNo">286</span>    // may be closed when session expired<a name="line.286"></a>
+<span class="sourceLineNo">287</span>    if (zookeeper == null || !zookeeper.getState().isAlive()) {<a name="line.287"></a>
+<span class="sourceLineNo">288</span>      zookeeper = new ZooKeeper(connectString, sessionTimeoutMs, e -&gt; {<a name="line.288"></a>
+<span class="sourceLineNo">289</span>      });<a name="line.289"></a>
+<span class="sourceLineNo">290</span>    }<a name="line.290"></a>
+<span class="sourceLineNo">291</span>    return zookeeper;<a name="line.291"></a>
+<span class="sourceLineNo">292</span>  }<a name="line.292"></a>
+<span class="sourceLineNo">293</span><a name="line.293"></a>
+<span class="sourceLineNo">294</span>  private void run() {<a name="line.294"></a>
+<span class="sourceLineNo">295</span>    for (;;) {<a name="line.295"></a>
+<span class="sourceLineNo">296</span>      Task task;<a name="line.296"></a>
+<span class="sourceLineNo">297</span>      try {<a name="line.297"></a>
+<span class="sourceLineNo">298</span>        task = tasks.poll(keepAliveTimeMs, TimeUnit.MILLISECONDS);<a name="line.298"></a>
+<span class="sourceLineNo">299</span>      } catch (InterruptedException e) {<a name="line.299"></a>
+<span class="sourceLineNo">300</span>        continue;<a name="line.300"></a>
+<span class="sourceLineNo">301</span>      }<a name="line.301"></a>
+<span class="sourceLineNo">302</span>      if (task == CLOSE) {<a name="line.302"></a>
+<span class="sourceLineNo">303</span>        break;<a name="line.303"></a>
+<span class="sourceLineNo">304</span>      }<a name="line.304"></a>
+<span class="sourceLineNo">305</span>      if (task == null) {<a name="line.305"></a>
+<span class="sourceLineNo">306</span>        LOG.info(getId() + " no activities for " + keepAliveTimeMs +<a name="line.306"></a>
+<span class="sourceLineNo">307</span>            " ms, close active connection. Will reconnect next time when there are new requests.");<a name="line.307"></a>
+<span class="sourceLineNo">308</span>        closeZk();<a name="line.308"></a>
+<span class="sourceLineNo">309</span>        continue;<a name="line.309"></a>
+<span class="sourceLineNo">310</span>      }<a name="line.310"></a>
+<span class="sourceLineNo">311</span>      if (!task.needZk()) {<a name="line.311"></a>
+<span class="sourceLineNo">312</span>        task.exec(null);<a name="line.312"></a>
+<span class="sourceLineNo">313</span>      } else {<a name="line.313"></a>
+<span class="sourceLineNo">314</span>        ZooKeeper zk;<a name="line.314"></a>
+<span class="sourceLineNo">315</span>        try {<a name="line.315"></a>
+<span class="sourceLineNo">316</span>          zk = getZk();<a name="line.316"></a>
+<span class="sourceLineNo">317</span>        } catch (IOException e) {<a name="line.317"></a>
+<span class="sourceLineNo">318</span>          task.connectFailed(e);<a name="line.318"></a>
+<span class="sourceLineNo">319</span>          continue;<a name="line.319"></a>
+<span class="sourceLineNo">320</span>        }<a name="line.320"></a>
+<span class="sourceLineNo">321</span>        task.exec(zk);<a name="line.321"></a>
+<span class="sourceLineNo">322</span>      }<a name="line.322"></a>
+<span class="sourceLineNo">323</span>    }<a name="line.323"></a>
+<span class="sourceLineNo">324</span>    closeZk();<a name="line.324"></a>
+<span class="sourceLineNo">325</span>    IOException error = new IOException("Client already closed");<a name="line.325"></a>
+<span class="sourceLineNo">326</span>    Arrays.stream(tasks.toArray(new Task[0])).forEach(t -&gt; t.closed(error));<a name="line.326"></a>
+<span class="sourceLineNo">327</span>    tasks.clear();<a name="line.327"></a>
+<span class="sourceLineNo">328</span>  }<a name="line.328"></a>
+<span class="sourceLineNo">329</span><a name="line.329"></a>
+<span class="sourceLineNo">330</span>  @Override<a name="line.330"></a>
+<span class="sourceLineNo">331</span>  public void close() {<a name="line.331"></a>
+<span class="sourceLineNo">332</span>    if (closed.compareAndSet(false, true)) {<a name="line.332"></a>
+<span class="sourceLineNo">333</span>      LOG.info("Close zookeeper connection " + getId() + " to " + connectString);<a name="line.333"></a>
+<span class="sourceLineNo">334</span>      tasks.add(CLOSE);<a name="line.334"></a>
+<span class="sourceLineNo">335</span>    }<a name="line.335"></a>
+<span class="sourceLineNo">336</span>  }<a name="line.336"></a>
+<span class="sourceLineNo">337</span><a name="line.337"></a>
+<span class="sourceLineNo">338</span>  @VisibleForTesting<a name="line.338"></a>
+<span class="sourceLineNo">339</span>  ZooKeeper getZooKeeper() {<a name="line.339"></a>
+<span class="sourceLineNo">340</span>    return zookeeper;<a name="line.340"></a>
+<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>  @VisibleForTesting<a name="line.343"></a>
+<span class="sourceLineNo">344</span>  public String getConnectString() {<a name="line.344"></a>
+<span class="sourceLineNo">345</span>    return connectString;<a name="line.345"></a>
+<span class="sourceLineNo">346</span>  }<a name="line.346"></a>
+<span class="sourceLineNo">347</span>}<a name="line.347"></a>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+</pre>
+</div>
+</body>
+</html>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/c54c242b/devapidocs/src-html/org/apache/hadoop/hbase/zookeeper/ReadOnlyZKClient.ZKTask.html
----------------------------------------------------------------------
diff --git a/devapidocs/src-html/org/apache/hadoop/hbase/zookeeper/ReadOnlyZKClient.ZKTask.html b/devapidocs/src-html/org/apache/hadoop/hbase/zookeeper/ReadOnlyZKClient.ZKTask.html
new file mode 100644
index 0000000..6c7ef2a
--- /dev/null
+++ b/devapidocs/src-html/org/apache/hadoop/hbase/zookeeper/ReadOnlyZKClient.ZKTask.html
@@ -0,0 +1,419 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html lang="en">
+<head>
+<title>Source code</title>
+<link rel="stylesheet" type="text/css" href="../../../../../../stylesheet.css" title="Style">
+</head>
+<body>
+<div class="sourceContainer">
+<pre><span class="sourceLineNo">001</span>/**<a name="line.1"></a>
+<span class="sourceLineNo">002</span> * Licensed to the Apache Software Foundation (ASF) under one<a name="line.2"></a>
+<span class="sourceLineNo">003</span> * or more contributor license agreements.  See the NOTICE file<a name="line.3"></a>
+<span class="sourceLineNo">004</span> * distributed with this work for additional information<a name="line.4"></a>
+<span class="sourceLineNo">005</span> * regarding copyright ownership.  The ASF licenses this file<a name="line.5"></a>
+<span class="sourceLineNo">006</span> * to you under the Apache License, Version 2.0 (the<a name="line.6"></a>
+<span class="sourceLineNo">007</span> * "License"); you may not use this file except in compliance<a name="line.7"></a>
+<span class="sourceLineNo">008</span> * with the License.  You may obtain a copy of the License at<a name="line.8"></a>
+<span class="sourceLineNo">009</span> *<a name="line.9"></a>
+<span class="sourceLineNo">010</span> *     http://www.apache.org/licenses/LICENSE-2.0<a name="line.10"></a>
+<span class="sourceLineNo">011</span> *<a name="line.11"></a>
+<span class="sourceLineNo">012</span> * Unless required by applicable law or agreed to in writing, software<a name="line.12"></a>
+<span class="sourceLineNo">013</span> * distributed under the License is distributed on an "AS IS" BASIS,<a name="line.13"></a>
+<span class="sourceLineNo">014</span> * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.<a name="line.14"></a>
+<span class="sourceLineNo">015</span> * See the License for the specific language governing permissions and<a name="line.15"></a>
+<span class="sourceLineNo">016</span> * limitations under the License.<a name="line.16"></a>
+<span class="sourceLineNo">017</span> */<a name="line.17"></a>
+<span class="sourceLineNo">018</span>package org.apache.hadoop.hbase.zookeeper;<a name="line.18"></a>
+<span class="sourceLineNo">019</span><a name="line.19"></a>
+<span class="sourceLineNo">020</span>import static org.apache.hadoop.hbase.HConstants.DEFAULT_ZK_SESSION_TIMEOUT;<a name="line.20"></a>
+<span class="sourceLineNo">021</span>import static org.apache.hadoop.hbase.HConstants.ZK_SESSION_TIMEOUT;<a name="line.21"></a>
+<span class="sourceLineNo">022</span><a name="line.22"></a>
+<span class="sourceLineNo">023</span>import java.io.Closeable;<a name="line.23"></a>
+<span class="sourceLineNo">024</span>import java.io.IOException;<a name="line.24"></a>
+<span class="sourceLineNo">025</span>import java.util.Arrays;<a name="line.25"></a>
+<span class="sourceLineNo">026</span>import java.util.EnumSet;<a name="line.26"></a>
+<span class="sourceLineNo">027</span>import java.util.concurrent.CompletableFuture;<a name="line.27"></a>
+<span class="sourceLineNo">028</span>import java.util.concurrent.DelayQueue;<a name="line.28"></a>
+<span class="sourceLineNo">029</span>import java.util.concurrent.Delayed;<a name="line.29"></a>
+<span class="sourceLineNo">030</span>import java.util.concurrent.TimeUnit;<a name="line.30"></a>
+<span class="sourceLineNo">031</span>import java.util.concurrent.atomic.AtomicBoolean;<a name="line.31"></a>
+<span class="sourceLineNo">032</span><a name="line.32"></a>
+<span class="sourceLineNo">033</span>import org.apache.commons.logging.Log;<a name="line.33"></a>
+<span class="sourceLineNo">034</span>import org.apache.commons.logging.LogFactory;<a name="line.34"></a>
+<span class="sourceLineNo">035</span>import org.apache.hadoop.conf.Configuration;<a name="line.35"></a>
+<span class="sourceLineNo">036</span>import org.apache.yetus.audience.InterfaceAudience;<a name="line.36"></a>
+<span class="sourceLineNo">037</span>import org.apache.zookeeper.KeeperException;<a name="line.37"></a>
+<span class="sourceLineNo">038</span>import org.apache.zookeeper.KeeperException.Code;<a name="line.38"></a>
+<span class="sourceLineNo">039</span>import org.apache.zookeeper.ZooKeeper;<a name="line.39"></a>
+<span class="sourceLineNo">040</span>import org.apache.zookeeper.data.Stat;<a name="line.40"></a>
+<span class="sourceLineNo">041</span><a name="line.41"></a>
+<span class="sourceLineNo">042</span>import org.apache.hadoop.hbase.shaded.com.google.common.annotations.VisibleForTesting;<a name="line.42"></a>
+<span class="sourceLineNo">043</span><a name="line.43"></a>
+<span class="sourceLineNo">044</span>/**<a name="line.44"></a>
+<span class="sourceLineNo">045</span> * A very simple read only zookeeper implementation without watcher support.<a name="line.45"></a>
+<span class="sourceLineNo">046</span> */<a name="line.46"></a>
+<span class="sourceLineNo">047</span>@InterfaceAudience.Private<a name="line.47"></a>
+<span class="sourceLineNo">048</span>public final class ReadOnlyZKClient implements Closeable {<a name="line.48"></a>
+<span class="sourceLineNo">049</span><a name="line.49"></a>
+<span class="sourceLineNo">050</span>  private static final Log LOG = LogFactory.getLog(ReadOnlyZKClient.class);<a name="line.50"></a>
+<span class="sourceLineNo">051</span><a name="line.51"></a>
+<span class="sourceLineNo">052</span>  public static final String RECOVERY_RETRY = "zookeeper.recovery.retry";<a name="line.52"></a>
+<span class="sourceLineNo">053</span><a name="line.53"></a>
+<span class="sourceLineNo">054</span>  private static final int DEFAULT_RECOVERY_RETRY = 30;<a name="line.54"></a>
+<span class="sourceLineNo">055</span><a name="line.55"></a>
+<span class="sourceLineNo">056</span>  public static final String RECOVERY_RETRY_INTERVAL_MILLIS =<a name="line.56"></a>
+<span class="sourceLineNo">057</span>      "zookeeper.recovery.retry.intervalmill";<a name="line.57"></a>
+<span class="sourceLineNo">058</span><a name="line.58"></a>
+<span class="sourceLineNo">059</span>  private static final int DEFAULT_RECOVERY_RETRY_INTERVAL_MILLIS = 1000;<a name="line.59"></a>
+<span class="sourceLineNo">060</span><a name="line.60"></a>
+<span class="sourceLineNo">061</span>  public static final String KEEPALIVE_MILLIS = "zookeeper.keep-alive.time";<a name="line.61"></a>
+<span class="sourceLineNo">062</span><a name="line.62"></a>
+<span class="sourceLineNo">063</span>  private static final int DEFAULT_KEEPALIVE_MILLIS = 60000;<a name="line.63"></a>
+<span class="sourceLineNo">064</span><a name="line.64"></a>
+<span class="sourceLineNo">065</span>  private static final EnumSet&lt;Code&gt; FAIL_FAST_CODES = EnumSet.of(Code.NOAUTH, Code.AUTHFAILED);<a name="line.65"></a>
+<span class="sourceLineNo">066</span><a name="line.66"></a>
+<span class="sourceLineNo">067</span>  private final String connectString;<a name="line.67"></a>
+<span class="sourceLineNo">068</span><a name="line.68"></a>
+<span class="sourceLineNo">069</span>  private final int sessionTimeoutMs;<a name="line.69"></a>
+<span class="sourceLineNo">070</span><a name="line.70"></a>
+<span class="sourceLineNo">071</span>  private final int maxRetries;<a name="line.71"></a>
+<span class="sourceLineNo">072</span><a name="line.72"></a>
+<span class="sourceLineNo">073</span>  private final int retryIntervalMs;<a name="line.73"></a>
+<span class="sourceLineNo">074</span><a name="line.74"></a>
+<span class="sourceLineNo">075</span>  private final int keepAliveTimeMs;<a name="line.75"></a>
+<span class="sourceLineNo">076</span><a name="line.76"></a>
+<span class="sourceLineNo">077</span>  private static abstract class Task implements Delayed {<a name="line.77"></a>
+<span class="sourceLineNo">078</span><a name="line.78"></a>
+<span class="sourceLineNo">079</span>    protected long time = System.nanoTime();<a name="line.79"></a>
+<span class="sourceLineNo">080</span><a name="line.80"></a>
+<span class="sourceLineNo">081</span>    public boolean needZk() {<a name="line.81"></a>
+<span class="sourceLineNo">082</span>      return false;<a name="line.82"></a>
+<span class="sourceLineNo">083</span>    }<a name="line.83"></a>
+<span class="sourceLineNo">084</span><a name="line.84"></a>
+<span class="sourceLineNo">085</span>    public void exec(ZooKeeper zk) {<a name="line.85"></a>
+<span class="sourceLineNo">086</span>    }<a name="line.86"></a>
+<span class="sourceLineNo">087</span><a name="line.87"></a>
+<span class="sourceLineNo">088</span>    public void connectFailed(IOException e) {<a name="line.88"></a>
+<span class="sourceLineNo">089</span>    }<a name="line.89"></a>
+<span class="sourceLineNo">090</span><a name="line.90"></a>
+<span class="sourceLineNo">091</span>    public void closed(IOException e) {<a name="line.91"></a>
+<span class="sourceLineNo">092</span>    }<a name="line.92"></a>
+<span class="sourceLineNo">093</span><a name="line.93"></a>
+<span class="sourceLineNo">094</span>    @Override<a name="line.94"></a>
+<span class="sourceLineNo">095</span>    public int compareTo(Delayed o) {<a name="line.95"></a>
+<span class="sourceLineNo">096</span>      Task that = (Task) o;<a name="line.96"></a>
+<span class="sourceLineNo">097</span>      int c = Long.compare(time, that.time);<a name="line.97"></a>
+<span class="sourceLineNo">098</span>      if (c != 0) {<a name="line.98"></a>
+<span class="sourceLineNo">099</span>        return c;<a name="line.99"></a>
+<span class="sourceLineNo">100</span>      }<a name="line.100"></a>
+<span class="sourceLineNo">101</span>      return Integer.compare(System.identityHashCode(this), System.identityHashCode(that));<a name="line.101"></a>
+<span class="sourceLineNo">102</span>    }<a name="line.102"></a>
+<span class="sourceLineNo">103</span><a name="line.103"></a>
+<span class="sourceLineNo">104</span>    @Override<a name="line.104"></a>
+<span class="sourceLineNo">105</span>    public long getDelay(TimeUnit unit) {<a name="line.105"></a>
+<span class="sourceLineNo">106</span>      return unit.convert(time - System.nanoTime(), TimeUnit.NANOSECONDS);<a name="line.106"></a>
+<span class="sourceLineNo">107</span>    }<a name="line.107"></a>
+<span class="sourceLineNo">108</span>  }<a name="line.108"></a>
+<span class="sourceLineNo">109</span><a name="line.109"></a>
+<span class="sourceLineNo">110</span>  private static final Task CLOSE = new Task() {<a name="line.110"></a>
+<span class="sourceLineNo">111</span>  };<a name="line.111"></a>
+<span class="sourceLineNo">112</span><a name="line.112"></a>
+<span class="sourceLineNo">113</span>  private final DelayQueue&lt;Task&gt; tasks = new DelayQueue&lt;&gt;();<a name="line.113"></a>
+<span class="sourceLineNo">114</span><a name="line.114"></a>
+<span class="sourceLineNo">115</span>  private final AtomicBoolean closed = new AtomicBoolean(false);<a name="line.115"></a>
+<span class="sourceLineNo">116</span><a name="line.116"></a>
+<span class="sourceLineNo">117</span>  private ZooKeeper zookeeper;<a name="line.117"></a>
+<span class="sourceLineNo">118</span><a name="line.118"></a>
+<span class="sourceLineNo">119</span>  private String getId() {<a name="line.119"></a>
+<span class="sourceLineNo">120</span>    return String.format("0x%08x", System.identityHashCode(this));<a name="line.120"></a>
+<span class="sourceLineNo">121</span>  }<a name="line.121"></a>
+<span class="sourceLineNo">122</span><a name="line.122"></a>
+<span class="sourceLineNo">123</span>  public ReadOnlyZKClient(Configuration conf) {<a name="line.123"></a>
+<span class="sourceLineNo">124</span>    this.connectString = ZKConfig.getZKQuorumServersString(conf);<a name="line.124"></a>
+<span class="sourceLineNo">125</span>    this.sessionTimeoutMs = conf.getInt(ZK_SESSION_TIMEOUT, DEFAULT_ZK_SESSION_TIMEOUT);<a name="line.125"></a>
+<span class="sourceLineNo">126</span>    this.maxRetries = conf.getInt(RECOVERY_RETRY, DEFAULT_RECOVERY_RETRY);<a name="line.126"></a>
+<span class="sourceLineNo">127</span>    this.retryIntervalMs =<a name="line.127"></a>
+<span class="sourceLineNo">128</span>        conf.getInt(RECOVERY_RETRY_INTERVAL_MILLIS, DEFAULT_RECOVERY_RETRY_INTERVAL_MILLIS);<a name="line.128"></a>
+<span class="sourceLineNo">129</span>    this.keepAliveTimeMs = conf.getInt(KEEPALIVE_MILLIS, DEFAULT_KEEPALIVE_MILLIS);<a name="line.129"></a>
+<span class="sourceLineNo">130</span>    LOG.info("Start read only zookeeper connection " + getId() + " to " + connectString +<a name="line.130"></a>
+<span class="sourceLineNo">131</span>        ", session timeout " + sessionTimeoutMs + " ms, retries " + maxRetries +<a name="line.131"></a>
+<span class="sourceLineNo">132</span>        ", retry interval " + retryIntervalMs + " ms, keep alive " + keepAliveTimeMs + " ms");<a name="line.132"></a>
+<span class="sourceLineNo">133</span>    Thread t = new Thread(this::run, "ReadOnlyZKClient");<a name="line.133"></a>
+<span class="sourceLineNo">134</span>    t.setDaemon(true);<a name="line.134"></a>
+<span class="sourceLineNo">135</span>    t.start();<a name="line.135"></a>
+<span class="sourceLineNo">136</span>  }<a name="line.136"></a>
+<span class="sourceLineNo">137</span><a name="line.137"></a>
+<span class="sourceLineNo">138</span>  private abstract class ZKTask&lt;T&gt; extends Task {<a name="line.138"></a>
+<span class="sourceLineNo">139</span><a name="line.139"></a>
+<span class="sourceLineNo">140</span>    protected final String path;<a name="line.140"></a>
+<span class="sourceLineNo">141</span><a name="line.141"></a>
+<span class="sourceLineNo">142</span>    private final CompletableFuture&lt;T&gt; future;<a name="line.142"></a>
+<span class="sourceLineNo">143</span><a name="line.143"></a>
+<span class="sourceLineNo">144</span>    private final String operationType;<a name="line.144"></a>
+<span class="sourceLineNo">145</span><a name="line.145"></a>
+<span class="sourceLineNo">146</span>    private int retries;<a name="line.146"></a>
+<span class="sourceLineNo">147</span><a name="line.147"></a>
+<span class="sourceLineNo">148</span>    protected ZKTask(String path, CompletableFuture&lt;T&gt; future, String operationType) {<a name="line.148"></a>
+<span class="sourceLineNo">149</span>      this.path = path;<a name="line.149"></a>
+<span class="sourceLineNo">150</span>      this.future = future;<a name="line.150"></a>
+<span class="sourceLineNo">151</span>      this.operationType = operationType;<a name="line.151"></a>
+<span class="sourceLineNo">152</span>    }<a name="line.152"></a>
+<span class="sourceLineNo">153</span><a name="line.153"></a>
+<span class="sourceLineNo">154</span>    protected final void onComplete(ZooKeeper zk, int rc, T ret, boolean errorIfNoNode) {<a name="line.154"></a>
+<span class="sourceLineNo">155</span>      tasks.add(new Task() {<a name="line.155"></a>
+<span class="sourceLineNo">156</span><a name="line.156"></a>
+<span class="sourceLineNo">157</span>        @Override<a name="line.157"></a>
+<span class="sourceLineNo">158</span>        public void exec(ZooKeeper alwaysNull) {<a name="line.158"></a>
+<span class="sourceLineNo">159</span>          Code code = Code.get(rc);<a name="line.159"></a>
+<span class="sourceLineNo">160</span>          if (code == Code.OK) {<a name="line.160"></a>
+<span class="sourceLineNo">161</span>            future.complete(ret);<a name="line.161"></a>
+<span class="sourceLineNo">162</span>          } else if (code == Code.NONODE) {<a name="line.162"></a>
+<span class="sourceLineNo">163</span>            if (errorIfNoNode) {<a name="line.163"></a>
+<span class="sourceLineNo">164</span>              future.completeExceptionally(KeeperException.create(code, path));<a name="line.164"></a>
+<span class="sourceLineNo">165</span>            } else {<a name="line.165"></a>
+<span class="sourceLineNo">166</span>              future.complete(ret);<a name="line.166"></a>
+<span class="sourceLineNo">167</span>            }<a name="line.167"></a>
+<span class="sourceLineNo">168</span>          } else if (FAIL_FAST_CODES.contains(code)) {<a name="line.168"></a>
+<span class="sourceLineNo">169</span>            future.completeExceptionally(KeeperException.create(code, path));<a name="line.169"></a>
+<span class="sourceLineNo">170</span>          } else {<a name="line.170"></a>
+<span class="sourceLineNo">171</span>            if (code == Code.SESSIONEXPIRED) {<a name="line.171"></a>
+<span class="sourceLineNo">172</span>              LOG.warn(getId() + " session expired, close and reconnect");<a name="line.172"></a>
+<span class="sourceLineNo">173</span>              try {<a name="line.173"></a>
+<span class="sourceLineNo">174</span>                zk.close();<a name="line.174"></a>
+<span class="sourceLineNo">175</span>              } catch (InterruptedException e) {<a name="line.175"></a>
+<span class="sourceLineNo">176</span>              }<a name="line.176"></a>
+<span class="sourceLineNo">177</span>            }<a name="line.177"></a>
+<span class="sourceLineNo">178</span>            if (ZKTask.this.delay(retryIntervalMs, maxRetries)) {<a name="line.178"></a>
+<span class="sourceLineNo">179</span>              LOG.warn(getId() + " failed for " + operationType + " of " + path + ", code = " +<a name="line.179"></a>
+<span class="sourceLineNo">180</span>                  code + ", retries = " + ZKTask.this.retries);<a name="line.180"></a>
+<span class="sourceLineNo">181</span>              tasks.add(ZKTask.this);<a name="line.181"></a>
+<span class="sourceLineNo">182</span>            } else {<a name="line.182"></a>
+<span class="sourceLineNo">183</span>              LOG.warn(getId() + " failed for " + operationType + " of " + path + ", code = " +<a name="line.183"></a>
+<span class="sourceLineNo">184</span>                  code + ", retries = " + ZKTask.this.retries + ", give up");<a name="line.184"></a>
+<span class="sourceLineNo">185</span>              future.completeExceptionally(KeeperException.create(code, path));<a name="line.185"></a>
+<span class="sourceLineNo">186</span>            }<a name="line.186"></a>
+<span class="sourceLineNo">187</span>          }<a name="line.187"></a>
+<span class="sourceLineNo">188</span>        }<a name="line.188"></a>
+<span class="sourceLineNo">189</span><a name="line.189"></a>
+<span class="sourceLineNo">190</span>        @Override<a name="line.190"></a>
+<span class="sourceLineNo">191</span>        public void closed(IOException e) {<a name="line.191"></a>
+<span class="sourceLineNo">192</span>          // It may happen that a request is succeeded and the onComplete has been called and pushed<a name="line.192"></a>
+<span class="sourceLineNo">193</span>          // us into the task queue, but before we get called a close is called and here we will<a name="line.193"></a>
+<span class="sourceLineNo">194</span>          // fail the request, although it is succeeded actually.<a name="line.194"></a>
+<span class="sourceLineNo">195</span>          // This is not a perfect solution but anyway, it is better than hang the requests for<a name="line.195"></a>
+<span class="sourceLineNo">196</span>          // ever, and also acceptable as if you close the zk client before actually getting the<a name="line.196"></a>
+<span class="sourceLineNo">197</span>          // response then a failure is always possible.<a name="line.197"></a>
+<span class="sourceLineNo">198</span>          future.completeExceptionally(e);<a name="line.198"></a>
+<span class="sourceLineNo">199</span>        }<a name="line.199"></a>
+<span class="sourceLineNo">200</span>      });<a name="line.200"></a>
+<span class="sourceLineNo">201</span>    }<a name="line.201"></a>
+<span class="sourceLineNo">202</span><a name="line.202"></a>
+<span class="sourceLineNo">203</span>    @Override<a name="line.203"></a>
+<span class="sourceLineNo">204</span>    public boolean needZk() {<a name="line.204"></a>
+<span class="sourceLineNo">205</span>      return true;<a name="line.205"></a>
+<span class="sourceLineNo">206</span>    }<a name="line.206"></a>
+<span class="sourceLineNo">207</span><a name="line.207"></a>
+<span class="sourceLineNo">208</span>    public boolean delay(long intervalMs, int maxRetries) {<a name="line.208"></a>
+<span class="sourceLineNo">209</span>      if (retries &gt;= maxRetries) {<a name="line.209"></a>
+<span class="sourceLineNo">210</span>        return false;<a name="line.210"></a>
+<span class="sourceLineNo">211</span>      }<a name="line.211"></a>
+<span class="sourceLineNo">212</span>      retries++;<a name="line.212"></a>
+<span class="sourceLineNo">213</span>      time = System.nanoTime() + TimeUnit.MILLISECONDS.toNanos(intervalMs);<a name="line.213"></a>
+<span class="sourceLineNo">214</span>      return true;<a name="line.214"></a>
+<span class="sourceLineNo">215</span>    }<a name="line.215"></a>
+<span class="sourceLineNo">216</span><a name="line.216"></a>
+<span class="sourceLineNo">217</span>    @Override<a name="line.217"></a>
+<span class="sourceLineNo">218</span>    public void connectFailed(IOException e) {<a name="line.218"></a>
+<span class="sourceLineNo">219</span>      if (delay(retryIntervalMs, maxRetries)) {<a name="line.219"></a>
+<span class="sourceLineNo">220</span>        LOG.warn(getId() + " failed to connect to zk for " + operationType + " of " + path +<a name="line.220"></a>
+<span class="sourceLineNo">221</span>            ", retries = " + retries,<a name="line.221"></a>
+<span class="sourceLineNo">222</span>          e);<a name="line.222"></a>
+<span class="sourceLineNo">223</span>        tasks.add(this);<a name="line.223"></a>
+<span class="sourceLineNo">224</span>      } else {<a name="line.224"></a>
+<span class="sourceLineNo">225</span>        LOG.warn(getId() + " failed to connect to zk for " + operationType + " of " + path +<a name="line.225"></a>
+<span class="sourceLineNo">226</span>            ", retries = " + retries + ", give up",<a name="line.226"></a>
+<span class="sourceLineNo">227</span>          e);<a name="line.227"></a>
+<span class="sourceLineNo">228</span>        future.completeExceptionally(e);<a name="line.228"></a>
+<span class="sourceLineNo">229</span>      }<a name="line.229"></a>
+<span class="sourceLineNo">230</span>    }<a name="line.230"></a>
+<span class="sourceLineNo">231</span><a name="line.231"></a>
+<span class="sourceLineNo">232</span>    @Override<a name="line.232"></a>
+<span class="sourceLineNo">233</span>    public void closed(IOException e) {<a name="line.233"></a>
+<span class="sourceLineNo">234</span>      future.completeExceptionally(e);<a name="line.234"></a>
+<span class="sourceLineNo">235</span>    }<a name="line.235"></a>
+<span class="sourceLineNo">236</span>  }<a name="line.236"></a>
+<span class="sourceLineNo">237</span><a name="line.237"></a>
+<span class="sourceLineNo">238</span>  private static &lt;T&gt; CompletableFuture&lt;T&gt; failed(Throwable e) {<a name="line.238"></a>
+<span class="sourceLineNo">239</span>    CompletableFuture&lt;T&gt; future = new CompletableFuture&lt;&gt;();<a name="line.239"></a>
+<span class="sourceLineNo">240</span>    future.completeExceptionally(e);<a name="line.240"></a>
+<span class="sourceLineNo">241</span>    return future;<a name="line.241"></a>
+<span class="sourceLineNo">242</span>  }<a name="line.242"></a>
+<span class="sourceLineNo">243</span><a name="line.243"></a>
+<span class="sourceLineNo">244</span>  public CompletableFuture&lt;byte[]&gt; get(String path) {<a name="line.244"></a>
+<span class="sourceLineNo">245</span>    if (closed.get()) {<a name="line.245"></a>
+<span class="sourceLineNo">246</span>      return failed(new IOException("Client already closed"));<a name="line.246"></a>
+<span class="sourceLineNo">247</span>    }<a name="line.247"></a>
+<span class="sourceLineNo">248</span>    CompletableFuture&lt;byte[]&gt; future = new CompletableFuture&lt;&gt;();<a name="line.248"></a>
+<span class="sourceLineNo">249</span>    tasks.add(new ZKTask&lt;byte[]&gt;(path, future, "get") {<a name="line.249"></a>
+<span class="sourceLineNo">250</span><a name="line.250"></a>
+<span class="sourceLineNo">251</span>      @Override<a name="line.251"></a>
+<span class="sourceLineNo">252</span>      public void exec(ZooKeeper zk) {<a name="line.252"></a>
+<span class="sourceLineNo">253</span>        zk.getData(path, false, (rc, path, ctx, data, stat) -&gt; onComplete(zk, rc, data, true),<a name="line.253"></a>
+<span class="sourceLineNo">254</span>          null);<a name="line.254"></a>
+<span class="sourceLineNo">255</span>      }<a name="line.255"></a>
+<span class="sourceLineNo">256</span>    });<a name="line.256"></a>
+<span class="sourceLineNo">257</span>    return future;<a name="line.257"></a>
+<span class="sourceLineNo">258</span>  }<a name="line.258"></a>
+<span class="sourceLineNo">259</span><a name="line.259"></a>
+<span class="sourceLineNo">260</span>  public CompletableFuture&lt;Stat&gt; exists(String path) {<a name="line.260"></a>
+<span class="sourceLineNo">261</span>    if (closed.get()) {<a name="line.261"></a>
+<span class="sourceLineNo">262</span>      return failed(new IOException("Client already closed"));<a name="line.262"></a>
+<span class="sourceLineNo">263</span>    }<a name="line.263"></a>
+<span class="sourceLineNo">264</span>    CompletableFuture&lt;Stat&gt; future = new CompletableFuture&lt;&gt;();<a name="line.264"></a>
+<span class="sourceLineNo">265</span>    tasks.add(new ZKTask&lt;Stat&gt;(path, future, "exists") {<a name="line.265"></a>
+<span class="sourceLineNo">266</span><a name="line.266"></a>
+<span class="sourceLineNo">267</span>      @Override<a name="line.267"></a>
+<span class="sourceLineNo">268</span>      public void exec(ZooKeeper zk) {<a name="line.268"></a>
+<span class="sourceLineNo">269</span>        zk.exists(path, false, (rc, path, ctx, stat) -&gt; onComplete(zk, rc, stat, false), null);<a name="line.269"></a>
+<span class="sourceLineNo">270</span>      }<a name="line.270"></a>
+<span class="sourceLineNo">271</span>    });<a name="line.271"></a>
+<span class="sourceLineNo">272</span>    return future;<a name="line.272"></a>
+<span class="sourceLineNo">273</span>  }<a name="line.273"></a>
+<span class="sourceLineNo">274</span><a name="line.274"></a>
+<span class="sourceLineNo">275</span>  private void closeZk() {<a name="line.275"></a>
+<span class="sourceLineNo">276</span>    if (zookeeper != null) {<a name="line.276"></a>
+<span class="sourceLineNo">277</span>      try {<a name="line.277"></a>
+<span class="sourceLineNo">278</span>        zookeeper.close();<a name="line.278"></a>
+<span class="sourceLineNo">279</span>      } catch (InterruptedException e) {<a name="line.279"></a>
+<span class="sourceLineNo">280</span>      }<a name="line.280"></a>
+<span class="sourceLineNo">281</span>      zookeeper = null;<a name="line.281"></a>
+<span class="sourceLineNo">282</span>    }<a name="line.282"></a>
+<span class="sourceLineNo">283</span>  }<a name="line.283"></a>
+<span class="sourceLineNo">284</span><a name="line.284"></a>
+<span class="sourceLineNo">285</span>  private ZooKeeper getZk() throws IOException {<a name="line.285"></a>
+<span class="sourceLineNo">286</span>    // may be closed when session expired<a name="line.286"></a>
+<span class="sourceLineNo">287</span>    if (zookeeper == null || !zookeeper.getState().isAlive()) {<a name="line.287"></a>
+<span class="sourceLineNo">288</span>      zookeeper = new ZooKeeper(connectString, sessionTimeoutMs, e -&gt; {<a name="line.288"></a>
+<span class="sourceLineNo">289</span>      });<a name="line.289"></a>
+<span class="sourceLineNo">290</span>    }<a name="line.290"></a>
+<span class="sourceLineNo">291</span>    return zookeeper;<a name="line.291"></a>
+<span class="sourceLineNo">292</span>  }<a name="line.292"></a>
+<span class="sourceLineNo">293</span><a name="line.293"></a>
+<span class="sourceLineNo">294</span>  private void run() {<a name="line.294"></a>
+<span class="sourceLineNo">295</span>    for (;;) {<a name="line.295"></a>
+<span class="sourceLineNo">296</span>      Task task;<a name="line.296"></a>
+<span class="sourceLineNo">297</span>      try {<a name="line.297"></a>
+<span class="sourceLineNo">298</span>        task = tasks.poll(keepAliveTimeMs, TimeUnit.MILLISECONDS);<a name="line.298"></a>
+<span class="sourceLineNo">299</span>      } catch (InterruptedException e) {<a name="line.299"></a>
+<span class="sourceLineNo">300</span>        continue;<a name="line.300"></a>
+<span class="sourceLineNo">301</span>      }<a name="line.301"></a>
+<span class="sourceLineNo">302</span>      if (task == CLOSE) {<a name="line.302"></a>
+<span class="sourceLineNo">303</span>        break;<a name="line.303"></a>
+<span class="sourceLineNo">304</span>      }<a name="line.304"></a>
+<span class="sourceLineNo">305</span>      if (task == null) {<a name="line.305"></a>
+<span class="sourceLineNo">306</span>        LOG.info(getId() + " no activities for " + keepAliveTimeMs +<a name="line.306"></a>
+<span class="sourceLineNo">307</span>            " ms, close active connection. Will reconnect next time when there are new requests.");<a name="line.307"></a>
+<span class="sourceLineNo">308</span>        closeZk();<a name="line.308"></a>
+<span class="sourceLineNo">309</span>        continue;<a name="line.309"></a>
+<span class="sourceLineNo">310</span>      }<a name="line.310"></a>
+<span class="sourceLineNo">311</span>      if (!task.needZk()) {<a name="line.311"></a>
+<span class="sourceLineNo">312</span>        task.exec(null);<a name="line.312"></a>
+<span class="sourceLineNo">313</span>      } else {<a name="line.313"></a>
+<span class="sourceLineNo">314</span>        ZooKeeper zk;<a name="line.314"></a>
+<span class="sourceLineNo">315</span>        try {<a name="line.315"></a>
+<span class="sourceLineNo">316</span>          zk = getZk();<a name="line.316"></a>
+<span class="sourceLineNo">317</span>        } catch (IOException e) {<a name="line.317"></a>
+<span class="sourceLineNo">318</span>          task.connectFailed(e);<a name="line.318"></a>
+<span class="sourceLineNo">319</span>          continue;<a name="line.319"></a>
+<span class="sourceLineNo">320</span>        }<a name="line.320"></a>
+<span class="sourceLineNo">321</span>        task.exec(zk);<a name="line.321"></a>
+<span class="sourceLineNo">322</span>      }<a name="line.322"></a>
+<span class="sourceLineNo">323</span>    }<a name="line.323"></a>
+<span class="sourceLineNo">324</span>    closeZk();<a name="line.324"></a>
+<span class="sourceLineNo">325</span>    IOException error = new IOException("Client already closed");<a name="line.325"></a>
+<span class="sourceLineNo">326</span>    Arrays.stream(tasks.toArray(new Task[0])).forEach(t -&gt; t.closed(error));<a name="line.326"></a>
+<span class="sourceLineNo">327</span>    tasks.clear();<a name="line.327"></a>
+<span class="sourceLineNo">328</span>  }<a name="line.328"></a>
+<span class="sourceLineNo">329</span><a name="line.329"></a>
+<span class="sourceLineNo">330</span>  @Override<a name="line.330"></a>
+<span class="sourceLineNo">331</span>  public void close() {<a name="line.331"></a>
+<span class="sourceLineNo">332</span>    if (closed.compareAndSet(false, true)) {<a name="line.332"></a>
+<span class="sourceLineNo">333</span>      LOG.info("Close zookeeper connection " + getId() + " to " + connectString);<a name="line.333"></a>
+<span class="sourceLineNo">334</span>      tasks.add(CLOSE);<a name="line.334"></a>
+<span class="sourceLineNo">335</span>    }<a name="line.335"></a>
+<span class="sourceLineNo">336</span>  }<a name="line.336"></a>
+<span class="sourceLineNo">337</span><a name="line.337"></a>
+<span class="sourceLineNo">338</span>  @VisibleForTesting<a name="line.338"></a>
+<span class="sourceLineNo">339</span>  ZooKeeper getZooKeeper() {<a name="line.339"></a>
+<span class="sourceLineNo">340</span>    return zookeeper;<a name="line.340"></a>
+<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>  @VisibleForTesting<a name="line.343"></a>
+<span class="sourceLineNo">344</span>  public String getConnectString() {<a name="line.344"></a>
+<span class="sourceLineNo">345</span>    return connectString;<a name="line.345"></a>
+<span class="sourceLineNo">346</span>  }<a name="line.346"></a>
+<span class="sourceLineNo">347</span>}<a name="line.347"></a>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+</pre>
+</div>
+</body>
+</html>


[04/51] [partial] hbase-site git commit: Published site at .

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/c54c242b/hbase-shaded-check-invariants/project-reports.html
----------------------------------------------------------------------
diff --git a/hbase-shaded-check-invariants/project-reports.html b/hbase-shaded-check-invariants/project-reports.html
index 9a20279..d577599 100644
--- a/hbase-shaded-check-invariants/project-reports.html
+++ b/hbase-shaded-check-invariants/project-reports.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="20171202" />
+    <meta name="Date-Revision-yyyymmdd" content="20171203" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase Shaded Packaging Invariants &#x2013; Generated Reports</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -128,7 +128,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2017-12-02</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2017-12-03</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/c54c242b/hbase-shaded-check-invariants/project-summary.html
----------------------------------------------------------------------
diff --git a/hbase-shaded-check-invariants/project-summary.html b/hbase-shaded-check-invariants/project-summary.html
index 8b2ab4c..33d0ebe 100644
--- a/hbase-shaded-check-invariants/project-summary.html
+++ b/hbase-shaded-check-invariants/project-summary.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="20171202" />
+    <meta name="Date-Revision-yyyymmdd" content="20171203" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase Shaded Packaging Invariants &#x2013; Project Summary</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -166,7 +166,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2017-12-02</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2017-12-03</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/c54c242b/hbase-shaded-check-invariants/source-repository.html
----------------------------------------------------------------------
diff --git a/hbase-shaded-check-invariants/source-repository.html b/hbase-shaded-check-invariants/source-repository.html
index 1c61673..0684443 100644
--- a/hbase-shaded-check-invariants/source-repository.html
+++ b/hbase-shaded-check-invariants/source-repository.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="20171202" />
+    <meta name="Date-Revision-yyyymmdd" content="20171203" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase Shaded Packaging Invariants &#x2013; Source Code Management</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -134,7 +134,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2017-12-02</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2017-12-03</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/c54c242b/hbase-shaded-check-invariants/team-list.html
----------------------------------------------------------------------
diff --git a/hbase-shaded-check-invariants/team-list.html b/hbase-shaded-check-invariants/team-list.html
index 0d6262f..89c71db 100644
--- a/hbase-shaded-check-invariants/team-list.html
+++ b/hbase-shaded-check-invariants/team-list.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="20171202" />
+    <meta name="Date-Revision-yyyymmdd" content="20171203" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase Shaded Packaging Invariants &#x2013; Project Team</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -547,7 +547,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2017-12-02</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2017-12-03</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/c54c242b/index.html
----------------------------------------------------------------------
diff --git a/index.html b/index.html
index d662d56..a173730 100644
--- a/index.html
+++ b/index.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="20171202" />
+    <meta name="Date-Revision-yyyymmdd" content="20171203" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase &#x2013; Apache HBaseâ„¢ Home</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -438,7 +438,7 @@ Apache HBase is an open-source, distributed, versioned, non-relational database
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2017-12-02</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2017-12-03</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/c54c242b/integration.html
----------------------------------------------------------------------
diff --git a/integration.html b/integration.html
index 30400c2..b51bfbb 100644
--- a/integration.html
+++ b/integration.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="20171202" />
+    <meta name="Date-Revision-yyyymmdd" content="20171203" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase &#x2013; CI Management</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -296,7 +296,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2017-12-02</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2017-12-03</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/c54c242b/issue-tracking.html
----------------------------------------------------------------------
diff --git a/issue-tracking.html b/issue-tracking.html
index 0413365..af6754b 100644
--- a/issue-tracking.html
+++ b/issue-tracking.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="20171202" />
+    <meta name="Date-Revision-yyyymmdd" content="20171203" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase &#x2013; Issue Management</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -293,7 +293,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2017-12-02</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2017-12-03</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/c54c242b/license.html
----------------------------------------------------------------------
diff --git a/license.html b/license.html
index 3e7aedb..a68e950 100644
--- a/license.html
+++ b/license.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="20171202" />
+    <meta name="Date-Revision-yyyymmdd" content="20171203" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase &#x2013; Project Licenses</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -496,7 +496,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2017-12-02</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2017-12-03</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/c54c242b/mail-lists.html
----------------------------------------------------------------------
diff --git a/mail-lists.html b/mail-lists.html
index 375f83f..aed3715 100644
--- a/mail-lists.html
+++ b/mail-lists.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="20171202" />
+    <meta name="Date-Revision-yyyymmdd" content="20171203" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase &#x2013; Project Mailing Lists</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -346,7 +346,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2017-12-02</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2017-12-03</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/c54c242b/metrics.html
----------------------------------------------------------------------
diff --git a/metrics.html b/metrics.html
index 8ed4039..314f50d 100644
--- a/metrics.html
+++ b/metrics.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="20171202" />
+    <meta name="Date-Revision-yyyymmdd" content="20171203" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase &#x2013;  
       Apache HBase (TM) Metrics
@@ -464,7 +464,7 @@ export HBASE_REGIONSERVER_OPTS=&quot;$HBASE_JMX_OPTS -Dcom.sun.management.jmxrem
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2017-12-02</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2017-12-03</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/c54c242b/old_news.html
----------------------------------------------------------------------
diff --git a/old_news.html b/old_news.html
index 69d6f99..b3ed805 100644
--- a/old_news.html
+++ b/old_news.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="20171202" />
+    <meta name="Date-Revision-yyyymmdd" content="20171203" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase &#x2013; 
       Old Apache HBase (TM) News
@@ -419,7 +419,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-12-02</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2017-12-03</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/c54c242b/plugin-management.html
----------------------------------------------------------------------
diff --git a/plugin-management.html b/plugin-management.html
index af952f2..5213115 100644
--- a/plugin-management.html
+++ b/plugin-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="20171202" />
+    <meta name="Date-Revision-yyyymmdd" content="20171203" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase &#x2013; Project Plugin Management</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -441,7 +441,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2017-12-02</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2017-12-03</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/c54c242b/plugins.html
----------------------------------------------------------------------
diff --git a/plugins.html b/plugins.html
index a9c71f9..02a18f2 100644
--- a/plugins.html
+++ b/plugins.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="20171202" />
+    <meta name="Date-Revision-yyyymmdd" content="20171203" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase &#x2013; Project Plugins</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -380,7 +380,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2017-12-02</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2017-12-03</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/c54c242b/poweredbyhbase.html
----------------------------------------------------------------------
diff --git a/poweredbyhbase.html b/poweredbyhbase.html
index 7aab086..d3b0404 100644
--- a/poweredbyhbase.html
+++ b/poweredbyhbase.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="20171202" />
+    <meta name="Date-Revision-yyyymmdd" content="20171203" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase &#x2013; Powered By Apache HBase™</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -774,7 +774,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-12-02</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2017-12-03</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/c54c242b/project-info.html
----------------------------------------------------------------------
diff --git a/project-info.html b/project-info.html
index a5a9031..6e6f303 100644
--- a/project-info.html
+++ b/project-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="20171202" />
+    <meta name="Date-Revision-yyyymmdd" content="20171203" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase &#x2013; Project Information</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -340,7 +340,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2017-12-02</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2017-12-03</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/c54c242b/project-reports.html
----------------------------------------------------------------------
diff --git a/project-reports.html b/project-reports.html
index 40439c9..173f54d 100644
--- a/project-reports.html
+++ b/project-reports.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="20171202" />
+    <meta name="Date-Revision-yyyymmdd" content="20171203" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase &#x2013; Generated Reports</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -310,7 +310,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2017-12-02</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2017-12-03</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/c54c242b/project-summary.html
----------------------------------------------------------------------
diff --git a/project-summary.html b/project-summary.html
index d4ed80f..a02ee75 100644
--- a/project-summary.html
+++ b/project-summary.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="20171202" />
+    <meta name="Date-Revision-yyyymmdd" content="20171203" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase &#x2013; Project Summary</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -336,7 +336,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2017-12-02</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2017-12-03</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/c54c242b/pseudo-distributed.html
----------------------------------------------------------------------
diff --git a/pseudo-distributed.html b/pseudo-distributed.html
index cecdfbc..3fc2beb 100644
--- a/pseudo-distributed.html
+++ b/pseudo-distributed.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="20171202" />
+    <meta name="Date-Revision-yyyymmdd" content="20171203" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase &#x2013;  
 Running Apache HBase (TM) in pseudo-distributed mode
@@ -313,7 +313,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-12-02</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2017-12-03</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/c54c242b/replication.html
----------------------------------------------------------------------
diff --git a/replication.html b/replication.html
index de1fb26..a17bd9d 100644
--- a/replication.html
+++ b/replication.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="20171202" />
+    <meta name="Date-Revision-yyyymmdd" content="20171203" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase &#x2013; 
       Apache HBase (TM) Replication
@@ -308,7 +308,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-12-02</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2017-12-03</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/c54c242b/resources.html
----------------------------------------------------------------------
diff --git a/resources.html b/resources.html
index c99a378..60c2f55 100644
--- a/resources.html
+++ b/resources.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="20171202" />
+    <meta name="Date-Revision-yyyymmdd" content="20171203" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase &#x2013; Other Apache HBase (TM) Resources</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -336,7 +336,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-12-02</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2017-12-03</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/c54c242b/source-repository.html
----------------------------------------------------------------------
diff --git a/source-repository.html b/source-repository.html
index a5c9b1a..064ff4c 100644
--- a/source-repository.html
+++ b/source-repository.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="20171202" />
+    <meta name="Date-Revision-yyyymmdd" content="20171203" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase &#x2013; Source Code Management</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -304,7 +304,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2017-12-02</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2017-12-03</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/c54c242b/sponsors.html
----------------------------------------------------------------------
diff --git a/sponsors.html b/sponsors.html
index 573a996..ef49d9d 100644
--- a/sponsors.html
+++ b/sponsors.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="20171202" />
+    <meta name="Date-Revision-yyyymmdd" content="20171203" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase &#x2013; Apache HBase™ Sponsors</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -338,7 +338,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-12-02</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2017-12-03</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/c54c242b/supportingprojects.html
----------------------------------------------------------------------
diff --git a/supportingprojects.html b/supportingprojects.html
index aa13f38..9f95990 100644
--- a/supportingprojects.html
+++ b/supportingprojects.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="20171202" />
+    <meta name="Date-Revision-yyyymmdd" content="20171203" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase &#x2013; Supporting Projects</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -525,7 +525,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-12-02</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2017-12-03</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/c54c242b/team-list.html
----------------------------------------------------------------------
diff --git a/team-list.html b/team-list.html
index 537f129..e630eb1 100644
--- a/team-list.html
+++ b/team-list.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="20171202" />
+    <meta name="Date-Revision-yyyymmdd" content="20171203" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase &#x2013; Project Team</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -717,7 +717,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2017-12-02</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2017-12-03</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/c54c242b/testdevapidocs/allclasses-frame.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/allclasses-frame.html b/testdevapidocs/allclasses-frame.html
index 76202e7..eb889b4 100644
--- a/testdevapidocs/allclasses-frame.html
+++ b/testdevapidocs/allclasses-frame.html
@@ -1574,6 +1574,7 @@
 <li><a href="org/apache/hadoop/hbase/client/TestRawAsyncTablePartialScan.html" title="class in org.apache.hadoop.hbase.client" target="classFrame">TestRawAsyncTablePartialScan</a></li>
 <li><a href="org/apache/hadoop/hbase/client/TestRawAsyncTableScan.html" title="class in org.apache.hadoop.hbase.client" target="classFrame">TestRawAsyncTableScan</a></li>
 <li><a href="org/apache/hadoop/hbase/types/TestRawString.html" title="class in org.apache.hadoop.hbase.types" target="classFrame">TestRawString</a></li>
+<li><a href="org/apache/hadoop/hbase/zookeeper/TestReadOnlyZKClient.html" title="class in org.apache.hadoop.hbase.zookeeper" target="classFrame">TestReadOnlyZKClient</a></li>
 <li><a href="org/apache/hadoop/hbase/zookeeper/TestRecoverableZooKeeper.html" title="class in org.apache.hadoop.hbase.zookeeper" target="classFrame">TestRecoverableZooKeeper</a></li>
 <li><a href="org/apache/hadoop/hbase/regionserver/TestRecoveredEdits.html" title="class in org.apache.hadoop.hbase.regionserver" target="classFrame">TestRecoveredEdits</a></li>
 <li><a href="org/apache/hadoop/hbase/metrics/impl/TestRefCountingMap.html" title="class in org.apache.hadoop.hbase.metrics.impl" target="classFrame">TestRefCountingMap</a></li>
@@ -2176,6 +2177,7 @@
 <li><a href="org/apache/hadoop/hbase/constraint/WorksConstraint.html" title="class in org.apache.hadoop.hbase.constraint" target="classFrame">WorksConstraint</a></li>
 <li><a href="org/apache/hadoop/hbase/constraint/WorksConstraint.NameConstraint.html" title="class in org.apache.hadoop.hbase.constraint" target="classFrame">WorksConstraint.NameConstraint</a></li>
 <li><a href="org/apache/hadoop/hbase/coprocessor/example/WriteHeavyIncrementObserverTestBase.html" title="class in org.apache.hadoop.hbase.coprocessor.example" target="classFrame">WriteHeavyIncrementObserverTestBase</a></li>
+<li><a href="org/apache/hadoop/hbase/testclassification/ZKTests.html" title="interface in org.apache.hadoop.hbase.testclassification" target="classFrame"><span class="interfaceName">ZKTests</span></a></li>
 </ul>
 </div>
 </body>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/c54c242b/testdevapidocs/allclasses-noframe.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/allclasses-noframe.html b/testdevapidocs/allclasses-noframe.html
index c2f6381..4f7717d 100644
--- a/testdevapidocs/allclasses-noframe.html
+++ b/testdevapidocs/allclasses-noframe.html
@@ -1574,6 +1574,7 @@
 <li><a href="org/apache/hadoop/hbase/client/TestRawAsyncTablePartialScan.html" title="class in org.apache.hadoop.hbase.client">TestRawAsyncTablePartialScan</a></li>
 <li><a href="org/apache/hadoop/hbase/client/TestRawAsyncTableScan.html" title="class in org.apache.hadoop.hbase.client">TestRawAsyncTableScan</a></li>
 <li><a href="org/apache/hadoop/hbase/types/TestRawString.html" title="class in org.apache.hadoop.hbase.types">TestRawString</a></li>
+<li><a href="org/apache/hadoop/hbase/zookeeper/TestReadOnlyZKClient.html" title="class in org.apache.hadoop.hbase.zookeeper">TestReadOnlyZKClient</a></li>
 <li><a href="org/apache/hadoop/hbase/zookeeper/TestRecoverableZooKeeper.html" title="class in org.apache.hadoop.hbase.zookeeper">TestRecoverableZooKeeper</a></li>
 <li><a href="org/apache/hadoop/hbase/regionserver/TestRecoveredEdits.html" title="class in org.apache.hadoop.hbase.regionserver">TestRecoveredEdits</a></li>
 <li><a href="org/apache/hadoop/hbase/metrics/impl/TestRefCountingMap.html" title="class in org.apache.hadoop.hbase.metrics.impl">TestRefCountingMap</a></li>
@@ -2176,6 +2177,7 @@
 <li><a href="org/apache/hadoop/hbase/constraint/WorksConstraint.html" title="class in org.apache.hadoop.hbase.constraint">WorksConstraint</a></li>
 <li><a href="org/apache/hadoop/hbase/constraint/WorksConstraint.NameConstraint.html" title="class in org.apache.hadoop.hbase.constraint">WorksConstraint.NameConstraint</a></li>
 <li><a href="org/apache/hadoop/hbase/coprocessor/example/WriteHeavyIncrementObserverTestBase.html" title="class in org.apache.hadoop.hbase.coprocessor.example">WriteHeavyIncrementObserverTestBase</a></li>
+<li><a href="org/apache/hadoop/hbase/testclassification/ZKTests.html" title="interface in org.apache.hadoop.hbase.testclassification"><span class="interfaceName">ZKTests</span></a></li>
 </ul>
 </div>
 </body>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/c54c242b/testdevapidocs/index-all.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/index-all.html b/testdevapidocs/index-all.html
index ac813d7..e1028db 100644
--- a/testdevapidocs/index-all.html
+++ b/testdevapidocs/index-all.html
@@ -3741,6 +3741,8 @@
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/test/IntegrationTestZKAndFSPermissions.html#checkZnodePermsRecursive-org.apache.hadoop.hbase.zookeeper.ZKWatcher-org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper-java.lang.String-">checkZnodePermsRecursive(ZKWatcher, RecoverableZooKeeper, String)</a></span> - Method in class org.apache.hadoop.hbase.test.<a href="org/apache/hadoop/hbase/test/IntegrationTestZKAndFSPermissions.html" title="class in org.apache.hadoop.hbase.test">IntegrationTestZKAndFSPermissions</a></dt>
 <dd>&nbsp;</dd>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/zookeeper/TestReadOnlyZKClient.html#CHILDREN">CHILDREN</a></span> - Static variable in class org.apache.hadoop.hbase.zookeeper.<a href="org/apache/hadoop/hbase/zookeeper/TestReadOnlyZKClient.html" title="class in org.apache.hadoop.hbase.zookeeper">TestReadOnlyZKClient</a></dt>
+<dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/quotas/TestNamespaceQuotaViolationStore.html#chore">chore</a></span> - Variable in class org.apache.hadoop.hbase.quotas.<a href="org/apache/hadoop/hbase/quotas/TestNamespaceQuotaViolationStore.html" title="class in org.apache.hadoop.hbase.quotas">TestNamespaceQuotaViolationStore</a></dt>
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/quotas/TestQuotaObserverChore.html#chore">chore</a></span> - Variable in class org.apache.hadoop.hbase.quotas.<a href="org/apache/hadoop/hbase/quotas/TestQuotaObserverChore.html" title="class in org.apache.hadoop.hbase.quotas">TestQuotaObserverChore</a></dt>
@@ -4369,6 +4371,8 @@
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/wal/TestWALFactory.html#cluster">cluster</a></span> - Static variable in class org.apache.hadoop.hbase.wal.<a href="org/apache/hadoop/hbase/wal/TestWALFactory.html" title="class in org.apache.hadoop.hbase.wal">TestWALFactory</a></dt>
 <dd>&nbsp;</dd>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/zookeeper/TestReadOnlyZKClient.html#CLUSTER">CLUSTER</a></span> - Static variable in class org.apache.hadoop.hbase.zookeeper.<a href="org/apache/hadoop/hbase/zookeeper/TestReadOnlyZKClient.html" title="class in org.apache.hadoop.hbase.zookeeper">TestReadOnlyZKClient</a></dt>
+<dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/client/TestClientScanner.html#clusterConn">clusterConn</a></span> - Variable in class org.apache.hadoop.hbase.client.<a href="org/apache/hadoop/hbase/client/TestClientScanner.html" title="class in org.apache.hadoop.hbase.client">TestClientScanner</a></dt>
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/security/token/TestTokenAuthentication.html#clusterId">clusterId</a></span> - Variable in class org.apache.hadoop.hbase.security.token.<a href="org/apache/hadoop/hbase/security/token/TestTokenAuthentication.html" title="class in org.apache.hadoop.hbase.security.token">TestTokenAuthentication</a></dt>
@@ -8038,6 +8042,8 @@
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/wal/TestSecureWAL.html#data--">data()</a></span> - Static method in class org.apache.hadoop.hbase.wal.<a href="org/apache/hadoop/hbase/wal/TestSecureWAL.html" title="class in org.apache.hadoop.hbase.wal">TestSecureWAL</a></dt>
 <dd>&nbsp;</dd>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/zookeeper/TestReadOnlyZKClient.html#DATA">DATA</a></span> - Static variable in class org.apache.hadoop.hbase.zookeeper.<a href="org/apache/hadoop/hbase/zookeeper/TestReadOnlyZKClient.html" title="class in org.apache.hadoop.hbase.zookeeper">TestReadOnlyZKClient</a></dt>
+<dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/filter/TestBitComparator.html#data0">data0</a></span> - Static variable in class org.apache.hadoop.hbase.filter.<a href="org/apache/hadoop/hbase/filter/TestBitComparator.html" title="class in org.apache.hadoop.hbase.filter">TestBitComparator</a></dt>
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/filter/TestBitComparator.html#data1">data1</a></span> - Static variable in class org.apache.hadoop.hbase.filter.<a href="org/apache/hadoop/hbase/filter/TestBitComparator.html" title="class in org.apache.hadoop.hbase.filter">TestBitComparator</a></dt>
@@ -25139,6 +25145,8 @@
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/TestClassFinder.FileAndPath.html#path">path</a></span> - Variable in class org.apache.hadoop.hbase.<a href="org/apache/hadoop/hbase/TestClassFinder.FileAndPath.html" title="class in org.apache.hadoop.hbase">TestClassFinder.FileAndPath</a></dt>
 <dd>&nbsp;</dd>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/zookeeper/TestReadOnlyZKClient.html#PATH">PATH</a></span> - Static variable in class org.apache.hadoop.hbase.zookeeper.<a href="org/apache/hadoop/hbase/zookeeper/TestReadOnlyZKClient.html" title="class in org.apache.hadoop.hbase.zookeeper">TestReadOnlyZKClient</a></dt>
+<dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/replication/regionserver/TestWALEntryStream.html#pathWatcher">pathWatcher</a></span> - Variable in class org.apache.hadoop.hbase.replication.regionserver.<a href="org/apache/hadoop/hbase/replication/regionserver/TestWALEntryStream.html" title="class in org.apache.hadoop.hbase.replication.regionserver">TestWALEntryStream</a></dt>
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/replication/regionserver/TestWALEntryStream.PathWatcher.html#PathWatcher--">PathWatcher()</a></span> - Constructor for class org.apache.hadoop.hbase.replication.regionserver.<a href="org/apache/hadoop/hbase/replication/regionserver/TestWALEntryStream.PathWatcher.html" title="class in org.apache.hadoop.hbase.replication.regionserver">TestWALEntryStream.PathWatcher</a></dt>
@@ -25642,6 +25650,8 @@
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/thrift/TestThriftServerCmdLine.html#port">port</a></span> - Variable in class org.apache.hadoop.hbase.thrift.<a href="org/apache/hadoop/hbase/thrift/TestThriftServerCmdLine.html" title="class in org.apache.hadoop.hbase.thrift">TestThriftServerCmdLine</a></dt>
 <dd>&nbsp;</dd>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/zookeeper/TestReadOnlyZKClient.html#PORT">PORT</a></span> - Static variable in class org.apache.hadoop.hbase.zookeeper.<a href="org/apache/hadoop/hbase/zookeeper/TestReadOnlyZKClient.html" title="class in org.apache.hadoop.hbase.zookeeper">TestReadOnlyZKClient</a></dt>
+<dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/zookeeper/TestHQuorumPeer.html#PORT_NO">PORT_NO</a></span> - Static variable in class org.apache.hadoop.hbase.zookeeper.<a href="org/apache/hadoop/hbase/zookeeper/TestHQuorumPeer.html" title="class in org.apache.hadoop.hbase.zookeeper">TestHQuorumPeer</a></dt>
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/HBaseTestingUtility.html#portAllocator">portAllocator</a></span> - Static variable in class org.apache.hadoop.hbase.<a href="org/apache/hadoop/hbase/HBaseTestingUtility.html" title="class in org.apache.hadoop.hbase">HBaseTestingUtility</a></dt>
@@ -29394,6 +29404,8 @@
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/regionserver/TestWideScanner.html#rng">rng</a></span> - Static variable in class org.apache.hadoop.hbase.regionserver.<a href="org/apache/hadoop/hbase/regionserver/TestWideScanner.html" title="class in org.apache.hadoop.hbase.regionserver">TestWideScanner</a></dt>
 <dd>&nbsp;</dd>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/zookeeper/TestReadOnlyZKClient.html#RO_ZK">RO_ZK</a></span> - Static variable in class org.apache.hadoop.hbase.zookeeper.<a href="org/apache/hadoop/hbase/zookeeper/TestReadOnlyZKClient.html" title="class in org.apache.hadoop.hbase.zookeeper">TestReadOnlyZKClient</a></dt>
+<dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/wal/TestWALSplit.html#ROBBER">ROBBER</a></span> - Static variable in class org.apache.hadoop.hbase.wal.<a href="org/apache/hadoop/hbase/wal/TestWALSplit.html" title="class in org.apache.hadoop.hbase.wal">TestWALSplit</a></dt>
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/RESTApiClusterManager.RoleCommand.html#RoleCommand--">RoleCommand()</a></span> - Constructor for enum org.apache.hadoop.hbase.<a href="org/apache/hadoop/hbase/RESTApiClusterManager.RoleCommand.html" title="enum in org.apache.hadoop.hbase">RESTApiClusterManager.RoleCommand</a></dt>
@@ -32938,6 +32950,8 @@
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/zookeeper/TestHQuorumPeer.html#setup--">setup()</a></span> - Method in class org.apache.hadoop.hbase.zookeeper.<a href="org/apache/hadoop/hbase/zookeeper/TestHQuorumPeer.html" title="class in org.apache.hadoop.hbase.zookeeper">TestHQuorumPeer</a></dt>
 <dd>&nbsp;</dd>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/zookeeper/TestReadOnlyZKClient.html#setUp--">setUp()</a></span> - Static method in class org.apache.hadoop.hbase.zookeeper.<a href="org/apache/hadoop/hbase/zookeeper/TestReadOnlyZKClient.html" title="class in org.apache.hadoop.hbase.zookeeper">TestReadOnlyZKClient</a></dt>
+<dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/zookeeper/TestZooKeeperACL.html#setUp--">setUp()</a></span> - Method in class org.apache.hadoop.hbase.zookeeper.<a href="org/apache/hadoop/hbase/zookeeper/TestZooKeeperACL.html" title="class in org.apache.hadoop.hbase.zookeeper">TestZooKeeperACL</a></dt>
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/mttr/IntegrationTestMTTR.html#setupActions--">setupActions()</a></span> - Static method in class org.apache.hadoop.hbase.mttr.<a href="org/apache/hadoop/hbase/mttr/IntegrationTestMTTR.html" title="class in org.apache.hadoop.hbase.mttr">IntegrationTestMTTR</a></dt>
@@ -37556,6 +37570,8 @@
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/wal/TestWALSplit.html#tearDown--">tearDown()</a></span> - Method in class org.apache.hadoop.hbase.wal.<a href="org/apache/hadoop/hbase/wal/TestWALSplit.html" title="class in org.apache.hadoop.hbase.wal">TestWALSplit</a></dt>
 <dd>&nbsp;</dd>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/zookeeper/TestReadOnlyZKClient.html#tearDown--">tearDown()</a></span> - Static method in class org.apache.hadoop.hbase.zookeeper.<a href="org/apache/hadoop/hbase/zookeeper/TestReadOnlyZKClient.html" title="class in org.apache.hadoop.hbase.zookeeper">TestReadOnlyZKClient</a></dt>
+<dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/coprocessor/TestCoprocessorServiceBackwardCompatibility.html#tearDownAfter--">tearDownAfter()</a></span> - Static method in class org.apache.hadoop.hbase.coprocessor.<a href="org/apache/hadoop/hbase/coprocessor/TestCoprocessorServiceBackwardCompatibility.html" title="class in org.apache.hadoop.hbase.coprocessor">TestCoprocessorServiceBackwardCompatibility</a></dt>
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/util/hbck/OfflineMetaRebuildTestCore.html#tearDownAfter--">tearDownAfter()</a></span> - Method in class org.apache.hadoop.hbase.util.hbck.<a href="org/apache/hadoop/hbase/util/hbck/OfflineMetaRebuildTestCore.html" title="class in org.apache.hadoop.hbase.util.hbck">OfflineMetaRebuildTestCore</a></dt>
@@ -45468,6 +45484,8 @@
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/quotas/TestQuotaObserverChoreWithMiniCluster.html#testGetAllTablesWithQuotas--">testGetAllTablesWithQuotas()</a></span> - Method in class org.apache.hadoop.hbase.quotas.<a href="org/apache/hadoop/hbase/quotas/TestQuotaObserverChoreWithMiniCluster.html" title="class in org.apache.hadoop.hbase.quotas">TestQuotaObserverChoreWithMiniCluster</a></dt>
 <dd>&nbsp;</dd>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/zookeeper/TestReadOnlyZKClient.html#testGetAndExists--">testGetAndExists()</a></span> - Method in class org.apache.hadoop.hbase.zookeeper.<a href="org/apache/hadoop/hbase/zookeeper/TestReadOnlyZKClient.html" title="class in org.apache.hadoop.hbase.zookeeper">TestReadOnlyZKClient</a></dt>
+<dd>&nbsp;</dd>
 <dt><a href="org/apache/hadoop/hbase/rest/TestGetAndPutResource.html" title="class in org.apache.hadoop.hbase.rest"><span class="typeNameLink">TestGetAndPutResource</span></a> - Class in <a href="org/apache/hadoop/hbase/rest/package-summary.html">org.apache.hadoop.hbase.rest</a></dt>
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/rest/TestGetAndPutResource.html#TestGetAndPutResource--">TestGetAndPutResource()</a></span> - Constructor for class org.apache.hadoop.hbase.rest.<a href="org/apache/hadoop/hbase/rest/TestGetAndPutResource.html" title="class in org.apache.hadoop.hbase.rest">TestGetAndPutResource</a></dt>
@@ -46943,7 +46961,7 @@
 <dd>&nbsp;</dd>
 <dt><a href="org/apache/hadoop/hbase/mapreduce/TestImportExport.TableWALActionListener.html" title="class in org.apache.hadoop.hbase.mapreduce"><span class="typeNameLink">TestImportExport.TableWALActionListener</span></a> - Class in <a href="org/apache/hadoop/hbase/mapreduce/package-summary.html">org.apache.hadoop.hbase.mapreduce</a></dt>
 <dd>
-<div class="block">This listens to the <code>#visitLogEntryBeforeWrite(RegionInfo, WALKey, WALEdit)</code> to
+<div class="block">This listens to the <code>WALActionsListener.visitLogEntryBeforeWrite(RegionInfo, WALKey, WALEdit)</code> to
  identify that an entry is written to the Write Ahead Log for the given table.</div>
 </dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/mapreduce/TestImportExport.html#testImportMain--">testImportMain()</a></span> - Method in class org.apache.hadoop.hbase.mapreduce.<a href="org/apache/hadoop/hbase/mapreduce/TestImportExport.html" title="class in org.apache.hadoop.hbase.mapreduce">TestImportExport</a></dt>
@@ -50275,6 +50293,8 @@
 </dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/filter/TestNullComparator.html#testNonNullValue--">testNonNullValue()</a></span> - Method in class org.apache.hadoop.hbase.filter.<a href="org/apache/hadoop/hbase/filter/TestNullComparator.html" title="class in org.apache.hadoop.hbase.filter">TestNullComparator</a></dt>
 <dd>&nbsp;</dd>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/zookeeper/TestReadOnlyZKClient.html#testNoNode--">testNoNode()</a></span> - Method in class org.apache.hadoop.hbase.zookeeper.<a href="org/apache/hadoop/hbase/zookeeper/TestReadOnlyZKClient.html" title="class in org.apache.hadoop.hbase.zookeeper">TestReadOnlyZKClient</a></dt>
+<dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/master/normalizer/TestSimpleRegionNormalizer.html#testNoNormalizationForMetaTable--">testNoNormalizationForMetaTable()</a></span> - Method in class org.apache.hadoop.hbase.master.normalizer.<a href="org/apache/hadoop/hbase/master/normalizer/TestSimpleRegionNormalizer.html" title="class in org.apache.hadoop.hbase.master.normalizer">TestSimpleRegionNormalizer</a></dt>
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/master/normalizer/TestSimpleRegionNormalizer.html#testNoNormalizationIfTooFewRegions--">testNoNormalizationIfTooFewRegions()</a></span> - Method in class org.apache.hadoop.hbase.master.normalizer.<a href="org/apache/hadoop/hbase/master/normalizer/TestSimpleRegionNormalizer.html" title="class in org.apache.hadoop.hbase.master.normalizer">TestSimpleRegionNormalizer</a></dt>
@@ -51940,6 +51960,10 @@
 <dd>
 <div class="block">Test read only tables</div>
 </dd>
+<dt><a href="org/apache/hadoop/hbase/zookeeper/TestReadOnlyZKClient.html" title="class in org.apache.hadoop.hbase.zookeeper"><span class="typeNameLink">TestReadOnlyZKClient</span></a> - Class in <a href="org/apache/hadoop/hbase/zookeeper/package-summary.html">org.apache.hadoop.hbase.zookeeper</a></dt>
+<dd>&nbsp;</dd>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/zookeeper/TestReadOnlyZKClient.html#TestReadOnlyZKClient--">TestReadOnlyZKClient()</a></span> - Constructor for class org.apache.hadoop.hbase.zookeeper.<a href="org/apache/hadoop/hbase/zookeeper/TestReadOnlyZKClient.html" title="class in org.apache.hadoop.hbase.zookeeper">TestReadOnlyZKClient</a></dt>
+<dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/regionserver/TestDefaultMemStore.html#testReadOwnWritesUnderConcurrency--">testReadOwnWritesUnderConcurrency()</a></span> - Method in class org.apache.hadoop.hbase.regionserver.<a href="org/apache/hadoop/hbase/regionserver/TestDefaultMemStore.html" title="class in org.apache.hadoop.hbase.regionserver">TestDefaultMemStore</a></dt>
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/TestPartialResultsFromClientSide.html#testReadPointAndPartialResults--">testReadPointAndPartialResults()</a></span> - Method in class org.apache.hadoop.hbase.<a href="org/apache/hadoop/hbase/TestPartialResultsFromClientSide.html" title="class in org.apache.hadoop.hbase">TestPartialResultsFromClientSide</a></dt>
@@ -55159,6 +55183,8 @@
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/rest/HBaseRESTTestingUtility.html#testServletPort">testServletPort</a></span> - Variable in class org.apache.hadoop.hbase.rest.<a href="org/apache/hadoop/hbase/rest/HBaseRESTTestingUtility.html" title="class in org.apache.hadoop.hbase.rest">HBaseRESTTestingUtility</a></dt>
 <dd>&nbsp;</dd>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/zookeeper/TestReadOnlyZKClient.html#testSessionExpire--">testSessionExpire()</a></span> - Method in class org.apache.hadoop.hbase.zookeeper.<a href="org/apache/hadoop/hbase/zookeeper/TestReadOnlyZKClient.html" title="class in org.apache.hadoop.hbase.zookeeper">TestReadOnlyZKClient</a></dt>
+<dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/security/visibility/TestVisibilityLabels.html#testSetAndGetUserAuths--">testSetAndGetUserAuths()</a></span> - Method in class org.apache.hadoop.hbase.security.visibility.<a href="org/apache/hadoop/hbase/security/visibility/TestVisibilityLabels.html" title="class in org.apache.hadoop.hbase.security.visibility">TestVisibilityLabels</a></dt>
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/client/TestScan.html#testSetAuthorizations--">testSetAuthorizations()</a></span> - Method in class org.apache.hadoop.hbase.client.<a href="org/apache/hadoop/hbase/client/TestScan.html" title="class in org.apache.hadoop.hbase.client">TestScan</a></dt>
@@ -59112,6 +59138,8 @@
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/test/IntegrationTestTimeBoundedRequestsWithRegionReplicas.TimeBoundedMultiThreadedReader.TimeoutThread.html#timeout">timeout</a></span> - Variable in class org.apache.hadoop.hbase.test.<a href="org/apache/hadoop/hbase/test/IntegrationTestTimeBoundedRequestsWithRegionReplicas.TimeBoundedMultiThreadedReader.TimeoutThread.html" title="class in org.apache.hadoop.hbase.test">IntegrationTestTimeBoundedRequestsWithRegionReplicas.TimeBoundedMultiThreadedReader.TimeoutThread</a></dt>
 <dd>&nbsp;</dd>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/TestAcidGuaranteesWithNoInMemCompaction.html#timeout">timeout</a></span> - Variable in class org.apache.hadoop.hbase.<a href="org/apache/hadoop/hbase/TestAcidGuaranteesWithNoInMemCompaction.html" title="class in org.apache.hadoop.hbase">TestAcidGuaranteesWithNoInMemCompaction</a></dt>
+<dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/TestIPv6NIOServerSocketChannel.html#timeout">timeout</a></span> - Variable in class org.apache.hadoop.hbase.<a href="org/apache/hadoop/hbase/TestIPv6NIOServerSocketChannel.html" title="class in org.apache.hadoop.hbase">TestIPv6NIOServerSocketChannel</a></dt>
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/TestPartialResultsFromClientSide.html#timeout">timeout</a></span> - Static variable in class org.apache.hadoop.hbase.<a href="org/apache/hadoop/hbase/TestPartialResultsFromClientSide.html" title="class in org.apache.hadoop.hbase">TestPartialResultsFromClientSide</a></dt>
@@ -60456,6 +60484,8 @@
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/wal/TestWALMethods.html#util">util</a></span> - Variable in class org.apache.hadoop.hbase.wal.<a href="org/apache/hadoop/hbase/wal/TestWALMethods.html" title="class in org.apache.hadoop.hbase.wal">TestWALMethods</a></dt>
 <dd>&nbsp;</dd>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/zookeeper/TestReadOnlyZKClient.html#UTIL">UTIL</a></span> - Static variable in class org.apache.hadoop.hbase.zookeeper.<a href="org/apache/hadoop/hbase/zookeeper/TestReadOnlyZKClient.html" title="class in org.apache.hadoop.hbase.zookeeper">TestReadOnlyZKClient</a></dt>
+<dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/replication/TestMasterReplication.html#utilities">utilities</a></span> - Variable in class org.apache.hadoop.hbase.replication.<a href="org/apache/hadoop/hbase/replication/TestMasterReplication.html" title="class in org.apache.hadoop.hbase.replication">TestMasterReplication</a></dt>
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/replication/regionserver/TestReplicationSourceManager.html#utility">utility</a></span> - Static variable in class org.apache.hadoop.hbase.replication.regionserver.<a href="org/apache/hadoop/hbase/replication/regionserver/TestReplicationSourceManager.html" title="class in org.apache.hadoop.hbase.replication.regionserver">TestReplicationSourceManager</a></dt>
@@ -61836,7 +61866,7 @@ the order they are declared.</div>
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/regionserver/TestWALLockup.DummyWALActionsListener.html#visitLogEntryBeforeWrite-org.apache.hadoop.hbase.wal.WALKey-org.apache.hadoop.hbase.wal.WALEdit-">visitLogEntryBeforeWrite(WALKey, WALEdit)</a></span> - Method in class org.apache.hadoop.hbase.regionserver.<a href="org/apache/hadoop/hbase/regionserver/TestWALLockup.DummyWALActionsListener.html" title="class in org.apache.hadoop.hbase.regionserver">TestWALLockup.DummyWALActionsListener</a></dt>
 <dd>&nbsp;</dd>
-<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/wal/TestWALFactory.DumbWALActionsListener.html#visitLogEntryBeforeWrite-org.apache.hadoop.hbase.HRegionInfo-org.apache.hadoop.hbase.wal.WALKey-org.apache.hadoop.hbase.wal.WALEdit-">visitLogEntryBeforeWrite(HRegionInfo, WALKey, WALEdit)</a></span> - Method in class org.apache.hadoop.hbase.wal.<a href="org/apache/hadoop/hbase/wal/TestWALFactory.DumbWALActionsListener.html" title="class in org.apache.hadoop.hbase.wal">TestWALFactory.DumbWALActionsListener</a></dt>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/wal/TestWALFactory.DumbWALActionsListener.html#visitLogEntryBeforeWrite-org.apache.hadoop.hbase.client.RegionInfo-org.apache.hadoop.hbase.wal.WALKey-org.apache.hadoop.hbase.wal.WALEdit-">visitLogEntryBeforeWrite(RegionInfo, WALKey, WALEdit)</a></span> - Method in class org.apache.hadoop.hbase.wal.<a href="org/apache/hadoop/hbase/wal/TestWALFactory.DumbWALActionsListener.html" title="class in org.apache.hadoop.hbase.wal">TestWALFactory.DumbWALActionsListener</a></dt>
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/wal/TestWALFactory.DumbWALActionsListener.html#visitLogEntryBeforeWrite-org.apache.hadoop.hbase.wal.WALKey-org.apache.hadoop.hbase.wal.WALEdit-">visitLogEntryBeforeWrite(WALKey, WALEdit)</a></span> - Method in class org.apache.hadoop.hbase.wal.<a href="org/apache/hadoop/hbase/wal/TestWALFactory.DumbWALActionsListener.html" title="class in org.apache.hadoop.hbase.wal">TestWALFactory.DumbWALActionsListener</a></dt>
 <dd>&nbsp;</dd>
@@ -62998,6 +63028,8 @@ the order they are declared.</div>
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/TestNamespace.html#zkNamespaceManager">zkNamespaceManager</a></span> - Static variable in class org.apache.hadoop.hbase.<a href="org/apache/hadoop/hbase/TestNamespace.html" title="class in org.apache.hadoop.hbase">TestNamespace</a></dt>
 <dd>&nbsp;</dd>
+<dt><a href="org/apache/hadoop/hbase/testclassification/ZKTests.html" title="interface in org.apache.hadoop.hbase.testclassification"><span class="typeNameLink">ZKTests</span></a> - Interface in <a href="org/apache/hadoop/hbase/testclassification/package-summary.html">org.apache.hadoop.hbase.testclassification</a></dt>
+<dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/replication/TestReplicationStateBasic.html#zkTimeoutCount">zkTimeoutCount</a></span> - Static variable in class org.apache.hadoop.hbase.replication.<a href="org/apache/hadoop/hbase/replication/TestReplicationStateBasic.html" title="class in org.apache.hadoop.hbase.replication">TestReplicationStateBasic</a></dt>
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/master/cleaner/TestReplicationZKNodeCleaner.html#zkw">zkw</a></span> - Variable in class org.apache.hadoop.hbase.master.cleaner.<a href="org/apache/hadoop/hbase/master/cleaner/TestReplicationZKNodeCleaner.html" title="class in org.apache.hadoop.hbase.master.cleaner">TestReplicationZKNodeCleaner</a></dt>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/c54c242b/testdevapidocs/org/apache/hadoop/hbase/TestAcidGuaranteesWithAdaptivePolicy.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/org/apache/hadoop/hbase/TestAcidGuaranteesWithAdaptivePolicy.html b/testdevapidocs/org/apache/hadoop/hbase/TestAcidGuaranteesWithAdaptivePolicy.html
index 4b5b864..1f9d175 100644
--- a/testdevapidocs/org/apache/hadoop/hbase/TestAcidGuaranteesWithAdaptivePolicy.html
+++ b/testdevapidocs/org/apache/hadoop/hbase/TestAcidGuaranteesWithAdaptivePolicy.html
@@ -75,7 +75,7 @@ var activeTableTab = "activeTableTab";
 <ul class="subNavList">
 <li>Summary:&nbsp;</li>
 <li>Nested&nbsp;|&nbsp;</li>
-<li>Field&nbsp;|&nbsp;</li>
+<li><a href="#fields.inherited.from.class.org.apache.hadoop.hbase.TestAcidGuaranteesWithNoInMemCompaction">Field</a>&nbsp;|&nbsp;</li>
 <li><a href="#constructor.summary">Constr</a>&nbsp;|&nbsp;</li>
 <li><a href="#method.summary">Method</a></li>
 </ul>
@@ -114,7 +114,7 @@ var activeTableTab = "activeTableTab";
 <li class="blockList">
 <hr>
 <br>
-<pre>public class <a href="../../../../src-html/org/apache/hadoop/hbase/TestAcidGuaranteesWithAdaptivePolicy.html#line.29">TestAcidGuaranteesWithAdaptivePolicy</a>
+<pre>public class <a href="../../../../src-html/org/apache/hadoop/hbase/TestAcidGuaranteesWithAdaptivePolicy.html#line.25">TestAcidGuaranteesWithAdaptivePolicy</a>
 extends <a href="../../../../org/apache/hadoop/hbase/TestAcidGuaranteesWithNoInMemCompaction.html" title="class in org.apache.hadoop.hbase">TestAcidGuaranteesWithNoInMemCompaction</a></pre>
 </li>
 </ul>
@@ -122,6 +122,21 @@ extends <a href="../../../../org/apache/hadoop/hbase/TestAcidGuaranteesWithNoInM
 <div class="summary">
 <ul class="blockList">
 <li class="blockList">
+<!-- =========== FIELD SUMMARY =========== -->
+<ul class="blockList">
+<li class="blockList"><a name="field.summary">
+<!--   -->
+</a>
+<h3>Field Summary</h3>
+<ul class="blockList">
+<li class="blockList"><a name="fields.inherited.from.class.org.apache.hadoop.hbase.TestAcidGuaranteesWithNoInMemCompaction">
+<!--   -->
+</a>
+<h3>Fields inherited from class&nbsp;org.apache.hadoop.hbase.<a href="../../../../org/apache/hadoop/hbase/TestAcidGuaranteesWithNoInMemCompaction.html" title="class in org.apache.hadoop.hbase">TestAcidGuaranteesWithNoInMemCompaction</a></h3>
+<code><a href="../../../../org/apache/hadoop/hbase/TestAcidGuaranteesWithNoInMemCompaction.html#timeout">timeout</a></code></li>
+</ul>
+</li>
+</ul>
 <!-- ======== CONSTRUCTOR SUMMARY ======== -->
 <ul class="blockList">
 <li class="blockList"><a name="constructor.summary">
@@ -190,7 +205,7 @@ extends <a href="../../../../org/apache/hadoop/hbase/TestAcidGuaranteesWithNoInM
 <ul class="blockListLast">
 <li class="blockList">
 <h4>TestAcidGuaranteesWithAdaptivePolicy</h4>
-<pre>public&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/TestAcidGuaranteesWithAdaptivePolicy.html#line.29">TestAcidGuaranteesWithAdaptivePolicy</a>()</pre>
+<pre>public&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/TestAcidGuaranteesWithAdaptivePolicy.html#line.25">TestAcidGuaranteesWithAdaptivePolicy</a>()</pre>
 </li>
 </ul>
 </li>
@@ -207,7 +222,7 @@ extends <a href="../../../../org/apache/hadoop/hbase/TestAcidGuaranteesWithNoInM
 <ul class="blockListLast">
 <li class="blockList">
 <h4>getMemoryCompactionPolicy</h4>
-<pre>protected&nbsp;org.apache.hadoop.hbase.MemoryCompactionPolicy&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/TestAcidGuaranteesWithAdaptivePolicy.html#line.32">getMemoryCompactionPolicy</a>()</pre>
+<pre>protected&nbsp;org.apache.hadoop.hbase.MemoryCompactionPolicy&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/TestAcidGuaranteesWithAdaptivePolicy.html#line.28">getMemoryCompactionPolicy</a>()</pre>
 <dl>
 <dt><span class="overrideSpecifyLabel">Overrides:</span></dt>
 <dd><code><a href="../../../../org/apache/hadoop/hbase/TestAcidGuaranteesWithNoInMemCompaction.html#getMemoryCompactionPolicy--">getMemoryCompactionPolicy</a></code>&nbsp;in class&nbsp;<code><a href="../../../../org/apache/hadoop/hbase/TestAcidGuaranteesWithNoInMemCompaction.html" title="class in org.apache.hadoop.hbase">TestAcidGuaranteesWithNoInMemCompaction</a></code></dd>
@@ -268,7 +283,7 @@ extends <a href="../../../../org/apache/hadoop/hbase/TestAcidGuaranteesWithNoInM
 <ul class="subNavList">
 <li>Summary:&nbsp;</li>
 <li>Nested&nbsp;|&nbsp;</li>
-<li>Field&nbsp;|&nbsp;</li>
+<li><a href="#fields.inherited.from.class.org.apache.hadoop.hbase.TestAcidGuaranteesWithNoInMemCompaction">Field</a>&nbsp;|&nbsp;</li>
 <li><a href="#constructor.summary">Constr</a>&nbsp;|&nbsp;</li>
 <li><a href="#method.summary">Method</a></li>
 </ul>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/c54c242b/testdevapidocs/org/apache/hadoop/hbase/TestAcidGuaranteesWithBasicPolicy.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/org/apache/hadoop/hbase/TestAcidGuaranteesWithBasicPolicy.html b/testdevapidocs/org/apache/hadoop/hbase/TestAcidGuaranteesWithBasicPolicy.html
index a8a0465..8f66da0 100644
--- a/testdevapidocs/org/apache/hadoop/hbase/TestAcidGuaranteesWithBasicPolicy.html
+++ b/testdevapidocs/org/apache/hadoop/hbase/TestAcidGuaranteesWithBasicPolicy.html
@@ -75,7 +75,7 @@ var activeTableTab = "activeTableTab";
 <ul class="subNavList">
 <li>Summary:&nbsp;</li>
 <li>Nested&nbsp;|&nbsp;</li>
-<li>Field&nbsp;|&nbsp;</li>
+<li><a href="#fields.inherited.from.class.org.apache.hadoop.hbase.TestAcidGuaranteesWithNoInMemCompaction">Field</a>&nbsp;|&nbsp;</li>
 <li><a href="#constructor.summary">Constr</a>&nbsp;|&nbsp;</li>
 <li><a href="#method.summary">Method</a></li>
 </ul>
@@ -122,6 +122,21 @@ extends <a href="../../../../org/apache/hadoop/hbase/TestAcidGuaranteesWithNoInM
 <div class="summary">
 <ul class="blockList">
 <li class="blockList">
+<!-- =========== FIELD SUMMARY =========== -->
+<ul class="blockList">
+<li class="blockList"><a name="field.summary">
+<!--   -->
+</a>
+<h3>Field Summary</h3>
+<ul class="blockList">
+<li class="blockList"><a name="fields.inherited.from.class.org.apache.hadoop.hbase.TestAcidGuaranteesWithNoInMemCompaction">
+<!--   -->
+</a>
+<h3>Fields inherited from class&nbsp;org.apache.hadoop.hbase.<a href="../../../../org/apache/hadoop/hbase/TestAcidGuaranteesWithNoInMemCompaction.html" title="class in org.apache.hadoop.hbase">TestAcidGuaranteesWithNoInMemCompaction</a></h3>
+<code><a href="../../../../org/apache/hadoop/hbase/TestAcidGuaranteesWithNoInMemCompaction.html#timeout">timeout</a></code></li>
+</ul>
+</li>
+</ul>
 <!-- ======== CONSTRUCTOR SUMMARY ======== -->
 <ul class="blockList">
 <li class="blockList"><a name="constructor.summary">
@@ -268,7 +283,7 @@ extends <a href="../../../../org/apache/hadoop/hbase/TestAcidGuaranteesWithNoInM
 <ul class="subNavList">
 <li>Summary:&nbsp;</li>
 <li>Nested&nbsp;|&nbsp;</li>
-<li>Field&nbsp;|&nbsp;</li>
+<li><a href="#fields.inherited.from.class.org.apache.hadoop.hbase.TestAcidGuaranteesWithNoInMemCompaction">Field</a>&nbsp;|&nbsp;</li>
 <li><a href="#constructor.summary">Constr</a>&nbsp;|&nbsp;</li>
 <li><a href="#method.summary">Method</a></li>
 </ul>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/c54c242b/testdevapidocs/org/apache/hadoop/hbase/TestAcidGuaranteesWithEagerPolicy.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/org/apache/hadoop/hbase/TestAcidGuaranteesWithEagerPolicy.html b/testdevapidocs/org/apache/hadoop/hbase/TestAcidGuaranteesWithEagerPolicy.html
index b1bd70d..89eabdb 100644
--- a/testdevapidocs/org/apache/hadoop/hbase/TestAcidGuaranteesWithEagerPolicy.html
+++ b/testdevapidocs/org/apache/hadoop/hbase/TestAcidGuaranteesWithEagerPolicy.html
@@ -75,7 +75,7 @@ var activeTableTab = "activeTableTab";
 <ul class="subNavList">
 <li>Summary:&nbsp;</li>
 <li>Nested&nbsp;|&nbsp;</li>
-<li>Field&nbsp;|&nbsp;</li>
+<li><a href="#fields.inherited.from.class.org.apache.hadoop.hbase.TestAcidGuaranteesWithNoInMemCompaction">Field</a>&nbsp;|&nbsp;</li>
 <li><a href="#constructor.summary">Constr</a>&nbsp;|&nbsp;</li>
 <li><a href="#method.summary">Method</a></li>
 </ul>
@@ -114,7 +114,7 @@ var activeTableTab = "activeTableTab";
 <li class="blockList">
 <hr>
 <br>
-<pre>public class <a href="../../../../src-html/org/apache/hadoop/hbase/TestAcidGuaranteesWithEagerPolicy.html#line.29">TestAcidGuaranteesWithEagerPolicy</a>
+<pre>public class <a href="../../../../src-html/org/apache/hadoop/hbase/TestAcidGuaranteesWithEagerPolicy.html#line.25">TestAcidGuaranteesWithEagerPolicy</a>
 extends <a href="../../../../org/apache/hadoop/hbase/TestAcidGuaranteesWithNoInMemCompaction.html" title="class in org.apache.hadoop.hbase">TestAcidGuaranteesWithNoInMemCompaction</a></pre>
 </li>
 </ul>
@@ -122,6 +122,21 @@ extends <a href="../../../../org/apache/hadoop/hbase/TestAcidGuaranteesWithNoInM
 <div class="summary">
 <ul class="blockList">
 <li class="blockList">
+<!-- =========== FIELD SUMMARY =========== -->
+<ul class="blockList">
+<li class="blockList"><a name="field.summary">
+<!--   -->
+</a>
+<h3>Field Summary</h3>
+<ul class="blockList">
+<li class="blockList"><a name="fields.inherited.from.class.org.apache.hadoop.hbase.TestAcidGuaranteesWithNoInMemCompaction">
+<!--   -->
+</a>
+<h3>Fields inherited from class&nbsp;org.apache.hadoop.hbase.<a href="../../../../org/apache/hadoop/hbase/TestAcidGuaranteesWithNoInMemCompaction.html" title="class in org.apache.hadoop.hbase">TestAcidGuaranteesWithNoInMemCompaction</a></h3>
+<code><a href="../../../../org/apache/hadoop/hbase/TestAcidGuaranteesWithNoInMemCompaction.html#timeout">timeout</a></code></li>
+</ul>
+</li>
+</ul>
 <!-- ======== CONSTRUCTOR SUMMARY ======== -->
 <ul class="blockList">
 <li class="blockList"><a name="constructor.summary">
@@ -190,7 +205,7 @@ extends <a href="../../../../org/apache/hadoop/hbase/TestAcidGuaranteesWithNoInM
 <ul class="blockListLast">
 <li class="blockList">
 <h4>TestAcidGuaranteesWithEagerPolicy</h4>
-<pre>public&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/TestAcidGuaranteesWithEagerPolicy.html#line.29">TestAcidGuaranteesWithEagerPolicy</a>()</pre>
+<pre>public&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/TestAcidGuaranteesWithEagerPolicy.html#line.25">TestAcidGuaranteesWithEagerPolicy</a>()</pre>
 </li>
 </ul>
 </li>
@@ -207,7 +222,7 @@ extends <a href="../../../../org/apache/hadoop/hbase/TestAcidGuaranteesWithNoInM
 <ul class="blockListLast">
 <li class="blockList">
 <h4>getMemoryCompactionPolicy</h4>
-<pre>protected&nbsp;org.apache.hadoop.hbase.MemoryCompactionPolicy&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/TestAcidGuaranteesWithEagerPolicy.html#line.32">getMemoryCompactionPolicy</a>()</pre>
+<pre>protected&nbsp;org.apache.hadoop.hbase.MemoryCompactionPolicy&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/TestAcidGuaranteesWithEagerPolicy.html#line.27">getMemoryCompactionPolicy</a>()</pre>
 <dl>
 <dt><span class="overrideSpecifyLabel">Overrides:</span></dt>
 <dd><code><a href="../../../../org/apache/hadoop/hbase/TestAcidGuaranteesWithNoInMemCompaction.html#getMemoryCompactionPolicy--">getMemoryCompactionPolicy</a></code>&nbsp;in class&nbsp;<code><a href="../../../../org/apache/hadoop/hbase/TestAcidGuaranteesWithNoInMemCompaction.html" title="class in org.apache.hadoop.hbase">TestAcidGuaranteesWithNoInMemCompaction</a></code></dd>
@@ -268,7 +283,7 @@ extends <a href="../../../../org/apache/hadoop/hbase/TestAcidGuaranteesWithNoInM
 <ul class="subNavList">
 <li>Summary:&nbsp;</li>
 <li>Nested&nbsp;|&nbsp;</li>
-<li>Field&nbsp;|&nbsp;</li>
+<li><a href="#fields.inherited.from.class.org.apache.hadoop.hbase.TestAcidGuaranteesWithNoInMemCompaction">Field</a>&nbsp;|&nbsp;</li>
 <li><a href="#constructor.summary">Constr</a>&nbsp;|&nbsp;</li>
 <li><a href="#method.summary">Method</a></li>
 </ul>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/c54c242b/testdevapidocs/org/apache/hadoop/hbase/TestAcidGuaranteesWithNoInMemCompaction.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/org/apache/hadoop/hbase/TestAcidGuaranteesWithNoInMemCompaction.html b/testdevapidocs/org/apache/hadoop/hbase/TestAcidGuaranteesWithNoInMemCompaction.html
index accbbed..09c33e9 100644
--- a/testdevapidocs/org/apache/hadoop/hbase/TestAcidGuaranteesWithNoInMemCompaction.html
+++ b/testdevapidocs/org/apache/hadoop/hbase/TestAcidGuaranteesWithNoInMemCompaction.html
@@ -113,7 +113,7 @@ var activeTableTab = "activeTableTab";
 </dl>
 <hr>
 <br>
-<pre>public class <a href="../../../../src-html/org/apache/hadoop/hbase/TestAcidGuaranteesWithNoInMemCompaction.html#line.48">TestAcidGuaranteesWithNoInMemCompaction</a>
+<pre>public class <a href="../../../../src-html/org/apache/hadoop/hbase/TestAcidGuaranteesWithNoInMemCompaction.html#line.50">TestAcidGuaranteesWithNoInMemCompaction</a>
 extends <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a></pre>
 <div class="block">Test case that uses multiple threads to read and write multifamily rows into a table, verifying
  that reads never see partially-complete writes. This can run as a junit test, or with a main()
@@ -137,10 +137,14 @@ extends <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?
 <th class="colLast" scope="col">Field and Description</th>
 </tr>
 <tr class="altColor">
+<td class="colFirst"><code>org.junit.rules.TestRule</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/hadoop/hbase/TestAcidGuaranteesWithNoInMemCompaction.html#timeout">timeout</a></span></code>&nbsp;</td>
+</tr>
+<tr class="rowColor">
 <td class="colFirst"><code>private <a href="../../../../org/apache/hadoop/hbase/AcidGuaranteesTestTool.html" title="class in org.apache.hadoop.hbase">AcidGuaranteesTestTool</a></code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/hadoop/hbase/TestAcidGuaranteesWithNoInMemCompaction.html#tool">tool</a></span></code>&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>private static <a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html" title="class in org.apache.hadoop.hbase">HBaseTestingUtility</a></code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/hadoop/hbase/TestAcidGuaranteesWithNoInMemCompaction.html#UTIL">UTIL</a></span></code>&nbsp;</td>
 </tr>
@@ -259,13 +263,22 @@ extends <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?
 <!--   -->
 </a>
 <h3>Field Detail</h3>
+<a name="timeout">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>timeout</h4>
+<pre>public final&nbsp;org.junit.rules.TestRule <a href="../../../../src-html/org/apache/hadoop/hbase/TestAcidGuaranteesWithNoInMemCompaction.html#line.52">timeout</a></pre>
+</li>
+</ul>
 <a name="UTIL">
 <!--   -->
 </a>
 <ul class="blockList">
 <li class="blockList">
 <h4>UTIL</h4>
-<pre>private static final&nbsp;<a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html" title="class in org.apache.hadoop.hbase">HBaseTestingUtility</a> <a href="../../../../src-html/org/apache/hadoop/hbase/TestAcidGuaranteesWithNoInMemCompaction.html#line.50">UTIL</a></pre>
+<pre>private static final&nbsp;<a href="../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html" title="class in org.apache.hadoop.hbase">HBaseTestingUtility</a> <a href="../../../../src-html/org/apache/hadoop/hbase/TestAcidGuaranteesWithNoInMemCompaction.html#line.56">UTIL</a></pre>
 </li>
 </ul>
 <a name="tool">
@@ -274,7 +287,7 @@ extends <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?
 <ul class="blockListLast">
 <li class="blockList">
 <h4>tool</h4>
-<pre>private&nbsp;<a href="../../../../org/apache/hadoop/hbase/AcidGuaranteesTestTool.html" title="class in org.apache.hadoop.hbase">AcidGuaranteesTestTool</a> <a href="../../../../src-html/org/apache/hadoop/hbase/TestAcidGuaranteesWithNoInMemCompaction.html#line.52">tool</a></pre>
+<pre>private&nbsp;<a href="../../../../org/apache/hadoop/hbase/AcidGuaranteesTestTool.html" title="class in org.apache.hadoop.hbase">AcidGuaranteesTestTool</a> <a href="../../../../src-html/org/apache/hadoop/hbase/TestAcidGuaranteesWithNoInMemCompaction.html#line.58">tool</a></pre>
 </li>
 </ul>
 </li>
@@ -291,7 +304,7 @@ extends <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?
 <ul class="blockListLast">
 <li class="blockList">
 <h4>TestAcidGuaranteesWithNoInMemCompaction</h4>
-<pre>public&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/TestAcidGuaranteesWithNoInMemCompaction.html#line.48">TestAcidGuaranteesWithNoInMemCompaction</a>()</pre>
+<pre>public&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/TestAcidGuaranteesWithNoInMemCompaction.html#line.50">TestAcidGuaranteesWithNoInMemCompaction</a>()</pre>
 </li>
 </ul>
 </li>
@@ -308,7 +321,7 @@ extends <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>getMemoryCompactionPolicy</h4>
-<pre>protected&nbsp;org.apache.hadoop.hbase.MemoryCompactionPolicy&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/TestAcidGuaranteesWithNoInMemCompaction.html#line.54">getMemoryCompactionPolicy</a>()</pre>
+<pre>protected&nbsp;org.apache.hadoop.hbase.MemoryCompactionPolicy&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/TestAcidGuaranteesWithNoInMemCompaction.html#line.60">getMemoryCompactionPolicy</a>()</pre>
 </li>
 </ul>
 <a name="setUpBeforeClass--">
@@ -317,7 +330,7 @@ extends <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>setUpBeforeClass</h4>
-<pre>public static&nbsp;void&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/TestAcidGuaranteesWithNoInMemCompaction.html#line.59">setUpBeforeClass</a>()
+<pre>public static&nbsp;void&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/TestAcidGuaranteesWithNoInMemCompaction.html#line.65">setUpBeforeClass</a>()
                              throws <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Exception.html?is-external=true" title="class or interface in java.lang">Exception</a></pre>
 <dl>
 <dt><span class="throwsLabel">Throws:</span></dt>
@@ -331,7 +344,7 @@ extends <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>tearDownAfterClass</h4>
-<pre>public static&nbsp;void&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/TestAcidGuaranteesWithNoInMemCompaction.html#line.71">tearDownAfterClass</a>()
+<pre>public static&nbsp;void&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/TestAcidGuaranteesWithNoInMemCompaction.html#line.77">tearDownAfterClass</a>()
                                throws <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Exception.html?is-external=true" title="class or interface in java.lang">Exception</a></pre>
 <dl>
 <dt><span class="throwsLabel">Throws:</span></dt>
@@ -345,7 +358,7 @@ extends <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>setUp</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/TestAcidGuaranteesWithNoInMemCompaction.html#line.76">setUp</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/TestAcidGuaranteesWithNoInMemCompaction.html#line.82">setUp</a>()
            throws <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Exception.html?is-external=true" title="class or interface in java.lang">Exception</a></pre>
 <dl>
 <dt><span class="throwsLabel">Throws:</span></dt>
@@ -359,7 +372,7 @@ extends <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>tearDown</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/TestAcidGuaranteesWithNoInMemCompaction.html#line.91">tearDown</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/TestAcidGuaranteesWithNoInMemCompaction.html#line.97">tearDown</a>()
               throws <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Exception.html?is-external=true" title="class or interface in java.lang">Exception</a></pre>
 <dl>
 <dt><span class="throwsLabel">Throws:</span></dt>
@@ -373,7 +386,7 @@ extends <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>runTestAtomicity</h4>
-<pre>private&nbsp;void&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/TestAcidGuaranteesWithNoInMemCompaction.html#line.95">runTestAtomicity</a>(long&nbsp;millisToRun,
+<pre>private&nbsp;void&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/TestAcidGuaranteesWithNoInMemCompaction.html#line.101">runTestAtomicity</a>(long&nbsp;millisToRun,
                               int&nbsp;numWriters,
                               int&nbsp;numGetters,
                               int&nbsp;numScanners,
@@ -391,7 +404,7 @@ extends <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>runTestAtomicity</h4>
-<pre>private&nbsp;void&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/TestAcidGuaranteesWithNoInMemCompaction.html#line.100">runTestAtomicity</a>(long&nbsp;millisToRun,
+<pre>private&nbsp;void&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/TestAcidGuaranteesWithNoInMemCompaction.html#line.106">runTestAtomicity</a>(long&nbsp;millisToRun,
                               int&nbsp;numWriters,
                               int&nbsp;numGetters,
                               int&nbsp;numScanners,
@@ -410,7 +423,7 @@ extends <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>testGetAtomicity</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/TestAcidGuaranteesWithNoInMemCompaction.html#line.112">testGetAtomicity</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/TestAcidGuaranteesWithNoInMemCompaction.html#line.118">testGetAtomicity</a>()
                       throws <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Exception.html?is-external=true" title="class or interface in java.lang">Exception</a></pre>
 <dl>
 <dt><span class="throwsLabel">Throws:</span></dt>
@@ -424,7 +437,7 @@ extends <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>testScanAtomicity</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/TestAcidGuaranteesWithNoInMemCompaction.html#line.117">testScanAtomicity</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/TestAcidGuaranteesWithNoInMemCompaction.html#line.123">testScanAtomicity</a>()
                        throws <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Exception.html?is-external=true" title="class or interface in java.lang">Exception</a></pre>
 <dl>
 <dt><span class="throwsLabel">Throws:</span></dt>
@@ -438,7 +451,7 @@ extends <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>testMixedAtomicity</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/TestAcidGuaranteesWithNoInMemCompaction.html#line.122">testMixedAtomicity</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/TestAcidGuaranteesWithNoInMemCompaction.html#line.128">testMixedAtomicity</a>()
                         throws <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Exception.html?is-external=true" title="class or interface in java.lang">Exception</a></pre>
 <dl>
 <dt><span class="throwsLabel">Throws:</span></dt>
@@ -452,7 +465,7 @@ extends <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>testMobGetAtomicity</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/TestAcidGuaranteesWithNoInMemCompaction.html#line.127">testMobGetAtomicity</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/TestAcidGuaranteesWithNoInMemCompaction.html#line.133">testMobGetAtomicity</a>()
                          throws <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Exception.html?is-external=true" title="class or interface in java.lang">Exception</a></pre>
 <dl>
 <dt><span class="throwsLabel">Throws:</span></dt>
@@ -466,7 +479,7 @@ extends <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>testMobScanAtomicity</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/TestAcidGuaranteesWithNoInMemCompaction.html#line.132">testMobScanAtomicity</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/TestAcidGuaranteesWithNoInMemCompaction.html#line.138">testMobScanAtomicity</a>()
                           throws <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Exception.html?is-external=true" title="class or interface in java.lang">Exception</a></pre>
 <dl>
 <dt><span class="throwsLabel">Throws:</span></dt>
@@ -480,7 +493,7 @@ extends <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?
 <ul class="blockListLast">
 <li class="blockList">
 <h4>testMobMixedAtomicity</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/TestAcidGuaranteesWithNoInMemCompaction.html#line.137">testMobMixedAtomicity</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/TestAcidGuaranteesWithNoInMemCompaction.html#line.143">testMobMixedAtomicity</a>()
                            throws <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Exception.html?is-external=true" title="class or interface in java.lang">Exception</a></pre>
 <dl>
 <dt><span class="throwsLabel">Throws:</span></dt>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/c54c242b/testdevapidocs/org/apache/hadoop/hbase/backup/package-tree.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/org/apache/hadoop/hbase/backup/package-tree.html b/testdevapidocs/org/apache/hadoop/hbase/backup/package-tree.html
index 7651965..1f4569c 100644
--- a/testdevapidocs/org/apache/hadoop/hbase/backup/package-tree.html
+++ b/testdevapidocs/org/apache/hadoop/hbase/backup/package-tree.html
@@ -142,8 +142,8 @@
 <ul>
 <li type="circle">java.lang.<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Enum.html?is-external=true" title="class or interface in java.lang"><span class="typeNameLink">Enum</span></a>&lt;E&gt; (implements java.lang.<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Comparable.html?is-external=true" title="class or interface in java.lang">Comparable</a>&lt;T&gt;, java.io.<a href="http://docs.oracle.com/javase/8/docs/api/java/io/Serializable.html?is-external=true" title="class or interface in java.io">Serializable</a>)
 <ul>
-<li type="circle">org.apache.hadoop.hbase.backup.<a href="../../../../../org/apache/hadoop/hbase/backup/TestIncrementalBackupMergeWithFailures.FailurePhase.html" title="enum in org.apache.hadoop.hbase.backup"><span class="typeNameLink">TestIncrementalBackupMergeWithFailures.FailurePhase</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.backup.<a href="../../../../../org/apache/hadoop/hbase/backup/TestBackupDeleteWithFailures.Failure.html" title="enum in org.apache.hadoop.hbase.backup"><span class="typeNameLink">TestBackupDeleteWithFailures.Failure</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.backup.<a href="../../../../../org/apache/hadoop/hbase/backup/TestIncrementalBackupMergeWithFailures.FailurePhase.html" title="enum in org.apache.hadoop.hbase.backup"><span class="typeNameLink">TestIncrementalBackupMergeWithFailures.FailurePhase</span></a></li>
 </ul>
 </li>
 </ul>


[30/51] [partial] hbase-site git commit: Published site at .

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/c54c242b/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/HRegion.BatchOperation.html
----------------------------------------------------------------------
diff --git a/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/HRegion.BatchOperation.html b/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/HRegion.BatchOperation.html
index 3edfbef..9707b2c 100644
--- a/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/HRegion.BatchOperation.html
+++ b/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/HRegion.BatchOperation.html
@@ -2459,5936 +2459,5935 @@
 <span class="sourceLineNo">2451</span>      }<a name="line.2451"></a>
 <span class="sourceLineNo">2452</span><a name="line.2452"></a>
 <span class="sourceLineNo">2453</span>      for (HStore s : storesToFlush) {<a name="line.2453"></a>
-<span class="sourceLineNo">2454</span>        MemStoreSize flushableSize = s.getFlushableSize();<a name="line.2454"></a>
-<span class="sourceLineNo">2455</span>        totalSizeOfFlushableStores.incMemStoreSize(flushableSize);<a name="line.2455"></a>
-<span class="sourceLineNo">2456</span>        storeFlushCtxs.put(s.getColumnFamilyDescriptor().getName(),<a name="line.2456"></a>
-<span class="sourceLineNo">2457</span>          s.createFlushContext(flushOpSeqId, tracker));<a name="line.2457"></a>
-<span class="sourceLineNo">2458</span>        // for writing stores to WAL<a name="line.2458"></a>
-<span class="sourceLineNo">2459</span>        committedFiles.put(s.getColumnFamilyDescriptor().getName(), null);<a name="line.2459"></a>
-<span class="sourceLineNo">2460</span>        storeFlushableSize.put(s.getColumnFamilyDescriptor().getName(), flushableSize);<a name="line.2460"></a>
-<span class="sourceLineNo">2461</span>      }<a name="line.2461"></a>
-<span class="sourceLineNo">2462</span><a name="line.2462"></a>
-<span class="sourceLineNo">2463</span>      // write the snapshot start to WAL<a name="line.2463"></a>
-<span class="sourceLineNo">2464</span>      if (wal != null &amp;&amp; !writestate.readOnly) {<a name="line.2464"></a>
-<span class="sourceLineNo">2465</span>        FlushDescriptor desc = ProtobufUtil.toFlushDescriptor(FlushAction.START_FLUSH,<a name="line.2465"></a>
-<span class="sourceLineNo">2466</span>            getRegionInfo(), flushOpSeqId, committedFiles);<a name="line.2466"></a>
-<span class="sourceLineNo">2467</span>        // No sync. Sync is below where no updates lock and we do FlushAction.COMMIT_FLUSH<a name="line.2467"></a>
-<span class="sourceLineNo">2468</span>        WALUtil.writeFlushMarker(wal, this.getReplicationScope(), getRegionInfo(), desc, false,<a name="line.2468"></a>
-<span class="sourceLineNo">2469</span>            mvcc);<a name="line.2469"></a>
-<span class="sourceLineNo">2470</span>      }<a name="line.2470"></a>
-<span class="sourceLineNo">2471</span><a name="line.2471"></a>
-<span class="sourceLineNo">2472</span>      // Prepare flush (take a snapshot)<a name="line.2472"></a>
-<span class="sourceLineNo">2473</span>      for (StoreFlushContext flush : storeFlushCtxs.values()) {<a name="line.2473"></a>
-<span class="sourceLineNo">2474</span>        flush.prepare();<a name="line.2474"></a>
-<span class="sourceLineNo">2475</span>      }<a name="line.2475"></a>
-<span class="sourceLineNo">2476</span>    } catch (IOException ex) {<a name="line.2476"></a>
-<span class="sourceLineNo">2477</span>      doAbortFlushToWAL(wal, flushOpSeqId, committedFiles);<a name="line.2477"></a>
-<span class="sourceLineNo">2478</span>      throw ex;<a name="line.2478"></a>
-<span class="sourceLineNo">2479</span>    } finally {<a name="line.2479"></a>
-<span class="sourceLineNo">2480</span>      this.updatesLock.writeLock().unlock();<a name="line.2480"></a>
-<span class="sourceLineNo">2481</span>    }<a name="line.2481"></a>
-<span class="sourceLineNo">2482</span>    String s = "Finished memstore snapshotting " + this + ", syncing WAL and waiting on mvcc, " +<a name="line.2482"></a>
-<span class="sourceLineNo">2483</span>        "flushsize=" + totalSizeOfFlushableStores;<a name="line.2483"></a>
-<span class="sourceLineNo">2484</span>    status.setStatus(s);<a name="line.2484"></a>
-<span class="sourceLineNo">2485</span>    doSyncOfUnflushedWALChanges(wal, getRegionInfo());<a name="line.2485"></a>
-<span class="sourceLineNo">2486</span>    return new PrepareFlushResult(storeFlushCtxs, committedFiles, storeFlushableSize, startTime,<a name="line.2486"></a>
-<span class="sourceLineNo">2487</span>        flushOpSeqId, flushedSeqId, totalSizeOfFlushableStores);<a name="line.2487"></a>
-<span class="sourceLineNo">2488</span>  }<a name="line.2488"></a>
-<span class="sourceLineNo">2489</span><a name="line.2489"></a>
-<span class="sourceLineNo">2490</span>  /**<a name="line.2490"></a>
-<span class="sourceLineNo">2491</span>   * Utility method broken out of internalPrepareFlushCache so that method is smaller.<a name="line.2491"></a>
-<span class="sourceLineNo">2492</span>   */<a name="line.2492"></a>
-<span class="sourceLineNo">2493</span>  private void logFatLineOnFlush(Collection&lt;HStore&gt; storesToFlush, long sequenceId) {<a name="line.2493"></a>
-<span class="sourceLineNo">2494</span>    if (!LOG.isInfoEnabled()) {<a name="line.2494"></a>
-<span class="sourceLineNo">2495</span>      return;<a name="line.2495"></a>
-<span class="sourceLineNo">2496</span>    }<a name="line.2496"></a>
-<span class="sourceLineNo">2497</span>    // Log a fat line detailing what is being flushed.<a name="line.2497"></a>
-<span class="sourceLineNo">2498</span>    StringBuilder perCfExtras = null;<a name="line.2498"></a>
-<span class="sourceLineNo">2499</span>    if (!isAllFamilies(storesToFlush)) {<a name="line.2499"></a>
-<span class="sourceLineNo">2500</span>      perCfExtras = new StringBuilder();<a name="line.2500"></a>
-<span class="sourceLineNo">2501</span>      for (HStore store: storesToFlush) {<a name="line.2501"></a>
-<span class="sourceLineNo">2502</span>        perCfExtras.append("; ").append(store.getColumnFamilyName());<a name="line.2502"></a>
-<span class="sourceLineNo">2503</span>        perCfExtras.append("=")<a name="line.2503"></a>
-<span class="sourceLineNo">2504</span>            .append(StringUtils.byteDesc(store.getFlushableSize().getDataSize()));<a name="line.2504"></a>
-<span class="sourceLineNo">2505</span>      }<a name="line.2505"></a>
-<span class="sourceLineNo">2506</span>    }<a name="line.2506"></a>
-<span class="sourceLineNo">2507</span>    LOG.info("Flushing " + + storesToFlush.size() + "/" + stores.size() +<a name="line.2507"></a>
-<span class="sourceLineNo">2508</span>        " column families, memstore=" + StringUtils.byteDesc(this.memstoreDataSize.get()) +<a name="line.2508"></a>
-<span class="sourceLineNo">2509</span>        ((perCfExtras != null &amp;&amp; perCfExtras.length() &gt; 0)? perCfExtras.toString(): "") +<a name="line.2509"></a>
-<span class="sourceLineNo">2510</span>        ((wal != null) ? "" : "; WAL is null, using passed sequenceid=" + sequenceId));<a name="line.2510"></a>
-<span class="sourceLineNo">2511</span>  }<a name="line.2511"></a>
-<span class="sourceLineNo">2512</span><a name="line.2512"></a>
-<span class="sourceLineNo">2513</span>  private void doAbortFlushToWAL(final WAL wal, final long flushOpSeqId,<a name="line.2513"></a>
-<span class="sourceLineNo">2514</span>      final Map&lt;byte[], List&lt;Path&gt;&gt; committedFiles) {<a name="line.2514"></a>
-<span class="sourceLineNo">2515</span>    if (wal == null) return;<a name="line.2515"></a>
-<span class="sourceLineNo">2516</span>    try {<a name="line.2516"></a>
-<span class="sourceLineNo">2517</span>      FlushDescriptor desc = ProtobufUtil.toFlushDescriptor(FlushAction.ABORT_FLUSH,<a name="line.2517"></a>
-<span class="sourceLineNo">2518</span>          getRegionInfo(), flushOpSeqId, committedFiles);<a name="line.2518"></a>
-<span class="sourceLineNo">2519</span>      WALUtil.writeFlushMarker(wal, this.getReplicationScope(), getRegionInfo(), desc, false,<a name="line.2519"></a>
-<span class="sourceLineNo">2520</span>          mvcc);<a name="line.2520"></a>
-<span class="sourceLineNo">2521</span>    } catch (Throwable t) {<a name="line.2521"></a>
-<span class="sourceLineNo">2522</span>      LOG.warn("Received unexpected exception trying to write ABORT_FLUSH marker to WAL:" +<a name="line.2522"></a>
-<span class="sourceLineNo">2523</span>          StringUtils.stringifyException(t));<a name="line.2523"></a>
-<span class="sourceLineNo">2524</span>      // ignore this since we will be aborting the RS with DSE.<a name="line.2524"></a>
-<span class="sourceLineNo">2525</span>    }<a name="line.2525"></a>
-<span class="sourceLineNo">2526</span>    // we have called wal.startCacheFlush(), now we have to abort it<a name="line.2526"></a>
-<span class="sourceLineNo">2527</span>    wal.abortCacheFlush(this.getRegionInfo().getEncodedNameAsBytes());<a name="line.2527"></a>
-<span class="sourceLineNo">2528</span>  }<a name="line.2528"></a>
-<span class="sourceLineNo">2529</span><a name="line.2529"></a>
-<span class="sourceLineNo">2530</span>  /**<a name="line.2530"></a>
-<span class="sourceLineNo">2531</span>   * Sync unflushed WAL changes. See HBASE-8208 for details<a name="line.2531"></a>
-<span class="sourceLineNo">2532</span>   */<a name="line.2532"></a>
-<span class="sourceLineNo">2533</span>  private static void doSyncOfUnflushedWALChanges(final WAL wal, final RegionInfo hri)<a name="line.2533"></a>
-<span class="sourceLineNo">2534</span>  throws IOException {<a name="line.2534"></a>
-<span class="sourceLineNo">2535</span>    if (wal == null) {<a name="line.2535"></a>
-<span class="sourceLineNo">2536</span>      return;<a name="line.2536"></a>
-<span class="sourceLineNo">2537</span>    }<a name="line.2537"></a>
-<span class="sourceLineNo">2538</span>    try {<a name="line.2538"></a>
-<span class="sourceLineNo">2539</span>      wal.sync(); // ensure that flush marker is sync'ed<a name="line.2539"></a>
-<span class="sourceLineNo">2540</span>    } catch (IOException ioe) {<a name="line.2540"></a>
-<span class="sourceLineNo">2541</span>      wal.abortCacheFlush(hri.getEncodedNameAsBytes());<a name="line.2541"></a>
-<span class="sourceLineNo">2542</span>      throw ioe;<a name="line.2542"></a>
-<span class="sourceLineNo">2543</span>    }<a name="line.2543"></a>
-<span class="sourceLineNo">2544</span>  }<a name="line.2544"></a>
-<span class="sourceLineNo">2545</span><a name="line.2545"></a>
-<span class="sourceLineNo">2546</span>  /**<a name="line.2546"></a>
-<span class="sourceLineNo">2547</span>   * @return True if passed Set is all families in the region.<a name="line.2547"></a>
-<span class="sourceLineNo">2548</span>   */<a name="line.2548"></a>
-<span class="sourceLineNo">2549</span>  private boolean isAllFamilies(Collection&lt;HStore&gt; families) {<a name="line.2549"></a>
-<span class="sourceLineNo">2550</span>    return families == null || this.stores.size() == families.size();<a name="line.2550"></a>
-<span class="sourceLineNo">2551</span>  }<a name="line.2551"></a>
-<span class="sourceLineNo">2552</span><a name="line.2552"></a>
-<span class="sourceLineNo">2553</span>  /**<a name="line.2553"></a>
-<span class="sourceLineNo">2554</span>   * Writes a marker to WAL indicating a flush is requested but cannot be complete due to various<a name="line.2554"></a>
-<span class="sourceLineNo">2555</span>   * reasons. Ignores exceptions from WAL. Returns whether the write succeeded.<a name="line.2555"></a>
-<span class="sourceLineNo">2556</span>   * @param wal<a name="line.2556"></a>
-<span class="sourceLineNo">2557</span>   * @return whether WAL write was successful<a name="line.2557"></a>
-<span class="sourceLineNo">2558</span>   */<a name="line.2558"></a>
-<span class="sourceLineNo">2559</span>  private boolean writeFlushRequestMarkerToWAL(WAL wal, boolean writeFlushWalMarker) {<a name="line.2559"></a>
-<span class="sourceLineNo">2560</span>    if (writeFlushWalMarker &amp;&amp; wal != null &amp;&amp; !writestate.readOnly) {<a name="line.2560"></a>
-<span class="sourceLineNo">2561</span>      FlushDescriptor desc = ProtobufUtil.toFlushDescriptor(FlushAction.CANNOT_FLUSH,<a name="line.2561"></a>
-<span class="sourceLineNo">2562</span>        getRegionInfo(), -1, new TreeMap&lt;&gt;(Bytes.BYTES_COMPARATOR));<a name="line.2562"></a>
-<span class="sourceLineNo">2563</span>      try {<a name="line.2563"></a>
-<span class="sourceLineNo">2564</span>        WALUtil.writeFlushMarker(wal, this.getReplicationScope(), getRegionInfo(), desc, true,<a name="line.2564"></a>
-<span class="sourceLineNo">2565</span>            mvcc);<a name="line.2565"></a>
-<span class="sourceLineNo">2566</span>        return true;<a name="line.2566"></a>
-<span class="sourceLineNo">2567</span>      } catch (IOException e) {<a name="line.2567"></a>
-<span class="sourceLineNo">2568</span>        LOG.warn(getRegionInfo().getEncodedName() + " : "<a name="line.2568"></a>
-<span class="sourceLineNo">2569</span>            + "Received exception while trying to write the flush request to wal", e);<a name="line.2569"></a>
-<span class="sourceLineNo">2570</span>      }<a name="line.2570"></a>
-<span class="sourceLineNo">2571</span>    }<a name="line.2571"></a>
-<span class="sourceLineNo">2572</span>    return false;<a name="line.2572"></a>
-<span class="sourceLineNo">2573</span>  }<a name="line.2573"></a>
-<span class="sourceLineNo">2574</span><a name="line.2574"></a>
-<span class="sourceLineNo">2575</span>  @edu.umd.cs.findbugs.annotations.SuppressWarnings(value="NN_NAKED_NOTIFY",<a name="line.2575"></a>
-<span class="sourceLineNo">2576</span>      justification="Intentional; notify is about completed flush")<a name="line.2576"></a>
-<span class="sourceLineNo">2577</span>  protected FlushResultImpl internalFlushCacheAndCommit(WAL wal, MonitoredTask status,<a name="line.2577"></a>
-<span class="sourceLineNo">2578</span>      PrepareFlushResult prepareResult, Collection&lt;HStore&gt; storesToFlush) throws IOException {<a name="line.2578"></a>
-<span class="sourceLineNo">2579</span>    // prepare flush context is carried via PrepareFlushResult<a name="line.2579"></a>
-<span class="sourceLineNo">2580</span>    TreeMap&lt;byte[], StoreFlushContext&gt; storeFlushCtxs = prepareResult.storeFlushCtxs;<a name="line.2580"></a>
-<span class="sourceLineNo">2581</span>    TreeMap&lt;byte[], List&lt;Path&gt;&gt; committedFiles = prepareResult.committedFiles;<a name="line.2581"></a>
-<span class="sourceLineNo">2582</span>    long startTime = prepareResult.startTime;<a name="line.2582"></a>
-<span class="sourceLineNo">2583</span>    long flushOpSeqId = prepareResult.flushOpSeqId;<a name="line.2583"></a>
-<span class="sourceLineNo">2584</span>    long flushedSeqId = prepareResult.flushedSeqId;<a name="line.2584"></a>
-<span class="sourceLineNo">2585</span><a name="line.2585"></a>
-<span class="sourceLineNo">2586</span>    String s = "Flushing stores of " + this;<a name="line.2586"></a>
-<span class="sourceLineNo">2587</span>    status.setStatus(s);<a name="line.2587"></a>
-<span class="sourceLineNo">2588</span>    if (LOG.isTraceEnabled()) LOG.trace(s);<a name="line.2588"></a>
-<span class="sourceLineNo">2589</span><a name="line.2589"></a>
-<span class="sourceLineNo">2590</span>    // Any failure from here on out will be catastrophic requiring server<a name="line.2590"></a>
-<span class="sourceLineNo">2591</span>    // restart so wal content can be replayed and put back into the memstore.<a name="line.2591"></a>
-<span class="sourceLineNo">2592</span>    // Otherwise, the snapshot content while backed up in the wal, it will not<a name="line.2592"></a>
-<span class="sourceLineNo">2593</span>    // be part of the current running servers state.<a name="line.2593"></a>
-<span class="sourceLineNo">2594</span>    boolean compactionRequested = false;<a name="line.2594"></a>
-<span class="sourceLineNo">2595</span>    long flushedOutputFileSize = 0;<a name="line.2595"></a>
-<span class="sourceLineNo">2596</span>    try {<a name="line.2596"></a>
-<span class="sourceLineNo">2597</span>      // A.  Flush memstore to all the HStores.<a name="line.2597"></a>
-<span class="sourceLineNo">2598</span>      // Keep running vector of all store files that includes both old and the<a name="line.2598"></a>
-<span class="sourceLineNo">2599</span>      // just-made new flush store file. The new flushed file is still in the<a name="line.2599"></a>
-<span class="sourceLineNo">2600</span>      // tmp directory.<a name="line.2600"></a>
-<span class="sourceLineNo">2601</span><a name="line.2601"></a>
-<span class="sourceLineNo">2602</span>      for (StoreFlushContext flush : storeFlushCtxs.values()) {<a name="line.2602"></a>
-<span class="sourceLineNo">2603</span>        flush.flushCache(status);<a name="line.2603"></a>
-<span class="sourceLineNo">2604</span>      }<a name="line.2604"></a>
-<span class="sourceLineNo">2605</span><a name="line.2605"></a>
-<span class="sourceLineNo">2606</span>      // Switch snapshot (in memstore) -&gt; new hfile (thus causing<a name="line.2606"></a>
-<span class="sourceLineNo">2607</span>      // all the store scanners to reset/reseek).<a name="line.2607"></a>
-<span class="sourceLineNo">2608</span>      Iterator&lt;HStore&gt; it = storesToFlush.iterator();<a name="line.2608"></a>
-<span class="sourceLineNo">2609</span>      // stores.values() and storeFlushCtxs have same order<a name="line.2609"></a>
-<span class="sourceLineNo">2610</span>      for (StoreFlushContext flush : storeFlushCtxs.values()) {<a name="line.2610"></a>
-<span class="sourceLineNo">2611</span>        boolean needsCompaction = flush.commit(status);<a name="line.2611"></a>
-<span class="sourceLineNo">2612</span>        if (needsCompaction) {<a name="line.2612"></a>
-<span class="sourceLineNo">2613</span>          compactionRequested = true;<a name="line.2613"></a>
-<span class="sourceLineNo">2614</span>        }<a name="line.2614"></a>
-<span class="sourceLineNo">2615</span>        byte[] storeName = it.next().getColumnFamilyDescriptor().getName();<a name="line.2615"></a>
-<span class="sourceLineNo">2616</span>        List&lt;Path&gt; storeCommittedFiles = flush.getCommittedFiles();<a name="line.2616"></a>
-<span class="sourceLineNo">2617</span>        committedFiles.put(storeName, storeCommittedFiles);<a name="line.2617"></a>
-<span class="sourceLineNo">2618</span>        // Flush committed no files, indicating flush is empty or flush was canceled<a name="line.2618"></a>
-<span class="sourceLineNo">2619</span>        if (storeCommittedFiles == null || storeCommittedFiles.isEmpty()) {<a name="line.2619"></a>
-<span class="sourceLineNo">2620</span>          MemStoreSize storeFlushableSize = prepareResult.storeFlushableSize.get(storeName);<a name="line.2620"></a>
-<span class="sourceLineNo">2621</span>          prepareResult.totalFlushableSize.decMemStoreSize(storeFlushableSize);<a name="line.2621"></a>
-<span class="sourceLineNo">2622</span>        }<a name="line.2622"></a>
-<span class="sourceLineNo">2623</span>        flushedOutputFileSize += flush.getOutputFileSize();<a name="line.2623"></a>
-<span class="sourceLineNo">2624</span>      }<a name="line.2624"></a>
-<span class="sourceLineNo">2625</span>      storeFlushCtxs.clear();<a name="line.2625"></a>
-<span class="sourceLineNo">2626</span><a name="line.2626"></a>
-<span class="sourceLineNo">2627</span>      // Set down the memstore size by amount of flush.<a name="line.2627"></a>
-<span class="sourceLineNo">2628</span>      this.decrMemStoreSize(prepareResult.totalFlushableSize);<a name="line.2628"></a>
-<span class="sourceLineNo">2629</span><a name="line.2629"></a>
-<span class="sourceLineNo">2630</span>      if (wal != null) {<a name="line.2630"></a>
-<span class="sourceLineNo">2631</span>        // write flush marker to WAL. If fail, we should throw DroppedSnapshotException<a name="line.2631"></a>
-<span class="sourceLineNo">2632</span>        FlushDescriptor desc = ProtobufUtil.toFlushDescriptor(FlushAction.COMMIT_FLUSH,<a name="line.2632"></a>
-<span class="sourceLineNo">2633</span>          getRegionInfo(), flushOpSeqId, committedFiles);<a name="line.2633"></a>
-<span class="sourceLineNo">2634</span>        WALUtil.writeFlushMarker(wal, this.getReplicationScope(), getRegionInfo(), desc, true,<a name="line.2634"></a>
-<span class="sourceLineNo">2635</span>            mvcc);<a name="line.2635"></a>
-<span class="sourceLineNo">2636</span>      }<a name="line.2636"></a>
-<span class="sourceLineNo">2637</span>    } catch (Throwable t) {<a name="line.2637"></a>
-<span class="sourceLineNo">2638</span>      // An exception here means that the snapshot was not persisted.<a name="line.2638"></a>
-<span class="sourceLineNo">2639</span>      // The wal needs to be replayed so its content is restored to memstore.<a name="line.2639"></a>
-<span class="sourceLineNo">2640</span>      // Currently, only a server restart will do this.<a name="line.2640"></a>
-<span class="sourceLineNo">2641</span>      // We used to only catch IOEs but its possible that we'd get other<a name="line.2641"></a>
-<span class="sourceLineNo">2642</span>      // exceptions -- e.g. HBASE-659 was about an NPE -- so now we catch<a name="line.2642"></a>
-<span class="sourceLineNo">2643</span>      // all and sundry.<a name="line.2643"></a>
-<span class="sourceLineNo">2644</span>      if (wal != null) {<a name="line.2644"></a>
-<span class="sourceLineNo">2645</span>        try {<a name="line.2645"></a>
-<span class="sourceLineNo">2646</span>          FlushDescriptor desc = ProtobufUtil.toFlushDescriptor(FlushAction.ABORT_FLUSH,<a name="line.2646"></a>
-<span class="sourceLineNo">2647</span>            getRegionInfo(), flushOpSeqId, committedFiles);<a name="line.2647"></a>
-<span class="sourceLineNo">2648</span>          WALUtil.writeFlushMarker(wal, this.replicationScope, getRegionInfo(), desc, false, mvcc);<a name="line.2648"></a>
-<span class="sourceLineNo">2649</span>        } catch (Throwable ex) {<a name="line.2649"></a>
-<span class="sourceLineNo">2650</span>          LOG.warn(getRegionInfo().getEncodedName() + " : "<a name="line.2650"></a>
-<span class="sourceLineNo">2651</span>              + "failed writing ABORT_FLUSH marker to WAL", ex);<a name="line.2651"></a>
-<span class="sourceLineNo">2652</span>          // ignore this since we will be aborting the RS with DSE.<a name="line.2652"></a>
-<span class="sourceLineNo">2653</span>        }<a name="line.2653"></a>
-<span class="sourceLineNo">2654</span>        wal.abortCacheFlush(this.getRegionInfo().getEncodedNameAsBytes());<a name="line.2654"></a>
-<span class="sourceLineNo">2655</span>      }<a name="line.2655"></a>
-<span class="sourceLineNo">2656</span>      DroppedSnapshotException dse = new DroppedSnapshotException("region: " +<a name="line.2656"></a>
-<span class="sourceLineNo">2657</span>          Bytes.toStringBinary(getRegionInfo().getRegionName()));<a name="line.2657"></a>
-<span class="sourceLineNo">2658</span>      dse.initCause(t);<a name="line.2658"></a>
-<span class="sourceLineNo">2659</span>      status.abort("Flush failed: " + StringUtils.stringifyException(t));<a name="line.2659"></a>
-<span class="sourceLineNo">2660</span><a name="line.2660"></a>
-<span class="sourceLineNo">2661</span>      // Callers for flushcache() should catch DroppedSnapshotException and abort the region server.<a name="line.2661"></a>
-<span class="sourceLineNo">2662</span>      // However, since we may have the region read lock, we cannot call close(true) here since<a name="line.2662"></a>
-<span class="sourceLineNo">2663</span>      // we cannot promote to a write lock. Instead we are setting closing so that all other region<a name="line.2663"></a>
-<span class="sourceLineNo">2664</span>      // operations except for close will be rejected.<a name="line.2664"></a>
-<span class="sourceLineNo">2665</span>      this.closing.set(true);<a name="line.2665"></a>
-<span class="sourceLineNo">2666</span><a name="line.2666"></a>
-<span class="sourceLineNo">2667</span>      if (rsServices != null) {<a name="line.2667"></a>
-<span class="sourceLineNo">2668</span>        // This is a safeguard against the case where the caller fails to explicitly handle aborting<a name="line.2668"></a>
-<span class="sourceLineNo">2669</span>        rsServices.abort("Replay of WAL required. Forcing server shutdown", dse);<a name="line.2669"></a>
-<span class="sourceLineNo">2670</span>      }<a name="line.2670"></a>
-<span class="sourceLineNo">2671</span><a name="line.2671"></a>
-<span class="sourceLineNo">2672</span>      throw dse;<a name="line.2672"></a>
-<span class="sourceLineNo">2673</span>    }<a name="line.2673"></a>
-<span class="sourceLineNo">2674</span><a name="line.2674"></a>
-<span class="sourceLineNo">2675</span>    // If we get to here, the HStores have been written.<a name="line.2675"></a>
-<span class="sourceLineNo">2676</span>    if (wal != null) {<a name="line.2676"></a>
-<span class="sourceLineNo">2677</span>      wal.completeCacheFlush(this.getRegionInfo().getEncodedNameAsBytes());<a name="line.2677"></a>
-<span class="sourceLineNo">2678</span>    }<a name="line.2678"></a>
-<span class="sourceLineNo">2679</span><a name="line.2679"></a>
-<span class="sourceLineNo">2680</span>    // Record latest flush time<a name="line.2680"></a>
-<span class="sourceLineNo">2681</span>    for (HStore store: storesToFlush) {<a name="line.2681"></a>
-<span class="sourceLineNo">2682</span>      this.lastStoreFlushTimeMap.put(store, startTime);<a name="line.2682"></a>
-<span class="sourceLineNo">2683</span>    }<a name="line.2683"></a>
-<span class="sourceLineNo">2684</span><a name="line.2684"></a>
-<span class="sourceLineNo">2685</span>    this.maxFlushedSeqId = flushedSeqId;<a name="line.2685"></a>
-<span class="sourceLineNo">2686</span>    this.lastFlushOpSeqId = flushOpSeqId;<a name="line.2686"></a>
-<span class="sourceLineNo">2687</span><a name="line.2687"></a>
-<span class="sourceLineNo">2688</span>    // C. Finally notify anyone waiting on memstore to clear:<a name="line.2688"></a>
-<span class="sourceLineNo">2689</span>    // e.g. checkResources().<a name="line.2689"></a>
-<span class="sourceLineNo">2690</span>    synchronized (this) {<a name="line.2690"></a>
-<span class="sourceLineNo">2691</span>      notifyAll(); // FindBugs NN_NAKED_NOTIFY<a name="line.2691"></a>
-<span class="sourceLineNo">2692</span>    }<a name="line.2692"></a>
-<span class="sourceLineNo">2693</span><a name="line.2693"></a>
-<span class="sourceLineNo">2694</span>    long time = EnvironmentEdgeManager.currentTime() - startTime;<a name="line.2694"></a>
-<span class="sourceLineNo">2695</span>    long memstoresize = this.memstoreDataSize.get();<a name="line.2695"></a>
-<span class="sourceLineNo">2696</span>    String msg = "Finished memstore flush of ~"<a name="line.2696"></a>
-<span class="sourceLineNo">2697</span>        + StringUtils.byteDesc(prepareResult.totalFlushableSize.getDataSize()) + "/"<a name="line.2697"></a>
-<span class="sourceLineNo">2698</span>        + prepareResult.totalFlushableSize.getDataSize() + ", currentsize="<a name="line.2698"></a>
-<span class="sourceLineNo">2699</span>        + StringUtils.byteDesc(memstoresize) + "/" + memstoresize<a name="line.2699"></a>
-<span class="sourceLineNo">2700</span>        + " for region " + this + " in " + time + "ms, sequenceid="<a name="line.2700"></a>
-<span class="sourceLineNo">2701</span>        + flushOpSeqId +  ", compaction requested=" + compactionRequested<a name="line.2701"></a>
-<span class="sourceLineNo">2702</span>        + ((wal == null) ? "; wal=null" : "");<a name="line.2702"></a>
-<span class="sourceLineNo">2703</span>    LOG.info(msg);<a name="line.2703"></a>
-<span class="sourceLineNo">2704</span>    status.setStatus(msg);<a name="line.2704"></a>
-<span class="sourceLineNo">2705</span><a name="line.2705"></a>
-<span class="sourceLineNo">2706</span>    if (rsServices != null &amp;&amp; rsServices.getMetrics() != null) {<a name="line.2706"></a>
-<span class="sourceLineNo">2707</span>      rsServices.getMetrics().updateFlush(time - startTime,<a name="line.2707"></a>
-<span class="sourceLineNo">2708</span>          prepareResult.totalFlushableSize.getDataSize(), flushedOutputFileSize);<a name="line.2708"></a>
-<span class="sourceLineNo">2709</span>    }<a name="line.2709"></a>
-<span class="sourceLineNo">2710</span><a name="line.2710"></a>
-<span class="sourceLineNo">2711</span>    return new FlushResultImpl(compactionRequested ?<a name="line.2711"></a>
-<span class="sourceLineNo">2712</span>        FlushResult.Result.FLUSHED_COMPACTION_NEEDED :<a name="line.2712"></a>
-<span class="sourceLineNo">2713</span>          FlushResult.Result.FLUSHED_NO_COMPACTION_NEEDED, flushOpSeqId);<a name="line.2713"></a>
-<span class="sourceLineNo">2714</span>  }<a name="line.2714"></a>
-<span class="sourceLineNo">2715</span><a name="line.2715"></a>
-<span class="sourceLineNo">2716</span>  /**<a name="line.2716"></a>
-<span class="sourceLineNo">2717</span>   * Method to safely get the next sequence number.<a name="line.2717"></a>
-<span class="sourceLineNo">2718</span>   * @return Next sequence number unassociated with any actual edit.<a name="line.2718"></a>
-<span class="sourceLineNo">2719</span>   * @throws IOException<a name="line.2719"></a>
-<span class="sourceLineNo">2720</span>   */<a name="line.2720"></a>
-<span class="sourceLineNo">2721</span>  @VisibleForTesting<a name="line.2721"></a>
-<span class="sourceLineNo">2722</span>  protected long getNextSequenceId(final WAL wal) throws IOException {<a name="line.2722"></a>
-<span class="sourceLineNo">2723</span>    WriteEntry we = mvcc.begin();<a name="line.2723"></a>
-<span class="sourceLineNo">2724</span>    mvcc.completeAndWait(we);<a name="line.2724"></a>
-<span class="sourceLineNo">2725</span>    return we.getWriteNumber();<a name="line.2725"></a>
-<span class="sourceLineNo">2726</span>  }<a name="line.2726"></a>
-<span class="sourceLineNo">2727</span><a name="line.2727"></a>
-<span class="sourceLineNo">2728</span>  //////////////////////////////////////////////////////////////////////////////<a name="line.2728"></a>
-<span class="sourceLineNo">2729</span>  // get() methods for client use.<a name="line.2729"></a>
-<span class="sourceLineNo">2730</span>  //////////////////////////////////////////////////////////////////////////////<a name="line.2730"></a>
-<span class="sourceLineNo">2731</span><a name="line.2731"></a>
-<span class="sourceLineNo">2732</span>  @Override<a name="line.2732"></a>
-<span class="sourceLineNo">2733</span>  public RegionScannerImpl getScanner(Scan scan) throws IOException {<a name="line.2733"></a>
-<span class="sourceLineNo">2734</span>   return getScanner(scan, null);<a name="line.2734"></a>
-<span class="sourceLineNo">2735</span>  }<a name="line.2735"></a>
-<span class="sourceLineNo">2736</span><a name="line.2736"></a>
-<span class="sourceLineNo">2737</span>  @Override<a name="line.2737"></a>
-<span class="sourceLineNo">2738</span>  public RegionScannerImpl getScanner(Scan scan, List&lt;KeyValueScanner&gt; additionalScanners)<a name="line.2738"></a>
-<span class="sourceLineNo">2739</span>      throws IOException {<a name="line.2739"></a>
-<span class="sourceLineNo">2740</span>    return getScanner(scan, additionalScanners, HConstants.NO_NONCE, HConstants.NO_NONCE);<a name="line.2740"></a>
-<span class="sourceLineNo">2741</span>  }<a name="line.2741"></a>
-<span class="sourceLineNo">2742</span><a name="line.2742"></a>
-<span class="sourceLineNo">2743</span>  private RegionScannerImpl getScanner(Scan scan, List&lt;KeyValueScanner&gt; additionalScanners,<a name="line.2743"></a>
-<span class="sourceLineNo">2744</span>      long nonceGroup, long nonce) throws IOException {<a name="line.2744"></a>
-<span class="sourceLineNo">2745</span>    startRegionOperation(Operation.SCAN);<a name="line.2745"></a>
-<span class="sourceLineNo">2746</span>    try {<a name="line.2746"></a>
-<span class="sourceLineNo">2747</span>      // Verify families are all valid<a name="line.2747"></a>
-<span class="sourceLineNo">2748</span>      if (!scan.hasFamilies()) {<a name="line.2748"></a>
-<span class="sourceLineNo">2749</span>        // Adding all families to scanner<a name="line.2749"></a>
-<span class="sourceLineNo">2750</span>        for (byte[] family : this.htableDescriptor.getColumnFamilyNames()) {<a name="line.2750"></a>
-<span class="sourceLineNo">2751</span>          scan.addFamily(family);<a name="line.2751"></a>
-<span class="sourceLineNo">2752</span>        }<a name="line.2752"></a>
-<span class="sourceLineNo">2753</span>      } else {<a name="line.2753"></a>
-<span class="sourceLineNo">2754</span>        for (byte[] family : scan.getFamilyMap().keySet()) {<a name="line.2754"></a>
-<span class="sourceLineNo">2755</span>          checkFamily(family);<a name="line.2755"></a>
-<span class="sourceLineNo">2756</span>        }<a name="line.2756"></a>
-<span class="sourceLineNo">2757</span>      }<a name="line.2757"></a>
-<span class="sourceLineNo">2758</span>      return instantiateRegionScanner(scan, additionalScanners, nonceGroup, nonce);<a name="line.2758"></a>
-<span class="sourceLineNo">2759</span>    } finally {<a name="line.2759"></a>
-<span class="sourceLineNo">2760</span>      closeRegionOperation(Operation.SCAN);<a name="line.2760"></a>
-<span class="sourceLineNo">2761</span>    }<a name="line.2761"></a>
-<span class="sourceLineNo">2762</span>  }<a name="line.2762"></a>
-<span class="sourceLineNo">2763</span><a name="line.2763"></a>
-<span class="sourceLineNo">2764</span>  protected RegionScanner instantiateRegionScanner(Scan scan,<a name="line.2764"></a>
-<span class="sourceLineNo">2765</span>      List&lt;KeyValueScanner&gt; additionalScanners) throws IOException {<a name="line.2765"></a>
-<span class="sourceLineNo">2766</span>    return instantiateRegionScanner(scan, additionalScanners, HConstants.NO_NONCE,<a name="line.2766"></a>
-<span class="sourceLineNo">2767</span>      HConstants.NO_NONCE);<a name="line.2767"></a>
-<span class="sourceLineNo">2768</span>  }<a name="line.2768"></a>
-<span class="sourceLineNo">2769</span><a name="line.2769"></a>
-<span class="sourceLineNo">2770</span>  protected RegionScannerImpl instantiateRegionScanner(Scan scan,<a name="line.2770"></a>
-<span class="sourceLineNo">2771</span>      List&lt;KeyValueScanner&gt; additionalScanners, long nonceGroup, long nonce) throws IOException {<a name="line.2771"></a>
-<span class="sourceLineNo">2772</span>    if (scan.isReversed()) {<a name="line.2772"></a>
-<span class="sourceLineNo">2773</span>      if (scan.getFilter() != null) {<a name="line.2773"></a>
-<span class="sourceLineNo">2774</span>        scan.getFilter().setReversed(true);<a name="line.2774"></a>
-<span class="sourceLineNo">2775</span>      }<a name="line.2775"></a>
-<span class="sourceLineNo">2776</span>      return new ReversedRegionScannerImpl(scan, additionalScanners, this);<a name="line.2776"></a>
-<span class="sourceLineNo">2777</span>    }<a name="line.2777"></a>
-<span class="sourceLineNo">2778</span>    return new RegionScannerImpl(scan, additionalScanners, this, nonceGroup, nonce);<a name="line.2778"></a>
-<span class="sourceLineNo">2779</span>  }<a name="line.2779"></a>
-<span class="sourceLineNo">2780</span><a name="line.2780"></a>
-<span class="sourceLineNo">2781</span>  /**<a name="line.2781"></a>
-<span class="sourceLineNo">2782</span>   * Prepare a delete for a row mutation processor<a name="line.2782"></a>
-<span class="sourceLineNo">2783</span>   * @param delete The passed delete is modified by this method. WARNING!<a name="line.2783"></a>
-<span class="sourceLineNo">2784</span>   * @throws IOException<a name="line.2784"></a>
-<span class="sourceLineNo">2785</span>   */<a name="line.2785"></a>
-<span class="sourceLineNo">2786</span>  public void prepareDelete(Delete delete) throws IOException {<a name="line.2786"></a>
-<span class="sourceLineNo">2787</span>    // Check to see if this is a deleteRow insert<a name="line.2787"></a>
-<span class="sourceLineNo">2788</span>    if(delete.getFamilyCellMap().isEmpty()){<a name="line.2788"></a>
-<span class="sourceLineNo">2789</span>      for(byte [] family : this.htableDescriptor.getColumnFamilyNames()){<a name="line.2789"></a>
-<span class="sourceLineNo">2790</span>        // Don't eat the timestamp<a name="line.2790"></a>
-<span class="sourceLineNo">2791</span>        delete.addFamily(family, delete.getTimeStamp());<a name="line.2791"></a>
-<span class="sourceLineNo">2792</span>      }<a name="line.2792"></a>
-<span class="sourceLineNo">2793</span>    } else {<a name="line.2793"></a>
-<span class="sourceLineNo">2794</span>      for(byte [] family : delete.getFamilyCellMap().keySet()) {<a name="line.2794"></a>
-<span class="sourceLineNo">2795</span>        if(family == null) {<a name="line.2795"></a>
-<span class="sourceLineNo">2796</span>          throw new NoSuchColumnFamilyException("Empty family is invalid");<a name="line.2796"></a>
-<span class="sourceLineNo">2797</span>        }<a name="line.2797"></a>
-<span class="sourceLineNo">2798</span>        checkFamily(family);<a name="line.2798"></a>
-<span class="sourceLineNo">2799</span>      }<a name="line.2799"></a>
-<span class="sourceLineNo">2800</span>    }<a name="line.2800"></a>
-<span class="sourceLineNo">2801</span>  }<a name="line.2801"></a>
-<span class="sourceLineNo">2802</span><a name="line.2802"></a>
-<span class="sourceLineNo">2803</span>  @Override<a name="line.2803"></a>
-<span class="sourceLineNo">2804</span>  public void delete(Delete delete) throws IOException {<a name="line.2804"></a>
-<span class="sourceLineNo">2805</span>    checkReadOnly();<a name="line.2805"></a>
-<span class="sourceLineNo">2806</span>    checkResources();<a name="line.2806"></a>
-<span class="sourceLineNo">2807</span>    startRegionOperation(Operation.DELETE);<a name="line.2807"></a>
-<span class="sourceLineNo">2808</span>    try {<a name="line.2808"></a>
-<span class="sourceLineNo">2809</span>      // All edits for the given row (across all column families) must happen atomically.<a name="line.2809"></a>
-<span class="sourceLineNo">2810</span>      doBatchMutate(delete);<a name="line.2810"></a>
-<span class="sourceLineNo">2811</span>    } finally {<a name="line.2811"></a>
-<span class="sourceLineNo">2812</span>      closeRegionOperation(Operation.DELETE);<a name="line.2812"></a>
-<span class="sourceLineNo">2813</span>    }<a name="line.2813"></a>
-<span class="sourceLineNo">2814</span>  }<a name="line.2814"></a>
-<span class="sourceLineNo">2815</span><a name="line.2815"></a>
-<span class="sourceLineNo">2816</span>  /**<a name="line.2816"></a>
-<span class="sourceLineNo">2817</span>   * Row needed by below method.<a name="line.2817"></a>
-<span class="sourceLineNo">2818</span>   */<a name="line.2818"></a>
-<span class="sourceLineNo">2819</span>  private static final byte [] FOR_UNIT_TESTS_ONLY = Bytes.toBytes("ForUnitTestsOnly");<a name="line.2819"></a>
-<span class="sourceLineNo">2820</span><a name="line.2820"></a>
-<span class="sourceLineNo">2821</span>  /**<a name="line.2821"></a>
-<span class="sourceLineNo">2822</span>   * This is used only by unit tests. Not required to be a public API.<a name="line.2822"></a>
-<span class="sourceLineNo">2823</span>   * @param familyMap map of family to edits for the given family.<a name="line.2823"></a>
-<span class="sourceLineNo">2824</span>   * @throws IOException<a name="line.2824"></a>
-<span class="sourceLineNo">2825</span>   */<a name="line.2825"></a>
-<span class="sourceLineNo">2826</span>  void delete(NavigableMap&lt;byte[], List&lt;Cell&gt;&gt; familyMap,<a name="line.2826"></a>
-<span class="sourceLineNo">2827</span>      Durability durability) throws IOException {<a name="line.2827"></a>
-<span class="sourceLineNo">2828</span>    Delete delete = new Delete(FOR_UNIT_TESTS_ONLY);<a name="line.2828"></a>
-<span class="sourceLineNo">2829</span>    delete.setFamilyCellMap(familyMap);<a name="line.2829"></a>
-<span class="sourceLineNo">2830</span>    delete.setDurability(durability);<a name="line.2830"></a>
-<span class="sourceLineNo">2831</span>    doBatchMutate(delete);<a name="line.2831"></a>
-<span class="sourceLineNo">2832</span>  }<a name="line.2832"></a>
-<span class="sourceLineNo">2833</span><a name="line.2833"></a>
-<span class="sourceLineNo">2834</span>  /**<a name="line.2834"></a>
-<span class="sourceLineNo">2835</span>   * Set up correct timestamps in the KVs in Delete object.<a name="line.2835"></a>
-<span class="sourceLineNo">2836</span>   * &lt;p&gt;Caller should have the row and region locks.<a name="line.2836"></a>
-<span class="sourceLineNo">2837</span>   * @param mutation<a name="line.2837"></a>
-<span class="sourceLineNo">2838</span>   * @param familyMap<a name="line.2838"></a>
-<span class="sourceLineNo">2839</span>   * @param byteNow<a name="line.2839"></a>
-<span class="sourceLineNo">2840</span>   * @throws IOException<a name="line.2840"></a>
-<span class="sourceLineNo">2841</span>   */<a name="line.2841"></a>
-<span class="sourceLineNo">2842</span>  public void prepareDeleteTimestamps(Mutation mutation, Map&lt;byte[], List&lt;Cell&gt;&gt; familyMap,<a name="line.2842"></a>
-<span class="sourceLineNo">2843</span>      byte[] byteNow) throws IOException {<a name="line.2843"></a>
-<span class="sourceLineNo">2844</span>    for (Map.Entry&lt;byte[], List&lt;Cell&gt;&gt; e : familyMap.entrySet()) {<a name="line.2844"></a>
-<span class="sourceLineNo">2845</span><a name="line.2845"></a>
-<span class="sourceLineNo">2846</span>      byte[] family = e.getKey();<a name="line.2846"></a>
-<span class="sourceLineNo">2847</span>      List&lt;Cell&gt; cells = e.getValue();<a name="line.2847"></a>
-<span class="sourceLineNo">2848</span>      assert cells instanceof RandomAccess;<a name="line.2848"></a>
-<span class="sourceLineNo">2849</span><a name="line.2849"></a>
-<span class="sourceLineNo">2850</span>      Map&lt;byte[], Integer&gt; kvCount = new TreeMap&lt;&gt;(Bytes.BYTES_COMPARATOR);<a name="line.2850"></a>
-<span class="sourceLineNo">2851</span>      int listSize = cells.size();<a name="line.2851"></a>
-<span class="sourceLineNo">2852</span>      for (int i=0; i &lt; listSize; i++) {<a name="line.2852"></a>
-<span class="sourceLineNo">2853</span>        Cell cell = cells.get(i);<a name="line.2853"></a>
-<span class="sourceLineNo">2854</span>        //  Check if time is LATEST, change to time of most recent addition if so<a name="line.2854"></a>
-<span class="sourceLineNo">2855</span>        //  This is expensive.<a name="line.2855"></a>
-<span class="sourceLineNo">2856</span>        if (cell.getTimestamp() == HConstants.LATEST_TIMESTAMP<a name="line.2856"></a>
-<span class="sourceLineNo">2857</span>            &amp;&amp; PrivateCellUtil.isDeleteType(cell)) {<a name="line.2857"></a>
-<span class="sourceLineNo">2858</span>          byte[] qual = CellUtil.cloneQualifier(cell);<a name="line.2858"></a>
-<span class="sourceLineNo">2859</span><a name="line.2859"></a>
-<span class="sourceLineNo">2860</span>          Integer count = kvCount.get(qual);<a name="line.2860"></a>
-<span class="sourceLineNo">2861</span>          if (count == null) {<a name="line.2861"></a>
-<span class="sourceLineNo">2862</span>            kvCount.put(qual, 1);<a name="line.2862"></a>
-<span class="sourceLineNo">2863</span>          } else {<a name="line.2863"></a>
-<span class="sourceLineNo">2864</span>            kvCount.put(qual, count + 1);<a name="line.2864"></a>
-<span class="sourceLineNo">2865</span>          }<a name="line.2865"></a>
-<span class="sourceLineNo">2866</span>          count = kvCount.get(qual);<a name="line.2866"></a>
-<span class="sourceLineNo">2867</span><a name="line.2867"></a>
-<span class="sourceLineNo">2868</span>          Get get = new Get(CellUtil.cloneRow(cell));<a name="line.2868"></a>
-<span class="sourceLineNo">2869</span>          get.setMaxVersions(count);<a name="line.2869"></a>
-<span class="sourceLineNo">2870</span>          get.addColumn(family, qual);<a name="line.2870"></a>
-<span class="sourceLineNo">2871</span>          if (coprocessorHost != null) {<a name="line.2871"></a>
-<span class="sourceLineNo">2872</span>            if (!coprocessorHost.prePrepareTimeStampForDeleteVersion(mutation, cell,<a name="line.2872"></a>
-<span class="sourceLineNo">2873</span>                byteNow, get)) {<a name="line.2873"></a>
-<span class="sourceLineNo">2874</span>              updateDeleteLatestVersionTimeStamp(cell, get, count, byteNow);<a name="line.2874"></a>
-<span class="sourceLineNo">2875</span>            }<a name="line.2875"></a>
-<span class="sourceLineNo">2876</span>          } else {<a name="line.2876"></a>
-<span class="sourceLineNo">2877</span>            updateDeleteLatestVersionTimeStamp(cell, get, count, byteNow);<a name="line.2877"></a>
-<span class="sourceLineNo">2878</span>          }<a name="line.2878"></a>
-<span class="sourceLineNo">2879</span>        } else {<a name="line.2879"></a>
-<span class="sourceLineNo">2880</span>          PrivateCellUtil.updateLatestStamp(cell, byteNow, 0);<a name="line.2880"></a>
-<span class="sourceLineNo">2881</span>        }<a name="line.2881"></a>
-<span class="sourceLineNo">2882</span>      }<a name="line.2882"></a>
-<span class="sourceLineNo">2883</span>    }<a name="line.2883"></a>
-<span class="sourceLineNo">2884</span>  }<a name="line.2884"></a>
-<span class="sourceLineNo">2885</span><a name="line.2885"></a>
-<span class="sourceLineNo">2886</span>  void updateDeleteLatestVersionTimeStamp(Cell cell, Get get, int count, byte[] byteNow)<a name="line.2886"></a>
-<span class="sourceLineNo">2887</span>      throws IOException {<a name="line.2887"></a>
-<span class="sourceLineNo">2888</span>    List&lt;Cell&gt; result = get(get, false);<a name="line.2888"></a>
-<span class="sourceLineNo">2889</span><a name="line.2889"></a>
-<span class="sourceLineNo">2890</span>    if (result.size() &lt; count) {<a name="line.2890"></a>
-<span class="sourceLineNo">2891</span>      // Nothing to delete<a name="line.2891"></a>
-<span class="sourceLineNo">2892</span>      PrivateCellUtil.updateLatestStamp(cell, byteNow, 0);<a name="line.2892"></a>
-<span class="sourceLineNo">2893</span>      return;<a name="line.2893"></a>
-<span class="sourceLineNo">2894</span>    }<a name="line.2894"></a>
-<span class="sourceLineNo">2895</span>    if (result.size() &gt; count) {<a name="line.2895"></a>
-<span class="sourceLineNo">2896</span>      throw new RuntimeException("Unexpected size: " + result.size());<a name="line.2896"></a>
-<span class="sourceLineNo">2897</span>    }<a name="line.2897"></a>
-<span class="sourceLineNo">2898</span>    Cell getCell = result.get(count - 1);<a name="line.2898"></a>
-<span class="sourceLineNo">2899</span>    PrivateCellUtil.setTimestamp(cell, getCell.getTimestamp());<a name="line.2899"></a>
-<span class="sourceLineNo">2900</span>  }<a name="line.2900"></a>
-<span class="sourceLineNo">2901</span><a name="line.2901"></a>
-<span class="sourceLineNo">2902</span>  @Override<a name="line.2902"></a>
-<span class="sourceLineNo">2903</span>  public void put(Put put) throws IOException {<a name="line.2903"></a>
-<span class="sourceLineNo">2904</span>    checkReadOnly();<a name="line.2904"></a>
-<span class="sourceLineNo">2905</span><a name="line.2905"></a>
-<span class="sourceLineNo">2906</span>    // Do a rough check that we have resources to accept a write.  The check is<a name="line.2906"></a>
-<span class="sourceLineNo">2907</span>    // 'rough' in that between the resource check and the call to obtain a<a name="line.2907"></a>
-<span class="sourceLineNo">2908</span>    // read lock, resources may run out.  For now, the thought is that this<a name="line.2908"></a>
-<span class="sourceLineNo">2909</span>    // will be extremely rare; we'll deal with it when it happens.<a name="line.2909"></a>
-<span class="sourceLineNo">2910</span>    checkResources();<a name="line.2910"></a>
-<span class="sourceLineNo">2911</span>    startRegionOperation(Operation.PUT);<a name="line.2911"></a>
-<span class="sourceLineNo">2912</span>    try {<a name="line.2912"></a>
-<span class="sourceLineNo">2913</span>      // All edits for the given row (across all column families) must happen atomically.<a name="line.2913"></a>
-<span class="sourceLineNo">2914</span>      doBatchMutate(put);<a name="line.2914"></a>
-<span class="sourceLineNo">2915</span>    } finally {<a name="line.2915"></a>
-<span class="sourceLineNo">2916</span>      closeRegionOperation(Operation.PUT);<a name="line.2916"></a>
-<span class="sourceLineNo">2917</span>    }<a name="line.2917"></a>
-<span class="sourceLineNo">2918</span>  }<a name="line.2918"></a>
-<span class="sourceLineNo">2919</span><a name="line.2919"></a>
-<span class="sourceLineNo">2920</span>  /**<a name="line.2920"></a>
-<span class="sourceLineNo">2921</span>   * Class that tracks the progress of a batch operations, accumulating status codes and tracking<a name="line.2921"></a>
-<span class="sourceLineNo">2922</span>   * the index at which processing is proceeding. These batch operations may get split into<a name="line.2922"></a>
-<span class="sourceLineNo">2923</span>   * mini-batches for processing.<a name="line.2923"></a>
-<span class="sourceLineNo">2924</span>   */<a name="line.2924"></a>
-<span class="sourceLineNo">2925</span>  private abstract static class BatchOperation&lt;T&gt; {<a name="line.2925"></a>
-<span class="sourceLineNo">2926</span>    protected final T[] operations;<a name="line.2926"></a>
-<span class="sourceLineNo">2927</span>    protected final OperationStatus[] retCodeDetails;<a name="line.2927"></a>
-<span class="sourceLineNo">2928</span>    protected final WALEdit[] walEditsFromCoprocessors;<a name="line.2928"></a>
-<span class="sourceLineNo">2929</span>    // reference family cell maps directly so coprocessors can mutate them if desired<a name="line.2929"></a>
-<span class="sourceLineNo">2930</span>    protected final Map&lt;byte[], List&lt;Cell&gt;&gt;[] familyCellMaps;<a name="line.2930"></a>
-<span class="sourceLineNo">2931</span><a name="line.2931"></a>
-<span class="sourceLineNo">2932</span>    protected final HRegion region;<a name="line.2932"></a>
-<span class="sourceLineNo">2933</span>    protected int nextIndexToProcess = 0;<a name="line.2933"></a>
-<span class="sourceLineNo">2934</span>    protected final ObservedExceptionsInBatch observedExceptions;<a name="line.2934"></a>
-<span class="sourceLineNo">2935</span>    //Durability of the batch (highest durability of all operations)<a name="line.2935"></a>
-<span class="sourceLineNo">2936</span>    protected Durability durability;<a name="line.2936"></a>
-<span class="sourceLineNo">2937</span>    protected boolean atomic = false;<a name="line.2937"></a>
-<span class="sourceLineNo">2938</span><a name="line.2938"></a>
-<span class="sourceLineNo">2939</span>    public BatchOperation(final HRegion region, T[] operations) {<a name="line.2939"></a>
-<span class="sourceLineNo">2940</span>      this.operations = operations;<a name="line.2940"></a>
-<span class="sourceLineNo">2941</span>      this.retCodeDetails = new OperationStatus[operations.length];<a name="line.2941"></a>
-<span class="sourceLineNo">2942</span>      Arrays.fill(this.retCodeDetails, OperationStatus.NOT_RUN);<a name="line.2942"></a>
-<span class="sourceLineNo">2943</span>      this.walEditsFromCoprocessors = new WALEdit[operations.length];<a name="line.2943"></a>
-<span class="sourceLineNo">2944</span>      familyCellMaps = new Map[operations.length];<a name="line.2944"></a>
-<span class="sourceLineNo">2945</span><a name="line.2945"></a>
-<span class="sourceLineNo">2946</span>      this.region = region;<a name="line.2946"></a>
-<span class="sourceLineNo">2947</span>      observedExceptions = new ObservedExceptionsInBatch();<a name="line.2947"></a>
-<span class="sourceLineNo">2948</span>      durability = Durability.USE_DEFAULT;<a name="line.2948"></a>
-<span class="sourceLineNo">2949</span>    }<a name="line.2949"></a>
-<span class="sourceLineNo">2950</span><a name="line.2950"></a>
-<span class="sourceLineNo">2951</span>    /**<a name="line.2951"></a>
-<span class="sourceLineNo">2952</span>     * Visitor interface for batch operations<a name="line.2952"></a>
-<span class="sourceLineNo">2953</span>     */<a name="line.2953"></a>
-<span class="sourceLineNo">2954</span>    @FunctionalInterface<a name="line.2954"></a>
-<span class="sourceLineNo">2955</span>    public interface Visitor {<a name="line.2955"></a>
-<span class="sourceLineNo">2956</span>      /**<a name="line.2956"></a>
-<span class="sourceLineNo">2957</span>       * @param index operation index<a name="line.2957"></a>
-<span class="sourceLineNo">2958</span>       * @return If true continue visiting remaining entries, break otherwise<a name="line.2958"></a>
-<span class="sourceLineNo">2959</span>       */<a name="line.2959"></a>
-<span class="sourceLineNo">2960</span>      boolean visit(int index) throws IOException;<a name="line.2960"></a>
-<span class="sourceLineNo">2961</span>    }<a name="line.2961"></a>
-<span class="sourceLineNo">2962</span><a name="line.2962"></a>
-<span class="sourceLineNo">2963</span>    /**<a name="line.2963"></a>
-<span class="sourceLineNo">2964</span>     * Helper method for visiting pending/ all batch operations<a name="line.2964"></a>
-<span class="sourceLineNo">2965</span>     */<a name="line.2965"></a>
-<span class="sourceLineNo">2966</span>    public void visitBatchOperations(boolean pendingOnly, int lastIndexExclusive, Visitor visitor)<a name="line.2966"></a>
-<span class="sourceLineNo">2967</span>        throws IOException {<a name="line.2967"></a>
-<span class="sourceLineNo">2968</span>      assert lastIndexExclusive &lt;= this.size();<a name="line.2968"></a>
-<span class="sourceLineNo">2969</span>      for (int i = nextIndexToProcess; i &lt; lastIndexExclusive; i++) {<a name="line.2969"></a>
-<span class="sourceLineNo">2970</span>        if (!pendingOnly || isOperationPending(i)) {<a name="line.2970"></a>
-<span class="sourceLineNo">2971</span>          if (!visitor.visit(i)) {<a name="line.2971"></a>
-<span class="sourceLineNo">2972</span>            break;<a name="line.2972"></a>
-<span class="sourceLineNo">2973</span>          }<a name="line.2973"></a>
-<span class="sourceLineNo">2974</span>        }<a name="line.2974"></a>
-<span class="sourceLineNo">2975</span>      }<a name="line.2975"></a>
-<span class="sourceLineNo">2976</span>    }<a name="line.2976"></a>
-<span class="sourceLineNo">2977</span><a name="line.2977"></a>
-<span class="sourceLineNo">2978</span>    public abstract Mutation getMutation(int index);<a name="line.2978"></a>
-<span class="sourceLineNo">2979</span>    public abstract long getNonceGroup(int index);<a name="line.2979"></a>
-<span class="sourceLineNo">2980</span>    public abstract long getNonce(int index);<a name="line.2980"></a>
-<span class="sourceLineNo">2981</span>    /** This method is potentially expensive and useful mostly for non-replay CP path. */<a name="line.2981"></a>
-<span class="sourceLineNo">2982</span>    public abstract Mutation[] getMutationsForCoprocs();<a name="line.2982"></a>
-<span class="sourceLineNo">2983</span>    public abstract boolean isInReplay();<a name="line.2983"></a>
-<span class="sourceLineNo">2984</span>    public abstract long getOrigLogSeqNum();<a name="line.2984"></a>
-<span class="sourceLineNo">2985</span>    public abstract void startRegionOperation() throws IOException;<a name="line.2985"></a>
-<span class="sourceLineNo">2986</span>    public abstract void closeRegionOperation() throws IOException;<a name="line.2986"></a>
-<span class="sourceLineNo">2987</span><a name="line.2987"></a>
-<span class="sourceLineNo">2988</span>    /**<a name="line.2988"></a>
-<span class="sourceLineNo">2989</span>     * Validates each mutation and prepares a batch for write. If necessary (non-replay case), runs<a name="line.2989"></a>
-<span class="sourceLineNo">2990</span>     * CP prePut()/ preDelete() hooks for all mutations in a batch. This is intended to operate on<a name="line.2990"></a>
-<span class="sourceLineNo">2991</span>     * entire batch and will be called from outside of class to check and prepare batch. This can<a name="line.2991"></a>
-<span class="sourceLineNo">2992</span>     * be implemented by calling helper method {@link #checkAndPrepareMutation(int, long)} in a<a name="line.2992"></a>
-<span class="sourceLineNo">2993</span>     * 'for' loop over mutations.<a name="line.2993"></a>
-<span class="sourceLineNo">2994</span>     */<a name="line.2994"></a>
-<span class="sourceLineNo">2995</span>    public abstract void checkAndPrepare() throws IOException;<a name="line.2995"></a>
-<span class="sourceLineNo">2996</span><a name="line.2996"></a>
-<span class="sourceLineNo">2997</span>    /**<a name="line.2997"></a>
-<span class="sourceLineNo">2998</span>     * Implement any Put request specific check and prepare logic here. Please refer to<a name="line.2998"></a>
-<span class="sourceLineNo">2999</span>     * {@link #checkAndPrepareMutation(Mutation, long)} for how its used.<a name="line.2999"></a>
-<span class="sourceLineNo">3000</span>     */<a name="line.3000"></a>
-<span class="sourceLineNo">3001</span>    protected abstract void checkAndPreparePut(final Put p) throws IOException;<a name="line.3001"></a>
-<span class="sourceLineNo">3002</span><a name="line.3002"></a>
-<span class="sourceLineNo">3003</span>    /**<a name="line.3003"></a>
-<span class="sourceLineNo">3004</span>     *  If necessary, calls preBatchMutate() CP hook for a mini-batch and updates metrics, cell<a name="line.3004"></a>
-<span class="sourceLineNo">3005</span>     *  count, tags and timestamp for all cells of all operations in a mini-batch.<a name="line.3005"></a>
-<span class="sourceLineNo">3006</span>     */<a name="line.3006"></a>
-<span class="sourceLineNo">3007</span>    public abstract void prepareMiniBatchOperations(MiniBatchOperationInProgress&lt;Mutation&gt;<a name="line.3007"></a>
-<span class="sourceLineNo">3008</span>        miniBatchOp, long timestamp, final List&lt;RowLock&gt; acquiredRowLocks) throws IOException;<a name="line.3008"></a>
-<span class="sourceLineNo">3009</span><a name="line.3009"></a>
-<span class="sourceLineNo">3010</span>    /**<a name="line.3010"></a>
-<span class="sourceLineNo">3011</span>     * Write mini-batch operations to MemStore<a name="line.3011"></a>
-<span class="sourceLineNo">3012</span>     */<a name="line.3012"></a>
-<span class="sourceLineNo">3013</span>    public abstract WriteEntry writeMiniBatchOperationsToMemStore(<a name="line.3013"></a>
-<span class="sourceLineNo">3014</span>        final MiniBatchOperationInProgress&lt;Mutation&gt; miniBatchOp, final WriteEntry writeEntry)<a name="line.3014"></a>
-<span class="sourceLineNo">3015</span>        throws IOException;<a name="line.3015"></a>
-<span class="sourceLineNo">3016</span><a name="line.3016"></a>
-<span class="sourceLineNo">3017</span>    protected void writeMiniBatchOperationsToMemStore(<a name="line.3017"></a>
-<span class="sourceLineNo">3018</span>        final MiniBatchOperationInProgress&lt;Mutation&gt; miniBatchOp, final long writeNumber)<a name="line.3018"></a>
-<span class="sourceLineNo">3019</span>        throws IOException {<a name="line.3019"></a>
-<span class="sourceLineNo">3020</span>      MemStoreSizing memStoreAccounting = new MemStoreSizing();<a name="line.3020"></a>
-<span class="sourceLineNo">3021</span>      visitBatchOperations(true, miniBatchOp.getLastIndexExclusive(), (int index) -&gt; {<a name="line.3021"></a>
-<span class="sourceLineNo">3022</span>        // We need to update the sequence id for following reasons.<a name="line.3022"></a>
-<span class="sourceLineNo">3023</span>        // 1) If the op is in replay mode, FSWALEntry#stampRegionSequenceId won't stamp sequence id.<a name="line.3023"></a>
-<span class="sourceLineNo">3024</span>        // 2) If no WAL, FSWALEntry won't be used<a name="line.3024"></a>
-<span class="sourceLineNo">3025</span>        // we use durability of the original mutation for the mutation passed by CP.<a name="line.3025"></a>
-<span class="sourceLineNo">3026</span>        if (isInReplay() || getMutation(index).getDurability() == Durability.SKIP_WAL) {<a name="line.3026"></a>
-<span class="sourceLineNo">3027</span>          region.updateSequenceId(familyCellMaps[index].values(), writeNumber);<a name="line.3027"></a>
-<span class="sourceLineNo">3028</span>        }<a name="line.3028"></a>
-<span class="sourceLineNo">3029</span>        applyFamilyMapToMemStore(familyCellMaps[index], memStoreAccounting);<a name="line.3029"></a>
-<span class="sourceLineNo">3030</span>        return true;<a name="line.3030"></a>
-<span class="sourceLineNo">3031</span>      });<a name="line.3031"></a>
-<span class="sourceLineNo">3032</span>      // update memStore size<a name="line.3032"></a>
-<span class="sourceLineNo">3033</span>      region.addAndGetMemStoreSize(memStoreAccounting);<a name="line.3033"></a>
-<span class="sourceLineNo">3034</span>    }<a name="line.3034"></a>
-<span class="sourceLineNo">3035</span><a name="line.3035"></a>
-<span class="sourceLineNo">3036</span>    public boolean isDone() {<a name="line.3036"></a>
-<span class="sourceLineNo">3037</span>      return nextIndexToProcess == operations.length;<a name="line.3037"></a>
-<span class="sourceLineNo">3038</span>    }<a name="line.3038"></a>
-<span class="sourceLineNo">3039</span><a name="line.3039"></a>
-<span class="sourceLineNo">3040</span>    public int size() {<a name="line.3040"></a>
-<span class="sourceLineNo">3041</span>      return operations.length;<a name="line.3041"></a>
-<span class="sourceLineNo">3042</span>    }<a name="line.3042"></a>
-<span class="sourceLineNo">3043</span><a name="line.3043"></a>
-<span class="sourceLineNo">3044</span>    public boolean isOperationPending(int index) {<a name="line.3044"></a>
-<span class="sourceLineNo">3045</span>      return retCodeDetails[index].getOperationStatusCode() == OperationStatusCode.NOT_RUN;<a name="line.3045"></a>
-<span class="sourceLineNo">3046</span>    }<a name="line.3046"></a>
-<span class="sourceLineNo">3047</span><a name="line.3047"></a>
-<span class="sourceLineNo">3048</span>    public List&lt;UUID&gt; getClusterIds() {<a name="line.3048"></a>
-<span class="sourceLineNo">3049</span>      assert size() != 0;<a name="line.3049"></a>
-<span class="sourceLineNo">3050</span>      return getMutation(0).getClusterIds();<a name="line.3050"></a>
-<span class="sourceLineNo">3051</span>    }<a name="line.3051"></a>
-<span class="sourceLineNo">3052</span><a name="line.3052"></a>
-<span class="sourceLineNo">3053</span>    boolean isAtomic() {<a name="line.3053"></a>
-<span class="sourceLineNo">3054</span>      return atomic;<a name="line.3054"></a>
-<span class="sourceLineNo">3055</span>    }<a name="line.3055"></a>
-<span class="sourceLineNo">3056</span><a name="line.3056"></a>
-<span class="sourceLineNo">3057</span>    /**<a name="line.3057"></a>
-<span class="sourceLineNo">3058</span>     * Helper method that checks and prepares only one mutation. This can be used to implement<a name="line.3058"></a>
-<span class="sourceLineNo">3059</span>     * {@link #checkAndPrepare()} for entire Batch.<a name="line.3059"></a>
-<span class="sourceLineNo">3060</span>     * NOTE: As CP prePut()/ preDelete() hooks may modify mutations, this method should be called<a name="line.3060"></a>
-<span class="sourceLineNo">3061</span>     * after prePut()/ preDelete() CP hooks are run for the mutation<a name="line.3061"></a>
-<span class="sourceLineNo">3062</span>     */<a name="line.3062"></a>
-<span class="sourceLineNo">3063</span>    protected void checkAndPrepareMutation(Mutation mutation, final long timestamp)<a name="line.3063"></a>
-<span class="sourceLineNo">3064</span>        throws IOException {<a name="line.3064"></a>
-<span class="sourceLineNo">3065</span>      region.checkRow(mutation.getRow(), "batchMutate");<a name="line.3065"></a>
-<span class="sourceLineNo">3066</span>      if (mutation instanceof Put) {<a name="line.3066"></a>
-<span class="sourceLineNo">3067</span>        // Check the families in the put. If bad, skip this one.<a name="line.3067"></a>
-<span class="sourceLineNo">3068</span>        checkAndPreparePut((Put) mutation);<a name="line.3068"></a>
-<span class="sourceLineNo">3069</span>        region.checkTimestamps(mutation.getFamilyCellMap(), timestamp);<a name="line.3069"></a>
-<span class="sourceLineNo">3070</span>      } else {<a name="line.3070"></a>
-<span class="sourceLineNo">3071</span>        region.prepareDelete((Delete) mutation);<a name="line.3071"></a>
-<span class="sourceLineNo">3072</span>      }<a name="line.3072"></a>
-<span class="sourceLineNo">3073</span>    }<a name="line.3073"></a>
-<span class="sourceLineNo">3074</span><a name="line.3074"></a>
-<span class="sourceLineNo">3075</span>    protected void checkAndPrepareMutation(int index, long timestamp) throws IOException {<a name="line.3075"></a>
-<span class="sourceLineNo">3076</span>      Mutation mutation = getMutation(index);<a name="line.3076"></a>
-<span class="sourceLineNo">3077</span>      try {<a name="line.3077"></a>
-<span class="sourceLineNo">3078</span>        this.checkAndPrepareMutation(mutation, timestamp);<a name="line.3078"></a>
-<span class="sourceLineNo">3079</span><a name="line.3079"></a>
-<span class="sourceLineNo">3080</span>        // store the family map reference to allow for mutations<a name="line.3080"></a>
-<span class="sourceLineNo">3081</span>        familyCellMaps[index] = mutation.getFamilyCellMap();<a name="line.3081"></a>
-<span class="sourceLineNo">3082</span>        // store durability for the batch (highest durability of all operations in the batch)<a name="line.3082"></a>
-<span class="sourceLineNo">3083</span>        Durability tmpDur = region.getEffectiveDurability(mutation.getDurability());<a name="line.3083"></a>
-<span class="sourceLineNo">3084</span>        if (tmpDur.ordinal() &gt; durability.ordinal()) {<a name="line.3084"></a>
-<span class="sourceLineNo">3085</span>          durability = tmpDur;<a name="line.3085"></a>
-<span class="sourceLineNo">3086</span>        }<a name="line.3086"></a>
-<span class="sourceLineNo">3087</span>      } catch (NoSuchColumnFamilyException nscfe) {<a name="line.3087"></a>
-<span class="sourceLineNo">3088</span>        final String msg = "No such column family in batch mutation. ";<a name="line.3088"></a>
-<span class="sourceLineNo">3089</span>        if (observedExceptions.hasSeenNoSuchFamily()) {<a name="line.3089"></a>
-<span class="sourceLineNo">3090</span>          LOG.warn(msg + nscfe.getMessage());<a name="line.3090"></a>
-<span class="sourceLineNo">3091</span>        } else {<a name="line.3091"></a>
-<span class="sourceLineNo">3092</span>          LOG.warn(msg, nscfe);<a name="line.3092"></a>
-<span class="sourceLineNo">3093</span>          observedExceptions.sawNoSuchFamily();<a name="line.3093"></a>
-<span class="sourceLineNo">3094</span>        }<a name="line.3094"></a>
-<span class="sourceLineNo">3095</span>        retCodeDetails[index] = new OperationStatus(<a name="line.3095"></a>
-<span class="sourceLineNo">3096</span>            OperationStatusCode.BAD_FAMILY, nscfe.getMessage());<a name="line.3096"></a>
-<span class="sourceLineNo">3097</span>        if (isAtomic()) { // fail, atomic means all or none<a name="line.3097"></a>
-<span class="sourceLineNo">3098</span>          throw nscfe;<a name="line.3098"></a>
-<span class="sourceLineNo">3099</span>        }<a name="line.3099"></a>
-<span class="sourceLineNo">3100</span>      } catch (FailedSanityCheckException fsce) {<a name="line.3100"></a>
-<span class="sourceLineNo">3101</span>        final String msg = "Batch Mutation did not pass sanity check. ";<a name="line.3101"></a>
-<span class="sourceLineNo">3102</span>        if (observedExceptions.hasSeenFailedSanityCheck()) {<a name="line.3102"></a>
-<span class="sourceLineNo">3103</span>          LOG.warn(msg + fsce.getMessage());<a name="line.3103"></a>
-<span class="sourceLineNo">3104</span>        } else {<a name="line.3104"></a>
-<span class="sourceLineNo">3105</span>          LOG.warn(msg, fsce);<a name="line.3105"></a>
-<span class="sourceLineNo">3106</span>          observedExceptions.sawFailedSanityCheck();<a name="line.3106"></a>
-<span class="sourceLineNo">3107</span>        }<a name="line.3107"></a>
-<span class="sourceLineNo">3108</span>        retCodeDetails[index] = new OperationStatus(<a name="line.3108"></a>
-<span class="sourceLineNo">3109</span>            OperationStatusCode.SANITY_CHECK_FAILURE, fsce.getMessage());<a name="line.3109"></a>
-<span class="sourceLineNo">3110</span>        if (isAtomic()) {<a name="line.3110"></a>
-<span class="sourceLineNo">3111</span>          throw fsce;<a name="line.3111"></a>
-<span class="sourceLineNo">3112</span>        }<a name="line.3112"></a>
-<span class="sourceLineNo">3113</span>      } catch (WrongRegionException we) {<a name="line.3113"></a>
-<span class="sourceLineNo">3114</span>        final String msg = "Batch mutation had a row that does not belong to this region. ";<a name="line.3114"></a>
-<span class="sourceLineNo">3115</span>        if (observedExceptions.hasSeenWrongRegion()) {<a name="line.3115"></a>
-<span class="sourceLineNo">3116</span>          LOG.warn(msg + we.getMessage());<a name="line.3116"></a>
-<span class="sourceLineNo">3117</span>        } else {<a name="line.3117"></a>
-<span class="sourceLineNo">3118</span>          LOG.warn(msg, we);<a name="line.3118"></a>
-<span class="sourceLineNo">3119</span>          observedExceptions.sawWrongRegion();<a name="line.3119"></a>
-<span class="sourceLineNo">3120</span>        }<a name="line.3120"></a>
-<span class="sourceLineNo">3121</span>        retCodeDetails[index] = new OperationStatus(<a name="line.3121"></a>
-<span class="sourceLineNo">3122</span>            OperationStatusCode.SANITY_CHECK_FAILURE, we.getMessage());<a name="line.3122"></a>
-<span class="sourceLineNo">3123</span>        if (isAtomic()) {<a name="line.3123"></a>
-<span class="sourceLineNo">3124</span>          throw we;<a name="line.3124"></a>
-<span class="sourceLineNo">3125</span>        }<a name="line.3125"></a>
-<span class="sourceLineNo">3126</span>      }<a name="line.3126"></a>
-<span class="sourceLineNo">3127</span>    }<a name="line.3127"></a>
-<span class="sourceLineNo">3128</span><a name="line.3128"></a>
-<span class="sourceLineNo">3129</span>    /**<a name="line.3129"></a>
-<span class="sourceLineNo">3130</span>     * Creates Mini-batch of all operations [nextIndexToProcess, lastIndexExclusive) for which<a name="line.3130"></a>
-<span class="sourceLineNo">3131</span>     * a row lock can be acquired. All mutations with locked rows are considered to be<a name="line.3131"></a>
-<span class="sourceLineNo">3132</span>     * In-progress operations and hence the name {@link MiniBatchOperationInProgress}. Mini batch<a name="line.3132"></a>
-<span class="sourceLineNo">3133</span>     * is window over {@link BatchOperation} and contains contiguous pending operations.<a name="line.3133"></a>
-<span class="sourceLineNo">3134</span>     *<a name="line.3134"></a>
-<span class="sourceLineNo">3135</span>     * @param acquiredRowLocks keeps track of rowLocks acquired.<a name="line.3135"></a>
-<span class="sourceLineNo">3136</span>     */<a name="line.3136"></a>
-<span class="sourceLineNo">3137</span>    public MiniBatchOperationInProgress&lt;Mutation&gt; lockRowsAndBuildMiniBatch(<a name="line.3137"></a>
-<span class="sourceLineNo">3138</span>        List&lt;RowLock&gt; acquiredRowLocks) throws IOException {<a name="line.3138"></a>
-<span class="sourceLineNo">3139</span>      int readyToWriteCount = 0;<a name="line.3139"></a>
-<span class="sourceLineNo">3140</span>      int lastIndexExclusive = 0;<a name="line.3140"></a>
-<span class="sourceLineNo">3141</span>      for (; lastIndexExclusive &lt; size(); lastIndexExclusive++) {<a name="line.3141"></a>
-<span class="sourceLineNo">3142</span>        if (!isOperationPending(lastIndexExclusive)) {<a name="line.3142"></a>
-<span class="sourceLineNo">3143</span>          continue;<a name="line.3143"></a>
-<span class="sourceLineNo">3144</span>        }<a name="line.3144"></a>
-<span class="sourceLineNo">3145</span>        Mutation mutation = getMutation(lastIndexExclusive);<a name="line.3145"></a>
-<span class="sourceLineNo">3146</span>        // If we haven't got any rows in our batch, we should block to get the next one.<a name="line.3146"></a>
-<span class="sourceLineNo">3147</span>        RowLock rowLock = null;<a name="line.3147"></a>
-<span class="sourceLineNo">3148</span>        try {<a name="line.3148"></a>
-<span class="sourceLineNo">3149</span>          // if atomic then get exclusive lock, else shared lock<a name="line.3149"></a>
-<span class="sourceLineNo">3150</span>          rowLock = region.getRowLockInternal(mutation.getRow(), !isAtomic());<a name="line.3150"></a>
-<span class="sourceLineNo">3151</span>        } catch (TimeoutIOException e) {<a name="line.3151"></a>
-<span class="sourceLineNo">3152</span>          // We will retry when other exceptions, but we should stop if we timeout .<a name="line.3152"></a>
-<span class="sourceLineNo">3153</span>          throw e;<a name="line.3153"></a>
-<span class="sourceLineNo">3154</span>        } catch (IOException ioe) {<a name="line.3154"></a>
-<span class="sourceLineNo">3155</span>          LOG.warn("Failed getting lock, row=" + Bytes.toStringBinary(mutation.getRow()), ioe);<a name="line.3155"></a>
-<span class="sourceLineNo">3156</span>          if (isAtomic()) { // fail, atomic means all or none<a name="line.3156"></a>
-<span class="sourceLineNo">3157</span>            throw ioe;<a name="line.3157"></a>
-<span class="sourceLineNo">3158</span>          }<a name="line.3158"></a>
-<span class="sourceLineNo">3159</span>        }<a name="line.3159"></a>
-<span class="sourceLineNo">3160</span>        if (rowLock == null) {<a name="line.3160"></a>
-<span class="sourceLineNo">3161</span>          // We failed to grab another lock<a name="line.3161"></a>
-<span class="sourceLineNo">3162</span>          if (isAtomic()) {<a name="line.3162"></a>
-<span class="sourceLineNo">3163</span>            throw new IOException("Can't apply all operations atomically!");<a name="line.3163"></a>
-<span class="sourceLineNo">3164</span>          }<a name="line.3164"></a>
-<span class="sourceLineNo">3165</span>          break; // Stop acquiring more rows for this batch<a name="line.3165"></a>
-<span class="sourceLineNo">3166</span>        } else {<a name="line.3166"></a>
-<span class="sourceLineNo">3167</span>          acquiredRowLocks.add(rowLock);<a name="line.3167"></a>
-<span class="sourceLineNo">3168</span>        }<a name="line.3168"></a>
-<span class="sourceLineNo">3169</span>        readyToWriteCount++;<a name="line.3169"></a>
-<span class="sourceLineNo">3170</span>      }<a name="line.3170"></a>
-<span class="sourceLineNo">3171</span>      return createMiniBatch(lastIndexExclusive, readyToWriteCount);<a name="line.3171"></a>
-<span class="sourceLineNo">3172</span>    }<a name="line.3172"></a>
-<span class="sourceLineNo">3173</span><a name="line.3173"></a>
-<span class="sourceLineNo">3174</span>    protected MiniBatchOperationInProgress&lt;Mutation&gt; createMiniBatch(final int lastIndexExclusive,<a name="line.3174"></a>
-<span class="sourceLineNo">3175</span>        final int readyToWriteCount) {<a name="line.3175"></a>
-<span class="sourceLineNo">3176</span>      return new MiniBatchOperationInProgress&lt;&gt;(getMutationsForCoprocs(), retCodeDetails,<a name="line.3176"></a>
-<span class="sourceLineNo">3177</span>          walEditsFromCoprocessors, nextIndexToProcess, lastIndexExclusive, readyToWriteCount);<a name="line.3177"></a>
-<span class="sourceLineNo">3178</span>    }<a name="line.3178"></a>
-<span class="sourceLineNo">3179</span><a name="line.3179"></a>
-<span class="sourceLineNo">3180</span>    /**<a name="line.3180"></a>
-<span class="sourceLineNo">3181</span>     * Builds separate WALEdit per nonce by applying input mutations. If WALEdits from CP are<a name="line.3181"></a>
-<span class="sourceLineNo">3182</span>     * present, they are merged to result WALEdit.<a name="line.3182"></a>
-<span class="sourceLineNo">3183</span>     */<a name="line.3183"></a>
-<span class="sourceLineNo">3184</span>    public List&lt;Pair&lt;NonceKey, WALEdit&gt;&gt; buildWALEdits(<a name="line.3184"></a>
-<span class="sourceLineNo">3185</span>        final MiniBatchOperationInProgress&lt;Mutation&gt; miniBatchOp) throws IOException {<a name="line.3185"></a>
-<span class="sourceLineNo">3186</span>      List&lt;Pair&lt;NonceKey, WALEdit&gt;&gt; walEdits = new ArrayList&lt;&gt;();<a name="line.3186"></a>
-<span class="sourceLineNo">3187</span><a name="line.3187"></a>
-<span class="sourceLineNo">3188</span>      visitBatchOperations(true, nextIndexToProcess + miniBatchOp.size(), new Visitor() {<a name="line.3188"></a>
-<span class="sourceLineNo">3189</span>        private Pair&lt;NonceKey, WALEdit&gt; curWALEditForNonce;<a name="line.3189"></a>
-<span class="sourceLineNo">3190</span>        @Override<a name="line.3190"></a>
-<span class="sourceLineNo">3191</span>        public boolean visit(int index) throws IOException {<a name="line.3191"></a>
-<span class="sourceLineNo">3192</span>          Mutation m = getMutation(index);<a name="line.3192"></a>
-<span class="sourceLineNo">3193</span>          // we use durability of the original mutation for the mutation passed by CP.<a name="line.3193"></a>
-<span class="sourceLineNo">3194</span>          if (region.getEffectiveDurability(m.getDurability()) == Durability.SKIP_WAL) {<a name="line.3194"></a>
-<span class="sourceLineNo">3195</span>            region.recordMutationWithoutWal(m.getFamilyCellMap());<a name="line.3195"></a>
-<span class="sourceLineNo">3196</span>            return true;<a name="line.3196"></a>
-<span class="sourceLineNo">3197</span>          }<a name="line.3197"></a>
-<span class="sourceLineNo">3198</span><a name="line.3198"></a>
-<span class="sourceLineNo">3199</span>          // the batch may contain multiple nonce keys (replay case). If so, write WALEdit for each.<a name="line.3199"></a>
-<span class="sourceLineNo">3200</span>          // Given how nonce keys are originally written, these should be contiguous.<a name="line.3200"></a>
-<span class="sourceLineNo">3201</span>          // They don't have to be, it will still work, just write more WALEdits than needed.<a name="line.3201"></a>
-<span class="sourceLineNo">3202</span>          long nonceGroup = getNonceGroup(index);<a name="line.3202"></a>
-<span class="sourceLineNo">3203</span>          long nonce = getNonce(index);<a name="line.3203"></a>
-<span class="sourceLineNo">3204</span>          if (curWALEditForNonce == null ||<a name="line.3204"></a>
-<span class="sourceLineNo">3205</span>              curWALEditForNonce.getFirst().getNonceGroup() != nonceGroup ||<a name="line.3205"></a>
-<span class="sourceLineNo">3206</span>              curWALEditForNonce.getFirst().getNonce() != nonce) {<a name="line.3206"></a>
-<span class="sourceLineNo">3207</span>            curWALEditForNonce = new Pair&lt;&gt;(new NonceKey(nonceGroup, nonce),<a name="line.3207"></a>
-<span class="sourceLineNo">3208</span>                new WALEdit(miniBatchOp.getCellCount(), isInReplay()));<a name="line.3208"></a>
-<span class="sourceLineNo">3209</span>            walEdits.add(curWALEditForNonce);<a name="line.3209"></a>
-<span class="sourceLineNo">3210</span>          }<a name="line.3210"></a>
-<span class="sourceLineNo">3211</span>          WALEdit walEdit = curWALEditForNonce.getSecond();<a name="line.3211"></a>
-<span class="sourceLineNo">3212</span><a name="line.3212"></a>
-<span class="sourceLineNo">3213</span>          // Add WAL edits by CP<a name="line.3213"></a>
-<span class="sourceLineNo">3214</span>          WALEdit fromCP = walEditsFromCoprocessors[index];<a name="line.3214"></a>
-<span class="sourceLineNo">3215</span>          if (fromCP != null) {<a name="line.3215"></a>
-<span class="sourceLineNo">3216</span>            for (Cell cell : fromCP.getCells()) {<a name="line.3216"></a>
-<span class="sourceLineNo">3217</span>              walEdit.add(cell);<a name="line.3217"></a>
-<span class="sourceLineNo">3218</span>            }<a name="line.3218"></a>
-<span class="sourceLineNo">3219</span>          }<a name="line.3219"></a>
-<span class="sourceLineNo">3220</span>          addFamilyMapToWALEdit(familyCellMaps[index], walEdit);<a name="line.3220"></a>
-<span class="sourceLineNo">3221</span><a name="line.3221"></a>
-<span class="sourceLineNo">3222</span>          return true;<a name="line.3222"></a>
-<span class="sourceLineNo">3223</span>        }<a name="line.3223"></a>
-<span class="sourceLineNo">3224</span>      });<a name="line.3224"></a>
-<span class="sourceLineNo">3225</span>      return walEdits;<a name="line.3225"></a>
-<span class="sourceLineNo">3226</span>    }<a name="line.3226"></a>
-<span class="sourceLineNo">3227</span><a name="line.3227"></a>
-<span class="sourceLineNo">3228</span>    /**<a name="line.3228"></a>
-<span class="sourceLineNo">3229</span>     * This method completes mini-batch operations by calling postBatchMutate() CP hook (if<a name="line.3229"></a>
-<span class="sourceLineNo">3230</span>     * required) and completing mvcc.<a name="line.3230"></a>
-<span class="sourceLineNo">3231</span>     */<a name="line.3231"></a>
-<span class="sourceLineNo">3232</span>    public void completeMiniBatchOperations(<a name="line.3232"></a>
-<span class="sourceLineNo">3233</span>        final MiniBatchOperationInProgress&lt;Mutation&gt; miniBatchOp, final WriteEntry writeEntry)<a name="line.3233"></a>
-<span class="sourceLineNo">3234</span>        throws IOException {<a name="line.3234"></a>
-<span class="sourceLineNo">3235</span>      if (writeEntry != null) {<a name="line.3235"></a>
-<span class="sourceLineNo">3236</span>        region.mvcc.completeAndWait(writeEntry);<a name="line.3236"></a>
-<span class="sourceLineNo">3237</span>      }<a name="line.3237"></a>
-<span class="sourceLineNo">3238</span>    }<a name="line.3238"></a>
-<span class="sourceLineNo">3239</span><a name="line.3239"></a>
-<span class="sourceLineNo">3240</span>    public void doPostOpCleanupForMiniBatch(<a name="line.3240"></a>
-<span class="sourceLineNo">3241</span>        final MiniBatchOperationInProgress&lt;Mutation&gt; miniBatchOp, final WALEdit walEdit,<a name="line.3241"></a>
-<span class="sourceLineNo">3242</span>        boolean success) throws IOException {}<a name="line.3242"></a>
-<span class="sourceLineNo">3243</span><a name="line.3243"></a>
-<span class="sourceLineNo">3244</span>    /**<a name="line.3244"></a>
-<span class="sourceLineNo">3245</span>     * Atomically apply the given map of family-&gt;edits to the memstore.<a name="line.3245"></a>
-<span class="sourceLineNo">3246</span>     * This handles the consistency control on its own, but the caller<a name="line.3246"></a>
-<span class="sourceLineNo">3247</span>     * should already have locked updatesLock.readLock(). This also does<a name="line.3247"></a>
-<span class="sourceLineNo">3248</span>     * &lt;b&gt;not&lt;/b&gt; check the families for validity.<a name="line.3248"></a>
-<span class="sourceLineNo">3249</span>     *<a name="line.3249"></a>
-<span class="sourceLineNo">3250</span>     * @param familyMap Map of Cells by family<a name="line.3250"></a>
-<span class="sourceLineNo">3251</span>     */<a name="line.3251"></a>
-<span class="sourceLineNo">3252</span>    protected void applyFamilyMapToMemStore(Map&lt;byte[], List&lt;Cell&gt;&gt; familyMap,<a name="line.3252"></a>
-<span class="sourceLineNo">3253</span>        MemStoreSizing memstoreAccounting) throws IOException {<a name="line.3253"></a>
-<span class="sourceLineNo">3254</span>      for (Map.Entry&lt;byte[], List&lt;Cell&gt;&gt; e : familyMap.entrySet()) {<a name="line.3254"></a>
-<span class="sourceLineNo">3255</span>        byte[] family = e.getKey();<a name="line.3255"></a>
-<span class="sourceLineNo">3256</span>        List&lt;Cell&gt; cells = e.getValue();<a name="line.3256"></a>
-<span class="sourceLineNo">3257</span>        assert cells instanceof RandomAccess;<a name="line.3257"></a>
-<span class="sourceLineNo">3258</span>        region.applyToMemStore(region.getStore(family), cells, false, memstoreAccounting);<a name="line.3258"></a>
-<span class="sourceLineNo">3259</span>      }<a name="line.3259"></a>
-<span class="sourceLineNo">3260</span>    }<a name="line.3260"></a>
-<span class="sourceLineNo">3261</span><a name="line.3261"></a>
-<span class="sourceLineNo">3262</span>    /**<a name="line.3262"></a>
-<span class="sourceLineNo">3263</span>     * Append the given map of family-&gt;edits to a WALEdit data structure.<a name="line.3263"></a>
-<span class="sourceLineNo">3264</span>     * This does not write to the WAL itself.<a name="line.3264"></a>
-<span class="sourceLineNo">3265</span>     * @param familyMap map of family-&gt;edits<a name="line.3265"></a>
-<span class="sourceLineNo">3266</span>     * @param walEdit the destination entry to append into<a name="line.3266"></a>
-<span class="sourceLineNo">3267</span>     */<a name="line.3267"></a>
-<span class="sourceLineNo">3268</span>    private void addFamilyMapToWALEdit(Map&lt;byte[], List&lt;Cell&gt;&gt; familyMap,<a name="line.3268"></a>
-<span class="sourceLineNo">3269</span>        WALEdit walEdit) {<a name="line.3269"></a>
-<span class="sourceLineNo">3270</span>      for (List&lt;Cell&gt; edits : familyMap.values()) {<a name="line.3270"></a>
-<span class="sourceLineNo">3271</span>        // Optimization: 'foreach' loop is not used. See:<a name="line.3271"></a>
-<span class="sourceLineNo">3272</span>        // HBASE-12023 HRegion.applyFamilyMapToMemstore creates too many iterator objects<a name="line.3272"></a>
-<span class="sourceLineNo">3273</span>        assert edits instanceof RandomAccess;<a name="line.3273"></a>
-<span class="sourceLineNo">3274</span>        int listSize = edits.size();<a name="line.3274"></a>
-<span class="sourceLineNo">3275</span>        for (int i=0; i &lt; listSize; i++) {<a name="line.3275"></a>
-<span class="sourceLineNo">3276</span>          Cell cell = edits.get(i);<a name="line.3276"></a>
-<span class="sourceLineNo">3277</span>          walEdit.add(cell);<a name="line.3277"></a>
-<span class="sourceLineNo">3278</span>        }<a name="line.3278"></a>
-<span class="sourceLineNo">3279</span>      }<a name="line.3279"></a>
-<span class="sourceLineNo">3280</span>    }<a name="line.3280"></a>
-<span class="sourceLineNo">3281</span>  }<a name="line.3281"></a>
-<span class="sourceLineNo">3282</span><a name="line.3282"></a>
-<span class="sourceLineNo">3283</span>  /**<a name="line.3283"></a>
-<span class="sourceLineNo">3284</span>   * Batch of mutation operations. Base class is shared with {@link ReplayBatchOperation} as most<a name="line.3284"></a>
-<span class="sourceLineNo">3285</span>   * of the logic is same.<a name="line.3285"></a>
-<span class="sourceLineNo">3286</span>   */<a name="line.3286"></a>
-<span class="sourceLineNo">3287</span>  static class MutationBatchOperation extends BatchOperation&lt;Mutation&gt; {<a name="line.3287"></a>
-<span class="sourceLineNo">3288</span>    private long nonceGroup;<a name="line.3288"></a>
-<span class="sourceLineNo">3289</span>    private long nonce;<a name="line.3289"></a>
-<span class="sourceLineNo">3290</span>    public MutationBatchOperation(final HRegion region, Mutation[] operations, boolean atomic,<a name="line.3290"></a>
-<span class="sourceLineNo">3291</span>        long nonceGroup, long nonce) {<a name="line.3291"></a>
-<span class="sourceLineNo">3292</span>      super(region, operations);<a name="line.3292"></a>
-<span class="sourceLineNo">3293</span>      this.atomic = atomic;<a name="line.3293"></a>
-<span class="sourceLineNo">3294</span>      this.nonceGroup = nonceGroup;<a name="line.3294"></a>
-<span class="sourceLineNo">3295</span>      this.nonce = nonce;<a name="line.3295"></a>
-<span class="sourceLineNo">3296</span>    }<a name="line.3296"></a>
-<span class="sourceLineNo">3297</span><a name="line.3297"></a>
-<span class="sourceLineNo">3298</span>    @Override<a name="line.3298"></a>
-<span class="sourceLineNo">3299</span>    public Mutation getMutation(int index) {<a name="line.3299"></a>
-<span class="sourceLineNo">3300</span>      return this.operations[index];<a name="line.3300"></a>
-<span class="sourceLineNo">3301</span>    }<a name="line.3301"></a>
-<span class="sourceLineNo">3302</span><a name="line.3302"></a>
-<span class="sourceLineNo">3303</span>    @Override<a name="line.3303"></a>
-<span class="sourceLineNo">3304</span>    public long getNonceGroup(int index) {<a name="line.3304"></a>
-<span class="sourceLineNo">3305</span>      return nonceGroup;<a name="line.3305"></a>
-<span class="sourceLineNo">3306</span>    }<a name="line.3306"></a>
-<span class="sourceLineNo">3307</span><a name="line.3307"></a>
-<span cla

<TRUNCATED>

[35/51] [partial] hbase-site git commit: Published site at .

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/c54c242b/devapidocs/overview-tree.html
----------------------------------------------------------------------
diff --git a/devapidocs/overview-tree.html b/devapidocs/overview-tree.html
index 9f23f4b..bee299f 100644
--- a/devapidocs/overview-tree.html
+++ b/devapidocs/overview-tree.html
@@ -2275,6 +2275,7 @@
 <li type="circle">org.apache.hadoop.hbase.regionserver.<a href="org/apache/hadoop/hbase/regionserver/MetricsTableWrapperAggregateImpl.MetricsTableValues.html" title="class in org.apache.hadoop.hbase.regionserver"><span class="typeNameLink">MetricsTableWrapperAggregateImpl.MetricsTableValues</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.regionserver.<a href="org/apache/hadoop/hbase/regionserver/MetricsTableWrapperAggregateImpl.TableMetricsWrapperRunnable.html" title="class in org.apache.hadoop.hbase.regionserver"><span class="typeNameLink">MetricsTableWrapperAggregateImpl.TableMetricsWrapperRunnable</span></a> (implements java.lang.<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Runnable.html?is-external=true" title="class or interface in java.lang">Runnable</a>)</li>
 <li type="circle">org.apache.hadoop.hbase.thrift.<a href="org/apache/hadoop/hbase/thrift/MetricsThriftServerSourceFactoryImpl.html" title="class in org.apache.hadoop.hbase.thrift"><span class="typeNameLink">MetricsThriftServerSourceFactoryImpl</span></a> (implements org.apache.hadoop.hbase.thrift.<a href="org/apache/hadoop/hbase/thrift/MetricsThriftServerSourceFactory.html" title="interface in org.apache.hadoop.hbase.thrift">MetricsThriftServerSourceFactory</a>)</li>
+<li type="circle">org.apache.hadoop.hbase.regionserver.wal.<a href="org/apache/hadoop/hbase/regionserver/wal/MetricsWAL.html" title="class in org.apache.hadoop.hbase.regionserver.wal"><span class="typeNameLink">MetricsWAL</span></a> (implements org.apache.hadoop.hbase.regionserver.wal.<a href="org/apache/hadoop/hbase/regionserver/wal/WALActionsListener.html" title="interface in org.apache.hadoop.hbase.regionserver.wal">WALActionsListener</a>)</li>
 <li type="circle">org.apache.hadoop.hbase.regionserver.<a href="org/apache/hadoop/hbase/regionserver/MiniBatchOperationInProgress.html" title="class in org.apache.hadoop.hbase.regionserver"><span class="typeNameLink">MiniBatchOperationInProgress</span></a>&lt;T&gt;</li>
 <li type="circle">org.apache.hadoop.hbase.zookeeper.<a href="org/apache/hadoop/hbase/zookeeper/MiniZooKeeperCluster.html" title="class in org.apache.hadoop.hbase.zookeeper"><span class="typeNameLink">MiniZooKeeperCluster</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.mob.compactions.<a href="org/apache/hadoop/hbase/mob/compactions/MobCompactionRequest.html" title="class in org.apache.hadoop.hbase.mob.compactions"><span class="typeNameLink">MobCompactionRequest</span></a>
@@ -2814,6 +2815,12 @@
 </li>
 </ul>
 </li>
+<li type="circle">org.apache.hadoop.hbase.zookeeper.<a href="org/apache/hadoop/hbase/zookeeper/ReadOnlyZKClient.html" title="class in org.apache.hadoop.hbase.zookeeper"><span class="typeNameLink">ReadOnlyZKClient</span></a> (implements java.io.<a href="http://docs.oracle.com/javase/8/docs/api/java/io/Closeable.html?is-external=true" title="class or interface in java.io">Closeable</a>)</li>
+<li type="circle">org.apache.hadoop.hbase.zookeeper.<a href="org/apache/hadoop/hbase/zookeeper/ReadOnlyZKClient.Task.html" title="class in org.apache.hadoop.hbase.zookeeper"><span class="typeNameLink">ReadOnlyZKClient.Task</span></a> (implements java.util.concurrent.<a href="http://docs.oracle.com/javase/8/docs/api/java/util/concurrent/Delayed.html?is-external=true" title="class or interface in java.util.concurrent">Delayed</a>)
+<ul>
+<li type="circle">org.apache.hadoop.hbase.zookeeper.<a href="org/apache/hadoop/hbase/zookeeper/ReadOnlyZKClient.ZKTask.html" title="class in org.apache.hadoop.hbase.zookeeper"><span class="typeNameLink">ReadOnlyZKClient.ZKTask</span></a>&lt;T&gt;</li>
+</ul>
+</li>
 <li type="circle">org.apache.hadoop.mapreduce.RecordReader&lt;KEYIN,VALUEIN&gt; (implements java.io.<a href="http://docs.oracle.com/javase/8/docs/api/java/io/Closeable.html?is-external=true" title="class or interface in java.io">Closeable</a>)
 <ul>
 <li type="circle">org.apache.hadoop.hbase.snapshot.<a href="org/apache/hadoop/hbase/snapshot/ExportSnapshot.ExportSnapshotInputFormat.ExportSnapshotRecordReader.html" title="class in org.apache.hadoop.hbase.snapshot"><span class="typeNameLink">ExportSnapshot.ExportSnapshotInputFormat.ExportSnapshotRecordReader</span></a></li>
@@ -2980,6 +2987,7 @@
 </li>
 </ul>
 </li>
+<li type="circle">org.apache.hadoop.hbase.replication.regionserver.<a href="org/apache/hadoop/hbase/replication/regionserver/Replication.html" title="class in org.apache.hadoop.hbase.replication.regionserver"><span class="typeNameLink">Replication</span></a> (implements org.apache.hadoop.hbase.regionserver.<a href="org/apache/hadoop/hbase/regionserver/ReplicationSinkService.html" title="interface in org.apache.hadoop.hbase.regionserver">ReplicationSinkService</a>, org.apache.hadoop.hbase.regionserver.<a href="org/apache/hadoop/hbase/regionserver/ReplicationSourceService.html" title="interface in org.apache.hadoop.hbase.regionserver">ReplicationSourceService</a>, org.apache.hadoop.hbase.regionserver.wal.<a href="org/apache/hadoop/hbase/regionserver/wal/WALActionsListener.html" title="interface in org.apache.hadoop.hbase.regionserver.wal">WALActionsListener</a>)</li>
 <li type="circle">org.apache.hadoop.hbase.client.replication.<a href="org/apache/hadoop/hbase/client/replication/ReplicationAdmin.html" title="class in org.apache.hadoop.hbase.client.replication"><span class="typeNameLink">ReplicationAdmin</span></a> (implements java.io.<a href="http://docs.oracle.com/javase/8/docs/api/java/io/Closeable.html?is-external=true" title="class or interface in java.io">Closeable</a>)</li>
 <li type="circle">org.apache.hadoop.hbase.util.hbck.<a href="org/apache/hadoop/hbase/util/hbck/ReplicationChecker.html" title="class in org.apache.hadoop.hbase.util.hbck"><span class="typeNameLink">ReplicationChecker</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.replication.<a href="org/apache/hadoop/hbase/replication/ReplicationEndpoint.Context.html" title="class in org.apache.hadoop.hbase.replication"><span class="typeNameLink">ReplicationEndpoint.Context</span></a></li>
@@ -4039,12 +4047,6 @@
 <li type="circle">org.apache.hadoop.hbase.regionserver.wal.<a href="org/apache/hadoop/hbase/regionserver/wal/FSWALEntry.html" title="class in org.apache.hadoop.hbase.regionserver.wal"><span class="typeNameLink">FSWALEntry</span></a></li>
 </ul>
 </li>
-<li type="circle">org.apache.hadoop.hbase.regionserver.wal.<a href="org/apache/hadoop/hbase/regionserver/wal/WALActionsListener.Base.html" title="class in org.apache.hadoop.hbase.regionserver.wal"><span class="typeNameLink">WALActionsListener.Base</span></a> (implements org.apache.hadoop.hbase.regionserver.wal.<a href="org/apache/hadoop/hbase/regionserver/wal/WALActionsListener.html" title="interface in org.apache.hadoop.hbase.regionserver.wal">WALActionsListener</a>)
-<ul>
-<li type="circle">org.apache.hadoop.hbase.regionserver.wal.<a href="org/apache/hadoop/hbase/regionserver/wal/MetricsWAL.html" title="class in org.apache.hadoop.hbase.regionserver.wal"><span class="typeNameLink">MetricsWAL</span></a></li>
-<li type="circle">org.apache.hadoop.hbase.replication.regionserver.<a href="org/apache/hadoop/hbase/replication/regionserver/Replication.html" title="class in org.apache.hadoop.hbase.replication.regionserver"><span class="typeNameLink">Replication</span></a> (implements org.apache.hadoop.hbase.regionserver.<a href="org/apache/hadoop/hbase/regionserver/ReplicationSinkService.html" title="interface in org.apache.hadoop.hbase.regionserver">ReplicationSinkService</a>, org.apache.hadoop.hbase.regionserver.<a href="org/apache/hadoop/hbase/regionserver/ReplicationSourceService.html" title="interface in org.apache.hadoop.hbase.regionserver">ReplicationSourceService</a>)</li>
-</ul>
-</li>
 <li type="circle">org.apache.hadoop.hbase.regionserver.wal.<a href="org/apache/hadoop/hbase/regionserver/wal/WALCellCodec.html" title="class in org.apache.hadoop.hbase.regionserver.wal"><span class="typeNameLink">WALCellCodec</span></a> (implements org.apache.hadoop.hbase.codec.<a href="org/apache/hadoop/hbase/codec/Codec.html" title="interface in org.apache.hadoop.hbase.codec">Codec</a>)
 <ul>
 <li type="circle">org.apache.hadoop.hbase.regionserver.wal.<a href="org/apache/hadoop/hbase/regionserver/wal/SecureWALCellCodec.html" title="class in org.apache.hadoop.hbase.regionserver.wal"><span class="typeNameLink">SecureWALCellCodec</span></a></li>
@@ -5017,7 +5019,7 @@
 <li type="circle">org.apache.hadoop.hbase.procedure2.store.wal.<a href="org/apache/hadoop/hbase/procedure2/store/wal/WALProcedureStore.LeaseRecovery.html" title="interface in org.apache.hadoop.hbase.procedure2.store.wal"><span class="typeNameLink">WALProcedureStore.LeaseRecovery</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.wal.<a href="org/apache/hadoop/hbase/wal/WALProvider.html" title="interface in org.apache.hadoop.hbase.wal"><span class="typeNameLink">WALProvider</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.io.<a href="org/apache/hadoop/hbase/io/WritableWithSize.html" title="interface in org.apache.hadoop.hbase.io"><span class="typeNameLink">WritableWithSize</span></a></li>
-<li type="circle">org.apache.hadoop.hbase.client.<a href="org/apache/hadoop/hbase/client/ZKAsyncRegistry.CuratorEventProcessor.html" title="interface in org.apache.hadoop.hbase.client"><span class="typeNameLink">ZKAsyncRegistry.CuratorEventProcessor</span></a>&lt;T&gt;</li>
+<li type="circle">org.apache.hadoop.hbase.client.<a href="org/apache/hadoop/hbase/client/ZKAsyncRegistry.Converter.html" title="interface in org.apache.hadoop.hbase.client"><span class="typeNameLink">ZKAsyncRegistry.Converter</span></a>&lt;T&gt;</li>
 <li type="circle">org.apache.hadoop.hbase.zookeeper.<a href="org/apache/hadoop/hbase/zookeeper/ZKMetricsListener.html" title="interface in org.apache.hadoop.hbase.zookeeper"><span class="typeNameLink">ZKMetricsListener</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.coordination.<a href="org/apache/hadoop/hbase/coordination/ZKSplitLogManagerCoordination.TaskFinisher.html" title="interface in org.apache.hadoop.hbase.coordination"><span class="typeNameLink">ZKSplitLogManagerCoordination.TaskFinisher</span></a></li>
 </ul>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/c54c242b/devapidocs/src-html/org/apache/hadoop/hbase/CellScannable.html
----------------------------------------------------------------------
diff --git a/devapidocs/src-html/org/apache/hadoop/hbase/CellScannable.html b/devapidocs/src-html/org/apache/hadoop/hbase/CellScannable.html
index e7fef04..015f8d8 100644
--- a/devapidocs/src-html/org/apache/hadoop/hbase/CellScannable.html
+++ b/devapidocs/src-html/org/apache/hadoop/hbase/CellScannable.html
@@ -33,7 +33,7 @@
 <span class="sourceLineNo">025</span> * CellScanner rather than say Iterator&amp;lt;Cell&amp;gt;.  See CellScanner class comment for why we go<a name="line.25"></a>
 <span class="sourceLineNo">026</span> * dumber than java.util.Iterator.<a name="line.26"></a>
 <span class="sourceLineNo">027</span> */<a name="line.27"></a>
-<span class="sourceLineNo">028</span>@InterfaceAudience.Private<a name="line.28"></a>
+<span class="sourceLineNo">028</span>@InterfaceAudience.Public<a name="line.28"></a>
 <span class="sourceLineNo">029</span>public interface CellScannable {<a name="line.29"></a>
 <span class="sourceLineNo">030</span>  /**<a name="line.30"></a>
 <span class="sourceLineNo">031</span>   * @return A CellScanner over the contained {@link Cell}s<a name="line.31"></a>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/c54c242b/devapidocs/src-html/org/apache/hadoop/hbase/CellScanner.html
----------------------------------------------------------------------
diff --git a/devapidocs/src-html/org/apache/hadoop/hbase/CellScanner.html b/devapidocs/src-html/org/apache/hadoop/hbase/CellScanner.html
index c858828..2f4a7c8 100644
--- a/devapidocs/src-html/org/apache/hadoop/hbase/CellScanner.html
+++ b/devapidocs/src-html/org/apache/hadoop/hbase/CellScanner.html
@@ -55,21 +55,20 @@
 <span class="sourceLineNo">047</span> * &lt;p&gt;Often used reading {@link org.apache.hadoop.hbase.Cell}s written by<a name="line.47"></a>
 <span class="sourceLineNo">048</span> * {@link org.apache.hadoop.hbase.io.CellOutputStream}.<a name="line.48"></a>
 <span class="sourceLineNo">049</span> */<a name="line.49"></a>
-<span class="sourceLineNo">050</span>@InterfaceAudience.Private<a name="line.50"></a>
-<span class="sourceLineNo">051</span>@InterfaceStability.Unstable<a name="line.51"></a>
-<span class="sourceLineNo">052</span>public interface CellScanner {<a name="line.52"></a>
-<span class="sourceLineNo">053</span>  /**<a name="line.53"></a>
-<span class="sourceLineNo">054</span>   * @return the current Cell which may be mutable<a name="line.54"></a>
-<span class="sourceLineNo">055</span>   */<a name="line.55"></a>
-<span class="sourceLineNo">056</span>  Cell current();<a name="line.56"></a>
-<span class="sourceLineNo">057</span><a name="line.57"></a>
-<span class="sourceLineNo">058</span>  /**<a name="line.58"></a>
-<span class="sourceLineNo">059</span>   * Advance the scanner 1 cell.<a name="line.59"></a>
-<span class="sourceLineNo">060</span>   * @return true if the next cell is found and {@link #current()} will return a valid Cell<a name="line.60"></a>
-<span class="sourceLineNo">061</span>   * @throws IOException<a name="line.61"></a>
-<span class="sourceLineNo">062</span>   */<a name="line.62"></a>
-<span class="sourceLineNo">063</span>  boolean advance() throws IOException;<a name="line.63"></a>
-<span class="sourceLineNo">064</span>}<a name="line.64"></a>
+<span class="sourceLineNo">050</span>@InterfaceAudience.Public<a name="line.50"></a>
+<span class="sourceLineNo">051</span>public interface CellScanner {<a name="line.51"></a>
+<span class="sourceLineNo">052</span>  /**<a name="line.52"></a>
+<span class="sourceLineNo">053</span>   * @return the current Cell which may be mutable<a name="line.53"></a>
+<span class="sourceLineNo">054</span>   */<a name="line.54"></a>
+<span class="sourceLineNo">055</span>  Cell current();<a name="line.55"></a>
+<span class="sourceLineNo">056</span><a name="line.56"></a>
+<span class="sourceLineNo">057</span>  /**<a name="line.57"></a>
+<span class="sourceLineNo">058</span>   * Advance the scanner 1 cell.<a name="line.58"></a>
+<span class="sourceLineNo">059</span>   * @return true if the next cell is found and {@link #current()} will return a valid Cell<a name="line.59"></a>
+<span class="sourceLineNo">060</span>   * @throws IOException<a name="line.60"></a>
+<span class="sourceLineNo">061</span>   */<a name="line.61"></a>
+<span class="sourceLineNo">062</span>  boolean advance() throws IOException;<a name="line.62"></a>
+<span class="sourceLineNo">063</span>}<a name="line.63"></a>
 
 
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/c54c242b/devapidocs/src-html/org/apache/hadoop/hbase/Version.html
----------------------------------------------------------------------
diff --git a/devapidocs/src-html/org/apache/hadoop/hbase/Version.html b/devapidocs/src-html/org/apache/hadoop/hbase/Version.html
index 96a64a4..6de369b 100644
--- a/devapidocs/src-html/org/apache/hadoop/hbase/Version.html
+++ b/devapidocs/src-html/org/apache/hadoop/hbase/Version.html
@@ -16,11 +16,11 @@
 <span class="sourceLineNo">008</span>@InterfaceAudience.Private<a name="line.8"></a>
 <span class="sourceLineNo">009</span>public class Version {<a name="line.9"></a>
 <span class="sourceLineNo">010</span>  public static final String version = "3.0.0-SNAPSHOT";<a name="line.10"></a>
-<span class="sourceLineNo">011</span>  public static final String revision = "d6a4a3dc331129e949faaaaa134107cb71172928";<a name="line.11"></a>
+<span class="sourceLineNo">011</span>  public static final String revision = "7a5b0783068415eaca70ea2ca938ecbfe3bed30f";<a name="line.11"></a>
 <span class="sourceLineNo">012</span>  public static final String user = "jenkins";<a name="line.12"></a>
-<span class="sourceLineNo">013</span>  public static final String date = "Sat Dec  2 14:42:12 UTC 2017";<a name="line.13"></a>
+<span class="sourceLineNo">013</span>  public static final String date = "Sun Dec  3 14:42:16 UTC 2017";<a name="line.13"></a>
 <span class="sourceLineNo">014</span>  public static final String url = "git://asf920.gq1.ygridcore.net/home/jenkins/jenkins-slave/workspace/hbase_generate_website/hbase";<a name="line.14"></a>
-<span class="sourceLineNo">015</span>  public static final String srcChecksum = "f5ac229014b3452e383c1cb180577e57";<a name="line.15"></a>
+<span class="sourceLineNo">015</span>  public static final String srcChecksum = "30495beff23a8606d12cf6be21433aa2";<a name="line.15"></a>
 <span class="sourceLineNo">016</span>}<a name="line.16"></a>
 
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/c54c242b/devapidocs/src-html/org/apache/hadoop/hbase/client/RpcRetryingCallerImpl.html
----------------------------------------------------------------------
diff --git a/devapidocs/src-html/org/apache/hadoop/hbase/client/RpcRetryingCallerImpl.html b/devapidocs/src-html/org/apache/hadoop/hbase/client/RpcRetryingCallerImpl.html
index ee27068..e03d6dc 100644
--- a/devapidocs/src-html/org/apache/hadoop/hbase/client/RpcRetryingCallerImpl.html
+++ b/devapidocs/src-html/org/apache/hadoop/hbase/client/RpcRetryingCallerImpl.html
@@ -36,217 +36,228 @@
 <span class="sourceLineNo">028</span>import java.util.ArrayList;<a name="line.28"></a>
 <span class="sourceLineNo">029</span>import java.util.List;<a name="line.29"></a>
 <span class="sourceLineNo">030</span>import java.util.concurrent.atomic.AtomicBoolean;<a name="line.30"></a>
-<span class="sourceLineNo">031</span><a name="line.31"></a>
-<span class="sourceLineNo">032</span>import org.apache.commons.logging.Log;<a name="line.32"></a>
-<span class="sourceLineNo">033</span>import org.apache.commons.logging.LogFactory;<a name="line.33"></a>
-<span class="sourceLineNo">034</span>import org.apache.hadoop.hbase.CallQueueTooBigException;<a name="line.34"></a>
-<span class="sourceLineNo">035</span>import org.apache.hadoop.hbase.DoNotRetryIOException;<a name="line.35"></a>
-<span class="sourceLineNo">036</span>import org.apache.yetus.audience.InterfaceAudience;<a name="line.36"></a>
-<span class="sourceLineNo">037</span>import org.apache.hadoop.hbase.exceptions.PreemptiveFastFailException;<a name="line.37"></a>
-<span class="sourceLineNo">038</span>import org.apache.hadoop.hbase.shaded.com.google.protobuf.ServiceException;<a name="line.38"></a>
-<span class="sourceLineNo">039</span>import org.apache.hadoop.hbase.util.EnvironmentEdgeManager;<a name="line.39"></a>
-<span class="sourceLineNo">040</span>import org.apache.hadoop.hbase.util.ExceptionUtil;<a name="line.40"></a>
-<span class="sourceLineNo">041</span>import org.apache.hadoop.ipc.RemoteException;<a name="line.41"></a>
-<span class="sourceLineNo">042</span><a name="line.42"></a>
-<span class="sourceLineNo">043</span>/**<a name="line.43"></a>
-<span class="sourceLineNo">044</span> * Runs an rpc'ing {@link RetryingCallable}. Sets into rpc client<a name="line.44"></a>
-<span class="sourceLineNo">045</span> * threadlocal outstanding timeouts as so we don't persist too much.<a name="line.45"></a>
-<span class="sourceLineNo">046</span> * Dynamic rather than static so can set the generic appropriately.<a name="line.46"></a>
-<span class="sourceLineNo">047</span> *<a name="line.47"></a>
-<span class="sourceLineNo">048</span> * This object has a state. It should not be used by in parallel by different threads.<a name="line.48"></a>
-<span class="sourceLineNo">049</span> * Reusing it is possible however, even between multiple threads. However, the user will<a name="line.49"></a>
-<span class="sourceLineNo">050</span> *  have to manage the synchronization on its side: there is no synchronization inside the class.<a name="line.50"></a>
-<span class="sourceLineNo">051</span> */<a name="line.51"></a>
-<span class="sourceLineNo">052</span>@InterfaceAudience.Private<a name="line.52"></a>
-<span class="sourceLineNo">053</span>public class RpcRetryingCallerImpl&lt;T&gt; implements RpcRetryingCaller&lt;T&gt; {<a name="line.53"></a>
-<span class="sourceLineNo">054</span>  // LOG is being used in TestMultiRowRangeFilter, hence leaving it public<a name="line.54"></a>
-<span class="sourceLineNo">055</span>  public static final Log LOG = LogFactory.getLog(RpcRetryingCallerImpl.class);<a name="line.55"></a>
-<span class="sourceLineNo">056</span><a name="line.56"></a>
-<span class="sourceLineNo">057</span>  /** How many retries are allowed before we start to log */<a name="line.57"></a>
-<span class="sourceLineNo">058</span>  private final int startLogErrorsCnt;<a name="line.58"></a>
-<span class="sourceLineNo">059</span><a name="line.59"></a>
-<span class="sourceLineNo">060</span>  private final long pause;<a name="line.60"></a>
-<span class="sourceLineNo">061</span>  private final long pauseForCQTBE;<a name="line.61"></a>
-<span class="sourceLineNo">062</span>  private final int maxAttempts;// how many times to try<a name="line.62"></a>
-<span class="sourceLineNo">063</span>  private final int rpcTimeout;// timeout for each rpc request<a name="line.63"></a>
-<span class="sourceLineNo">064</span>  private final AtomicBoolean cancelled = new AtomicBoolean(false);<a name="line.64"></a>
-<span class="sourceLineNo">065</span>  private final RetryingCallerInterceptor interceptor;<a name="line.65"></a>
-<span class="sourceLineNo">066</span>  private final RetryingCallerInterceptorContext context;<a name="line.66"></a>
-<span class="sourceLineNo">067</span>  private final RetryingTimeTracker tracker;<a name="line.67"></a>
-<span class="sourceLineNo">068</span><a name="line.68"></a>
-<span class="sourceLineNo">069</span>  public RpcRetryingCallerImpl(long pause, long pauseForCQTBE, int retries, int startLogErrorsCnt) {<a name="line.69"></a>
-<span class="sourceLineNo">070</span>    this(pause, pauseForCQTBE, retries, RetryingCallerInterceptorFactory.NO_OP_INTERCEPTOR,<a name="line.70"></a>
-<span class="sourceLineNo">071</span>        startLogErrorsCnt, 0);<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>  public RpcRetryingCallerImpl(long pause, long pauseForCQTBE, int retries,<a name="line.74"></a>
-<span class="sourceLineNo">075</span>      RetryingCallerInterceptor interceptor, int startLogErrorsCnt, int rpcTimeout) {<a name="line.75"></a>
-<span class="sourceLineNo">076</span>    this.pause = pause;<a name="line.76"></a>
-<span class="sourceLineNo">077</span>    this.pauseForCQTBE = pauseForCQTBE;<a name="line.77"></a>
-<span class="sourceLineNo">078</span>    this.maxAttempts = retries2Attempts(retries);<a name="line.78"></a>
-<span class="sourceLineNo">079</span>    this.interceptor = interceptor;<a name="line.79"></a>
-<span class="sourceLineNo">080</span>    context = interceptor.createEmptyContext();<a name="line.80"></a>
-<span class="sourceLineNo">081</span>    this.startLogErrorsCnt = startLogErrorsCnt;<a name="line.81"></a>
-<span class="sourceLineNo">082</span>    this.tracker = new RetryingTimeTracker();<a name="line.82"></a>
-<span class="sourceLineNo">083</span>    this.rpcTimeout = rpcTimeout;<a name="line.83"></a>
-<span class="sourceLineNo">084</span>  }<a name="line.84"></a>
-<span class="sourceLineNo">085</span><a name="line.85"></a>
-<span class="sourceLineNo">086</span>  @Override<a name="line.86"></a>
-<span class="sourceLineNo">087</span>  public void cancel(){<a name="line.87"></a>
-<span class="sourceLineNo">088</span>    cancelled.set(true);<a name="line.88"></a>
-<span class="sourceLineNo">089</span>    synchronized (cancelled){<a name="line.89"></a>
-<span class="sourceLineNo">090</span>      cancelled.notifyAll();<a name="line.90"></a>
-<span class="sourceLineNo">091</span>    }<a name="line.91"></a>
-<span class="sourceLineNo">092</span>  }<a name="line.92"></a>
-<span class="sourceLineNo">093</span><a name="line.93"></a>
-<span class="sourceLineNo">094</span>  @Override<a name="line.94"></a>
-<span class="sourceLineNo">095</span>  public T callWithRetries(RetryingCallable&lt;T&gt; callable, int callTimeout)<a name="line.95"></a>
-<span class="sourceLineNo">096</span>  throws IOException, RuntimeException {<a name="line.96"></a>
-<span class="sourceLineNo">097</span>    List&lt;RetriesExhaustedException.ThrowableWithExtraContext&gt; exceptions = new ArrayList&lt;&gt;();<a name="line.97"></a>
-<span class="sourceLineNo">098</span>    tracker.start();<a name="line.98"></a>
-<span class="sourceLineNo">099</span>    context.clear();<a name="line.99"></a>
-<span class="sourceLineNo">100</span>    for (int tries = 0;; tries++) {<a name="line.100"></a>
-<span class="sourceLineNo">101</span>      long expectedSleep;<a name="line.101"></a>
-<span class="sourceLineNo">102</span>      try {<a name="line.102"></a>
-<span class="sourceLineNo">103</span>        // bad cache entries are cleared in the call to RetryingCallable#throwable() in catch block<a name="line.103"></a>
-<span class="sourceLineNo">104</span>        callable.prepare(tries != 0);<a name="line.104"></a>
-<span class="sourceLineNo">105</span>        interceptor.intercept(context.prepare(callable, tries));<a name="line.105"></a>
-<span class="sourceLineNo">106</span>        return callable.call(getTimeout(callTimeout));<a name="line.106"></a>
-<span class="sourceLineNo">107</span>      } catch (PreemptiveFastFailException e) {<a name="line.107"></a>
-<span class="sourceLineNo">108</span>        throw e;<a name="line.108"></a>
-<span class="sourceLineNo">109</span>      } catch (Throwable t) {<a name="line.109"></a>
-<span class="sourceLineNo">110</span>        Throwable e = t.getCause();<a name="line.110"></a>
-<span class="sourceLineNo">111</span>        ExceptionUtil.rethrowIfInterrupt(t);<a name="line.111"></a>
-<span class="sourceLineNo">112</span>        Throwable cause = t.getCause();<a name="line.112"></a>
-<span class="sourceLineNo">113</span>        if (cause instanceof DoNotRetryIOException) {<a name="line.113"></a>
-<span class="sourceLineNo">114</span>          // Fail fast<a name="line.114"></a>
-<span class="sourceLineNo">115</span>          throw (DoNotRetryIOException) cause;<a name="line.115"></a>
-<span class="sourceLineNo">116</span>        }<a name="line.116"></a>
-<span class="sourceLineNo">117</span>        // translateException throws exception when should not retry: i.e. when request is bad.<a name="line.117"></a>
-<span class="sourceLineNo">118</span>        interceptor.handleFailure(context, t);<a name="line.118"></a>
-<span class="sourceLineNo">119</span>        t = translateException(t);<a name="line.119"></a>
-<span class="sourceLineNo">120</span><a name="line.120"></a>
-<span class="sourceLineNo">121</span>        if (tries &gt; startLogErrorsCnt) {<a name="line.121"></a>
-<span class="sourceLineNo">122</span>          LOG.info("Call exception, tries=" + tries + ", maxAttempts=" + maxAttempts + ", started="<a name="line.122"></a>
-<span class="sourceLineNo">123</span>              + (EnvironmentEdgeManager.currentTime() - tracker.getStartTime()) + " ms ago, "<a name="line.123"></a>
-<span class="sourceLineNo">124</span>              + "cancelled=" + cancelled.get() + ", msg="<a name="line.124"></a>
-<span class="sourceLineNo">125</span>              + t.getMessage() + " " + callable.getExceptionMessageAdditionalDetail());<a name="line.125"></a>
-<span class="sourceLineNo">126</span>        }<a name="line.126"></a>
-<span class="sourceLineNo">127</span><a name="line.127"></a>
-<span class="sourceLineNo">128</span>        callable.throwable(t, maxAttempts != 1);<a name="line.128"></a>
-<span class="sourceLineNo">129</span>        RetriesExhaustedException.ThrowableWithExtraContext qt =<a name="line.129"></a>
-<span class="sourceLineNo">130</span>            new RetriesExhaustedException.ThrowableWithExtraContext(t,<a name="line.130"></a>
-<span class="sourceLineNo">131</span>                EnvironmentEdgeManager.currentTime(), toString());<a name="line.131"></a>
-<span class="sourceLineNo">132</span>        exceptions.add(qt);<a name="line.132"></a>
-<span class="sourceLineNo">133</span>        if (tries &gt;= maxAttempts - 1) {<a name="line.133"></a>
-<span class="sourceLineNo">134</span>          throw new RetriesExhaustedException(tries, exceptions);<a name="line.134"></a>
-<span class="sourceLineNo">135</span>        }<a name="line.135"></a>
-<span class="sourceLineNo">136</span>        // If the server is dead, we need to wait a little before retrying, to give<a name="line.136"></a>
-<span class="sourceLineNo">137</span>        // a chance to the regions to be moved<a name="line.137"></a>
-<span class="sourceLineNo">138</span>        // get right pause time, start by RETRY_BACKOFF[0] * pauseBase, where pauseBase might be<a name="line.138"></a>
-<span class="sourceLineNo">139</span>        // special when encountering CallQueueTooBigException, see #HBASE-17114<a name="line.139"></a>
-<span class="sourceLineNo">140</span>        long pauseBase = (t instanceof CallQueueTooBigException) ? pauseForCQTBE : pause;<a name="line.140"></a>
-<span class="sourceLineNo">141</span>        expectedSleep = callable.sleep(pauseBase, tries);<a name="line.141"></a>
-<span class="sourceLineNo">142</span><a name="line.142"></a>
-<span class="sourceLineNo">143</span>        // If, after the planned sleep, there won't be enough time left, we stop now.<a name="line.143"></a>
-<span class="sourceLineNo">144</span>        long duration = singleCallDuration(expectedSleep);<a name="line.144"></a>
-<span class="sourceLineNo">145</span>        if (duration &gt; callTimeout) {<a name="line.145"></a>
-<span class="sourceLineNo">146</span>          String msg = "callTimeout=" + callTimeout + ", callDuration=" + duration +<a name="line.146"></a>
-<span class="sourceLineNo">147</span>              ": " +  t.getMessage() + " " + callable.getExceptionMessageAdditionalDetail();<a name="line.147"></a>
-<span class="sourceLineNo">148</span>          throw (SocketTimeoutException)(new SocketTimeoutException(msg).initCause(t));<a name="line.148"></a>
-<span class="sourceLineNo">149</span>        }<a name="line.149"></a>
-<span class="sourceLineNo">150</span>      } finally {<a name="line.150"></a>
-<span class="sourceLineNo">151</span>        interceptor.updateFailureInfo(context);<a name="line.151"></a>
-<span class="sourceLineNo">152</span>      }<a name="line.152"></a>
-<span class="sourceLineNo">153</span>      try {<a name="line.153"></a>
-<span class="sourceLineNo">154</span>        if (expectedSleep &gt; 0) {<a name="line.154"></a>
-<span class="sourceLineNo">155</span>          synchronized (cancelled) {<a name="line.155"></a>
-<span class="sourceLineNo">156</span>            if (cancelled.get()) return null;<a name="line.156"></a>
-<span class="sourceLineNo">157</span>            cancelled.wait(expectedSleep);<a name="line.157"></a>
-<span class="sourceLineNo">158</span>          }<a name="line.158"></a>
-<span class="sourceLineNo">159</span>        }<a name="line.159"></a>
-<span class="sourceLineNo">160</span>        if (cancelled.get()) return null;<a name="line.160"></a>
-<span class="sourceLineNo">161</span>      } catch (InterruptedException e) {<a name="line.161"></a>
-<span class="sourceLineNo">162</span>        throw new InterruptedIOException("Interrupted after " + tries<a name="line.162"></a>
-<span class="sourceLineNo">163</span>            + " tries while maxAttempts=" + maxAttempts);<a name="line.163"></a>
-<span class="sourceLineNo">164</span>      }<a name="line.164"></a>
-<span class="sourceLineNo">165</span>    }<a name="line.165"></a>
-<span class="sourceLineNo">166</span>  }<a name="line.166"></a>
-<span class="sourceLineNo">167</span><a name="line.167"></a>
-<span class="sourceLineNo">168</span>  /**<a name="line.168"></a>
-<span class="sourceLineNo">169</span>   * @return Calculate how long a single call took<a name="line.169"></a>
-<span class="sourceLineNo">170</span>   */<a name="line.170"></a>
-<span class="sourceLineNo">171</span>  private long singleCallDuration(final long expectedSleep) {<a name="line.171"></a>
-<span class="sourceLineNo">172</span>    return (EnvironmentEdgeManager.currentTime() - tracker.getStartTime()) + expectedSleep;<a name="line.172"></a>
-<span class="sourceLineNo">173</span>  }<a name="line.173"></a>
-<span class="sourceLineNo">174</span><a name="line.174"></a>
-<span class="sourceLineNo">175</span>  @Override<a name="line.175"></a>
-<span class="sourceLineNo">176</span>  public T callWithoutRetries(RetryingCallable&lt;T&gt; callable, int callTimeout)<a name="line.176"></a>
-<span class="sourceLineNo">177</span>  throws IOException, RuntimeException {<a name="line.177"></a>
-<span class="sourceLineNo">178</span>    // The code of this method should be shared with withRetries.<a name="line.178"></a>
-<span class="sourceLineNo">179</span>    try {<a name="line.179"></a>
-<span class="sourceLineNo">180</span>      callable.prepare(false);<a name="line.180"></a>
-<span class="sourceLineNo">181</span>      return callable.call(callTimeout);<a name="line.181"></a>
-<span class="sourceLineNo">182</span>    } catch (Throwable t) {<a name="line.182"></a>
-<span class="sourceLineNo">183</span>      Throwable t2 = translateException(t);<a name="line.183"></a>
-<span class="sourceLineNo">184</span>      ExceptionUtil.rethrowIfInterrupt(t2);<a name="line.184"></a>
-<span class="sourceLineNo">185</span>      // It would be nice to clear the location cache here.<a name="line.185"></a>
-<span class="sourceLineNo">186</span>      if (t2 instanceof IOException) {<a name="line.186"></a>
-<span class="sourceLineNo">187</span>        throw (IOException)t2;<a name="line.187"></a>
-<span class="sourceLineNo">188</span>      } else {<a name="line.188"></a>
-<span class="sourceLineNo">189</span>        throw new RuntimeException(t2);<a name="line.189"></a>
-<span class="sourceLineNo">190</span>      }<a name="line.190"></a>
-<span class="sourceLineNo">191</span>    }<a name="line.191"></a>
-<span class="sourceLineNo">192</span>  }<a name="line.192"></a>
-<span class="sourceLineNo">193</span><a name="line.193"></a>
-<span class="sourceLineNo">194</span>  /**<a name="line.194"></a>
-<span class="sourceLineNo">195</span>   * Get the good or the remote exception if any, throws the DoNotRetryIOException.<a name="line.195"></a>
-<span class="sourceLineNo">196</span>   * @param t the throwable to analyze<a name="line.196"></a>
-<span class="sourceLineNo">197</span>   * @return the translated exception, if it's not a DoNotRetryIOException<a name="line.197"></a>
-<span class="sourceLineNo">198</span>   * @throws DoNotRetryIOException - if we find it, we throw it instead of translating.<a name="line.198"></a>
-<span class="sourceLineNo">199</span>   */<a name="line.199"></a>
-<span class="sourceLineNo">200</span>  static Throwable translateException(Throwable t) throws DoNotRetryIOException {<a name="line.200"></a>
-<span class="sourceLineNo">201</span>    if (t instanceof UndeclaredThrowableException) {<a name="line.201"></a>
-<span class="sourceLineNo">202</span>      if (t.getCause() != null) {<a name="line.202"></a>
-<span class="sourceLineNo">203</span>        t = t.getCause();<a name="line.203"></a>
-<span class="sourceLineNo">204</span>      }<a name="line.204"></a>
-<span class="sourceLineNo">205</span>    }<a name="line.205"></a>
-<span class="sourceLineNo">206</span>    if (t instanceof RemoteException) {<a name="line.206"></a>
-<span class="sourceLineNo">207</span>      t = ((RemoteException)t).unwrapRemoteException();<a name="line.207"></a>
-<span class="sourceLineNo">208</span>    }<a name="line.208"></a>
-<span class="sourceLineNo">209</span>    if (t instanceof LinkageError) {<a name="line.209"></a>
-<span class="sourceLineNo">210</span>      throw new DoNotRetryIOException(t);<a name="line.210"></a>
-<span class="sourceLineNo">211</span>    }<a name="line.211"></a>
-<span class="sourceLineNo">212</span>    if (t instanceof ServiceException) {<a name="line.212"></a>
-<span class="sourceLineNo">213</span>      ServiceException se = (ServiceException)t;<a name="line.213"></a>
-<span class="sourceLineNo">214</span>      Throwable cause = se.getCause();<a name="line.214"></a>
-<span class="sourceLineNo">215</span>      if (cause != null &amp;&amp; cause instanceof DoNotRetryIOException) {<a name="line.215"></a>
-<span class="sourceLineNo">216</span>        throw (DoNotRetryIOException)cause;<a name="line.216"></a>
-<span class="sourceLineNo">217</span>      }<a name="line.217"></a>
-<span class="sourceLineNo">218</span>      // Don't let ServiceException out; its rpc specific.<a name="line.218"></a>
-<span class="sourceLineNo">219</span>      t = cause;<a name="line.219"></a>
-<span class="sourceLineNo">220</span>      // t could be a RemoteException so go around again.<a name="line.220"></a>
-<span class="sourceLineNo">221</span>      translateException(t);<a name="line.221"></a>
-<span class="sourceLineNo">222</span>    } else if (t instanceof DoNotRetryIOException) {<a name="line.222"></a>
-<span class="sourceLineNo">223</span>      throw (DoNotRetryIOException)t;<a name="line.223"></a>
-<span class="sourceLineNo">224</span>    }<a name="line.224"></a>
-<span class="sourceLineNo">225</span>    return t;<a name="line.225"></a>
-<span class="sourceLineNo">226</span>  }<a name="line.226"></a>
-<span class="sourceLineNo">227</span><a name="line.227"></a>
-<span class="sourceLineNo">228</span>  private int getTimeout(int callTimeout){<a name="line.228"></a>
-<span class="sourceLineNo">229</span>    int timeout = tracker.getRemainingTime(callTimeout);<a name="line.229"></a>
-<span class="sourceLineNo">230</span>    if (timeout &lt;= 0 || rpcTimeout &gt; 0 &amp;&amp; rpcTimeout &lt; timeout){<a name="line.230"></a>
-<span class="sourceLineNo">231</span>      timeout = rpcTimeout;<a name="line.231"></a>
-<span class="sourceLineNo">232</span>    }<a name="line.232"></a>
-<span class="sourceLineNo">233</span>    return timeout;<a name="line.233"></a>
-<span class="sourceLineNo">234</span>  }<a name="line.234"></a>
-<span class="sourceLineNo">235</span><a name="line.235"></a>
-<span class="sourceLineNo">236</span>  @Override<a name="line.236"></a>
-<span class="sourceLineNo">237</span>  public String toString() {<a name="line.237"></a>
-<span class="sourceLineNo">238</span>    return "RpcRetryingCaller{" + "globalStartTime=" + tracker.getStartTime() +<a name="line.238"></a>
-<span class="sourceLineNo">239</span>        ", pause=" + pause + ", maxAttempts=" + maxAttempts + '}';<a name="line.239"></a>
-<span class="sourceLineNo">240</span>  }<a name="line.240"></a>
-<span class="sourceLineNo">241</span>}<a name="line.241"></a>
+<span class="sourceLineNo">031</span>import org.apache.commons.logging.Log;<a name="line.31"></a>
+<span class="sourceLineNo">032</span>import org.apache.commons.logging.LogFactory;<a name="line.32"></a>
+<span class="sourceLineNo">033</span>import org.apache.hadoop.hbase.CallQueueTooBigException;<a name="line.33"></a>
+<span class="sourceLineNo">034</span>import org.apache.hadoop.hbase.DoNotRetryIOException;<a name="line.34"></a>
+<span class="sourceLineNo">035</span>import org.apache.hadoop.hbase.exceptions.PreemptiveFastFailException;<a name="line.35"></a>
+<span class="sourceLineNo">036</span>import org.apache.hadoop.hbase.util.EnvironmentEdgeManager;<a name="line.36"></a>
+<span class="sourceLineNo">037</span>import org.apache.hadoop.hbase.util.ExceptionUtil;<a name="line.37"></a>
+<span class="sourceLineNo">038</span>import org.apache.hadoop.ipc.RemoteException;<a name="line.38"></a>
+<span class="sourceLineNo">039</span>import org.apache.hadoop.util.StringUtils;<a name="line.39"></a>
+<span class="sourceLineNo">040</span>import org.apache.yetus.audience.InterfaceAudience;<a name="line.40"></a>
+<span class="sourceLineNo">041</span><a name="line.41"></a>
+<span class="sourceLineNo">042</span>import org.apache.hadoop.hbase.shaded.com.google.protobuf.ServiceException;<a name="line.42"></a>
+<span class="sourceLineNo">043</span><a name="line.43"></a>
+<span class="sourceLineNo">044</span>/**<a name="line.44"></a>
+<span class="sourceLineNo">045</span> * Runs an rpc'ing {@link RetryingCallable}. Sets into rpc client<a name="line.45"></a>
+<span class="sourceLineNo">046</span> * threadlocal outstanding timeouts as so we don't persist too much.<a name="line.46"></a>
+<span class="sourceLineNo">047</span> * Dynamic rather than static so can set the generic appropriately.<a name="line.47"></a>
+<span class="sourceLineNo">048</span> *<a name="line.48"></a>
+<span class="sourceLineNo">049</span> * This object has a state. It should not be used by in parallel by different threads.<a name="line.49"></a>
+<span class="sourceLineNo">050</span> * Reusing it is possible however, even between multiple threads. However, the user will<a name="line.50"></a>
+<span class="sourceLineNo">051</span> *  have to manage the synchronization on its side: there is no synchronization inside the class.<a name="line.51"></a>
+<span class="sourceLineNo">052</span> */<a name="line.52"></a>
+<span class="sourceLineNo">053</span>@InterfaceAudience.Private<a name="line.53"></a>
+<span class="sourceLineNo">054</span>public class RpcRetryingCallerImpl&lt;T&gt; implements RpcRetryingCaller&lt;T&gt; {<a name="line.54"></a>
+<span class="sourceLineNo">055</span>  // LOG is being used in TestMultiRowRangeFilter, hence leaving it public<a name="line.55"></a>
+<span class="sourceLineNo">056</span>  public static final Log LOG = LogFactory.getLog(RpcRetryingCallerImpl.class);<a name="line.56"></a>
+<span class="sourceLineNo">057</span><a name="line.57"></a>
+<span class="sourceLineNo">058</span>  /** How many retries are allowed before we start to log */<a name="line.58"></a>
+<span class="sourceLineNo">059</span>  private final int startLogErrorsCnt;<a name="line.59"></a>
+<span class="sourceLineNo">060</span><a name="line.60"></a>
+<span class="sourceLineNo">061</span>  private final long pause;<a name="line.61"></a>
+<span class="sourceLineNo">062</span>  private final long pauseForCQTBE;<a name="line.62"></a>
+<span class="sourceLineNo">063</span>  private final int maxAttempts;// how many times to try<a name="line.63"></a>
+<span class="sourceLineNo">064</span>  private final int rpcTimeout;// timeout for each rpc request<a name="line.64"></a>
+<span class="sourceLineNo">065</span>  private final AtomicBoolean cancelled = new AtomicBoolean(false);<a name="line.65"></a>
+<span class="sourceLineNo">066</span>  private final RetryingCallerInterceptor interceptor;<a name="line.66"></a>
+<span class="sourceLineNo">067</span>  private final RetryingCallerInterceptorContext context;<a name="line.67"></a>
+<span class="sourceLineNo">068</span>  private final RetryingTimeTracker tracker;<a name="line.68"></a>
+<span class="sourceLineNo">069</span><a name="line.69"></a>
+<span class="sourceLineNo">070</span>  public RpcRetryingCallerImpl(long pause, long pauseForCQTBE, int retries, int startLogErrorsCnt) {<a name="line.70"></a>
+<span class="sourceLineNo">071</span>    this(pause, pauseForCQTBE, retries, RetryingCallerInterceptorFactory.NO_OP_INTERCEPTOR,<a name="line.71"></a>
+<span class="sourceLineNo">072</span>        startLogErrorsCnt, 0);<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>  public RpcRetryingCallerImpl(long pause, long pauseForCQTBE, int retries,<a name="line.75"></a>
+<span class="sourceLineNo">076</span>      RetryingCallerInterceptor interceptor, int startLogErrorsCnt, int rpcTimeout) {<a name="line.76"></a>
+<span class="sourceLineNo">077</span>    this.pause = pause;<a name="line.77"></a>
+<span class="sourceLineNo">078</span>    this.pauseForCQTBE = pauseForCQTBE;<a name="line.78"></a>
+<span class="sourceLineNo">079</span>    this.maxAttempts = retries2Attempts(retries);<a name="line.79"></a>
+<span class="sourceLineNo">080</span>    this.interceptor = interceptor;<a name="line.80"></a>
+<span class="sourceLineNo">081</span>    context = interceptor.createEmptyContext();<a name="line.81"></a>
+<span class="sourceLineNo">082</span>    this.startLogErrorsCnt = startLogErrorsCnt;<a name="line.82"></a>
+<span class="sourceLineNo">083</span>    this.tracker = new RetryingTimeTracker();<a name="line.83"></a>
+<span class="sourceLineNo">084</span>    this.rpcTimeout = rpcTimeout;<a name="line.84"></a>
+<span class="sourceLineNo">085</span>  }<a name="line.85"></a>
+<span class="sourceLineNo">086</span><a name="line.86"></a>
+<span class="sourceLineNo">087</span>  @Override<a name="line.87"></a>
+<span class="sourceLineNo">088</span>  public void cancel(){<a name="line.88"></a>
+<span class="sourceLineNo">089</span>    cancelled.set(true);<a name="line.89"></a>
+<span class="sourceLineNo">090</span>    synchronized (cancelled){<a name="line.90"></a>
+<span class="sourceLineNo">091</span>      cancelled.notifyAll();<a name="line.91"></a>
+<span class="sourceLineNo">092</span>    }<a name="line.92"></a>
+<span class="sourceLineNo">093</span>  }<a name="line.93"></a>
+<span class="sourceLineNo">094</span><a name="line.94"></a>
+<span class="sourceLineNo">095</span>  @Override<a name="line.95"></a>
+<span class="sourceLineNo">096</span>  public T callWithRetries(RetryingCallable&lt;T&gt; callable, int callTimeout)<a name="line.96"></a>
+<span class="sourceLineNo">097</span>  throws IOException, RuntimeException {<a name="line.97"></a>
+<span class="sourceLineNo">098</span>    List&lt;RetriesExhaustedException.ThrowableWithExtraContext&gt; exceptions = new ArrayList&lt;&gt;();<a name="line.98"></a>
+<span class="sourceLineNo">099</span>    tracker.start();<a name="line.99"></a>
+<span class="sourceLineNo">100</span>    context.clear();<a name="line.100"></a>
+<span class="sourceLineNo">101</span>    for (int tries = 0;; tries++) {<a name="line.101"></a>
+<span class="sourceLineNo">102</span>      long expectedSleep;<a name="line.102"></a>
+<span class="sourceLineNo">103</span>      try {<a name="line.103"></a>
+<span class="sourceLineNo">104</span>        // bad cache entries are cleared in the call to RetryingCallable#throwable() in catch block<a name="line.104"></a>
+<span class="sourceLineNo">105</span>        callable.prepare(tries != 0);<a name="line.105"></a>
+<span class="sourceLineNo">106</span>        interceptor.intercept(context.prepare(callable, tries));<a name="line.106"></a>
+<span class="sourceLineNo">107</span>        return callable.call(getTimeout(callTimeout));<a name="line.107"></a>
+<span class="sourceLineNo">108</span>      } catch (PreemptiveFastFailException e) {<a name="line.108"></a>
+<span class="sourceLineNo">109</span>        throw e;<a name="line.109"></a>
+<span class="sourceLineNo">110</span>      } catch (Throwable t) {<a name="line.110"></a>
+<span class="sourceLineNo">111</span>        Throwable e = t.getCause();<a name="line.111"></a>
+<span class="sourceLineNo">112</span>        ExceptionUtil.rethrowIfInterrupt(t);<a name="line.112"></a>
+<span class="sourceLineNo">113</span>        Throwable cause = t.getCause();<a name="line.113"></a>
+<span class="sourceLineNo">114</span>        if (cause instanceof DoNotRetryIOException) {<a name="line.114"></a>
+<span class="sourceLineNo">115</span>          // Fail fast<a name="line.115"></a>
+<span class="sourceLineNo">116</span>          throw (DoNotRetryIOException) cause;<a name="line.116"></a>
+<span class="sourceLineNo">117</span>        }<a name="line.117"></a>
+<span class="sourceLineNo">118</span>        // translateException throws exception when should not retry: i.e. when request is bad.<a name="line.118"></a>
+<span class="sourceLineNo">119</span>        interceptor.handleFailure(context, t);<a name="line.119"></a>
+<span class="sourceLineNo">120</span>        t = translateException(t);<a name="line.120"></a>
+<span class="sourceLineNo">121</span><a name="line.121"></a>
+<span class="sourceLineNo">122</span>        if (tries &gt; startLogErrorsCnt) {<a name="line.122"></a>
+<span class="sourceLineNo">123</span>          if (LOG.isInfoEnabled()) {<a name="line.123"></a>
+<span class="sourceLineNo">124</span>            StringBuilder builder = new StringBuilder("Call exception, tries=").append(tries)<a name="line.124"></a>
+<span class="sourceLineNo">125</span>              .append(", retries=").append(tries).append(", started=")<a name="line.125"></a>
+<span class="sourceLineNo">126</span>              .append((EnvironmentEdgeManager.currentTime() - tracker.getStartTime()))<a name="line.126"></a>
+<span class="sourceLineNo">127</span>              .append(" ms ago, ").append("cancelled=").append(cancelled.get())<a name="line.127"></a>
+<span class="sourceLineNo">128</span>              .append(", msg=").append(t.getMessage())<a name="line.128"></a>
+<span class="sourceLineNo">129</span>              .append(", details=").append(callable.getExceptionMessageAdditionalDetail());<a name="line.129"></a>
+<span class="sourceLineNo">130</span>            if (LOG.isDebugEnabled()) {<a name="line.130"></a>
+<span class="sourceLineNo">131</span>              builder.append(", exception=").append(StringUtils.stringifyException(t));<a name="line.131"></a>
+<span class="sourceLineNo">132</span>              LOG.debug(builder.toString());<a name="line.132"></a>
+<span class="sourceLineNo">133</span>            } else {<a name="line.133"></a>
+<span class="sourceLineNo">134</span>              LOG.info(builder.toString());<a name="line.134"></a>
+<span class="sourceLineNo">135</span>            }<a name="line.135"></a>
+<span class="sourceLineNo">136</span>          }<a name="line.136"></a>
+<span class="sourceLineNo">137</span>        }<a name="line.137"></a>
+<span class="sourceLineNo">138</span><a name="line.138"></a>
+<span class="sourceLineNo">139</span>        callable.throwable(t, maxAttempts != 1);<a name="line.139"></a>
+<span class="sourceLineNo">140</span>        RetriesExhaustedException.ThrowableWithExtraContext qt =<a name="line.140"></a>
+<span class="sourceLineNo">141</span>            new RetriesExhaustedException.ThrowableWithExtraContext(t,<a name="line.141"></a>
+<span class="sourceLineNo">142</span>                EnvironmentEdgeManager.currentTime(), toString());<a name="line.142"></a>
+<span class="sourceLineNo">143</span>        exceptions.add(qt);<a name="line.143"></a>
+<span class="sourceLineNo">144</span>        if (tries &gt;= maxAttempts - 1) {<a name="line.144"></a>
+<span class="sourceLineNo">145</span>          throw new RetriesExhaustedException(tries, exceptions);<a name="line.145"></a>
+<span class="sourceLineNo">146</span>        }<a name="line.146"></a>
+<span class="sourceLineNo">147</span>        // If the server is dead, we need to wait a little before retrying, to give<a name="line.147"></a>
+<span class="sourceLineNo">148</span>        // a chance to the regions to be moved<a name="line.148"></a>
+<span class="sourceLineNo">149</span>        // get right pause time, start by RETRY_BACKOFF[0] * pauseBase, where pauseBase might be<a name="line.149"></a>
+<span class="sourceLineNo">150</span>        // special when encountering CallQueueTooBigException, see #HBASE-17114<a name="line.150"></a>
+<span class="sourceLineNo">151</span>        long pauseBase = (t instanceof CallQueueTooBigException) ? pauseForCQTBE : pause;<a name="line.151"></a>
+<span class="sourceLineNo">152</span>        expectedSleep = callable.sleep(pauseBase, tries);<a name="line.152"></a>
+<span class="sourceLineNo">153</span><a name="line.153"></a>
+<span class="sourceLineNo">154</span>        // If, after the planned sleep, there won't be enough time left, we stop now.<a name="line.154"></a>
+<span class="sourceLineNo">155</span>        long duration = singleCallDuration(expectedSleep);<a name="line.155"></a>
+<span class="sourceLineNo">156</span>        if (duration &gt; callTimeout) {<a name="line.156"></a>
+<span class="sourceLineNo">157</span>          String msg = "callTimeout=" + callTimeout + ", callDuration=" + duration +<a name="line.157"></a>
+<span class="sourceLineNo">158</span>              ": " +  t.getMessage() + " " + callable.getExceptionMessageAdditionalDetail();<a name="line.158"></a>
+<span class="sourceLineNo">159</span>          throw (SocketTimeoutException)(new SocketTimeoutException(msg).initCause(t));<a name="line.159"></a>
+<span class="sourceLineNo">160</span>        }<a name="line.160"></a>
+<span class="sourceLineNo">161</span>      } finally {<a name="line.161"></a>
+<span class="sourceLineNo">162</span>        interceptor.updateFailureInfo(context);<a name="line.162"></a>
+<span class="sourceLineNo">163</span>      }<a name="line.163"></a>
+<span class="sourceLineNo">164</span>      try {<a name="line.164"></a>
+<span class="sourceLineNo">165</span>        if (expectedSleep &gt; 0) {<a name="line.165"></a>
+<span class="sourceLineNo">166</span>          synchronized (cancelled) {<a name="line.166"></a>
+<span class="sourceLineNo">167</span>            if (cancelled.get()) return null;<a name="line.167"></a>
+<span class="sourceLineNo">168</span>            cancelled.wait(expectedSleep);<a name="line.168"></a>
+<span class="sourceLineNo">169</span>          }<a name="line.169"></a>
+<span class="sourceLineNo">170</span>        }<a name="line.170"></a>
+<span class="sourceLineNo">171</span>        if (cancelled.get()) return null;<a name="line.171"></a>
+<span class="sourceLineNo">172</span>      } catch (InterruptedException e) {<a name="line.172"></a>
+<span class="sourceLineNo">173</span>        throw new InterruptedIOException("Interrupted after " + tries<a name="line.173"></a>
+<span class="sourceLineNo">174</span>            + " tries while maxAttempts=" + maxAttempts);<a name="line.174"></a>
+<span class="sourceLineNo">175</span>      }<a name="line.175"></a>
+<span class="sourceLineNo">176</span>    }<a name="line.176"></a>
+<span class="sourceLineNo">177</span>  }<a name="line.177"></a>
+<span class="sourceLineNo">178</span><a name="line.178"></a>
+<span class="sourceLineNo">179</span>  /**<a name="line.179"></a>
+<span class="sourceLineNo">180</span>   * @return Calculate how long a single call took<a name="line.180"></a>
+<span class="sourceLineNo">181</span>   */<a name="line.181"></a>
+<span class="sourceLineNo">182</span>  private long singleCallDuration(final long expectedSleep) {<a name="line.182"></a>
+<span class="sourceLineNo">183</span>    return (EnvironmentEdgeManager.currentTime() - tracker.getStartTime()) + expectedSleep;<a name="line.183"></a>
+<span class="sourceLineNo">184</span>  }<a name="line.184"></a>
+<span class="sourceLineNo">185</span><a name="line.185"></a>
+<span class="sourceLineNo">186</span>  @Override<a name="line.186"></a>
+<span class="sourceLineNo">187</span>  public T callWithoutRetries(RetryingCallable&lt;T&gt; callable, int callTimeout)<a name="line.187"></a>
+<span class="sourceLineNo">188</span>  throws IOException, RuntimeException {<a name="line.188"></a>
+<span class="sourceLineNo">189</span>    // The code of this method should be shared with withRetries.<a name="line.189"></a>
+<span class="sourceLineNo">190</span>    try {<a name="line.190"></a>
+<span class="sourceLineNo">191</span>      callable.prepare(false);<a name="line.191"></a>
+<span class="sourceLineNo">192</span>      return callable.call(callTimeout);<a name="line.192"></a>
+<span class="sourceLineNo">193</span>    } catch (Throwable t) {<a name="line.193"></a>
+<span class="sourceLineNo">194</span>      Throwable t2 = translateException(t);<a name="line.194"></a>
+<span class="sourceLineNo">195</span>      ExceptionUtil.rethrowIfInterrupt(t2);<a name="line.195"></a>
+<span class="sourceLineNo">196</span>      // It would be nice to clear the location cache here.<a name="line.196"></a>
+<span class="sourceLineNo">197</span>      if (t2 instanceof IOException) {<a name="line.197"></a>
+<span class="sourceLineNo">198</span>        throw (IOException)t2;<a name="line.198"></a>
+<span class="sourceLineNo">199</span>      } else {<a name="line.199"></a>
+<span class="sourceLineNo">200</span>        throw new RuntimeException(t2);<a name="line.200"></a>
+<span class="sourceLineNo">201</span>      }<a name="line.201"></a>
+<span class="sourceLineNo">202</span>    }<a name="line.202"></a>
+<span class="sourceLineNo">203</span>  }<a name="line.203"></a>
+<span class="sourceLineNo">204</span><a name="line.204"></a>
+<span class="sourceLineNo">205</span>  /**<a name="line.205"></a>
+<span class="sourceLineNo">206</span>   * Get the good or the remote exception if any, throws the DoNotRetryIOException.<a name="line.206"></a>
+<span class="sourceLineNo">207</span>   * @param t the throwable to analyze<a name="line.207"></a>
+<span class="sourceLineNo">208</span>   * @return the translated exception, if it's not a DoNotRetryIOException<a name="line.208"></a>
+<span class="sourceLineNo">209</span>   * @throws DoNotRetryIOException - if we find it, we throw it instead of translating.<a name="line.209"></a>
+<span class="sourceLineNo">210</span>   */<a name="line.210"></a>
+<span class="sourceLineNo">211</span>  static Throwable translateException(Throwable t) throws DoNotRetryIOException {<a name="line.211"></a>
+<span class="sourceLineNo">212</span>    if (t instanceof UndeclaredThrowableException) {<a name="line.212"></a>
+<span class="sourceLineNo">213</span>      if (t.getCause() != null) {<a name="line.213"></a>
+<span class="sourceLineNo">214</span>        t = t.getCause();<a name="line.214"></a>
+<span class="sourceLineNo">215</span>      }<a name="line.215"></a>
+<span class="sourceLineNo">216</span>    }<a name="line.216"></a>
+<span class="sourceLineNo">217</span>    if (t instanceof RemoteException) {<a name="line.217"></a>
+<span class="sourceLineNo">218</span>      t = ((RemoteException)t).unwrapRemoteException();<a name="line.218"></a>
+<span class="sourceLineNo">219</span>    }<a name="line.219"></a>
+<span class="sourceLineNo">220</span>    if (t instanceof LinkageError) {<a name="line.220"></a>
+<span class="sourceLineNo">221</span>      throw new DoNotRetryIOException(t);<a name="line.221"></a>
+<span class="sourceLineNo">222</span>    }<a name="line.222"></a>
+<span class="sourceLineNo">223</span>    if (t instanceof ServiceException) {<a name="line.223"></a>
+<span class="sourceLineNo">224</span>      ServiceException se = (ServiceException)t;<a name="line.224"></a>
+<span class="sourceLineNo">225</span>      Throwable cause = se.getCause();<a name="line.225"></a>
+<span class="sourceLineNo">226</span>      if (cause != null &amp;&amp; cause instanceof DoNotRetryIOException) {<a name="line.226"></a>
+<span class="sourceLineNo">227</span>        throw (DoNotRetryIOException)cause;<a name="line.227"></a>
+<span class="sourceLineNo">228</span>      }<a name="line.228"></a>
+<span class="sourceLineNo">229</span>      // Don't let ServiceException out; its rpc specific.<a name="line.229"></a>
+<span class="sourceLineNo">230</span>      t = cause;<a name="line.230"></a>
+<span class="sourceLineNo">231</span>      // t could be a RemoteException so go around again.<a name="line.231"></a>
+<span class="sourceLineNo">232</span>      translateException(t);<a name="line.232"></a>
+<span class="sourceLineNo">233</span>    } else if (t instanceof DoNotRetryIOException) {<a name="line.233"></a>
+<span class="sourceLineNo">234</span>      throw (DoNotRetryIOException)t;<a name="line.234"></a>
+<span class="sourceLineNo">235</span>    }<a name="line.235"></a>
+<span class="sourceLineNo">236</span>    return t;<a name="line.236"></a>
+<span class="sourceLineNo">237</span>  }<a name="line.237"></a>
+<span class="sourceLineNo">238</span><a name="line.238"></a>
+<span class="sourceLineNo">239</span>  private int getTimeout(int callTimeout){<a name="line.239"></a>
+<span class="sourceLineNo">240</span>    int timeout = tracker.getRemainingTime(callTimeout);<a name="line.240"></a>
+<span class="sourceLineNo">241</span>    if (timeout &lt;= 0 || rpcTimeout &gt; 0 &amp;&amp; rpcTimeout &lt; timeout){<a name="line.241"></a>
+<span class="sourceLineNo">242</span>      timeout = rpcTimeout;<a name="line.242"></a>
+<span class="sourceLineNo">243</span>    }<a name="line.243"></a>
+<span class="sourceLineNo">244</span>    return timeout;<a name="line.244"></a>
+<span class="sourceLineNo">245</span>  }<a name="line.245"></a>
+<span class="sourceLineNo">246</span><a name="line.246"></a>
+<span class="sourceLineNo">247</span>  @Override<a name="line.247"></a>
+<span class="sourceLineNo">248</span>  public String toString() {<a name="line.248"></a>
+<span class="sourceLineNo">249</span>    return "RpcRetryingCaller{" + "globalStartTime=" + tracker.getStartTime() +<a name="line.249"></a>
+<span class="sourceLineNo">250</span>        ", pause=" + pause + ", maxAttempts=" + maxAttempts + '}';<a name="line.250"></a>
+<span class="sourceLineNo">251</span>  }<a name="line.251"></a>
+<span class="sourceLineNo">252</span>}<a name="line.252"></a>
 
 
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/c54c242b/devapidocs/src-html/org/apache/hadoop/hbase/client/ZKAsyncRegistry.Converter.html
----------------------------------------------------------------------
diff --git a/devapidocs/src-html/org/apache/hadoop/hbase/client/ZKAsyncRegistry.Converter.html b/devapidocs/src-html/org/apache/hadoop/hbase/client/ZKAsyncRegistry.Converter.html
new file mode 100644
index 0000000..d8722e4
--- /dev/null
+++ b/devapidocs/src-html/org/apache/hadoop/hbase/client/ZKAsyncRegistry.Converter.html
@@ -0,0 +1,302 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html lang="en">
+<head>
+<title>Source code</title>
+<link rel="stylesheet" type="text/css" href="../../../../../../stylesheet.css" title="Style">
+</head>
+<body>
+<div class="sourceContainer">
+<pre><span class="sourceLineNo">001</span>/**<a name="line.1"></a>
+<span class="sourceLineNo">002</span> * Licensed to the Apache Software Foundation (ASF) under one<a name="line.2"></a>
+<span class="sourceLineNo">003</span> * or more contributor license agreements.  See the NOTICE file<a name="line.3"></a>
+<span class="sourceLineNo">004</span> * distributed with this work for additional information<a name="line.4"></a>
+<span class="sourceLineNo">005</span> * regarding copyright ownership.  The ASF licenses this file<a name="line.5"></a>
+<span class="sourceLineNo">006</span> * to you under the Apache License, Version 2.0 (the<a name="line.6"></a>
+<span class="sourceLineNo">007</span> * "License"); you may not use this file except in compliance<a name="line.7"></a>
+<span class="sourceLineNo">008</span> * with the License.  You may obtain a copy of the License at<a name="line.8"></a>
+<span class="sourceLineNo">009</span> *<a name="line.9"></a>
+<span class="sourceLineNo">010</span> *     http://www.apache.org/licenses/LICENSE-2.0<a name="line.10"></a>
+<span class="sourceLineNo">011</span> *<a name="line.11"></a>
+<span class="sourceLineNo">012</span> * Unless required by applicable law or agreed to in writing, software<a name="line.12"></a>
+<span class="sourceLineNo">013</span> * distributed under the License is distributed on an "AS IS" BASIS,<a name="line.13"></a>
+<span class="sourceLineNo">014</span> * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.<a name="line.14"></a>
+<span class="sourceLineNo">015</span> * See the License for the specific language governing permissions and<a name="line.15"></a>
+<span class="sourceLineNo">016</span> * limitations under the License.<a name="line.16"></a>
+<span class="sourceLineNo">017</span> */<a name="line.17"></a>
+<span class="sourceLineNo">018</span>package org.apache.hadoop.hbase.client;<a name="line.18"></a>
+<span class="sourceLineNo">019</span><a name="line.19"></a>
+<span class="sourceLineNo">020</span>import static org.apache.hadoop.hbase.client.RegionInfo.DEFAULT_REPLICA_ID;<a name="line.20"></a>
+<span class="sourceLineNo">021</span>import static org.apache.hadoop.hbase.client.RegionInfoBuilder.FIRST_META_REGIONINFO;<a name="line.21"></a>
+<span class="sourceLineNo">022</span>import static org.apache.hadoop.hbase.client.RegionReplicaUtil.getRegionInfoForDefaultReplica;<a name="line.22"></a>
+<span class="sourceLineNo">023</span>import static org.apache.hadoop.hbase.client.RegionReplicaUtil.getRegionInfoForReplica;<a name="line.23"></a>
+<span class="sourceLineNo">024</span>import static org.apache.hadoop.hbase.shaded.protobuf.ProtobufUtil.lengthOfPBMagic;<a name="line.24"></a>
+<span class="sourceLineNo">025</span>import static org.apache.hadoop.hbase.zookeeper.ZKMetadata.removeMetaData;<a name="line.25"></a>
+<span class="sourceLineNo">026</span><a name="line.26"></a>
+<span class="sourceLineNo">027</span>import java.io.IOException;<a name="line.27"></a>
+<span class="sourceLineNo">028</span>import java.util.concurrent.CompletableFuture;<a name="line.28"></a>
+<span class="sourceLineNo">029</span><a name="line.29"></a>
+<span class="sourceLineNo">030</span>import org.apache.commons.lang3.mutable.MutableInt;<a name="line.30"></a>
+<span class="sourceLineNo">031</span>import org.apache.commons.logging.Log;<a name="line.31"></a>
+<span class="sourceLineNo">032</span>import org.apache.commons.logging.LogFactory;<a name="line.32"></a>
+<span class="sourceLineNo">033</span>import org.apache.hadoop.conf.Configuration;<a name="line.33"></a>
+<span class="sourceLineNo">034</span>import org.apache.hadoop.hbase.ClusterId;<a name="line.34"></a>
+<span class="sourceLineNo">035</span>import org.apache.hadoop.hbase.HRegionLocation;<a name="line.35"></a>
+<span class="sourceLineNo">036</span>import org.apache.hadoop.hbase.RegionLocations;<a name="line.36"></a>
+<span class="sourceLineNo">037</span>import org.apache.hadoop.hbase.ServerName;<a name="line.37"></a>
+<span class="sourceLineNo">038</span>import org.apache.hadoop.hbase.exceptions.DeserializationException;<a name="line.38"></a>
+<span class="sourceLineNo">039</span>import org.apache.hadoop.hbase.master.RegionState;<a name="line.39"></a>
+<span class="sourceLineNo">040</span>import org.apache.hadoop.hbase.util.Pair;<a name="line.40"></a>
+<span class="sourceLineNo">041</span>import org.apache.hadoop.hbase.zookeeper.ReadOnlyZKClient;<a name="line.41"></a>
+<span class="sourceLineNo">042</span>import org.apache.hadoop.hbase.zookeeper.ZNodePaths;<a name="line.42"></a>
+<span class="sourceLineNo">043</span>import org.apache.yetus.audience.InterfaceAudience;<a name="line.43"></a>
+<span class="sourceLineNo">044</span><a name="line.44"></a>
+<span class="sourceLineNo">045</span>import org.apache.hadoop.hbase.shaded.com.google.common.annotations.VisibleForTesting;<a name="line.45"></a>
+<span class="sourceLineNo">046</span>import org.apache.hadoop.hbase.shaded.protobuf.generated.HBaseProtos;<a name="line.46"></a>
+<span class="sourceLineNo">047</span>import org.apache.hadoop.hbase.shaded.protobuf.generated.ZooKeeperProtos;<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> * Fetch the registry data from zookeeper.<a name="line.50"></a>
+<span class="sourceLineNo">051</span> */<a name="line.51"></a>
+<span class="sourceLineNo">052</span>@InterfaceAudience.Private<a name="line.52"></a>
+<span class="sourceLineNo">053</span>class ZKAsyncRegistry implements AsyncRegistry {<a name="line.53"></a>
+<span class="sourceLineNo">054</span><a name="line.54"></a>
+<span class="sourceLineNo">055</span>  private static final Log LOG = LogFactory.getLog(ZKAsyncRegistry.class);<a name="line.55"></a>
+<span class="sourceLineNo">056</span><a name="line.56"></a>
+<span class="sourceLineNo">057</span>  private final ReadOnlyZKClient zk;<a name="line.57"></a>
+<span class="sourceLineNo">058</span><a name="line.58"></a>
+<span class="sourceLineNo">059</span>  private final ZNodePaths znodePaths;<a name="line.59"></a>
+<span class="sourceLineNo">060</span><a name="line.60"></a>
+<span class="sourceLineNo">061</span>  ZKAsyncRegistry(Configuration conf) {<a name="line.61"></a>
+<span class="sourceLineNo">062</span>    this.znodePaths = new ZNodePaths(conf);<a name="line.62"></a>
+<span class="sourceLineNo">063</span>    this.zk = new ReadOnlyZKClient(conf);<a name="line.63"></a>
+<span class="sourceLineNo">064</span>  }<a name="line.64"></a>
+<span class="sourceLineNo">065</span><a name="line.65"></a>
+<span class="sourceLineNo">066</span>  private interface Converter&lt;T&gt; {<a name="line.66"></a>
+<span class="sourceLineNo">067</span>    T convert(byte[] data) throws Exception;<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>  private &lt;T&gt; CompletableFuture&lt;T&gt; getAndConvert(String path, Converter&lt;T&gt; converter) {<a name="line.70"></a>
+<span class="sourceLineNo">071</span>    CompletableFuture&lt;T&gt; future = new CompletableFuture&lt;&gt;();<a name="line.71"></a>
+<span class="sourceLineNo">072</span>    zk.get(path).whenComplete((data, error) -&gt; {<a name="line.72"></a>
+<span class="sourceLineNo">073</span>      if (error != null) {<a name="line.73"></a>
+<span class="sourceLineNo">074</span>        future.completeExceptionally(error);<a name="line.74"></a>
+<span class="sourceLineNo">075</span>        return;<a name="line.75"></a>
+<span class="sourceLineNo">076</span>      }<a name="line.76"></a>
+<span class="sourceLineNo">077</span>      try {<a name="line.77"></a>
+<span class="sourceLineNo">078</span>        future.complete(converter.convert(data));<a name="line.78"></a>
+<span class="sourceLineNo">079</span>      } catch (Exception e) {<a name="line.79"></a>
+<span class="sourceLineNo">080</span>        future.completeExceptionally(e);<a name="line.80"></a>
+<span class="sourceLineNo">081</span>      }<a name="line.81"></a>
+<span class="sourceLineNo">082</span>    });<a name="line.82"></a>
+<span class="sourceLineNo">083</span>    return future;<a name="line.83"></a>
+<span class="sourceLineNo">084</span>  }<a name="line.84"></a>
+<span class="sourceLineNo">085</span><a name="line.85"></a>
+<span class="sourceLineNo">086</span>  private static String getClusterId(byte[] data) throws DeserializationException {<a name="line.86"></a>
+<span class="sourceLineNo">087</span>    if (data == null || data.length == 0) {<a name="line.87"></a>
+<span class="sourceLineNo">088</span>      return null;<a name="line.88"></a>
+<span class="sourceLineNo">089</span>    }<a name="line.89"></a>
+<span class="sourceLineNo">090</span>    data = removeMetaData(data);<a name="line.90"></a>
+<span class="sourceLineNo">091</span>    return ClusterId.parseFrom(data).toString();<a name="line.91"></a>
+<span class="sourceLineNo">092</span>  }<a name="line.92"></a>
+<span class="sourceLineNo">093</span><a name="line.93"></a>
+<span class="sourceLineNo">094</span>  @Override<a name="line.94"></a>
+<span class="sourceLineNo">095</span>  public CompletableFuture&lt;String&gt; getClusterId() {<a name="line.95"></a>
+<span class="sourceLineNo">096</span>    return getAndConvert(znodePaths.clusterIdZNode, ZKAsyncRegistry::getClusterId);<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>  @VisibleForTesting<a name="line.99"></a>
+<span class="sourceLineNo">100</span>  ReadOnlyZKClient getZKClient() {<a name="line.100"></a>
+<span class="sourceLineNo">101</span>    return zk;<a name="line.101"></a>
+<span class="sourceLineNo">102</span>  }<a name="line.102"></a>
+<span class="sourceLineNo">103</span><a name="line.103"></a>
+<span class="sourceLineNo">104</span>  private static ZooKeeperProtos.MetaRegionServer getMetaProto(byte[] data) throws IOException {<a name="line.104"></a>
+<span class="sourceLineNo">105</span>    if (data == null || data.length == 0) {<a name="line.105"></a>
+<span class="sourceLineNo">106</span>      return null;<a name="line.106"></a>
+<span class="sourceLineNo">107</span>    }<a name="line.107"></a>
+<span class="sourceLineNo">108</span>    data = removeMetaData(data);<a name="line.108"></a>
+<span class="sourceLineNo">109</span>    int prefixLen = lengthOfPBMagic();<a name="line.109"></a>
+<span class="sourceLineNo">110</span>    return ZooKeeperProtos.MetaRegionServer.parser().parseFrom(data, prefixLen,<a name="line.110"></a>
+<span class="sourceLineNo">111</span>      data.length - prefixLen);<a name="line.111"></a>
+<span class="sourceLineNo">112</span>  }<a name="line.112"></a>
+<span class="sourceLineNo">113</span><a name="line.113"></a>
+<span class="sourceLineNo">114</span>  private static void tryComplete(MutableInt remaining, HRegionLocation[] locs,<a name="line.114"></a>
+<span class="sourceLineNo">115</span>      CompletableFuture&lt;RegionLocations&gt; future) {<a name="line.115"></a>
+<span class="sourceLineNo">116</span>    remaining.decrement();<a name="line.116"></a>
+<span class="sourceLineNo">117</span>    if (remaining.intValue() &gt; 0) {<a name="line.117"></a>
+<span class="sourceLineNo">118</span>      return;<a name="line.118"></a>
+<span class="sourceLineNo">119</span>    }<a name="line.119"></a>
+<span class="sourceLineNo">120</span>    future.complete(new RegionLocations(locs));<a name="line.120"></a>
+<span class="sourceLineNo">121</span>  }<a name="line.121"></a>
+<span class="sourceLineNo">122</span><a name="line.122"></a>
+<span class="sourceLineNo">123</span>  private Pair&lt;RegionState.State, ServerName&gt; getStateAndServerName(<a name="line.123"></a>
+<span class="sourceLineNo">124</span>      ZooKeeperProtos.MetaRegionServer proto) {<a name="line.124"></a>
+<span class="sourceLineNo">125</span>    RegionState.State state;<a name="line.125"></a>
+<span class="sourceLineNo">126</span>    if (proto.hasState()) {<a name="line.126"></a>
+<span class="sourceLineNo">127</span>      state = RegionState.State.convert(proto.getState());<a name="line.127"></a>
+<span class="sourceLineNo">128</span>    } else {<a name="line.128"></a>
+<span class="sourceLineNo">129</span>      state = RegionState.State.OPEN;<a name="line.129"></a>
+<span class="sourceLineNo">130</span>    }<a name="line.130"></a>
+<span class="sourceLineNo">131</span>    HBaseProtos.ServerName snProto = proto.getServer();<a name="line.131"></a>
+<span class="sourceLineNo">132</span>    return Pair.newPair(state,<a name="line.132"></a>
+<span class="sourceLineNo">133</span>      ServerName.valueOf(snProto.getHostName(), snProto.getPort(), snProto.getStartCode()));<a name="line.133"></a>
+<span class="sourceLineNo">134</span>  }<a name="line.134"></a>
+<span class="sourceLineNo">135</span><a name="line.135"></a>
+<span class="sourceLineNo">136</span>  @Override<a name="line.136"></a>
+<span class="sourceLineNo">137</span>  public CompletableFuture&lt;RegionLocations&gt; getMetaRegionLocation() {<a name="line.137"></a>
+<span class="sourceLineNo">138</span>    CompletableFuture&lt;RegionLocations&gt; future = new CompletableFuture&lt;&gt;();<a name="line.138"></a>
+<span class="sourceLineNo">139</span>    HRegionLocation[] locs = new HRegionLocation[znodePaths.metaReplicaZNodes.size()];<a name="line.139"></a>
+<span class="sourceLineNo">140</span>    MutableInt remaining = new MutableInt(locs.length);<a name="line.140"></a>
+<span class="sourceLineNo">141</span>    znodePaths.metaReplicaZNodes.forEach((replicaId, path) -&gt; {<a name="line.141"></a>
+<span class="sourceLineNo">142</span>      if (replicaId == DEFAULT_REPLICA_ID) {<a name="line.142"></a>
+<span class="sourceLineNo">143</span>        getAndConvert(path, ZKAsyncRegistry::getMetaProto).whenComplete((proto, error) -&gt; {<a name="line.143"></a>
+<span class="sourceLineNo">144</span>          if (error != null) {<a name="line.144"></a>
+<span class="sourceLineNo">145</span>            future.completeExceptionally(error);<a name="line.145"></a>
+<span class="sourceLineNo">146</span>            return;<a name="line.146"></a>
+<span class="sourceLineNo">147</span>          }<a name="line.147"></a>
+<span class="sourceLineNo">148</span>          if (proto == null) {<a name="line.148"></a>
+<span class="sourceLineNo">149</span>            future.completeExceptionally(new IOException("Meta znode is null"));<a name="line.149"></a>
+<span class="sourceLineNo">150</span>            return;<a name="line.150"></a>
+<span class="sourceLineNo">151</span>          }<a name="line.151"></a>
+<span class="sourceLineNo">152</span>          Pair&lt;RegionState.State, ServerName&gt; stateAndServerName = getStateAndServerName(proto);<a name="line.152"></a>
+<span class="sourceLineNo">153</span>          if (stateAndServerName.getFirst() != RegionState.State.OPEN) {<a name="line.153"></a>
+<span class="sourceLineNo">154</span>            future.completeExceptionally(<a name="line.154"></a>
+<span class="sourceLineNo">155</span>              new IOException("Meta region is in state " + stateAndServerName.getFirst()));<a name="line.155"></a>
+<span class="sourceLineNo">156</span>            return;<a name="line.156"></a>
+<span class="sourceLineNo">157</span>          }<a name="line.157"></a>
+<span class="sourceLineNo">158</span>          locs[DEFAULT_REPLICA_ID] =<a name="line.158"></a>
+<span class="sourceLineNo">159</span>              new HRegionLocation(getRegionInfoForDefaultReplica(FIRST_META_REGIONINFO),<a name="line.159"></a>
+<span class="sourceLineNo">160</span>                  stateAndServerName.getSecond());<a name="line.160"></a>
+<span class="sourceLineNo">161</span>          tryComplete(remaining, locs, future);<a name="line.161"></a>
+<span class="sourceLineNo">162</span>        });<a name="line.162"></a>
+<span class="sourceLineNo">163</span>      } else {<a name="line.163"></a>
+<span class="sourceLineNo">164</span>        getAndConvert(path, ZKAsyncRegistry::getMetaProto).whenComplete((proto, error) -&gt; {<a name="line.164"></a>
+<span class="sourceLineNo">165</span>          if (future.isDone()) {<a name="line.165"></a>
+<span class="sourceLineNo">166</span>            return;<a name="line.166"></a>
+<span class="sourceLineNo">167</span>          }<a name="line.167"></a>
+<span class="sourceLineNo">168</span>          if (error != null) {<a name="line.168"></a>
+<span class="sourceLineNo">169</span>            LOG.warn("Failed to fetch " + path, error);<a name="line.169"></a>
+<span class="sourceLineNo">170</span>            locs[replicaId] = null;<a name="line.170"></a>
+<span class="sourceLineNo">171</span>          } else if (proto == null) {<a name="line.171"></a>
+<span class="sourceLineNo">172</span>            LOG.warn("Meta znode for replica " + replicaId + " is null");<a name="line.172"></a>
+<span class="sourceLineNo">173</span>            locs[replicaId] = null;<a name="line.173"></a>
+<span class="sourceLineNo">174</span>          } else {<a name="line.174"></a>
+<span class="sourceLineNo">175</span>            Pair&lt;RegionState.State, ServerName&gt; stateAndServerName = getStateAndServerName(proto);<a name="line.175"></a>
+<span class="sourceLineNo">176</span>            if (stateAndServerName.getFirst() != RegionState.State.OPEN) {<a name="line.176"></a>
+<span class="sourceLineNo">177</span>              LOG.warn("Meta region for replica " + replicaId + " is in state " +<a name="line.177"></a>
+<span class="sourceLineNo">178</span>                  stateAndServerName.getFirst());<a name="line.178"></a>
+<span class="sourceLineNo">179</span>              locs[replicaId] = null;<a name="line.179"></a>
+<span class="sourceLineNo">180</span>            } else {<a name="line.180"></a>
+<span class="sourceLineNo">181</span>              locs[replicaId] =<a name="line.181"></a>
+<span class="sourceLineNo">182</span>                  new HRegionLocation(getRegionInfoForReplica(FIRST_META_REGIONINFO, replicaId),<a name="line.182"></a>
+<span class="sourceLineNo">183</span>                      stateAndServerName.getSecond());<a name="line.183"></a>
+<span class="sourceLineNo">184</span>            }<a name="line.184"></a>
+<span class="sourceLineNo">185</span>          }<a name="line.185"></a>
+<span class="sourceLineNo">186</span>          tryComplete(remaining, locs, future);<a name="line.186"></a>
+<span class="sourceLineNo">187</span>        });<a name="line.187"></a>
+<span class="sourceLineNo">188</span>      }<a name="line.188"></a>
+<span class="sourceLineNo">189</span>    });<a name="line.189"></a>
+<span class="sourceLineNo">190</span>    return future;<a name="line.190"></a>
+<span class="sourceLineNo">191</span>  }<a name="line.191"></a>
+<span class="sourceLineNo">192</span><a name="line.192"></a>
+<span class="sourceLineNo">193</span>  @Override<a name="line.193"></a>
+<span class="sourceLineNo">194</span>  public CompletableFuture&lt;Integer&gt; getCurrentNrHRS() {<a name="line.194"></a>
+<span class="sourceLineNo">195</span>    return zk.exists(znodePaths.rsZNode).thenApply(s -&gt; s != null ? s.getNumChildren() : 0);<a name="line.195"></a>
+<span class="sourceLineNo">196</span>  }<a name="line.196"></a>
+<span class="sourceLineNo">197</span><a name="line.197"></a>
+<span class="sourceLineNo">198</span>  private static ZooKeeperProtos.Master getMasterProto(byte[] data) throws IOException {<a name="line.198"></a>
+<span class="sourceLineNo">199</span>    if (data == null || data.length == 0) {<a name="line.199"></a>
+<span class="sourceLineNo">200</span>      return null;<a name="line.200"></a>
+<span class="sourceLineNo">201</span>    }<a name="line.201"></a>
+<span class="sourceLineNo">202</span>    data = removeMetaData(data);<a name="line.202"></a>
+<span class="sourceLineNo">203</span>    int prefixLen = lengthOfPBMagic();<a name="line.203"></a>
+<span class="sourceLineNo">204</span>    return ZooKeeperProtos.Master.parser().parseFrom(data, prefixLen, data.length - prefixLen);<a name="line.204"></a>
+<span class="sourceLineNo">205</span>  }<a name="line.205"></a>
+<span class="sourceLineNo">206</span><a name="line.206"></a>
+<span class="sourceLineNo">207</span>  @Override<a name="line.207"></a>
+<span class="sourceLineNo">208</span>  public CompletableFuture&lt;ServerName&gt; getMasterAddress() {<a name="line.208"></a>
+<span class="sourceLineNo">209</span>    return getAndConvert(znodePaths.masterAddressZNode, ZKAsyncRegistry::getMasterProto)<a name="line.209"></a>
+<span class="sourceLineNo">210</span>        .thenApply(proto -&gt; {<a name="line.210"></a>
+<span class="sourceLineNo">211</span>          if (proto == null) {<a name="line.211"></a>
+<span class="sourceLineNo">212</span>            return null;<a name="line.212"></a>
+<span class="sourceLineNo">213</span>          }<a name="line.213"></a>
+<span class="sourceLineNo">214</span>          HBaseProtos.ServerName snProto = proto.getMaster();<a name="line.214"></a>
+<span class="sourceLineNo">215</span>          return ServerName.valueOf(snProto.getHostName(), snProto.getPort(),<a name="line.215"></a>
+<span class="sourceLineNo">216</span>            snProto.getStartCode());<a name="line.216"></a>
+<span class="sourceLineNo">217</span>        });<a name="line.217"></a>
+<span class="sourceLineNo">218</span>  }<a name="line.218"></a>
+<span class="sourceLineNo">219</span><a name="line.219"></a>
+<span class="sourceLineNo">220</span>  @Override<a name="line.220"></a>
+<span class="sourceLineNo">221</span>  public CompletableFuture&lt;Integer&gt; getMasterInfoPort() {<a name="line.221"></a>
+<span class="sourceLineNo">222</span>    return getAndConvert(znodePaths.masterAddressZNode, ZKAsyncRegistry::getMasterProto)<a name="line.222"></a>
+<span class="sourceLineNo">223</span>        .thenApply(proto -&gt; proto != null ? proto.getInfoPort() : 0);<a name="line.223"></a>
+<span class="sourceLineNo">224</span>  }<a name="line.224"></a>
+<span class="sourceLineNo">225</span><a name="line.225"></a>
+<span class="sourceLineNo">226</span>  @Override<a name="line.226"></a>
+<span class="sourceLineNo">227</span>  public void close() {<a name="line.227"></a>
+<span class="sourceLineNo">228</span>    zk.close();<a name="line.228"></a>
+<span class="sourceLineNo">229</span>  }<a name="line.229"></a>
+<span class="sourceLineNo">230</span>}<a name="line.230"></a>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+</pre>
+</div>
+</body>
+</html>


[37/51] [partial] hbase-site git commit: Published site at .

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/c54c242b/devapidocs/org/apache/hadoop/hbase/wal/class-use/WALEdit.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/wal/class-use/WALEdit.html b/devapidocs/org/apache/hadoop/hbase/wal/class-use/WALEdit.html
index 3d0518e..4d2b81e 100644
--- a/devapidocs/org/apache/hadoop/hbase/wal/class-use/WALEdit.html
+++ b/devapidocs/org/apache/hadoop/hbase/wal/class-use/WALEdit.html
@@ -612,7 +612,7 @@ Input/OutputFormats, a table indexing MapReduce job, and utility methods.</div>
 </td>
 </tr>
 <tr class="altColor">
-<td class="colFirst"><code>void</code></td>
+<td class="colFirst"><code>default void</code></td>
 <td class="colLast"><span class="typeNameLabel">WALActionsListener.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/regionserver/wal/WALActionsListener.html#postAppend-long-long-org.apache.hadoop.hbase.wal.WALKey-org.apache.hadoop.hbase.wal.WALEdit-">postAppend</a></span>(long&nbsp;entryLen,
           long&nbsp;elapsedTimeMillis,
           <a href="../../../../../../org/apache/hadoop/hbase/wal/WALKey.html" title="class in org.apache.hadoop.hbase.wal">WALKey</a>&nbsp;logKey,
@@ -622,19 +622,12 @@ Input/OutputFormats, a table indexing MapReduce job, and utility methods.</div>
 </tr>
 <tr class="rowColor">
 <td class="colFirst"><code>void</code></td>
-<td class="colLast"><span class="typeNameLabel">WALActionsListener.Base.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/regionserver/wal/WALActionsListener.Base.html#postAppend-long-long-org.apache.hadoop.hbase.wal.WALKey-org.apache.hadoop.hbase.wal.WALEdit-">postAppend</a></span>(long&nbsp;entryLen,
-          long&nbsp;elapsedTimeMillis,
-          <a href="../../../../../../org/apache/hadoop/hbase/wal/WALKey.html" title="class in org.apache.hadoop.hbase.wal">WALKey</a>&nbsp;logKey,
-          <a href="../../../../../../org/apache/hadoop/hbase/wal/WALEdit.html" title="class in org.apache.hadoop.hbase.wal">WALEdit</a>&nbsp;logEdit)</code>&nbsp;</td>
-</tr>
-<tr class="altColor">
-<td class="colFirst"><code>void</code></td>
 <td class="colLast"><span class="typeNameLabel">MetricsWAL.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/regionserver/wal/MetricsWAL.html#postAppend-long-long-org.apache.hadoop.hbase.wal.WALKey-org.apache.hadoop.hbase.wal.WALEdit-">postAppend</a></span>(long&nbsp;size,
           long&nbsp;time,
           <a href="../../../../../../org/apache/hadoop/hbase/wal/WALKey.html" title="class in org.apache.hadoop.hbase.wal">WALKey</a>&nbsp;logkey,
           <a href="../../../../../../org/apache/hadoop/hbase/wal/WALEdit.html" title="class in org.apache.hadoop.hbase.wal">WALEdit</a>&nbsp;logEdit)</code>&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>void</code></td>
 <td class="colLast"><span class="typeNameLabel">WALCoprocessorHost.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/regionserver/wal/WALCoprocessorHost.html#postWALWrite-org.apache.hadoop.hbase.client.RegionInfo-org.apache.hadoop.hbase.wal.WALKey-org.apache.hadoop.hbase.wal.WALEdit-">postWALWrite</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/client/RegionInfo.html" title="interface in org.apache.hadoop.hbase.client">RegionInfo</a>&nbsp;info,
             <a href="../../../../../../org/apache/hadoop/hbase/wal/WALKey.html" title="class in org.apache.hadoop.hbase.wal">WALKey</a>&nbsp;logKey,
@@ -645,7 +638,7 @@ Input/OutputFormats, a table indexing MapReduce job, and utility methods.</div>
 </div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>void</code></td>
 <td class="colLast"><span class="typeNameLabel">WALCoprocessorHost.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/regionserver/wal/WALCoprocessorHost.html#preWALWrite-org.apache.hadoop.hbase.client.RegionInfo-org.apache.hadoop.hbase.wal.WALKey-org.apache.hadoop.hbase.wal.WALEdit-">preWALWrite</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/client/RegionInfo.html" title="interface in org.apache.hadoop.hbase.client">RegionInfo</a>&nbsp;info,
            <a href="../../../../../../org/apache/hadoop/hbase/wal/WALKey.html" title="class in org.apache.hadoop.hbase.wal">WALKey</a>&nbsp;logKey,
@@ -656,7 +649,7 @@ Input/OutputFormats, a table indexing MapReduce job, and utility methods.</div>
 </div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>protected long</code></td>
 <td class="colLast"><span class="typeNameLabel">AbstractFSWAL.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/regionserver/wal/AbstractFSWAL.html#stampSequenceIdAndPublishToRingBuffer-org.apache.hadoop.hbase.client.RegionInfo-org.apache.hadoop.hbase.wal.WALKey-org.apache.hadoop.hbase.wal.WALEdit-boolean-com.lmax.disruptor.RingBuffer-">stampSequenceIdAndPublishToRingBuffer</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/client/RegionInfo.html" title="interface in org.apache.hadoop.hbase.client">RegionInfo</a>&nbsp;hri,
                                      <a href="../../../../../../org/apache/hadoop/hbase/wal/WALKey.html" title="class in org.apache.hadoop.hbase.wal">WALKey</a>&nbsp;key,
@@ -664,31 +657,20 @@ Input/OutputFormats, a table indexing MapReduce job, and utility methods.</div>
                                      boolean&nbsp;inMemstore,
                                      com.lmax.disruptor.RingBuffer&lt;<a href="../../../../../../org/apache/hadoop/hbase/regionserver/wal/RingBufferTruck.html" title="class in org.apache.hadoop.hbase.regionserver.wal">RingBufferTruck</a>&gt;&nbsp;ringBuffer)</code>&nbsp;</td>
 </tr>
-<tr class="altColor">
-<td class="colFirst"><code>void</code></td>
-<td class="colLast"><span class="typeNameLabel">WALActionsListener.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/regionserver/wal/WALActionsListener.html#visitLogEntryBeforeWrite-org.apache.hadoop.hbase.HRegionInfo-org.apache.hadoop.hbase.wal.WALKey-org.apache.hadoop.hbase.wal.WALEdit-">visitLogEntryBeforeWrite</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/HRegionInfo.html" title="class in org.apache.hadoop.hbase">HRegionInfo</a>&nbsp;info,
+<tr class="rowColor">
+<td class="colFirst"><code>default void</code></td>
+<td class="colLast"><span class="typeNameLabel">WALActionsListener.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/regionserver/wal/WALActionsListener.html#visitLogEntryBeforeWrite-org.apache.hadoop.hbase.client.RegionInfo-org.apache.hadoop.hbase.wal.WALKey-org.apache.hadoop.hbase.wal.WALEdit-">visitLogEntryBeforeWrite</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/client/RegionInfo.html" title="interface in org.apache.hadoop.hbase.client">RegionInfo</a>&nbsp;info,
                         <a href="../../../../../../org/apache/hadoop/hbase/wal/WALKey.html" title="class in org.apache.hadoop.hbase.wal">WALKey</a>&nbsp;logKey,
                         <a href="../../../../../../org/apache/hadoop/hbase/wal/WALEdit.html" title="class in org.apache.hadoop.hbase.wal">WALEdit</a>&nbsp;logEdit)</code>
 <div class="block">Called before each write.</div>
 </td>
 </tr>
-<tr class="rowColor">
-<td class="colFirst"><code>void</code></td>
-<td class="colLast"><span class="typeNameLabel">WALActionsListener.Base.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/regionserver/wal/WALActionsListener.Base.html#visitLogEntryBeforeWrite-org.apache.hadoop.hbase.HRegionInfo-org.apache.hadoop.hbase.wal.WALKey-org.apache.hadoop.hbase.wal.WALEdit-">visitLogEntryBeforeWrite</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/HRegionInfo.html" title="class in org.apache.hadoop.hbase">HRegionInfo</a>&nbsp;info,
-                        <a href="../../../../../../org/apache/hadoop/hbase/wal/WALKey.html" title="class in org.apache.hadoop.hbase.wal">WALKey</a>&nbsp;logKey,
-                        <a href="../../../../../../org/apache/hadoop/hbase/wal/WALEdit.html" title="class in org.apache.hadoop.hbase.wal">WALEdit</a>&nbsp;logEdit)</code>&nbsp;</td>
-</tr>
 <tr class="altColor">
-<td class="colFirst"><code>void</code></td>
+<td class="colFirst"><code>default void</code></td>
 <td class="colLast"><span class="typeNameLabel">WALActionsListener.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/regionserver/wal/WALActionsListener.html#visitLogEntryBeforeWrite-org.apache.hadoop.hbase.wal.WALKey-org.apache.hadoop.hbase.wal.WALEdit-">visitLogEntryBeforeWrite</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/wal/WALKey.html" title="class in org.apache.hadoop.hbase.wal">WALKey</a>&nbsp;logKey,
                         <a href="../../../../../../org/apache/hadoop/hbase/wal/WALEdit.html" title="class in org.apache.hadoop.hbase.wal">WALEdit</a>&nbsp;logEdit)</code>&nbsp;</td>
 </tr>
 <tr class="rowColor">
-<td class="colFirst"><code>void</code></td>
-<td class="colLast"><span class="typeNameLabel">WALActionsListener.Base.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/regionserver/wal/WALActionsListener.Base.html#visitLogEntryBeforeWrite-org.apache.hadoop.hbase.wal.WALKey-org.apache.hadoop.hbase.wal.WALEdit-">visitLogEntryBeforeWrite</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/wal/WALKey.html" title="class in org.apache.hadoop.hbase.wal">WALKey</a>&nbsp;logKey,
-                        <a href="../../../../../../org/apache/hadoop/hbase/wal/WALEdit.html" title="class in org.apache.hadoop.hbase.wal">WALEdit</a>&nbsp;logEdit)</code>&nbsp;</td>
-</tr>
-<tr class="altColor">
 <td class="colFirst"><code>private static <a href="../../../../../../org/apache/hadoop/hbase/wal/WALKey.html" title="class in org.apache.hadoop.hbase.wal">WALKey</a></code></td>
 <td class="colLast"><span class="typeNameLabel">WALUtil.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/regionserver/wal/WALUtil.html#writeMarker-org.apache.hadoop.hbase.wal.WAL-java.util.NavigableMap-org.apache.hadoop.hbase.client.RegionInfo-org.apache.hadoop.hbase.wal.WALEdit-org.apache.hadoop.hbase.regionserver.MultiVersionConcurrencyControl-">writeMarker</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/wal/WAL.html" title="interface in org.apache.hadoop.hbase.wal">WAL</a>&nbsp;wal,
            <a href="http://docs.oracle.com/javase/8/docs/api/java/util/NavigableMap.html?is-external=true" title="class or interface in java.util">NavigableMap</a>&lt;byte[],<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Integer.html?is-external=true" title="class or interface in java.lang">Integer</a>&gt;&nbsp;replicationScope,

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/c54c242b/devapidocs/org/apache/hadoop/hbase/wal/class-use/WALKey.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/wal/class-use/WALKey.html b/devapidocs/org/apache/hadoop/hbase/wal/class-use/WALKey.html
index 6543f83..f50776a 100644
--- a/devapidocs/org/apache/hadoop/hbase/wal/class-use/WALKey.html
+++ b/devapidocs/org/apache/hadoop/hbase/wal/class-use/WALKey.html
@@ -388,7 +388,7 @@ Input/OutputFormats, a table indexing MapReduce job, and utility methods.</div>
 </td>
 </tr>
 <tr class="rowColor">
-<td class="colFirst"><code>void</code></td>
+<td class="colFirst"><code>default void</code></td>
 <td class="colLast"><span class="typeNameLabel">WALActionsListener.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/regionserver/wal/WALActionsListener.html#postAppend-long-long-org.apache.hadoop.hbase.wal.WALKey-org.apache.hadoop.hbase.wal.WALEdit-">postAppend</a></span>(long&nbsp;entryLen,
           long&nbsp;elapsedTimeMillis,
           <a href="../../../../../../org/apache/hadoop/hbase/wal/WALKey.html" title="class in org.apache.hadoop.hbase.wal">WALKey</a>&nbsp;logKey,
@@ -398,19 +398,12 @@ Input/OutputFormats, a table indexing MapReduce job, and utility methods.</div>
 </tr>
 <tr class="altColor">
 <td class="colFirst"><code>void</code></td>
-<td class="colLast"><span class="typeNameLabel">WALActionsListener.Base.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/regionserver/wal/WALActionsListener.Base.html#postAppend-long-long-org.apache.hadoop.hbase.wal.WALKey-org.apache.hadoop.hbase.wal.WALEdit-">postAppend</a></span>(long&nbsp;entryLen,
-          long&nbsp;elapsedTimeMillis,
-          <a href="../../../../../../org/apache/hadoop/hbase/wal/WALKey.html" title="class in org.apache.hadoop.hbase.wal">WALKey</a>&nbsp;logKey,
-          <a href="../../../../../../org/apache/hadoop/hbase/wal/WALEdit.html" title="class in org.apache.hadoop.hbase.wal">WALEdit</a>&nbsp;logEdit)</code>&nbsp;</td>
-</tr>
-<tr class="rowColor">
-<td class="colFirst"><code>void</code></td>
 <td class="colLast"><span class="typeNameLabel">MetricsWAL.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/regionserver/wal/MetricsWAL.html#postAppend-long-long-org.apache.hadoop.hbase.wal.WALKey-org.apache.hadoop.hbase.wal.WALEdit-">postAppend</a></span>(long&nbsp;size,
           long&nbsp;time,
           <a href="../../../../../../org/apache/hadoop/hbase/wal/WALKey.html" title="class in org.apache.hadoop.hbase.wal">WALKey</a>&nbsp;logkey,
           <a href="../../../../../../org/apache/hadoop/hbase/wal/WALEdit.html" title="class in org.apache.hadoop.hbase.wal">WALEdit</a>&nbsp;logEdit)</code>&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>void</code></td>
 <td class="colLast"><span class="typeNameLabel">WALCoprocessorHost.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/regionserver/wal/WALCoprocessorHost.html#postWALWrite-org.apache.hadoop.hbase.client.RegionInfo-org.apache.hadoop.hbase.wal.WALKey-org.apache.hadoop.hbase.wal.WALEdit-">postWALWrite</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/client/RegionInfo.html" title="interface in org.apache.hadoop.hbase.client">RegionInfo</a>&nbsp;info,
             <a href="../../../../../../org/apache/hadoop/hbase/wal/WALKey.html" title="class in org.apache.hadoop.hbase.wal">WALKey</a>&nbsp;logKey,
@@ -421,7 +414,7 @@ Input/OutputFormats, a table indexing MapReduce job, and utility methods.</div>
 </div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>void</code></td>
 <td class="colLast"><span class="typeNameLabel">WALCoprocessorHost.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/regionserver/wal/WALCoprocessorHost.html#preWALWrite-org.apache.hadoop.hbase.client.RegionInfo-org.apache.hadoop.hbase.wal.WALKey-org.apache.hadoop.hbase.wal.WALEdit-">preWALWrite</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/client/RegionInfo.html" title="interface in org.apache.hadoop.hbase.client">RegionInfo</a>&nbsp;info,
            <a href="../../../../../../org/apache/hadoop/hbase/wal/WALKey.html" title="class in org.apache.hadoop.hbase.wal">WALKey</a>&nbsp;logKey,
@@ -432,7 +425,7 @@ Input/OutputFormats, a table indexing MapReduce job, and utility methods.</div>
 </div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>protected long</code></td>
 <td class="colLast"><span class="typeNameLabel">AbstractFSWAL.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/regionserver/wal/AbstractFSWAL.html#stampSequenceIdAndPublishToRingBuffer-org.apache.hadoop.hbase.client.RegionInfo-org.apache.hadoop.hbase.wal.WALKey-org.apache.hadoop.hbase.wal.WALEdit-boolean-com.lmax.disruptor.RingBuffer-">stampSequenceIdAndPublishToRingBuffer</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/client/RegionInfo.html" title="interface in org.apache.hadoop.hbase.client">RegionInfo</a>&nbsp;hri,
                                      <a href="../../../../../../org/apache/hadoop/hbase/wal/WALKey.html" title="class in org.apache.hadoop.hbase.wal">WALKey</a>&nbsp;key,
@@ -440,30 +433,19 @@ Input/OutputFormats, a table indexing MapReduce job, and utility methods.</div>
                                      boolean&nbsp;inMemstore,
                                      com.lmax.disruptor.RingBuffer&lt;<a href="../../../../../../org/apache/hadoop/hbase/regionserver/wal/RingBufferTruck.html" title="class in org.apache.hadoop.hbase.regionserver.wal">RingBufferTruck</a>&gt;&nbsp;ringBuffer)</code>&nbsp;</td>
 </tr>
-<tr class="rowColor">
-<td class="colFirst"><code>void</code></td>
-<td class="colLast"><span class="typeNameLabel">WALActionsListener.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/regionserver/wal/WALActionsListener.html#visitLogEntryBeforeWrite-org.apache.hadoop.hbase.HRegionInfo-org.apache.hadoop.hbase.wal.WALKey-org.apache.hadoop.hbase.wal.WALEdit-">visitLogEntryBeforeWrite</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/HRegionInfo.html" title="class in org.apache.hadoop.hbase">HRegionInfo</a>&nbsp;info,
+<tr class="altColor">
+<td class="colFirst"><code>default void</code></td>
+<td class="colLast"><span class="typeNameLabel">WALActionsListener.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/regionserver/wal/WALActionsListener.html#visitLogEntryBeforeWrite-org.apache.hadoop.hbase.client.RegionInfo-org.apache.hadoop.hbase.wal.WALKey-org.apache.hadoop.hbase.wal.WALEdit-">visitLogEntryBeforeWrite</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/client/RegionInfo.html" title="interface in org.apache.hadoop.hbase.client">RegionInfo</a>&nbsp;info,
                         <a href="../../../../../../org/apache/hadoop/hbase/wal/WALKey.html" title="class in org.apache.hadoop.hbase.wal">WALKey</a>&nbsp;logKey,
                         <a href="../../../../../../org/apache/hadoop/hbase/wal/WALEdit.html" title="class in org.apache.hadoop.hbase.wal">WALEdit</a>&nbsp;logEdit)</code>
 <div class="block">Called before each write.</div>
 </td>
 </tr>
-<tr class="altColor">
-<td class="colFirst"><code>void</code></td>
-<td class="colLast"><span class="typeNameLabel">WALActionsListener.Base.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/regionserver/wal/WALActionsListener.Base.html#visitLogEntryBeforeWrite-org.apache.hadoop.hbase.HRegionInfo-org.apache.hadoop.hbase.wal.WALKey-org.apache.hadoop.hbase.wal.WALEdit-">visitLogEntryBeforeWrite</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/HRegionInfo.html" title="class in org.apache.hadoop.hbase">HRegionInfo</a>&nbsp;info,
-                        <a href="../../../../../../org/apache/hadoop/hbase/wal/WALKey.html" title="class in org.apache.hadoop.hbase.wal">WALKey</a>&nbsp;logKey,
-                        <a href="../../../../../../org/apache/hadoop/hbase/wal/WALEdit.html" title="class in org.apache.hadoop.hbase.wal">WALEdit</a>&nbsp;logEdit)</code>&nbsp;</td>
-</tr>
 <tr class="rowColor">
-<td class="colFirst"><code>void</code></td>
+<td class="colFirst"><code>default void</code></td>
 <td class="colLast"><span class="typeNameLabel">WALActionsListener.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/regionserver/wal/WALActionsListener.html#visitLogEntryBeforeWrite-org.apache.hadoop.hbase.wal.WALKey-org.apache.hadoop.hbase.wal.WALEdit-">visitLogEntryBeforeWrite</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/wal/WALKey.html" title="class in org.apache.hadoop.hbase.wal">WALKey</a>&nbsp;logKey,
                         <a href="../../../../../../org/apache/hadoop/hbase/wal/WALEdit.html" title="class in org.apache.hadoop.hbase.wal">WALEdit</a>&nbsp;logEdit)</code>&nbsp;</td>
 </tr>
-<tr class="altColor">
-<td class="colFirst"><code>void</code></td>
-<td class="colLast"><span class="typeNameLabel">WALActionsListener.Base.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/regionserver/wal/WALActionsListener.Base.html#visitLogEntryBeforeWrite-org.apache.hadoop.hbase.wal.WALKey-org.apache.hadoop.hbase.wal.WALEdit-">visitLogEntryBeforeWrite</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/wal/WALKey.html" title="class in org.apache.hadoop.hbase.wal">WALKey</a>&nbsp;logKey,
-                        <a href="../../../../../../org/apache/hadoop/hbase/wal/WALEdit.html" title="class in org.apache.hadoop.hbase.wal">WALEdit</a>&nbsp;logEdit)</code>&nbsp;</td>
-</tr>
 </tbody>
 </table>
 <table class="useSummary" border="0" cellpadding="3" cellspacing="0" summary="Use table, listing constructors, and an explanation">

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/c54c242b/devapidocs/org/apache/hadoop/hbase/zookeeper/MiniZooKeeperCluster.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/zookeeper/MiniZooKeeperCluster.html b/devapidocs/org/apache/hadoop/hbase/zookeeper/MiniZooKeeperCluster.html
index 4fe9b9d..eed23f9 100644
--- a/devapidocs/org/apache/hadoop/hbase/zookeeper/MiniZooKeeperCluster.html
+++ b/devapidocs/org/apache/hadoop/hbase/zookeeper/MiniZooKeeperCluster.html
@@ -18,7 +18,7 @@
     catch(err) {
     }
 //-->
-var methods = {"i0":10,"i1":10,"i2":10,"i3":10,"i4":10,"i5":10,"i6":10,"i7":10,"i8":10,"i9":10,"i10":10,"i11":10,"i12":9,"i13":10,"i14":10,"i15":10,"i16":9,"i17":9};
+var methods = {"i0":10,"i1":10,"i2":10,"i3":10,"i4":10,"i5":10,"i6":10,"i7":10,"i8":10,"i9":10,"i10":10,"i11":10,"i12":10,"i13":9,"i14":10,"i15":10,"i16":10,"i17":9,"i18":9};
 var tabs = {65535:["t0","All Methods"],1:["t1","Static Methods"],2:["t2","Instance Methods"],8:["t4","Concrete Methods"]};
 var altColor = "altColor";
 var rowColor = "rowColor";
@@ -247,58 +247,62 @@ extends <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/zookeeper/MiniZooKeeperCluster.html#getZooKeeperServerNum--">getZooKeeperServerNum</a></span>()</code>&nbsp;</td>
 </tr>
 <tr id="i6" class="altColor">
+<td class="colFirst"><code>(package private) <a href="http://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;org.apache.zookeeper.server.ZooKeeperServer&gt;</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/zookeeper/MiniZooKeeperCluster.html#getZooKeeperServers--">getZooKeeperServers</a></span>()</code>&nbsp;</td>
+</tr>
+<tr id="i7" class="rowColor">
 <td class="colFirst"><code>private boolean</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/zookeeper/MiniZooKeeperCluster.html#hasValidClientPortInList-int-">hasValidClientPortInList</a></span>(int&nbsp;index)</code>
 <div class="block">Check whether the client port in a specific position of the client port list is valid.</div>
 </td>
 </tr>
-<tr id="i7" class="rowColor">
+<tr id="i8" class="altColor">
 <td class="colFirst"><code>int</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/zookeeper/MiniZooKeeperCluster.html#killCurrentActiveZooKeeperServer--">killCurrentActiveZooKeeperServer</a></span>()</code>&nbsp;</td>
 </tr>
-<tr id="i8" class="altColor">
+<tr id="i9" class="rowColor">
 <td class="colFirst"><code>void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/zookeeper/MiniZooKeeperCluster.html#killOneBackupZooKeeperServer--">killOneBackupZooKeeperServer</a></span>()</code>
 <div class="block">Kill one back up ZK servers</div>
 </td>
 </tr>
-<tr id="i9" class="rowColor">
+<tr id="i10" class="altColor">
 <td class="colFirst"><code>private int</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/zookeeper/MiniZooKeeperCluster.html#selectClientPort-int-">selectClientPort</a></span>(int&nbsp;seedPort)</code>
 <div class="block">Selects a ZK client port.</div>
 </td>
 </tr>
-<tr id="i10" class="altColor">
+<tr id="i11" class="rowColor">
 <td class="colFirst"><code>void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/zookeeper/MiniZooKeeperCluster.html#setDefaultClientPort-int-">setDefaultClientPort</a></span>(int&nbsp;clientPort)</code>&nbsp;</td>
 </tr>
-<tr id="i11" class="rowColor">
+<tr id="i12" class="altColor">
 <td class="colFirst"><code>void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/zookeeper/MiniZooKeeperCluster.html#setTickTime-int-">setTickTime</a></span>(int&nbsp;tickTime)</code>&nbsp;</td>
 </tr>
-<tr id="i12" class="altColor">
+<tr id="i13" class="rowColor">
 <td class="colFirst"><code>private static void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/zookeeper/MiniZooKeeperCluster.html#setupTestEnv--">setupTestEnv</a></span>()</code>&nbsp;</td>
 </tr>
-<tr id="i13" class="rowColor">
+<tr id="i14" class="altColor">
 <td class="colFirst"><code>void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/zookeeper/MiniZooKeeperCluster.html#shutdown--">shutdown</a></span>()</code>&nbsp;</td>
 </tr>
-<tr id="i14" class="altColor">
+<tr id="i15" class="rowColor">
 <td class="colFirst"><code>int</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/zookeeper/MiniZooKeeperCluster.html#startup-java.io.File-">startup</a></span>(<a href="http://docs.oracle.com/javase/8/docs/api/java/io/File.html?is-external=true" title="class or interface in java.io">File</a>&nbsp;baseDir)</code>&nbsp;</td>
 </tr>
-<tr id="i15" class="rowColor">
+<tr id="i16" class="altColor">
 <td class="colFirst"><code>int</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/zookeeper/MiniZooKeeperCluster.html#startup-java.io.File-int-">startup</a></span>(<a href="http://docs.oracle.com/javase/8/docs/api/java/io/File.html?is-external=true" title="class or interface in java.io">File</a>&nbsp;baseDir,
        int&nbsp;numZooKeeperServers)</code>&nbsp;</td>
 </tr>
-<tr id="i16" class="altColor">
+<tr id="i17" class="rowColor">
 <td class="colFirst"><code>private static boolean</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/zookeeper/MiniZooKeeperCluster.html#waitForServerDown-int-long-">waitForServerDown</a></span>(int&nbsp;port,
                  long&nbsp;timeout)</code>&nbsp;</td>
 </tr>
-<tr id="i17" class="rowColor">
+<tr id="i18" class="altColor">
 <td class="colFirst"><code>private static boolean</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/zookeeper/MiniZooKeeperCluster.html#waitForServerUp-int-long-">waitForServerUp</a></span>(int&nbsp;port,
                long&nbsp;timeout)</code>&nbsp;</td>
@@ -713,12 +717,21 @@ extends <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?
 <a name="getClientPort--">
 <!--   -->
 </a>
-<ul class="blockListLast">
+<ul class="blockList">
 <li class="blockList">
 <h4>getClientPort</h4>
 <pre>public&nbsp;int&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/MiniZooKeeperCluster.html#line.468">getClientPort</a>()</pre>
 </li>
 </ul>
+<a name="getZooKeeperServers--">
+<!--   -->
+</a>
+<ul class="blockListLast">
+<li class="blockList">
+<h4>getZooKeeperServers</h4>
+<pre><a href="http://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;org.apache.zookeeper.server.ZooKeeperServer&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/MiniZooKeeperCluster.html#line.473">getZooKeeperServers</a>()</pre>
+</li>
+</ul>
 </li>
 </ul>
 </li>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/c54c242b/devapidocs/org/apache/hadoop/hbase/zookeeper/PendingWatcher.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/zookeeper/PendingWatcher.html b/devapidocs/org/apache/hadoop/hbase/zookeeper/PendingWatcher.html
index 82d42c6..3d3a535 100644
--- a/devapidocs/org/apache/hadoop/hbase/zookeeper/PendingWatcher.html
+++ b/devapidocs/org/apache/hadoop/hbase/zookeeper/PendingWatcher.html
@@ -50,7 +50,7 @@ var activeTableTab = "activeTableTab";
 <div class="subNav">
 <ul class="navList">
 <li><a href="../../../../../org/apache/hadoop/hbase/zookeeper/MiniZooKeeperCluster.html" title="class in org.apache.hadoop.hbase.zookeeper"><span class="typeNameLink">Prev&nbsp;Class</span></a></li>
-<li><a href="../../../../../org/apache/hadoop/hbase/zookeeper/RecoverableZooKeeper.html" title="class in org.apache.hadoop.hbase.zookeeper"><span class="typeNameLink">Next&nbsp;Class</span></a></li>
+<li><a href="../../../../../org/apache/hadoop/hbase/zookeeper/ReadOnlyZKClient.html" title="class in org.apache.hadoop.hbase.zookeeper"><span class="typeNameLink">Next&nbsp;Class</span></a></li>
 </ul>
 <ul class="navList">
 <li><a href="../../../../../index.html?org/apache/hadoop/hbase/zookeeper/PendingWatcher.html" target="_top">Frames</a></li>
@@ -316,7 +316,7 @@ implements org.apache.zookeeper.Watcher</pre>
 <div class="subNav">
 <ul class="navList">
 <li><a href="../../../../../org/apache/hadoop/hbase/zookeeper/MiniZooKeeperCluster.html" title="class in org.apache.hadoop.hbase.zookeeper"><span class="typeNameLink">Prev&nbsp;Class</span></a></li>
-<li><a href="../../../../../org/apache/hadoop/hbase/zookeeper/RecoverableZooKeeper.html" title="class in org.apache.hadoop.hbase.zookeeper"><span class="typeNameLink">Next&nbsp;Class</span></a></li>
+<li><a href="../../../../../org/apache/hadoop/hbase/zookeeper/ReadOnlyZKClient.html" title="class in org.apache.hadoop.hbase.zookeeper"><span class="typeNameLink">Next&nbsp;Class</span></a></li>
 </ul>
 <ul class="navList">
 <li><a href="../../../../../index.html?org/apache/hadoop/hbase/zookeeper/PendingWatcher.html" target="_top">Frames</a></li>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/c54c242b/devapidocs/org/apache/hadoop/hbase/zookeeper/ReadOnlyZKClient.Task.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/zookeeper/ReadOnlyZKClient.Task.html b/devapidocs/org/apache/hadoop/hbase/zookeeper/ReadOnlyZKClient.Task.html
new file mode 100644
index 0000000..165ddda
--- /dev/null
+++ b/devapidocs/org/apache/hadoop/hbase/zookeeper/ReadOnlyZKClient.Task.html
@@ -0,0 +1,396 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<!-- NewPage -->
+<html lang="en">
+<head>
+<!-- Generated by javadoc -->
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title>ReadOnlyZKClient.Task (Apache HBase 3.0.0-SNAPSHOT API)</title>
+<link rel="stylesheet" type="text/css" href="../../../../../stylesheet.css" title="Style">
+<script type="text/javascript" src="../../../../../script.js"></script>
+</head>
+<body>
+<script type="text/javascript"><!--
+    try {
+        if (location.href.indexOf('is-external=true') == -1) {
+            parent.document.title="ReadOnlyZKClient.Task (Apache HBase 3.0.0-SNAPSHOT API)";
+        }
+    }
+    catch(err) {
+    }
+//-->
+var methods = {"i0":10,"i1":10,"i2":10,"i3":10,"i4":10,"i5":10};
+var tabs = {65535:["t0","All Methods"],2:["t2","Instance Methods"],8:["t4","Concrete Methods"]};
+var altColor = "altColor";
+var rowColor = "rowColor";
+var tableTab = "tableTab";
+var activeTableTab = "activeTableTab";
+</script>
+<noscript>
+<div>JavaScript is disabled on your browser.</div>
+</noscript>
+<!-- ========= START OF TOP NAVBAR ======= -->
+<div class="topNav"><a name="navbar.top">
+<!--   -->
+</a>
+<div class="skipNav"><a href="#skip.navbar.top" title="Skip navigation links">Skip navigation links</a></div>
+<a name="navbar.top.firstrow">
+<!--   -->
+</a>
+<ul class="navList" title="Navigation">
+<li><a href="../../../../../overview-summary.html">Overview</a></li>
+<li><a href="package-summary.html">Package</a></li>
+<li class="navBarCell1Rev">Class</li>
+<li><a href="class-use/ReadOnlyZKClient.Task.html">Use</a></li>
+<li><a href="package-tree.html">Tree</a></li>
+<li><a href="../../../../../deprecated-list.html">Deprecated</a></li>
+<li><a href="../../../../../index-all.html">Index</a></li>
+<li><a href="../../../../../help-doc.html">Help</a></li>
+</ul>
+</div>
+<div class="subNav">
+<ul class="navList">
+<li><a href="../../../../../org/apache/hadoop/hbase/zookeeper/ReadOnlyZKClient.html" title="class in org.apache.hadoop.hbase.zookeeper"><span class="typeNameLink">Prev&nbsp;Class</span></a></li>
+<li><a href="../../../../../org/apache/hadoop/hbase/zookeeper/ReadOnlyZKClient.ZKTask.html" title="class in org.apache.hadoop.hbase.zookeeper"><span class="typeNameLink">Next&nbsp;Class</span></a></li>
+</ul>
+<ul class="navList">
+<li><a href="../../../../../index.html?org/apache/hadoop/hbase/zookeeper/ReadOnlyZKClient.Task.html" target="_top">Frames</a></li>
+<li><a href="ReadOnlyZKClient.Task.html" target="_top">No&nbsp;Frames</a></li>
+</ul>
+<ul class="navList" id="allclasses_navbar_top">
+<li><a href="../../../../../allclasses-noframe.html">All&nbsp;Classes</a></li>
+</ul>
+<div>
+<script type="text/javascript"><!--
+  allClassesLink = document.getElementById("allclasses_navbar_top");
+  if(window==top) {
+    allClassesLink.style.display = "block";
+  }
+  else {
+    allClassesLink.style.display = "none";
+  }
+  //-->
+</script>
+</div>
+<div>
+<ul class="subNavList">
+<li>Summary:&nbsp;</li>
+<li>Nested&nbsp;|&nbsp;</li>
+<li><a href="#field.summary">Field</a>&nbsp;|&nbsp;</li>
+<li><a href="#constructor.summary">Constr</a>&nbsp;|&nbsp;</li>
+<li><a href="#method.summary">Method</a></li>
+</ul>
+<ul class="subNavList">
+<li>Detail:&nbsp;</li>
+<li><a href="#field.detail">Field</a>&nbsp;|&nbsp;</li>
+<li><a href="#constructor.detail">Constr</a>&nbsp;|&nbsp;</li>
+<li><a href="#method.detail">Method</a></li>
+</ul>
+</div>
+<a name="skip.navbar.top">
+<!--   -->
+</a></div>
+<!-- ========= END OF TOP NAVBAR ========= -->
+<!-- ======== START OF CLASS DATA ======== -->
+<div class="header">
+<div class="subTitle">org.apache.hadoop.hbase.zookeeper</div>
+<h2 title="Class ReadOnlyZKClient.Task" class="title">Class ReadOnlyZKClient.Task</h2>
+</div>
+<div class="contentContainer">
+<ul class="inheritance">
+<li><a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">java.lang.Object</a></li>
+<li>
+<ul class="inheritance">
+<li>org.apache.hadoop.hbase.zookeeper.ReadOnlyZKClient.Task</li>
+</ul>
+</li>
+</ul>
+<div class="description">
+<ul class="blockList">
+<li class="blockList">
+<dl>
+<dt>All Implemented Interfaces:</dt>
+<dd><a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Comparable.html?is-external=true" title="class or interface in java.lang">Comparable</a>&lt;<a href="http://docs.oracle.com/javase/8/docs/api/java/util/concurrent/Delayed.html?is-external=true" title="class or interface in java.util.concurrent">Delayed</a>&gt;, <a href="http://docs.oracle.com/javase/8/docs/api/java/util/concurrent/Delayed.html?is-external=true" title="class or interface in java.util.concurrent">Delayed</a></dd>
+</dl>
+<dl>
+<dt>Direct Known Subclasses:</dt>
+<dd><a href="../../../../../org/apache/hadoop/hbase/zookeeper/ReadOnlyZKClient.ZKTask.html" title="class in org.apache.hadoop.hbase.zookeeper">ReadOnlyZKClient.ZKTask</a></dd>
+</dl>
+<dl>
+<dt>Enclosing class:</dt>
+<dd><a href="../../../../../org/apache/hadoop/hbase/zookeeper/ReadOnlyZKClient.html" title="class in org.apache.hadoop.hbase.zookeeper">ReadOnlyZKClient</a></dd>
+</dl>
+<hr>
+<br>
+<pre>private abstract static class <a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/ReadOnlyZKClient.html#line.77">ReadOnlyZKClient.Task</a>
+extends <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a>
+implements <a href="http://docs.oracle.com/javase/8/docs/api/java/util/concurrent/Delayed.html?is-external=true" title="class or interface in java.util.concurrent">Delayed</a></pre>
+</li>
+</ul>
+</div>
+<div class="summary">
+<ul class="blockList">
+<li class="blockList">
+<!-- =========== FIELD SUMMARY =========== -->
+<ul class="blockList">
+<li class="blockList"><a name="field.summary">
+<!--   -->
+</a>
+<h3>Field Summary</h3>
+<table class="memberSummary" border="0" cellpadding="3" cellspacing="0" summary="Field Summary table, listing fields, and an explanation">
+<caption><span>Fields</span><span class="tabEnd">&nbsp;</span></caption>
+<tr>
+<th class="colFirst" scope="col">Modifier and Type</th>
+<th class="colLast" scope="col">Field and Description</th>
+</tr>
+<tr class="altColor">
+<td class="colFirst"><code>protected long</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/zookeeper/ReadOnlyZKClient.Task.html#time">time</a></span></code>&nbsp;</td>
+</tr>
+</table>
+</li>
+</ul>
+<!-- ======== CONSTRUCTOR SUMMARY ======== -->
+<ul class="blockList">
+<li class="blockList"><a name="constructor.summary">
+<!--   -->
+</a>
+<h3>Constructor Summary</h3>
+<table class="memberSummary" border="0" cellpadding="3" cellspacing="0" summary="Constructor Summary table, listing constructors, and an explanation">
+<caption><span>Constructors</span><span class="tabEnd">&nbsp;</span></caption>
+<tr>
+<th class="colFirst" scope="col">Modifier</th>
+<th class="colLast" scope="col">Constructor and Description</th>
+</tr>
+<tr class="altColor">
+<td class="colFirst"><code>private </code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/zookeeper/ReadOnlyZKClient.Task.html#Task--">Task</a></span>()</code>&nbsp;</td>
+</tr>
+</table>
+</li>
+</ul>
+<!-- ========== METHOD SUMMARY =========== -->
+<ul class="blockList">
+<li class="blockList"><a name="method.summary">
+<!--   -->
+</a>
+<h3>Method Summary</h3>
+<table class="memberSummary" border="0" cellpadding="3" cellspacing="0" summary="Method Summary table, listing methods, and an explanation">
+<caption><span id="t0" class="activeTableTab"><span>All Methods</span><span class="tabEnd">&nbsp;</span></span><span id="t2" class="tableTab"><span><a href="javascript:show(2);">Instance Methods</a></span><span class="tabEnd">&nbsp;</span></span><span id="t4" class="tableTab"><span><a href="javascript:show(8);">Concrete Methods</a></span><span class="tabEnd">&nbsp;</span></span></caption>
+<tr>
+<th class="colFirst" scope="col">Modifier and Type</th>
+<th class="colLast" scope="col">Method and Description</th>
+</tr>
+<tr id="i0" class="altColor">
+<td class="colFirst"><code>void</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/zookeeper/ReadOnlyZKClient.Task.html#closed-java.io.IOException-">closed</a></span>(<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>&nbsp;e)</code>&nbsp;</td>
+</tr>
+<tr id="i1" class="rowColor">
+<td class="colFirst"><code>int</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/zookeeper/ReadOnlyZKClient.Task.html#compareTo-java.util.concurrent.Delayed-">compareTo</a></span>(<a href="http://docs.oracle.com/javase/8/docs/api/java/util/concurrent/Delayed.html?is-external=true" title="class or interface in java.util.concurrent">Delayed</a>&nbsp;o)</code>&nbsp;</td>
+</tr>
+<tr id="i2" class="altColor">
+<td class="colFirst"><code>void</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/zookeeper/ReadOnlyZKClient.Task.html#connectFailed-java.io.IOException-">connectFailed</a></span>(<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>&nbsp;e)</code>&nbsp;</td>
+</tr>
+<tr id="i3" class="rowColor">
+<td class="colFirst"><code>void</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/zookeeper/ReadOnlyZKClient.Task.html#exec-org.apache.zookeeper.ZooKeeper-">exec</a></span>(org.apache.zookeeper.ZooKeeper&nbsp;zk)</code>&nbsp;</td>
+</tr>
+<tr id="i4" class="altColor">
+<td class="colFirst"><code>long</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/zookeeper/ReadOnlyZKClient.Task.html#getDelay-java.util.concurrent.TimeUnit-">getDelay</a></span>(<a href="http://docs.oracle.com/javase/8/docs/api/java/util/concurrent/TimeUnit.html?is-external=true" title="class or interface in java.util.concurrent">TimeUnit</a>&nbsp;unit)</code>&nbsp;</td>
+</tr>
+<tr id="i5" class="rowColor">
+<td class="colFirst"><code>boolean</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/zookeeper/ReadOnlyZKClient.Task.html#needZk--">needZk</a></span>()</code>&nbsp;</td>
+</tr>
+</table>
+<ul class="blockList">
+<li class="blockList"><a name="methods.inherited.from.class.java.lang.Object">
+<!--   -->
+</a>
+<h3>Methods inherited from class&nbsp;java.lang.<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a></h3>
+<code><a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#clone--" title="class or interface in java.lang">clone</a>, <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#equals-java.lang.Object-" title="class or interface in java.lang">equals</a>, <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#finalize--" title="class or interface in java.lang">finalize</a>, <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#getClass--" title="class or interface in java.lang">getClass</a>, <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#hashCode--" title="class or interface in java.lang">hashCode</a>, <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notify--" title="class or interface in java.lang">notify</a>, <a href="http://docs.oracle.com/javase/8/docs/api/java/lang
 /Object.html?is-external=true#notifyAll--" title="class or interface in java.lang">notifyAll</a>, <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#toString--" title="class or interface in java.lang">toString</a>, <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait--" title="class or interface in java.lang">wait</a>, <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-" title="class or interface in java.lang">wait</a>, <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-int-" title="class or interface in java.lang">wait</a></code></li>
+</ul>
+</li>
+</ul>
+</li>
+</ul>
+</div>
+<div class="details">
+<ul class="blockList">
+<li class="blockList">
+<!-- ============ FIELD DETAIL =========== -->
+<ul class="blockList">
+<li class="blockList"><a name="field.detail">
+<!--   -->
+</a>
+<h3>Field Detail</h3>
+<a name="time">
+<!--   -->
+</a>
+<ul class="blockListLast">
+<li class="blockList">
+<h4>time</h4>
+<pre>protected&nbsp;long <a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/ReadOnlyZKClient.Task.html#line.79">time</a></pre>
+</li>
+</ul>
+</li>
+</ul>
+<!-- ========= CONSTRUCTOR DETAIL ======== -->
+<ul class="blockList">
+<li class="blockList"><a name="constructor.detail">
+<!--   -->
+</a>
+<h3>Constructor Detail</h3>
+<a name="Task--">
+<!--   -->
+</a>
+<ul class="blockListLast">
+<li class="blockList">
+<h4>Task</h4>
+<pre>private&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/ReadOnlyZKClient.Task.html#line.77">Task</a>()</pre>
+</li>
+</ul>
+</li>
+</ul>
+<!-- ============ METHOD DETAIL ========== -->
+<ul class="blockList">
+<li class="blockList"><a name="method.detail">
+<!--   -->
+</a>
+<h3>Method Detail</h3>
+<a name="needZk--">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>needZk</h4>
+<pre>public&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/ReadOnlyZKClient.Task.html#line.81">needZk</a>()</pre>
+</li>
+</ul>
+<a name="exec-org.apache.zookeeper.ZooKeeper-">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>exec</h4>
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/ReadOnlyZKClient.Task.html#line.85">exec</a>(org.apache.zookeeper.ZooKeeper&nbsp;zk)</pre>
+</li>
+</ul>
+<a name="connectFailed-java.io.IOException-">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>connectFailed</h4>
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/ReadOnlyZKClient.Task.html#line.88">connectFailed</a>(<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>&nbsp;e)</pre>
+</li>
+</ul>
+<a name="closed-java.io.IOException-">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>closed</h4>
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/ReadOnlyZKClient.Task.html#line.91">closed</a>(<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>&nbsp;e)</pre>
+</li>
+</ul>
+<a name="compareTo-java.util.concurrent.Delayed-">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>compareTo</h4>
+<pre>public&nbsp;int&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/ReadOnlyZKClient.Task.html#line.95">compareTo</a>(<a href="http://docs.oracle.com/javase/8/docs/api/java/util/concurrent/Delayed.html?is-external=true" title="class or interface in java.util.concurrent">Delayed</a>&nbsp;o)</pre>
+<dl>
+<dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
+<dd><code><a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Comparable.html?is-external=true#compareTo-T-" title="class or interface in java.lang">compareTo</a></code>&nbsp;in interface&nbsp;<code><a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Comparable.html?is-external=true" title="class or interface in java.lang">Comparable</a>&lt;<a href="http://docs.oracle.com/javase/8/docs/api/java/util/concurrent/Delayed.html?is-external=true" title="class or interface in java.util.concurrent">Delayed</a>&gt;</code></dd>
+</dl>
+</li>
+</ul>
+<a name="getDelay-java.util.concurrent.TimeUnit-">
+<!--   -->
+</a>
+<ul class="blockListLast">
+<li class="blockList">
+<h4>getDelay</h4>
+<pre>public&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/ReadOnlyZKClient.Task.html#line.105">getDelay</a>(<a href="http://docs.oracle.com/javase/8/docs/api/java/util/concurrent/TimeUnit.html?is-external=true" title="class or interface in java.util.concurrent">TimeUnit</a>&nbsp;unit)</pre>
+<dl>
+<dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
+<dd><code><a href="http://docs.oracle.com/javase/8/docs/api/java/util/concurrent/Delayed.html?is-external=true#getDelay-java.util.concurrent.TimeUnit-" title="class or interface in java.util.concurrent">getDelay</a></code>&nbsp;in interface&nbsp;<code><a href="http://docs.oracle.com/javase/8/docs/api/java/util/concurrent/Delayed.html?is-external=true" title="class or interface in java.util.concurrent">Delayed</a></code></dd>
+</dl>
+</li>
+</ul>
+</li>
+</ul>
+</li>
+</ul>
+</div>
+</div>
+<!-- ========= END OF CLASS DATA ========= -->
+<!-- ======= START OF BOTTOM NAVBAR ====== -->
+<div class="bottomNav"><a name="navbar.bottom">
+<!--   -->
+</a>
+<div class="skipNav"><a href="#skip.navbar.bottom" title="Skip navigation links">Skip navigation links</a></div>
+<a name="navbar.bottom.firstrow">
+<!--   -->
+</a>
+<ul class="navList" title="Navigation">
+<li><a href="../../../../../overview-summary.html">Overview</a></li>
+<li><a href="package-summary.html">Package</a></li>
+<li class="navBarCell1Rev">Class</li>
+<li><a href="class-use/ReadOnlyZKClient.Task.html">Use</a></li>
+<li><a href="package-tree.html">Tree</a></li>
+<li><a href="../../../../../deprecated-list.html">Deprecated</a></li>
+<li><a href="../../../../../index-all.html">Index</a></li>
+<li><a href="../../../../../help-doc.html">Help</a></li>
+</ul>
+</div>
+<div class="subNav">
+<ul class="navList">
+<li><a href="../../../../../org/apache/hadoop/hbase/zookeeper/ReadOnlyZKClient.html" title="class in org.apache.hadoop.hbase.zookeeper"><span class="typeNameLink">Prev&nbsp;Class</span></a></li>
+<li><a href="../../../../../org/apache/hadoop/hbase/zookeeper/ReadOnlyZKClient.ZKTask.html" title="class in org.apache.hadoop.hbase.zookeeper"><span class="typeNameLink">Next&nbsp;Class</span></a></li>
+</ul>
+<ul class="navList">
+<li><a href="../../../../../index.html?org/apache/hadoop/hbase/zookeeper/ReadOnlyZKClient.Task.html" target="_top">Frames</a></li>
+<li><a href="ReadOnlyZKClient.Task.html" target="_top">No&nbsp;Frames</a></li>
+</ul>
+<ul class="navList" id="allclasses_navbar_bottom">
+<li><a href="../../../../../allclasses-noframe.html">All&nbsp;Classes</a></li>
+</ul>
+<div>
+<script type="text/javascript"><!--
+  allClassesLink = document.getElementById("allclasses_navbar_bottom");
+  if(window==top) {
+    allClassesLink.style.display = "block";
+  }
+  else {
+    allClassesLink.style.display = "none";
+  }
+  //-->
+</script>
+</div>
+<div>
+<ul class="subNavList">
+<li>Summary:&nbsp;</li>
+<li>Nested&nbsp;|&nbsp;</li>
+<li><a href="#field.summary">Field</a>&nbsp;|&nbsp;</li>
+<li><a href="#constructor.summary">Constr</a>&nbsp;|&nbsp;</li>
+<li><a href="#method.summary">Method</a></li>
+</ul>
+<ul class="subNavList">
+<li>Detail:&nbsp;</li>
+<li><a href="#field.detail">Field</a>&nbsp;|&nbsp;</li>
+<li><a href="#constructor.detail">Constr</a>&nbsp;|&nbsp;</li>
+<li><a href="#method.detail">Method</a></li>
+</ul>
+</div>
+<a name="skip.navbar.bottom">
+<!--   -->
+</a></div>
+<!-- ======== END OF BOTTOM NAVBAR ======= -->
+<p class="legalCopy"><small>Copyright &#169; 2007&#x2013;2017 <a href="https://www.apache.org/">The Apache Software Foundation</a>. All rights reserved.</small></p>
+</body>
+</html>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/c54c242b/devapidocs/org/apache/hadoop/hbase/zookeeper/ReadOnlyZKClient.ZKTask.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/zookeeper/ReadOnlyZKClient.ZKTask.html b/devapidocs/org/apache/hadoop/hbase/zookeeper/ReadOnlyZKClient.ZKTask.html
new file mode 100644
index 0000000..ccac366
--- /dev/null
+++ b/devapidocs/org/apache/hadoop/hbase/zookeeper/ReadOnlyZKClient.ZKTask.html
@@ -0,0 +1,454 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<!-- NewPage -->
+<html lang="en">
+<head>
+<!-- Generated by javadoc -->
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title>ReadOnlyZKClient.ZKTask (Apache HBase 3.0.0-SNAPSHOT API)</title>
+<link rel="stylesheet" type="text/css" href="../../../../../stylesheet.css" title="Style">
+<script type="text/javascript" src="../../../../../script.js"></script>
+</head>
+<body>
+<script type="text/javascript"><!--
+    try {
+        if (location.href.indexOf('is-external=true') == -1) {
+            parent.document.title="ReadOnlyZKClient.ZKTask (Apache HBase 3.0.0-SNAPSHOT API)";
+        }
+    }
+    catch(err) {
+    }
+//-->
+var methods = {"i0":10,"i1":10,"i2":10,"i3":10,"i4":10};
+var tabs = {65535:["t0","All Methods"],2:["t2","Instance Methods"],8:["t4","Concrete Methods"]};
+var altColor = "altColor";
+var rowColor = "rowColor";
+var tableTab = "tableTab";
+var activeTableTab = "activeTableTab";
+</script>
+<noscript>
+<div>JavaScript is disabled on your browser.</div>
+</noscript>
+<!-- ========= START OF TOP NAVBAR ======= -->
+<div class="topNav"><a name="navbar.top">
+<!--   -->
+</a>
+<div class="skipNav"><a href="#skip.navbar.top" title="Skip navigation links">Skip navigation links</a></div>
+<a name="navbar.top.firstrow">
+<!--   -->
+</a>
+<ul class="navList" title="Navigation">
+<li><a href="../../../../../overview-summary.html">Overview</a></li>
+<li><a href="package-summary.html">Package</a></li>
+<li class="navBarCell1Rev">Class</li>
+<li><a href="class-use/ReadOnlyZKClient.ZKTask.html">Use</a></li>
+<li><a href="package-tree.html">Tree</a></li>
+<li><a href="../../../../../deprecated-list.html">Deprecated</a></li>
+<li><a href="../../../../../index-all.html">Index</a></li>
+<li><a href="../../../../../help-doc.html">Help</a></li>
+</ul>
+</div>
+<div class="subNav">
+<ul class="navList">
+<li><a href="../../../../../org/apache/hadoop/hbase/zookeeper/ReadOnlyZKClient.Task.html" title="class in org.apache.hadoop.hbase.zookeeper"><span class="typeNameLink">Prev&nbsp;Class</span></a></li>
+<li><a href="../../../../../org/apache/hadoop/hbase/zookeeper/RecoverableZooKeeper.html" title="class in org.apache.hadoop.hbase.zookeeper"><span class="typeNameLink">Next&nbsp;Class</span></a></li>
+</ul>
+<ul class="navList">
+<li><a href="../../../../../index.html?org/apache/hadoop/hbase/zookeeper/ReadOnlyZKClient.ZKTask.html" target="_top">Frames</a></li>
+<li><a href="ReadOnlyZKClient.ZKTask.html" target="_top">No&nbsp;Frames</a></li>
+</ul>
+<ul class="navList" id="allclasses_navbar_top">
+<li><a href="../../../../../allclasses-noframe.html">All&nbsp;Classes</a></li>
+</ul>
+<div>
+<script type="text/javascript"><!--
+  allClassesLink = document.getElementById("allclasses_navbar_top");
+  if(window==top) {
+    allClassesLink.style.display = "block";
+  }
+  else {
+    allClassesLink.style.display = "none";
+  }
+  //-->
+</script>
+</div>
+<div>
+<ul class="subNavList">
+<li>Summary:&nbsp;</li>
+<li>Nested&nbsp;|&nbsp;</li>
+<li><a href="#field.summary">Field</a>&nbsp;|&nbsp;</li>
+<li><a href="#constructor.summary">Constr</a>&nbsp;|&nbsp;</li>
+<li><a href="#method.summary">Method</a></li>
+</ul>
+<ul class="subNavList">
+<li>Detail:&nbsp;</li>
+<li><a href="#field.detail">Field</a>&nbsp;|&nbsp;</li>
+<li><a href="#constructor.detail">Constr</a>&nbsp;|&nbsp;</li>
+<li><a href="#method.detail">Method</a></li>
+</ul>
+</div>
+<a name="skip.navbar.top">
+<!--   -->
+</a></div>
+<!-- ========= END OF TOP NAVBAR ========= -->
+<!-- ======== START OF CLASS DATA ======== -->
+<div class="header">
+<div class="subTitle">org.apache.hadoop.hbase.zookeeper</div>
+<h2 title="Class ReadOnlyZKClient.ZKTask" class="title">Class ReadOnlyZKClient.ZKTask&lt;T&gt;</h2>
+</div>
+<div class="contentContainer">
+<ul class="inheritance">
+<li><a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">java.lang.Object</a></li>
+<li>
+<ul class="inheritance">
+<li><a href="../../../../../org/apache/hadoop/hbase/zookeeper/ReadOnlyZKClient.Task.html" title="class in org.apache.hadoop.hbase.zookeeper">org.apache.hadoop.hbase.zookeeper.ReadOnlyZKClient.Task</a></li>
+<li>
+<ul class="inheritance">
+<li>org.apache.hadoop.hbase.zookeeper.ReadOnlyZKClient.ZKTask&lt;T&gt;</li>
+</ul>
+</li>
+</ul>
+</li>
+</ul>
+<div class="description">
+<ul class="blockList">
+<li class="blockList">
+<dl>
+<dt>All Implemented Interfaces:</dt>
+<dd><a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Comparable.html?is-external=true" title="class or interface in java.lang">Comparable</a>&lt;<a href="http://docs.oracle.com/javase/8/docs/api/java/util/concurrent/Delayed.html?is-external=true" title="class or interface in java.util.concurrent">Delayed</a>&gt;, <a href="http://docs.oracle.com/javase/8/docs/api/java/util/concurrent/Delayed.html?is-external=true" title="class or interface in java.util.concurrent">Delayed</a></dd>
+</dl>
+<dl>
+<dt>Enclosing class:</dt>
+<dd><a href="../../../../../org/apache/hadoop/hbase/zookeeper/ReadOnlyZKClient.html" title="class in org.apache.hadoop.hbase.zookeeper">ReadOnlyZKClient</a></dd>
+</dl>
+<hr>
+<br>
+<pre>private abstract class <a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/ReadOnlyZKClient.html#line.138">ReadOnlyZKClient.ZKTask</a>&lt;T&gt;
+extends <a href="../../../../../org/apache/hadoop/hbase/zookeeper/ReadOnlyZKClient.Task.html" title="class in org.apache.hadoop.hbase.zookeeper">ReadOnlyZKClient.Task</a></pre>
+</li>
+</ul>
+</div>
+<div class="summary">
+<ul class="blockList">
+<li class="blockList">
+<!-- =========== FIELD SUMMARY =========== -->
+<ul class="blockList">
+<li class="blockList"><a name="field.summary">
+<!--   -->
+</a>
+<h3>Field Summary</h3>
+<table class="memberSummary" border="0" cellpadding="3" cellspacing="0" summary="Field Summary table, listing fields, and an explanation">
+<caption><span>Fields</span><span class="tabEnd">&nbsp;</span></caption>
+<tr>
+<th class="colFirst" scope="col">Modifier and Type</th>
+<th class="colLast" scope="col">Field and Description</th>
+</tr>
+<tr class="altColor">
+<td class="colFirst"><code>private <a href="http://docs.oracle.com/javase/8/docs/api/java/util/concurrent/CompletableFuture.html?is-external=true" title="class or interface in java.util.concurrent">CompletableFuture</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/zookeeper/ReadOnlyZKClient.ZKTask.html" title="type parameter in ReadOnlyZKClient.ZKTask">T</a>&gt;</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/zookeeper/ReadOnlyZKClient.ZKTask.html#future">future</a></span></code>&nbsp;</td>
+</tr>
+<tr class="rowColor">
+<td class="colFirst"><code>private <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 class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/zookeeper/ReadOnlyZKClient.ZKTask.html#operationType">operationType</a></span></code>&nbsp;</td>
+</tr>
+<tr class="altColor">
+<td class="colFirst"><code>protected <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 class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/zookeeper/ReadOnlyZKClient.ZKTask.html#path">path</a></span></code>&nbsp;</td>
+</tr>
+<tr class="rowColor">
+<td class="colFirst"><code>private int</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/zookeeper/ReadOnlyZKClient.ZKTask.html#retries">retries</a></span></code>&nbsp;</td>
+</tr>
+</table>
+<ul class="blockList">
+<li class="blockList"><a name="fields.inherited.from.class.org.apache.hadoop.hbase.zookeeper.ReadOnlyZKClient.Task">
+<!--   -->
+</a>
+<h3>Fields inherited from class&nbsp;org.apache.hadoop.hbase.zookeeper.<a href="../../../../../org/apache/hadoop/hbase/zookeeper/ReadOnlyZKClient.Task.html" title="class in org.apache.hadoop.hbase.zookeeper">ReadOnlyZKClient.Task</a></h3>
+<code><a href="../../../../../org/apache/hadoop/hbase/zookeeper/ReadOnlyZKClient.Task.html#time">time</a></code></li>
+</ul>
+</li>
+</ul>
+<!-- ======== CONSTRUCTOR SUMMARY ======== -->
+<ul class="blockList">
+<li class="blockList"><a name="constructor.summary">
+<!--   -->
+</a>
+<h3>Constructor Summary</h3>
+<table class="memberSummary" border="0" cellpadding="3" cellspacing="0" summary="Constructor Summary table, listing constructors, and an explanation">
+<caption><span>Constructors</span><span class="tabEnd">&nbsp;</span></caption>
+<tr>
+<th class="colFirst" scope="col">Modifier</th>
+<th class="colLast" scope="col">Constructor and Description</th>
+</tr>
+<tr class="altColor">
+<td class="colFirst"><code>protected </code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/zookeeper/ReadOnlyZKClient.ZKTask.html#ZKTask-java.lang.String-java.util.concurrent.CompletableFuture-java.lang.String-">ZKTask</a></span>(<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;path,
+      <a href="http://docs.oracle.com/javase/8/docs/api/java/util/concurrent/CompletableFuture.html?is-external=true" title="class or interface in java.util.concurrent">CompletableFuture</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/zookeeper/ReadOnlyZKClient.ZKTask.html" title="type parameter in ReadOnlyZKClient.ZKTask">T</a>&gt;&nbsp;future,
+      <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;operationType)</code>&nbsp;</td>
+</tr>
+</table>
+</li>
+</ul>
+<!-- ========== METHOD SUMMARY =========== -->
+<ul class="blockList">
+<li class="blockList"><a name="method.summary">
+<!--   -->
+</a>
+<h3>Method Summary</h3>
+<table class="memberSummary" border="0" cellpadding="3" cellspacing="0" summary="Method Summary table, listing methods, and an explanation">
+<caption><span id="t0" class="activeTableTab"><span>All Methods</span><span class="tabEnd">&nbsp;</span></span><span id="t2" class="tableTab"><span><a href="javascript:show(2);">Instance Methods</a></span><span class="tabEnd">&nbsp;</span></span><span id="t4" class="tableTab"><span><a href="javascript:show(8);">Concrete Methods</a></span><span class="tabEnd">&nbsp;</span></span></caption>
+<tr>
+<th class="colFirst" scope="col">Modifier and Type</th>
+<th class="colLast" scope="col">Method and Description</th>
+</tr>
+<tr id="i0" class="altColor">
+<td class="colFirst"><code>void</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/zookeeper/ReadOnlyZKClient.ZKTask.html#closed-java.io.IOException-">closed</a></span>(<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>&nbsp;e)</code>&nbsp;</td>
+</tr>
+<tr id="i1" class="rowColor">
+<td class="colFirst"><code>void</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/zookeeper/ReadOnlyZKClient.ZKTask.html#connectFailed-java.io.IOException-">connectFailed</a></span>(<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>&nbsp;e)</code>&nbsp;</td>
+</tr>
+<tr id="i2" class="altColor">
+<td class="colFirst"><code>boolean</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/zookeeper/ReadOnlyZKClient.ZKTask.html#delay-long-int-">delay</a></span>(long&nbsp;intervalMs,
+     int&nbsp;maxRetries)</code>&nbsp;</td>
+</tr>
+<tr id="i3" class="rowColor">
+<td class="colFirst"><code>boolean</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/zookeeper/ReadOnlyZKClient.ZKTask.html#needZk--">needZk</a></span>()</code>&nbsp;</td>
+</tr>
+<tr id="i4" class="altColor">
+<td class="colFirst"><code>protected void</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/zookeeper/ReadOnlyZKClient.ZKTask.html#onComplete-org.apache.zookeeper.ZooKeeper-int-T-boolean-">onComplete</a></span>(org.apache.zookeeper.ZooKeeper&nbsp;zk,
+          int&nbsp;rc,
+          <a href="../../../../../org/apache/hadoop/hbase/zookeeper/ReadOnlyZKClient.ZKTask.html" title="type parameter in ReadOnlyZKClient.ZKTask">T</a>&nbsp;ret,
+          boolean&nbsp;errorIfNoNode)</code>&nbsp;</td>
+</tr>
+</table>
+<ul class="blockList">
+<li class="blockList"><a name="methods.inherited.from.class.org.apache.hadoop.hbase.zookeeper.ReadOnlyZKClient.Task">
+<!--   -->
+</a>
+<h3>Methods inherited from class&nbsp;org.apache.hadoop.hbase.zookeeper.<a href="../../../../../org/apache/hadoop/hbase/zookeeper/ReadOnlyZKClient.Task.html" title="class in org.apache.hadoop.hbase.zookeeper">ReadOnlyZKClient.Task</a></h3>
+<code><a href="../../../../../org/apache/hadoop/hbase/zookeeper/ReadOnlyZKClient.Task.html#compareTo-java.util.concurrent.Delayed-">compareTo</a>, <a href="../../../../../org/apache/hadoop/hbase/zookeeper/ReadOnlyZKClient.Task.html#exec-org.apache.zookeeper.ZooKeeper-">exec</a>, <a href="../../../../../org/apache/hadoop/hbase/zookeeper/ReadOnlyZKClient.Task.html#getDelay-java.util.concurrent.TimeUnit-">getDelay</a></code></li>
+</ul>
+<ul class="blockList">
+<li class="blockList"><a name="methods.inherited.from.class.java.lang.Object">
+<!--   -->
+</a>
+<h3>Methods inherited from class&nbsp;java.lang.<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a></h3>
+<code><a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#clone--" title="class or interface in java.lang">clone</a>, <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#equals-java.lang.Object-" title="class or interface in java.lang">equals</a>, <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#finalize--" title="class or interface in java.lang">finalize</a>, <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#getClass--" title="class or interface in java.lang">getClass</a>, <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#hashCode--" title="class or interface in java.lang">hashCode</a>, <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notify--" title="class or interface in java.lang">notify</a>, <a href="http://docs.oracle.com/javase/8/docs/api/java/lang
 /Object.html?is-external=true#notifyAll--" title="class or interface in java.lang">notifyAll</a>, <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#toString--" title="class or interface in java.lang">toString</a>, <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait--" title="class or interface in java.lang">wait</a>, <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-" title="class or interface in java.lang">wait</a>, <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-int-" title="class or interface in java.lang">wait</a></code></li>
+</ul>
+</li>
+</ul>
+</li>
+</ul>
+</div>
+<div class="details">
+<ul class="blockList">
+<li class="blockList">
+<!-- ============ FIELD DETAIL =========== -->
+<ul class="blockList">
+<li class="blockList"><a name="field.detail">
+<!--   -->
+</a>
+<h3>Field Detail</h3>
+<a name="path">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>path</h4>
+<pre>protected 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> <a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/ReadOnlyZKClient.ZKTask.html#line.140">path</a></pre>
+</li>
+</ul>
+<a name="future">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>future</h4>
+<pre>private final&nbsp;<a href="http://docs.oracle.com/javase/8/docs/api/java/util/concurrent/CompletableFuture.html?is-external=true" title="class or interface in java.util.concurrent">CompletableFuture</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/zookeeper/ReadOnlyZKClient.ZKTask.html" title="type parameter in ReadOnlyZKClient.ZKTask">T</a>&gt; <a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/ReadOnlyZKClient.ZKTask.html#line.142">future</a></pre>
+</li>
+</ul>
+<a name="operationType">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>operationType</h4>
+<pre>private 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> <a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/ReadOnlyZKClient.ZKTask.html#line.144">operationType</a></pre>
+</li>
+</ul>
+<a name="retries">
+<!--   -->
+</a>
+<ul class="blockListLast">
+<li class="blockList">
+<h4>retries</h4>
+<pre>private&nbsp;int <a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/ReadOnlyZKClient.ZKTask.html#line.146">retries</a></pre>
+</li>
+</ul>
+</li>
+</ul>
+<!-- ========= CONSTRUCTOR DETAIL ======== -->
+<ul class="blockList">
+<li class="blockList"><a name="constructor.detail">
+<!--   -->
+</a>
+<h3>Constructor Detail</h3>
+<a name="ZKTask-java.lang.String-java.util.concurrent.CompletableFuture-java.lang.String-">
+<!--   -->
+</a>
+<ul class="blockListLast">
+<li class="blockList">
+<h4>ZKTask</h4>
+<pre>protected&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/ReadOnlyZKClient.ZKTask.html#line.148">ZKTask</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;path,
+                 <a href="http://docs.oracle.com/javase/8/docs/api/java/util/concurrent/CompletableFuture.html?is-external=true" title="class or interface in java.util.concurrent">CompletableFuture</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/zookeeper/ReadOnlyZKClient.ZKTask.html" title="type parameter in ReadOnlyZKClient.ZKTask">T</a>&gt;&nbsp;future,
+                 <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;operationType)</pre>
+</li>
+</ul>
+</li>
+</ul>
+<!-- ============ METHOD DETAIL ========== -->
+<ul class="blockList">
+<li class="blockList"><a name="method.detail">
+<!--   -->
+</a>
+<h3>Method Detail</h3>
+<a name="onComplete-org.apache.zookeeper.ZooKeeper-int-java.lang.Object-boolean-">
+<!--   -->
+</a><a name="onComplete-org.apache.zookeeper.ZooKeeper-int-T-boolean-">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>onComplete</h4>
+<pre>protected final&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/ReadOnlyZKClient.ZKTask.html#line.154">onComplete</a>(org.apache.zookeeper.ZooKeeper&nbsp;zk,
+                                int&nbsp;rc,
+                                <a href="../../../../../org/apache/hadoop/hbase/zookeeper/ReadOnlyZKClient.ZKTask.html" title="type parameter in ReadOnlyZKClient.ZKTask">T</a>&nbsp;ret,
+                                boolean&nbsp;errorIfNoNode)</pre>
+</li>
+</ul>
+<a name="needZk--">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>needZk</h4>
+<pre>public&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/ReadOnlyZKClient.ZKTask.html#line.204">needZk</a>()</pre>
+<dl>
+<dt><span class="overrideSpecifyLabel">Overrides:</span></dt>
+<dd><code><a href="../../../../../org/apache/hadoop/hbase/zookeeper/ReadOnlyZKClient.Task.html#needZk--">needZk</a></code>&nbsp;in class&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/zookeeper/ReadOnlyZKClient.Task.html" title="class in org.apache.hadoop.hbase.zookeeper">ReadOnlyZKClient.Task</a></code></dd>
+</dl>
+</li>
+</ul>
+<a name="delay-long-int-">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>delay</h4>
+<pre>public&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/ReadOnlyZKClient.ZKTask.html#line.208">delay</a>(long&nbsp;intervalMs,
+                     int&nbsp;maxRetries)</pre>
+</li>
+</ul>
+<a name="connectFailed-java.io.IOException-">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>connectFailed</h4>
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/ReadOnlyZKClient.ZKTask.html#line.218">connectFailed</a>(<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>&nbsp;e)</pre>
+<dl>
+<dt><span class="overrideSpecifyLabel">Overrides:</span></dt>
+<dd><code><a href="../../../../../org/apache/hadoop/hbase/zookeeper/ReadOnlyZKClient.Task.html#connectFailed-java.io.IOException-">connectFailed</a></code>&nbsp;in class&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/zookeeper/ReadOnlyZKClient.Task.html" title="class in org.apache.hadoop.hbase.zookeeper">ReadOnlyZKClient.Task</a></code></dd>
+</dl>
+</li>
+</ul>
+<a name="closed-java.io.IOException-">
+<!--   -->
+</a>
+<ul class="blockListLast">
+<li class="blockList">
+<h4>closed</h4>
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/ReadOnlyZKClient.ZKTask.html#line.233">closed</a>(<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>&nbsp;e)</pre>
+<dl>
+<dt><span class="overrideSpecifyLabel">Overrides:</span></dt>
+<dd><code><a href="../../../../../org/apache/hadoop/hbase/zookeeper/ReadOnlyZKClient.Task.html#closed-java.io.IOException-">closed</a></code>&nbsp;in class&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/zookeeper/ReadOnlyZKClient.Task.html" title="class in org.apache.hadoop.hbase.zookeeper">ReadOnlyZKClient.Task</a></code></dd>
+</dl>
+</li>
+</ul>
+</li>
+</ul>
+</li>
+</ul>
+</div>
+</div>
+<!-- ========= END OF CLASS DATA ========= -->
+<!-- ======= START OF BOTTOM NAVBAR ====== -->
+<div class="bottomNav"><a name="navbar.bottom">
+<!--   -->
+</a>
+<div class="skipNav"><a href="#skip.navbar.bottom" title="Skip navigation links">Skip navigation links</a></div>
+<a name="navbar.bottom.firstrow">
+<!--   -->
+</a>
+<ul class="navList" title="Navigation">
+<li><a href="../../../../../overview-summary.html">Overview</a></li>
+<li><a href="package-summary.html">Package</a></li>
+<li class="navBarCell1Rev">Class</li>
+<li><a href="class-use/ReadOnlyZKClient.ZKTask.html">Use</a></li>
+<li><a href="package-tree.html">Tree</a></li>
+<li><a href="../../../../../deprecated-list.html">Deprecated</a></li>
+<li><a href="../../../../../index-all.html">Index</a></li>
+<li><a href="../../../../../help-doc.html">Help</a></li>
+</ul>
+</div>
+<div class="subNav">
+<ul class="navList">
+<li><a href="../../../../../org/apache/hadoop/hbase/zookeeper/ReadOnlyZKClient.Task.html" title="class in org.apache.hadoop.hbase.zookeeper"><span class="typeNameLink">Prev&nbsp;Class</span></a></li>
+<li><a href="../../../../../org/apache/hadoop/hbase/zookeeper/RecoverableZooKeeper.html" title="class in org.apache.hadoop.hbase.zookeeper"><span class="typeNameLink">Next&nbsp;Class</span></a></li>
+</ul>
+<ul class="navList">
+<li><a href="../../../../../index.html?org/apache/hadoop/hbase/zookeeper/ReadOnlyZKClient.ZKTask.html" target="_top">Frames</a></li>
+<li><a href="ReadOnlyZKClient.ZKTask.html" target="_top">No&nbsp;Frames</a></li>
+</ul>
+<ul class="navList" id="allclasses_navbar_bottom">
+<li><a href="../../../../../allclasses-noframe.html">All&nbsp;Classes</a></li>
+</ul>
+<div>
+<script type="text/javascript"><!--
+  allClassesLink = document.getElementById("allclasses_navbar_bottom");
+  if(window==top) {
+    allClassesLink.style.display = "block";
+  }
+  else {
+    allClassesLink.style.display = "none";
+  }
+  //-->
+</script>
+</div>
+<div>
+<ul class="subNavList">
+<li>Summary:&nbsp;</li>
+<li>Nested&nbsp;|&nbsp;</li>
+<li><a href="#field.summary">Field</a>&nbsp;|&nbsp;</li>
+<li><a href="#constructor.summary">Constr</a>&nbsp;|&nbsp;</li>
+<li><a href="#method.summary">Method</a></li>
+</ul>
+<ul class="subNavList">
+<li>Detail:&nbsp;</li>
+<li><a href="#field.detail">Field</a>&nbsp;|&nbsp;</li>
+<li><a href="#constructor.detail">Constr</a>&nbsp;|&nbsp;</li>
+<li><a href="#method.detail">Method</a></li>
+</ul>
+</div>
+<a name="skip.navbar.bottom">
+<!--   -->
+</a></div>
+<!-- ======== END OF BOTTOM NAVBAR ======= -->
+<p class="legalCopy"><small>Copyright &#169; 2007&#x2013;2017 <a href="https://www.apache.org/">The Apache Software Foundation</a>. All rights reserved.</small></p>
+</body>
+</html>


[03/51] [partial] hbase-site git commit: Published site at .

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/c54c242b/testdevapidocs/org/apache/hadoop/hbase/class-use/HBaseCommonTestingUtility.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/org/apache/hadoop/hbase/class-use/HBaseCommonTestingUtility.html b/testdevapidocs/org/apache/hadoop/hbase/class-use/HBaseCommonTestingUtility.html
index 892e00d..e1445dc 100644
--- a/testdevapidocs/org/apache/hadoop/hbase/class-use/HBaseCommonTestingUtility.html
+++ b/testdevapidocs/org/apache/hadoop/hbase/class-use/HBaseCommonTestingUtility.html
@@ -114,6 +114,10 @@
 <td class="colFirst"><a href="#org.apache.hadoop.hbase.util">org.apache.hadoop.hbase.util</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
+<tr class="altColor">
+<td class="colFirst"><a href="#org.apache.hadoop.hbase.zookeeper">org.apache.hadoop.hbase.zookeeper</a></td>
+<td class="colLast">&nbsp;</td>
+</tr>
 </tbody>
 </table>
 </li>
@@ -352,6 +356,24 @@
 </tbody>
 </table>
 </li>
+<li class="blockList"><a name="org.apache.hadoop.hbase.zookeeper">
+<!--   -->
+</a>
+<h3>Uses of <a href="../../../../../org/apache/hadoop/hbase/HBaseCommonTestingUtility.html" title="class in org.apache.hadoop.hbase">HBaseCommonTestingUtility</a> in <a href="../../../../../org/apache/hadoop/hbase/zookeeper/package-summary.html">org.apache.hadoop.hbase.zookeeper</a></h3>
+<table class="useSummary" border="0" cellpadding="3" cellspacing="0" summary="Use table, listing fields, and an explanation">
+<caption><span>Fields in <a href="../../../../../org/apache/hadoop/hbase/zookeeper/package-summary.html">org.apache.hadoop.hbase.zookeeper</a> declared as <a href="../../../../../org/apache/hadoop/hbase/HBaseCommonTestingUtility.html" title="class in org.apache.hadoop.hbase">HBaseCommonTestingUtility</a></span><span class="tabEnd">&nbsp;</span></caption>
+<tr>
+<th class="colFirst" scope="col">Modifier and Type</th>
+<th class="colLast" scope="col">Field and Description</th>
+</tr>
+<tbody>
+<tr class="altColor">
+<td class="colFirst"><code>private static <a href="../../../../../org/apache/hadoop/hbase/HBaseCommonTestingUtility.html" title="class in org.apache.hadoop.hbase">HBaseCommonTestingUtility</a></code></td>
+<td class="colLast"><span class="typeNameLabel">TestReadOnlyZKClient.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/zookeeper/TestReadOnlyZKClient.html#UTIL">UTIL</a></span></code>&nbsp;</td>
+</tr>
+</tbody>
+</table>
+</li>
 </ul>
 </li>
 </ul>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/c54c242b/testdevapidocs/org/apache/hadoop/hbase/client/TestZKAsyncRegistry.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/org/apache/hadoop/hbase/client/TestZKAsyncRegistry.html b/testdevapidocs/org/apache/hadoop/hbase/client/TestZKAsyncRegistry.html
index ddd8139..30f3d80 100644
--- a/testdevapidocs/org/apache/hadoop/hbase/client/TestZKAsyncRegistry.html
+++ b/testdevapidocs/org/apache/hadoop/hbase/client/TestZKAsyncRegistry.html
@@ -109,7 +109,7 @@ var activeTableTab = "activeTableTab";
 <li class="blockList">
 <hr>
 <br>
-<pre>public class <a href="../../../../../src-html/org/apache/hadoop/hbase/client/TestZKAsyncRegistry.html#line.49">TestZKAsyncRegistry</a>
+<pre>public class <a href="../../../../../src-html/org/apache/hadoop/hbase/client/TestZKAsyncRegistry.html#line.48">TestZKAsyncRegistry</a>
 extends <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a></pre>
 </li>
 </ul>
@@ -217,7 +217,7 @@ extends <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>TEST_UTIL</h4>
-<pre>private static final&nbsp;<a href="../../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html" title="class in org.apache.hadoop.hbase">HBaseTestingUtility</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/client/TestZKAsyncRegistry.html#line.51">TEST_UTIL</a></pre>
+<pre>private static final&nbsp;<a href="../../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html" title="class in org.apache.hadoop.hbase">HBaseTestingUtility</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/client/TestZKAsyncRegistry.html#line.50">TEST_UTIL</a></pre>
 </li>
 </ul>
 <a name="REGISTRY">
@@ -226,7 +226,7 @@ extends <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?
 <ul class="blockListLast">
 <li class="blockList">
 <h4>REGISTRY</h4>
-<pre>private static&nbsp;org.apache.hadoop.hbase.client.ZKAsyncRegistry <a href="../../../../../src-html/org/apache/hadoop/hbase/client/TestZKAsyncRegistry.html#line.53">REGISTRY</a></pre>
+<pre>private static&nbsp;org.apache.hadoop.hbase.client.ZKAsyncRegistry <a href="../../../../../src-html/org/apache/hadoop/hbase/client/TestZKAsyncRegistry.html#line.52">REGISTRY</a></pre>
 </li>
 </ul>
 </li>
@@ -243,7 +243,7 @@ extends <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?
 <ul class="blockListLast">
 <li class="blockList">
 <h4>TestZKAsyncRegistry</h4>
-<pre>public&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/TestZKAsyncRegistry.html#line.49">TestZKAsyncRegistry</a>()</pre>
+<pre>public&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/TestZKAsyncRegistry.html#line.48">TestZKAsyncRegistry</a>()</pre>
 </li>
 </ul>
 </li>
@@ -260,7 +260,7 @@ extends <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>waitUntilAllReplicasHavingRegionLocation</h4>
-<pre>static&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/TestZKAsyncRegistry.html#line.56">waitUntilAllReplicasHavingRegionLocation</a>(org.apache.hadoop.hbase.TableName&nbsp;tbl)
+<pre>static&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/TestZKAsyncRegistry.html#line.55">waitUntilAllReplicasHavingRegionLocation</a>(org.apache.hadoop.hbase.TableName&nbsp;tbl)
                                               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>
 <dl>
 <dt><span class="throwsLabel">Throws:</span></dt>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/c54c242b/testdevapidocs/org/apache/hadoop/hbase/mapreduce/TestImportExport.TableWALActionListener.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/org/apache/hadoop/hbase/mapreduce/TestImportExport.TableWALActionListener.html b/testdevapidocs/org/apache/hadoop/hbase/mapreduce/TestImportExport.TableWALActionListener.html
index 462c087..f8ca93a 100644
--- a/testdevapidocs/org/apache/hadoop/hbase/mapreduce/TestImportExport.TableWALActionListener.html
+++ b/testdevapidocs/org/apache/hadoop/hbase/mapreduce/TestImportExport.TableWALActionListener.html
@@ -100,15 +100,10 @@ var activeTableTab = "activeTableTab";
 <li><a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">java.lang.Object</a></li>
 <li>
 <ul class="inheritance">
-<li>org.apache.hadoop.hbase.regionserver.wal.WALActionsListener.Base</li>
-<li>
-<ul class="inheritance">
 <li>org.apache.hadoop.hbase.mapreduce.TestImportExport.TableWALActionListener</li>
 </ul>
 </li>
 </ul>
-</li>
-</ul>
 <div class="description">
 <ul class="blockList">
 <li class="blockList">
@@ -123,8 +118,9 @@ var activeTableTab = "activeTableTab";
 <hr>
 <br>
 <pre>private static class <a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/TestImportExport.html#line.781">TestImportExport.TableWALActionListener</a>
-extends org.apache.hadoop.hbase.regionserver.wal.WALActionsListener.Base</pre>
-<div class="block">This listens to the <code>#visitLogEntryBeforeWrite(RegionInfo, WALKey, WALEdit)</code> to
+extends <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a>
+implements org.apache.hadoop.hbase.regionserver.wal.WALActionsListener</pre>
+<div class="block">This listens to the <code>WALActionsListener.visitLogEntryBeforeWrite(RegionInfo, WALKey, WALEdit)</code> to
  identify that an entry is written to the Write Ahead Log for the given table.</div>
 </li>
 </ul>
@@ -132,21 +128,6 @@ extends org.apache.hadoop.hbase.regionserver.wal.WALActionsListener.Base</pre>
 <div class="summary">
 <ul class="blockList">
 <li class="blockList">
-<!-- ======== NESTED CLASS SUMMARY ======== -->
-<ul class="blockList">
-<li class="blockList"><a name="nested.class.summary">
-<!--   -->
-</a>
-<h3>Nested Class Summary</h3>
-<ul class="blockList">
-<li class="blockList"><a name="nested.classes.inherited.from.class.org.apache.hadoop.hbase.regionserver.wal.WALActionsListener">
-<!--   -->
-</a>
-<h3>Nested classes/interfaces inherited from interface&nbsp;org.apache.hadoop.hbase.regionserver.wal.WALActionsListener</h3>
-<code>org.apache.hadoop.hbase.regionserver.wal.WALActionsListener.Base</code></li>
-</ul>
-</li>
-</ul>
 <!-- =========== FIELD SUMMARY =========== -->
 <ul class="blockList">
 <li class="blockList"><a name="field.summary">
@@ -210,18 +191,18 @@ extends org.apache.hadoop.hbase.regionserver.wal.WALActionsListener.Base</pre>
 </tr>
 </table>
 <ul class="blockList">
-<li class="blockList"><a name="methods.inherited.from.class.org.apache.hadoop.hbase.regionserver.wal.WALActionsListener.Base">
+<li class="blockList"><a name="methods.inherited.from.class.java.lang.Object">
 <!--   -->
 </a>
-<h3>Methods inherited from class&nbsp;org.apache.hadoop.hbase.regionserver.wal.WALActionsListener.Base</h3>
-<code>logCloseRequested, logRollRequested, postAppend, postLogArchive, postLogRoll, postSync, preLogArchive, preLogRoll, visitLogEntryBeforeWrite</code></li>
+<h3>Methods inherited from class&nbsp;java.lang.<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a></h3>
+<code><a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#clone--" title="class or interface in java.lang">clone</a>, <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#equals-java.lang.Object-" title="class or interface in java.lang">equals</a>, <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#finalize--" title="class or interface in java.lang">finalize</a>, <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#getClass--" title="class or interface in java.lang">getClass</a>, <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#hashCode--" title="class or interface in java.lang">hashCode</a>, <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notify--" title="class or interface in java.lang">notify</a>, <a href="http://docs.oracle.com/javase/8/docs/api/java/lang
 /Object.html?is-external=true#notifyAll--" title="class or interface in java.lang">notifyAll</a>, <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#toString--" title="class or interface in java.lang">toString</a>, <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait--" title="class or interface in java.lang">wait</a>, <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-" title="class or interface in java.lang">wait</a>, <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-int-" title="class or interface in java.lang">wait</a></code></li>
 </ul>
 <ul class="blockList">
-<li class="blockList"><a name="methods.inherited.from.class.java.lang.Object">
+<li class="blockList"><a name="methods.inherited.from.class.org.apache.hadoop.hbase.regionserver.wal.WALActionsListener">
 <!--   -->
 </a>
-<h3>Methods inherited from class&nbsp;java.lang.<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a></h3>
-<code><a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#clone--" title="class or interface in java.lang">clone</a>, <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#equals-java.lang.Object-" title="class or interface in java.lang">equals</a>, <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#finalize--" title="class or interface in java.lang">finalize</a>, <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#getClass--" title="class or interface in java.lang">getClass</a>, <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#hashCode--" title="class or interface in java.lang">hashCode</a>, <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notify--" title="class or interface in java.lang">notify</a>, <a href="http://docs.oracle.com/javase/8/docs/api/java/lang
 /Object.html?is-external=true#notifyAll--" title="class or interface in java.lang">notifyAll</a>, <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#toString--" title="class or interface in java.lang">toString</a>, <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait--" title="class or interface in java.lang">wait</a>, <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-" title="class or interface in java.lang">wait</a>, <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-int-" title="class or interface in java.lang">wait</a></code></li>
+<h3>Methods inherited from interface&nbsp;org.apache.hadoop.hbase.regionserver.wal.WALActionsListener</h3>
+<code>logCloseRequested, logRollRequested, postAppend, postLogArchive, postLogRoll, postSync, preLogArchive, preLogRoll, visitLogEntryBeforeWrite</code></li>
 </ul>
 </li>
 </ul>
@@ -291,8 +272,6 @@ extends org.apache.hadoop.hbase.regionserver.wal.WALActionsListener.Base</pre>
 <dl>
 <dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
 <dd><code>visitLogEntryBeforeWrite</code>&nbsp;in interface&nbsp;<code>org.apache.hadoop.hbase.regionserver.wal.WALActionsListener</code></dd>
-<dt><span class="overrideSpecifyLabel">Overrides:</span></dt>
-<dd><code>visitLogEntryBeforeWrite</code>&nbsp;in class&nbsp;<code>org.apache.hadoop.hbase.regionserver.wal.WALActionsListener.Base</code></dd>
 </dl>
 </li>
 </ul>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/c54c242b/testdevapidocs/org/apache/hadoop/hbase/mapreduce/TestImportExport.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/org/apache/hadoop/hbase/mapreduce/TestImportExport.html b/testdevapidocs/org/apache/hadoop/hbase/mapreduce/TestImportExport.html
index ff39f98..fec207e 100644
--- a/testdevapidocs/org/apache/hadoop/hbase/mapreduce/TestImportExport.html
+++ b/testdevapidocs/org/apache/hadoop/hbase/mapreduce/TestImportExport.html
@@ -137,7 +137,7 @@ extends <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?
 <tr class="altColor">
 <td class="colFirst"><code>private static class&nbsp;</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/mapreduce/TestImportExport.TableWALActionListener.html" title="class in org.apache.hadoop.hbase.mapreduce">TestImportExport.TableWALActionListener</a></span></code>
-<div class="block">This listens to the <code>#visitLogEntryBeforeWrite(RegionInfo, WALKey, WALEdit)</code> to
+<div class="block">This listens to the <code>WALActionsListener.visitLogEntryBeforeWrite(RegionInfo, WALKey, WALEdit)</code> to
  identify that an entry is written to the Write Ahead Log for the given table.</div>
 </td>
 </tr>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/c54c242b/testdevapidocs/org/apache/hadoop/hbase/mapreduce/package-summary.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/org/apache/hadoop/hbase/mapreduce/package-summary.html b/testdevapidocs/org/apache/hadoop/hbase/mapreduce/package-summary.html
index ebc5d76..28b4b8e 100644
--- a/testdevapidocs/org/apache/hadoop/hbase/mapreduce/package-summary.html
+++ b/testdevapidocs/org/apache/hadoop/hbase/mapreduce/package-summary.html
@@ -274,7 +274,7 @@
 <tr class="rowColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/mapreduce/TestImportExport.TableWALActionListener.html" title="class in org.apache.hadoop.hbase.mapreduce">TestImportExport.TableWALActionListener</a></td>
 <td class="colLast">
-<div class="block">This listens to the <code>#visitLogEntryBeforeWrite(RegionInfo, WALKey, WALEdit)</code> to
+<div class="block">This listens to the <code>WALActionsListener.visitLogEntryBeforeWrite(RegionInfo, WALKey, WALEdit)</code> to
  identify that an entry is written to the Write Ahead Log for the given table.</div>
 </td>
 </tr>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/c54c242b/testdevapidocs/org/apache/hadoop/hbase/mapreduce/package-tree.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/org/apache/hadoop/hbase/mapreduce/package-tree.html b/testdevapidocs/org/apache/hadoop/hbase/mapreduce/package-tree.html
index aabbc1c..28a88fe 100644
--- a/testdevapidocs/org/apache/hadoop/hbase/mapreduce/package-tree.html
+++ b/testdevapidocs/org/apache/hadoop/hbase/mapreduce/package-tree.html
@@ -187,6 +187,7 @@
 <li type="circle">org.apache.hadoop.hbase.mapreduce.<a href="../../../../../org/apache/hadoop/hbase/mapreduce/TestHFileOutputFormat2.html" title="class in org.apache.hadoop.hbase.mapreduce"><span class="typeNameLink">TestHFileOutputFormat2</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.mapreduce.<a href="../../../../../org/apache/hadoop/hbase/mapreduce/TestHRegionPartitioner.html" title="class in org.apache.hadoop.hbase.mapreduce"><span class="typeNameLink">TestHRegionPartitioner</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.mapreduce.<a href="../../../../../org/apache/hadoop/hbase/mapreduce/TestImportExport.html" title="class in org.apache.hadoop.hbase.mapreduce"><span class="typeNameLink">TestImportExport</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.mapreduce.<a href="../../../../../org/apache/hadoop/hbase/mapreduce/TestImportExport.TableWALActionListener.html" title="class in org.apache.hadoop.hbase.mapreduce"><span class="typeNameLink">TestImportExport.TableWALActionListener</span></a> (implements org.apache.hadoop.hbase.regionserver.wal.WALActionsListener)</li>
 <li type="circle">org.apache.hadoop.hbase.mapreduce.<a href="../../../../../org/apache/hadoop/hbase/mapreduce/TestImportTsv.html" title="class in org.apache.hadoop.hbase.mapreduce"><span class="typeNameLink">TestImportTsv</span></a> (implements org.apache.hadoop.conf.Configurable)</li>
 <li type="circle">org.apache.hadoop.hbase.mapreduce.<a href="../../../../../org/apache/hadoop/hbase/mapreduce/TestImportTsvParser.html" title="class in org.apache.hadoop.hbase.mapreduce"><span class="typeNameLink">TestImportTsvParser</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.mapreduce.<a href="../../../../../org/apache/hadoop/hbase/mapreduce/TestImportTSVWithOperationAttributes.html" title="class in org.apache.hadoop.hbase.mapreduce"><span class="typeNameLink">TestImportTSVWithOperationAttributes</span></a> (implements org.apache.hadoop.conf.Configurable)</li>
@@ -223,11 +224,6 @@
 <li type="circle">org.apache.hadoop.hbase.mapreduce.<a href="../../../../../org/apache/hadoop/hbase/mapreduce/TestTimeRangeMapRed.html" title="class in org.apache.hadoop.hbase.mapreduce"><span class="typeNameLink">TestTimeRangeMapRed</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.mapreduce.<a href="../../../../../org/apache/hadoop/hbase/mapreduce/TestWALPlayer.html" title="class in org.apache.hadoop.hbase.mapreduce"><span class="typeNameLink">TestWALPlayer</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.mapreduce.<a href="../../../../../org/apache/hadoop/hbase/mapreduce/TestWALRecordReader.html" title="class in org.apache.hadoop.hbase.mapreduce"><span class="typeNameLink">TestWALRecordReader</span></a></li>
-<li type="circle">org.apache.hadoop.hbase.regionserver.wal.WALActionsListener.Base (implements org.apache.hadoop.hbase.regionserver.wal.WALActionsListener)
-<ul>
-<li type="circle">org.apache.hadoop.hbase.mapreduce.<a href="../../../../../org/apache/hadoop/hbase/mapreduce/TestImportExport.TableWALActionListener.html" title="class in org.apache.hadoop.hbase.mapreduce"><span class="typeNameLink">TestImportExport.TableWALActionListener</span></a></li>
-</ul>
-</li>
 <li type="circle">org.apache.hadoop.io.WritableComparator (implements org.apache.hadoop.conf.Configurable, org.apache.hadoop.io.RawComparator&lt;T&gt;)
 <ul>
 <li type="circle">org.apache.hadoop.hbase.mapreduce.<a href="../../../../../org/apache/hadoop/hbase/mapreduce/IntegrationTestBulkLoad.CompositeKeyComparator.html" title="class in org.apache.hadoop.hbase.mapreduce"><span class="typeNameLink">IntegrationTestBulkLoad.CompositeKeyComparator</span></a></li>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/c54c242b/testdevapidocs/org/apache/hadoop/hbase/package-tree.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/org/apache/hadoop/hbase/package-tree.html b/testdevapidocs/org/apache/hadoop/hbase/package-tree.html
index 516a939..db66b4b 100644
--- a/testdevapidocs/org/apache/hadoop/hbase/package-tree.html
+++ b/testdevapidocs/org/apache/hadoop/hbase/package-tree.html
@@ -574,15 +574,15 @@
 <ul>
 <li type="circle">java.lang.<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Enum.html?is-external=true" title="class or interface in java.lang"><span class="typeNameLink">Enum</span></a>&lt;E&gt; (implements java.lang.<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Comparable.html?is-external=true" title="class or interface in java.lang">Comparable</a>&lt;T&gt;, java.io.<a href="http://docs.oracle.com/javase/8/docs/api/java/io/Serializable.html?is-external=true" title="class or interface in java.io">Serializable</a>)
 <ul>
-<li type="circle">org.apache.hadoop.hbase.<a href="../../../../org/apache/hadoop/hbase/RESTApiClusterManager.Service.html" title="enum in org.apache.hadoop.hbase"><span class="typeNameLink">RESTApiClusterManager.Service</span></a></li>
-<li type="circle">org.apache.hadoop.hbase.<a href="../../../../org/apache/hadoop/hbase/RESTApiClusterManager.RoleCommand.html" title="enum in org.apache.hadoop.hbase"><span class="typeNameLink">RESTApiClusterManager.RoleCommand</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.<a href="../../../../org/apache/hadoop/hbase/ResourceChecker.Phase.html" title="enum in org.apache.hadoop.hbase"><span class="typeNameLink">ResourceChecker.Phase</span></a></li>
-<li type="circle">org.apache.hadoop.hbase.<a href="../../../../org/apache/hadoop/hbase/HBaseClusterManager.CommandProvider.Operation.html" title="enum in org.apache.hadoop.hbase"><span class="typeNameLink">HBaseClusterManager.CommandProvider.Operation</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.<a href="../../../../org/apache/hadoop/hbase/ScanPerformanceEvaluation.ScanCounter.html" title="enum in org.apache.hadoop.hbase"><span class="typeNameLink">ScanPerformanceEvaluation.ScanCounter</span></a></li>
-<li type="circle">org.apache.hadoop.hbase.<a href="../../../../org/apache/hadoop/hbase/ClusterManager.ServiceType.html" title="enum in org.apache.hadoop.hbase"><span class="typeNameLink">ClusterManager.ServiceType</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.<a href="../../../../org/apache/hadoop/hbase/RESTApiClusterManager.RoleCommand.html" title="enum in org.apache.hadoop.hbase"><span class="typeNameLink">RESTApiClusterManager.RoleCommand</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.<a href="../../../../org/apache/hadoop/hbase/IntegrationTestDDLMasterFailover.ACTION.html" title="enum in org.apache.hadoop.hbase"><span class="typeNameLink">IntegrationTestDDLMasterFailover.ACTION</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.<a href="../../../../org/apache/hadoop/hbase/RESTApiClusterManager.Service.html" title="enum in org.apache.hadoop.hbase"><span class="typeNameLink">RESTApiClusterManager.Service</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.<a href="../../../../org/apache/hadoop/hbase/PerformanceEvaluation.Counter.html" title="enum in org.apache.hadoop.hbase"><span class="typeNameLink">PerformanceEvaluation.Counter</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.<a href="../../../../org/apache/hadoop/hbase/IntegrationTestRegionReplicaPerf.Stat.html" title="enum in org.apache.hadoop.hbase"><span class="typeNameLink">IntegrationTestRegionReplicaPerf.Stat</span></a></li>
-<li type="circle">org.apache.hadoop.hbase.<a href="../../../../org/apache/hadoop/hbase/IntegrationTestDDLMasterFailover.ACTION.html" title="enum in org.apache.hadoop.hbase"><span class="typeNameLink">IntegrationTestDDLMasterFailover.ACTION</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.<a href="../../../../org/apache/hadoop/hbase/HBaseClusterManager.CommandProvider.Operation.html" title="enum in org.apache.hadoop.hbase"><span class="typeNameLink">HBaseClusterManager.CommandProvider.Operation</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.<a href="../../../../org/apache/hadoop/hbase/ClusterManager.ServiceType.html" title="enum in org.apache.hadoop.hbase"><span class="typeNameLink">ClusterManager.ServiceType</span></a></li>
 </ul>
 </li>
 </ul>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/c54c242b/testdevapidocs/org/apache/hadoop/hbase/package-use.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/org/apache/hadoop/hbase/package-use.html b/testdevapidocs/org/apache/hadoop/hbase/package-use.html
index 4e24178..dedd1bc 100644
--- a/testdevapidocs/org/apache/hadoop/hbase/package-use.html
+++ b/testdevapidocs/org/apache/hadoop/hbase/package-use.html
@@ -1917,6 +1917,11 @@
 </tr>
 <tbody>
 <tr class="altColor">
+<td class="colOne"><a href="../../../../org/apache/hadoop/hbase/class-use/HBaseCommonTestingUtility.html#org.apache.hadoop.hbase.zookeeper">HBaseCommonTestingUtility</a>
+<div class="block">Common helpers for testing HBase that do not depend on specific server/etc.</div>
+</td>
+</tr>
+<tr class="rowColor">
 <td class="colOne"><a href="../../../../org/apache/hadoop/hbase/class-use/HBaseTestingUtility.html#org.apache.hadoop.hbase.zookeeper">HBaseTestingUtility</a>
 <div class="block">Facility for testing HBase.</div>
 </td>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/c54c242b/testdevapidocs/org/apache/hadoop/hbase/procedure2/package-tree.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/org/apache/hadoop/hbase/procedure2/package-tree.html b/testdevapidocs/org/apache/hadoop/hbase/procedure2/package-tree.html
index b97ba43..b9a9b1d 100644
--- a/testdevapidocs/org/apache/hadoop/hbase/procedure2/package-tree.html
+++ b/testdevapidocs/org/apache/hadoop/hbase/procedure2/package-tree.html
@@ -205,9 +205,9 @@
 <ul>
 <li type="circle">java.lang.<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Enum.html?is-external=true" title="class or interface in java.lang"><span class="typeNameLink">Enum</span></a>&lt;E&gt; (implements java.lang.<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Comparable.html?is-external=true" title="class or interface in java.lang">Comparable</a>&lt;T&gt;, java.io.<a href="http://docs.oracle.com/javase/8/docs/api/java/io/Serializable.html?is-external=true" title="class or interface in java.io">Serializable</a>)
 <ul>
-<li type="circle">org.apache.hadoop.hbase.procedure2.<a href="../../../../../org/apache/hadoop/hbase/procedure2/TestProcedureRecovery.TestStateMachineProcedure.State.html" title="enum in org.apache.hadoop.hbase.procedure2"><span class="typeNameLink">TestProcedureRecovery.TestStateMachineProcedure.State</span></a></li>
-<li type="circle">org.apache.hadoop.hbase.procedure2.<a href="../../../../../org/apache/hadoop/hbase/procedure2/TestYieldProcedures.TestStateMachineProcedure.State.html" title="enum in org.apache.hadoop.hbase.procedure2"><span class="typeNameLink">TestYieldProcedures.TestStateMachineProcedure.State</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.procedure2.<a href="../../../../../org/apache/hadoop/hbase/procedure2/TestStateMachineProcedure.TestSMProcedureState.html" title="enum in org.apache.hadoop.hbase.procedure2"><span class="typeNameLink">TestStateMachineProcedure.TestSMProcedureState</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.procedure2.<a href="../../../../../org/apache/hadoop/hbase/procedure2/TestYieldProcedures.TestStateMachineProcedure.State.html" title="enum in org.apache.hadoop.hbase.procedure2"><span class="typeNameLink">TestYieldProcedures.TestStateMachineProcedure.State</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.procedure2.<a href="../../../../../org/apache/hadoop/hbase/procedure2/TestProcedureRecovery.TestStateMachineProcedure.State.html" title="enum in org.apache.hadoop.hbase.procedure2"><span class="typeNameLink">TestProcedureRecovery.TestStateMachineProcedure.State</span></a></li>
 </ul>
 </li>
 </ul>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/c54c242b/testdevapidocs/org/apache/hadoop/hbase/regionserver/TestHRegionServerBulkLoad.FindBulkHBaseListener.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/org/apache/hadoop/hbase/regionserver/TestHRegionServerBulkLoad.FindBulkHBaseListener.html b/testdevapidocs/org/apache/hadoop/hbase/regionserver/TestHRegionServerBulkLoad.FindBulkHBaseListener.html
index 7e7d87c..500a9e1 100644
--- a/testdevapidocs/org/apache/hadoop/hbase/regionserver/TestHRegionServerBulkLoad.FindBulkHBaseListener.html
+++ b/testdevapidocs/org/apache/hadoop/hbase/regionserver/TestHRegionServerBulkLoad.FindBulkHBaseListener.html
@@ -100,9 +100,6 @@ var activeTableTab = "activeTableTab";
 <li><a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">java.lang.Object</a></li>
 <li>
 <ul class="inheritance">
-<li>org.apache.hadoop.hbase.regionserver.wal.WALActionsListener.Base</li>
-<li>
-<ul class="inheritance">
 <li><a href="../../../../../org/apache/hadoop/hbase/regionserver/wal/TestWALActionsListener.DummyWALActionsListener.html" title="class in org.apache.hadoop.hbase.regionserver.wal">org.apache.hadoop.hbase.regionserver.wal.TestWALActionsListener.DummyWALActionsListener</a></li>
 <li>
 <ul class="inheritance">
@@ -112,8 +109,6 @@ var activeTableTab = "activeTableTab";
 </ul>
 </li>
 </ul>
-</li>
-</ul>
 <div class="description">
 <ul class="blockList">
 <li class="blockList">
@@ -135,21 +130,6 @@ extends <a href="../../../../../org/apache/hadoop/hbase/regionserver/wal/TestWAL
 <div class="summary">
 <ul class="blockList">
 <li class="blockList">
-<!-- ======== NESTED CLASS SUMMARY ======== -->
-<ul class="blockList">
-<li class="blockList"><a name="nested.class.summary">
-<!--   -->
-</a>
-<h3>Nested Class Summary</h3>
-<ul class="blockList">
-<li class="blockList"><a name="nested.classes.inherited.from.class.org.apache.hadoop.hbase.regionserver.wal.WALActionsListener">
-<!--   -->
-</a>
-<h3>Nested classes/interfaces inherited from interface&nbsp;org.apache.hadoop.hbase.regionserver.wal.WALActionsListener</h3>
-<code>org.apache.hadoop.hbase.regionserver.wal.WALActionsListener.Base</code></li>
-</ul>
-</li>
-</ul>
 <!-- =========== FIELD SUMMARY =========== -->
 <ul class="blockList">
 <li class="blockList"><a name="field.summary">
@@ -223,18 +203,18 @@ extends <a href="../../../../../org/apache/hadoop/hbase/regionserver/wal/TestWAL
 <code><a href="../../../../../org/apache/hadoop/hbase/regionserver/wal/TestWALActionsListener.DummyWALActionsListener.html#logCloseRequested--">logCloseRequested</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/wal/TestWALActionsListener.DummyWALActionsListener.html#postLogRoll-org.apache.hadoop.fs.Path-org.apache.hadoop.fs.Path-">postLogRoll</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/wal/TestWALActionsListener.DummyWALActionsListener.html#preLogRoll-org.apache.hadoop.fs.Path-org.apache.hadoop.fs.Path-">preLogRoll</a></code></li>
 </ul>
 <ul class="blockList">
-<li class="blockList"><a name="methods.inherited.from.class.org.apache.hadoop.hbase.regionserver.wal.WALActionsListener.Base">
+<li class="blockList"><a name="methods.inherited.from.class.java.lang.Object">
 <!--   -->
 </a>
-<h3>Methods inherited from class&nbsp;org.apache.hadoop.hbase.regionserver.wal.WALActionsListener.Base</h3>
-<code>logRollRequested, postAppend, postLogArchive, postSync, preLogArchive, visitLogEntryBeforeWrite</code></li>
+<h3>Methods inherited from class&nbsp;java.lang.<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a></h3>
+<code><a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#clone--" title="class or interface in java.lang">clone</a>, <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#equals-java.lang.Object-" title="class or interface in java.lang">equals</a>, <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#finalize--" title="class or interface in java.lang">finalize</a>, <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#getClass--" title="class or interface in java.lang">getClass</a>, <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#hashCode--" title="class or interface in java.lang">hashCode</a>, <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notify--" title="class or interface in java.lang">notify</a>, <a href="http://docs.oracle.com/javase/8/docs/api/java/lang
 /Object.html?is-external=true#notifyAll--" title="class or interface in java.lang">notifyAll</a>, <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#toString--" title="class or interface in java.lang">toString</a>, <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait--" title="class or interface in java.lang">wait</a>, <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-" title="class or interface in java.lang">wait</a>, <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-int-" title="class or interface in java.lang">wait</a></code></li>
 </ul>
 <ul class="blockList">
-<li class="blockList"><a name="methods.inherited.from.class.java.lang.Object">
+<li class="blockList"><a name="methods.inherited.from.class.org.apache.hadoop.hbase.regionserver.wal.WALActionsListener">
 <!--   -->
 </a>
-<h3>Methods inherited from class&nbsp;java.lang.<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a></h3>
-<code><a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#clone--" title="class or interface in java.lang">clone</a>, <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#equals-java.lang.Object-" title="class or interface in java.lang">equals</a>, <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#finalize--" title="class or interface in java.lang">finalize</a>, <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#getClass--" title="class or interface in java.lang">getClass</a>, <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#hashCode--" title="class or interface in java.lang">hashCode</a>, <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notify--" title="class or interface in java.lang">notify</a>, <a href="http://docs.oracle.com/javase/8/docs/api/java/lang
 /Object.html?is-external=true#notifyAll--" title="class or interface in java.lang">notifyAll</a>, <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#toString--" title="class or interface in java.lang">toString</a>, <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait--" title="class or interface in java.lang">wait</a>, <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-" title="class or interface in java.lang">wait</a>, <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-int-" title="class or interface in java.lang">wait</a></code></li>
+<h3>Methods inherited from interface&nbsp;org.apache.hadoop.hbase.regionserver.wal.WALActionsListener</h3>
+<code>logRollRequested, postAppend, postLogArchive, postSync, preLogArchive, visitLogEntryBeforeWrite</code></li>
 </ul>
 </li>
 </ul>
@@ -292,12 +272,6 @@ extends <a href="../../../../../org/apache/hadoop/hbase/regionserver/wal/TestWAL
 <h4>visitLogEntryBeforeWrite</h4>
 <pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestHRegionServerBulkLoad.FindBulkHBaseListener.html#line.435">visitLogEntryBeforeWrite</a>(org.apache.hadoop.hbase.wal.WALKey&nbsp;logKey,
                                      org.apache.hadoop.hbase.wal.WALEdit&nbsp;logEdit)</pre>
-<dl>
-<dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
-<dd><code>visitLogEntryBeforeWrite</code>&nbsp;in interface&nbsp;<code>org.apache.hadoop.hbase.regionserver.wal.WALActionsListener</code></dd>
-<dt><span class="overrideSpecifyLabel">Overrides:</span></dt>
-<dd><code>visitLogEntryBeforeWrite</code>&nbsp;in class&nbsp;<code>org.apache.hadoop.hbase.regionserver.wal.WALActionsListener.Base</code></dd>
-</dl>
 </li>
 </ul>
 <a name="isFound--">

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/c54c242b/testdevapidocs/org/apache/hadoop/hbase/regionserver/TestWALLockup.DummyWALActionsListener.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/org/apache/hadoop/hbase/regionserver/TestWALLockup.DummyWALActionsListener.html b/testdevapidocs/org/apache/hadoop/hbase/regionserver/TestWALLockup.DummyWALActionsListener.html
index d1d9ca4..480bcfd 100644
--- a/testdevapidocs/org/apache/hadoop/hbase/regionserver/TestWALLockup.DummyWALActionsListener.html
+++ b/testdevapidocs/org/apache/hadoop/hbase/regionserver/TestWALLockup.DummyWALActionsListener.html
@@ -100,15 +100,10 @@ var activeTableTab = "activeTableTab";
 <li><a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">java.lang.Object</a></li>
 <li>
 <ul class="inheritance">
-<li>org.apache.hadoop.hbase.regionserver.wal.WALActionsListener.Base</li>
-<li>
-<ul class="inheritance">
 <li>org.apache.hadoop.hbase.regionserver.TestWALLockup.DummyWALActionsListener</li>
 </ul>
 </li>
 </ul>
-</li>
-</ul>
 <div class="description">
 <ul class="blockList">
 <li class="blockList">
@@ -123,28 +118,14 @@ var activeTableTab = "activeTableTab";
 <hr>
 <br>
 <pre>static class <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/TestWALLockup.html#line.580">TestWALLockup.DummyWALActionsListener</a>
-extends org.apache.hadoop.hbase.regionserver.wal.WALActionsListener.Base</pre>
+extends <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a>
+implements org.apache.hadoop.hbase.regionserver.wal.WALActionsListener</pre>
 </li>
 </ul>
 </div>
 <div class="summary">
 <ul class="blockList">
 <li class="blockList">
-<!-- ======== NESTED CLASS SUMMARY ======== -->
-<ul class="blockList">
-<li class="blockList"><a name="nested.class.summary">
-<!--   -->
-</a>
-<h3>Nested Class Summary</h3>
-<ul class="blockList">
-<li class="blockList"><a name="nested.classes.inherited.from.class.org.apache.hadoop.hbase.regionserver.wal.WALActionsListener">
-<!--   -->
-</a>
-<h3>Nested classes/interfaces inherited from interface&nbsp;org.apache.hadoop.hbase.regionserver.wal.WALActionsListener</h3>
-<code>org.apache.hadoop.hbase.regionserver.wal.WALActionsListener.Base</code></li>
-</ul>
-</li>
-</ul>
 <!-- ======== CONSTRUCTOR SUMMARY ======== -->
 <ul class="blockList">
 <li class="blockList"><a name="constructor.summary">
@@ -181,18 +162,18 @@ extends org.apache.hadoop.hbase.regionserver.wal.WALActionsListener.Base</pre>
 </tr>
 </table>
 <ul class="blockList">
-<li class="blockList"><a name="methods.inherited.from.class.org.apache.hadoop.hbase.regionserver.wal.WALActionsListener.Base">
+<li class="blockList"><a name="methods.inherited.from.class.java.lang.Object">
 <!--   -->
 </a>
-<h3>Methods inherited from class&nbsp;org.apache.hadoop.hbase.regionserver.wal.WALActionsListener.Base</h3>
-<code>logCloseRequested, logRollRequested, postAppend, postLogArchive, postLogRoll, postSync, preLogArchive, preLogRoll, visitLogEntryBeforeWrite</code></li>
+<h3>Methods inherited from class&nbsp;java.lang.<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a></h3>
+<code><a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#clone--" title="class or interface in java.lang">clone</a>, <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#equals-java.lang.Object-" title="class or interface in java.lang">equals</a>, <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#finalize--" title="class or interface in java.lang">finalize</a>, <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#getClass--" title="class or interface in java.lang">getClass</a>, <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#hashCode--" title="class or interface in java.lang">hashCode</a>, <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notify--" title="class or interface in java.lang">notify</a>, <a href="http://docs.oracle.com/javase/8/docs/api/java/lang
 /Object.html?is-external=true#notifyAll--" title="class or interface in java.lang">notifyAll</a>, <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#toString--" title="class or interface in java.lang">toString</a>, <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait--" title="class or interface in java.lang">wait</a>, <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-" title="class or interface in java.lang">wait</a>, <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-int-" title="class or interface in java.lang">wait</a></code></li>
 </ul>
 <ul class="blockList">
-<li class="blockList"><a name="methods.inherited.from.class.java.lang.Object">
+<li class="blockList"><a name="methods.inherited.from.class.org.apache.hadoop.hbase.regionserver.wal.WALActionsListener">
 <!--   -->
 </a>
-<h3>Methods inherited from class&nbsp;java.lang.<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a></h3>
-<code><a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#clone--" title="class or interface in java.lang">clone</a>, <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#equals-java.lang.Object-" title="class or interface in java.lang">equals</a>, <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#finalize--" title="class or interface in java.lang">finalize</a>, <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#getClass--" title="class or interface in java.lang">getClass</a>, <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#hashCode--" title="class or interface in java.lang">hashCode</a>, <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notify--" title="class or interface in java.lang">notify</a>, <a href="http://docs.oracle.com/javase/8/docs/api/java/lang
 /Object.html?is-external=true#notifyAll--" title="class or interface in java.lang">notifyAll</a>, <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#toString--" title="class or interface in java.lang">toString</a>, <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait--" title="class or interface in java.lang">wait</a>, <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-" title="class or interface in java.lang">wait</a>, <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-int-" title="class or interface in java.lang">wait</a></code></li>
+<h3>Methods inherited from interface&nbsp;org.apache.hadoop.hbase.regionserver.wal.WALActionsListener</h3>
+<code>logCloseRequested, logRollRequested, postAppend, postLogArchive, postLogRoll, postSync, preLogArchive, preLogRoll, visitLogEntryBeforeWrite</code></li>
 </ul>
 </li>
 </ul>
@@ -237,8 +218,6 @@ extends org.apache.hadoop.hbase.regionserver.wal.WALActionsListener.Base</pre>
 <dl>
 <dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
 <dd><code>visitLogEntryBeforeWrite</code>&nbsp;in interface&nbsp;<code>org.apache.hadoop.hbase.regionserver.wal.WALActionsListener</code></dd>
-<dt><span class="overrideSpecifyLabel">Overrides:</span></dt>
-<dd><code>visitLogEntryBeforeWrite</code>&nbsp;in class&nbsp;<code>org.apache.hadoop.hbase.regionserver.wal.WALActionsListener.Base</code></dd>
 <dt><span class="throwsLabel">Throws:</span></dt>
 <dd><code><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></code></dd>
 </dl>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/c54c242b/testdevapidocs/org/apache/hadoop/hbase/regionserver/package-tree.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/org/apache/hadoop/hbase/regionserver/package-tree.html b/testdevapidocs/org/apache/hadoop/hbase/regionserver/package-tree.html
index e2bc538..187e77f 100644
--- a/testdevapidocs/org/apache/hadoop/hbase/regionserver/package-tree.html
+++ b/testdevapidocs/org/apache/hadoop/hbase/regionserver/package-tree.html
@@ -567,10 +567,16 @@
 <li type="circle">org.apache.hadoop.hbase.regionserver.<a href="../../../../../org/apache/hadoop/hbase/regionserver/TestTags.html" title="class in org.apache.hadoop.hbase.regionserver"><span class="typeNameLink">TestTags</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.regionserver.<a href="../../../../../org/apache/hadoop/hbase/regionserver/TestTags.TestCoprocessorForTags.html" title="class in org.apache.hadoop.hbase.regionserver"><span class="typeNameLink">TestTags.TestCoprocessorForTags</span></a> (implements org.apache.hadoop.hbase.coprocessor.RegionCoprocessor, org.apache.hadoop.hbase.coprocessor.RegionObserver)</li>
 <li type="circle">org.apache.hadoop.hbase.regionserver.<a href="../../../../../org/apache/hadoop/hbase/regionserver/TestTimestampFilterSeekHint.html" title="class in org.apache.hadoop.hbase.regionserver"><span class="typeNameLink">TestTimestampFilterSeekHint</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.regionserver.wal.<a href="../../../../../org/apache/hadoop/hbase/regionserver/wal/TestWALActionsListener.DummyWALActionsListener.html" title="class in org.apache.hadoop.hbase.regionserver.wal"><span class="typeNameLink">TestWALActionsListener.DummyWALActionsListener</span></a> (implements org.apache.hadoop.hbase.regionserver.wal.WALActionsListener)
+<ul>
+<li type="circle">org.apache.hadoop.hbase.regionserver.<a href="../../../../../org/apache/hadoop/hbase/regionserver/TestHRegionServerBulkLoad.FindBulkHBaseListener.html" title="class in org.apache.hadoop.hbase.regionserver"><span class="typeNameLink">TestHRegionServerBulkLoad.FindBulkHBaseListener</span></a></li>
+</ul>
+</li>
 <li type="circle">org.apache.hadoop.hbase.regionserver.<a href="../../../../../org/apache/hadoop/hbase/regionserver/TestWalAndCompactingMemStoreFlush.html" title="class in org.apache.hadoop.hbase.regionserver"><span class="typeNameLink">TestWalAndCompactingMemStoreFlush</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.regionserver.<a href="../../../../../org/apache/hadoop/hbase/regionserver/TestWalAndCompactingMemStoreFlush.ConcurrentPutRunnable.html" title="class in org.apache.hadoop.hbase.regionserver"><span class="typeNameLink">TestWalAndCompactingMemStoreFlush.ConcurrentPutRunnable</span></a> (implements java.lang.<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Runnable.html?is-external=true" title="class or interface in java.lang">Runnable</a>)</li>
 <li type="circle">org.apache.hadoop.hbase.regionserver.<a href="../../../../../org/apache/hadoop/hbase/regionserver/TestWALLockup.html" title="class in org.apache.hadoop.hbase.regionserver"><span class="typeNameLink">TestWALLockup</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.regionserver.<a href="../../../../../org/apache/hadoop/hbase/regionserver/TestWALLockup.DummyServer.html" title="class in org.apache.hadoop.hbase.regionserver"><span class="typeNameLink">TestWALLockup.DummyServer</span></a> (implements org.apache.hadoop.hbase.Server)</li>
+<li type="circle">org.apache.hadoop.hbase.regionserver.<a href="../../../../../org/apache/hadoop/hbase/regionserver/TestWALLockup.DummyWALActionsListener.html" title="class in org.apache.hadoop.hbase.regionserver"><span class="typeNameLink">TestWALLockup.DummyWALActionsListener</span></a> (implements org.apache.hadoop.hbase.regionserver.wal.WALActionsListener)</li>
 <li type="circle">org.apache.hadoop.hbase.regionserver.<a href="../../../../../org/apache/hadoop/hbase/regionserver/TestWALMonotonicallyIncreasingSeqId.html" title="class in org.apache.hadoop.hbase.regionserver"><span class="typeNameLink">TestWALMonotonicallyIncreasingSeqId</span></a></li>
 <li type="circle">java.lang.<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Thread.html?is-external=true" title="class or interface in java.lang"><span class="typeNameLink">Thread</span></a> (implements java.lang.<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Runnable.html?is-external=true" title="class or interface in java.lang">Runnable</a>)
 <ul>
@@ -603,16 +609,6 @@
 <li type="circle">org.apache.hadoop.hbase.regionserver.<a href="../../../../../org/apache/hadoop/hbase/regionserver/TestWALMonotonicallyIncreasingSeqId.PutThread.html" title="class in org.apache.hadoop.hbase.regionserver"><span class="typeNameLink">TestWALMonotonicallyIncreasingSeqId.PutThread</span></a></li>
 </ul>
 </li>
-<li type="circle">org.apache.hadoop.hbase.regionserver.wal.WALActionsListener.Base (implements org.apache.hadoop.hbase.regionserver.wal.WALActionsListener)
-<ul>
-<li type="circle">org.apache.hadoop.hbase.regionserver.wal.<a href="../../../../../org/apache/hadoop/hbase/regionserver/wal/TestWALActionsListener.DummyWALActionsListener.html" title="class in org.apache.hadoop.hbase.regionserver.wal"><span class="typeNameLink">TestWALActionsListener.DummyWALActionsListener</span></a>
-<ul>
-<li type="circle">org.apache.hadoop.hbase.regionserver.<a href="../../../../../org/apache/hadoop/hbase/regionserver/TestHRegionServerBulkLoad.FindBulkHBaseListener.html" title="class in org.apache.hadoop.hbase.regionserver"><span class="typeNameLink">TestHRegionServerBulkLoad.FindBulkHBaseListener</span></a></li>
-</ul>
-</li>
-<li type="circle">org.apache.hadoop.hbase.regionserver.<a href="../../../../../org/apache/hadoop/hbase/regionserver/TestWALLockup.DummyWALActionsListener.html" title="class in org.apache.hadoop.hbase.regionserver"><span class="typeNameLink">TestWALLockup.DummyWALActionsListener</span></a></li>
-</ul>
-</li>
 <li type="circle">org.apache.hadoop.hbase.zookeeper.ZKListener
 <ul>
 <li type="circle">org.apache.hadoop.hbase.regionserver.<a href="../../../../../org/apache/hadoop/hbase/regionserver/TestMasterAddressTracker.NodeCreationListener.html" title="class in org.apache.hadoop.hbase.regionserver"><span class="typeNameLink">TestMasterAddressTracker.NodeCreationListener</span></a></li>
@@ -632,10 +628,10 @@
 <li type="circle">java.lang.<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Enum.html?is-external=true" title="class or interface in java.lang"><span class="typeNameLink">Enum</span></a>&lt;E&gt; (implements java.lang.<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Comparable.html?is-external=true" title="class or interface in java.lang">Comparable</a>&lt;T&gt;, java.io.<a href="http://docs.oracle.com/javase/8/docs/api/java/io/Serializable.html?is-external=true" title="class or interface in java.io">Serializable</a>)
 <ul>
 <li type="circle">org.apache.hadoop.hbase.regionserver.<a href="../../../../../org/apache/hadoop/hbase/regionserver/DataBlockEncodingTool.Manipulation.html" title="enum in org.apache.hadoop.hbase.regionserver"><span class="typeNameLink">DataBlockEncodingTool.Manipulation</span></a></li>
-<li type="circle">org.apache.hadoop.hbase.regionserver.<a href="../../../../../org/apache/hadoop/hbase/regionserver/TestAtomicOperation.TestStep.html" title="enum in org.apache.hadoop.hbase.regionserver"><span class="typeNameLink">TestAtomicOperation.TestStep</span></a></li>
-<li type="circle">org.apache.hadoop.hbase.regionserver.<a href="../../../../../org/apache/hadoop/hbase/regionserver/TestRegionServerReadRequestMetrics.Metric.html" title="enum in org.apache.hadoop.hbase.regionserver"><span class="typeNameLink">TestRegionServerReadRequestMetrics.Metric</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.regionserver.<a href="../../../../../org/apache/hadoop/hbase/regionserver/TestCacheOnWriteInSchema.CacheOnWriteType.html" title="enum in org.apache.hadoop.hbase.regionserver"><span class="typeNameLink">TestCacheOnWriteInSchema.CacheOnWriteType</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.regionserver.<a href="../../../../../org/apache/hadoop/hbase/regionserver/TestMultiLogThreshold.ActionType.html" title="enum in org.apache.hadoop.hbase.regionserver"><span class="typeNameLink">TestMultiLogThreshold.ActionType</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.regionserver.<a href="../../../../../org/apache/hadoop/hbase/regionserver/TestAtomicOperation.TestStep.html" title="enum in org.apache.hadoop.hbase.regionserver"><span class="typeNameLink">TestAtomicOperation.TestStep</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.regionserver.<a href="../../../../../org/apache/hadoop/hbase/regionserver/TestRegionServerReadRequestMetrics.Metric.html" title="enum in org.apache.hadoop.hbase.regionserver"><span class="typeNameLink">TestRegionServerReadRequestMetrics.Metric</span></a></li>
 </ul>
 </li>
 </ul>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/c54c242b/testdevapidocs/org/apache/hadoop/hbase/regionserver/wal/TestWALActionsListener.DummyWALActionsListener.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/org/apache/hadoop/hbase/regionserver/wal/TestWALActionsListener.DummyWALActionsListener.html b/testdevapidocs/org/apache/hadoop/hbase/regionserver/wal/TestWALActionsListener.DummyWALActionsListener.html
index 2440f73..29bb90c 100644
--- a/testdevapidocs/org/apache/hadoop/hbase/regionserver/wal/TestWALActionsListener.DummyWALActionsListener.html
+++ b/testdevapidocs/org/apache/hadoop/hbase/regionserver/wal/TestWALActionsListener.DummyWALActionsListener.html
@@ -100,15 +100,10 @@ var activeTableTab = "activeTableTab";
 <li><a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">java.lang.Object</a></li>
 <li>
 <ul class="inheritance">
-<li>org.apache.hadoop.hbase.regionserver.wal.WALActionsListener.Base</li>
-<li>
-<ul class="inheritance">
 <li>org.apache.hadoop.hbase.regionserver.wal.TestWALActionsListener.DummyWALActionsListener</li>
 </ul>
 </li>
 </ul>
-</li>
-</ul>
 <div class="description">
 <ul class="blockList">
 <li class="blockList">
@@ -127,7 +122,8 @@ var activeTableTab = "activeTableTab";
 <hr>
 <br>
 <pre>public static class <a href="../../../../../../src-html/org/apache/hadoop/hbase/regionserver/wal/TestWALActionsListener.html#line.142">TestWALActionsListener.DummyWALActionsListener</a>
-extends org.apache.hadoop.hbase.regionserver.wal.WALActionsListener.Base</pre>
+extends <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a>
+implements org.apache.hadoop.hbase.regionserver.wal.WALActionsListener</pre>
 <div class="block">Just counts when methods are called</div>
 </li>
 </ul>
@@ -135,21 +131,6 @@ extends org.apache.hadoop.hbase.regionserver.wal.WALActionsListener.Base</pre>
 <div class="summary">
 <ul class="blockList">
 <li class="blockList">
-<!-- ======== NESTED CLASS SUMMARY ======== -->
-<ul class="blockList">
-<li class="blockList"><a name="nested.class.summary">
-<!--   -->
-</a>
-<h3>Nested Class Summary</h3>
-<ul class="blockList">
-<li class="blockList"><a name="nested.classes.inherited.from.class.org.apache.hadoop.hbase.regionserver.wal.WALActionsListener">
-<!--   -->
-</a>
-<h3>Nested classes/interfaces inherited from interface&nbsp;org.apache.hadoop.hbase.regionserver.wal.WALActionsListener</h3>
-<code>org.apache.hadoop.hbase.regionserver.wal.WALActionsListener.Base</code></li>
-</ul>
-</li>
-</ul>
 <!-- =========== FIELD SUMMARY =========== -->
 <ul class="blockList">
 <li class="blockList"><a name="field.summary">
@@ -222,18 +203,18 @@ extends org.apache.hadoop.hbase.regionserver.wal.WALActionsListener.Base</pre>
 </tr>
 </table>
 <ul class="blockList">
-<li class="blockList"><a name="methods.inherited.from.class.org.apache.hadoop.hbase.regionserver.wal.WALActionsListener.Base">
+<li class="blockList"><a name="methods.inherited.from.class.java.lang.Object">
 <!--   -->
 </a>
-<h3>Methods inherited from class&nbsp;org.apache.hadoop.hbase.regionserver.wal.WALActionsListener.Base</h3>
-<code>logRollRequested, postAppend, postLogArchive, postSync, preLogArchive, visitLogEntryBeforeWrite, visitLogEntryBeforeWrite</code></li>
+<h3>Methods inherited from class&nbsp;java.lang.<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a></h3>
+<code><a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#clone--" title="class or interface in java.lang">clone</a>, <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#equals-java.lang.Object-" title="class or interface in java.lang">equals</a>, <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#finalize--" title="class or interface in java.lang">finalize</a>, <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#getClass--" title="class or interface in java.lang">getClass</a>, <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#hashCode--" title="class or interface in java.lang">hashCode</a>, <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notify--" title="class or interface in java.lang">notify</a>, <a href="http://docs.oracle.com/javase/8/docs/api/java/lang
 /Object.html?is-external=true#notifyAll--" title="class or interface in java.lang">notifyAll</a>, <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#toString--" title="class or interface in java.lang">toString</a>, <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait--" title="class or interface in java.lang">wait</a>, <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-" title="class or interface in java.lang">wait</a>, <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-int-" title="class or interface in java.lang">wait</a></code></li>
 </ul>
 <ul class="blockList">
-<li class="blockList"><a name="methods.inherited.from.class.java.lang.Object">
+<li class="blockList"><a name="methods.inherited.from.class.org.apache.hadoop.hbase.regionserver.wal.WALActionsListener">
 <!--   -->
 </a>
-<h3>Methods inherited from class&nbsp;java.lang.<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a></h3>
-<code><a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#clone--" title="class or interface in java.lang">clone</a>, <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#equals-java.lang.Object-" title="class or interface in java.lang">equals</a>, <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#finalize--" title="class or interface in java.lang">finalize</a>, <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#getClass--" title="class or interface in java.lang">getClass</a>, <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#hashCode--" title="class or interface in java.lang">hashCode</a>, <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notify--" title="class or interface in java.lang">notify</a>, <a href="http://docs.oracle.com/javase/8/docs/api/java/lang
 /Object.html?is-external=true#notifyAll--" title="class or interface in java.lang">notifyAll</a>, <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#toString--" title="class or interface in java.lang">toString</a>, <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait--" title="class or interface in java.lang">wait</a>, <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-" title="class or interface in java.lang">wait</a>, <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-int-" title="class or interface in java.lang">wait</a></code></li>
+<h3>Methods inherited from interface&nbsp;org.apache.hadoop.hbase.regionserver.wal.WALActionsListener</h3>
+<code>logRollRequested, postAppend, postLogArchive, postSync, preLogArchive, visitLogEntryBeforeWrite, visitLogEntryBeforeWrite</code></li>
 </ul>
 </li>
 </ul>
@@ -312,8 +293,6 @@ extends org.apache.hadoop.hbase.regionserver.wal.WALActionsListener.Base</pre>
 <dl>
 <dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
 <dd><code>preLogRoll</code>&nbsp;in interface&nbsp;<code>org.apache.hadoop.hbase.regionserver.wal.WALActionsListener</code></dd>
-<dt><span class="overrideSpecifyLabel">Overrides:</span></dt>
-<dd><code>preLogRoll</code>&nbsp;in class&nbsp;<code>org.apache.hadoop.hbase.regionserver.wal.WALActionsListener.Base</code></dd>
 </dl>
 </li>
 </ul>
@@ -328,8 +307,6 @@ extends org.apache.hadoop.hbase.regionserver.wal.WALActionsListener.Base</pre>
 <dl>
 <dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
 <dd><code>postLogRoll</code>&nbsp;in interface&nbsp;<code>org.apache.hadoop.hbase.regionserver.wal.WALActionsListener</code></dd>
-<dt><span class="overrideSpecifyLabel">Overrides:</span></dt>
-<dd><code>postLogRoll</code>&nbsp;in class&nbsp;<code>org.apache.hadoop.hbase.regionserver.wal.WALActionsListener.Base</code></dd>
 </dl>
 </li>
 </ul>
@@ -343,8 +320,6 @@ extends org.apache.hadoop.hbase.regionserver.wal.WALActionsListener.Base</pre>
 <dl>
 <dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
 <dd><code>logCloseRequested</code>&nbsp;in interface&nbsp;<code>org.apache.hadoop.hbase.regionserver.wal.WALActionsListener</code></dd>
-<dt><span class="overrideSpecifyLabel">Overrides:</span></dt>
-<dd><code>logCloseRequested</code>&nbsp;in class&nbsp;<code>org.apache.hadoop.hbase.regionserver.wal.WALActionsListener.Base</code></dd>
 </dl>
 </li>
 </ul>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/c54c242b/testdevapidocs/org/apache/hadoop/hbase/regionserver/wal/package-tree.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/org/apache/hadoop/hbase/regionserver/wal/package-tree.html b/testdevapidocs/org/apache/hadoop/hbase/regionserver/wal/package-tree.html
index 1518660..32c69cf 100644
--- a/testdevapidocs/org/apache/hadoop/hbase/regionserver/wal/package-tree.html
+++ b/testdevapidocs/org/apache/hadoop/hbase/regionserver/wal/package-tree.html
@@ -167,17 +167,13 @@
 <li type="circle">org.apache.hadoop.hbase.regionserver.wal.<a href="../../../../../../org/apache/hadoop/hbase/regionserver/wal/TestSequenceIdAccounting.html" title="class in org.apache.hadoop.hbase.regionserver.wal"><span class="typeNameLink">TestSequenceIdAccounting</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.regionserver.wal.<a href="../../../../../../org/apache/hadoop/hbase/regionserver/wal/TestSyncFuture.html" title="class in org.apache.hadoop.hbase.regionserver.wal"><span class="typeNameLink">TestSyncFuture</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.regionserver.wal.<a href="../../../../../../org/apache/hadoop/hbase/regionserver/wal/TestWALActionsListener.html" title="class in org.apache.hadoop.hbase.regionserver.wal"><span class="typeNameLink">TestWALActionsListener</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.regionserver.wal.<a href="../../../../../../org/apache/hadoop/hbase/regionserver/wal/TestWALActionsListener.DummyWALActionsListener.html" title="class in org.apache.hadoop.hbase.regionserver.wal"><span class="typeNameLink">TestWALActionsListener.DummyWALActionsListener</span></a> (implements org.apache.hadoop.hbase.regionserver.wal.WALActionsListener)</li>
 <li type="circle">org.apache.hadoop.hbase.regionserver.wal.<a href="../../../../../../org/apache/hadoop/hbase/regionserver/wal/TestWALCellCodecWithCompression.html" title="class in org.apache.hadoop.hbase.regionserver.wal"><span class="typeNameLink">TestWALCellCodecWithCompression</span></a></li>
 <li type="circle">java.lang.<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Thread.html?is-external=true" title="class or interface in java.lang"><span class="typeNameLink">Thread</span></a> (implements java.lang.<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Runnable.html?is-external=true" title="class or interface in java.lang">Runnable</a>)
 <ul>
 <li type="circle">org.apache.hadoop.hbase.regionserver.wal.<a href="../../../../../../org/apache/hadoop/hbase/regionserver/wal/TestLogRollingNoCluster.Appender.html" title="class in org.apache.hadoop.hbase.regionserver.wal"><span class="typeNameLink">TestLogRollingNoCluster.Appender</span></a></li>
 </ul>
 </li>
-<li type="circle">org.apache.hadoop.hbase.regionserver.wal.WALActionsListener.Base (implements org.apache.hadoop.hbase.regionserver.wal.WALActionsListener)
-<ul>
-<li type="circle">org.apache.hadoop.hbase.regionserver.wal.<a href="../../../../../../org/apache/hadoop/hbase/regionserver/wal/TestWALActionsListener.DummyWALActionsListener.html" title="class in org.apache.hadoop.hbase.regionserver.wal"><span class="typeNameLink">TestWALActionsListener.DummyWALActionsListener</span></a></li>
-</ul>
-</li>
 <li type="circle">org.apache.hadoop.hbase.regionserver.wal.WALCellCodec (implements org.apache.hadoop.hbase.codec.Codec)
 <ul>
 <li type="circle">org.apache.hadoop.hbase.regionserver.wal.<a href="../../../../../../org/apache/hadoop/hbase/regionserver/wal/TestCustomWALCellCodec.CustomWALCellCodec.html" title="class in org.apache.hadoop.hbase.regionserver.wal"><span class="typeNameLink">TestCustomWALCellCodec.CustomWALCellCodec</span></a></li>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/c54c242b/testdevapidocs/org/apache/hadoop/hbase/replication/regionserver/TestWALEntryStream.PathWatcher.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/org/apache/hadoop/hbase/replication/regionserver/TestWALEntryStream.PathWatcher.html b/testdevapidocs/org/apache/hadoop/hbase/replication/regionserver/TestWALEntryStream.PathWatcher.html
index 221719c..a1d48d6 100644
--- a/testdevapidocs/org/apache/hadoop/hbase/replication/regionserver/TestWALEntryStream.PathWatcher.html
+++ b/testdevapidocs/org/apache/hadoop/hbase/replication/regionserver/TestWALEntryStream.PathWatcher.html
@@ -100,15 +100,10 @@ var activeTableTab = "activeTableTab";
 <li><a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">java.lang.Object</a></li>
 <li>
 <ul class="inheritance">
-<li>org.apache.hadoop.hbase.regionserver.wal.WALActionsListener.Base</li>
-<li>
-<ul class="inheritance">
 <li>org.apache.hadoop.hbase.replication.regionserver.TestWALEntryStream.PathWatcher</li>
 </ul>
 </li>
 </ul>
-</li>
-</ul>
 <div class="description">
 <ul class="blockList">
 <li class="blockList">
@@ -123,28 +118,14 @@ var activeTableTab = "activeTableTab";
 <hr>
 <br>
 <pre>class <a href="../../../../../../src-html/org/apache/hadoop/hbase/replication/regionserver/TestWALEntryStream.html#line.425">TestWALEntryStream.PathWatcher</a>
-extends org.apache.hadoop.hbase.regionserver.wal.WALActionsListener.Base</pre>
+extends <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a>
+implements org.apache.hadoop.hbase.regionserver.wal.WALActionsListener</pre>
 </li>
 </ul>
 </div>
 <div class="summary">
 <ul class="blockList">
 <li class="blockList">
-<!-- ======== NESTED CLASS SUMMARY ======== -->
-<ul class="blockList">
-<li class="blockList"><a name="nested.class.summary">
-<!--   -->
-</a>
-<h3>Nested Class Summary</h3>
-<ul class="blockList">
-<li class="blockList"><a name="nested.classes.inherited.from.class.org.apache.hadoop.hbase.regionserver.wal.WALActionsListener">
-<!--   -->
-</a>
-<h3>Nested classes/interfaces inherited from interface&nbsp;org.apache.hadoop.hbase.regionserver.wal.WALActionsListener</h3>
-<code>org.apache.hadoop.hbase.regionserver.wal.WALActionsListener.Base</code></li>
-</ul>
-</li>
-</ul>
 <!-- =========== FIELD SUMMARY =========== -->
 <ul class="blockList">
 <li class="blockList"><a name="field.summary">
@@ -200,18 +181,18 @@ extends org.apache.hadoop.hbase.regionserver.wal.WALActionsListener.Base</pre>
 </tr>
 </table>
 <ul class="blockList">
-<li class="blockList"><a name="methods.inherited.from.class.org.apache.hadoop.hbase.regionserver.wal.WALActionsListener.Base">
+<li class="blockList"><a name="methods.inherited.from.class.java.lang.Object">
 <!--   -->
 </a>
-<h3>Methods inherited from class&nbsp;org.apache.hadoop.hbase.regionserver.wal.WALActionsListener.Base</h3>
-<code>logCloseRequested, logRollRequested, postAppend, postLogArchive, postLogRoll, postSync, preLogArchive, visitLogEntryBeforeWrite, visitLogEntryBeforeWrite</code></li>
+<h3>Methods inherited from class&nbsp;java.lang.<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a></h3>
+<code><a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#clone--" title="class or interface in java.lang">clone</a>, <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#equals-java.lang.Object-" title="class or interface in java.lang">equals</a>, <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#finalize--" title="class or interface in java.lang">finalize</a>, <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#getClass--" title="class or interface in java.lang">getClass</a>, <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#hashCode--" title="class or interface in java.lang">hashCode</a>, <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notify--" title="class or interface in java.lang">notify</a>, <a href="http://docs.oracle.com/javase/8/docs/api/java/lang
 /Object.html?is-external=true#notifyAll--" title="class or interface in java.lang">notifyAll</a>, <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#toString--" title="class or interface in java.lang">toString</a>, <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait--" title="class or interface in java.lang">wait</a>, <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-" title="class or interface in java.lang">wait</a>, <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-int-" title="class or interface in java.lang">wait</a></code></li>
 </ul>
 <ul class="blockList">
-<li class="blockList"><a name="methods.inherited.from.class.java.lang.Object">
+<li class="blockList"><a name="methods.inherited.from.class.org.apache.hadoop.hbase.regionserver.wal.WALActionsListener">
 <!--   -->
 </a>
-<h3>Methods inherited from class&nbsp;java.lang.<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a></h3>
-<code><a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#clone--" title="class or interface in java.lang">clone</a>, <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#equals-java.lang.Object-" title="class or interface in java.lang">equals</a>, <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#finalize--" title="class or interface in java.lang">finalize</a>, <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#getClass--" title="class or interface in java.lang">getClass</a>, <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#hashCode--" title="class or interface in java.lang">hashCode</a>, <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notify--" title="class or interface in java.lang">notify</a>, <a href="http://docs.oracle.com/javase/8/docs/api/java/lang
 /Object.html?is-external=true#notifyAll--" title="class or interface in java.lang">notifyAll</a>, <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#toString--" title="class or interface in java.lang">toString</a>, <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait--" title="class or interface in java.lang">wait</a>, <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-" title="class or interface in java.lang">wait</a>, <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-int-" title="class or interface in java.lang">wait</a></code></li>
+<h3>Methods inherited from interface&nbsp;org.apache.hadoop.hbase.regionserver.wal.WALActionsListener</h3>
+<code>logCloseRequested, logRollRequested, postAppend, postLogArchive, postLogRoll, postSync, preLogArchive, visitLogEntryBeforeWrite, visitLogEntryBeforeWrite</code></li>
 </ul>
 </li>
 </ul>
@@ -273,8 +254,6 @@ extends org.apache.hadoop.hbase.regionserver.wal.WALActionsListener.Base</pre>
 <dl>
 <dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
 <dd><code>preLogRoll</code>&nbsp;in interface&nbsp;<code>org.apache.hadoop.hbase.regionserver.wal.WALActionsListener</code></dd>
-<dt><span class="overrideSpecifyLabel">Overrides:</span></dt>
-<dd><code>preLogRoll</code>&nbsp;in class&nbsp;<code>org.apache.hadoop.hbase.regionserver.wal.WALActionsListener.Base</code></dd>
 <dt><span class="throwsLabel">Throws:</span></dt>
 <dd><code><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></code></dd>
 </dl>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/c54c242b/testdevapidocs/org/apache/hadoop/hbase/replication/regionserver/package-tree.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/org/apache/hadoop/hbase/replication/regionserver/package-tree.html b/testdevapidocs/org/apache/hadoop/hbase/replication/regionserver/package-tree.html
index d34e903..8dff33f 100644
--- a/testdevapidocs/org/apache/hadoop/hbase/replication/regionserver/package-tree.html
+++ b/testdevapidocs/org/apache/hadoop/hbase/replication/regionserver/package-tree.html
@@ -137,16 +137,12 @@
 </li>
 <li type="circle">org.apache.hadoop.hbase.replication.regionserver.<a href="../../../../../../org/apache/hadoop/hbase/replication/regionserver/TestSourceFSConfigurationProvider.html" title="class in org.apache.hadoop.hbase.replication.regionserver"><span class="typeNameLink">TestSourceFSConfigurationProvider</span></a> (implements org.apache.hadoop.hbase.replication.regionserver.SourceFSConfigurationProvider)</li>
 <li type="circle">org.apache.hadoop.hbase.replication.regionserver.<a href="../../../../../../org/apache/hadoop/hbase/replication/regionserver/TestWALEntryStream.html" title="class in org.apache.hadoop.hbase.replication.regionserver"><span class="typeNameLink">TestWALEntryStream</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.replication.regionserver.<a href="../../../../../../org/apache/hadoop/hbase/replication/regionserver/TestWALEntryStream.PathWatcher.html" title="class in org.apache.hadoop.hbase.replication.regionserver"><span class="typeNameLink">TestWALEntryStream.PathWatcher</span></a> (implements org.apache.hadoop.hbase.regionserver.wal.WALActionsListener)</li>
 <li type="circle">java.lang.<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Thread.html?is-external=true" title="class or interface in java.lang"><span class="typeNameLink">Thread</span></a> (implements java.lang.<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Runnable.html?is-external=true" title="class or interface in java.lang">Runnable</a>)
 <ul>
 <li type="circle">org.apache.hadoop.hbase.replication.regionserver.<a href="../../../../../../org/apache/hadoop/hbase/replication/regionserver/TestReplicationSourceManager.DummyNodeFailoverWorker.html" title="class in org.apache.hadoop.hbase.replication.regionserver"><span class="typeNameLink">TestReplicationSourceManager.DummyNodeFailoverWorker</span></a></li>
 </ul>
 </li>
-<li type="circle">org.apache.hadoop.hbase.regionserver.wal.WALActionsListener.Base (implements org.apache.hadoop.hbase.regionserver.wal.WALActionsListener)
-<ul>
-<li type="circle">org.apache.hadoop.hbase.replication.regionserver.<a href="../../../../../../org/apache/hadoop/hbase/replication/regionserver/TestWALEntryStream.PathWatcher.html" title="class in org.apache.hadoop.hbase.replication.regionserver"><span class="typeNameLink">TestWALEntryStream.PathWatcher</span></a></li>
-</ul>
-</li>
 </ul>
 </li>
 </ul>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/c54c242b/testdevapidocs/org/apache/hadoop/hbase/test/package-tree.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/org/apache/hadoop/hbase/test/package-tree.html b/testdevapidocs/org/apache/hadoop/hbase/test/package-tree.html
index 573c60a..5103624 100644
--- a/testdevapidocs/org/apache/hadoop/hbase/test/package-tree.html
+++ b/testdevapidocs/org/apache/hadoop/hbase/test/package-tree.html
@@ -253,9 +253,9 @@
 <ul>
 <li type="circle">java.lang.<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Enum.html?is-external=true" title="class or interface in java.lang"><span class="typeNameLink">Enum</span></a>&lt;E&gt; (implements java.lang.<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Comparable.html?is-external=true" title="class or interface in java.lang">Comparable</a>&lt;T&gt;, java.io.<a href="http://docs.oracle.com/javase/8/docs/api/java/io/Serializable.html?is-external=true" title="class or interface in java.io">Serializable</a>)
 <ul>
+<li type="circle">org.apache.hadoop.hbase.test.<a href="../../../../../org/apache/hadoop/hbase/test/IntegrationTestBigLinkedList.Generator.Counts.html" title="enum in org.apache.hadoop.hbase.test"><span class="typeNameLink">IntegrationTestBigLinkedList.Generator.Counts</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.test.<a href="../../../../../org/apache/hadoop/hbase/test/IntegrationTestLoadAndVerify.Counters.html" title="enum in org.apache.hadoop.hbase.test"><span class="typeNameLink">IntegrationTestLoadAndVerify.Counters</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.test.<a href="../../../../../org/apache/hadoop/hbase/test/IntegrationTestBigLinkedList.Verify.Counts.html" title="enum in org.apache.hadoop.hbase.test"><span class="typeNameLink">IntegrationTestBigLinkedList.Verify.Counts</span></a></li>
-<li type="circle">org.apache.hadoop.hbase.test.<a href="../../../../../org/apache/hadoop/hbase/test/IntegrationTestBigLinkedList.Generator.Counts.html" title="enum in org.apache.hadoop.hbase.test"><span class="typeNameLink">IntegrationTestBigLinkedList.Generator.Counts</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.test.<a href="../../../../../org/apache/hadoop/hbase/test/IntegrationTestWithCellVisibilityLoadAndVerify.Counters.html" title="enum in org.apache.hadoop.hbase.test"><span class="typeNameLink">IntegrationTestWithCellVisibilityLoadAndVerify.Counters</span></a></li>
 </ul>
 </li>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/c54c242b/testdevapidocs/org/apache/hadoop/hbase/testclassification/VerySlowRegionServerTests.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/org/apache/hadoop/hbase/testclassification/VerySlowRegionServerTests.html b/testdevapidocs/org/apache/hadoop/hbase/testclassification/VerySlowRegionServerTests.html
index bd6bea9..6459dbd 100644
--- a/testdevapidocs/org/apache/hadoop/hbase/testclassification/VerySlowRegionServerTests.html
+++ b/testdevapidocs/org/apache/hadoop/hbase/testclassification/VerySlowRegionServerTests.html
@@ -44,7 +44,7 @@
 <div class="subNav">
 <ul class="navList">
 <li><a href="../../../../../org/apache/hadoop/hbase/testclassification/VerySlowMapReduceTests.html" title="interface in org.apache.hadoop.hbase.testclassification"><span class="typeNameLink">Prev&nbsp;Class</span></a></li>
-<li>Next&nbsp;Class</li>
+<li><a href="../../../../../org/apache/hadoop/hbase/testclassification/ZKTests.html" title="interface in org.apache.hadoop.hbase.testclassification"><span class="typeNameLink">Next&nbsp;Class</span></a></li>
 </ul>
 <ul class="navList">
 <li><a href="../../../../../index.html?org/apache/hadoop/hbase/testclassification/VerySlowRegionServerTests.html" target="_top">Frames</a></li>
@@ -123,7 +123,7 @@
 <div class="subNav">
 <ul class="navList">
 <li><a href="../../../../../org/apache/hadoop/hbase/testclassification/VerySlowMapReduceTests.html" title="interface in org.apache.hadoop.hbase.testclassification"><span class="typeNameLink">Prev&nbsp;Class</span></a></li>
-<li>Next&nbsp;Class</li>
+<li><a href="../../../../../org/apache/hadoop/hbase/testclassification/ZKTests.html" title="interface in org.apache.hadoop.hbase.testclassification"><span class="typeNameLink">Next&nbsp;Class</span></a></li>
 </ul>
 <ul class="navList">
 <li><a href="../../../../../index.html?org/apache/hadoop/hbase/testclassification/VerySlowRegionServerTests.html" target="_top">Frames</a></li>


[20/51] [partial] hbase-site git commit: Published site at .

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/c54c242b/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/HRegion.RowLockContext.html
----------------------------------------------------------------------
diff --git a/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/HRegion.RowLockContext.html b/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/HRegion.RowLockContext.html
index 3edfbef..9707b2c 100644
--- a/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/HRegion.RowLockContext.html
+++ b/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/HRegion.RowLockContext.html
@@ -2459,5936 +2459,5935 @@
 <span class="sourceLineNo">2451</span>      }<a name="line.2451"></a>
 <span class="sourceLineNo">2452</span><a name="line.2452"></a>
 <span class="sourceLineNo">2453</span>      for (HStore s : storesToFlush) {<a name="line.2453"></a>
-<span class="sourceLineNo">2454</span>        MemStoreSize flushableSize = s.getFlushableSize();<a name="line.2454"></a>
-<span class="sourceLineNo">2455</span>        totalSizeOfFlushableStores.incMemStoreSize(flushableSize);<a name="line.2455"></a>
-<span class="sourceLineNo">2456</span>        storeFlushCtxs.put(s.getColumnFamilyDescriptor().getName(),<a name="line.2456"></a>
-<span class="sourceLineNo">2457</span>          s.createFlushContext(flushOpSeqId, tracker));<a name="line.2457"></a>
-<span class="sourceLineNo">2458</span>        // for writing stores to WAL<a name="line.2458"></a>
-<span class="sourceLineNo">2459</span>        committedFiles.put(s.getColumnFamilyDescriptor().getName(), null);<a name="line.2459"></a>
-<span class="sourceLineNo">2460</span>        storeFlushableSize.put(s.getColumnFamilyDescriptor().getName(), flushableSize);<a name="line.2460"></a>
-<span class="sourceLineNo">2461</span>      }<a name="line.2461"></a>
-<span class="sourceLineNo">2462</span><a name="line.2462"></a>
-<span class="sourceLineNo">2463</span>      // write the snapshot start to WAL<a name="line.2463"></a>
-<span class="sourceLineNo">2464</span>      if (wal != null &amp;&amp; !writestate.readOnly) {<a name="line.2464"></a>
-<span class="sourceLineNo">2465</span>        FlushDescriptor desc = ProtobufUtil.toFlushDescriptor(FlushAction.START_FLUSH,<a name="line.2465"></a>
-<span class="sourceLineNo">2466</span>            getRegionInfo(), flushOpSeqId, committedFiles);<a name="line.2466"></a>
-<span class="sourceLineNo">2467</span>        // No sync. Sync is below where no updates lock and we do FlushAction.COMMIT_FLUSH<a name="line.2467"></a>
-<span class="sourceLineNo">2468</span>        WALUtil.writeFlushMarker(wal, this.getReplicationScope(), getRegionInfo(), desc, false,<a name="line.2468"></a>
-<span class="sourceLineNo">2469</span>            mvcc);<a name="line.2469"></a>
-<span class="sourceLineNo">2470</span>      }<a name="line.2470"></a>
-<span class="sourceLineNo">2471</span><a name="line.2471"></a>
-<span class="sourceLineNo">2472</span>      // Prepare flush (take a snapshot)<a name="line.2472"></a>
-<span class="sourceLineNo">2473</span>      for (StoreFlushContext flush : storeFlushCtxs.values()) {<a name="line.2473"></a>
-<span class="sourceLineNo">2474</span>        flush.prepare();<a name="line.2474"></a>
-<span class="sourceLineNo">2475</span>      }<a name="line.2475"></a>
-<span class="sourceLineNo">2476</span>    } catch (IOException ex) {<a name="line.2476"></a>
-<span class="sourceLineNo">2477</span>      doAbortFlushToWAL(wal, flushOpSeqId, committedFiles);<a name="line.2477"></a>
-<span class="sourceLineNo">2478</span>      throw ex;<a name="line.2478"></a>
-<span class="sourceLineNo">2479</span>    } finally {<a name="line.2479"></a>
-<span class="sourceLineNo">2480</span>      this.updatesLock.writeLock().unlock();<a name="line.2480"></a>
-<span class="sourceLineNo">2481</span>    }<a name="line.2481"></a>
-<span class="sourceLineNo">2482</span>    String s = "Finished memstore snapshotting " + this + ", syncing WAL and waiting on mvcc, " +<a name="line.2482"></a>
-<span class="sourceLineNo">2483</span>        "flushsize=" + totalSizeOfFlushableStores;<a name="line.2483"></a>
-<span class="sourceLineNo">2484</span>    status.setStatus(s);<a name="line.2484"></a>
-<span class="sourceLineNo">2485</span>    doSyncOfUnflushedWALChanges(wal, getRegionInfo());<a name="line.2485"></a>
-<span class="sourceLineNo">2486</span>    return new PrepareFlushResult(storeFlushCtxs, committedFiles, storeFlushableSize, startTime,<a name="line.2486"></a>
-<span class="sourceLineNo">2487</span>        flushOpSeqId, flushedSeqId, totalSizeOfFlushableStores);<a name="line.2487"></a>
-<span class="sourceLineNo">2488</span>  }<a name="line.2488"></a>
-<span class="sourceLineNo">2489</span><a name="line.2489"></a>
-<span class="sourceLineNo">2490</span>  /**<a name="line.2490"></a>
-<span class="sourceLineNo">2491</span>   * Utility method broken out of internalPrepareFlushCache so that method is smaller.<a name="line.2491"></a>
-<span class="sourceLineNo">2492</span>   */<a name="line.2492"></a>
-<span class="sourceLineNo">2493</span>  private void logFatLineOnFlush(Collection&lt;HStore&gt; storesToFlush, long sequenceId) {<a name="line.2493"></a>
-<span class="sourceLineNo">2494</span>    if (!LOG.isInfoEnabled()) {<a name="line.2494"></a>
-<span class="sourceLineNo">2495</span>      return;<a name="line.2495"></a>
-<span class="sourceLineNo">2496</span>    }<a name="line.2496"></a>
-<span class="sourceLineNo">2497</span>    // Log a fat line detailing what is being flushed.<a name="line.2497"></a>
-<span class="sourceLineNo">2498</span>    StringBuilder perCfExtras = null;<a name="line.2498"></a>
-<span class="sourceLineNo">2499</span>    if (!isAllFamilies(storesToFlush)) {<a name="line.2499"></a>
-<span class="sourceLineNo">2500</span>      perCfExtras = new StringBuilder();<a name="line.2500"></a>
-<span class="sourceLineNo">2501</span>      for (HStore store: storesToFlush) {<a name="line.2501"></a>
-<span class="sourceLineNo">2502</span>        perCfExtras.append("; ").append(store.getColumnFamilyName());<a name="line.2502"></a>
-<span class="sourceLineNo">2503</span>        perCfExtras.append("=")<a name="line.2503"></a>
-<span class="sourceLineNo">2504</span>            .append(StringUtils.byteDesc(store.getFlushableSize().getDataSize()));<a name="line.2504"></a>
-<span class="sourceLineNo">2505</span>      }<a name="line.2505"></a>
-<span class="sourceLineNo">2506</span>    }<a name="line.2506"></a>
-<span class="sourceLineNo">2507</span>    LOG.info("Flushing " + + storesToFlush.size() + "/" + stores.size() +<a name="line.2507"></a>
-<span class="sourceLineNo">2508</span>        " column families, memstore=" + StringUtils.byteDesc(this.memstoreDataSize.get()) +<a name="line.2508"></a>
-<span class="sourceLineNo">2509</span>        ((perCfExtras != null &amp;&amp; perCfExtras.length() &gt; 0)? perCfExtras.toString(): "") +<a name="line.2509"></a>
-<span class="sourceLineNo">2510</span>        ((wal != null) ? "" : "; WAL is null, using passed sequenceid=" + sequenceId));<a name="line.2510"></a>
-<span class="sourceLineNo">2511</span>  }<a name="line.2511"></a>
-<span class="sourceLineNo">2512</span><a name="line.2512"></a>
-<span class="sourceLineNo">2513</span>  private void doAbortFlushToWAL(final WAL wal, final long flushOpSeqId,<a name="line.2513"></a>
-<span class="sourceLineNo">2514</span>      final Map&lt;byte[], List&lt;Path&gt;&gt; committedFiles) {<a name="line.2514"></a>
-<span class="sourceLineNo">2515</span>    if (wal == null) return;<a name="line.2515"></a>
-<span class="sourceLineNo">2516</span>    try {<a name="line.2516"></a>
-<span class="sourceLineNo">2517</span>      FlushDescriptor desc = ProtobufUtil.toFlushDescriptor(FlushAction.ABORT_FLUSH,<a name="line.2517"></a>
-<span class="sourceLineNo">2518</span>          getRegionInfo(), flushOpSeqId, committedFiles);<a name="line.2518"></a>
-<span class="sourceLineNo">2519</span>      WALUtil.writeFlushMarker(wal, this.getReplicationScope(), getRegionInfo(), desc, false,<a name="line.2519"></a>
-<span class="sourceLineNo">2520</span>          mvcc);<a name="line.2520"></a>
-<span class="sourceLineNo">2521</span>    } catch (Throwable t) {<a name="line.2521"></a>
-<span class="sourceLineNo">2522</span>      LOG.warn("Received unexpected exception trying to write ABORT_FLUSH marker to WAL:" +<a name="line.2522"></a>
-<span class="sourceLineNo">2523</span>          StringUtils.stringifyException(t));<a name="line.2523"></a>
-<span class="sourceLineNo">2524</span>      // ignore this since we will be aborting the RS with DSE.<a name="line.2524"></a>
-<span class="sourceLineNo">2525</span>    }<a name="line.2525"></a>
-<span class="sourceLineNo">2526</span>    // we have called wal.startCacheFlush(), now we have to abort it<a name="line.2526"></a>
-<span class="sourceLineNo">2527</span>    wal.abortCacheFlush(this.getRegionInfo().getEncodedNameAsBytes());<a name="line.2527"></a>
-<span class="sourceLineNo">2528</span>  }<a name="line.2528"></a>
-<span class="sourceLineNo">2529</span><a name="line.2529"></a>
-<span class="sourceLineNo">2530</span>  /**<a name="line.2530"></a>
-<span class="sourceLineNo">2531</span>   * Sync unflushed WAL changes. See HBASE-8208 for details<a name="line.2531"></a>
-<span class="sourceLineNo">2532</span>   */<a name="line.2532"></a>
-<span class="sourceLineNo">2533</span>  private static void doSyncOfUnflushedWALChanges(final WAL wal, final RegionInfo hri)<a name="line.2533"></a>
-<span class="sourceLineNo">2534</span>  throws IOException {<a name="line.2534"></a>
-<span class="sourceLineNo">2535</span>    if (wal == null) {<a name="line.2535"></a>
-<span class="sourceLineNo">2536</span>      return;<a name="line.2536"></a>
-<span class="sourceLineNo">2537</span>    }<a name="line.2537"></a>
-<span class="sourceLineNo">2538</span>    try {<a name="line.2538"></a>
-<span class="sourceLineNo">2539</span>      wal.sync(); // ensure that flush marker is sync'ed<a name="line.2539"></a>
-<span class="sourceLineNo">2540</span>    } catch (IOException ioe) {<a name="line.2540"></a>
-<span class="sourceLineNo">2541</span>      wal.abortCacheFlush(hri.getEncodedNameAsBytes());<a name="line.2541"></a>
-<span class="sourceLineNo">2542</span>      throw ioe;<a name="line.2542"></a>
-<span class="sourceLineNo">2543</span>    }<a name="line.2543"></a>
-<span class="sourceLineNo">2544</span>  }<a name="line.2544"></a>
-<span class="sourceLineNo">2545</span><a name="line.2545"></a>
-<span class="sourceLineNo">2546</span>  /**<a name="line.2546"></a>
-<span class="sourceLineNo">2547</span>   * @return True if passed Set is all families in the region.<a name="line.2547"></a>
-<span class="sourceLineNo">2548</span>   */<a name="line.2548"></a>
-<span class="sourceLineNo">2549</span>  private boolean isAllFamilies(Collection&lt;HStore&gt; families) {<a name="line.2549"></a>
-<span class="sourceLineNo">2550</span>    return families == null || this.stores.size() == families.size();<a name="line.2550"></a>
-<span class="sourceLineNo">2551</span>  }<a name="line.2551"></a>
-<span class="sourceLineNo">2552</span><a name="line.2552"></a>
-<span class="sourceLineNo">2553</span>  /**<a name="line.2553"></a>
-<span class="sourceLineNo">2554</span>   * Writes a marker to WAL indicating a flush is requested but cannot be complete due to various<a name="line.2554"></a>
-<span class="sourceLineNo">2555</span>   * reasons. Ignores exceptions from WAL. Returns whether the write succeeded.<a name="line.2555"></a>
-<span class="sourceLineNo">2556</span>   * @param wal<a name="line.2556"></a>
-<span class="sourceLineNo">2557</span>   * @return whether WAL write was successful<a name="line.2557"></a>
-<span class="sourceLineNo">2558</span>   */<a name="line.2558"></a>
-<span class="sourceLineNo">2559</span>  private boolean writeFlushRequestMarkerToWAL(WAL wal, boolean writeFlushWalMarker) {<a name="line.2559"></a>
-<span class="sourceLineNo">2560</span>    if (writeFlushWalMarker &amp;&amp; wal != null &amp;&amp; !writestate.readOnly) {<a name="line.2560"></a>
-<span class="sourceLineNo">2561</span>      FlushDescriptor desc = ProtobufUtil.toFlushDescriptor(FlushAction.CANNOT_FLUSH,<a name="line.2561"></a>
-<span class="sourceLineNo">2562</span>        getRegionInfo(), -1, new TreeMap&lt;&gt;(Bytes.BYTES_COMPARATOR));<a name="line.2562"></a>
-<span class="sourceLineNo">2563</span>      try {<a name="line.2563"></a>
-<span class="sourceLineNo">2564</span>        WALUtil.writeFlushMarker(wal, this.getReplicationScope(), getRegionInfo(), desc, true,<a name="line.2564"></a>
-<span class="sourceLineNo">2565</span>            mvcc);<a name="line.2565"></a>
-<span class="sourceLineNo">2566</span>        return true;<a name="line.2566"></a>
-<span class="sourceLineNo">2567</span>      } catch (IOException e) {<a name="line.2567"></a>
-<span class="sourceLineNo">2568</span>        LOG.warn(getRegionInfo().getEncodedName() + " : "<a name="line.2568"></a>
-<span class="sourceLineNo">2569</span>            + "Received exception while trying to write the flush request to wal", e);<a name="line.2569"></a>
-<span class="sourceLineNo">2570</span>      }<a name="line.2570"></a>
-<span class="sourceLineNo">2571</span>    }<a name="line.2571"></a>
-<span class="sourceLineNo">2572</span>    return false;<a name="line.2572"></a>
-<span class="sourceLineNo">2573</span>  }<a name="line.2573"></a>
-<span class="sourceLineNo">2574</span><a name="line.2574"></a>
-<span class="sourceLineNo">2575</span>  @edu.umd.cs.findbugs.annotations.SuppressWarnings(value="NN_NAKED_NOTIFY",<a name="line.2575"></a>
-<span class="sourceLineNo">2576</span>      justification="Intentional; notify is about completed flush")<a name="line.2576"></a>
-<span class="sourceLineNo">2577</span>  protected FlushResultImpl internalFlushCacheAndCommit(WAL wal, MonitoredTask status,<a name="line.2577"></a>
-<span class="sourceLineNo">2578</span>      PrepareFlushResult prepareResult, Collection&lt;HStore&gt; storesToFlush) throws IOException {<a name="line.2578"></a>
-<span class="sourceLineNo">2579</span>    // prepare flush context is carried via PrepareFlushResult<a name="line.2579"></a>
-<span class="sourceLineNo">2580</span>    TreeMap&lt;byte[], StoreFlushContext&gt; storeFlushCtxs = prepareResult.storeFlushCtxs;<a name="line.2580"></a>
-<span class="sourceLineNo">2581</span>    TreeMap&lt;byte[], List&lt;Path&gt;&gt; committedFiles = prepareResult.committedFiles;<a name="line.2581"></a>
-<span class="sourceLineNo">2582</span>    long startTime = prepareResult.startTime;<a name="line.2582"></a>
-<span class="sourceLineNo">2583</span>    long flushOpSeqId = prepareResult.flushOpSeqId;<a name="line.2583"></a>
-<span class="sourceLineNo">2584</span>    long flushedSeqId = prepareResult.flushedSeqId;<a name="line.2584"></a>
-<span class="sourceLineNo">2585</span><a name="line.2585"></a>
-<span class="sourceLineNo">2586</span>    String s = "Flushing stores of " + this;<a name="line.2586"></a>
-<span class="sourceLineNo">2587</span>    status.setStatus(s);<a name="line.2587"></a>
-<span class="sourceLineNo">2588</span>    if (LOG.isTraceEnabled()) LOG.trace(s);<a name="line.2588"></a>
-<span class="sourceLineNo">2589</span><a name="line.2589"></a>
-<span class="sourceLineNo">2590</span>    // Any failure from here on out will be catastrophic requiring server<a name="line.2590"></a>
-<span class="sourceLineNo">2591</span>    // restart so wal content can be replayed and put back into the memstore.<a name="line.2591"></a>
-<span class="sourceLineNo">2592</span>    // Otherwise, the snapshot content while backed up in the wal, it will not<a name="line.2592"></a>
-<span class="sourceLineNo">2593</span>    // be part of the current running servers state.<a name="line.2593"></a>
-<span class="sourceLineNo">2594</span>    boolean compactionRequested = false;<a name="line.2594"></a>
-<span class="sourceLineNo">2595</span>    long flushedOutputFileSize = 0;<a name="line.2595"></a>
-<span class="sourceLineNo">2596</span>    try {<a name="line.2596"></a>
-<span class="sourceLineNo">2597</span>      // A.  Flush memstore to all the HStores.<a name="line.2597"></a>
-<span class="sourceLineNo">2598</span>      // Keep running vector of all store files that includes both old and the<a name="line.2598"></a>
-<span class="sourceLineNo">2599</span>      // just-made new flush store file. The new flushed file is still in the<a name="line.2599"></a>
-<span class="sourceLineNo">2600</span>      // tmp directory.<a name="line.2600"></a>
-<span class="sourceLineNo">2601</span><a name="line.2601"></a>
-<span class="sourceLineNo">2602</span>      for (StoreFlushContext flush : storeFlushCtxs.values()) {<a name="line.2602"></a>
-<span class="sourceLineNo">2603</span>        flush.flushCache(status);<a name="line.2603"></a>
-<span class="sourceLineNo">2604</span>      }<a name="line.2604"></a>
-<span class="sourceLineNo">2605</span><a name="line.2605"></a>
-<span class="sourceLineNo">2606</span>      // Switch snapshot (in memstore) -&gt; new hfile (thus causing<a name="line.2606"></a>
-<span class="sourceLineNo">2607</span>      // all the store scanners to reset/reseek).<a name="line.2607"></a>
-<span class="sourceLineNo">2608</span>      Iterator&lt;HStore&gt; it = storesToFlush.iterator();<a name="line.2608"></a>
-<span class="sourceLineNo">2609</span>      // stores.values() and storeFlushCtxs have same order<a name="line.2609"></a>
-<span class="sourceLineNo">2610</span>      for (StoreFlushContext flush : storeFlushCtxs.values()) {<a name="line.2610"></a>
-<span class="sourceLineNo">2611</span>        boolean needsCompaction = flush.commit(status);<a name="line.2611"></a>
-<span class="sourceLineNo">2612</span>        if (needsCompaction) {<a name="line.2612"></a>
-<span class="sourceLineNo">2613</span>          compactionRequested = true;<a name="line.2613"></a>
-<span class="sourceLineNo">2614</span>        }<a name="line.2614"></a>
-<span class="sourceLineNo">2615</span>        byte[] storeName = it.next().getColumnFamilyDescriptor().getName();<a name="line.2615"></a>
-<span class="sourceLineNo">2616</span>        List&lt;Path&gt; storeCommittedFiles = flush.getCommittedFiles();<a name="line.2616"></a>
-<span class="sourceLineNo">2617</span>        committedFiles.put(storeName, storeCommittedFiles);<a name="line.2617"></a>
-<span class="sourceLineNo">2618</span>        // Flush committed no files, indicating flush is empty or flush was canceled<a name="line.2618"></a>
-<span class="sourceLineNo">2619</span>        if (storeCommittedFiles == null || storeCommittedFiles.isEmpty()) {<a name="line.2619"></a>
-<span class="sourceLineNo">2620</span>          MemStoreSize storeFlushableSize = prepareResult.storeFlushableSize.get(storeName);<a name="line.2620"></a>
-<span class="sourceLineNo">2621</span>          prepareResult.totalFlushableSize.decMemStoreSize(storeFlushableSize);<a name="line.2621"></a>
-<span class="sourceLineNo">2622</span>        }<a name="line.2622"></a>
-<span class="sourceLineNo">2623</span>        flushedOutputFileSize += flush.getOutputFileSize();<a name="line.2623"></a>
-<span class="sourceLineNo">2624</span>      }<a name="line.2624"></a>
-<span class="sourceLineNo">2625</span>      storeFlushCtxs.clear();<a name="line.2625"></a>
-<span class="sourceLineNo">2626</span><a name="line.2626"></a>
-<span class="sourceLineNo">2627</span>      // Set down the memstore size by amount of flush.<a name="line.2627"></a>
-<span class="sourceLineNo">2628</span>      this.decrMemStoreSize(prepareResult.totalFlushableSize);<a name="line.2628"></a>
-<span class="sourceLineNo">2629</span><a name="line.2629"></a>
-<span class="sourceLineNo">2630</span>      if (wal != null) {<a name="line.2630"></a>
-<span class="sourceLineNo">2631</span>        // write flush marker to WAL. If fail, we should throw DroppedSnapshotException<a name="line.2631"></a>
-<span class="sourceLineNo">2632</span>        FlushDescriptor desc = ProtobufUtil.toFlushDescriptor(FlushAction.COMMIT_FLUSH,<a name="line.2632"></a>
-<span class="sourceLineNo">2633</span>          getRegionInfo(), flushOpSeqId, committedFiles);<a name="line.2633"></a>
-<span class="sourceLineNo">2634</span>        WALUtil.writeFlushMarker(wal, this.getReplicationScope(), getRegionInfo(), desc, true,<a name="line.2634"></a>
-<span class="sourceLineNo">2635</span>            mvcc);<a name="line.2635"></a>
-<span class="sourceLineNo">2636</span>      }<a name="line.2636"></a>
-<span class="sourceLineNo">2637</span>    } catch (Throwable t) {<a name="line.2637"></a>
-<span class="sourceLineNo">2638</span>      // An exception here means that the snapshot was not persisted.<a name="line.2638"></a>
-<span class="sourceLineNo">2639</span>      // The wal needs to be replayed so its content is restored to memstore.<a name="line.2639"></a>
-<span class="sourceLineNo">2640</span>      // Currently, only a server restart will do this.<a name="line.2640"></a>
-<span class="sourceLineNo">2641</span>      // We used to only catch IOEs but its possible that we'd get other<a name="line.2641"></a>
-<span class="sourceLineNo">2642</span>      // exceptions -- e.g. HBASE-659 was about an NPE -- so now we catch<a name="line.2642"></a>
-<span class="sourceLineNo">2643</span>      // all and sundry.<a name="line.2643"></a>
-<span class="sourceLineNo">2644</span>      if (wal != null) {<a name="line.2644"></a>
-<span class="sourceLineNo">2645</span>        try {<a name="line.2645"></a>
-<span class="sourceLineNo">2646</span>          FlushDescriptor desc = ProtobufUtil.toFlushDescriptor(FlushAction.ABORT_FLUSH,<a name="line.2646"></a>
-<span class="sourceLineNo">2647</span>            getRegionInfo(), flushOpSeqId, committedFiles);<a name="line.2647"></a>
-<span class="sourceLineNo">2648</span>          WALUtil.writeFlushMarker(wal, this.replicationScope, getRegionInfo(), desc, false, mvcc);<a name="line.2648"></a>
-<span class="sourceLineNo">2649</span>        } catch (Throwable ex) {<a name="line.2649"></a>
-<span class="sourceLineNo">2650</span>          LOG.warn(getRegionInfo().getEncodedName() + " : "<a name="line.2650"></a>
-<span class="sourceLineNo">2651</span>              + "failed writing ABORT_FLUSH marker to WAL", ex);<a name="line.2651"></a>
-<span class="sourceLineNo">2652</span>          // ignore this since we will be aborting the RS with DSE.<a name="line.2652"></a>
-<span class="sourceLineNo">2653</span>        }<a name="line.2653"></a>
-<span class="sourceLineNo">2654</span>        wal.abortCacheFlush(this.getRegionInfo().getEncodedNameAsBytes());<a name="line.2654"></a>
-<span class="sourceLineNo">2655</span>      }<a name="line.2655"></a>
-<span class="sourceLineNo">2656</span>      DroppedSnapshotException dse = new DroppedSnapshotException("region: " +<a name="line.2656"></a>
-<span class="sourceLineNo">2657</span>          Bytes.toStringBinary(getRegionInfo().getRegionName()));<a name="line.2657"></a>
-<span class="sourceLineNo">2658</span>      dse.initCause(t);<a name="line.2658"></a>
-<span class="sourceLineNo">2659</span>      status.abort("Flush failed: " + StringUtils.stringifyException(t));<a name="line.2659"></a>
-<span class="sourceLineNo">2660</span><a name="line.2660"></a>
-<span class="sourceLineNo">2661</span>      // Callers for flushcache() should catch DroppedSnapshotException and abort the region server.<a name="line.2661"></a>
-<span class="sourceLineNo">2662</span>      // However, since we may have the region read lock, we cannot call close(true) here since<a name="line.2662"></a>
-<span class="sourceLineNo">2663</span>      // we cannot promote to a write lock. Instead we are setting closing so that all other region<a name="line.2663"></a>
-<span class="sourceLineNo">2664</span>      // operations except for close will be rejected.<a name="line.2664"></a>
-<span class="sourceLineNo">2665</span>      this.closing.set(true);<a name="line.2665"></a>
-<span class="sourceLineNo">2666</span><a name="line.2666"></a>
-<span class="sourceLineNo">2667</span>      if (rsServices != null) {<a name="line.2667"></a>
-<span class="sourceLineNo">2668</span>        // This is a safeguard against the case where the caller fails to explicitly handle aborting<a name="line.2668"></a>
-<span class="sourceLineNo">2669</span>        rsServices.abort("Replay of WAL required. Forcing server shutdown", dse);<a name="line.2669"></a>
-<span class="sourceLineNo">2670</span>      }<a name="line.2670"></a>
-<span class="sourceLineNo">2671</span><a name="line.2671"></a>
-<span class="sourceLineNo">2672</span>      throw dse;<a name="line.2672"></a>
-<span class="sourceLineNo">2673</span>    }<a name="line.2673"></a>
-<span class="sourceLineNo">2674</span><a name="line.2674"></a>
-<span class="sourceLineNo">2675</span>    // If we get to here, the HStores have been written.<a name="line.2675"></a>
-<span class="sourceLineNo">2676</span>    if (wal != null) {<a name="line.2676"></a>
-<span class="sourceLineNo">2677</span>      wal.completeCacheFlush(this.getRegionInfo().getEncodedNameAsBytes());<a name="line.2677"></a>
-<span class="sourceLineNo">2678</span>    }<a name="line.2678"></a>
-<span class="sourceLineNo">2679</span><a name="line.2679"></a>
-<span class="sourceLineNo">2680</span>    // Record latest flush time<a name="line.2680"></a>
-<span class="sourceLineNo">2681</span>    for (HStore store: storesToFlush) {<a name="line.2681"></a>
-<span class="sourceLineNo">2682</span>      this.lastStoreFlushTimeMap.put(store, startTime);<a name="line.2682"></a>
-<span class="sourceLineNo">2683</span>    }<a name="line.2683"></a>
-<span class="sourceLineNo">2684</span><a name="line.2684"></a>
-<span class="sourceLineNo">2685</span>    this.maxFlushedSeqId = flushedSeqId;<a name="line.2685"></a>
-<span class="sourceLineNo">2686</span>    this.lastFlushOpSeqId = flushOpSeqId;<a name="line.2686"></a>
-<span class="sourceLineNo">2687</span><a name="line.2687"></a>
-<span class="sourceLineNo">2688</span>    // C. Finally notify anyone waiting on memstore to clear:<a name="line.2688"></a>
-<span class="sourceLineNo">2689</span>    // e.g. checkResources().<a name="line.2689"></a>
-<span class="sourceLineNo">2690</span>    synchronized (this) {<a name="line.2690"></a>
-<span class="sourceLineNo">2691</span>      notifyAll(); // FindBugs NN_NAKED_NOTIFY<a name="line.2691"></a>
-<span class="sourceLineNo">2692</span>    }<a name="line.2692"></a>
-<span class="sourceLineNo">2693</span><a name="line.2693"></a>
-<span class="sourceLineNo">2694</span>    long time = EnvironmentEdgeManager.currentTime() - startTime;<a name="line.2694"></a>
-<span class="sourceLineNo">2695</span>    long memstoresize = this.memstoreDataSize.get();<a name="line.2695"></a>
-<span class="sourceLineNo">2696</span>    String msg = "Finished memstore flush of ~"<a name="line.2696"></a>
-<span class="sourceLineNo">2697</span>        + StringUtils.byteDesc(prepareResult.totalFlushableSize.getDataSize()) + "/"<a name="line.2697"></a>
-<span class="sourceLineNo">2698</span>        + prepareResult.totalFlushableSize.getDataSize() + ", currentsize="<a name="line.2698"></a>
-<span class="sourceLineNo">2699</span>        + StringUtils.byteDesc(memstoresize) + "/" + memstoresize<a name="line.2699"></a>
-<span class="sourceLineNo">2700</span>        + " for region " + this + " in " + time + "ms, sequenceid="<a name="line.2700"></a>
-<span class="sourceLineNo">2701</span>        + flushOpSeqId +  ", compaction requested=" + compactionRequested<a name="line.2701"></a>
-<span class="sourceLineNo">2702</span>        + ((wal == null) ? "; wal=null" : "");<a name="line.2702"></a>
-<span class="sourceLineNo">2703</span>    LOG.info(msg);<a name="line.2703"></a>
-<span class="sourceLineNo">2704</span>    status.setStatus(msg);<a name="line.2704"></a>
-<span class="sourceLineNo">2705</span><a name="line.2705"></a>
-<span class="sourceLineNo">2706</span>    if (rsServices != null &amp;&amp; rsServices.getMetrics() != null) {<a name="line.2706"></a>
-<span class="sourceLineNo">2707</span>      rsServices.getMetrics().updateFlush(time - startTime,<a name="line.2707"></a>
-<span class="sourceLineNo">2708</span>          prepareResult.totalFlushableSize.getDataSize(), flushedOutputFileSize);<a name="line.2708"></a>
-<span class="sourceLineNo">2709</span>    }<a name="line.2709"></a>
-<span class="sourceLineNo">2710</span><a name="line.2710"></a>
-<span class="sourceLineNo">2711</span>    return new FlushResultImpl(compactionRequested ?<a name="line.2711"></a>
-<span class="sourceLineNo">2712</span>        FlushResult.Result.FLUSHED_COMPACTION_NEEDED :<a name="line.2712"></a>
-<span class="sourceLineNo">2713</span>          FlushResult.Result.FLUSHED_NO_COMPACTION_NEEDED, flushOpSeqId);<a name="line.2713"></a>
-<span class="sourceLineNo">2714</span>  }<a name="line.2714"></a>
-<span class="sourceLineNo">2715</span><a name="line.2715"></a>
-<span class="sourceLineNo">2716</span>  /**<a name="line.2716"></a>
-<span class="sourceLineNo">2717</span>   * Method to safely get the next sequence number.<a name="line.2717"></a>
-<span class="sourceLineNo">2718</span>   * @return Next sequence number unassociated with any actual edit.<a name="line.2718"></a>
-<span class="sourceLineNo">2719</span>   * @throws IOException<a name="line.2719"></a>
-<span class="sourceLineNo">2720</span>   */<a name="line.2720"></a>
-<span class="sourceLineNo">2721</span>  @VisibleForTesting<a name="line.2721"></a>
-<span class="sourceLineNo">2722</span>  protected long getNextSequenceId(final WAL wal) throws IOException {<a name="line.2722"></a>
-<span class="sourceLineNo">2723</span>    WriteEntry we = mvcc.begin();<a name="line.2723"></a>
-<span class="sourceLineNo">2724</span>    mvcc.completeAndWait(we);<a name="line.2724"></a>
-<span class="sourceLineNo">2725</span>    return we.getWriteNumber();<a name="line.2725"></a>
-<span class="sourceLineNo">2726</span>  }<a name="line.2726"></a>
-<span class="sourceLineNo">2727</span><a name="line.2727"></a>
-<span class="sourceLineNo">2728</span>  //////////////////////////////////////////////////////////////////////////////<a name="line.2728"></a>
-<span class="sourceLineNo">2729</span>  // get() methods for client use.<a name="line.2729"></a>
-<span class="sourceLineNo">2730</span>  //////////////////////////////////////////////////////////////////////////////<a name="line.2730"></a>
-<span class="sourceLineNo">2731</span><a name="line.2731"></a>
-<span class="sourceLineNo">2732</span>  @Override<a name="line.2732"></a>
-<span class="sourceLineNo">2733</span>  public RegionScannerImpl getScanner(Scan scan) throws IOException {<a name="line.2733"></a>
-<span class="sourceLineNo">2734</span>   return getScanner(scan, null);<a name="line.2734"></a>
-<span class="sourceLineNo">2735</span>  }<a name="line.2735"></a>
-<span class="sourceLineNo">2736</span><a name="line.2736"></a>
-<span class="sourceLineNo">2737</span>  @Override<a name="line.2737"></a>
-<span class="sourceLineNo">2738</span>  public RegionScannerImpl getScanner(Scan scan, List&lt;KeyValueScanner&gt; additionalScanners)<a name="line.2738"></a>
-<span class="sourceLineNo">2739</span>      throws IOException {<a name="line.2739"></a>
-<span class="sourceLineNo">2740</span>    return getScanner(scan, additionalScanners, HConstants.NO_NONCE, HConstants.NO_NONCE);<a name="line.2740"></a>
-<span class="sourceLineNo">2741</span>  }<a name="line.2741"></a>
-<span class="sourceLineNo">2742</span><a name="line.2742"></a>
-<span class="sourceLineNo">2743</span>  private RegionScannerImpl getScanner(Scan scan, List&lt;KeyValueScanner&gt; additionalScanners,<a name="line.2743"></a>
-<span class="sourceLineNo">2744</span>      long nonceGroup, long nonce) throws IOException {<a name="line.2744"></a>
-<span class="sourceLineNo">2745</span>    startRegionOperation(Operation.SCAN);<a name="line.2745"></a>
-<span class="sourceLineNo">2746</span>    try {<a name="line.2746"></a>
-<span class="sourceLineNo">2747</span>      // Verify families are all valid<a name="line.2747"></a>
-<span class="sourceLineNo">2748</span>      if (!scan.hasFamilies()) {<a name="line.2748"></a>
-<span class="sourceLineNo">2749</span>        // Adding all families to scanner<a name="line.2749"></a>
-<span class="sourceLineNo">2750</span>        for (byte[] family : this.htableDescriptor.getColumnFamilyNames()) {<a name="line.2750"></a>
-<span class="sourceLineNo">2751</span>          scan.addFamily(family);<a name="line.2751"></a>
-<span class="sourceLineNo">2752</span>        }<a name="line.2752"></a>
-<span class="sourceLineNo">2753</span>      } else {<a name="line.2753"></a>
-<span class="sourceLineNo">2754</span>        for (byte[] family : scan.getFamilyMap().keySet()) {<a name="line.2754"></a>
-<span class="sourceLineNo">2755</span>          checkFamily(family);<a name="line.2755"></a>
-<span class="sourceLineNo">2756</span>        }<a name="line.2756"></a>
-<span class="sourceLineNo">2757</span>      }<a name="line.2757"></a>
-<span class="sourceLineNo">2758</span>      return instantiateRegionScanner(scan, additionalScanners, nonceGroup, nonce);<a name="line.2758"></a>
-<span class="sourceLineNo">2759</span>    } finally {<a name="line.2759"></a>
-<span class="sourceLineNo">2760</span>      closeRegionOperation(Operation.SCAN);<a name="line.2760"></a>
-<span class="sourceLineNo">2761</span>    }<a name="line.2761"></a>
-<span class="sourceLineNo">2762</span>  }<a name="line.2762"></a>
-<span class="sourceLineNo">2763</span><a name="line.2763"></a>
-<span class="sourceLineNo">2764</span>  protected RegionScanner instantiateRegionScanner(Scan scan,<a name="line.2764"></a>
-<span class="sourceLineNo">2765</span>      List&lt;KeyValueScanner&gt; additionalScanners) throws IOException {<a name="line.2765"></a>
-<span class="sourceLineNo">2766</span>    return instantiateRegionScanner(scan, additionalScanners, HConstants.NO_NONCE,<a name="line.2766"></a>
-<span class="sourceLineNo">2767</span>      HConstants.NO_NONCE);<a name="line.2767"></a>
-<span class="sourceLineNo">2768</span>  }<a name="line.2768"></a>
-<span class="sourceLineNo">2769</span><a name="line.2769"></a>
-<span class="sourceLineNo">2770</span>  protected RegionScannerImpl instantiateRegionScanner(Scan scan,<a name="line.2770"></a>
-<span class="sourceLineNo">2771</span>      List&lt;KeyValueScanner&gt; additionalScanners, long nonceGroup, long nonce) throws IOException {<a name="line.2771"></a>
-<span class="sourceLineNo">2772</span>    if (scan.isReversed()) {<a name="line.2772"></a>
-<span class="sourceLineNo">2773</span>      if (scan.getFilter() != null) {<a name="line.2773"></a>
-<span class="sourceLineNo">2774</span>        scan.getFilter().setReversed(true);<a name="line.2774"></a>
-<span class="sourceLineNo">2775</span>      }<a name="line.2775"></a>
-<span class="sourceLineNo">2776</span>      return new ReversedRegionScannerImpl(scan, additionalScanners, this);<a name="line.2776"></a>
-<span class="sourceLineNo">2777</span>    }<a name="line.2777"></a>
-<span class="sourceLineNo">2778</span>    return new RegionScannerImpl(scan, additionalScanners, this, nonceGroup, nonce);<a name="line.2778"></a>
-<span class="sourceLineNo">2779</span>  }<a name="line.2779"></a>
-<span class="sourceLineNo">2780</span><a name="line.2780"></a>
-<span class="sourceLineNo">2781</span>  /**<a name="line.2781"></a>
-<span class="sourceLineNo">2782</span>   * Prepare a delete for a row mutation processor<a name="line.2782"></a>
-<span class="sourceLineNo">2783</span>   * @param delete The passed delete is modified by this method. WARNING!<a name="line.2783"></a>
-<span class="sourceLineNo">2784</span>   * @throws IOException<a name="line.2784"></a>
-<span class="sourceLineNo">2785</span>   */<a name="line.2785"></a>
-<span class="sourceLineNo">2786</span>  public void prepareDelete(Delete delete) throws IOException {<a name="line.2786"></a>
-<span class="sourceLineNo">2787</span>    // Check to see if this is a deleteRow insert<a name="line.2787"></a>
-<span class="sourceLineNo">2788</span>    if(delete.getFamilyCellMap().isEmpty()){<a name="line.2788"></a>
-<span class="sourceLineNo">2789</span>      for(byte [] family : this.htableDescriptor.getColumnFamilyNames()){<a name="line.2789"></a>
-<span class="sourceLineNo">2790</span>        // Don't eat the timestamp<a name="line.2790"></a>
-<span class="sourceLineNo">2791</span>        delete.addFamily(family, delete.getTimeStamp());<a name="line.2791"></a>
-<span class="sourceLineNo">2792</span>      }<a name="line.2792"></a>
-<span class="sourceLineNo">2793</span>    } else {<a name="line.2793"></a>
-<span class="sourceLineNo">2794</span>      for(byte [] family : delete.getFamilyCellMap().keySet()) {<a name="line.2794"></a>
-<span class="sourceLineNo">2795</span>        if(family == null) {<a name="line.2795"></a>
-<span class="sourceLineNo">2796</span>          throw new NoSuchColumnFamilyException("Empty family is invalid");<a name="line.2796"></a>
-<span class="sourceLineNo">2797</span>        }<a name="line.2797"></a>
-<span class="sourceLineNo">2798</span>        checkFamily(family);<a name="line.2798"></a>
-<span class="sourceLineNo">2799</span>      }<a name="line.2799"></a>
-<span class="sourceLineNo">2800</span>    }<a name="line.2800"></a>
-<span class="sourceLineNo">2801</span>  }<a name="line.2801"></a>
-<span class="sourceLineNo">2802</span><a name="line.2802"></a>
-<span class="sourceLineNo">2803</span>  @Override<a name="line.2803"></a>
-<span class="sourceLineNo">2804</span>  public void delete(Delete delete) throws IOException {<a name="line.2804"></a>
-<span class="sourceLineNo">2805</span>    checkReadOnly();<a name="line.2805"></a>
-<span class="sourceLineNo">2806</span>    checkResources();<a name="line.2806"></a>
-<span class="sourceLineNo">2807</span>    startRegionOperation(Operation.DELETE);<a name="line.2807"></a>
-<span class="sourceLineNo">2808</span>    try {<a name="line.2808"></a>
-<span class="sourceLineNo">2809</span>      // All edits for the given row (across all column families) must happen atomically.<a name="line.2809"></a>
-<span class="sourceLineNo">2810</span>      doBatchMutate(delete);<a name="line.2810"></a>
-<span class="sourceLineNo">2811</span>    } finally {<a name="line.2811"></a>
-<span class="sourceLineNo">2812</span>      closeRegionOperation(Operation.DELETE);<a name="line.2812"></a>
-<span class="sourceLineNo">2813</span>    }<a name="line.2813"></a>
-<span class="sourceLineNo">2814</span>  }<a name="line.2814"></a>
-<span class="sourceLineNo">2815</span><a name="line.2815"></a>
-<span class="sourceLineNo">2816</span>  /**<a name="line.2816"></a>
-<span class="sourceLineNo">2817</span>   * Row needed by below method.<a name="line.2817"></a>
-<span class="sourceLineNo">2818</span>   */<a name="line.2818"></a>
-<span class="sourceLineNo">2819</span>  private static final byte [] FOR_UNIT_TESTS_ONLY = Bytes.toBytes("ForUnitTestsOnly");<a name="line.2819"></a>
-<span class="sourceLineNo">2820</span><a name="line.2820"></a>
-<span class="sourceLineNo">2821</span>  /**<a name="line.2821"></a>
-<span class="sourceLineNo">2822</span>   * This is used only by unit tests. Not required to be a public API.<a name="line.2822"></a>
-<span class="sourceLineNo">2823</span>   * @param familyMap map of family to edits for the given family.<a name="line.2823"></a>
-<span class="sourceLineNo">2824</span>   * @throws IOException<a name="line.2824"></a>
-<span class="sourceLineNo">2825</span>   */<a name="line.2825"></a>
-<span class="sourceLineNo">2826</span>  void delete(NavigableMap&lt;byte[], List&lt;Cell&gt;&gt; familyMap,<a name="line.2826"></a>
-<span class="sourceLineNo">2827</span>      Durability durability) throws IOException {<a name="line.2827"></a>
-<span class="sourceLineNo">2828</span>    Delete delete = new Delete(FOR_UNIT_TESTS_ONLY);<a name="line.2828"></a>
-<span class="sourceLineNo">2829</span>    delete.setFamilyCellMap(familyMap);<a name="line.2829"></a>
-<span class="sourceLineNo">2830</span>    delete.setDurability(durability);<a name="line.2830"></a>
-<span class="sourceLineNo">2831</span>    doBatchMutate(delete);<a name="line.2831"></a>
-<span class="sourceLineNo">2832</span>  }<a name="line.2832"></a>
-<span class="sourceLineNo">2833</span><a name="line.2833"></a>
-<span class="sourceLineNo">2834</span>  /**<a name="line.2834"></a>
-<span class="sourceLineNo">2835</span>   * Set up correct timestamps in the KVs in Delete object.<a name="line.2835"></a>
-<span class="sourceLineNo">2836</span>   * &lt;p&gt;Caller should have the row and region locks.<a name="line.2836"></a>
-<span class="sourceLineNo">2837</span>   * @param mutation<a name="line.2837"></a>
-<span class="sourceLineNo">2838</span>   * @param familyMap<a name="line.2838"></a>
-<span class="sourceLineNo">2839</span>   * @param byteNow<a name="line.2839"></a>
-<span class="sourceLineNo">2840</span>   * @throws IOException<a name="line.2840"></a>
-<span class="sourceLineNo">2841</span>   */<a name="line.2841"></a>
-<span class="sourceLineNo">2842</span>  public void prepareDeleteTimestamps(Mutation mutation, Map&lt;byte[], List&lt;Cell&gt;&gt; familyMap,<a name="line.2842"></a>
-<span class="sourceLineNo">2843</span>      byte[] byteNow) throws IOException {<a name="line.2843"></a>
-<span class="sourceLineNo">2844</span>    for (Map.Entry&lt;byte[], List&lt;Cell&gt;&gt; e : familyMap.entrySet()) {<a name="line.2844"></a>
-<span class="sourceLineNo">2845</span><a name="line.2845"></a>
-<span class="sourceLineNo">2846</span>      byte[] family = e.getKey();<a name="line.2846"></a>
-<span class="sourceLineNo">2847</span>      List&lt;Cell&gt; cells = e.getValue();<a name="line.2847"></a>
-<span class="sourceLineNo">2848</span>      assert cells instanceof RandomAccess;<a name="line.2848"></a>
-<span class="sourceLineNo">2849</span><a name="line.2849"></a>
-<span class="sourceLineNo">2850</span>      Map&lt;byte[], Integer&gt; kvCount = new TreeMap&lt;&gt;(Bytes.BYTES_COMPARATOR);<a name="line.2850"></a>
-<span class="sourceLineNo">2851</span>      int listSize = cells.size();<a name="line.2851"></a>
-<span class="sourceLineNo">2852</span>      for (int i=0; i &lt; listSize; i++) {<a name="line.2852"></a>
-<span class="sourceLineNo">2853</span>        Cell cell = cells.get(i);<a name="line.2853"></a>
-<span class="sourceLineNo">2854</span>        //  Check if time is LATEST, change to time of most recent addition if so<a name="line.2854"></a>
-<span class="sourceLineNo">2855</span>        //  This is expensive.<a name="line.2855"></a>
-<span class="sourceLineNo">2856</span>        if (cell.getTimestamp() == HConstants.LATEST_TIMESTAMP<a name="line.2856"></a>
-<span class="sourceLineNo">2857</span>            &amp;&amp; PrivateCellUtil.isDeleteType(cell)) {<a name="line.2857"></a>
-<span class="sourceLineNo">2858</span>          byte[] qual = CellUtil.cloneQualifier(cell);<a name="line.2858"></a>
-<span class="sourceLineNo">2859</span><a name="line.2859"></a>
-<span class="sourceLineNo">2860</span>          Integer count = kvCount.get(qual);<a name="line.2860"></a>
-<span class="sourceLineNo">2861</span>          if (count == null) {<a name="line.2861"></a>
-<span class="sourceLineNo">2862</span>            kvCount.put(qual, 1);<a name="line.2862"></a>
-<span class="sourceLineNo">2863</span>          } else {<a name="line.2863"></a>
-<span class="sourceLineNo">2864</span>            kvCount.put(qual, count + 1);<a name="line.2864"></a>
-<span class="sourceLineNo">2865</span>          }<a name="line.2865"></a>
-<span class="sourceLineNo">2866</span>          count = kvCount.get(qual);<a name="line.2866"></a>
-<span class="sourceLineNo">2867</span><a name="line.2867"></a>
-<span class="sourceLineNo">2868</span>          Get get = new Get(CellUtil.cloneRow(cell));<a name="line.2868"></a>
-<span class="sourceLineNo">2869</span>          get.setMaxVersions(count);<a name="line.2869"></a>
-<span class="sourceLineNo">2870</span>          get.addColumn(family, qual);<a name="line.2870"></a>
-<span class="sourceLineNo">2871</span>          if (coprocessorHost != null) {<a name="line.2871"></a>
-<span class="sourceLineNo">2872</span>            if (!coprocessorHost.prePrepareTimeStampForDeleteVersion(mutation, cell,<a name="line.2872"></a>
-<span class="sourceLineNo">2873</span>                byteNow, get)) {<a name="line.2873"></a>
-<span class="sourceLineNo">2874</span>              updateDeleteLatestVersionTimeStamp(cell, get, count, byteNow);<a name="line.2874"></a>
-<span class="sourceLineNo">2875</span>            }<a name="line.2875"></a>
-<span class="sourceLineNo">2876</span>          } else {<a name="line.2876"></a>
-<span class="sourceLineNo">2877</span>            updateDeleteLatestVersionTimeStamp(cell, get, count, byteNow);<a name="line.2877"></a>
-<span class="sourceLineNo">2878</span>          }<a name="line.2878"></a>
-<span class="sourceLineNo">2879</span>        } else {<a name="line.2879"></a>
-<span class="sourceLineNo">2880</span>          PrivateCellUtil.updateLatestStamp(cell, byteNow, 0);<a name="line.2880"></a>
-<span class="sourceLineNo">2881</span>        }<a name="line.2881"></a>
-<span class="sourceLineNo">2882</span>      }<a name="line.2882"></a>
-<span class="sourceLineNo">2883</span>    }<a name="line.2883"></a>
-<span class="sourceLineNo">2884</span>  }<a name="line.2884"></a>
-<span class="sourceLineNo">2885</span><a name="line.2885"></a>
-<span class="sourceLineNo">2886</span>  void updateDeleteLatestVersionTimeStamp(Cell cell, Get get, int count, byte[] byteNow)<a name="line.2886"></a>
-<span class="sourceLineNo">2887</span>      throws IOException {<a name="line.2887"></a>
-<span class="sourceLineNo">2888</span>    List&lt;Cell&gt; result = get(get, false);<a name="line.2888"></a>
-<span class="sourceLineNo">2889</span><a name="line.2889"></a>
-<span class="sourceLineNo">2890</span>    if (result.size() &lt; count) {<a name="line.2890"></a>
-<span class="sourceLineNo">2891</span>      // Nothing to delete<a name="line.2891"></a>
-<span class="sourceLineNo">2892</span>      PrivateCellUtil.updateLatestStamp(cell, byteNow, 0);<a name="line.2892"></a>
-<span class="sourceLineNo">2893</span>      return;<a name="line.2893"></a>
-<span class="sourceLineNo">2894</span>    }<a name="line.2894"></a>
-<span class="sourceLineNo">2895</span>    if (result.size() &gt; count) {<a name="line.2895"></a>
-<span class="sourceLineNo">2896</span>      throw new RuntimeException("Unexpected size: " + result.size());<a name="line.2896"></a>
-<span class="sourceLineNo">2897</span>    }<a name="line.2897"></a>
-<span class="sourceLineNo">2898</span>    Cell getCell = result.get(count - 1);<a name="line.2898"></a>
-<span class="sourceLineNo">2899</span>    PrivateCellUtil.setTimestamp(cell, getCell.getTimestamp());<a name="line.2899"></a>
-<span class="sourceLineNo">2900</span>  }<a name="line.2900"></a>
-<span class="sourceLineNo">2901</span><a name="line.2901"></a>
-<span class="sourceLineNo">2902</span>  @Override<a name="line.2902"></a>
-<span class="sourceLineNo">2903</span>  public void put(Put put) throws IOException {<a name="line.2903"></a>
-<span class="sourceLineNo">2904</span>    checkReadOnly();<a name="line.2904"></a>
-<span class="sourceLineNo">2905</span><a name="line.2905"></a>
-<span class="sourceLineNo">2906</span>    // Do a rough check that we have resources to accept a write.  The check is<a name="line.2906"></a>
-<span class="sourceLineNo">2907</span>    // 'rough' in that between the resource check and the call to obtain a<a name="line.2907"></a>
-<span class="sourceLineNo">2908</span>    // read lock, resources may run out.  For now, the thought is that this<a name="line.2908"></a>
-<span class="sourceLineNo">2909</span>    // will be extremely rare; we'll deal with it when it happens.<a name="line.2909"></a>
-<span class="sourceLineNo">2910</span>    checkResources();<a name="line.2910"></a>
-<span class="sourceLineNo">2911</span>    startRegionOperation(Operation.PUT);<a name="line.2911"></a>
-<span class="sourceLineNo">2912</span>    try {<a name="line.2912"></a>
-<span class="sourceLineNo">2913</span>      // All edits for the given row (across all column families) must happen atomically.<a name="line.2913"></a>
-<span class="sourceLineNo">2914</span>      doBatchMutate(put);<a name="line.2914"></a>
-<span class="sourceLineNo">2915</span>    } finally {<a name="line.2915"></a>
-<span class="sourceLineNo">2916</span>      closeRegionOperation(Operation.PUT);<a name="line.2916"></a>
-<span class="sourceLineNo">2917</span>    }<a name="line.2917"></a>
-<span class="sourceLineNo">2918</span>  }<a name="line.2918"></a>
-<span class="sourceLineNo">2919</span><a name="line.2919"></a>
-<span class="sourceLineNo">2920</span>  /**<a name="line.2920"></a>
-<span class="sourceLineNo">2921</span>   * Class that tracks the progress of a batch operations, accumulating status codes and tracking<a name="line.2921"></a>
-<span class="sourceLineNo">2922</span>   * the index at which processing is proceeding. These batch operations may get split into<a name="line.2922"></a>
-<span class="sourceLineNo">2923</span>   * mini-batches for processing.<a name="line.2923"></a>
-<span class="sourceLineNo">2924</span>   */<a name="line.2924"></a>
-<span class="sourceLineNo">2925</span>  private abstract static class BatchOperation&lt;T&gt; {<a name="line.2925"></a>
-<span class="sourceLineNo">2926</span>    protected final T[] operations;<a name="line.2926"></a>
-<span class="sourceLineNo">2927</span>    protected final OperationStatus[] retCodeDetails;<a name="line.2927"></a>
-<span class="sourceLineNo">2928</span>    protected final WALEdit[] walEditsFromCoprocessors;<a name="line.2928"></a>
-<span class="sourceLineNo">2929</span>    // reference family cell maps directly so coprocessors can mutate them if desired<a name="line.2929"></a>
-<span class="sourceLineNo">2930</span>    protected final Map&lt;byte[], List&lt;Cell&gt;&gt;[] familyCellMaps;<a name="line.2930"></a>
-<span class="sourceLineNo">2931</span><a name="line.2931"></a>
-<span class="sourceLineNo">2932</span>    protected final HRegion region;<a name="line.2932"></a>
-<span class="sourceLineNo">2933</span>    protected int nextIndexToProcess = 0;<a name="line.2933"></a>
-<span class="sourceLineNo">2934</span>    protected final ObservedExceptionsInBatch observedExceptions;<a name="line.2934"></a>
-<span class="sourceLineNo">2935</span>    //Durability of the batch (highest durability of all operations)<a name="line.2935"></a>
-<span class="sourceLineNo">2936</span>    protected Durability durability;<a name="line.2936"></a>
-<span class="sourceLineNo">2937</span>    protected boolean atomic = false;<a name="line.2937"></a>
-<span class="sourceLineNo">2938</span><a name="line.2938"></a>
-<span class="sourceLineNo">2939</span>    public BatchOperation(final HRegion region, T[] operations) {<a name="line.2939"></a>
-<span class="sourceLineNo">2940</span>      this.operations = operations;<a name="line.2940"></a>
-<span class="sourceLineNo">2941</span>      this.retCodeDetails = new OperationStatus[operations.length];<a name="line.2941"></a>
-<span class="sourceLineNo">2942</span>      Arrays.fill(this.retCodeDetails, OperationStatus.NOT_RUN);<a name="line.2942"></a>
-<span class="sourceLineNo">2943</span>      this.walEditsFromCoprocessors = new WALEdit[operations.length];<a name="line.2943"></a>
-<span class="sourceLineNo">2944</span>      familyCellMaps = new Map[operations.length];<a name="line.2944"></a>
-<span class="sourceLineNo">2945</span><a name="line.2945"></a>
-<span class="sourceLineNo">2946</span>      this.region = region;<a name="line.2946"></a>
-<span class="sourceLineNo">2947</span>      observedExceptions = new ObservedExceptionsInBatch();<a name="line.2947"></a>
-<span class="sourceLineNo">2948</span>      durability = Durability.USE_DEFAULT;<a name="line.2948"></a>
-<span class="sourceLineNo">2949</span>    }<a name="line.2949"></a>
-<span class="sourceLineNo">2950</span><a name="line.2950"></a>
-<span class="sourceLineNo">2951</span>    /**<a name="line.2951"></a>
-<span class="sourceLineNo">2952</span>     * Visitor interface for batch operations<a name="line.2952"></a>
-<span class="sourceLineNo">2953</span>     */<a name="line.2953"></a>
-<span class="sourceLineNo">2954</span>    @FunctionalInterface<a name="line.2954"></a>
-<span class="sourceLineNo">2955</span>    public interface Visitor {<a name="line.2955"></a>
-<span class="sourceLineNo">2956</span>      /**<a name="line.2956"></a>
-<span class="sourceLineNo">2957</span>       * @param index operation index<a name="line.2957"></a>
-<span class="sourceLineNo">2958</span>       * @return If true continue visiting remaining entries, break otherwise<a name="line.2958"></a>
-<span class="sourceLineNo">2959</span>       */<a name="line.2959"></a>
-<span class="sourceLineNo">2960</span>      boolean visit(int index) throws IOException;<a name="line.2960"></a>
-<span class="sourceLineNo">2961</span>    }<a name="line.2961"></a>
-<span class="sourceLineNo">2962</span><a name="line.2962"></a>
-<span class="sourceLineNo">2963</span>    /**<a name="line.2963"></a>
-<span class="sourceLineNo">2964</span>     * Helper method for visiting pending/ all batch operations<a name="line.2964"></a>
-<span class="sourceLineNo">2965</span>     */<a name="line.2965"></a>
-<span class="sourceLineNo">2966</span>    public void visitBatchOperations(boolean pendingOnly, int lastIndexExclusive, Visitor visitor)<a name="line.2966"></a>
-<span class="sourceLineNo">2967</span>        throws IOException {<a name="line.2967"></a>
-<span class="sourceLineNo">2968</span>      assert lastIndexExclusive &lt;= this.size();<a name="line.2968"></a>
-<span class="sourceLineNo">2969</span>      for (int i = nextIndexToProcess; i &lt; lastIndexExclusive; i++) {<a name="line.2969"></a>
-<span class="sourceLineNo">2970</span>        if (!pendingOnly || isOperationPending(i)) {<a name="line.2970"></a>
-<span class="sourceLineNo">2971</span>          if (!visitor.visit(i)) {<a name="line.2971"></a>
-<span class="sourceLineNo">2972</span>            break;<a name="line.2972"></a>
-<span class="sourceLineNo">2973</span>          }<a name="line.2973"></a>
-<span class="sourceLineNo">2974</span>        }<a name="line.2974"></a>
-<span class="sourceLineNo">2975</span>      }<a name="line.2975"></a>
-<span class="sourceLineNo">2976</span>    }<a name="line.2976"></a>
-<span class="sourceLineNo">2977</span><a name="line.2977"></a>
-<span class="sourceLineNo">2978</span>    public abstract Mutation getMutation(int index);<a name="line.2978"></a>
-<span class="sourceLineNo">2979</span>    public abstract long getNonceGroup(int index);<a name="line.2979"></a>
-<span class="sourceLineNo">2980</span>    public abstract long getNonce(int index);<a name="line.2980"></a>
-<span class="sourceLineNo">2981</span>    /** This method is potentially expensive and useful mostly for non-replay CP path. */<a name="line.2981"></a>
-<span class="sourceLineNo">2982</span>    public abstract Mutation[] getMutationsForCoprocs();<a name="line.2982"></a>
-<span class="sourceLineNo">2983</span>    public abstract boolean isInReplay();<a name="line.2983"></a>
-<span class="sourceLineNo">2984</span>    public abstract long getOrigLogSeqNum();<a name="line.2984"></a>
-<span class="sourceLineNo">2985</span>    public abstract void startRegionOperation() throws IOException;<a name="line.2985"></a>
-<span class="sourceLineNo">2986</span>    public abstract void closeRegionOperation() throws IOException;<a name="line.2986"></a>
-<span class="sourceLineNo">2987</span><a name="line.2987"></a>
-<span class="sourceLineNo">2988</span>    /**<a name="line.2988"></a>
-<span class="sourceLineNo">2989</span>     * Validates each mutation and prepares a batch for write. If necessary (non-replay case), runs<a name="line.2989"></a>
-<span class="sourceLineNo">2990</span>     * CP prePut()/ preDelete() hooks for all mutations in a batch. This is intended to operate on<a name="line.2990"></a>
-<span class="sourceLineNo">2991</span>     * entire batch and will be called from outside of class to check and prepare batch. This can<a name="line.2991"></a>
-<span class="sourceLineNo">2992</span>     * be implemented by calling helper method {@link #checkAndPrepareMutation(int, long)} in a<a name="line.2992"></a>
-<span class="sourceLineNo">2993</span>     * 'for' loop over mutations.<a name="line.2993"></a>
-<span class="sourceLineNo">2994</span>     */<a name="line.2994"></a>
-<span class="sourceLineNo">2995</span>    public abstract void checkAndPrepare() throws IOException;<a name="line.2995"></a>
-<span class="sourceLineNo">2996</span><a name="line.2996"></a>
-<span class="sourceLineNo">2997</span>    /**<a name="line.2997"></a>
-<span class="sourceLineNo">2998</span>     * Implement any Put request specific check and prepare logic here. Please refer to<a name="line.2998"></a>
-<span class="sourceLineNo">2999</span>     * {@link #checkAndPrepareMutation(Mutation, long)} for how its used.<a name="line.2999"></a>
-<span class="sourceLineNo">3000</span>     */<a name="line.3000"></a>
-<span class="sourceLineNo">3001</span>    protected abstract void checkAndPreparePut(final Put p) throws IOException;<a name="line.3001"></a>
-<span class="sourceLineNo">3002</span><a name="line.3002"></a>
-<span class="sourceLineNo">3003</span>    /**<a name="line.3003"></a>
-<span class="sourceLineNo">3004</span>     *  If necessary, calls preBatchMutate() CP hook for a mini-batch and updates metrics, cell<a name="line.3004"></a>
-<span class="sourceLineNo">3005</span>     *  count, tags and timestamp for all cells of all operations in a mini-batch.<a name="line.3005"></a>
-<span class="sourceLineNo">3006</span>     */<a name="line.3006"></a>
-<span class="sourceLineNo">3007</span>    public abstract void prepareMiniBatchOperations(MiniBatchOperationInProgress&lt;Mutation&gt;<a name="line.3007"></a>
-<span class="sourceLineNo">3008</span>        miniBatchOp, long timestamp, final List&lt;RowLock&gt; acquiredRowLocks) throws IOException;<a name="line.3008"></a>
-<span class="sourceLineNo">3009</span><a name="line.3009"></a>
-<span class="sourceLineNo">3010</span>    /**<a name="line.3010"></a>
-<span class="sourceLineNo">3011</span>     * Write mini-batch operations to MemStore<a name="line.3011"></a>
-<span class="sourceLineNo">3012</span>     */<a name="line.3012"></a>
-<span class="sourceLineNo">3013</span>    public abstract WriteEntry writeMiniBatchOperationsToMemStore(<a name="line.3013"></a>
-<span class="sourceLineNo">3014</span>        final MiniBatchOperationInProgress&lt;Mutation&gt; miniBatchOp, final WriteEntry writeEntry)<a name="line.3014"></a>
-<span class="sourceLineNo">3015</span>        throws IOException;<a name="line.3015"></a>
-<span class="sourceLineNo">3016</span><a name="line.3016"></a>
-<span class="sourceLineNo">3017</span>    protected void writeMiniBatchOperationsToMemStore(<a name="line.3017"></a>
-<span class="sourceLineNo">3018</span>        final MiniBatchOperationInProgress&lt;Mutation&gt; miniBatchOp, final long writeNumber)<a name="line.3018"></a>
-<span class="sourceLineNo">3019</span>        throws IOException {<a name="line.3019"></a>
-<span class="sourceLineNo">3020</span>      MemStoreSizing memStoreAccounting = new MemStoreSizing();<a name="line.3020"></a>
-<span class="sourceLineNo">3021</span>      visitBatchOperations(true, miniBatchOp.getLastIndexExclusive(), (int index) -&gt; {<a name="line.3021"></a>
-<span class="sourceLineNo">3022</span>        // We need to update the sequence id for following reasons.<a name="line.3022"></a>
-<span class="sourceLineNo">3023</span>        // 1) If the op is in replay mode, FSWALEntry#stampRegionSequenceId won't stamp sequence id.<a name="line.3023"></a>
-<span class="sourceLineNo">3024</span>        // 2) If no WAL, FSWALEntry won't be used<a name="line.3024"></a>
-<span class="sourceLineNo">3025</span>        // we use durability of the original mutation for the mutation passed by CP.<a name="line.3025"></a>
-<span class="sourceLineNo">3026</span>        if (isInReplay() || getMutation(index).getDurability() == Durability.SKIP_WAL) {<a name="line.3026"></a>
-<span class="sourceLineNo">3027</span>          region.updateSequenceId(familyCellMaps[index].values(), writeNumber);<a name="line.3027"></a>
-<span class="sourceLineNo">3028</span>        }<a name="line.3028"></a>
-<span class="sourceLineNo">3029</span>        applyFamilyMapToMemStore(familyCellMaps[index], memStoreAccounting);<a name="line.3029"></a>
-<span class="sourceLineNo">3030</span>        return true;<a name="line.3030"></a>
-<span class="sourceLineNo">3031</span>      });<a name="line.3031"></a>
-<span class="sourceLineNo">3032</span>      // update memStore size<a name="line.3032"></a>
-<span class="sourceLineNo">3033</span>      region.addAndGetMemStoreSize(memStoreAccounting);<a name="line.3033"></a>
-<span class="sourceLineNo">3034</span>    }<a name="line.3034"></a>
-<span class="sourceLineNo">3035</span><a name="line.3035"></a>
-<span class="sourceLineNo">3036</span>    public boolean isDone() {<a name="line.3036"></a>
-<span class="sourceLineNo">3037</span>      return nextIndexToProcess == operations.length;<a name="line.3037"></a>
-<span class="sourceLineNo">3038</span>    }<a name="line.3038"></a>
-<span class="sourceLineNo">3039</span><a name="line.3039"></a>
-<span class="sourceLineNo">3040</span>    public int size() {<a name="line.3040"></a>
-<span class="sourceLineNo">3041</span>      return operations.length;<a name="line.3041"></a>
-<span class="sourceLineNo">3042</span>    }<a name="line.3042"></a>
-<span class="sourceLineNo">3043</span><a name="line.3043"></a>
-<span class="sourceLineNo">3044</span>    public boolean isOperationPending(int index) {<a name="line.3044"></a>
-<span class="sourceLineNo">3045</span>      return retCodeDetails[index].getOperationStatusCode() == OperationStatusCode.NOT_RUN;<a name="line.3045"></a>
-<span class="sourceLineNo">3046</span>    }<a name="line.3046"></a>
-<span class="sourceLineNo">3047</span><a name="line.3047"></a>
-<span class="sourceLineNo">3048</span>    public List&lt;UUID&gt; getClusterIds() {<a name="line.3048"></a>
-<span class="sourceLineNo">3049</span>      assert size() != 0;<a name="line.3049"></a>
-<span class="sourceLineNo">3050</span>      return getMutation(0).getClusterIds();<a name="line.3050"></a>
-<span class="sourceLineNo">3051</span>    }<a name="line.3051"></a>
-<span class="sourceLineNo">3052</span><a name="line.3052"></a>
-<span class="sourceLineNo">3053</span>    boolean isAtomic() {<a name="line.3053"></a>
-<span class="sourceLineNo">3054</span>      return atomic;<a name="line.3054"></a>
-<span class="sourceLineNo">3055</span>    }<a name="line.3055"></a>
-<span class="sourceLineNo">3056</span><a name="line.3056"></a>
-<span class="sourceLineNo">3057</span>    /**<a name="line.3057"></a>
-<span class="sourceLineNo">3058</span>     * Helper method that checks and prepares only one mutation. This can be used to implement<a name="line.3058"></a>
-<span class="sourceLineNo">3059</span>     * {@link #checkAndPrepare()} for entire Batch.<a name="line.3059"></a>
-<span class="sourceLineNo">3060</span>     * NOTE: As CP prePut()/ preDelete() hooks may modify mutations, this method should be called<a name="line.3060"></a>
-<span class="sourceLineNo">3061</span>     * after prePut()/ preDelete() CP hooks are run for the mutation<a name="line.3061"></a>
-<span class="sourceLineNo">3062</span>     */<a name="line.3062"></a>
-<span class="sourceLineNo">3063</span>    protected void checkAndPrepareMutation(Mutation mutation, final long timestamp)<a name="line.3063"></a>
-<span class="sourceLineNo">3064</span>        throws IOException {<a name="line.3064"></a>
-<span class="sourceLineNo">3065</span>      region.checkRow(mutation.getRow(), "batchMutate");<a name="line.3065"></a>
-<span class="sourceLineNo">3066</span>      if (mutation instanceof Put) {<a name="line.3066"></a>
-<span class="sourceLineNo">3067</span>        // Check the families in the put. If bad, skip this one.<a name="line.3067"></a>
-<span class="sourceLineNo">3068</span>        checkAndPreparePut((Put) mutation);<a name="line.3068"></a>
-<span class="sourceLineNo">3069</span>        region.checkTimestamps(mutation.getFamilyCellMap(), timestamp);<a name="line.3069"></a>
-<span class="sourceLineNo">3070</span>      } else {<a name="line.3070"></a>
-<span class="sourceLineNo">3071</span>        region.prepareDelete((Delete) mutation);<a name="line.3071"></a>
-<span class="sourceLineNo">3072</span>      }<a name="line.3072"></a>
-<span class="sourceLineNo">3073</span>    }<a name="line.3073"></a>
-<span class="sourceLineNo">3074</span><a name="line.3074"></a>
-<span class="sourceLineNo">3075</span>    protected void checkAndPrepareMutation(int index, long timestamp) throws IOException {<a name="line.3075"></a>
-<span class="sourceLineNo">3076</span>      Mutation mutation = getMutation(index);<a name="line.3076"></a>
-<span class="sourceLineNo">3077</span>      try {<a name="line.3077"></a>
-<span class="sourceLineNo">3078</span>        this.checkAndPrepareMutation(mutation, timestamp);<a name="line.3078"></a>
-<span class="sourceLineNo">3079</span><a name="line.3079"></a>
-<span class="sourceLineNo">3080</span>        // store the family map reference to allow for mutations<a name="line.3080"></a>
-<span class="sourceLineNo">3081</span>        familyCellMaps[index] = mutation.getFamilyCellMap();<a name="line.3081"></a>
-<span class="sourceLineNo">3082</span>        // store durability for the batch (highest durability of all operations in the batch)<a name="line.3082"></a>
-<span class="sourceLineNo">3083</span>        Durability tmpDur = region.getEffectiveDurability(mutation.getDurability());<a name="line.3083"></a>
-<span class="sourceLineNo">3084</span>        if (tmpDur.ordinal() &gt; durability.ordinal()) {<a name="line.3084"></a>
-<span class="sourceLineNo">3085</span>          durability = tmpDur;<a name="line.3085"></a>
-<span class="sourceLineNo">3086</span>        }<a name="line.3086"></a>
-<span class="sourceLineNo">3087</span>      } catch (NoSuchColumnFamilyException nscfe) {<a name="line.3087"></a>
-<span class="sourceLineNo">3088</span>        final String msg = "No such column family in batch mutation. ";<a name="line.3088"></a>
-<span class="sourceLineNo">3089</span>        if (observedExceptions.hasSeenNoSuchFamily()) {<a name="line.3089"></a>
-<span class="sourceLineNo">3090</span>          LOG.warn(msg + nscfe.getMessage());<a name="line.3090"></a>
-<span class="sourceLineNo">3091</span>        } else {<a name="line.3091"></a>
-<span class="sourceLineNo">3092</span>          LOG.warn(msg, nscfe);<a name="line.3092"></a>
-<span class="sourceLineNo">3093</span>          observedExceptions.sawNoSuchFamily();<a name="line.3093"></a>
-<span class="sourceLineNo">3094</span>        }<a name="line.3094"></a>
-<span class="sourceLineNo">3095</span>        retCodeDetails[index] = new OperationStatus(<a name="line.3095"></a>
-<span class="sourceLineNo">3096</span>            OperationStatusCode.BAD_FAMILY, nscfe.getMessage());<a name="line.3096"></a>
-<span class="sourceLineNo">3097</span>        if (isAtomic()) { // fail, atomic means all or none<a name="line.3097"></a>
-<span class="sourceLineNo">3098</span>          throw nscfe;<a name="line.3098"></a>
-<span class="sourceLineNo">3099</span>        }<a name="line.3099"></a>
-<span class="sourceLineNo">3100</span>      } catch (FailedSanityCheckException fsce) {<a name="line.3100"></a>
-<span class="sourceLineNo">3101</span>        final String msg = "Batch Mutation did not pass sanity check. ";<a name="line.3101"></a>
-<span class="sourceLineNo">3102</span>        if (observedExceptions.hasSeenFailedSanityCheck()) {<a name="line.3102"></a>
-<span class="sourceLineNo">3103</span>          LOG.warn(msg + fsce.getMessage());<a name="line.3103"></a>
-<span class="sourceLineNo">3104</span>        } else {<a name="line.3104"></a>
-<span class="sourceLineNo">3105</span>          LOG.warn(msg, fsce);<a name="line.3105"></a>
-<span class="sourceLineNo">3106</span>          observedExceptions.sawFailedSanityCheck();<a name="line.3106"></a>
-<span class="sourceLineNo">3107</span>        }<a name="line.3107"></a>
-<span class="sourceLineNo">3108</span>        retCodeDetails[index] = new OperationStatus(<a name="line.3108"></a>
-<span class="sourceLineNo">3109</span>            OperationStatusCode.SANITY_CHECK_FAILURE, fsce.getMessage());<a name="line.3109"></a>
-<span class="sourceLineNo">3110</span>        if (isAtomic()) {<a name="line.3110"></a>
-<span class="sourceLineNo">3111</span>          throw fsce;<a name="line.3111"></a>
-<span class="sourceLineNo">3112</span>        }<a name="line.3112"></a>
-<span class="sourceLineNo">3113</span>      } catch (WrongRegionException we) {<a name="line.3113"></a>
-<span class="sourceLineNo">3114</span>        final String msg = "Batch mutation had a row that does not belong to this region. ";<a name="line.3114"></a>
-<span class="sourceLineNo">3115</span>        if (observedExceptions.hasSeenWrongRegion()) {<a name="line.3115"></a>
-<span class="sourceLineNo">3116</span>          LOG.warn(msg + we.getMessage());<a name="line.3116"></a>
-<span class="sourceLineNo">3117</span>        } else {<a name="line.3117"></a>
-<span class="sourceLineNo">3118</span>          LOG.warn(msg, we);<a name="line.3118"></a>
-<span class="sourceLineNo">3119</span>          observedExceptions.sawWrongRegion();<a name="line.3119"></a>
-<span class="sourceLineNo">3120</span>        }<a name="line.3120"></a>
-<span class="sourceLineNo">3121</span>        retCodeDetails[index] = new OperationStatus(<a name="line.3121"></a>
-<span class="sourceLineNo">3122</span>            OperationStatusCode.SANITY_CHECK_FAILURE, we.getMessage());<a name="line.3122"></a>
-<span class="sourceLineNo">3123</span>        if (isAtomic()) {<a name="line.3123"></a>
-<span class="sourceLineNo">3124</span>          throw we;<a name="line.3124"></a>
-<span class="sourceLineNo">3125</span>        }<a name="line.3125"></a>
-<span class="sourceLineNo">3126</span>      }<a name="line.3126"></a>
-<span class="sourceLineNo">3127</span>    }<a name="line.3127"></a>
-<span class="sourceLineNo">3128</span><a name="line.3128"></a>
-<span class="sourceLineNo">3129</span>    /**<a name="line.3129"></a>
-<span class="sourceLineNo">3130</span>     * Creates Mini-batch of all operations [nextIndexToProcess, lastIndexExclusive) for which<a name="line.3130"></a>
-<span class="sourceLineNo">3131</span>     * a row lock can be acquired. All mutations with locked rows are considered to be<a name="line.3131"></a>
-<span class="sourceLineNo">3132</span>     * In-progress operations and hence the name {@link MiniBatchOperationInProgress}. Mini batch<a name="line.3132"></a>
-<span class="sourceLineNo">3133</span>     * is window over {@link BatchOperation} and contains contiguous pending operations.<a name="line.3133"></a>
-<span class="sourceLineNo">3134</span>     *<a name="line.3134"></a>
-<span class="sourceLineNo">3135</span>     * @param acquiredRowLocks keeps track of rowLocks acquired.<a name="line.3135"></a>
-<span class="sourceLineNo">3136</span>     */<a name="line.3136"></a>
-<span class="sourceLineNo">3137</span>    public MiniBatchOperationInProgress&lt;Mutation&gt; lockRowsAndBuildMiniBatch(<a name="line.3137"></a>
-<span class="sourceLineNo">3138</span>        List&lt;RowLock&gt; acquiredRowLocks) throws IOException {<a name="line.3138"></a>
-<span class="sourceLineNo">3139</span>      int readyToWriteCount = 0;<a name="line.3139"></a>
-<span class="sourceLineNo">3140</span>      int lastIndexExclusive = 0;<a name="line.3140"></a>
-<span class="sourceLineNo">3141</span>      for (; lastIndexExclusive &lt; size(); lastIndexExclusive++) {<a name="line.3141"></a>
-<span class="sourceLineNo">3142</span>        if (!isOperationPending(lastIndexExclusive)) {<a name="line.3142"></a>
-<span class="sourceLineNo">3143</span>          continue;<a name="line.3143"></a>
-<span class="sourceLineNo">3144</span>        }<a name="line.3144"></a>
-<span class="sourceLineNo">3145</span>        Mutation mutation = getMutation(lastIndexExclusive);<a name="line.3145"></a>
-<span class="sourceLineNo">3146</span>        // If we haven't got any rows in our batch, we should block to get the next one.<a name="line.3146"></a>
-<span class="sourceLineNo">3147</span>        RowLock rowLock = null;<a name="line.3147"></a>
-<span class="sourceLineNo">3148</span>        try {<a name="line.3148"></a>
-<span class="sourceLineNo">3149</span>          // if atomic then get exclusive lock, else shared lock<a name="line.3149"></a>
-<span class="sourceLineNo">3150</span>          rowLock = region.getRowLockInternal(mutation.getRow(), !isAtomic());<a name="line.3150"></a>
-<span class="sourceLineNo">3151</span>        } catch (TimeoutIOException e) {<a name="line.3151"></a>
-<span class="sourceLineNo">3152</span>          // We will retry when other exceptions, but we should stop if we timeout .<a name="line.3152"></a>
-<span class="sourceLineNo">3153</span>          throw e;<a name="line.3153"></a>
-<span class="sourceLineNo">3154</span>        } catch (IOException ioe) {<a name="line.3154"></a>
-<span class="sourceLineNo">3155</span>          LOG.warn("Failed getting lock, row=" + Bytes.toStringBinary(mutation.getRow()), ioe);<a name="line.3155"></a>
-<span class="sourceLineNo">3156</span>          if (isAtomic()) { // fail, atomic means all or none<a name="line.3156"></a>
-<span class="sourceLineNo">3157</span>            throw ioe;<a name="line.3157"></a>
-<span class="sourceLineNo">3158</span>          }<a name="line.3158"></a>
-<span class="sourceLineNo">3159</span>        }<a name="line.3159"></a>
-<span class="sourceLineNo">3160</span>        if (rowLock == null) {<a name="line.3160"></a>
-<span class="sourceLineNo">3161</span>          // We failed to grab another lock<a name="line.3161"></a>
-<span class="sourceLineNo">3162</span>          if (isAtomic()) {<a name="line.3162"></a>
-<span class="sourceLineNo">3163</span>            throw new IOException("Can't apply all operations atomically!");<a name="line.3163"></a>
-<span class="sourceLineNo">3164</span>          }<a name="line.3164"></a>
-<span class="sourceLineNo">3165</span>          break; // Stop acquiring more rows for this batch<a name="line.3165"></a>
-<span class="sourceLineNo">3166</span>        } else {<a name="line.3166"></a>
-<span class="sourceLineNo">3167</span>          acquiredRowLocks.add(rowLock);<a name="line.3167"></a>
-<span class="sourceLineNo">3168</span>        }<a name="line.3168"></a>
-<span class="sourceLineNo">3169</span>        readyToWriteCount++;<a name="line.3169"></a>
-<span class="sourceLineNo">3170</span>      }<a name="line.3170"></a>
-<span class="sourceLineNo">3171</span>      return createMiniBatch(lastIndexExclusive, readyToWriteCount);<a name="line.3171"></a>
-<span class="sourceLineNo">3172</span>    }<a name="line.3172"></a>
-<span class="sourceLineNo">3173</span><a name="line.3173"></a>
-<span class="sourceLineNo">3174</span>    protected MiniBatchOperationInProgress&lt;Mutation&gt; createMiniBatch(final int lastIndexExclusive,<a name="line.3174"></a>
-<span class="sourceLineNo">3175</span>        final int readyToWriteCount) {<a name="line.3175"></a>
-<span class="sourceLineNo">3176</span>      return new MiniBatchOperationInProgress&lt;&gt;(getMutationsForCoprocs(), retCodeDetails,<a name="line.3176"></a>
-<span class="sourceLineNo">3177</span>          walEditsFromCoprocessors, nextIndexToProcess, lastIndexExclusive, readyToWriteCount);<a name="line.3177"></a>
-<span class="sourceLineNo">3178</span>    }<a name="line.3178"></a>
-<span class="sourceLineNo">3179</span><a name="line.3179"></a>
-<span class="sourceLineNo">3180</span>    /**<a name="line.3180"></a>
-<span class="sourceLineNo">3181</span>     * Builds separate WALEdit per nonce by applying input mutations. If WALEdits from CP are<a name="line.3181"></a>
-<span class="sourceLineNo">3182</span>     * present, they are merged to result WALEdit.<a name="line.3182"></a>
-<span class="sourceLineNo">3183</span>     */<a name="line.3183"></a>
-<span class="sourceLineNo">3184</span>    public List&lt;Pair&lt;NonceKey, WALEdit&gt;&gt; buildWALEdits(<a name="line.3184"></a>
-<span class="sourceLineNo">3185</span>        final MiniBatchOperationInProgress&lt;Mutation&gt; miniBatchOp) throws IOException {<a name="line.3185"></a>
-<span class="sourceLineNo">3186</span>      List&lt;Pair&lt;NonceKey, WALEdit&gt;&gt; walEdits = new ArrayList&lt;&gt;();<a name="line.3186"></a>
-<span class="sourceLineNo">3187</span><a name="line.3187"></a>
-<span class="sourceLineNo">3188</span>      visitBatchOperations(true, nextIndexToProcess + miniBatchOp.size(), new Visitor() {<a name="line.3188"></a>
-<span class="sourceLineNo">3189</span>        private Pair&lt;NonceKey, WALEdit&gt; curWALEditForNonce;<a name="line.3189"></a>
-<span class="sourceLineNo">3190</span>        @Override<a name="line.3190"></a>
-<span class="sourceLineNo">3191</span>        public boolean visit(int index) throws IOException {<a name="line.3191"></a>
-<span class="sourceLineNo">3192</span>          Mutation m = getMutation(index);<a name="line.3192"></a>
-<span class="sourceLineNo">3193</span>          // we use durability of the original mutation for the mutation passed by CP.<a name="line.3193"></a>
-<span class="sourceLineNo">3194</span>          if (region.getEffectiveDurability(m.getDurability()) == Durability.SKIP_WAL) {<a name="line.3194"></a>
-<span class="sourceLineNo">3195</span>            region.recordMutationWithoutWal(m.getFamilyCellMap());<a name="line.3195"></a>
-<span class="sourceLineNo">3196</span>            return true;<a name="line.3196"></a>
-<span class="sourceLineNo">3197</span>          }<a name="line.3197"></a>
-<span class="sourceLineNo">3198</span><a name="line.3198"></a>
-<span class="sourceLineNo">3199</span>          // the batch may contain multiple nonce keys (replay case). If so, write WALEdit for each.<a name="line.3199"></a>
-<span class="sourceLineNo">3200</span>          // Given how nonce keys are originally written, these should be contiguous.<a name="line.3200"></a>
-<span class="sourceLineNo">3201</span>          // They don't have to be, it will still work, just write more WALEdits than needed.<a name="line.3201"></a>
-<span class="sourceLineNo">3202</span>          long nonceGroup = getNonceGroup(index);<a name="line.3202"></a>
-<span class="sourceLineNo">3203</span>          long nonce = getNonce(index);<a name="line.3203"></a>
-<span class="sourceLineNo">3204</span>          if (curWALEditForNonce == null ||<a name="line.3204"></a>
-<span class="sourceLineNo">3205</span>              curWALEditForNonce.getFirst().getNonceGroup() != nonceGroup ||<a name="line.3205"></a>
-<span class="sourceLineNo">3206</span>              curWALEditForNonce.getFirst().getNonce() != nonce) {<a name="line.3206"></a>
-<span class="sourceLineNo">3207</span>            curWALEditForNonce = new Pair&lt;&gt;(new NonceKey(nonceGroup, nonce),<a name="line.3207"></a>
-<span class="sourceLineNo">3208</span>                new WALEdit(miniBatchOp.getCellCount(), isInReplay()));<a name="line.3208"></a>
-<span class="sourceLineNo">3209</span>            walEdits.add(curWALEditForNonce);<a name="line.3209"></a>
-<span class="sourceLineNo">3210</span>          }<a name="line.3210"></a>
-<span class="sourceLineNo">3211</span>          WALEdit walEdit = curWALEditForNonce.getSecond();<a name="line.3211"></a>
-<span class="sourceLineNo">3212</span><a name="line.3212"></a>
-<span class="sourceLineNo">3213</span>          // Add WAL edits by CP<a name="line.3213"></a>
-<span class="sourceLineNo">3214</span>          WALEdit fromCP = walEditsFromCoprocessors[index];<a name="line.3214"></a>
-<span class="sourceLineNo">3215</span>          if (fromCP != null) {<a name="line.3215"></a>
-<span class="sourceLineNo">3216</span>            for (Cell cell : fromCP.getCells()) {<a name="line.3216"></a>
-<span class="sourceLineNo">3217</span>              walEdit.add(cell);<a name="line.3217"></a>
-<span class="sourceLineNo">3218</span>            }<a name="line.3218"></a>
-<span class="sourceLineNo">3219</span>          }<a name="line.3219"></a>
-<span class="sourceLineNo">3220</span>          addFamilyMapToWALEdit(familyCellMaps[index], walEdit);<a name="line.3220"></a>
-<span class="sourceLineNo">3221</span><a name="line.3221"></a>
-<span class="sourceLineNo">3222</span>          return true;<a name="line.3222"></a>
-<span class="sourceLineNo">3223</span>        }<a name="line.3223"></a>
-<span class="sourceLineNo">3224</span>      });<a name="line.3224"></a>
-<span class="sourceLineNo">3225</span>      return walEdits;<a name="line.3225"></a>
-<span class="sourceLineNo">3226</span>    }<a name="line.3226"></a>
-<span class="sourceLineNo">3227</span><a name="line.3227"></a>
-<span class="sourceLineNo">3228</span>    /**<a name="line.3228"></a>
-<span class="sourceLineNo">3229</span>     * This method completes mini-batch operations by calling postBatchMutate() CP hook (if<a name="line.3229"></a>
-<span class="sourceLineNo">3230</span>     * required) and completing mvcc.<a name="line.3230"></a>
-<span class="sourceLineNo">3231</span>     */<a name="line.3231"></a>
-<span class="sourceLineNo">3232</span>    public void completeMiniBatchOperations(<a name="line.3232"></a>
-<span class="sourceLineNo">3233</span>        final MiniBatchOperationInProgress&lt;Mutation&gt; miniBatchOp, final WriteEntry writeEntry)<a name="line.3233"></a>
-<span class="sourceLineNo">3234</span>        throws IOException {<a name="line.3234"></a>
-<span class="sourceLineNo">3235</span>      if (writeEntry != null) {<a name="line.3235"></a>
-<span class="sourceLineNo">3236</span>        region.mvcc.completeAndWait(writeEntry);<a name="line.3236"></a>
-<span class="sourceLineNo">3237</span>      }<a name="line.3237"></a>
-<span class="sourceLineNo">3238</span>    }<a name="line.3238"></a>
-<span class="sourceLineNo">3239</span><a name="line.3239"></a>
-<span class="sourceLineNo">3240</span>    public void doPostOpCleanupForMiniBatch(<a name="line.3240"></a>
-<span class="sourceLineNo">3241</span>        final MiniBatchOperationInProgress&lt;Mutation&gt; miniBatchOp, final WALEdit walEdit,<a name="line.3241"></a>
-<span class="sourceLineNo">3242</span>        boolean success) throws IOException {}<a name="line.3242"></a>
-<span class="sourceLineNo">3243</span><a name="line.3243"></a>
-<span class="sourceLineNo">3244</span>    /**<a name="line.3244"></a>
-<span class="sourceLineNo">3245</span>     * Atomically apply the given map of family-&gt;edits to the memstore.<a name="line.3245"></a>
-<span class="sourceLineNo">3246</span>     * This handles the consistency control on its own, but the caller<a name="line.3246"></a>
-<span class="sourceLineNo">3247</span>     * should already have locked updatesLock.readLock(). This also does<a name="line.3247"></a>
-<span class="sourceLineNo">3248</span>     * &lt;b&gt;not&lt;/b&gt; check the families for validity.<a name="line.3248"></a>
-<span class="sourceLineNo">3249</span>     *<a name="line.3249"></a>
-<span class="sourceLineNo">3250</span>     * @param familyMap Map of Cells by family<a name="line.3250"></a>
-<span class="sourceLineNo">3251</span>     */<a name="line.3251"></a>
-<span class="sourceLineNo">3252</span>    protected void applyFamilyMapToMemStore(Map&lt;byte[], List&lt;Cell&gt;&gt; familyMap,<a name="line.3252"></a>
-<span class="sourceLineNo">3253</span>        MemStoreSizing memstoreAccounting) throws IOException {<a name="line.3253"></a>
-<span class="sourceLineNo">3254</span>      for (Map.Entry&lt;byte[], List&lt;Cell&gt;&gt; e : familyMap.entrySet()) {<a name="line.3254"></a>
-<span class="sourceLineNo">3255</span>        byte[] family = e.getKey();<a name="line.3255"></a>
-<span class="sourceLineNo">3256</span>        List&lt;Cell&gt; cells = e.getValue();<a name="line.3256"></a>
-<span class="sourceLineNo">3257</span>        assert cells instanceof RandomAccess;<a name="line.3257"></a>
-<span class="sourceLineNo">3258</span>        region.applyToMemStore(region.getStore(family), cells, false, memstoreAccounting);<a name="line.3258"></a>
-<span class="sourceLineNo">3259</span>      }<a name="line.3259"></a>
-<span class="sourceLineNo">3260</span>    }<a name="line.3260"></a>
-<span class="sourceLineNo">3261</span><a name="line.3261"></a>
-<span class="sourceLineNo">3262</span>    /**<a name="line.3262"></a>
-<span class="sourceLineNo">3263</span>     * Append the given map of family-&gt;edits to a WALEdit data structure.<a name="line.3263"></a>
-<span class="sourceLineNo">3264</span>     * This does not write to the WAL itself.<a name="line.3264"></a>
-<span class="sourceLineNo">3265</span>     * @param familyMap map of family-&gt;edits<a name="line.3265"></a>
-<span class="sourceLineNo">3266</span>     * @param walEdit the destination entry to append into<a name="line.3266"></a>
-<span class="sourceLineNo">3267</span>     */<a name="line.3267"></a>
-<span class="sourceLineNo">3268</span>    private void addFamilyMapToWALEdit(Map&lt;byte[], List&lt;Cell&gt;&gt; familyMap,<a name="line.3268"></a>
-<span class="sourceLineNo">3269</span>        WALEdit walEdit) {<a name="line.3269"></a>
-<span class="sourceLineNo">3270</span>      for (List&lt;Cell&gt; edits : familyMap.values()) {<a name="line.3270"></a>
-<span class="sourceLineNo">3271</span>        // Optimization: 'foreach' loop is not used. See:<a name="line.3271"></a>
-<span class="sourceLineNo">3272</span>        // HBASE-12023 HRegion.applyFamilyMapToMemstore creates too many iterator objects<a name="line.3272"></a>
-<span class="sourceLineNo">3273</span>        assert edits instanceof RandomAccess;<a name="line.3273"></a>
-<span class="sourceLineNo">3274</span>        int listSize = edits.size();<a name="line.3274"></a>
-<span class="sourceLineNo">3275</span>        for (int i=0; i &lt; listSize; i++) {<a name="line.3275"></a>
-<span class="sourceLineNo">3276</span>          Cell cell = edits.get(i);<a name="line.3276"></a>
-<span class="sourceLineNo">3277</span>          walEdit.add(cell);<a name="line.3277"></a>
-<span class="sourceLineNo">3278</span>        }<a name="line.3278"></a>
-<span class="sourceLineNo">3279</span>      }<a name="line.3279"></a>
-<span class="sourceLineNo">3280</span>    }<a name="line.3280"></a>
-<span class="sourceLineNo">3281</span>  }<a name="line.3281"></a>
-<span class="sourceLineNo">3282</span><a name="line.3282"></a>
-<span class="sourceLineNo">3283</span>  /**<a name="line.3283"></a>
-<span class="sourceLineNo">3284</span>   * Batch of mutation operations. Base class is shared with {@link ReplayBatchOperation} as most<a name="line.3284"></a>
-<span class="sourceLineNo">3285</span>   * of the logic is same.<a name="line.3285"></a>
-<span class="sourceLineNo">3286</span>   */<a name="line.3286"></a>
-<span class="sourceLineNo">3287</span>  static class MutationBatchOperation extends BatchOperation&lt;Mutation&gt; {<a name="line.3287"></a>
-<span class="sourceLineNo">3288</span>    private long nonceGroup;<a name="line.3288"></a>
-<span class="sourceLineNo">3289</span>    private long nonce;<a name="line.3289"></a>
-<span class="sourceLineNo">3290</span>    public MutationBatchOperation(final HRegion region, Mutation[] operations, boolean atomic,<a name="line.3290"></a>
-<span class="sourceLineNo">3291</span>        long nonceGroup, long nonce) {<a name="line.3291"></a>
-<span class="sourceLineNo">3292</span>      super(region, operations);<a name="line.3292"></a>
-<span class="sourceLineNo">3293</span>      this.atomic = atomic;<a name="line.3293"></a>
-<span class="sourceLineNo">3294</span>      this.nonceGroup = nonceGroup;<a name="line.3294"></a>
-<span class="sourceLineNo">3295</span>      this.nonce = nonce;<a name="line.3295"></a>
-<span class="sourceLineNo">3296</span>    }<a name="line.3296"></a>
-<span class="sourceLineNo">3297</span><a name="line.3297"></a>
-<span class="sourceLineNo">3298</span>    @Override<a name="line.3298"></a>
-<span class="sourceLineNo">3299</span>    public Mutation getMutation(int index) {<a name="line.3299"></a>
-<span class="sourceLineNo">3300</span>      return this.operations[index];<a name="line.3300"></a>
-<span class="sourceLineNo">3301</span>    }<a name="line.3301"></a>
-<span class="sourceLineNo">3302</span><a name="line.3302"></a>
-<span class="sourceLineNo">3303</span>    @Override<a name="line.3303"></a>
-<span class="sourceLineNo">3304</span>    public long getNonceGroup(int index) {<a name="line.3304"></a>
-<span class="sourceLineNo">3305</span>      return nonceGroup;<a name="line.3305"></a>
-<span class="sourceLineNo">3306</span>    }<a name="line.3306"></a>
-<span class="sourceLineNo">3307</span><a name="line.3307"></a>
-<span cla

<TRUNCATED>

[22/51] [partial] hbase-site git commit: Published site at .

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/c54c242b/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/HRegion.RegionScannerImpl.html
----------------------------------------------------------------------
diff --git a/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/HRegion.RegionScannerImpl.html b/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/HRegion.RegionScannerImpl.html
index 3edfbef..9707b2c 100644
--- a/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/HRegion.RegionScannerImpl.html
+++ b/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/HRegion.RegionScannerImpl.html
@@ -2459,5936 +2459,5935 @@
 <span class="sourceLineNo">2451</span>      }<a name="line.2451"></a>
 <span class="sourceLineNo">2452</span><a name="line.2452"></a>
 <span class="sourceLineNo">2453</span>      for (HStore s : storesToFlush) {<a name="line.2453"></a>
-<span class="sourceLineNo">2454</span>        MemStoreSize flushableSize = s.getFlushableSize();<a name="line.2454"></a>
-<span class="sourceLineNo">2455</span>        totalSizeOfFlushableStores.incMemStoreSize(flushableSize);<a name="line.2455"></a>
-<span class="sourceLineNo">2456</span>        storeFlushCtxs.put(s.getColumnFamilyDescriptor().getName(),<a name="line.2456"></a>
-<span class="sourceLineNo">2457</span>          s.createFlushContext(flushOpSeqId, tracker));<a name="line.2457"></a>
-<span class="sourceLineNo">2458</span>        // for writing stores to WAL<a name="line.2458"></a>
-<span class="sourceLineNo">2459</span>        committedFiles.put(s.getColumnFamilyDescriptor().getName(), null);<a name="line.2459"></a>
-<span class="sourceLineNo">2460</span>        storeFlushableSize.put(s.getColumnFamilyDescriptor().getName(), flushableSize);<a name="line.2460"></a>
-<span class="sourceLineNo">2461</span>      }<a name="line.2461"></a>
-<span class="sourceLineNo">2462</span><a name="line.2462"></a>
-<span class="sourceLineNo">2463</span>      // write the snapshot start to WAL<a name="line.2463"></a>
-<span class="sourceLineNo">2464</span>      if (wal != null &amp;&amp; !writestate.readOnly) {<a name="line.2464"></a>
-<span class="sourceLineNo">2465</span>        FlushDescriptor desc = ProtobufUtil.toFlushDescriptor(FlushAction.START_FLUSH,<a name="line.2465"></a>
-<span class="sourceLineNo">2466</span>            getRegionInfo(), flushOpSeqId, committedFiles);<a name="line.2466"></a>
-<span class="sourceLineNo">2467</span>        // No sync. Sync is below where no updates lock and we do FlushAction.COMMIT_FLUSH<a name="line.2467"></a>
-<span class="sourceLineNo">2468</span>        WALUtil.writeFlushMarker(wal, this.getReplicationScope(), getRegionInfo(), desc, false,<a name="line.2468"></a>
-<span class="sourceLineNo">2469</span>            mvcc);<a name="line.2469"></a>
-<span class="sourceLineNo">2470</span>      }<a name="line.2470"></a>
-<span class="sourceLineNo">2471</span><a name="line.2471"></a>
-<span class="sourceLineNo">2472</span>      // Prepare flush (take a snapshot)<a name="line.2472"></a>
-<span class="sourceLineNo">2473</span>      for (StoreFlushContext flush : storeFlushCtxs.values()) {<a name="line.2473"></a>
-<span class="sourceLineNo">2474</span>        flush.prepare();<a name="line.2474"></a>
-<span class="sourceLineNo">2475</span>      }<a name="line.2475"></a>
-<span class="sourceLineNo">2476</span>    } catch (IOException ex) {<a name="line.2476"></a>
-<span class="sourceLineNo">2477</span>      doAbortFlushToWAL(wal, flushOpSeqId, committedFiles);<a name="line.2477"></a>
-<span class="sourceLineNo">2478</span>      throw ex;<a name="line.2478"></a>
-<span class="sourceLineNo">2479</span>    } finally {<a name="line.2479"></a>
-<span class="sourceLineNo">2480</span>      this.updatesLock.writeLock().unlock();<a name="line.2480"></a>
-<span class="sourceLineNo">2481</span>    }<a name="line.2481"></a>
-<span class="sourceLineNo">2482</span>    String s = "Finished memstore snapshotting " + this + ", syncing WAL and waiting on mvcc, " +<a name="line.2482"></a>
-<span class="sourceLineNo">2483</span>        "flushsize=" + totalSizeOfFlushableStores;<a name="line.2483"></a>
-<span class="sourceLineNo">2484</span>    status.setStatus(s);<a name="line.2484"></a>
-<span class="sourceLineNo">2485</span>    doSyncOfUnflushedWALChanges(wal, getRegionInfo());<a name="line.2485"></a>
-<span class="sourceLineNo">2486</span>    return new PrepareFlushResult(storeFlushCtxs, committedFiles, storeFlushableSize, startTime,<a name="line.2486"></a>
-<span class="sourceLineNo">2487</span>        flushOpSeqId, flushedSeqId, totalSizeOfFlushableStores);<a name="line.2487"></a>
-<span class="sourceLineNo">2488</span>  }<a name="line.2488"></a>
-<span class="sourceLineNo">2489</span><a name="line.2489"></a>
-<span class="sourceLineNo">2490</span>  /**<a name="line.2490"></a>
-<span class="sourceLineNo">2491</span>   * Utility method broken out of internalPrepareFlushCache so that method is smaller.<a name="line.2491"></a>
-<span class="sourceLineNo">2492</span>   */<a name="line.2492"></a>
-<span class="sourceLineNo">2493</span>  private void logFatLineOnFlush(Collection&lt;HStore&gt; storesToFlush, long sequenceId) {<a name="line.2493"></a>
-<span class="sourceLineNo">2494</span>    if (!LOG.isInfoEnabled()) {<a name="line.2494"></a>
-<span class="sourceLineNo">2495</span>      return;<a name="line.2495"></a>
-<span class="sourceLineNo">2496</span>    }<a name="line.2496"></a>
-<span class="sourceLineNo">2497</span>    // Log a fat line detailing what is being flushed.<a name="line.2497"></a>
-<span class="sourceLineNo">2498</span>    StringBuilder perCfExtras = null;<a name="line.2498"></a>
-<span class="sourceLineNo">2499</span>    if (!isAllFamilies(storesToFlush)) {<a name="line.2499"></a>
-<span class="sourceLineNo">2500</span>      perCfExtras = new StringBuilder();<a name="line.2500"></a>
-<span class="sourceLineNo">2501</span>      for (HStore store: storesToFlush) {<a name="line.2501"></a>
-<span class="sourceLineNo">2502</span>        perCfExtras.append("; ").append(store.getColumnFamilyName());<a name="line.2502"></a>
-<span class="sourceLineNo">2503</span>        perCfExtras.append("=")<a name="line.2503"></a>
-<span class="sourceLineNo">2504</span>            .append(StringUtils.byteDesc(store.getFlushableSize().getDataSize()));<a name="line.2504"></a>
-<span class="sourceLineNo">2505</span>      }<a name="line.2505"></a>
-<span class="sourceLineNo">2506</span>    }<a name="line.2506"></a>
-<span class="sourceLineNo">2507</span>    LOG.info("Flushing " + + storesToFlush.size() + "/" + stores.size() +<a name="line.2507"></a>
-<span class="sourceLineNo">2508</span>        " column families, memstore=" + StringUtils.byteDesc(this.memstoreDataSize.get()) +<a name="line.2508"></a>
-<span class="sourceLineNo">2509</span>        ((perCfExtras != null &amp;&amp; perCfExtras.length() &gt; 0)? perCfExtras.toString(): "") +<a name="line.2509"></a>
-<span class="sourceLineNo">2510</span>        ((wal != null) ? "" : "; WAL is null, using passed sequenceid=" + sequenceId));<a name="line.2510"></a>
-<span class="sourceLineNo">2511</span>  }<a name="line.2511"></a>
-<span class="sourceLineNo">2512</span><a name="line.2512"></a>
-<span class="sourceLineNo">2513</span>  private void doAbortFlushToWAL(final WAL wal, final long flushOpSeqId,<a name="line.2513"></a>
-<span class="sourceLineNo">2514</span>      final Map&lt;byte[], List&lt;Path&gt;&gt; committedFiles) {<a name="line.2514"></a>
-<span class="sourceLineNo">2515</span>    if (wal == null) return;<a name="line.2515"></a>
-<span class="sourceLineNo">2516</span>    try {<a name="line.2516"></a>
-<span class="sourceLineNo">2517</span>      FlushDescriptor desc = ProtobufUtil.toFlushDescriptor(FlushAction.ABORT_FLUSH,<a name="line.2517"></a>
-<span class="sourceLineNo">2518</span>          getRegionInfo(), flushOpSeqId, committedFiles);<a name="line.2518"></a>
-<span class="sourceLineNo">2519</span>      WALUtil.writeFlushMarker(wal, this.getReplicationScope(), getRegionInfo(), desc, false,<a name="line.2519"></a>
-<span class="sourceLineNo">2520</span>          mvcc);<a name="line.2520"></a>
-<span class="sourceLineNo">2521</span>    } catch (Throwable t) {<a name="line.2521"></a>
-<span class="sourceLineNo">2522</span>      LOG.warn("Received unexpected exception trying to write ABORT_FLUSH marker to WAL:" +<a name="line.2522"></a>
-<span class="sourceLineNo">2523</span>          StringUtils.stringifyException(t));<a name="line.2523"></a>
-<span class="sourceLineNo">2524</span>      // ignore this since we will be aborting the RS with DSE.<a name="line.2524"></a>
-<span class="sourceLineNo">2525</span>    }<a name="line.2525"></a>
-<span class="sourceLineNo">2526</span>    // we have called wal.startCacheFlush(), now we have to abort it<a name="line.2526"></a>
-<span class="sourceLineNo">2527</span>    wal.abortCacheFlush(this.getRegionInfo().getEncodedNameAsBytes());<a name="line.2527"></a>
-<span class="sourceLineNo">2528</span>  }<a name="line.2528"></a>
-<span class="sourceLineNo">2529</span><a name="line.2529"></a>
-<span class="sourceLineNo">2530</span>  /**<a name="line.2530"></a>
-<span class="sourceLineNo">2531</span>   * Sync unflushed WAL changes. See HBASE-8208 for details<a name="line.2531"></a>
-<span class="sourceLineNo">2532</span>   */<a name="line.2532"></a>
-<span class="sourceLineNo">2533</span>  private static void doSyncOfUnflushedWALChanges(final WAL wal, final RegionInfo hri)<a name="line.2533"></a>
-<span class="sourceLineNo">2534</span>  throws IOException {<a name="line.2534"></a>
-<span class="sourceLineNo">2535</span>    if (wal == null) {<a name="line.2535"></a>
-<span class="sourceLineNo">2536</span>      return;<a name="line.2536"></a>
-<span class="sourceLineNo">2537</span>    }<a name="line.2537"></a>
-<span class="sourceLineNo">2538</span>    try {<a name="line.2538"></a>
-<span class="sourceLineNo">2539</span>      wal.sync(); // ensure that flush marker is sync'ed<a name="line.2539"></a>
-<span class="sourceLineNo">2540</span>    } catch (IOException ioe) {<a name="line.2540"></a>
-<span class="sourceLineNo">2541</span>      wal.abortCacheFlush(hri.getEncodedNameAsBytes());<a name="line.2541"></a>
-<span class="sourceLineNo">2542</span>      throw ioe;<a name="line.2542"></a>
-<span class="sourceLineNo">2543</span>    }<a name="line.2543"></a>
-<span class="sourceLineNo">2544</span>  }<a name="line.2544"></a>
-<span class="sourceLineNo">2545</span><a name="line.2545"></a>
-<span class="sourceLineNo">2546</span>  /**<a name="line.2546"></a>
-<span class="sourceLineNo">2547</span>   * @return True if passed Set is all families in the region.<a name="line.2547"></a>
-<span class="sourceLineNo">2548</span>   */<a name="line.2548"></a>
-<span class="sourceLineNo">2549</span>  private boolean isAllFamilies(Collection&lt;HStore&gt; families) {<a name="line.2549"></a>
-<span class="sourceLineNo">2550</span>    return families == null || this.stores.size() == families.size();<a name="line.2550"></a>
-<span class="sourceLineNo">2551</span>  }<a name="line.2551"></a>
-<span class="sourceLineNo">2552</span><a name="line.2552"></a>
-<span class="sourceLineNo">2553</span>  /**<a name="line.2553"></a>
-<span class="sourceLineNo">2554</span>   * Writes a marker to WAL indicating a flush is requested but cannot be complete due to various<a name="line.2554"></a>
-<span class="sourceLineNo">2555</span>   * reasons. Ignores exceptions from WAL. Returns whether the write succeeded.<a name="line.2555"></a>
-<span class="sourceLineNo">2556</span>   * @param wal<a name="line.2556"></a>
-<span class="sourceLineNo">2557</span>   * @return whether WAL write was successful<a name="line.2557"></a>
-<span class="sourceLineNo">2558</span>   */<a name="line.2558"></a>
-<span class="sourceLineNo">2559</span>  private boolean writeFlushRequestMarkerToWAL(WAL wal, boolean writeFlushWalMarker) {<a name="line.2559"></a>
-<span class="sourceLineNo">2560</span>    if (writeFlushWalMarker &amp;&amp; wal != null &amp;&amp; !writestate.readOnly) {<a name="line.2560"></a>
-<span class="sourceLineNo">2561</span>      FlushDescriptor desc = ProtobufUtil.toFlushDescriptor(FlushAction.CANNOT_FLUSH,<a name="line.2561"></a>
-<span class="sourceLineNo">2562</span>        getRegionInfo(), -1, new TreeMap&lt;&gt;(Bytes.BYTES_COMPARATOR));<a name="line.2562"></a>
-<span class="sourceLineNo">2563</span>      try {<a name="line.2563"></a>
-<span class="sourceLineNo">2564</span>        WALUtil.writeFlushMarker(wal, this.getReplicationScope(), getRegionInfo(), desc, true,<a name="line.2564"></a>
-<span class="sourceLineNo">2565</span>            mvcc);<a name="line.2565"></a>
-<span class="sourceLineNo">2566</span>        return true;<a name="line.2566"></a>
-<span class="sourceLineNo">2567</span>      } catch (IOException e) {<a name="line.2567"></a>
-<span class="sourceLineNo">2568</span>        LOG.warn(getRegionInfo().getEncodedName() + " : "<a name="line.2568"></a>
-<span class="sourceLineNo">2569</span>            + "Received exception while trying to write the flush request to wal", e);<a name="line.2569"></a>
-<span class="sourceLineNo">2570</span>      }<a name="line.2570"></a>
-<span class="sourceLineNo">2571</span>    }<a name="line.2571"></a>
-<span class="sourceLineNo">2572</span>    return false;<a name="line.2572"></a>
-<span class="sourceLineNo">2573</span>  }<a name="line.2573"></a>
-<span class="sourceLineNo">2574</span><a name="line.2574"></a>
-<span class="sourceLineNo">2575</span>  @edu.umd.cs.findbugs.annotations.SuppressWarnings(value="NN_NAKED_NOTIFY",<a name="line.2575"></a>
-<span class="sourceLineNo">2576</span>      justification="Intentional; notify is about completed flush")<a name="line.2576"></a>
-<span class="sourceLineNo">2577</span>  protected FlushResultImpl internalFlushCacheAndCommit(WAL wal, MonitoredTask status,<a name="line.2577"></a>
-<span class="sourceLineNo">2578</span>      PrepareFlushResult prepareResult, Collection&lt;HStore&gt; storesToFlush) throws IOException {<a name="line.2578"></a>
-<span class="sourceLineNo">2579</span>    // prepare flush context is carried via PrepareFlushResult<a name="line.2579"></a>
-<span class="sourceLineNo">2580</span>    TreeMap&lt;byte[], StoreFlushContext&gt; storeFlushCtxs = prepareResult.storeFlushCtxs;<a name="line.2580"></a>
-<span class="sourceLineNo">2581</span>    TreeMap&lt;byte[], List&lt;Path&gt;&gt; committedFiles = prepareResult.committedFiles;<a name="line.2581"></a>
-<span class="sourceLineNo">2582</span>    long startTime = prepareResult.startTime;<a name="line.2582"></a>
-<span class="sourceLineNo">2583</span>    long flushOpSeqId = prepareResult.flushOpSeqId;<a name="line.2583"></a>
-<span class="sourceLineNo">2584</span>    long flushedSeqId = prepareResult.flushedSeqId;<a name="line.2584"></a>
-<span class="sourceLineNo">2585</span><a name="line.2585"></a>
-<span class="sourceLineNo">2586</span>    String s = "Flushing stores of " + this;<a name="line.2586"></a>
-<span class="sourceLineNo">2587</span>    status.setStatus(s);<a name="line.2587"></a>
-<span class="sourceLineNo">2588</span>    if (LOG.isTraceEnabled()) LOG.trace(s);<a name="line.2588"></a>
-<span class="sourceLineNo">2589</span><a name="line.2589"></a>
-<span class="sourceLineNo">2590</span>    // Any failure from here on out will be catastrophic requiring server<a name="line.2590"></a>
-<span class="sourceLineNo">2591</span>    // restart so wal content can be replayed and put back into the memstore.<a name="line.2591"></a>
-<span class="sourceLineNo">2592</span>    // Otherwise, the snapshot content while backed up in the wal, it will not<a name="line.2592"></a>
-<span class="sourceLineNo">2593</span>    // be part of the current running servers state.<a name="line.2593"></a>
-<span class="sourceLineNo">2594</span>    boolean compactionRequested = false;<a name="line.2594"></a>
-<span class="sourceLineNo">2595</span>    long flushedOutputFileSize = 0;<a name="line.2595"></a>
-<span class="sourceLineNo">2596</span>    try {<a name="line.2596"></a>
-<span class="sourceLineNo">2597</span>      // A.  Flush memstore to all the HStores.<a name="line.2597"></a>
-<span class="sourceLineNo">2598</span>      // Keep running vector of all store files that includes both old and the<a name="line.2598"></a>
-<span class="sourceLineNo">2599</span>      // just-made new flush store file. The new flushed file is still in the<a name="line.2599"></a>
-<span class="sourceLineNo">2600</span>      // tmp directory.<a name="line.2600"></a>
-<span class="sourceLineNo">2601</span><a name="line.2601"></a>
-<span class="sourceLineNo">2602</span>      for (StoreFlushContext flush : storeFlushCtxs.values()) {<a name="line.2602"></a>
-<span class="sourceLineNo">2603</span>        flush.flushCache(status);<a name="line.2603"></a>
-<span class="sourceLineNo">2604</span>      }<a name="line.2604"></a>
-<span class="sourceLineNo">2605</span><a name="line.2605"></a>
-<span class="sourceLineNo">2606</span>      // Switch snapshot (in memstore) -&gt; new hfile (thus causing<a name="line.2606"></a>
-<span class="sourceLineNo">2607</span>      // all the store scanners to reset/reseek).<a name="line.2607"></a>
-<span class="sourceLineNo">2608</span>      Iterator&lt;HStore&gt; it = storesToFlush.iterator();<a name="line.2608"></a>
-<span class="sourceLineNo">2609</span>      // stores.values() and storeFlushCtxs have same order<a name="line.2609"></a>
-<span class="sourceLineNo">2610</span>      for (StoreFlushContext flush : storeFlushCtxs.values()) {<a name="line.2610"></a>
-<span class="sourceLineNo">2611</span>        boolean needsCompaction = flush.commit(status);<a name="line.2611"></a>
-<span class="sourceLineNo">2612</span>        if (needsCompaction) {<a name="line.2612"></a>
-<span class="sourceLineNo">2613</span>          compactionRequested = true;<a name="line.2613"></a>
-<span class="sourceLineNo">2614</span>        }<a name="line.2614"></a>
-<span class="sourceLineNo">2615</span>        byte[] storeName = it.next().getColumnFamilyDescriptor().getName();<a name="line.2615"></a>
-<span class="sourceLineNo">2616</span>        List&lt;Path&gt; storeCommittedFiles = flush.getCommittedFiles();<a name="line.2616"></a>
-<span class="sourceLineNo">2617</span>        committedFiles.put(storeName, storeCommittedFiles);<a name="line.2617"></a>
-<span class="sourceLineNo">2618</span>        // Flush committed no files, indicating flush is empty or flush was canceled<a name="line.2618"></a>
-<span class="sourceLineNo">2619</span>        if (storeCommittedFiles == null || storeCommittedFiles.isEmpty()) {<a name="line.2619"></a>
-<span class="sourceLineNo">2620</span>          MemStoreSize storeFlushableSize = prepareResult.storeFlushableSize.get(storeName);<a name="line.2620"></a>
-<span class="sourceLineNo">2621</span>          prepareResult.totalFlushableSize.decMemStoreSize(storeFlushableSize);<a name="line.2621"></a>
-<span class="sourceLineNo">2622</span>        }<a name="line.2622"></a>
-<span class="sourceLineNo">2623</span>        flushedOutputFileSize += flush.getOutputFileSize();<a name="line.2623"></a>
-<span class="sourceLineNo">2624</span>      }<a name="line.2624"></a>
-<span class="sourceLineNo">2625</span>      storeFlushCtxs.clear();<a name="line.2625"></a>
-<span class="sourceLineNo">2626</span><a name="line.2626"></a>
-<span class="sourceLineNo">2627</span>      // Set down the memstore size by amount of flush.<a name="line.2627"></a>
-<span class="sourceLineNo">2628</span>      this.decrMemStoreSize(prepareResult.totalFlushableSize);<a name="line.2628"></a>
-<span class="sourceLineNo">2629</span><a name="line.2629"></a>
-<span class="sourceLineNo">2630</span>      if (wal != null) {<a name="line.2630"></a>
-<span class="sourceLineNo">2631</span>        // write flush marker to WAL. If fail, we should throw DroppedSnapshotException<a name="line.2631"></a>
-<span class="sourceLineNo">2632</span>        FlushDescriptor desc = ProtobufUtil.toFlushDescriptor(FlushAction.COMMIT_FLUSH,<a name="line.2632"></a>
-<span class="sourceLineNo">2633</span>          getRegionInfo(), flushOpSeqId, committedFiles);<a name="line.2633"></a>
-<span class="sourceLineNo">2634</span>        WALUtil.writeFlushMarker(wal, this.getReplicationScope(), getRegionInfo(), desc, true,<a name="line.2634"></a>
-<span class="sourceLineNo">2635</span>            mvcc);<a name="line.2635"></a>
-<span class="sourceLineNo">2636</span>      }<a name="line.2636"></a>
-<span class="sourceLineNo">2637</span>    } catch (Throwable t) {<a name="line.2637"></a>
-<span class="sourceLineNo">2638</span>      // An exception here means that the snapshot was not persisted.<a name="line.2638"></a>
-<span class="sourceLineNo">2639</span>      // The wal needs to be replayed so its content is restored to memstore.<a name="line.2639"></a>
-<span class="sourceLineNo">2640</span>      // Currently, only a server restart will do this.<a name="line.2640"></a>
-<span class="sourceLineNo">2641</span>      // We used to only catch IOEs but its possible that we'd get other<a name="line.2641"></a>
-<span class="sourceLineNo">2642</span>      // exceptions -- e.g. HBASE-659 was about an NPE -- so now we catch<a name="line.2642"></a>
-<span class="sourceLineNo">2643</span>      // all and sundry.<a name="line.2643"></a>
-<span class="sourceLineNo">2644</span>      if (wal != null) {<a name="line.2644"></a>
-<span class="sourceLineNo">2645</span>        try {<a name="line.2645"></a>
-<span class="sourceLineNo">2646</span>          FlushDescriptor desc = ProtobufUtil.toFlushDescriptor(FlushAction.ABORT_FLUSH,<a name="line.2646"></a>
-<span class="sourceLineNo">2647</span>            getRegionInfo(), flushOpSeqId, committedFiles);<a name="line.2647"></a>
-<span class="sourceLineNo">2648</span>          WALUtil.writeFlushMarker(wal, this.replicationScope, getRegionInfo(), desc, false, mvcc);<a name="line.2648"></a>
-<span class="sourceLineNo">2649</span>        } catch (Throwable ex) {<a name="line.2649"></a>
-<span class="sourceLineNo">2650</span>          LOG.warn(getRegionInfo().getEncodedName() + " : "<a name="line.2650"></a>
-<span class="sourceLineNo">2651</span>              + "failed writing ABORT_FLUSH marker to WAL", ex);<a name="line.2651"></a>
-<span class="sourceLineNo">2652</span>          // ignore this since we will be aborting the RS with DSE.<a name="line.2652"></a>
-<span class="sourceLineNo">2653</span>        }<a name="line.2653"></a>
-<span class="sourceLineNo">2654</span>        wal.abortCacheFlush(this.getRegionInfo().getEncodedNameAsBytes());<a name="line.2654"></a>
-<span class="sourceLineNo">2655</span>      }<a name="line.2655"></a>
-<span class="sourceLineNo">2656</span>      DroppedSnapshotException dse = new DroppedSnapshotException("region: " +<a name="line.2656"></a>
-<span class="sourceLineNo">2657</span>          Bytes.toStringBinary(getRegionInfo().getRegionName()));<a name="line.2657"></a>
-<span class="sourceLineNo">2658</span>      dse.initCause(t);<a name="line.2658"></a>
-<span class="sourceLineNo">2659</span>      status.abort("Flush failed: " + StringUtils.stringifyException(t));<a name="line.2659"></a>
-<span class="sourceLineNo">2660</span><a name="line.2660"></a>
-<span class="sourceLineNo">2661</span>      // Callers for flushcache() should catch DroppedSnapshotException and abort the region server.<a name="line.2661"></a>
-<span class="sourceLineNo">2662</span>      // However, since we may have the region read lock, we cannot call close(true) here since<a name="line.2662"></a>
-<span class="sourceLineNo">2663</span>      // we cannot promote to a write lock. Instead we are setting closing so that all other region<a name="line.2663"></a>
-<span class="sourceLineNo">2664</span>      // operations except for close will be rejected.<a name="line.2664"></a>
-<span class="sourceLineNo">2665</span>      this.closing.set(true);<a name="line.2665"></a>
-<span class="sourceLineNo">2666</span><a name="line.2666"></a>
-<span class="sourceLineNo">2667</span>      if (rsServices != null) {<a name="line.2667"></a>
-<span class="sourceLineNo">2668</span>        // This is a safeguard against the case where the caller fails to explicitly handle aborting<a name="line.2668"></a>
-<span class="sourceLineNo">2669</span>        rsServices.abort("Replay of WAL required. Forcing server shutdown", dse);<a name="line.2669"></a>
-<span class="sourceLineNo">2670</span>      }<a name="line.2670"></a>
-<span class="sourceLineNo">2671</span><a name="line.2671"></a>
-<span class="sourceLineNo">2672</span>      throw dse;<a name="line.2672"></a>
-<span class="sourceLineNo">2673</span>    }<a name="line.2673"></a>
-<span class="sourceLineNo">2674</span><a name="line.2674"></a>
-<span class="sourceLineNo">2675</span>    // If we get to here, the HStores have been written.<a name="line.2675"></a>
-<span class="sourceLineNo">2676</span>    if (wal != null) {<a name="line.2676"></a>
-<span class="sourceLineNo">2677</span>      wal.completeCacheFlush(this.getRegionInfo().getEncodedNameAsBytes());<a name="line.2677"></a>
-<span class="sourceLineNo">2678</span>    }<a name="line.2678"></a>
-<span class="sourceLineNo">2679</span><a name="line.2679"></a>
-<span class="sourceLineNo">2680</span>    // Record latest flush time<a name="line.2680"></a>
-<span class="sourceLineNo">2681</span>    for (HStore store: storesToFlush) {<a name="line.2681"></a>
-<span class="sourceLineNo">2682</span>      this.lastStoreFlushTimeMap.put(store, startTime);<a name="line.2682"></a>
-<span class="sourceLineNo">2683</span>    }<a name="line.2683"></a>
-<span class="sourceLineNo">2684</span><a name="line.2684"></a>
-<span class="sourceLineNo">2685</span>    this.maxFlushedSeqId = flushedSeqId;<a name="line.2685"></a>
-<span class="sourceLineNo">2686</span>    this.lastFlushOpSeqId = flushOpSeqId;<a name="line.2686"></a>
-<span class="sourceLineNo">2687</span><a name="line.2687"></a>
-<span class="sourceLineNo">2688</span>    // C. Finally notify anyone waiting on memstore to clear:<a name="line.2688"></a>
-<span class="sourceLineNo">2689</span>    // e.g. checkResources().<a name="line.2689"></a>
-<span class="sourceLineNo">2690</span>    synchronized (this) {<a name="line.2690"></a>
-<span class="sourceLineNo">2691</span>      notifyAll(); // FindBugs NN_NAKED_NOTIFY<a name="line.2691"></a>
-<span class="sourceLineNo">2692</span>    }<a name="line.2692"></a>
-<span class="sourceLineNo">2693</span><a name="line.2693"></a>
-<span class="sourceLineNo">2694</span>    long time = EnvironmentEdgeManager.currentTime() - startTime;<a name="line.2694"></a>
-<span class="sourceLineNo">2695</span>    long memstoresize = this.memstoreDataSize.get();<a name="line.2695"></a>
-<span class="sourceLineNo">2696</span>    String msg = "Finished memstore flush of ~"<a name="line.2696"></a>
-<span class="sourceLineNo">2697</span>        + StringUtils.byteDesc(prepareResult.totalFlushableSize.getDataSize()) + "/"<a name="line.2697"></a>
-<span class="sourceLineNo">2698</span>        + prepareResult.totalFlushableSize.getDataSize() + ", currentsize="<a name="line.2698"></a>
-<span class="sourceLineNo">2699</span>        + StringUtils.byteDesc(memstoresize) + "/" + memstoresize<a name="line.2699"></a>
-<span class="sourceLineNo">2700</span>        + " for region " + this + " in " + time + "ms, sequenceid="<a name="line.2700"></a>
-<span class="sourceLineNo">2701</span>        + flushOpSeqId +  ", compaction requested=" + compactionRequested<a name="line.2701"></a>
-<span class="sourceLineNo">2702</span>        + ((wal == null) ? "; wal=null" : "");<a name="line.2702"></a>
-<span class="sourceLineNo">2703</span>    LOG.info(msg);<a name="line.2703"></a>
-<span class="sourceLineNo">2704</span>    status.setStatus(msg);<a name="line.2704"></a>
-<span class="sourceLineNo">2705</span><a name="line.2705"></a>
-<span class="sourceLineNo">2706</span>    if (rsServices != null &amp;&amp; rsServices.getMetrics() != null) {<a name="line.2706"></a>
-<span class="sourceLineNo">2707</span>      rsServices.getMetrics().updateFlush(time - startTime,<a name="line.2707"></a>
-<span class="sourceLineNo">2708</span>          prepareResult.totalFlushableSize.getDataSize(), flushedOutputFileSize);<a name="line.2708"></a>
-<span class="sourceLineNo">2709</span>    }<a name="line.2709"></a>
-<span class="sourceLineNo">2710</span><a name="line.2710"></a>
-<span class="sourceLineNo">2711</span>    return new FlushResultImpl(compactionRequested ?<a name="line.2711"></a>
-<span class="sourceLineNo">2712</span>        FlushResult.Result.FLUSHED_COMPACTION_NEEDED :<a name="line.2712"></a>
-<span class="sourceLineNo">2713</span>          FlushResult.Result.FLUSHED_NO_COMPACTION_NEEDED, flushOpSeqId);<a name="line.2713"></a>
-<span class="sourceLineNo">2714</span>  }<a name="line.2714"></a>
-<span class="sourceLineNo">2715</span><a name="line.2715"></a>
-<span class="sourceLineNo">2716</span>  /**<a name="line.2716"></a>
-<span class="sourceLineNo">2717</span>   * Method to safely get the next sequence number.<a name="line.2717"></a>
-<span class="sourceLineNo">2718</span>   * @return Next sequence number unassociated with any actual edit.<a name="line.2718"></a>
-<span class="sourceLineNo">2719</span>   * @throws IOException<a name="line.2719"></a>
-<span class="sourceLineNo">2720</span>   */<a name="line.2720"></a>
-<span class="sourceLineNo">2721</span>  @VisibleForTesting<a name="line.2721"></a>
-<span class="sourceLineNo">2722</span>  protected long getNextSequenceId(final WAL wal) throws IOException {<a name="line.2722"></a>
-<span class="sourceLineNo">2723</span>    WriteEntry we = mvcc.begin();<a name="line.2723"></a>
-<span class="sourceLineNo">2724</span>    mvcc.completeAndWait(we);<a name="line.2724"></a>
-<span class="sourceLineNo">2725</span>    return we.getWriteNumber();<a name="line.2725"></a>
-<span class="sourceLineNo">2726</span>  }<a name="line.2726"></a>
-<span class="sourceLineNo">2727</span><a name="line.2727"></a>
-<span class="sourceLineNo">2728</span>  //////////////////////////////////////////////////////////////////////////////<a name="line.2728"></a>
-<span class="sourceLineNo">2729</span>  // get() methods for client use.<a name="line.2729"></a>
-<span class="sourceLineNo">2730</span>  //////////////////////////////////////////////////////////////////////////////<a name="line.2730"></a>
-<span class="sourceLineNo">2731</span><a name="line.2731"></a>
-<span class="sourceLineNo">2732</span>  @Override<a name="line.2732"></a>
-<span class="sourceLineNo">2733</span>  public RegionScannerImpl getScanner(Scan scan) throws IOException {<a name="line.2733"></a>
-<span class="sourceLineNo">2734</span>   return getScanner(scan, null);<a name="line.2734"></a>
-<span class="sourceLineNo">2735</span>  }<a name="line.2735"></a>
-<span class="sourceLineNo">2736</span><a name="line.2736"></a>
-<span class="sourceLineNo">2737</span>  @Override<a name="line.2737"></a>
-<span class="sourceLineNo">2738</span>  public RegionScannerImpl getScanner(Scan scan, List&lt;KeyValueScanner&gt; additionalScanners)<a name="line.2738"></a>
-<span class="sourceLineNo">2739</span>      throws IOException {<a name="line.2739"></a>
-<span class="sourceLineNo">2740</span>    return getScanner(scan, additionalScanners, HConstants.NO_NONCE, HConstants.NO_NONCE);<a name="line.2740"></a>
-<span class="sourceLineNo">2741</span>  }<a name="line.2741"></a>
-<span class="sourceLineNo">2742</span><a name="line.2742"></a>
-<span class="sourceLineNo">2743</span>  private RegionScannerImpl getScanner(Scan scan, List&lt;KeyValueScanner&gt; additionalScanners,<a name="line.2743"></a>
-<span class="sourceLineNo">2744</span>      long nonceGroup, long nonce) throws IOException {<a name="line.2744"></a>
-<span class="sourceLineNo">2745</span>    startRegionOperation(Operation.SCAN);<a name="line.2745"></a>
-<span class="sourceLineNo">2746</span>    try {<a name="line.2746"></a>
-<span class="sourceLineNo">2747</span>      // Verify families are all valid<a name="line.2747"></a>
-<span class="sourceLineNo">2748</span>      if (!scan.hasFamilies()) {<a name="line.2748"></a>
-<span class="sourceLineNo">2749</span>        // Adding all families to scanner<a name="line.2749"></a>
-<span class="sourceLineNo">2750</span>        for (byte[] family : this.htableDescriptor.getColumnFamilyNames()) {<a name="line.2750"></a>
-<span class="sourceLineNo">2751</span>          scan.addFamily(family);<a name="line.2751"></a>
-<span class="sourceLineNo">2752</span>        }<a name="line.2752"></a>
-<span class="sourceLineNo">2753</span>      } else {<a name="line.2753"></a>
-<span class="sourceLineNo">2754</span>        for (byte[] family : scan.getFamilyMap().keySet()) {<a name="line.2754"></a>
-<span class="sourceLineNo">2755</span>          checkFamily(family);<a name="line.2755"></a>
-<span class="sourceLineNo">2756</span>        }<a name="line.2756"></a>
-<span class="sourceLineNo">2757</span>      }<a name="line.2757"></a>
-<span class="sourceLineNo">2758</span>      return instantiateRegionScanner(scan, additionalScanners, nonceGroup, nonce);<a name="line.2758"></a>
-<span class="sourceLineNo">2759</span>    } finally {<a name="line.2759"></a>
-<span class="sourceLineNo">2760</span>      closeRegionOperation(Operation.SCAN);<a name="line.2760"></a>
-<span class="sourceLineNo">2761</span>    }<a name="line.2761"></a>
-<span class="sourceLineNo">2762</span>  }<a name="line.2762"></a>
-<span class="sourceLineNo">2763</span><a name="line.2763"></a>
-<span class="sourceLineNo">2764</span>  protected RegionScanner instantiateRegionScanner(Scan scan,<a name="line.2764"></a>
-<span class="sourceLineNo">2765</span>      List&lt;KeyValueScanner&gt; additionalScanners) throws IOException {<a name="line.2765"></a>
-<span class="sourceLineNo">2766</span>    return instantiateRegionScanner(scan, additionalScanners, HConstants.NO_NONCE,<a name="line.2766"></a>
-<span class="sourceLineNo">2767</span>      HConstants.NO_NONCE);<a name="line.2767"></a>
-<span class="sourceLineNo">2768</span>  }<a name="line.2768"></a>
-<span class="sourceLineNo">2769</span><a name="line.2769"></a>
-<span class="sourceLineNo">2770</span>  protected RegionScannerImpl instantiateRegionScanner(Scan scan,<a name="line.2770"></a>
-<span class="sourceLineNo">2771</span>      List&lt;KeyValueScanner&gt; additionalScanners, long nonceGroup, long nonce) throws IOException {<a name="line.2771"></a>
-<span class="sourceLineNo">2772</span>    if (scan.isReversed()) {<a name="line.2772"></a>
-<span class="sourceLineNo">2773</span>      if (scan.getFilter() != null) {<a name="line.2773"></a>
-<span class="sourceLineNo">2774</span>        scan.getFilter().setReversed(true);<a name="line.2774"></a>
-<span class="sourceLineNo">2775</span>      }<a name="line.2775"></a>
-<span class="sourceLineNo">2776</span>      return new ReversedRegionScannerImpl(scan, additionalScanners, this);<a name="line.2776"></a>
-<span class="sourceLineNo">2777</span>    }<a name="line.2777"></a>
-<span class="sourceLineNo">2778</span>    return new RegionScannerImpl(scan, additionalScanners, this, nonceGroup, nonce);<a name="line.2778"></a>
-<span class="sourceLineNo">2779</span>  }<a name="line.2779"></a>
-<span class="sourceLineNo">2780</span><a name="line.2780"></a>
-<span class="sourceLineNo">2781</span>  /**<a name="line.2781"></a>
-<span class="sourceLineNo">2782</span>   * Prepare a delete for a row mutation processor<a name="line.2782"></a>
-<span class="sourceLineNo">2783</span>   * @param delete The passed delete is modified by this method. WARNING!<a name="line.2783"></a>
-<span class="sourceLineNo">2784</span>   * @throws IOException<a name="line.2784"></a>
-<span class="sourceLineNo">2785</span>   */<a name="line.2785"></a>
-<span class="sourceLineNo">2786</span>  public void prepareDelete(Delete delete) throws IOException {<a name="line.2786"></a>
-<span class="sourceLineNo">2787</span>    // Check to see if this is a deleteRow insert<a name="line.2787"></a>
-<span class="sourceLineNo">2788</span>    if(delete.getFamilyCellMap().isEmpty()){<a name="line.2788"></a>
-<span class="sourceLineNo">2789</span>      for(byte [] family : this.htableDescriptor.getColumnFamilyNames()){<a name="line.2789"></a>
-<span class="sourceLineNo">2790</span>        // Don't eat the timestamp<a name="line.2790"></a>
-<span class="sourceLineNo">2791</span>        delete.addFamily(family, delete.getTimeStamp());<a name="line.2791"></a>
-<span class="sourceLineNo">2792</span>      }<a name="line.2792"></a>
-<span class="sourceLineNo">2793</span>    } else {<a name="line.2793"></a>
-<span class="sourceLineNo">2794</span>      for(byte [] family : delete.getFamilyCellMap().keySet()) {<a name="line.2794"></a>
-<span class="sourceLineNo">2795</span>        if(family == null) {<a name="line.2795"></a>
-<span class="sourceLineNo">2796</span>          throw new NoSuchColumnFamilyException("Empty family is invalid");<a name="line.2796"></a>
-<span class="sourceLineNo">2797</span>        }<a name="line.2797"></a>
-<span class="sourceLineNo">2798</span>        checkFamily(family);<a name="line.2798"></a>
-<span class="sourceLineNo">2799</span>      }<a name="line.2799"></a>
-<span class="sourceLineNo">2800</span>    }<a name="line.2800"></a>
-<span class="sourceLineNo">2801</span>  }<a name="line.2801"></a>
-<span class="sourceLineNo">2802</span><a name="line.2802"></a>
-<span class="sourceLineNo">2803</span>  @Override<a name="line.2803"></a>
-<span class="sourceLineNo">2804</span>  public void delete(Delete delete) throws IOException {<a name="line.2804"></a>
-<span class="sourceLineNo">2805</span>    checkReadOnly();<a name="line.2805"></a>
-<span class="sourceLineNo">2806</span>    checkResources();<a name="line.2806"></a>
-<span class="sourceLineNo">2807</span>    startRegionOperation(Operation.DELETE);<a name="line.2807"></a>
-<span class="sourceLineNo">2808</span>    try {<a name="line.2808"></a>
-<span class="sourceLineNo">2809</span>      // All edits for the given row (across all column families) must happen atomically.<a name="line.2809"></a>
-<span class="sourceLineNo">2810</span>      doBatchMutate(delete);<a name="line.2810"></a>
-<span class="sourceLineNo">2811</span>    } finally {<a name="line.2811"></a>
-<span class="sourceLineNo">2812</span>      closeRegionOperation(Operation.DELETE);<a name="line.2812"></a>
-<span class="sourceLineNo">2813</span>    }<a name="line.2813"></a>
-<span class="sourceLineNo">2814</span>  }<a name="line.2814"></a>
-<span class="sourceLineNo">2815</span><a name="line.2815"></a>
-<span class="sourceLineNo">2816</span>  /**<a name="line.2816"></a>
-<span class="sourceLineNo">2817</span>   * Row needed by below method.<a name="line.2817"></a>
-<span class="sourceLineNo">2818</span>   */<a name="line.2818"></a>
-<span class="sourceLineNo">2819</span>  private static final byte [] FOR_UNIT_TESTS_ONLY = Bytes.toBytes("ForUnitTestsOnly");<a name="line.2819"></a>
-<span class="sourceLineNo">2820</span><a name="line.2820"></a>
-<span class="sourceLineNo">2821</span>  /**<a name="line.2821"></a>
-<span class="sourceLineNo">2822</span>   * This is used only by unit tests. Not required to be a public API.<a name="line.2822"></a>
-<span class="sourceLineNo">2823</span>   * @param familyMap map of family to edits for the given family.<a name="line.2823"></a>
-<span class="sourceLineNo">2824</span>   * @throws IOException<a name="line.2824"></a>
-<span class="sourceLineNo">2825</span>   */<a name="line.2825"></a>
-<span class="sourceLineNo">2826</span>  void delete(NavigableMap&lt;byte[], List&lt;Cell&gt;&gt; familyMap,<a name="line.2826"></a>
-<span class="sourceLineNo">2827</span>      Durability durability) throws IOException {<a name="line.2827"></a>
-<span class="sourceLineNo">2828</span>    Delete delete = new Delete(FOR_UNIT_TESTS_ONLY);<a name="line.2828"></a>
-<span class="sourceLineNo">2829</span>    delete.setFamilyCellMap(familyMap);<a name="line.2829"></a>
-<span class="sourceLineNo">2830</span>    delete.setDurability(durability);<a name="line.2830"></a>
-<span class="sourceLineNo">2831</span>    doBatchMutate(delete);<a name="line.2831"></a>
-<span class="sourceLineNo">2832</span>  }<a name="line.2832"></a>
-<span class="sourceLineNo">2833</span><a name="line.2833"></a>
-<span class="sourceLineNo">2834</span>  /**<a name="line.2834"></a>
-<span class="sourceLineNo">2835</span>   * Set up correct timestamps in the KVs in Delete object.<a name="line.2835"></a>
-<span class="sourceLineNo">2836</span>   * &lt;p&gt;Caller should have the row and region locks.<a name="line.2836"></a>
-<span class="sourceLineNo">2837</span>   * @param mutation<a name="line.2837"></a>
-<span class="sourceLineNo">2838</span>   * @param familyMap<a name="line.2838"></a>
-<span class="sourceLineNo">2839</span>   * @param byteNow<a name="line.2839"></a>
-<span class="sourceLineNo">2840</span>   * @throws IOException<a name="line.2840"></a>
-<span class="sourceLineNo">2841</span>   */<a name="line.2841"></a>
-<span class="sourceLineNo">2842</span>  public void prepareDeleteTimestamps(Mutation mutation, Map&lt;byte[], List&lt;Cell&gt;&gt; familyMap,<a name="line.2842"></a>
-<span class="sourceLineNo">2843</span>      byte[] byteNow) throws IOException {<a name="line.2843"></a>
-<span class="sourceLineNo">2844</span>    for (Map.Entry&lt;byte[], List&lt;Cell&gt;&gt; e : familyMap.entrySet()) {<a name="line.2844"></a>
-<span class="sourceLineNo">2845</span><a name="line.2845"></a>
-<span class="sourceLineNo">2846</span>      byte[] family = e.getKey();<a name="line.2846"></a>
-<span class="sourceLineNo">2847</span>      List&lt;Cell&gt; cells = e.getValue();<a name="line.2847"></a>
-<span class="sourceLineNo">2848</span>      assert cells instanceof RandomAccess;<a name="line.2848"></a>
-<span class="sourceLineNo">2849</span><a name="line.2849"></a>
-<span class="sourceLineNo">2850</span>      Map&lt;byte[], Integer&gt; kvCount = new TreeMap&lt;&gt;(Bytes.BYTES_COMPARATOR);<a name="line.2850"></a>
-<span class="sourceLineNo">2851</span>      int listSize = cells.size();<a name="line.2851"></a>
-<span class="sourceLineNo">2852</span>      for (int i=0; i &lt; listSize; i++) {<a name="line.2852"></a>
-<span class="sourceLineNo">2853</span>        Cell cell = cells.get(i);<a name="line.2853"></a>
-<span class="sourceLineNo">2854</span>        //  Check if time is LATEST, change to time of most recent addition if so<a name="line.2854"></a>
-<span class="sourceLineNo">2855</span>        //  This is expensive.<a name="line.2855"></a>
-<span class="sourceLineNo">2856</span>        if (cell.getTimestamp() == HConstants.LATEST_TIMESTAMP<a name="line.2856"></a>
-<span class="sourceLineNo">2857</span>            &amp;&amp; PrivateCellUtil.isDeleteType(cell)) {<a name="line.2857"></a>
-<span class="sourceLineNo">2858</span>          byte[] qual = CellUtil.cloneQualifier(cell);<a name="line.2858"></a>
-<span class="sourceLineNo">2859</span><a name="line.2859"></a>
-<span class="sourceLineNo">2860</span>          Integer count = kvCount.get(qual);<a name="line.2860"></a>
-<span class="sourceLineNo">2861</span>          if (count == null) {<a name="line.2861"></a>
-<span class="sourceLineNo">2862</span>            kvCount.put(qual, 1);<a name="line.2862"></a>
-<span class="sourceLineNo">2863</span>          } else {<a name="line.2863"></a>
-<span class="sourceLineNo">2864</span>            kvCount.put(qual, count + 1);<a name="line.2864"></a>
-<span class="sourceLineNo">2865</span>          }<a name="line.2865"></a>
-<span class="sourceLineNo">2866</span>          count = kvCount.get(qual);<a name="line.2866"></a>
-<span class="sourceLineNo">2867</span><a name="line.2867"></a>
-<span class="sourceLineNo">2868</span>          Get get = new Get(CellUtil.cloneRow(cell));<a name="line.2868"></a>
-<span class="sourceLineNo">2869</span>          get.setMaxVersions(count);<a name="line.2869"></a>
-<span class="sourceLineNo">2870</span>          get.addColumn(family, qual);<a name="line.2870"></a>
-<span class="sourceLineNo">2871</span>          if (coprocessorHost != null) {<a name="line.2871"></a>
-<span class="sourceLineNo">2872</span>            if (!coprocessorHost.prePrepareTimeStampForDeleteVersion(mutation, cell,<a name="line.2872"></a>
-<span class="sourceLineNo">2873</span>                byteNow, get)) {<a name="line.2873"></a>
-<span class="sourceLineNo">2874</span>              updateDeleteLatestVersionTimeStamp(cell, get, count, byteNow);<a name="line.2874"></a>
-<span class="sourceLineNo">2875</span>            }<a name="line.2875"></a>
-<span class="sourceLineNo">2876</span>          } else {<a name="line.2876"></a>
-<span class="sourceLineNo">2877</span>            updateDeleteLatestVersionTimeStamp(cell, get, count, byteNow);<a name="line.2877"></a>
-<span class="sourceLineNo">2878</span>          }<a name="line.2878"></a>
-<span class="sourceLineNo">2879</span>        } else {<a name="line.2879"></a>
-<span class="sourceLineNo">2880</span>          PrivateCellUtil.updateLatestStamp(cell, byteNow, 0);<a name="line.2880"></a>
-<span class="sourceLineNo">2881</span>        }<a name="line.2881"></a>
-<span class="sourceLineNo">2882</span>      }<a name="line.2882"></a>
-<span class="sourceLineNo">2883</span>    }<a name="line.2883"></a>
-<span class="sourceLineNo">2884</span>  }<a name="line.2884"></a>
-<span class="sourceLineNo">2885</span><a name="line.2885"></a>
-<span class="sourceLineNo">2886</span>  void updateDeleteLatestVersionTimeStamp(Cell cell, Get get, int count, byte[] byteNow)<a name="line.2886"></a>
-<span class="sourceLineNo">2887</span>      throws IOException {<a name="line.2887"></a>
-<span class="sourceLineNo">2888</span>    List&lt;Cell&gt; result = get(get, false);<a name="line.2888"></a>
-<span class="sourceLineNo">2889</span><a name="line.2889"></a>
-<span class="sourceLineNo">2890</span>    if (result.size() &lt; count) {<a name="line.2890"></a>
-<span class="sourceLineNo">2891</span>      // Nothing to delete<a name="line.2891"></a>
-<span class="sourceLineNo">2892</span>      PrivateCellUtil.updateLatestStamp(cell, byteNow, 0);<a name="line.2892"></a>
-<span class="sourceLineNo">2893</span>      return;<a name="line.2893"></a>
-<span class="sourceLineNo">2894</span>    }<a name="line.2894"></a>
-<span class="sourceLineNo">2895</span>    if (result.size() &gt; count) {<a name="line.2895"></a>
-<span class="sourceLineNo">2896</span>      throw new RuntimeException("Unexpected size: " + result.size());<a name="line.2896"></a>
-<span class="sourceLineNo">2897</span>    }<a name="line.2897"></a>
-<span class="sourceLineNo">2898</span>    Cell getCell = result.get(count - 1);<a name="line.2898"></a>
-<span class="sourceLineNo">2899</span>    PrivateCellUtil.setTimestamp(cell, getCell.getTimestamp());<a name="line.2899"></a>
-<span class="sourceLineNo">2900</span>  }<a name="line.2900"></a>
-<span class="sourceLineNo">2901</span><a name="line.2901"></a>
-<span class="sourceLineNo">2902</span>  @Override<a name="line.2902"></a>
-<span class="sourceLineNo">2903</span>  public void put(Put put) throws IOException {<a name="line.2903"></a>
-<span class="sourceLineNo">2904</span>    checkReadOnly();<a name="line.2904"></a>
-<span class="sourceLineNo">2905</span><a name="line.2905"></a>
-<span class="sourceLineNo">2906</span>    // Do a rough check that we have resources to accept a write.  The check is<a name="line.2906"></a>
-<span class="sourceLineNo">2907</span>    // 'rough' in that between the resource check and the call to obtain a<a name="line.2907"></a>
-<span class="sourceLineNo">2908</span>    // read lock, resources may run out.  For now, the thought is that this<a name="line.2908"></a>
-<span class="sourceLineNo">2909</span>    // will be extremely rare; we'll deal with it when it happens.<a name="line.2909"></a>
-<span class="sourceLineNo">2910</span>    checkResources();<a name="line.2910"></a>
-<span class="sourceLineNo">2911</span>    startRegionOperation(Operation.PUT);<a name="line.2911"></a>
-<span class="sourceLineNo">2912</span>    try {<a name="line.2912"></a>
-<span class="sourceLineNo">2913</span>      // All edits for the given row (across all column families) must happen atomically.<a name="line.2913"></a>
-<span class="sourceLineNo">2914</span>      doBatchMutate(put);<a name="line.2914"></a>
-<span class="sourceLineNo">2915</span>    } finally {<a name="line.2915"></a>
-<span class="sourceLineNo">2916</span>      closeRegionOperation(Operation.PUT);<a name="line.2916"></a>
-<span class="sourceLineNo">2917</span>    }<a name="line.2917"></a>
-<span class="sourceLineNo">2918</span>  }<a name="line.2918"></a>
-<span class="sourceLineNo">2919</span><a name="line.2919"></a>
-<span class="sourceLineNo">2920</span>  /**<a name="line.2920"></a>
-<span class="sourceLineNo">2921</span>   * Class that tracks the progress of a batch operations, accumulating status codes and tracking<a name="line.2921"></a>
-<span class="sourceLineNo">2922</span>   * the index at which processing is proceeding. These batch operations may get split into<a name="line.2922"></a>
-<span class="sourceLineNo">2923</span>   * mini-batches for processing.<a name="line.2923"></a>
-<span class="sourceLineNo">2924</span>   */<a name="line.2924"></a>
-<span class="sourceLineNo">2925</span>  private abstract static class BatchOperation&lt;T&gt; {<a name="line.2925"></a>
-<span class="sourceLineNo">2926</span>    protected final T[] operations;<a name="line.2926"></a>
-<span class="sourceLineNo">2927</span>    protected final OperationStatus[] retCodeDetails;<a name="line.2927"></a>
-<span class="sourceLineNo">2928</span>    protected final WALEdit[] walEditsFromCoprocessors;<a name="line.2928"></a>
-<span class="sourceLineNo">2929</span>    // reference family cell maps directly so coprocessors can mutate them if desired<a name="line.2929"></a>
-<span class="sourceLineNo">2930</span>    protected final Map&lt;byte[], List&lt;Cell&gt;&gt;[] familyCellMaps;<a name="line.2930"></a>
-<span class="sourceLineNo">2931</span><a name="line.2931"></a>
-<span class="sourceLineNo">2932</span>    protected final HRegion region;<a name="line.2932"></a>
-<span class="sourceLineNo">2933</span>    protected int nextIndexToProcess = 0;<a name="line.2933"></a>
-<span class="sourceLineNo">2934</span>    protected final ObservedExceptionsInBatch observedExceptions;<a name="line.2934"></a>
-<span class="sourceLineNo">2935</span>    //Durability of the batch (highest durability of all operations)<a name="line.2935"></a>
-<span class="sourceLineNo">2936</span>    protected Durability durability;<a name="line.2936"></a>
-<span class="sourceLineNo">2937</span>    protected boolean atomic = false;<a name="line.2937"></a>
-<span class="sourceLineNo">2938</span><a name="line.2938"></a>
-<span class="sourceLineNo">2939</span>    public BatchOperation(final HRegion region, T[] operations) {<a name="line.2939"></a>
-<span class="sourceLineNo">2940</span>      this.operations = operations;<a name="line.2940"></a>
-<span class="sourceLineNo">2941</span>      this.retCodeDetails = new OperationStatus[operations.length];<a name="line.2941"></a>
-<span class="sourceLineNo">2942</span>      Arrays.fill(this.retCodeDetails, OperationStatus.NOT_RUN);<a name="line.2942"></a>
-<span class="sourceLineNo">2943</span>      this.walEditsFromCoprocessors = new WALEdit[operations.length];<a name="line.2943"></a>
-<span class="sourceLineNo">2944</span>      familyCellMaps = new Map[operations.length];<a name="line.2944"></a>
-<span class="sourceLineNo">2945</span><a name="line.2945"></a>
-<span class="sourceLineNo">2946</span>      this.region = region;<a name="line.2946"></a>
-<span class="sourceLineNo">2947</span>      observedExceptions = new ObservedExceptionsInBatch();<a name="line.2947"></a>
-<span class="sourceLineNo">2948</span>      durability = Durability.USE_DEFAULT;<a name="line.2948"></a>
-<span class="sourceLineNo">2949</span>    }<a name="line.2949"></a>
-<span class="sourceLineNo">2950</span><a name="line.2950"></a>
-<span class="sourceLineNo">2951</span>    /**<a name="line.2951"></a>
-<span class="sourceLineNo">2952</span>     * Visitor interface for batch operations<a name="line.2952"></a>
-<span class="sourceLineNo">2953</span>     */<a name="line.2953"></a>
-<span class="sourceLineNo">2954</span>    @FunctionalInterface<a name="line.2954"></a>
-<span class="sourceLineNo">2955</span>    public interface Visitor {<a name="line.2955"></a>
-<span class="sourceLineNo">2956</span>      /**<a name="line.2956"></a>
-<span class="sourceLineNo">2957</span>       * @param index operation index<a name="line.2957"></a>
-<span class="sourceLineNo">2958</span>       * @return If true continue visiting remaining entries, break otherwise<a name="line.2958"></a>
-<span class="sourceLineNo">2959</span>       */<a name="line.2959"></a>
-<span class="sourceLineNo">2960</span>      boolean visit(int index) throws IOException;<a name="line.2960"></a>
-<span class="sourceLineNo">2961</span>    }<a name="line.2961"></a>
-<span class="sourceLineNo">2962</span><a name="line.2962"></a>
-<span class="sourceLineNo">2963</span>    /**<a name="line.2963"></a>
-<span class="sourceLineNo">2964</span>     * Helper method for visiting pending/ all batch operations<a name="line.2964"></a>
-<span class="sourceLineNo">2965</span>     */<a name="line.2965"></a>
-<span class="sourceLineNo">2966</span>    public void visitBatchOperations(boolean pendingOnly, int lastIndexExclusive, Visitor visitor)<a name="line.2966"></a>
-<span class="sourceLineNo">2967</span>        throws IOException {<a name="line.2967"></a>
-<span class="sourceLineNo">2968</span>      assert lastIndexExclusive &lt;= this.size();<a name="line.2968"></a>
-<span class="sourceLineNo">2969</span>      for (int i = nextIndexToProcess; i &lt; lastIndexExclusive; i++) {<a name="line.2969"></a>
-<span class="sourceLineNo">2970</span>        if (!pendingOnly || isOperationPending(i)) {<a name="line.2970"></a>
-<span class="sourceLineNo">2971</span>          if (!visitor.visit(i)) {<a name="line.2971"></a>
-<span class="sourceLineNo">2972</span>            break;<a name="line.2972"></a>
-<span class="sourceLineNo">2973</span>          }<a name="line.2973"></a>
-<span class="sourceLineNo">2974</span>        }<a name="line.2974"></a>
-<span class="sourceLineNo">2975</span>      }<a name="line.2975"></a>
-<span class="sourceLineNo">2976</span>    }<a name="line.2976"></a>
-<span class="sourceLineNo">2977</span><a name="line.2977"></a>
-<span class="sourceLineNo">2978</span>    public abstract Mutation getMutation(int index);<a name="line.2978"></a>
-<span class="sourceLineNo">2979</span>    public abstract long getNonceGroup(int index);<a name="line.2979"></a>
-<span class="sourceLineNo">2980</span>    public abstract long getNonce(int index);<a name="line.2980"></a>
-<span class="sourceLineNo">2981</span>    /** This method is potentially expensive and useful mostly for non-replay CP path. */<a name="line.2981"></a>
-<span class="sourceLineNo">2982</span>    public abstract Mutation[] getMutationsForCoprocs();<a name="line.2982"></a>
-<span class="sourceLineNo">2983</span>    public abstract boolean isInReplay();<a name="line.2983"></a>
-<span class="sourceLineNo">2984</span>    public abstract long getOrigLogSeqNum();<a name="line.2984"></a>
-<span class="sourceLineNo">2985</span>    public abstract void startRegionOperation() throws IOException;<a name="line.2985"></a>
-<span class="sourceLineNo">2986</span>    public abstract void closeRegionOperation() throws IOException;<a name="line.2986"></a>
-<span class="sourceLineNo">2987</span><a name="line.2987"></a>
-<span class="sourceLineNo">2988</span>    /**<a name="line.2988"></a>
-<span class="sourceLineNo">2989</span>     * Validates each mutation and prepares a batch for write. If necessary (non-replay case), runs<a name="line.2989"></a>
-<span class="sourceLineNo">2990</span>     * CP prePut()/ preDelete() hooks for all mutations in a batch. This is intended to operate on<a name="line.2990"></a>
-<span class="sourceLineNo">2991</span>     * entire batch and will be called from outside of class to check and prepare batch. This can<a name="line.2991"></a>
-<span class="sourceLineNo">2992</span>     * be implemented by calling helper method {@link #checkAndPrepareMutation(int, long)} in a<a name="line.2992"></a>
-<span class="sourceLineNo">2993</span>     * 'for' loop over mutations.<a name="line.2993"></a>
-<span class="sourceLineNo">2994</span>     */<a name="line.2994"></a>
-<span class="sourceLineNo">2995</span>    public abstract void checkAndPrepare() throws IOException;<a name="line.2995"></a>
-<span class="sourceLineNo">2996</span><a name="line.2996"></a>
-<span class="sourceLineNo">2997</span>    /**<a name="line.2997"></a>
-<span class="sourceLineNo">2998</span>     * Implement any Put request specific check and prepare logic here. Please refer to<a name="line.2998"></a>
-<span class="sourceLineNo">2999</span>     * {@link #checkAndPrepareMutation(Mutation, long)} for how its used.<a name="line.2999"></a>
-<span class="sourceLineNo">3000</span>     */<a name="line.3000"></a>
-<span class="sourceLineNo">3001</span>    protected abstract void checkAndPreparePut(final Put p) throws IOException;<a name="line.3001"></a>
-<span class="sourceLineNo">3002</span><a name="line.3002"></a>
-<span class="sourceLineNo">3003</span>    /**<a name="line.3003"></a>
-<span class="sourceLineNo">3004</span>     *  If necessary, calls preBatchMutate() CP hook for a mini-batch and updates metrics, cell<a name="line.3004"></a>
-<span class="sourceLineNo">3005</span>     *  count, tags and timestamp for all cells of all operations in a mini-batch.<a name="line.3005"></a>
-<span class="sourceLineNo">3006</span>     */<a name="line.3006"></a>
-<span class="sourceLineNo">3007</span>    public abstract void prepareMiniBatchOperations(MiniBatchOperationInProgress&lt;Mutation&gt;<a name="line.3007"></a>
-<span class="sourceLineNo">3008</span>        miniBatchOp, long timestamp, final List&lt;RowLock&gt; acquiredRowLocks) throws IOException;<a name="line.3008"></a>
-<span class="sourceLineNo">3009</span><a name="line.3009"></a>
-<span class="sourceLineNo">3010</span>    /**<a name="line.3010"></a>
-<span class="sourceLineNo">3011</span>     * Write mini-batch operations to MemStore<a name="line.3011"></a>
-<span class="sourceLineNo">3012</span>     */<a name="line.3012"></a>
-<span class="sourceLineNo">3013</span>    public abstract WriteEntry writeMiniBatchOperationsToMemStore(<a name="line.3013"></a>
-<span class="sourceLineNo">3014</span>        final MiniBatchOperationInProgress&lt;Mutation&gt; miniBatchOp, final WriteEntry writeEntry)<a name="line.3014"></a>
-<span class="sourceLineNo">3015</span>        throws IOException;<a name="line.3015"></a>
-<span class="sourceLineNo">3016</span><a name="line.3016"></a>
-<span class="sourceLineNo">3017</span>    protected void writeMiniBatchOperationsToMemStore(<a name="line.3017"></a>
-<span class="sourceLineNo">3018</span>        final MiniBatchOperationInProgress&lt;Mutation&gt; miniBatchOp, final long writeNumber)<a name="line.3018"></a>
-<span class="sourceLineNo">3019</span>        throws IOException {<a name="line.3019"></a>
-<span class="sourceLineNo">3020</span>      MemStoreSizing memStoreAccounting = new MemStoreSizing();<a name="line.3020"></a>
-<span class="sourceLineNo">3021</span>      visitBatchOperations(true, miniBatchOp.getLastIndexExclusive(), (int index) -&gt; {<a name="line.3021"></a>
-<span class="sourceLineNo">3022</span>        // We need to update the sequence id for following reasons.<a name="line.3022"></a>
-<span class="sourceLineNo">3023</span>        // 1) If the op is in replay mode, FSWALEntry#stampRegionSequenceId won't stamp sequence id.<a name="line.3023"></a>
-<span class="sourceLineNo">3024</span>        // 2) If no WAL, FSWALEntry won't be used<a name="line.3024"></a>
-<span class="sourceLineNo">3025</span>        // we use durability of the original mutation for the mutation passed by CP.<a name="line.3025"></a>
-<span class="sourceLineNo">3026</span>        if (isInReplay() || getMutation(index).getDurability() == Durability.SKIP_WAL) {<a name="line.3026"></a>
-<span class="sourceLineNo">3027</span>          region.updateSequenceId(familyCellMaps[index].values(), writeNumber);<a name="line.3027"></a>
-<span class="sourceLineNo">3028</span>        }<a name="line.3028"></a>
-<span class="sourceLineNo">3029</span>        applyFamilyMapToMemStore(familyCellMaps[index], memStoreAccounting);<a name="line.3029"></a>
-<span class="sourceLineNo">3030</span>        return true;<a name="line.3030"></a>
-<span class="sourceLineNo">3031</span>      });<a name="line.3031"></a>
-<span class="sourceLineNo">3032</span>      // update memStore size<a name="line.3032"></a>
-<span class="sourceLineNo">3033</span>      region.addAndGetMemStoreSize(memStoreAccounting);<a name="line.3033"></a>
-<span class="sourceLineNo">3034</span>    }<a name="line.3034"></a>
-<span class="sourceLineNo">3035</span><a name="line.3035"></a>
-<span class="sourceLineNo">3036</span>    public boolean isDone() {<a name="line.3036"></a>
-<span class="sourceLineNo">3037</span>      return nextIndexToProcess == operations.length;<a name="line.3037"></a>
-<span class="sourceLineNo">3038</span>    }<a name="line.3038"></a>
-<span class="sourceLineNo">3039</span><a name="line.3039"></a>
-<span class="sourceLineNo">3040</span>    public int size() {<a name="line.3040"></a>
-<span class="sourceLineNo">3041</span>      return operations.length;<a name="line.3041"></a>
-<span class="sourceLineNo">3042</span>    }<a name="line.3042"></a>
-<span class="sourceLineNo">3043</span><a name="line.3043"></a>
-<span class="sourceLineNo">3044</span>    public boolean isOperationPending(int index) {<a name="line.3044"></a>
-<span class="sourceLineNo">3045</span>      return retCodeDetails[index].getOperationStatusCode() == OperationStatusCode.NOT_RUN;<a name="line.3045"></a>
-<span class="sourceLineNo">3046</span>    }<a name="line.3046"></a>
-<span class="sourceLineNo">3047</span><a name="line.3047"></a>
-<span class="sourceLineNo">3048</span>    public List&lt;UUID&gt; getClusterIds() {<a name="line.3048"></a>
-<span class="sourceLineNo">3049</span>      assert size() != 0;<a name="line.3049"></a>
-<span class="sourceLineNo">3050</span>      return getMutation(0).getClusterIds();<a name="line.3050"></a>
-<span class="sourceLineNo">3051</span>    }<a name="line.3051"></a>
-<span class="sourceLineNo">3052</span><a name="line.3052"></a>
-<span class="sourceLineNo">3053</span>    boolean isAtomic() {<a name="line.3053"></a>
-<span class="sourceLineNo">3054</span>      return atomic;<a name="line.3054"></a>
-<span class="sourceLineNo">3055</span>    }<a name="line.3055"></a>
-<span class="sourceLineNo">3056</span><a name="line.3056"></a>
-<span class="sourceLineNo">3057</span>    /**<a name="line.3057"></a>
-<span class="sourceLineNo">3058</span>     * Helper method that checks and prepares only one mutation. This can be used to implement<a name="line.3058"></a>
-<span class="sourceLineNo">3059</span>     * {@link #checkAndPrepare()} for entire Batch.<a name="line.3059"></a>
-<span class="sourceLineNo">3060</span>     * NOTE: As CP prePut()/ preDelete() hooks may modify mutations, this method should be called<a name="line.3060"></a>
-<span class="sourceLineNo">3061</span>     * after prePut()/ preDelete() CP hooks are run for the mutation<a name="line.3061"></a>
-<span class="sourceLineNo">3062</span>     */<a name="line.3062"></a>
-<span class="sourceLineNo">3063</span>    protected void checkAndPrepareMutation(Mutation mutation, final long timestamp)<a name="line.3063"></a>
-<span class="sourceLineNo">3064</span>        throws IOException {<a name="line.3064"></a>
-<span class="sourceLineNo">3065</span>      region.checkRow(mutation.getRow(), "batchMutate");<a name="line.3065"></a>
-<span class="sourceLineNo">3066</span>      if (mutation instanceof Put) {<a name="line.3066"></a>
-<span class="sourceLineNo">3067</span>        // Check the families in the put. If bad, skip this one.<a name="line.3067"></a>
-<span class="sourceLineNo">3068</span>        checkAndPreparePut((Put) mutation);<a name="line.3068"></a>
-<span class="sourceLineNo">3069</span>        region.checkTimestamps(mutation.getFamilyCellMap(), timestamp);<a name="line.3069"></a>
-<span class="sourceLineNo">3070</span>      } else {<a name="line.3070"></a>
-<span class="sourceLineNo">3071</span>        region.prepareDelete((Delete) mutation);<a name="line.3071"></a>
-<span class="sourceLineNo">3072</span>      }<a name="line.3072"></a>
-<span class="sourceLineNo">3073</span>    }<a name="line.3073"></a>
-<span class="sourceLineNo">3074</span><a name="line.3074"></a>
-<span class="sourceLineNo">3075</span>    protected void checkAndPrepareMutation(int index, long timestamp) throws IOException {<a name="line.3075"></a>
-<span class="sourceLineNo">3076</span>      Mutation mutation = getMutation(index);<a name="line.3076"></a>
-<span class="sourceLineNo">3077</span>      try {<a name="line.3077"></a>
-<span class="sourceLineNo">3078</span>        this.checkAndPrepareMutation(mutation, timestamp);<a name="line.3078"></a>
-<span class="sourceLineNo">3079</span><a name="line.3079"></a>
-<span class="sourceLineNo">3080</span>        // store the family map reference to allow for mutations<a name="line.3080"></a>
-<span class="sourceLineNo">3081</span>        familyCellMaps[index] = mutation.getFamilyCellMap();<a name="line.3081"></a>
-<span class="sourceLineNo">3082</span>        // store durability for the batch (highest durability of all operations in the batch)<a name="line.3082"></a>
-<span class="sourceLineNo">3083</span>        Durability tmpDur = region.getEffectiveDurability(mutation.getDurability());<a name="line.3083"></a>
-<span class="sourceLineNo">3084</span>        if (tmpDur.ordinal() &gt; durability.ordinal()) {<a name="line.3084"></a>
-<span class="sourceLineNo">3085</span>          durability = tmpDur;<a name="line.3085"></a>
-<span class="sourceLineNo">3086</span>        }<a name="line.3086"></a>
-<span class="sourceLineNo">3087</span>      } catch (NoSuchColumnFamilyException nscfe) {<a name="line.3087"></a>
-<span class="sourceLineNo">3088</span>        final String msg = "No such column family in batch mutation. ";<a name="line.3088"></a>
-<span class="sourceLineNo">3089</span>        if (observedExceptions.hasSeenNoSuchFamily()) {<a name="line.3089"></a>
-<span class="sourceLineNo">3090</span>          LOG.warn(msg + nscfe.getMessage());<a name="line.3090"></a>
-<span class="sourceLineNo">3091</span>        } else {<a name="line.3091"></a>
-<span class="sourceLineNo">3092</span>          LOG.warn(msg, nscfe);<a name="line.3092"></a>
-<span class="sourceLineNo">3093</span>          observedExceptions.sawNoSuchFamily();<a name="line.3093"></a>
-<span class="sourceLineNo">3094</span>        }<a name="line.3094"></a>
-<span class="sourceLineNo">3095</span>        retCodeDetails[index] = new OperationStatus(<a name="line.3095"></a>
-<span class="sourceLineNo">3096</span>            OperationStatusCode.BAD_FAMILY, nscfe.getMessage());<a name="line.3096"></a>
-<span class="sourceLineNo">3097</span>        if (isAtomic()) { // fail, atomic means all or none<a name="line.3097"></a>
-<span class="sourceLineNo">3098</span>          throw nscfe;<a name="line.3098"></a>
-<span class="sourceLineNo">3099</span>        }<a name="line.3099"></a>
-<span class="sourceLineNo">3100</span>      } catch (FailedSanityCheckException fsce) {<a name="line.3100"></a>
-<span class="sourceLineNo">3101</span>        final String msg = "Batch Mutation did not pass sanity check. ";<a name="line.3101"></a>
-<span class="sourceLineNo">3102</span>        if (observedExceptions.hasSeenFailedSanityCheck()) {<a name="line.3102"></a>
-<span class="sourceLineNo">3103</span>          LOG.warn(msg + fsce.getMessage());<a name="line.3103"></a>
-<span class="sourceLineNo">3104</span>        } else {<a name="line.3104"></a>
-<span class="sourceLineNo">3105</span>          LOG.warn(msg, fsce);<a name="line.3105"></a>
-<span class="sourceLineNo">3106</span>          observedExceptions.sawFailedSanityCheck();<a name="line.3106"></a>
-<span class="sourceLineNo">3107</span>        }<a name="line.3107"></a>
-<span class="sourceLineNo">3108</span>        retCodeDetails[index] = new OperationStatus(<a name="line.3108"></a>
-<span class="sourceLineNo">3109</span>            OperationStatusCode.SANITY_CHECK_FAILURE, fsce.getMessage());<a name="line.3109"></a>
-<span class="sourceLineNo">3110</span>        if (isAtomic()) {<a name="line.3110"></a>
-<span class="sourceLineNo">3111</span>          throw fsce;<a name="line.3111"></a>
-<span class="sourceLineNo">3112</span>        }<a name="line.3112"></a>
-<span class="sourceLineNo">3113</span>      } catch (WrongRegionException we) {<a name="line.3113"></a>
-<span class="sourceLineNo">3114</span>        final String msg = "Batch mutation had a row that does not belong to this region. ";<a name="line.3114"></a>
-<span class="sourceLineNo">3115</span>        if (observedExceptions.hasSeenWrongRegion()) {<a name="line.3115"></a>
-<span class="sourceLineNo">3116</span>          LOG.warn(msg + we.getMessage());<a name="line.3116"></a>
-<span class="sourceLineNo">3117</span>        } else {<a name="line.3117"></a>
-<span class="sourceLineNo">3118</span>          LOG.warn(msg, we);<a name="line.3118"></a>
-<span class="sourceLineNo">3119</span>          observedExceptions.sawWrongRegion();<a name="line.3119"></a>
-<span class="sourceLineNo">3120</span>        }<a name="line.3120"></a>
-<span class="sourceLineNo">3121</span>        retCodeDetails[index] = new OperationStatus(<a name="line.3121"></a>
-<span class="sourceLineNo">3122</span>            OperationStatusCode.SANITY_CHECK_FAILURE, we.getMessage());<a name="line.3122"></a>
-<span class="sourceLineNo">3123</span>        if (isAtomic()) {<a name="line.3123"></a>
-<span class="sourceLineNo">3124</span>          throw we;<a name="line.3124"></a>
-<span class="sourceLineNo">3125</span>        }<a name="line.3125"></a>
-<span class="sourceLineNo">3126</span>      }<a name="line.3126"></a>
-<span class="sourceLineNo">3127</span>    }<a name="line.3127"></a>
-<span class="sourceLineNo">3128</span><a name="line.3128"></a>
-<span class="sourceLineNo">3129</span>    /**<a name="line.3129"></a>
-<span class="sourceLineNo">3130</span>     * Creates Mini-batch of all operations [nextIndexToProcess, lastIndexExclusive) for which<a name="line.3130"></a>
-<span class="sourceLineNo">3131</span>     * a row lock can be acquired. All mutations with locked rows are considered to be<a name="line.3131"></a>
-<span class="sourceLineNo">3132</span>     * In-progress operations and hence the name {@link MiniBatchOperationInProgress}. Mini batch<a name="line.3132"></a>
-<span class="sourceLineNo">3133</span>     * is window over {@link BatchOperation} and contains contiguous pending operations.<a name="line.3133"></a>
-<span class="sourceLineNo">3134</span>     *<a name="line.3134"></a>
-<span class="sourceLineNo">3135</span>     * @param acquiredRowLocks keeps track of rowLocks acquired.<a name="line.3135"></a>
-<span class="sourceLineNo">3136</span>     */<a name="line.3136"></a>
-<span class="sourceLineNo">3137</span>    public MiniBatchOperationInProgress&lt;Mutation&gt; lockRowsAndBuildMiniBatch(<a name="line.3137"></a>
-<span class="sourceLineNo">3138</span>        List&lt;RowLock&gt; acquiredRowLocks) throws IOException {<a name="line.3138"></a>
-<span class="sourceLineNo">3139</span>      int readyToWriteCount = 0;<a name="line.3139"></a>
-<span class="sourceLineNo">3140</span>      int lastIndexExclusive = 0;<a name="line.3140"></a>
-<span class="sourceLineNo">3141</span>      for (; lastIndexExclusive &lt; size(); lastIndexExclusive++) {<a name="line.3141"></a>
-<span class="sourceLineNo">3142</span>        if (!isOperationPending(lastIndexExclusive)) {<a name="line.3142"></a>
-<span class="sourceLineNo">3143</span>          continue;<a name="line.3143"></a>
-<span class="sourceLineNo">3144</span>        }<a name="line.3144"></a>
-<span class="sourceLineNo">3145</span>        Mutation mutation = getMutation(lastIndexExclusive);<a name="line.3145"></a>
-<span class="sourceLineNo">3146</span>        // If we haven't got any rows in our batch, we should block to get the next one.<a name="line.3146"></a>
-<span class="sourceLineNo">3147</span>        RowLock rowLock = null;<a name="line.3147"></a>
-<span class="sourceLineNo">3148</span>        try {<a name="line.3148"></a>
-<span class="sourceLineNo">3149</span>          // if atomic then get exclusive lock, else shared lock<a name="line.3149"></a>
-<span class="sourceLineNo">3150</span>          rowLock = region.getRowLockInternal(mutation.getRow(), !isAtomic());<a name="line.3150"></a>
-<span class="sourceLineNo">3151</span>        } catch (TimeoutIOException e) {<a name="line.3151"></a>
-<span class="sourceLineNo">3152</span>          // We will retry when other exceptions, but we should stop if we timeout .<a name="line.3152"></a>
-<span class="sourceLineNo">3153</span>          throw e;<a name="line.3153"></a>
-<span class="sourceLineNo">3154</span>        } catch (IOException ioe) {<a name="line.3154"></a>
-<span class="sourceLineNo">3155</span>          LOG.warn("Failed getting lock, row=" + Bytes.toStringBinary(mutation.getRow()), ioe);<a name="line.3155"></a>
-<span class="sourceLineNo">3156</span>          if (isAtomic()) { // fail, atomic means all or none<a name="line.3156"></a>
-<span class="sourceLineNo">3157</span>            throw ioe;<a name="line.3157"></a>
-<span class="sourceLineNo">3158</span>          }<a name="line.3158"></a>
-<span class="sourceLineNo">3159</span>        }<a name="line.3159"></a>
-<span class="sourceLineNo">3160</span>        if (rowLock == null) {<a name="line.3160"></a>
-<span class="sourceLineNo">3161</span>          // We failed to grab another lock<a name="line.3161"></a>
-<span class="sourceLineNo">3162</span>          if (isAtomic()) {<a name="line.3162"></a>
-<span class="sourceLineNo">3163</span>            throw new IOException("Can't apply all operations atomically!");<a name="line.3163"></a>
-<span class="sourceLineNo">3164</span>          }<a name="line.3164"></a>
-<span class="sourceLineNo">3165</span>          break; // Stop acquiring more rows for this batch<a name="line.3165"></a>
-<span class="sourceLineNo">3166</span>        } else {<a name="line.3166"></a>
-<span class="sourceLineNo">3167</span>          acquiredRowLocks.add(rowLock);<a name="line.3167"></a>
-<span class="sourceLineNo">3168</span>        }<a name="line.3168"></a>
-<span class="sourceLineNo">3169</span>        readyToWriteCount++;<a name="line.3169"></a>
-<span class="sourceLineNo">3170</span>      }<a name="line.3170"></a>
-<span class="sourceLineNo">3171</span>      return createMiniBatch(lastIndexExclusive, readyToWriteCount);<a name="line.3171"></a>
-<span class="sourceLineNo">3172</span>    }<a name="line.3172"></a>
-<span class="sourceLineNo">3173</span><a name="line.3173"></a>
-<span class="sourceLineNo">3174</span>    protected MiniBatchOperationInProgress&lt;Mutation&gt; createMiniBatch(final int lastIndexExclusive,<a name="line.3174"></a>
-<span class="sourceLineNo">3175</span>        final int readyToWriteCount) {<a name="line.3175"></a>
-<span class="sourceLineNo">3176</span>      return new MiniBatchOperationInProgress&lt;&gt;(getMutationsForCoprocs(), retCodeDetails,<a name="line.3176"></a>
-<span class="sourceLineNo">3177</span>          walEditsFromCoprocessors, nextIndexToProcess, lastIndexExclusive, readyToWriteCount);<a name="line.3177"></a>
-<span class="sourceLineNo">3178</span>    }<a name="line.3178"></a>
-<span class="sourceLineNo">3179</span><a name="line.3179"></a>
-<span class="sourceLineNo">3180</span>    /**<a name="line.3180"></a>
-<span class="sourceLineNo">3181</span>     * Builds separate WALEdit per nonce by applying input mutations. If WALEdits from CP are<a name="line.3181"></a>
-<span class="sourceLineNo">3182</span>     * present, they are merged to result WALEdit.<a name="line.3182"></a>
-<span class="sourceLineNo">3183</span>     */<a name="line.3183"></a>
-<span class="sourceLineNo">3184</span>    public List&lt;Pair&lt;NonceKey, WALEdit&gt;&gt; buildWALEdits(<a name="line.3184"></a>
-<span class="sourceLineNo">3185</span>        final MiniBatchOperationInProgress&lt;Mutation&gt; miniBatchOp) throws IOException {<a name="line.3185"></a>
-<span class="sourceLineNo">3186</span>      List&lt;Pair&lt;NonceKey, WALEdit&gt;&gt; walEdits = new ArrayList&lt;&gt;();<a name="line.3186"></a>
-<span class="sourceLineNo">3187</span><a name="line.3187"></a>
-<span class="sourceLineNo">3188</span>      visitBatchOperations(true, nextIndexToProcess + miniBatchOp.size(), new Visitor() {<a name="line.3188"></a>
-<span class="sourceLineNo">3189</span>        private Pair&lt;NonceKey, WALEdit&gt; curWALEditForNonce;<a name="line.3189"></a>
-<span class="sourceLineNo">3190</span>        @Override<a name="line.3190"></a>
-<span class="sourceLineNo">3191</span>        public boolean visit(int index) throws IOException {<a name="line.3191"></a>
-<span class="sourceLineNo">3192</span>          Mutation m = getMutation(index);<a name="line.3192"></a>
-<span class="sourceLineNo">3193</span>          // we use durability of the original mutation for the mutation passed by CP.<a name="line.3193"></a>
-<span class="sourceLineNo">3194</span>          if (region.getEffectiveDurability(m.getDurability()) == Durability.SKIP_WAL) {<a name="line.3194"></a>
-<span class="sourceLineNo">3195</span>            region.recordMutationWithoutWal(m.getFamilyCellMap());<a name="line.3195"></a>
-<span class="sourceLineNo">3196</span>            return true;<a name="line.3196"></a>
-<span class="sourceLineNo">3197</span>          }<a name="line.3197"></a>
-<span class="sourceLineNo">3198</span><a name="line.3198"></a>
-<span class="sourceLineNo">3199</span>          // the batch may contain multiple nonce keys (replay case). If so, write WALEdit for each.<a name="line.3199"></a>
-<span class="sourceLineNo">3200</span>          // Given how nonce keys are originally written, these should be contiguous.<a name="line.3200"></a>
-<span class="sourceLineNo">3201</span>          // They don't have to be, it will still work, just write more WALEdits than needed.<a name="line.3201"></a>
-<span class="sourceLineNo">3202</span>          long nonceGroup = getNonceGroup(index);<a name="line.3202"></a>
-<span class="sourceLineNo">3203</span>          long nonce = getNonce(index);<a name="line.3203"></a>
-<span class="sourceLineNo">3204</span>          if (curWALEditForNonce == null ||<a name="line.3204"></a>
-<span class="sourceLineNo">3205</span>              curWALEditForNonce.getFirst().getNonceGroup() != nonceGroup ||<a name="line.3205"></a>
-<span class="sourceLineNo">3206</span>              curWALEditForNonce.getFirst().getNonce() != nonce) {<a name="line.3206"></a>
-<span class="sourceLineNo">3207</span>            curWALEditForNonce = new Pair&lt;&gt;(new NonceKey(nonceGroup, nonce),<a name="line.3207"></a>
-<span class="sourceLineNo">3208</span>                new WALEdit(miniBatchOp.getCellCount(), isInReplay()));<a name="line.3208"></a>
-<span class="sourceLineNo">3209</span>            walEdits.add(curWALEditForNonce);<a name="line.3209"></a>
-<span class="sourceLineNo">3210</span>          }<a name="line.3210"></a>
-<span class="sourceLineNo">3211</span>          WALEdit walEdit = curWALEditForNonce.getSecond();<a name="line.3211"></a>
-<span class="sourceLineNo">3212</span><a name="line.3212"></a>
-<span class="sourceLineNo">3213</span>          // Add WAL edits by CP<a name="line.3213"></a>
-<span class="sourceLineNo">3214</span>          WALEdit fromCP = walEditsFromCoprocessors[index];<a name="line.3214"></a>
-<span class="sourceLineNo">3215</span>          if (fromCP != null) {<a name="line.3215"></a>
-<span class="sourceLineNo">3216</span>            for (Cell cell : fromCP.getCells()) {<a name="line.3216"></a>
-<span class="sourceLineNo">3217</span>              walEdit.add(cell);<a name="line.3217"></a>
-<span class="sourceLineNo">3218</span>            }<a name="line.3218"></a>
-<span class="sourceLineNo">3219</span>          }<a name="line.3219"></a>
-<span class="sourceLineNo">3220</span>          addFamilyMapToWALEdit(familyCellMaps[index], walEdit);<a name="line.3220"></a>
-<span class="sourceLineNo">3221</span><a name="line.3221"></a>
-<span class="sourceLineNo">3222</span>          return true;<a name="line.3222"></a>
-<span class="sourceLineNo">3223</span>        }<a name="line.3223"></a>
-<span class="sourceLineNo">3224</span>      });<a name="line.3224"></a>
-<span class="sourceLineNo">3225</span>      return walEdits;<a name="line.3225"></a>
-<span class="sourceLineNo">3226</span>    }<a name="line.3226"></a>
-<span class="sourceLineNo">3227</span><a name="line.3227"></a>
-<span class="sourceLineNo">3228</span>    /**<a name="line.3228"></a>
-<span class="sourceLineNo">3229</span>     * This method completes mini-batch operations by calling postBatchMutate() CP hook (if<a name="line.3229"></a>
-<span class="sourceLineNo">3230</span>     * required) and completing mvcc.<a name="line.3230"></a>
-<span class="sourceLineNo">3231</span>     */<a name="line.3231"></a>
-<span class="sourceLineNo">3232</span>    public void completeMiniBatchOperations(<a name="line.3232"></a>
-<span class="sourceLineNo">3233</span>        final MiniBatchOperationInProgress&lt;Mutation&gt; miniBatchOp, final WriteEntry writeEntry)<a name="line.3233"></a>
-<span class="sourceLineNo">3234</span>        throws IOException {<a name="line.3234"></a>
-<span class="sourceLineNo">3235</span>      if (writeEntry != null) {<a name="line.3235"></a>
-<span class="sourceLineNo">3236</span>        region.mvcc.completeAndWait(writeEntry);<a name="line.3236"></a>
-<span class="sourceLineNo">3237</span>      }<a name="line.3237"></a>
-<span class="sourceLineNo">3238</span>    }<a name="line.3238"></a>
-<span class="sourceLineNo">3239</span><a name="line.3239"></a>
-<span class="sourceLineNo">3240</span>    public void doPostOpCleanupForMiniBatch(<a name="line.3240"></a>
-<span class="sourceLineNo">3241</span>        final MiniBatchOperationInProgress&lt;Mutation&gt; miniBatchOp, final WALEdit walEdit,<a name="line.3241"></a>
-<span class="sourceLineNo">3242</span>        boolean success) throws IOException {}<a name="line.3242"></a>
-<span class="sourceLineNo">3243</span><a name="line.3243"></a>
-<span class="sourceLineNo">3244</span>    /**<a name="line.3244"></a>
-<span class="sourceLineNo">3245</span>     * Atomically apply the given map of family-&gt;edits to the memstore.<a name="line.3245"></a>
-<span class="sourceLineNo">3246</span>     * This handles the consistency control on its own, but the caller<a name="line.3246"></a>
-<span class="sourceLineNo">3247</span>     * should already have locked updatesLock.readLock(). This also does<a name="line.3247"></a>
-<span class="sourceLineNo">3248</span>     * &lt;b&gt;not&lt;/b&gt; check the families for validity.<a name="line.3248"></a>
-<span class="sourceLineNo">3249</span>     *<a name="line.3249"></a>
-<span class="sourceLineNo">3250</span>     * @param familyMap Map of Cells by family<a name="line.3250"></a>
-<span class="sourceLineNo">3251</span>     */<a name="line.3251"></a>
-<span class="sourceLineNo">3252</span>    protected void applyFamilyMapToMemStore(Map&lt;byte[], List&lt;Cell&gt;&gt; familyMap,<a name="line.3252"></a>
-<span class="sourceLineNo">3253</span>        MemStoreSizing memstoreAccounting) throws IOException {<a name="line.3253"></a>
-<span class="sourceLineNo">3254</span>      for (Map.Entry&lt;byte[], List&lt;Cell&gt;&gt; e : familyMap.entrySet()) {<a name="line.3254"></a>
-<span class="sourceLineNo">3255</span>        byte[] family = e.getKey();<a name="line.3255"></a>
-<span class="sourceLineNo">3256</span>        List&lt;Cell&gt; cells = e.getValue();<a name="line.3256"></a>
-<span class="sourceLineNo">3257</span>        assert cells instanceof RandomAccess;<a name="line.3257"></a>
-<span class="sourceLineNo">3258</span>        region.applyToMemStore(region.getStore(family), cells, false, memstoreAccounting);<a name="line.3258"></a>
-<span class="sourceLineNo">3259</span>      }<a name="line.3259"></a>
-<span class="sourceLineNo">3260</span>    }<a name="line.3260"></a>
-<span class="sourceLineNo">3261</span><a name="line.3261"></a>
-<span class="sourceLineNo">3262</span>    /**<a name="line.3262"></a>
-<span class="sourceLineNo">3263</span>     * Append the given map of family-&gt;edits to a WALEdit data structure.<a name="line.3263"></a>
-<span class="sourceLineNo">3264</span>     * This does not write to the WAL itself.<a name="line.3264"></a>
-<span class="sourceLineNo">3265</span>     * @param familyMap map of family-&gt;edits<a name="line.3265"></a>
-<span class="sourceLineNo">3266</span>     * @param walEdit the destination entry to append into<a name="line.3266"></a>
-<span class="sourceLineNo">3267</span>     */<a name="line.3267"></a>
-<span class="sourceLineNo">3268</span>    private void addFamilyMapToWALEdit(Map&lt;byte[], List&lt;Cell&gt;&gt; familyMap,<a name="line.3268"></a>
-<span class="sourceLineNo">3269</span>        WALEdit walEdit) {<a name="line.3269"></a>
-<span class="sourceLineNo">3270</span>      for (List&lt;Cell&gt; edits : familyMap.values()) {<a name="line.3270"></a>
-<span class="sourceLineNo">3271</span>        // Optimization: 'foreach' loop is not used. See:<a name="line.3271"></a>
-<span class="sourceLineNo">3272</span>        // HBASE-12023 HRegion.applyFamilyMapToMemstore creates too many iterator objects<a name="line.3272"></a>
-<span class="sourceLineNo">3273</span>        assert edits instanceof RandomAccess;<a name="line.3273"></a>
-<span class="sourceLineNo">3274</span>        int listSize = edits.size();<a name="line.3274"></a>
-<span class="sourceLineNo">3275</span>        for (int i=0; i &lt; listSize; i++) {<a name="line.3275"></a>
-<span class="sourceLineNo">3276</span>          Cell cell = edits.get(i);<a name="line.3276"></a>
-<span class="sourceLineNo">3277</span>          walEdit.add(cell);<a name="line.3277"></a>
-<span class="sourceLineNo">3278</span>        }<a name="line.3278"></a>
-<span class="sourceLineNo">3279</span>      }<a name="line.3279"></a>
-<span class="sourceLineNo">3280</span>    }<a name="line.3280"></a>
-<span class="sourceLineNo">3281</span>  }<a name="line.3281"></a>
-<span class="sourceLineNo">3282</span><a name="line.3282"></a>
-<span class="sourceLineNo">3283</span>  /**<a name="line.3283"></a>
-<span class="sourceLineNo">3284</span>   * Batch of mutation operations. Base class is shared with {@link ReplayBatchOperation} as most<a name="line.3284"></a>
-<span class="sourceLineNo">3285</span>   * of the logic is same.<a name="line.3285"></a>
-<span class="sourceLineNo">3286</span>   */<a name="line.3286"></a>
-<span class="sourceLineNo">3287</span>  static class MutationBatchOperation extends BatchOperation&lt;Mutation&gt; {<a name="line.3287"></a>
-<span class="sourceLineNo">3288</span>    private long nonceGroup;<a name="line.3288"></a>
-<span class="sourceLineNo">3289</span>    private long nonce;<a name="line.3289"></a>
-<span class="sourceLineNo">3290</span>    public MutationBatchOperation(final HRegion region, Mutation[] operations, boolean atomic,<a name="line.3290"></a>
-<span class="sourceLineNo">3291</span>        long nonceGroup, long nonce) {<a name="line.3291"></a>
-<span class="sourceLineNo">3292</span>      super(region, operations);<a name="line.3292"></a>
-<span class="sourceLineNo">3293</span>      this.atomic = atomic;<a name="line.3293"></a>
-<span class="sourceLineNo">3294</span>      this.nonceGroup = nonceGroup;<a name="line.3294"></a>
-<span class="sourceLineNo">3295</span>      this.nonce = nonce;<a name="line.3295"></a>
-<span class="sourceLineNo">3296</span>    }<a name="line.3296"></a>
-<span class="sourceLineNo">3297</span><a name="line.3297"></a>
-<span class="sourceLineNo">3298</span>    @Override<a name="line.3298"></a>
-<span class="sourceLineNo">3299</span>    public Mutation getMutation(int index) {<a name="line.3299"></a>
-<span class="sourceLineNo">3300</span>      return this.operations[index];<a name="line.3300"></a>
-<span class="sourceLineNo">3301</span>    }<a name="line.3301"></a>
-<span class="sourceLineNo">3302</span><a name="line.3302"></a>
-<span class="sourceLineNo">3303</span>    @Override<a name="line.3303"></a>
-<span class="sourceLineNo">3304</span>    public long getNonceGroup(int index) {<a name="line.3304"></a>
-<span class="sourceLineNo">3305</span>      return nonceGroup;<a name="line.3305"></a>
-<span class="sourceLineNo">3306</span>    }<a name="line.3306"></a>
-<span class="sourceLineNo">3307</span><a name="line.3307">

<TRUNCATED>

[08/51] [partial] hbase-site git commit: Published site at .

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/c54c242b/hbase-build-configuration/hbase-archetypes/hbase-shaded-client-project/dependencies.html
----------------------------------------------------------------------
diff --git a/hbase-build-configuration/hbase-archetypes/hbase-shaded-client-project/dependencies.html b/hbase-build-configuration/hbase-archetypes/hbase-shaded-client-project/dependencies.html
index c631df5..49740f6 100644
--- a/hbase-build-configuration/hbase-archetypes/hbase-shaded-client-project/dependencies.html
+++ b/hbase-build-configuration/hbase-archetypes/hbase-shaded-client-project/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="20171202" />
+    <meta name="Date-Revision-yyyymmdd" content="20171203" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase - Exemplar for hbase-shaded-client archetype &#x2013; Project Dependencies</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -1489,26 +1489,8 @@ The following provides more details on the included cryptographic software:
         production. Metrics provides a powerful toolkit of ways to measure the behavior of critical
         components in your production environment.</p>
 <p><b>URL: </b><a class="externalLink" href="http://metrics.codahale.com/metrics-core/">http://metrics.codahale.com/metrics-core/</a></p>
-<p><b>Project Licenses: </b><a class="externalLink" href="http://www.apache.org/licenses/LICENSE-2.0.html">Apache License 2.0</a></p></td></tr></table></div></li>
-<li>org.apache.curator:curator-framework:jar:4.0.0 (compile) <img id="_img55" src="./images/icon_info_sml.gif" alt="[Information]" onclick="toggleDependencyDetails( '_dep54', '_img55' );" style="cursor: pointer; vertical-align: text-bottom;"></img><div id="_dep54" style="display:none">
-<table border="0" class="table table-striped">
-<tr class="a">
-<th>Curator Framework</th></tr>
-<tr class="b">
-<td>
-<p><b>Description: </b>High-level API that greatly simplifies using ZooKeeper.</p>
-<p><b>URL: </b><a class="externalLink" href="http://curator.apache.org/curator-framework">http://curator.apache.org/curator-framework</a></p>
-<p><b>Project Licenses: </b><a class="externalLink" href="http://www.apache.org/licenses/LICENSE-2.0.txt">The Apache Software License, Version 2.0</a></p></td></tr></table></div></li>
-<li>org.apache.curator:curator-client:jar:4.0.0 (compile) <img id="_img57" src="./images/icon_info_sml.gif" alt="[Information]" onclick="toggleDependencyDetails( '_dep56', '_img57' );" style="cursor: pointer; vertical-align: text-bottom;"></img><div id="_dep56" style="display:none">
-<table border="0" class="table table-striped">
-<tr class="a">
-<th>Curator Client</th></tr>
-<tr class="b">
-<td>
-<p><b>Description: </b>Low-level API</p>
-<p><b>URL: </b><a class="externalLink" href="http://curator.apache.org/curator-client">http://curator.apache.org/curator-client</a></p>
-<p><b>Project Licenses: </b><a class="externalLink" href="http://www.apache.org/licenses/LICENSE-2.0.txt">The Apache Software License, Version 2.0</a></p></td></tr></table></div></li></ul></li>
-<li>org.apache.hbase:hbase-server:jar:3.0.0-SNAPSHOT (test) <img id="_img59" src="./images/icon_info_sml.gif" alt="[Information]" onclick="toggleDependencyDetails( '_dep58', '_img59' );" style="cursor: pointer; vertical-align: text-bottom;"></img><div id="_dep58" style="display:none">
+<p><b>Project Licenses: </b><a class="externalLink" href="http://www.apache.org/licenses/LICENSE-2.0.html">Apache License 2.0</a></p></td></tr></table></div></li></ul></li>
+<li>org.apache.hbase:hbase-server:jar:3.0.0-SNAPSHOT (test) <img id="_img55" src="./images/icon_info_sml.gif" alt="[Information]" onclick="toggleDependencyDetails( '_dep54', '_img55' );" style="cursor: pointer; vertical-align: text-bottom;"></img><div id="_dep54" style="display:none">
 <table border="0" class="table table-striped">
 <tr class="a">
 <th>Apache HBase - Server</th></tr>
@@ -1518,7 +1500,7 @@ The following provides more details on the included cryptographic software:
 <p><b>URL: </b><a class="externalLink" href="http://hbase.apache.org/hbase-build-configuration/hbase-server">http://hbase.apache.org/hbase-build-configuration/hbase-server</a></p>
 <p><b>Project Licenses: </b><a class="externalLink" href="https://www.apache.org/licenses/LICENSE-2.0.txt">Apache License, Version 2.0</a></p></td></tr></table></div>
 <ul>
-<li>org.apache.hbase:hbase-http:jar:3.0.0-SNAPSHOT (test) <img id="_img61" src="./images/icon_info_sml.gif" alt="[Information]" onclick="toggleDependencyDetails( '_dep60', '_img61' );" style="cursor: pointer; vertical-align: text-bottom;"></img><div id="_dep60" style="display:none">
+<li>org.apache.hbase:hbase-http:jar:3.0.0-SNAPSHOT (test) <img id="_img57" src="./images/icon_info_sml.gif" alt="[Information]" onclick="toggleDependencyDetails( '_dep56', '_img57' );" style="cursor: pointer; vertical-align: text-bottom;"></img><div id="_dep56" style="display:none">
 <table border="0" class="table table-striped">
 <tr class="a">
 <th>Apache HBase - HTTP</th></tr>
@@ -1528,7 +1510,7 @@ The following provides more details on the included cryptographic software:
 <p><b>URL: </b><a class="externalLink" href="http://hbase.apache.org/hbase-build-configuration/hbase-http">http://hbase.apache.org/hbase-build-configuration/hbase-http</a></p>
 <p><b>Project Licenses: </b><a class="externalLink" href="https://www.apache.org/licenses/LICENSE-2.0.txt">Apache License, Version 2.0</a></p></td></tr></table></div>
 <ul>
-<li>org.eclipse.jetty:jetty-util:jar:9.3.19.v20170502 (test) <img id="_img63" src="./images/icon_info_sml.gif" alt="[Information]" onclick="toggleDependencyDetails( '_dep62', '_img63' );" style="cursor: pointer; vertical-align: text-bottom;"></img><div id="_dep62" style="display:none">
+<li>org.eclipse.jetty:jetty-util:jar:9.3.19.v20170502 (test) <img id="_img59" src="./images/icon_info_sml.gif" alt="[Information]" onclick="toggleDependencyDetails( '_dep58', '_img59' );" style="cursor: pointer; vertical-align: text-bottom;"></img><div id="_dep58" style="display:none">
 <table border="0" class="table table-striped">
 <tr class="a">
 <th>Jetty :: Utilities</th></tr>
@@ -1537,7 +1519,7 @@ The following provides more details on the included cryptographic software:
 <p><b>Description: </b>Utility classes for Jetty</p>
 <p><b>URL: </b><a class="externalLink" href="http://www.eclipse.org/jetty">http://www.eclipse.org/jetty</a></p>
 <p><b>Project Licenses: </b><a class="externalLink" href="http://www.apache.org/licenses/LICENSE-2.0">Apache Software License - Version 2.0</a>, <a class="externalLink" href="http://www.eclipse.org/org/documents/epl-v10.php">Eclipse Public License - Version 1.0</a></p></td></tr></table></div></li>
-<li>org.eclipse.jetty:jetty-util-ajax:jar:9.3.19.v20170502 (test) <img id="_img65" src="./images/icon_info_sml.gif" alt="[Information]" onclick="toggleDependencyDetails( '_dep64', '_img65' );" style="cursor: pointer; vertical-align: text-bottom;"></img><div id="_dep64" style="display:none">
+<li>org.eclipse.jetty:jetty-util-ajax:jar:9.3.19.v20170502 (test) <img id="_img61" src="./images/icon_info_sml.gif" alt="[Information]" onclick="toggleDependencyDetails( '_dep60', '_img61' );" style="cursor: pointer; vertical-align: text-bottom;"></img><div id="_dep60" style="display:none">
 <table border="0" class="table table-striped">
 <tr class="a">
 <th>Jetty :: Utilities :: Ajax(JSON)</th></tr>
@@ -1546,7 +1528,7 @@ The following provides more details on the included cryptographic software:
 <p><b>Description: </b>JSON/Ajax Utility classes for Jetty</p>
 <p><b>URL: </b><a class="externalLink" href="http://www.eclipse.org/jetty">http://www.eclipse.org/jetty</a></p>
 <p><b>Project Licenses: </b><a class="externalLink" href="http://www.apache.org/licenses/LICENSE-2.0">Apache Software License - Version 2.0</a>, <a class="externalLink" href="http://www.eclipse.org/org/documents/epl-v10.php">Eclipse Public License - Version 1.0</a></p></td></tr></table></div></li>
-<li>org.eclipse.jetty:jetty-http:jar:9.3.19.v20170502 (test) <img id="_img67" src="./images/icon_info_sml.gif" alt="[Information]" onclick="toggleDependencyDetails( '_dep66', '_img67' );" style="cursor: pointer; vertical-align: text-bottom;"></img><div id="_dep66" style="display:none">
+<li>org.eclipse.jetty:jetty-http:jar:9.3.19.v20170502 (test) <img id="_img63" src="./images/icon_info_sml.gif" alt="[Information]" onclick="toggleDependencyDetails( '_dep62', '_img63' );" style="cursor: pointer; vertical-align: text-bottom;"></img><div id="_dep62" style="display:none">
 <table border="0" class="table table-striped">
 <tr class="a">
 <th>Jetty :: Http Utility</th></tr>
@@ -1555,7 +1537,7 @@ The following provides more details on the included cryptographic software:
 <p><b>Description: </b>Administrative parent pom for Jetty modules</p>
 <p><b>URL: </b><a class="externalLink" href="http://www.eclipse.org/jetty">http://www.eclipse.org/jetty</a></p>
 <p><b>Project Licenses: </b><a class="externalLink" href="http://www.apache.org/licenses/LICENSE-2.0">Apache Software License - Version 2.0</a>, <a class="externalLink" href="http://www.eclipse.org/org/documents/epl-v10.php">Eclipse Public License - Version 1.0</a></p></td></tr></table></div></li>
-<li>org.eclipse.jetty:jetty-security:jar:9.3.19.v20170502 (test) <img id="_img69" src="./images/icon_info_sml.gif" alt="[Information]" onclick="toggleDependencyDetails( '_dep68', '_img69' );" style="cursor: pointer; vertical-align: text-bottom;"></img><div id="_dep68" style="display:none">
+<li>org.eclipse.jetty:jetty-security:jar:9.3.19.v20170502 (test) <img id="_img65" src="./images/icon_info_sml.gif" alt="[Information]" onclick="toggleDependencyDetails( '_dep64', '_img65' );" style="cursor: pointer; vertical-align: text-bottom;"></img><div id="_dep64" style="display:none">
 <table border="0" class="table table-striped">
 <tr class="a">
 <th>Jetty :: Security</th></tr>
@@ -1564,7 +1546,7 @@ The following provides more details on the included cryptographic software:
 <p><b>Description: </b>Jetty security infrastructure</p>
 <p><b>URL: </b><a class="externalLink" href="http://www.eclipse.org/jetty">http://www.eclipse.org/jetty</a></p>
 <p><b>Project Licenses: </b><a class="externalLink" href="http://www.apache.org/licenses/LICENSE-2.0">Apache Software License - Version 2.0</a>, <a class="externalLink" href="http://www.eclipse.org/org/documents/epl-v10.php">Eclipse Public License - Version 1.0</a></p></td></tr></table></div></li>
-<li>org.glassfish.jersey.core:jersey-server:jar:2.25.1 (test) <img id="_img71" src="./images/icon_info_sml.gif" alt="[Information]" onclick="toggleDependencyDetails( '_dep70', '_img71' );" style="cursor: pointer; vertical-align: text-bottom;"></img><div id="_dep70" style="display:none">
+<li>org.glassfish.jersey.core:jersey-server:jar:2.25.1 (test) <img id="_img67" src="./images/icon_info_sml.gif" alt="[Information]" onclick="toggleDependencyDetails( '_dep66', '_img67' );" style="cursor: pointer; vertical-align: text-bottom;"></img><div id="_dep66" style="display:none">
 <table border="0" class="table table-striped">
 <tr class="a">
 <th>jersey-core-server</th></tr>
@@ -1574,7 +1556,7 @@ The following provides more details on the included cryptographic software:
 <p><b>URL: </b><a class="externalLink" href="https://jersey.java.net/jersey-server/">https://jersey.java.net/jersey-server/</a></p>
 <p><b>Project Licenses: </b><a class="externalLink" href="http://glassfish.java.net/public/CDDL+GPL_1_1.html">CDDL+GPL License</a></p></td></tr></table></div>
 <ul>
-<li>org.glassfish.jersey.core:jersey-common:jar:2.25.1 (test) <img id="_img73" src="./images/icon_info_sml.gif" alt="[Information]" onclick="toggleDependencyDetails( '_dep72', '_img73' );" style="cursor: pointer; vertical-align: text-bottom;"></img><div id="_dep72" style="display:none">
+<li>org.glassfish.jersey.core:jersey-common:jar:2.25.1 (test) <img id="_img69" src="./images/icon_info_sml.gif" alt="[Information]" onclick="toggleDependencyDetails( '_dep68', '_img69' );" style="cursor: pointer; vertical-align: text-bottom;"></img><div id="_dep68" style="display:none">
 <table border="0" class="table table-striped">
 <tr class="a">
 <th>jersey-core-common</th></tr>
@@ -1584,7 +1566,7 @@ The following provides more details on the included cryptographic software:
 <p><b>URL: </b><a class="externalLink" href="https://jersey.java.net/jersey-common/">https://jersey.java.net/jersey-common/</a></p>
 <p><b>Project Licenses: </b><a class="externalLink" href="http://glassfish.java.net/public/CDDL+GPL_1_1.html">CDDL+GPL License</a></p></td></tr></table></div>
 <ul>
-<li>org.glassfish.jersey.bundles.repackaged:jersey-guava:jar:2.25.1 (test) <img id="_img75" src="./images/icon_info_sml.gif" alt="[Information]" onclick="toggleDependencyDetails( '_dep74', '_img75' );" style="cursor: pointer; vertical-align: text-bottom;"></img><div id="_dep74" style="display:none">
+<li>org.glassfish.jersey.bundles.repackaged:jersey-guava:jar:2.25.1 (test) <img id="_img71" src="./images/icon_info_sml.gif" alt="[Information]" onclick="toggleDependencyDetails( '_dep70', '_img71' );" style="cursor: pointer; vertical-align: text-bottom;"></img><div id="_dep70" style="display:none">
 <table border="0" class="table table-striped">
 <tr class="a">
 <th>jersey-repackaged-guava</th></tr>
@@ -1593,7 +1575,7 @@ The following provides more details on the included cryptographic software:
 <p><b>Description: </b>Jersey Guava Repackaged</p>
 <p><b>URL: </b><a class="externalLink" href="https://jersey.java.net/project/project/jersey-guava/">https://jersey.java.net/project/project/jersey-guava/</a></p>
 <p><b>Project Licenses: </b><a class="externalLink" href="http://glassfish.java.net/public/CDDL+GPL_1_1.html">CDDL+GPL License</a></p></td></tr></table></div></li>
-<li>org.glassfish.hk2:osgi-resource-locator:jar:1.0.1 (test) <img id="_img77" src="./images/icon_info_sml.gif" alt="[Information]" onclick="toggleDependencyDetails( '_dep76', '_img77' );" style="cursor: pointer; vertical-align: text-bottom;"></img><div id="_dep76" style="display:none">
+<li>org.glassfish.hk2:osgi-resource-locator:jar:1.0.1 (test) <img id="_img73" src="./images/icon_info_sml.gif" alt="[Information]" onclick="toggleDependencyDetails( '_dep72', '_img73' );" style="cursor: pointer; vertical-align: text-bottom;"></img><div id="_dep72" style="display:none">
 <table border="0" class="table table-striped">
 <tr class="a">
 <th>OSGi resource locator bundle - used by various API providers that rely on META-INF/services mechanism to locate providers.</th></tr>
@@ -1602,7 +1584,7 @@ The following provides more details on the included cryptographic software:
 <p><b>Description: </b>See http://wiki.glassfish.java.net/Wiki.jsp?page=JdkSpiOsgi for more information</p>
 <p><b>URL: </b><a class="externalLink" href="http://glassfish.org/osgi-resource-locator/">http://glassfish.org/osgi-resource-locator/</a></p>
 <p><b>Project Licenses: </b><a class="externalLink" href="https://glassfish.dev.java.net/nonav/public/CDDL+GPL.html">CDDL + GPLv2 with classpath exception</a></p></td></tr></table></div></li></ul></li>
-<li>org.glassfish.jersey.core:jersey-client:jar:2.25.1 (test) <img id="_img79" src="./images/icon_info_sml.gif" alt="[Information]" onclick="toggleDependencyDetails( '_dep78', '_img79' );" style="cursor: pointer; vertical-align: text-bottom;"></img><div id="_dep78" style="display:none">
+<li>org.glassfish.jersey.core:jersey-client:jar:2.25.1 (test) <img id="_img75" src="./images/icon_info_sml.gif" alt="[Information]" onclick="toggleDependencyDetails( '_dep74', '_img75' );" style="cursor: pointer; vertical-align: text-bottom;"></img><div id="_dep74" style="display:none">
 <table border="0" class="table table-striped">
 <tr class="a">
 <th>jersey-core-client</th></tr>
@@ -1611,7 +1593,7 @@ The following provides more details on the included cryptographic software:
 <p><b>Description: </b>Jersey core client implementation</p>
 <p><b>URL: </b><a class="externalLink" href="https://jersey.java.net/jersey-client/">https://jersey.java.net/jersey-client/</a></p>
 <p><b>Project Licenses: </b><a class="externalLink" href="http://glassfish.java.net/public/CDDL+GPL_1_1.html">CDDL+GPL License</a></p></td></tr></table></div></li>
-<li>org.glassfish.jersey.media:jersey-media-jaxb:jar:2.25.1 (test) <img id="_img81" src="./images/icon_info_sml.gif" alt="[Information]" onclick="toggleDependencyDetails( '_dep80', '_img81' );" style="cursor: pointer; vertical-align: text-bottom;"></img><div id="_dep80" style="display:none">
+<li>org.glassfish.jersey.media:jersey-media-jaxb:jar:2.25.1 (test) <img id="_img77" src="./images/icon_info_sml.gif" alt="[Information]" onclick="toggleDependencyDetails( '_dep76', '_img77' );" style="cursor: pointer; vertical-align: text-bottom;"></img><div id="_dep76" style="display:none">
 <table border="0" class="table table-striped">
 <tr class="a">
 <th>jersey-media-jaxb</th></tr>
@@ -1620,7 +1602,7 @@ The following provides more details on the included cryptographic software:
 <p><b>Description: </b>JAX-RS features based upon JAX-B.</p>
 <p><b>URL: </b><a class="externalLink" href="https://jersey.java.net/project/jersey-media-jaxb/">https://jersey.java.net/project/jersey-media-jaxb/</a></p>
 <p><b>Project Licenses: </b><a class="externalLink" href="http://glassfish.java.net/public/CDDL+GPL_1_1.html">CDDL+GPL License</a></p></td></tr></table></div></li>
-<li>javax.annotation:javax.annotation-api:jar:1.2 (test) <img id="_img83" src="./images/icon_info_sml.gif" alt="[Information]" onclick="toggleDependencyDetails( '_dep82', '_img83' );" style="cursor: pointer; vertical-align: text-bottom;"></img><div id="_dep82" style="display:none">
+<li>javax.annotation:javax.annotation-api:jar:1.2 (test) <img id="_img79" src="./images/icon_info_sml.gif" alt="[Information]" onclick="toggleDependencyDetails( '_dep78', '_img79' );" style="cursor: pointer; vertical-align: text-bottom;"></img><div id="_dep78" style="display:none">
 <table border="0" class="table table-striped">
 <tr class="a">
 <th>javax.annotation API</th></tr>
@@ -1629,7 +1611,7 @@ The following provides more details on the included cryptographic software:
 <p><b>Description: </b>Common Annotations for the JavaTM Platform API</p>
 <p><b>URL: </b><a class="externalLink" href="http://jcp.org/en/jsr/detail?id=250">http://jcp.org/en/jsr/detail?id=250</a></p>
 <p><b>Project Licenses: </b><a class="externalLink" href="https://glassfish.dev.java.net/nonav/public/CDDL+GPL.html">CDDL + GPLv2 with classpath exception</a></p></td></tr></table></div></li>
-<li>org.glassfish.hk2:hk2-api:jar:2.5.0-b32 (test) <img id="_img85" src="./images/icon_info_sml.gif" alt="[Information]" onclick="toggleDependencyDetails( '_dep84', '_img85' );" style="cursor: pointer; vertical-align: text-bottom;"></img><div id="_dep84" style="display:none">
+<li>org.glassfish.hk2:hk2-api:jar:2.5.0-b32 (test) <img id="_img81" src="./images/icon_info_sml.gif" alt="[Information]" onclick="toggleDependencyDetails( '_dep80', '_img81' );" style="cursor: pointer; vertical-align: text-bottom;"></img><div id="_dep80" style="display:none">
 <table border="0" class="table table-striped">
 <tr class="a">
 <th>HK2 API module</th></tr>
@@ -1639,7 +1621,7 @@ The following provides more details on the included cryptographic software:
 <p><b>URL: </b><a class="externalLink" href="https://hk2.java.net/hk2-api">https://hk2.java.net/hk2-api</a></p>
 <p><b>Project Licenses: </b><a class="externalLink" href="https://glassfish.java.net/nonav/public/CDDL+GPL_1_1.html">CDDL + GPLv2 with classpath exception</a></p></td></tr></table></div>
 <ul>
-<li>org.glassfish.hk2:hk2-utils:jar:2.5.0-b32 (test) <img id="_img87" src="./images/icon_info_sml.gif" alt="[Information]" onclick="toggleDependencyDetails( '_dep86', '_img87' );" style="cursor: pointer; vertical-align: text-bottom;"></img><div id="_dep86" style="display:none">
+<li>org.glassfish.hk2:hk2-utils:jar:2.5.0-b32 (test) <img id="_img83" src="./images/icon_info_sml.gif" alt="[Information]" onclick="toggleDependencyDetails( '_dep82', '_img83' );" style="cursor: pointer; vertical-align: text-bottom;"></img><div id="_dep82" style="display:none">
 <table border="0" class="table table-striped">
 <tr class="a">
 <th>HK2 Implementation Utilities</th></tr>
@@ -1648,7 +1630,7 @@ The following provides more details on the included cryptographic software:
 <p><b>Description: </b>HK2 Implementation Utilities</p>
 <p><b>URL: </b><a class="externalLink" href="https://hk2.java.net/hk2-utils">https://hk2.java.net/hk2-utils</a></p>
 <p><b>Project Licenses: </b><a class="externalLink" href="https://glassfish.java.net/nonav/public/CDDL+GPL_1_1.html">CDDL + GPLv2 with classpath exception</a></p></td></tr></table></div></li>
-<li>org.glassfish.hk2.external:aopalliance-repackaged:jar:2.5.0-b32 (test) <img id="_img89" src="./images/icon_info_sml.gif" alt="[Information]" onclick="toggleDependencyDetails( '_dep88', '_img89' );" style="cursor: pointer; vertical-align: text-bottom;"></img><div id="_dep88" style="display:none">
+<li>org.glassfish.hk2.external:aopalliance-repackaged:jar:2.5.0-b32 (test) <img id="_img85" src="./images/icon_info_sml.gif" alt="[Information]" onclick="toggleDependencyDetails( '_dep84', '_img85' );" style="cursor: pointer; vertical-align: text-bottom;"></img><div id="_dep84" style="display:none">
 <table border="0" class="table table-striped">
 <tr class="a">
 <th>aopalliance version 1.0 repackaged as a module</th></tr>
@@ -1657,7 +1639,7 @@ The following provides more details on the included cryptographic software:
 <p><b>Description: </b>Dependency Injection Kernel</p>
 <p><b>URL: </b><a class="externalLink" href="https://hk2.java.net/external/aopalliance-repackaged">https://hk2.java.net/external/aopalliance-repackaged</a></p>
 <p><b>Project Licenses: </b><a class="externalLink" href="https://glassfish.java.net/nonav/public/CDDL+GPL_1_1.html">CDDL + GPLv2 with classpath exception</a></p></td></tr></table></div></li></ul></li>
-<li>org.glassfish.hk2.external:javax.inject:jar:2.5.0-b32 (test) <img id="_img91" src="./images/icon_info_sml.gif" alt="[Information]" onclick="toggleDependencyDetails( '_dep90', '_img91' );" style="cursor: pointer; vertical-align: text-bottom;"></img><div id="_dep90" style="display:none">
+<li>org.glassfish.hk2.external:javax.inject:jar:2.5.0-b32 (test) <img id="_img87" src="./images/icon_info_sml.gif" alt="[Information]" onclick="toggleDependencyDetails( '_dep86', '_img87' );" style="cursor: pointer; vertical-align: text-bottom;"></img><div id="_dep86" style="display:none">
 <table border="0" class="table table-striped">
 <tr class="a">
 <th>javax.inject:1 as OSGi bundle</th></tr>
@@ -1666,7 +1648,7 @@ The following provides more details on the included cryptographic software:
 <p><b>Description: </b>Injection API (JSR 330) version ${javax.inject.version} repackaged as OSGi bundle</p>
 <p><b>URL: </b><a class="externalLink" href="https://hk2.java.net/external/javax.inject">https://hk2.java.net/external/javax.inject</a></p>
 <p><b>Project Licenses: </b><a class="externalLink" href="https://glassfish.java.net/nonav/public/CDDL+GPL_1_1.html">CDDL + GPLv2 with classpath exception</a></p></td></tr></table></div></li>
-<li>org.glassfish.hk2:hk2-locator:jar:2.5.0-b32 (test) <img id="_img93" src="./images/icon_info_sml.gif" alt="[Information]" onclick="toggleDependencyDetails( '_dep92', '_img93' );" style="cursor: pointer; vertical-align: text-bottom;"></img><div id="_dep92" style="display:none">
+<li>org.glassfish.hk2:hk2-locator:jar:2.5.0-b32 (test) <img id="_img89" src="./images/icon_info_sml.gif" alt="[Information]" onclick="toggleDependencyDetails( '_dep88', '_img89' );" style="cursor: pointer; vertical-align: text-bottom;"></img><div id="_dep88" style="display:none">
 <table border="0" class="table table-striped">
 <tr class="a">
 <th>ServiceLocator Default Implementation</th></tr>
@@ -1676,7 +1658,7 @@ The following provides more details on the included cryptographic software:
 <p><b>URL: </b><a class="externalLink" href="https://hk2.java.net/hk2-locator">https://hk2.java.net/hk2-locator</a></p>
 <p><b>Project Licenses: </b><a class="externalLink" href="https://glassfish.java.net/nonav/public/CDDL+GPL_1_1.html">CDDL + GPLv2 with classpath exception</a></p></td></tr></table></div>
 <ul>
-<li>org.javassist:javassist:jar:3.20.0-GA (test) <img id="_img95" src="./images/icon_info_sml.gif" alt="[Information]" onclick="toggleDependencyDetails( '_dep94', '_img95' );" style="cursor: pointer; vertical-align: text-bottom;"></img><div id="_dep94" style="display:none">
+<li>org.javassist:javassist:jar:3.20.0-GA (test) <img id="_img91" src="./images/icon_info_sml.gif" alt="[Information]" onclick="toggleDependencyDetails( '_dep90', '_img91' );" style="cursor: pointer; vertical-align: text-bottom;"></img><div id="_dep90" style="display:none">
 <table border="0" class="table table-striped">
 <tr class="a">
 <th>Javassist</th></tr>
@@ -1686,7 +1668,7 @@ The following provides more details on the included cryptographic software:
     simple.  It is a class library for editing bytecodes in Java.</p>
 <p><b>URL: </b><a class="externalLink" href="http://www.javassist.org/">http://www.javassist.org/</a></p>
 <p><b>Project Licenses: </b><a class="externalLink" href="http://www.mozilla.org/MPL/MPL-1.1.html">MPL 1.1</a>, <a class="externalLink" href="http://www.gnu.org/licenses/lgpl-2.1.html">LGPL 2.1</a>, <a class="externalLink" href="http://www.apache.org/licenses/">Apache License 2.0</a></p></td></tr></table></div></li></ul></li>
-<li>javax.validation:validation-api:jar:1.1.0.Final (test) <img id="_img97" src="./images/icon_info_sml.gif" alt="[Information]" onclick="toggleDependencyDetails( '_dep96', '_img97' );" style="cursor: pointer; vertical-align: text-bottom;"></img><div id="_dep96" style="display:none">
+<li>javax.validation:validation-api:jar:1.1.0.Final (test) <img id="_img93" src="./images/icon_info_sml.gif" alt="[Information]" onclick="toggleDependencyDetails( '_dep92', '_img93' );" style="cursor: pointer; vertical-align: text-bottom;"></img><div id="_dep92" style="display:none">
 <table border="0" class="table table-striped">
 <tr class="a">
 <th>Bean Validation API</th></tr>
@@ -1695,7 +1677,7 @@ The following provides more details on the included cryptographic software:
 <p><b>Description: </b>Bean Validation API</p>
 <p><b>URL: </b><a class="externalLink" href="http://beanvalidation.org">http://beanvalidation.org</a></p>
 <p><b>Project Licenses: </b><a class="externalLink" href="http://www.apache.org/licenses/LICENSE-2.0.txt">The Apache Software License, Version 2.0</a></p></td></tr></table></div></li></ul></li>
-<li>org.glassfish.jersey.containers:jersey-container-servlet-core:jar:2.25.1 (test) <img id="_img99" src="./images/icon_info_sml.gif" alt="[Information]" onclick="toggleDependencyDetails( '_dep98', '_img99' );" style="cursor: pointer; vertical-align: text-bottom;"></img><div id="_dep98" style="display:none">
+<li>org.glassfish.jersey.containers:jersey-container-servlet-core:jar:2.25.1 (test) <img id="_img95" src="./images/icon_info_sml.gif" alt="[Information]" onclick="toggleDependencyDetails( '_dep94', '_img95' );" style="cursor: pointer; vertical-align: text-bottom;"></img><div id="_dep94" style="display:none">
 <table border="0" class="table table-striped">
 <tr class="a">
 <th>jersey-container-servlet-core</th></tr>
@@ -1704,7 +1686,7 @@ The following provides more details on the included cryptographic software:
 <p><b>Description: </b>Jersey core Servlet 2.x implementation</p>
 <p><b>URL: </b><a class="externalLink" href="https://jersey.java.net/project/jersey-container-servlet-core/">https://jersey.java.net/project/jersey-container-servlet-core/</a></p>
 <p><b>Project Licenses: </b><a class="externalLink" href="http://glassfish.java.net/public/CDDL+GPL_1_1.html">CDDL+GPL License</a></p></td></tr></table></div></li></ul></li>
-<li>org.apache.hbase:hbase-procedure:jar:3.0.0-SNAPSHOT (test) <img id="_img101" src="./images/icon_info_sml.gif" alt="[Information]" onclick="toggleDependencyDetails( '_dep100', '_img101' );" style="cursor: pointer; vertical-align: text-bottom;"></img><div id="_dep100" style="display:none">
+<li>org.apache.hbase:hbase-procedure:jar:3.0.0-SNAPSHOT (test) <img id="_img97" src="./images/icon_info_sml.gif" alt="[Information]" onclick="toggleDependencyDetails( '_dep96', '_img97' );" style="cursor: pointer; vertical-align: text-bottom;"></img><div id="_dep96" style="display:none">
 <table border="0" class="table table-striped">
 <tr class="a">
 <th>Apache HBase - Procedure</th></tr>
@@ -1713,7 +1695,7 @@ The following provides more details on the included cryptographic software:
 <p><b>Description: </b>Procedure Framework</p>
 <p><b>URL: </b><a class="externalLink" href="http://hbase.apache.org/hbase-build-configuration/hbase-procedure">http://hbase.apache.org/hbase-build-configuration/hbase-procedure</a></p>
 <p><b>Project Licenses: </b><a class="externalLink" href="https://www.apache.org/licenses/LICENSE-2.0.txt">Apache License, Version 2.0</a></p></td></tr></table></div></li>
-<li>org.apache.hbase:hbase-zookeeper:jar:3.0.0-SNAPSHOT (test) <img id="_img103" src="./images/icon_info_sml.gif" alt="[Information]" onclick="toggleDependencyDetails( '_dep102', '_img103' );" style="cursor: pointer; vertical-align: text-bottom;"></img><div id="_dep102" style="display:none">
+<li>org.apache.hbase:hbase-zookeeper:jar:3.0.0-SNAPSHOT (test) <img id="_img99" src="./images/icon_info_sml.gif" alt="[Information]" onclick="toggleDependencyDetails( '_dep98', '_img99' );" style="cursor: pointer; vertical-align: text-bottom;"></img><div id="_dep98" style="display:none">
 <table border="0" class="table table-striped">
 <tr class="a">
 <th>Apache HBase - Zookeeper</th></tr>
@@ -1722,7 +1704,7 @@ The following provides more details on the included cryptographic software:
 <p><b>Description: </b>Zookeeper Helpers for HBase</p>
 <p><b>URL: </b><a class="externalLink" href="http://hbase.apache.org/hbase-build-configuration/hbase-zookeeper">http://hbase.apache.org/hbase-build-configuration/hbase-zookeeper</a></p>
 <p><b>Project Licenses: </b><a class="externalLink" href="https://www.apache.org/licenses/LICENSE-2.0.txt">Apache License, Version 2.0</a></p></td></tr></table></div></li>
-<li>org.apache.hbase:hbase-replication:jar:3.0.0-SNAPSHOT (test) <img id="_img105" src="./images/icon_info_sml.gif" alt="[Information]" onclick="toggleDependencyDetails( '_dep104', '_img105' );" style="cursor: pointer; vertical-align: text-bottom;"></img><div id="_dep104" style="display:none">
+<li>org.apache.hbase:hbase-replication:jar:3.0.0-SNAPSHOT (test) <img id="_img101" src="./images/icon_info_sml.gif" alt="[Information]" onclick="toggleDependencyDetails( '_dep100', '_img101' );" style="cursor: pointer; vertical-align: text-bottom;"></img><div id="_dep100" style="display:none">
 <table border="0" class="table table-striped">
 <tr class="a">
 <th>Apache HBase - Replication</th></tr>
@@ -1731,7 +1713,7 @@ The following provides more details on the included cryptographic software:
 <p><b>Description: </b>HBase Replication Support</p>
 <p><b>URL: </b><a class="externalLink" href="http://hbase.apache.org/hbase-build-configuration/hbase-replication">http://hbase.apache.org/hbase-build-configuration/hbase-replication</a></p>
 <p><b>Project Licenses: </b><a class="externalLink" href="https://www.apache.org/licenses/LICENSE-2.0.txt">Apache License, Version 2.0</a></p></td></tr></table></div></li>
-<li>org.apache.hbase:hbase-metrics-api:jar:3.0.0-SNAPSHOT (compile) <img id="_img107" src="./images/icon_info_sml.gif" alt="[Information]" onclick="toggleDependencyDetails( '_dep106', '_img107' );" style="cursor: pointer; vertical-align: text-bottom;"></img><div id="_dep106" style="display:none">
+<li>org.apache.hbase:hbase-metrics-api:jar:3.0.0-SNAPSHOT (compile) <img id="_img103" src="./images/icon_info_sml.gif" alt="[Information]" onclick="toggleDependencyDetails( '_dep102', '_img103' );" style="cursor: pointer; vertical-align: text-bottom;"></img><div id="_dep102" style="display:none">
 <table border="0" class="table table-striped">
 <tr class="a">
 <th>Apache HBase - Metrics API</th></tr>
@@ -1740,7 +1722,7 @@ The following provides more details on the included cryptographic software:
 <p><b>Description: </b>HBase Metrics API descriptions</p>
 <p><b>URL: </b><a class="externalLink" href="http://hbase.apache.org/hbase-build-configuration/hbase-metrics-api">http://hbase.apache.org/hbase-build-configuration/hbase-metrics-api</a></p>
 <p><b>Project Licenses: </b><a class="externalLink" href="https://www.apache.org/licenses/LICENSE-2.0.txt">Apache License, Version 2.0</a></p></td></tr></table></div></li>
-<li>org.apache.hbase:hbase-metrics:jar:3.0.0-SNAPSHOT (compile) <img id="_img109" src="./images/icon_info_sml.gif" alt="[Information]" onclick="toggleDependencyDetails( '_dep108', '_img109' );" style="cursor: pointer; vertical-align: text-bottom;"></img><div id="_dep108" style="display:none">
+<li>org.apache.hbase:hbase-metrics:jar:3.0.0-SNAPSHOT (compile) <img id="_img105" src="./images/icon_info_sml.gif" alt="[Information]" onclick="toggleDependencyDetails( '_dep104', '_img105' );" style="cursor: pointer; vertical-align: text-bottom;"></img><div id="_dep104" style="display:none">
 <table border="0" class="table table-striped">
 <tr class="a">
 <th>Apache HBase - Metrics Implementation</th></tr>
@@ -1749,7 +1731,7 @@ The following provides more details on the included cryptographic software:
 <p><b>Description: </b>HBase Metrics Implementation</p>
 <p><b>URL: </b><a class="externalLink" href="http://hbase.apache.org/hbase-build-configuration/hbase-metrics">http://hbase.apache.org/hbase-build-configuration/hbase-metrics</a></p>
 <p><b>Project Licenses: </b><a class="externalLink" href="https://www.apache.org/licenses/LICENSE-2.0.txt">Apache License, Version 2.0</a></p></td></tr></table></div></li>
-<li>org.eclipse.jetty:jetty-server:jar:9.3.19.v20170502 (test) <img id="_img111" src="./images/icon_info_sml.gif" alt="[Information]" onclick="toggleDependencyDetails( '_dep110', '_img111' );" style="cursor: pointer; vertical-align: text-bottom;"></img><div id="_dep110" style="display:none">
+<li>org.eclipse.jetty:jetty-server:jar:9.3.19.v20170502 (test) <img id="_img107" src="./images/icon_info_sml.gif" alt="[Information]" onclick="toggleDependencyDetails( '_dep106', '_img107' );" style="cursor: pointer; vertical-align: text-bottom;"></img><div id="_dep106" style="display:none">
 <table border="0" class="table table-striped">
 <tr class="a">
 <th>Jetty :: Server Core</th></tr>
@@ -1759,7 +1741,7 @@ The following provides more details on the included cryptographic software:
 <p><b>URL: </b><a class="externalLink" href="http://www.eclipse.org/jetty">http://www.eclipse.org/jetty</a></p>
 <p><b>Project Licenses: </b><a class="externalLink" href="http://www.apache.org/licenses/LICENSE-2.0">Apache Software License - Version 2.0</a>, <a class="externalLink" href="http://www.eclipse.org/org/documents/epl-v10.php">Eclipse Public License - Version 1.0</a></p></td></tr></table></div>
 <ul>
-<li>org.eclipse.jetty:jetty-io:jar:9.3.19.v20170502 (test) <img id="_img113" src="./images/icon_info_sml.gif" alt="[Information]" onclick="toggleDependencyDetails( '_dep112', '_img113' );" style="cursor: pointer; vertical-align: text-bottom;"></img><div id="_dep112" style="display:none">
+<li>org.eclipse.jetty:jetty-io:jar:9.3.19.v20170502 (test) <img id="_img109" src="./images/icon_info_sml.gif" alt="[Information]" onclick="toggleDependencyDetails( '_dep108', '_img109' );" style="cursor: pointer; vertical-align: text-bottom;"></img><div id="_dep108" style="display:none">
 <table border="0" class="table table-striped">
 <tr class="a">
 <th>Jetty :: IO Utility</th></tr>
@@ -1768,7 +1750,7 @@ The following provides more details on the included cryptographic software:
 <p><b>Description: </b>Administrative parent pom for Jetty modules</p>
 <p><b>URL: </b><a class="externalLink" href="http://www.eclipse.org/jetty">http://www.eclipse.org/jetty</a></p>
 <p><b>Project Licenses: </b><a class="externalLink" href="http://www.apache.org/licenses/LICENSE-2.0">Apache Software License - Version 2.0</a>, <a class="externalLink" href="http://www.eclipse.org/org/documents/epl-v10.php">Eclipse Public License - Version 1.0</a></p></td></tr></table></div></li></ul></li>
-<li>org.eclipse.jetty:jetty-servlet:jar:9.3.19.v20170502 (test) <img id="_img115" src="./images/icon_info_sml.gif" alt="[Information]" onclick="toggleDependencyDetails( '_dep114', '_img115' );" style="cursor: pointer; vertical-align: text-bottom;"></img><div id="_dep114" style="display:none">
+<li>org.eclipse.jetty:jetty-servlet:jar:9.3.19.v20170502 (test) <img id="_img111" src="./images/icon_info_sml.gif" alt="[Information]" onclick="toggleDependencyDetails( '_dep110', '_img111' );" style="cursor: pointer; vertical-align: text-bottom;"></img><div id="_dep110" style="display:none">
 <table border="0" class="table table-striped">
 <tr class="a">
 <th>Jetty :: Servlet Handling</th></tr>
@@ -1777,7 +1759,7 @@ The following provides more details on the included cryptographic software:
 <p><b>Description: </b>Jetty Servlet Container</p>
 <p><b>URL: </b><a class="externalLink" href="http://www.eclipse.org/jetty">http://www.eclipse.org/jetty</a></p>
 <p><b>Project Licenses: </b><a class="externalLink" href="http://www.apache.org/licenses/LICENSE-2.0">Apache Software License - Version 2.0</a>, <a class="externalLink" href="http://www.eclipse.org/org/documents/epl-v10.php">Eclipse Public License - Version 1.0</a></p></td></tr></table></div></li>
-<li>org.eclipse.jetty:jetty-webapp:jar:9.3.19.v20170502 (test) <img id="_img117" src="./images/icon_info_sml.gif" alt="[Information]" onclick="toggleDependencyDetails( '_dep116', '_img117' );" style="cursor: pointer; vertical-align: text-bottom;"></img><div id="_dep116" style="display:none">
+<li>org.eclipse.jetty:jetty-webapp:jar:9.3.19.v20170502 (test) <img id="_img113" src="./images/icon_info_sml.gif" alt="[Information]" onclick="toggleDependencyDetails( '_dep112', '_img113' );" style="cursor: pointer; vertical-align: text-bottom;"></img><div id="_dep112" style="display:none">
 <table border="0" class="table table-striped">
 <tr class="a">
 <th>Jetty :: Webapp Application Support</th></tr>
@@ -1787,7 +1769,7 @@ The following provides more details on the included cryptographic software:
 <p><b>URL: </b><a class="externalLink" href="http://www.eclipse.org/jetty">http://www.eclipse.org/jetty</a></p>
 <p><b>Project Licenses: </b><a class="externalLink" href="http://www.apache.org/licenses/LICENSE-2.0">Apache Software License - Version 2.0</a>, <a class="externalLink" href="http://www.eclipse.org/org/documents/epl-v10.php">Eclipse Public License - Version 1.0</a></p></td></tr></table></div>
 <ul>
-<li>org.eclipse.jetty:jetty-xml:jar:9.3.19.v20170502 (test) <img id="_img119" src="./images/icon_info_sml.gif" alt="[Information]" onclick="toggleDependencyDetails( '_dep118', '_img119' );" style="cursor: pointer; vertical-align: text-bottom;"></img><div id="_dep118" style="display:none">
+<li>org.eclipse.jetty:jetty-xml:jar:9.3.19.v20170502 (test) <img id="_img115" src="./images/icon_info_sml.gif" alt="[Information]" onclick="toggleDependencyDetails( '_dep114', '_img115' );" style="cursor: pointer; vertical-align: text-bottom;"></img><div id="_dep114" style="display:none">
 <table border="0" class="table table-striped">
 <tr class="a">
 <th>Jetty :: XML utilities</th></tr>
@@ -1796,7 +1778,7 @@ The following provides more details on the included cryptographic software:
 <p><b>Description: </b>The jetty xml utilities.</p>
 <p><b>URL: </b><a class="externalLink" href="http://www.eclipse.org/jetty">http://www.eclipse.org/jetty</a></p>
 <p><b>Project Licenses: </b><a class="externalLink" href="http://www.apache.org/licenses/LICENSE-2.0">Apache Software License - Version 2.0</a>, <a class="externalLink" href="http://www.eclipse.org/org/documents/epl-v10.php">Eclipse Public License - Version 1.0</a></p></td></tr></table></div></li></ul></li>
-<li>org.glassfish.web:javax.servlet.jsp:jar:2.3.2 (test) <img id="_img121" src="./images/icon_info_sml.gif" alt="[Information]" onclick="toggleDependencyDetails( '_dep120', '_img121' );" style="cursor: pointer; vertical-align: text-bottom;"></img><div id="_dep120" style="display:none">
+<li>org.glassfish.web:javax.servlet.jsp:jar:2.3.2 (test) <img id="_img117" src="./images/icon_info_sml.gif" alt="[Information]" onclick="toggleDependencyDetails( '_dep116', '_img117' );" style="cursor: pointer; vertical-align: text-bottom;"></img><div id="_dep116" style="display:none">
 <table border="0" class="table table-striped">
 <tr class="a">
 <th>JSP implementation</th></tr>
@@ -1806,7 +1788,7 @@ The following provides more details on the included cryptographic software:
 <p><b>URL: </b><a class="externalLink" href="http://jsp.java.net">http://jsp.java.net</a></p>
 <p><b>Project Licenses: </b><a class="externalLink" href="http://glassfish.dev.java.net/nonav/public/CDDL+GPL.html">CDDL + GPLv2 with classpath exception</a></p></td></tr></table></div>
 <ul>
-<li>org.glassfish:javax.el:jar:3.0.1-b08 (test) <img id="_img123" src="./images/icon_info_sml.gif" alt="[Information]" onclick="toggleDependencyDetails( '_dep122', '_img123' );" style="cursor: pointer; vertical-align: text-bottom;"></img><div id="_dep122" style="display:none">
+<li>org.glassfish:javax.el:jar:3.0.1-b08 (test) <img id="_img119" src="./images/icon_info_sml.gif" alt="[Information]" onclick="toggleDependencyDetails( '_dep118', '_img119' );" style="cursor: pointer; vertical-align: text-bottom;"></img><div id="_dep118" style="display:none">
 <table border="0" class="table table-striped">
 <tr class="a">
 <th>Expression Language 3.0</th></tr>
@@ -1815,7 +1797,7 @@ The following provides more details on the included cryptographic software:
 <p><b>Description: </b>Java.net - The Source for Java Technology Collaboration</p>
 <p><b>URL: </b><a class="externalLink" href="http://uel.java.net">http://uel.java.net</a></p>
 <p><b>Project Licenses: </b><a class="externalLink" href="https://glassfish.dev.java.net/nonav/public/CDDL+GPL.html">CDDL + GPLv2 with classpath exception</a></p></td></tr></table></div></li>
-<li>javax.servlet.jsp:javax.servlet.jsp-api:jar:2.3.1 (test) <img id="_img125" src="./images/icon_info_sml.gif" alt="[Information]" onclick="toggleDependencyDetails( '_dep124', '_img125' );" style="cursor: pointer; vertical-align: text-bottom;"></img><div id="_dep124" style="display:none">
+<li>javax.servlet.jsp:javax.servlet.jsp-api:jar:2.3.1 (test) <img id="_img121" src="./images/icon_info_sml.gif" alt="[Information]" onclick="toggleDependencyDetails( '_dep120', '_img121' );" style="cursor: pointer; vertical-align: text-bottom;"></img><div id="_dep120" style="display:none">
 <table border="0" class="table table-striped">
 <tr class="a">
 <th>JavaServer Pages(TM) API</th></tr>
@@ -1824,7 +1806,7 @@ The following provides more details on the included cryptographic software:
 <p><b>Description: </b>Java.net - The Source for Java Technology Collaboration</p>
 <p><b>URL: </b><a class="externalLink" href="http://jsp.java.net">http://jsp.java.net</a></p>
 <p><b>Project Licenses: </b><a class="externalLink" href="http://glassfish.dev.java.net/nonav/public/CDDL+GPL.html">CDDL + GPLv2 with classpath exception</a></p></td></tr></table></div></li></ul></li>
-<li>org.codehaus.jettison:jettison:jar:1.3.8 (compile) <img id="_img127" src="./images/icon_info_sml.gif" alt="[Information]" onclick="toggleDependencyDetails( '_dep126', '_img127' );" style="cursor: pointer; vertical-align: text-bottom;"></img><div id="_dep126" style="display:none">
+<li>org.codehaus.jettison:jettison:jar:1.3.8 (compile) <img id="_img123" src="./images/icon_info_sml.gif" alt="[Information]" onclick="toggleDependencyDetails( '_dep122', '_img123' );" style="cursor: pointer; vertical-align: text-bottom;"></img><div id="_dep122" style="display:none">
 <table border="0" class="table table-striped">
 <tr class="a">
 <th>Jettison</th></tr>
@@ -1833,7 +1815,7 @@ The following provides more details on the included cryptographic software:
 <p><b>Description: </b>A StAX implementation for JSON.</p>
 <p><b>URL: </b><a class="externalLink" href="https://github.com/jettison-json/jettison">https://github.com/jettison-json/jettison</a></p>
 <p><b>Project Licenses: </b><a class="externalLink" href="http://www.apache.org/licenses/LICENSE-2.0">Apache License, Version 2.0</a></p></td></tr></table></div></li>
-<li>org.apache.commons:commons-math3:jar:3.6.1 (compile) <img id="_img129" src="./images/icon_info_sml.gif" alt="[Information]" onclick="toggleDependencyDetails( '_dep128', '_img129' );" style="cursor: pointer; vertical-align: text-bottom;"></img><div id="_dep128" style="display:none">
+<li>org.apache.commons:commons-math3:jar:3.6.1 (compile) <img id="_img125" src="./images/icon_info_sml.gif" alt="[Information]" onclick="toggleDependencyDetails( '_dep124', '_img125' );" style="cursor: pointer; vertical-align: text-bottom;"></img><div id="_dep124" style="display:none">
 <table border="0" class="table table-striped">
 <tr class="a">
 <th>Apache Commons Math</th></tr>
@@ -1842,7 +1824,7 @@ The following provides more details on the included cryptographic software:
 <p><b>Description: </b>The Apache Commons Math project is a library of lightweight, self-contained mathematics and statistics components addressing the most common practical problems not immediately available in the Java programming language or commons-lang.</p>
 <p><b>URL: </b><a class="externalLink" href="http://commons.apache.org/proper/commons-math/">http://commons.apache.org/proper/commons-math/</a></p>
 <p><b>Project Licenses: </b><a class="externalLink" href="http://www.apache.org/licenses/LICENSE-2.0.txt">Apache License, Version 2.0</a></p></td></tr></table></div></li>
-<li>org.jamon:jamon-runtime:jar:2.4.1 (test) <img id="_img131" src="./images/icon_info_sml.gif" alt="[Information]" onclick="toggleDependencyDetails( '_dep130', '_img131' );" style="cursor: pointer; vertical-align: text-bottom;"></img><div id="_dep130" style="display:none">
+<li>org.jamon:jamon-runtime:jar:2.4.1 (test) <img id="_img127" src="./images/icon_info_sml.gif" alt="[Information]" onclick="toggleDependencyDetails( '_dep126', '_img127' );" style="cursor: pointer; vertical-align: text-bottom;"></img><div id="_dep126" style="display:none">
 <table border="0" class="table table-striped">
 <tr class="a">
 <th>jamon-runtime</th></tr>
@@ -1851,7 +1833,7 @@ The following provides more details on the included cryptographic software:
 <p><b>Description: </b>Jamon runtime support classes</p>
 <p><b>URL: </b><a class="externalLink" href="http://www.jamon.org/jamon-java-parent/jamon-runtime/">http://www.jamon.org/jamon-java-parent/jamon-runtime/</a></p>
 <p><b>Project Licenses: </b><a class="externalLink" href="http://www.mozilla.org/MPL/2.0">Mozilla Public License Version 2.0</a></p></td></tr></table></div></li>
-<li>javax.servlet:javax.servlet-api:jar:3.1.0 (test) <img id="_img133" src="./images/icon_info_sml.gif" alt="[Information]" onclick="toggleDependencyDetails( '_dep132', '_img133' );" style="cursor: pointer; vertical-align: text-bottom;"></img><div id="_dep132" style="display:none">
+<li>javax.servlet:javax.servlet-api:jar:3.1.0 (test) <img id="_img129" src="./images/icon_info_sml.gif" alt="[Information]" onclick="toggleDependencyDetails( '_dep128', '_img129' );" style="cursor: pointer; vertical-align: text-bottom;"></img><div id="_dep128" style="display:none">
 <table border="0" class="table table-striped">
 <tr class="a">
 <th>Java Servlet API</th></tr>
@@ -1860,7 +1842,7 @@ The following provides more details on the included cryptographic software:
 <p><b>Description: </b>Java.net - The Source for Java Technology Collaboration</p>
 <p><b>URL: </b><a class="externalLink" href="http://servlet-spec.java.net">http://servlet-spec.java.net</a></p>
 <p><b>Project Licenses: </b><a class="externalLink" href="https://glassfish.dev.java.net/nonav/public/CDDL+GPL.html">CDDL + GPLv2 with classpath exception</a></p></td></tr></table></div></li>
-<li>javax.ws.rs:javax.ws.rs-api:jar:2.0.1 (test) <img id="_img135" src="./images/icon_info_sml.gif" alt="[Information]" onclick="toggleDependencyDetails( '_dep134', '_img135' );" style="cursor: pointer; vertical-align: text-bottom;"></img><div id="_dep134" style="display:none">
+<li>javax.ws.rs:javax.ws.rs-api:jar:2.0.1 (test) <img id="_img131" src="./images/icon_info_sml.gif" alt="[Information]" onclick="toggleDependencyDetails( '_dep130', '_img131' );" style="cursor: pointer; vertical-align: text-bottom;"></img><div id="_dep130" style="display:none">
 <table border="0" class="table table-striped">
 <tr class="a">
 <th>javax.ws.rs-api</th></tr>
@@ -1869,7 +1851,7 @@ The following provides more details on the included cryptographic software:
 <p><b>Description: </b>Java.net - The Source for Java Technology Collaboration</p>
 <p><b>URL: </b><a class="externalLink" href="http://jax-rs-spec.java.net">http://jax-rs-spec.java.net</a></p>
 <p><b>Project Licenses: </b><a class="externalLink" href="http://glassfish.java.net/public/CDDL+GPL_1_1.html">CDDL 1.1</a>, <a class="externalLink" href="http://glassfish.java.net/public/CDDL+GPL_1_1.html">GPL2 w/ CPE</a></p></td></tr></table></div></li>
-<li>org.apache.htrace:htrace-core:jar:3.2.0-incubating (test) <img id="_img137" src="./images/icon_info_sml.gif" alt="[Information]" onclick="toggleDependencyDetails( '_dep136', '_img137' );" style="cursor: pointer; vertical-align: text-bottom;"></img><div id="_dep136" style="display:none">
+<li>org.apache.htrace:htrace-core:jar:3.2.0-incubating (test) <img id="_img133" src="./images/icon_info_sml.gif" alt="[Information]" onclick="toggleDependencyDetails( '_dep132', '_img133' );" style="cursor: pointer; vertical-align: text-bottom;"></img><div id="_dep132" style="display:none">
 <table border="0" class="table table-striped">
 <tr class="a">
 <th>htrace-core</th></tr>
@@ -1878,7 +1860,7 @@ The following provides more details on the included cryptographic software:
 <p><b>Description: </b>A tracing framework for use with distributed systems written in java</p>
 <p><b>URL: </b><a class="externalLink" href="http://incubator.apache.org/projects/htrace.html">http://incubator.apache.org/projects/htrace.html</a></p>
 <p><b>Project Licenses: </b><a class="externalLink" href="http://www.apache.org/licenses/LICENSE-2.0.txt">The Apache Software License, Version 2.0</a></p></td></tr></table></div></li>
-<li>com.lmax:disruptor:jar:3.3.6 (test) <img id="_img139" src="./images/icon_info_sml.gif" alt="[Information]" onclick="toggleDependencyDetails( '_dep138', '_img139' );" style="cursor: pointer; vertical-align: text-bottom;"></img><div id="_dep138" style="display:none">
+<li>com.lmax:disruptor:jar:3.3.6 (test) <img id="_img135" src="./images/icon_info_sml.gif" alt="[Information]" onclick="toggleDependencyDetails( '_dep134', '_img135' );" style="cursor: pointer; vertical-align: text-bottom;"></img><div id="_dep134" style="display:none">
 <table border="0" class="table table-striped">
 <tr class="a">
 <th>Disruptor Framework</th></tr>
@@ -1887,7 +1869,7 @@ The following provides more details on the included cryptographic software:
 <p><b>Description: </b>Disruptor - Concurrent Programming Framework</p>
 <p><b>URL: </b><a class="externalLink" href="http://lmax-exchange.github.com/disruptor">http://lmax-exchange.github.com/disruptor</a></p>
 <p><b>Project Licenses: </b><a class="externalLink" href="http://www.apache.org/licenses/LICENSE-2.0.txt">The Apache Software License, Version 2.0</a></p></td></tr></table></div></li>
-<li>org.apache.hadoop:hadoop-distcp:jar:2.7.4 (test) <img id="_img141" src="./images/icon_info_sml.gif" alt="[Information]" onclick="toggleDependencyDetails( '_dep140', '_img141' );" style="cursor: pointer; vertical-align: text-bottom;"></img><div id="_dep140" style="display:none">
+<li>org.apache.hadoop:hadoop-distcp:jar:2.7.4 (test) <img id="_img137" src="./images/icon_info_sml.gif" alt="[Information]" onclick="toggleDependencyDetails( '_dep136', '_img137' );" style="cursor: pointer; vertical-align: text-bottom;"></img><div id="_dep136" style="display:none">
 <table border="0" class="table table-striped">
 <tr class="a">
 <th>Apache Hadoop Distributed Copy</th></tr>
@@ -1895,7 +1877,7 @@ The following provides more details on the included cryptographic software:
 <td>
 <p><b>Description: </b>Apache Hadoop Distributed Copy</p>
 <p><b>Project Licenses: </b><a class="externalLink" href="http://www.apache.org/licenses/LICENSE-2.0.txt">Apache License, Version 2.0</a></p></td></tr></table></div></li>
-<li>org.apache.hadoop:hadoop-annotations:jar:2.7.4 (compile) <img id="_img143" src="./images/icon_info_sml.gif" alt="[Information]" onclick="toggleDependencyDetails( '_dep142', '_img143' );" style="cursor: pointer; vertical-align: text-bottom;"></img><div id="_dep142" style="display:none">
+<li>org.apache.hadoop:hadoop-annotations:jar:2.7.4 (compile) <img id="_img139" src="./images/icon_info_sml.gif" alt="[Information]" onclick="toggleDependencyDetails( '_dep138', '_img139' );" style="cursor: pointer; vertical-align: text-bottom;"></img><div id="_dep138" style="display:none">
 <table border="0" class="table table-striped">
 <tr class="a">
 <th>Apache Hadoop Annotations</th></tr>
@@ -1904,14 +1886,14 @@ The following provides more details on the included cryptographic software:
 <p><b>Description: </b>Apache Hadoop Annotations</p>
 <p><b>Project Licenses: </b><a class="externalLink" href="http://www.apache.org/licenses/LICENSE-2.0.txt">Apache License, Version 2.0</a></p></td></tr></table></div>
 <ul>
-<li>jdk.tools:jdk.tools:jar:1.8 (system) <img id="_img145" src="./images/icon_info_sml.gif" alt="[Information]" onclick="toggleDependencyDetails( '_dep144', '_img145' );" style="cursor: pointer; vertical-align: text-bottom;"></img><div id="_dep144" style="display:none">
+<li>jdk.tools:jdk.tools:jar:1.8 (system) <img id="_img141" src="./images/icon_info_sml.gif" alt="[Information]" onclick="toggleDependencyDetails( '_dep140', '_img141' );" style="cursor: pointer; vertical-align: text-bottom;"></img><div id="_dep140" style="display:none">
 <table border="0" class="table table-striped">
 <tr class="a">
 <th>jdk.tools:jdk.tools:jar:1.8</th></tr>
 <tr class="b">
 <td>
 <p><b>Description: </b>There is currently no description associated with this project.</p></td></tr></table></div></li></ul></li></ul></li>
-<li>org.apache.hbase:hbase-server:test-jar:tests:3.0.0-SNAPSHOT (test) <img id="_img147" src="./images/icon_info_sml.gif" alt="[Information]" onclick="toggleDependencyDetails( '_dep146', '_img147' );" style="cursor: pointer; vertical-align: text-bottom;"></img><div id="_dep146" style="display:none">
+<li>org.apache.hbase:hbase-server:test-jar:tests:3.0.0-SNAPSHOT (test) <img id="_img143" src="./images/icon_info_sml.gif" alt="[Information]" onclick="toggleDependencyDetails( '_dep142', '_img143' );" style="cursor: pointer; vertical-align: text-bottom;"></img><div id="_dep142" style="display:none">
 <table border="0" class="table table-striped">
 <tr class="a">
 <th>Apache HBase - Server</th></tr>
@@ -1920,7 +1902,7 @@ The following provides more details on the included cryptographic software:
 <p><b>Description: </b>Server functionality for HBase</p>
 <p><b>URL: </b><a class="externalLink" href="http://hbase.apache.org/hbase-build-configuration/hbase-server">http://hbase.apache.org/hbase-build-configuration/hbase-server</a></p>
 <p><b>Project Licenses: </b><a class="externalLink" href="https://www.apache.org/licenses/LICENSE-2.0.txt">Apache License, Version 2.0</a></p></td></tr></table></div></li>
-<li>org.apache.hbase:hbase-hadoop-compat:jar:3.0.0-SNAPSHOT (compile) <img id="_img149" src="./images/icon_info_sml.gif" alt="[Information]" onclick="toggleDependencyDetails( '_dep148', '_img149' );" style="cursor: pointer; vertical-align: text-bottom;"></img><div id="_dep148" style="display:none">
+<li>org.apache.hbase:hbase-hadoop-compat:jar:3.0.0-SNAPSHOT (compile) <img id="_img145" src="./images/icon_info_sml.gif" alt="[Information]" onclick="toggleDependencyDetails( '_dep144', '_img145' );" style="cursor: pointer; vertical-align: text-bottom;"></img><div id="_dep144" style="display:none">
 <table border="0" class="table table-striped">
 <tr class="a">
 <th>Apache HBase - Hadoop Compatibility</th></tr>
@@ -1930,7 +1912,7 @@ The following provides more details on the included cryptographic software:
         over hadoop version differences</p>
 <p><b>URL: </b><a class="externalLink" href="http://hbase.apache.org/hbase-build-configuration/hbase-hadoop-compat">http://hbase.apache.org/hbase-build-configuration/hbase-hadoop-compat</a></p>
 <p><b>Project Licenses: </b><a class="externalLink" href="https://www.apache.org/licenses/LICENSE-2.0.txt">Apache License, Version 2.0</a></p></td></tr></table></div></li>
-<li>org.apache.hbase:hbase-hadoop-compat:test-jar:tests:3.0.0-SNAPSHOT (test) <img id="_img151" src="./images/icon_info_sml.gif" alt="[Information]" onclick="toggleDependencyDetails( '_dep150', '_img151' );" style="cursor: pointer; vertical-align: text-bottom;"></img><div id="_dep150" style="display:none">
+<li>org.apache.hbase:hbase-hadoop-compat:test-jar:tests:3.0.0-SNAPSHOT (test) <img id="_img147" src="./images/icon_info_sml.gif" alt="[Information]" onclick="toggleDependencyDetails( '_dep146', '_img147' );" style="cursor: pointer; vertical-align: text-bottom;"></img><div id="_dep146" style="display:none">
 <table border="0" class="table table-striped">
 <tr class="a">
 <th>Apache HBase - Hadoop Compatibility</th></tr>
@@ -1940,7 +1922,7 @@ The following provides more details on the included cryptographic software:
         over hadoop version differences</p>
 <p><b>URL: </b><a class="externalLink" href="http://hbase.apache.org/hbase-build-configuration/hbase-hadoop-compat">http://hbase.apache.org/hbase-build-configuration/hbase-hadoop-compat</a></p>
 <p><b>Project Licenses: </b><a class="externalLink" href="https://www.apache.org/licenses/LICENSE-2.0.txt">Apache License, Version 2.0</a></p></td></tr></table></div></li>
-<li>org.apache.hbase:hbase-hadoop2-compat:jar:3.0.0-SNAPSHOT (compile) <img id="_img153" src="./images/icon_info_sml.gif" alt="[Information]" onclick="toggleDependencyDetails( '_dep152', '_img153' );" style="cursor: pointer; vertical-align: text-bottom;"></img><div id="_dep152" style="display:none">
+<li>org.apache.hbase:hbase-hadoop2-compat:jar:3.0.0-SNAPSHOT (compile) <img id="_img149" src="./images/icon_info_sml.gif" alt="[Information]" onclick="toggleDependencyDetails( '_dep148', '_img149' );" style="cursor: pointer; vertical-align: text-bottom;"></img><div id="_dep148" style="display:none">
 <table border="0" class="table table-striped">
 <tr class="a">
 <th>Apache HBase - Hadoop Two Compatibility</th></tr>
@@ -1950,7 +1932,7 @@ The following provides more details on the included cryptographic software:
         over hadoop version differences</p>
 <p><b>URL: </b><a class="externalLink" href="http://hbase.apache.org/hbase-build-configuration/hbase-hadoop2-compat">http://hbase.apache.org/hbase-build-configuration/hbase-hadoop2-compat</a></p>
 <p><b>Project Licenses: </b><a class="externalLink" href="https://www.apache.org/licenses/LICENSE-2.0.txt">Apache License, Version 2.0</a></p></td></tr></table></div></li>
-<li>org.apache.hbase:hbase-hadoop2-compat:test-jar:tests:3.0.0-SNAPSHOT (test) <img id="_img155" src="./images/icon_info_sml.gif" alt="[Information]" onclick="toggleDependencyDetails( '_dep154', '_img155' );" style="cursor: pointer; vertical-align: text-bottom;"></img><div id="_dep154" style="display:none">
+<li>org.apache.hbase:hbase-hadoop2-compat:test-jar:tests:3.0.0-SNAPSHOT (test) <img id="_img151" src="./images/icon_info_sml.gif" alt="[Information]" onclick="toggleDependencyDetails( '_dep150', '_img151' );" style="cursor: pointer; vertical-align: text-bottom;"></img><div id="_dep150" style="display:none">
 <table border="0" class="table table-striped">
 <tr class="a">
 <th>Apache HBase - Hadoop Two Compatibility</th></tr>
@@ -1960,7 +1942,7 @@ The following provides more details on the included cryptographic software:
         over hadoop version differences</p>
 <p><b>URL: </b><a class="externalLink" href="http://hbase.apache.org/hbase-build-configuration/hbase-hadoop2-compat">http://hbase.apache.org/hbase-build-configuration/hbase-hadoop2-compat</a></p>
 <p><b>Project Licenses: </b><a class="externalLink" href="https://www.apache.org/licenses/LICENSE-2.0.txt">Apache License, Version 2.0</a></p></td></tr></table></div></li>
-<li>org.slf4j:slf4j-log4j12:jar:1.7.24 (compile) <img id="_img157" src="./images/icon_info_sml.gif" alt="[Information]" onclick="toggleDependencyDetails( '_dep156', '_img157' );" style="cursor: pointer; vertical-align: text-bottom;"></img><div id="_dep156" style="display:none">
+<li>org.slf4j:slf4j-log4j12:jar:1.7.24 (compile) <img id="_img153" src="./images/icon_info_sml.gif" alt="[Information]" onclick="toggleDependencyDetails( '_dep152', '_img153' );" style="cursor: pointer; vertical-align: text-bottom;"></img><div id="_dep152" style="display:none">
 <table border="0" class="table table-striped">
 <tr class="a">
 <th>SLF4J LOG4J-12 Binding</th></tr>
@@ -1970,7 +1952,7 @@ The following provides more details on the included cryptographic software:
 <p><b>URL: </b><a class="externalLink" href="http://www.slf4j.org">http://www.slf4j.org</a></p>
 <p><b>Project Licenses: </b><a class="externalLink" href="http://www.opensource.org/licenses/mit-license.php">MIT License</a></p></td></tr></table></div>
 <ul>
-<li>org.slf4j:slf4j-api:jar:1.7.24 (compile) <img id="_img159" src="./images/icon_info_sml.gif" alt="[Information]" onclick="toggleDependencyDetails( '_dep158', '_img159' );" style="cursor: pointer; vertical-align: text-bottom;"></img><div id="_dep158" style="display:none">
+<li>org.slf4j:slf4j-api:jar:1.7.24 (compile) <img id="_img155" src="./images/icon_info_sml.gif" alt="[Information]" onclick="toggleDependencyDetails( '_dep154', '_img155' );" style="cursor: pointer; vertical-align: text-bottom;"></img><div id="_dep154" style="display:none">
 <table border="0" class="table table-striped">
 <tr class="a">
 <th>SLF4J API Module</th></tr>
@@ -1979,7 +1961,7 @@ The following provides more details on the included cryptographic software:
 <p><b>Description: </b>The slf4j API</p>
 <p><b>URL: </b><a class="externalLink" href="http://www.slf4j.org">http://www.slf4j.org</a></p>
 <p><b>Project Licenses: </b><a class="externalLink" href="http://www.opensource.org/licenses/mit-license.php">MIT License</a></p></td></tr></table></div></li></ul></li>
-<li>org.apache.hadoop:hadoop-common:jar:2.7.4 (compile) <img id="_img161" src="./images/icon_info_sml.gif" alt="[Information]" onclick="toggleDependencyDetails( '_dep160', '_img161' );" style="cursor: pointer; vertical-align: text-bottom;"></img><div id="_dep160" style="display:none">
+<li>org.apache.hadoop:hadoop-common:jar:2.7.4 (compile) <img id="_img157" src="./images/icon_info_sml.gif" alt="[Information]" onclick="toggleDependencyDetails( '_dep156', '_img157' );" style="cursor: pointer; vertical-align: text-bottom;"></img><div id="_dep156" style="display:none">
 <table border="0" class="table table-striped">
 <tr class="a">
 <th>Apache Hadoop Common</th></tr>
@@ -1988,7 +1970,7 @@ The following provides more details on the included cryptographic software:
 <p><b>Description: </b>Apache Hadoop Common</p>
 <p><b>Project Licenses: </b><a class="externalLink" href="http://www.apache.org/licenses/LICENSE-2.0.txt">Apache License, Version 2.0</a></p></td></tr></table></div>
 <ul>
-<li>com.google.guava:guava:jar:11.0.2 (compile) <img id="_img163" src="./images/icon_info_sml.gif" alt="[Information]" onclick="toggleDependencyDetails( '_dep162', '_img163' );" style="cursor: pointer; vertical-align: text-bottom;"></img><div id="_dep162" style="display:none">
+<li>com.google.guava:guava:jar:11.0.2 (compile) <img id="_img159" src="./images/icon_info_sml.gif" alt="[Information]" onclick="toggleDependencyDetails( '_dep158', '_img159' );" style="cursor: pointer; vertical-align: text-bottom;"></img><div id="_dep158" style="display:none">
 <table border="0" class="table table-striped">
 <tr class="a">
 <th>Guava: Google Core Libraries for Java</th></tr>
@@ -2006,7 +1988,7 @@ The following provides more details on the included cryptographic software:
     per the JSR-305 spec.</p>
 <p><b>URL: </b><a class="externalLink" href="http://code.google.com/p/guava-libraries/guava">http://code.google.com/p/guava-libraries/guava</a></p>
 <p><b>Project Licenses: </b><a class="externalLink" href="http://www.apache.org/licenses/LICENSE-2.0.txt">The Apache Software License, Version 2.0</a></p></td></tr></table></div></li>
-<li>xmlenc:xmlenc:jar:0.52 (compile) <img id="_img165" src="./images/icon_info_sml.gif" alt="[Information]" onclick="toggleDependencyDetails( '_dep164', '_img165' );" style="cursor: pointer; vertical-align: text-bottom;"></img><div id="_dep164" style="display:none">
+<li>xmlenc:xmlenc:jar:0.52 (compile) <img id="_img161" src="./images/icon_info_sml.gif" alt="[Information]" onclick="toggleDependencyDetails( '_dep160', '_img161' );" style="cursor: pointer; vertical-align: text-bottom;"></img><div id="_dep160" style="display:none">
 <table border="0" class="table table-striped">
 <tr class="a">
 <th>xmlenc Library</th></tr>
@@ -2015,7 +1997,7 @@ The following provides more details on the included cryptographic software:
 <p><b>Description: </b>xmlenc Library</p>
 <p><b>URL: </b><a class="externalLink" href="http://xmlenc.sourceforge.net">http://xmlenc.sourceforge.net</a></p>
 <p><b>Project Licenses: </b><a class="externalLink" href="http://www.opensource.org/licenses/bsd-license.php">The BSD License</a></p></td></tr></table></div></li>
-<li>commons-httpclient:commons-httpclient:jar:3.1 (compile) <img id="_img167" src="./images/icon_info_sml.gif" alt="[Information]" onclick="toggleDependencyDetails( '_dep166', '_img167' );" style="cursor: pointer; vertical-align: text-bottom;"></img><div id="_dep166" style="display:none">
+<li>commons-httpclient:commons-httpclient:jar:3.1 (compile) <img id="_img163" src="./images/icon_info_sml.gif" alt="[Information]" onclick="toggleDependencyDetails( '_dep162', '_img163' );" style="cursor: pointer; vertical-align: text-bottom;"></img><div id="_dep162" style="display:none">
 <table border="0" class="table table-striped">
 <tr class="a">
 <th>HttpClient</th></tr>
@@ -2024,7 +2006,7 @@ The following provides more details on the included cryptographic software:
 <p><b>Description: </b>The HttpClient  component supports the client-side of RFC 1945 (HTTP/1.0)  and RFC 2616 (HTTP/1.1) , several related specifications (RFC 2109 (Cookies) , RFC 2617 (HTTP Authentication) , etc.), and provides a framework by which new request types (methods) or HTTP extensions can be created easily.</p>
 <p><b>URL: </b><a class="externalLink" href="http://jakarta.apache.org/httpcomponents/httpclient-3.x/">http://jakarta.apache.org/httpcomponents/httpclient-3.x/</a></p>
 <p><b>Project Licenses: </b><a class="externalLink" href="http://www.apache.org/licenses/LICENSE-2.0">Apache License</a></p></td></tr></table></div></li>
-<li>commons-net:commons-net:jar:3.1 (compile) <img id="_img169" src="./images/icon_info_sml.gif" alt="[Information]" onclick="toggleDependencyDetails( '_dep168', '_img169' );" style="cursor: pointer; vertical-align: text-bottom;"></img><div id="_dep168" style="display:none">
+<li>commons-net:commons-net:jar:3.1 (compile) <img id="_img165" src="./images/icon_info_sml.gif" alt="[Information]" onclick="toggleDependencyDetails( '_dep164', '_img165' );" style="cursor: pointer; vertical-align: text-bottom;"></img><div id="_dep164" style="display:none">
 <table border="0" class="table table-striped">
 <tr class="a">
 <th>Commons Net</th></tr>
@@ -2034,7 +2016,7 @@ The following provides more details on the included cryptographic software:
 Supported protocols include: Echo, Finger, FTP, NNTP, NTP, POP3(S), SMTP(S), Telnet, Whois</p>
 <p><b>URL: </b><a class="externalLink" href="http://commons.apache.org/net/">http://commons.apache.org/net/</a></p>
 <p><b>Project Licenses: </b><a class="externalLink" href="http://www.apache.org/licenses/LICENSE-2.0.txt">The Apache Software License, Version 2.0</a></p></td></tr></table></div></li>
-<li>commons-collections:commons-collections:jar:3.2.2 (compile) <img id="_img171" src="./images/icon_info_sml.gif" alt="[Information]" onclick="toggleDependencyDetails( '_dep170', '_img171' );" style="cursor: pointer; vertical-align: text-bottom;"></img><div id="_dep170" style="display:none">
+<li>commons-collections:commons-collections:jar:3.2.2 (compile) <img id="_img167" src="./images/icon_info_sml.gif" alt="[Information]" onclick="toggleDependencyDetails( '_dep166', '_img167' );" style="cursor: pointer; vertical-align: text-bottom;"></img><div id="_dep166" style="display:none">
 <table border="0" class="table table-striped">
 <tr class="a">
 <th>Apache Commons Collections</th></tr>
@@ -2043,7 +2025,7 @@ Supported protocols include: Echo, Finger, FTP, NNTP, NTP, POP3(S), SMTP(S), Tel
 <p><b>Description: </b>Types that extend and augment the Java Collections Framework.</p>
 <p><b>URL: </b><a class="externalLink" href="http://commons.apache.org/collections/">http://commons.apache.org/collections/</a></p>
 <p><b>Project Licenses: </b><a class="externalLink" href="http://www.apache.org/licenses/LICENSE-2.0.txt">Apache License, Version 2.0</a></p></td></tr></table></div></li>
-<li>org.mortbay.jetty:jetty:jar:6.1.26 (compile) <img id="_img173" src="./images/icon_info_sml.gif" alt="[Information]" onclick="toggleDependencyDetails( '_dep172', '_img173' );" style="cursor: pointer; vertical-align: text-bottom;"></img><div id="_dep172" style="display:none">
+<li>org.mortbay.jetty:jetty:jar:6.1.26 (compile) <img id="_img169" src="./images/icon_info_sml.gif" alt="[Information]" onclick="toggleDependencyDetails( '_dep168', '_img169' );" style="cursor: pointer; vertical-align: text-bottom;"></img><div id="_dep168" style="display:none">
 <table border="0" class="table table-striped">
 <tr class="a">
 <th>Jetty Server</th></tr>
@@ -2052,7 +2034,7 @@ Supported protocols include: Echo, Finger, FTP, NNTP, NTP, POP3(S), SMTP(S), Tel
 <p><b>Description: </b>Jetty server core</p>
 <p><b>URL: </b><a class="externalLink" href="http://www.eclipse.org/jetty/jetty-parent/project/modules/jetty">http://www.eclipse.org/jetty/jetty-parent/project/modules/jetty</a></p>
 <p><b>Project Licenses: </b><a class="externalLink" href="http://www.apache.org/licenses/LICENSE-2.0">Apache Software License - Version 2.0</a>, <a class="externalLink" href="http://www.eclipse.org/org/documents/epl-v10.php">Eclipse Public License - Version 1.0</a></p></td></tr></table></div></li>
-<li>org.mortbay.jetty:jetty-util:jar:6.1.26 (compile) <img id="_img175" src="./images/icon_info_sml.gif" alt="[Information]" onclick="toggleDependencyDetails( '_dep174', '_img175' );" style="cursor: pointer; vertical-align: text-bottom;"></img><div id="_dep174" style="display:none">
+<li>org.mortbay.jetty:jetty-util:jar:6.1.26 (compile) <img id="_img171" src="./images/icon_info_sml.gif" alt="[Information]" onclick="toggleDependencyDetails( '_dep170', '_img171' );" style="cursor: pointer; vertical-align: text-bottom;"></img><div id="_dep170" style="display:none">
 <table border="0" class="table table-striped">
 <tr class="a">
 <th>Jetty Utilities</th></tr>
@@ -2061,7 +2043,7 @@ Supported protocols include: Echo, Finger, FTP, NNTP, NTP, POP3(S), SMTP(S), Tel
 <p><b>Description: </b>Utility classes for Jetty</p>
 <p><b>URL: </b><a class="externalLink" href="http://www.eclipse.org/jetty/jetty-parent/project/jetty-util">http://www.eclipse.org/jetty/jetty-parent/project/jetty-util</a></p>
 <p><b>Project Licenses: </b><a class="externalLink" href="http://www.apache.org/licenses/LICENSE-2.0">Apache Software License - Version 2.0</a>, <a class="externalLink" href="http://www.eclipse.org/org/documents/epl-v10.php">Eclipse Public License - Version 1.0</a></p></td></tr></table></div></li>
-<li>org.mortbay.jetty:jetty-sslengine:jar:6.1.26 (compile) <img id="_img177" src="./images/icon_info_sml.gif" alt="[Information]" onclick="toggleDependencyDetails( '_dep176', '_img177' );" style="cursor: pointer; vertical-align: text-bottom;"></img><div id="_dep176" style="display:none">
+<li>org.mortbay.jetty:jetty-sslengine:jar:6.1.26 (compile) <img id="_img173" src="./images/icon_info_sml.gif" alt="[Information]" onclick="toggleDependencyDetails( '_dep172', '_img173' );" style="cursor: pointer; vertical-align: text-bottom;"></img><div id="_dep172" style="display:none">
 <table border="0" class="table table-striped">
 <tr class="a">
 <th>Jetty SSLEngine</th></tr>
@@ -2070,7 +2052,7 @@ Supported protocols include: Echo, Finger, FTP, NNTP, NTP, POP3(S), SMTP(S), Tel
 <p><b>Description: </b>Parent pom for Jetty at Codehaus</p>
 <p><b>URL: </b><a class="externalLink" href="http://jetty.mortbay.org">http://jetty.mortbay.org</a></p>
 <p><b>Project Licenses: </b><a class="externalLink" href="http://www.apache.org/licenses/LICENSE-2.0">Apache License Version 2</a></p></td></tr></table></div></li>
-<li>com.sun.jersey:jersey-core:jar:1.9 (compile) <img id="_img179" src="./images/icon_info_sml.gif" alt="[Information]" onclick="toggleDependencyDetails( '_dep178', '_img179' );" style="cursor: pointer; vertical-align: text-bottom;"></img><div id="_dep178" style="display:none">
+<li>com.sun.jersey:jersey-core:jar:1.9 (compile) <img id="_img175" src="./images/icon_info_sml.gif" alt="[Information]" onclick="toggleDependencyDetails( '_dep174', '_img175' );" style="cursor: pointer; vertical-align: text-bottom;"></img><div id="_dep174" style="display:none">
 <table border="0" class="table table-striped">
 <tr class="a">
 <th>jersey-core</th></tr>
@@ -2081,7 +2063,7 @@ Supported protocols include: Echo, Finger, FTP, NNTP, NTP, POP3(S), SMTP(S), Tel
         RESTful Web services.</p>
 <p><b>URL: </b><a class="externalLink" href="https://jersey.java.net/jersey-core/">https://jersey.java.net/jersey-core/</a></p>
 <p><b>Project Licenses: </b><a class="externalLink" href="http://glassfish.java.net/public/CDDL+GPL_1_1.html">CDDL 1.1</a>, <a class="externalLink" href="http://glassfish.java.net/public/CDDL+GPL_1_1.html">GPL2 w/ CPE</a></p></td></tr></table></div></li>
-<li>com.sun.jersey:jersey-json:jar:1.9 (compile) <img id="_img181" src="./images/icon_info_sml.gif" alt="[Information]" onclick="toggleDependencyDetails( '_dep180', '_img181' );" style="cursor: pointer; vertical-align: text-bottom;"></img><div id="_dep180" style="display:none">
+<li>com.sun.jersey:jersey-json:jar:1.9 (compile) <img id="_img177" src="./images/icon_info_sml.gif" alt="[Information]" onclick="toggleDependencyDetails( '_dep176', '_img177' );" style="cursor: pointer; vertical-align: text-bottom;"></img><div id="_dep176" style="display:none">
 <table border="0" class="table table-striped">
 <tr class="a">
 <th>jersey-json</th></tr>
@@ -2093,7 +2075,7 @@ Supported protocols include: Echo, Finger, FTP, NNTP, NTP, POP3(S), SMTP(S), Tel
 <p><b>URL: </b><a class="externalLink" href="https://jersey.java.net/jersey-json/">https://jersey.java.net/jersey-json/</a></p>
 <p><b>Project Licenses: </b><a class="externalLink" href="http://glassfish.java.net/public/CDDL+GPL_1_1.html">CDDL 1.1</a>, <a class="externalLink" href="http://glassfish.java.net/public/CDDL+GPL_1_1.html">GPL2 w/ CPE</a></p></td></tr></table></div>
 <ul>
-<li>com.sun.xml.bind:jaxb-impl:jar:2.2.3-1 (compile) <img id="_img183" src="./images/icon_info_sml.gif" alt="[Information]" onclick="toggleDependencyDetails( '_dep182', '_img183' );" style="cursor: pointer; vertical-align: text-bottom;"></img><div id="_dep182" style="display:none">
+<li>com.sun.xml.bind:jaxb-impl:jar:2.2.3-1 (compile) <img id="_img179" src="./images/icon_info_sml.gif" alt="[Information]" onclick="toggleDependencyDetails( '_dep178', '_img179' );" style="cursor: pointer; vertical-align: text-bottom;"></img><div id="_dep178" style="display:none">
 <table border="0" class="table table-striped">
 <tr class="a">
 <th>JAXB RI</th></tr>
@@ -2102,7 +2084,7 @@ Supported protocols include: Echo, Finger, FTP, NNTP, NTP, POP3(S), SMTP(S), Tel
 <p><b>Description: </b>JAXB (JSR 222) reference implementation</p>
 <p><b>URL: </b><a class="externalLink" href="http://jaxb.java.net/">http://jaxb.java.net/</a></p>
 <p><b>Project Licenses: </b><a class="externalLink" href="https://glassfish.java.net/public/CDDL+GPL_1_1.html">CDDL 1.1</a>, <a class="externalLink" href="https://glassfish.java.net/public/CDDL+GPL_1_1.html">GPL2 w/ CPE</a></p></td></tr></table></div></li>
-<li>org.codehaus.jackson:jackson-jaxrs:jar:1.8.3 (compile) <img id="_img185" src="./images/icon_info_sml.gif" alt="[Information]" onclick="toggleDependencyDetails( '_dep184', '_img185' );" style="cursor: pointer; vertical-align: text-bottom;"></img><div id="_dep184" style="display:none">
+<li>org.codehaus.jackson:jackson-jaxrs:jar:1.8.3 (compile) <img id="_img181" src="./images/icon_info_sml.gif" alt="[Information]" onclick="toggleDependencyDetails( '_dep180', '_img181' );" style="cursor: pointer; vertical-align: text-bottom;"></img><div id="_dep180" style="display:none">
 <table border="0" class="table table-striped">
 <tr class="a">
 <th>JAX-RS provider for JSON content type</th></tr>
@@ -2112,7 +2094,7 @@ Supported protocols include: Echo, Finger, FTP, NNTP, NTP, POP3(S), SMTP(S), Tel
 Jackson JSON processor's data binding functionality.</p>
 <p><b>URL: </b><a class="externalLink" href="http://jackson.codehaus.org">http://jackson.codehaus.org</a></p>
 <p><b>Project Licenses: </b><a class="externalLink" href="http://www.apache.org/licenses/LICENSE-2.0.txt">The Apache Software License, Version 2.0</a>, <a class="externalLink" href="http://www.fsf.org/licensing/licenses/lgpl.txt">GNU Lesser General Public License (LGPL), Version 2.1</a></p></td></tr></table></div></li>
-<li>org.codehaus.jackson:jackson-xc:jar:1.8.3 (compile) <img id="_img187" src="./images/icon_info_sml.gif" alt="[Information]" onclick="toggleDependencyDetails( '_dep186', '_img187' );" style="cursor: pointer; vertical-align: text-bottom;"></img><div id="_dep186" style="display:none">
+<li>org.codehaus.jackson:jackson-xc:jar:1.8.3 (compile) <img id="_img183" src="./images/icon_info_sml.gif" alt="[Information]" onclick="toggleDependencyDetails( '_dep182', '_img183' );" style="cursor: pointer; vertical-align: text-bottom;"></img><div id="_dep182" style="display:none">
 <table border="0" class="table table-striped">
 <tr class="a">
 <th>Xml Compatibility extensions for Jackson</th></tr>
@@ -2122,7 +2104,7 @@ Jackson JSON processor's data binding functionality.</p>
 Jackson JSON processor's data binding functionality.</p>
 <p><b>URL: </b><a class="externalLink" href="http://jackson.codehaus.org">http://jackson.codehaus.org</a></p>
 <p><b>Project Licenses: </b><a class="externalLink" href="http://www.apache.org/licenses/LICENSE-2.0.txt">The Apache Software License, Version 2.0</a>, <a class="externalLink" href="http://www.fsf.org/licensing/licenses/lgpl.txt">GNU Lesser General Public License (LGPL), Version 2.1</a></p></td></tr></table></div></li></ul></li>
-<li>com.sun.jersey:jersey-server:jar:1.9 (compile) <img id="_img189" src="./images/icon_info_sml.gif" alt="[Information]" onclick="toggleDependencyDetails( '_dep188', '_img189' );" style="cursor: pointer; vertical-align: text-bottom;"></img><div id="_dep188" style="display:none">
+<li>com.sun.jersey:jersey-server:jar:1.9 (compile) <img id="_img185" src="./images/icon_info_sml.gif" alt="[Information]" onclick="toggleDependencyDetails( '_dep184', '_img185' );" style="cursor: pointer; vertical-align: text-bottom;"></img><div id="_dep184" style="display:none">
 <table border="0" class="table table-striped">
 <tr class="a">
 <th>jersey-server</th></tr>
@@ -2134,7 +2116,7 @@ Jackson JSON processor's data binding functionality.</p>
 <p><b>URL: </b><a class="externalLink" href="https://jersey.java.net/jersey-server/">https://jersey.java.net/jersey-server/</a></p>
 <p><b>Project Licenses: </b><a class="externalLink" href="http://glassfish.java.net/public/CDDL+GPL_1_1.html">CDDL 1.1</a>, <a class="externalLink" href="http://glassfish.java.net/public/CDDL+GPL_1_1.html">GPL2 w/ CPE</a></p></td></tr></table></div>
 <ul>
-<li>asm:asm:jar:3.1 (compile) <img id="_img191" src="./images/icon_info_sml.gif" alt="[Information]" onclick="toggleDependencyDetails( '_dep190', '_img191' );" style="cursor: pointer; vertical-align: text-bottom;"></img><div id="_dep190" style="display:none">
+<li>asm:asm:jar:3.1 (compile) <img id="_img187" src="./images/icon_info_sml.gif" alt="[Information]" onclick="toggleDependencyDetails( '_dep186', '_img187' );" style="cursor: pointer; vertical-align: text-bottom;"></img><div id="_dep186" style="display:none">
 <table border="0" class="table table-striped">
 <tr class="a">
 <th>ASM Core</th></tr>
@@ -2143,7 +2125,7 @@ Jackson JSON processor's data binding functionality.</p>
 <p><b>Description: </b>A very small and fast Java bytecode manipulation framework</p>
 <p><b>URL: </b><a class="externalLink" href="http://asm.objectweb.org/asm/">http://asm.objectweb.org/asm/</a></p>
 <p><b>Project Licenses: </b>No licenses are defined for this project.</p></td></tr></table></div></li></ul></li>
-<li>net.java.dev.jets3t:jets3t:jar:0.9.0 (compile) <img id="_img193" src="./images/icon_info_sml.gif" alt="[Information]" onclick="toggleDependencyDetails( '_dep192', '_img193' );" style="cursor: pointer; vertical-align: text-bottom;"></img><div id="_dep192" style="display:none">
+<li>net.java.dev.jets3t:jets3t:jar:0.9.0 (compile) <img id="_img189" src="./images/icon_info_sml.gif" alt="[Information]" onclick="toggleDependencyDetails( '_dep188', '_img189' );" style="cursor: pointer; vertical-align: text-bottom;"></img><div id="_dep188" style="display:none">
 <table border="0" class="table table-striped">
 <tr class="a">
 <th>An open source Java toolkit for Amazon S3</th></tr>
@@ -2153,7 +2135,7 @@ Jackson JSON processor's data binding functionality.</p>
 <p><b>URL: </b><a class="externalLink" href="http://www.jets3t.org">http://www.jets3t.org</a></p>
 <p><b>Project Licenses: </b><a class="externalLink" href="http://www.apache.org/licenses/LICENSE-2.0">Apache License, Version 2.0</a></p></td></tr></table></div>
 <ul>
-<li>org.apache.httpcomponents:httpcore:jar:4.4.6 (compile) <img id="_img195" src="./images/icon_info_sml.gif" alt="[Information]" onclick="toggleDependencyDetails( '_dep194', '_img195' );" style="cursor: pointer; vertical-align: text-bottom;"></img><div id="_dep194" style="display:none">
+<li>org.apache.httpcomponents:httpcore:jar:4.4.6 (compile) <img id="_img191" src="./images/icon_info_sml.gif" alt="[Information]" onclick="toggleDependencyDetails( '_dep190', '_img191' );" style="cursor: pointer; vertical-align: text-bottom;"></img><div id="_dep190" style="display:none">
 <table border="0" class="table table-striped">
 <tr class="a">
 <th>Apache HttpCore</th></tr>
@@ -2162,7 +2144,7 @@ Jackson JSON processor's data binding functionality.</p>
 <p><b>Description: </b>Apache HttpComponents Core (blocking I/O)</p>
 <p><b>URL: </b><a class="externalLink" href="http://hc.apache.org/httpcomponents-core-ga">http://hc.apache.org/httpcomponents-core-ga</a></p>
 <p><b>Project Licenses: </b><a class="externalLink" href="http://www.apache.org/licenses/LICENSE-2.0.txt">Apache License, Version 2.0</a></p></td></tr></table></div></li>
-<li>com.jamesmurty.utils:java-xmlbuilder:jar:0.4 (compile) <img id="_img197" src="./images/icon_info_sml.gif" alt="[Information]" onclick="toggleDependencyDetails( '_dep196', '_img197' );" style="cursor: pointer; vertical-align: text-bottom;"></img><div id="_dep196" style="display:none">
+<li>com.jamesmurty.utils:java-xmlbuilder:jar:0.4 (compile) <img id="_img193" src="./images/icon_info_sml.gif" alt="[Information]" onclick="toggleDependencyDetails( '_dep192', '_img193' );" style="cursor: pointer; vertical-align: text-bottom;"></img><div id="_dep192" style="display:none">
 <table border="0" class="table table-striped">
 <tr class="a">
 <th>java-xmlbuilder</th></tr>
@@ -2171,7 +2153,7 @@ Jackson JSON processor's data binding functionality.</p>
 <p><b>Description: </b>XML Builder is a utility that creates simple XML documents using relatively sparse Java code</p>
 <p><b>URL: </b><a class="externalLink" href="http://code.google.com/p/java-xmlbuilder/">http://code.google.com/p/java-xmlbuilder/</a></p>
 <p><b>Project Licenses: </b><a class="externalLink" href="http://www.apache.org/licenses/LICENSE-2.0">Apache License, Version 2.0</a></p></td></tr></table></div></li></ul></li>
-<li>commons-lang:commons-lang:jar:2.6 (compile) <img id="_img199" src="./images/icon_info_sml.gif" alt="[Information]" onclick="toggleDependencyDetails( '_dep198', '_img199' );" style="cursor: pointer; vertical-align: text-bottom;"></img><div id="_dep198" style="display:none">
+<li>commons-lang:commons-lang:jar:2.6 (compile) <img id="_img195" src="./images/icon_info_sml.gif" alt="[Information]" onclick="toggleDependencyDetails( '_dep194', '_img195' );" style="cursor: pointer; vertical-align: text-bottom;"></img><div id="_dep194" style="display:none">
 <table border="0" class="table table-striped">
 <tr class="a">
 <th>Commons Lang</th></tr>
@@ -2182,7 +2164,7 @@ Jackson JSON processor's data binding functionality.</p>
         standard as to justify existence in java.lang.</p>
 <p><b>URL: </b><a class="externalLink" href="http://commons.apache.org/lang/">http://commons.apache.org/lang/</a></p>
 <p><b>Project Licenses: </b><a class="externalLink" href="http://www.apache.org/licenses/LICENSE-2.0.txt">The Apache Software License, Version 2.0</a></p></td></tr></table></div></li>
-<li>commons-configuration:commons-configuration:jar:1.6 (compile) <img id="_img201" src="./images/icon_info_sml.gif" alt="[Information]" onclick="toggleDependencyDetails( '_dep200', '_img201' );" style="cursor: pointer; vertical-align: text-bottom;"></img><div id="_dep200" style="display:none">
+<li>commons-configuration:commons-configuration:jar:1.6 (compile) <img id="_img197" src="./images/icon_info_sml.gif" alt="[Information]" onclick="toggleDependencyDetails( '_dep196', '_img197' );" style="cursor: pointer; vertical-align: text-bottom;"></img><div id="_dep196" style="display:none">
 <table border="0" class="table table-striped">
 <tr class="a">
 <th>Commons Configuration</th></tr>
@@ -2193,7 +2175,7 @@ Jackson JSON processor's data binding functionality.</p>
 <p><b>URL: </b>http://commons.apache.org/${pom.artifactId.substring(8)}/</p>
 <p><b>Project Licenses: </b><a href="/LICENSE.txt">The Apache Software License, Version 2.0</a></p></td></tr></table></div>
 <ul>
-<li>commons-digester:commons-digester:jar:1.8 (compile) <img id="_img203" src="./images/icon_info_sml.gif" alt="[Information]" onclick="toggleDependencyDetails( '_dep202', '_img203' );" style="cursor: pointer; vertical-align: text-bottom;"></img><div id="_dep202" style="display:none">
+<li>commons-digester:commons-digester:jar:1.8 (compile) <img id="_img199" src="./images/icon_info_sml.gif" alt="[Information]" onclick="toggleDependencyDetails( '_dep198', '_img199' );" style="cursor: pointer; vertical-align: text-bottom;"></img><div id="_dep198" style="display:none">
 <table border="0" class="table table-striped">
 <tr class="a">
 <th>Digester</th></tr>
@@ -2204,7 +2186,7 @@ Jackson JSON processor's data binding functionality.</p>
     pattern of nested XML elements is recognized.</p>
 <p><b>URL: </b><a class="externalLink" href="http://jakarta.apache.org/commons/digester/">http://jakarta.apache.org/commons/digester/</a></p>
 <p><b>Project Licenses: </b><a href="/LICENSE.txt">The Apache Software License, Version 2.0</a></p></td></tr></table></div></li>
-<li>commons-beanutils:commons-beanutils-core:jar:1.8.0 (compile) <img id="_img205" src="./images/icon_info_sml.gif" alt="[Information]" onclick="toggleDependencyDetails( '_dep204', '_img205' );" style="cursor: pointer; vertical-align: text-bottom;"></img><div id="_dep204" style="display:none">
+<li>commons-beanutils:commons-beanutils-core:jar:1.8.0 (compile) <img id="_img201" src="./images/icon_info_sml.gif" alt="[Information]" onclick="toggleDependencyDetails( '_dep200', '_img201' );" style="cursor: pointer; vertical-align: text-bottom;"></img><div id="_dep200" style="display:none">
 <table border="0" class="table table-striped">
 <tr class="a">
 <th>Commons BeanUtils Core</th></tr>
@@ -2217,7 +2199,7 @@ Jackson JSON processor's data binding functionality.</p>
     and users.</p>
 <p><b>URL: </b><a class="externalLink" href="http://commons.apache.org/beanutils/">http://commons.apa

<TRUNCATED>

[21/51] [partial] hbase-site git commit: Published site at .

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/c54c242b/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/HRegion.ReplayBatchOperation.html
----------------------------------------------------------------------
diff --git a/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/HRegion.ReplayBatchOperation.html b/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/HRegion.ReplayBatchOperation.html
index 3edfbef..9707b2c 100644
--- a/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/HRegion.ReplayBatchOperation.html
+++ b/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/HRegion.ReplayBatchOperation.html
@@ -2459,5936 +2459,5935 @@
 <span class="sourceLineNo">2451</span>      }<a name="line.2451"></a>
 <span class="sourceLineNo">2452</span><a name="line.2452"></a>
 <span class="sourceLineNo">2453</span>      for (HStore s : storesToFlush) {<a name="line.2453"></a>
-<span class="sourceLineNo">2454</span>        MemStoreSize flushableSize = s.getFlushableSize();<a name="line.2454"></a>
-<span class="sourceLineNo">2455</span>        totalSizeOfFlushableStores.incMemStoreSize(flushableSize);<a name="line.2455"></a>
-<span class="sourceLineNo">2456</span>        storeFlushCtxs.put(s.getColumnFamilyDescriptor().getName(),<a name="line.2456"></a>
-<span class="sourceLineNo">2457</span>          s.createFlushContext(flushOpSeqId, tracker));<a name="line.2457"></a>
-<span class="sourceLineNo">2458</span>        // for writing stores to WAL<a name="line.2458"></a>
-<span class="sourceLineNo">2459</span>        committedFiles.put(s.getColumnFamilyDescriptor().getName(), null);<a name="line.2459"></a>
-<span class="sourceLineNo">2460</span>        storeFlushableSize.put(s.getColumnFamilyDescriptor().getName(), flushableSize);<a name="line.2460"></a>
-<span class="sourceLineNo">2461</span>      }<a name="line.2461"></a>
-<span class="sourceLineNo">2462</span><a name="line.2462"></a>
-<span class="sourceLineNo">2463</span>      // write the snapshot start to WAL<a name="line.2463"></a>
-<span class="sourceLineNo">2464</span>      if (wal != null &amp;&amp; !writestate.readOnly) {<a name="line.2464"></a>
-<span class="sourceLineNo">2465</span>        FlushDescriptor desc = ProtobufUtil.toFlushDescriptor(FlushAction.START_FLUSH,<a name="line.2465"></a>
-<span class="sourceLineNo">2466</span>            getRegionInfo(), flushOpSeqId, committedFiles);<a name="line.2466"></a>
-<span class="sourceLineNo">2467</span>        // No sync. Sync is below where no updates lock and we do FlushAction.COMMIT_FLUSH<a name="line.2467"></a>
-<span class="sourceLineNo">2468</span>        WALUtil.writeFlushMarker(wal, this.getReplicationScope(), getRegionInfo(), desc, false,<a name="line.2468"></a>
-<span class="sourceLineNo">2469</span>            mvcc);<a name="line.2469"></a>
-<span class="sourceLineNo">2470</span>      }<a name="line.2470"></a>
-<span class="sourceLineNo">2471</span><a name="line.2471"></a>
-<span class="sourceLineNo">2472</span>      // Prepare flush (take a snapshot)<a name="line.2472"></a>
-<span class="sourceLineNo">2473</span>      for (StoreFlushContext flush : storeFlushCtxs.values()) {<a name="line.2473"></a>
-<span class="sourceLineNo">2474</span>        flush.prepare();<a name="line.2474"></a>
-<span class="sourceLineNo">2475</span>      }<a name="line.2475"></a>
-<span class="sourceLineNo">2476</span>    } catch (IOException ex) {<a name="line.2476"></a>
-<span class="sourceLineNo">2477</span>      doAbortFlushToWAL(wal, flushOpSeqId, committedFiles);<a name="line.2477"></a>
-<span class="sourceLineNo">2478</span>      throw ex;<a name="line.2478"></a>
-<span class="sourceLineNo">2479</span>    } finally {<a name="line.2479"></a>
-<span class="sourceLineNo">2480</span>      this.updatesLock.writeLock().unlock();<a name="line.2480"></a>
-<span class="sourceLineNo">2481</span>    }<a name="line.2481"></a>
-<span class="sourceLineNo">2482</span>    String s = "Finished memstore snapshotting " + this + ", syncing WAL and waiting on mvcc, " +<a name="line.2482"></a>
-<span class="sourceLineNo">2483</span>        "flushsize=" + totalSizeOfFlushableStores;<a name="line.2483"></a>
-<span class="sourceLineNo">2484</span>    status.setStatus(s);<a name="line.2484"></a>
-<span class="sourceLineNo">2485</span>    doSyncOfUnflushedWALChanges(wal, getRegionInfo());<a name="line.2485"></a>
-<span class="sourceLineNo">2486</span>    return new PrepareFlushResult(storeFlushCtxs, committedFiles, storeFlushableSize, startTime,<a name="line.2486"></a>
-<span class="sourceLineNo">2487</span>        flushOpSeqId, flushedSeqId, totalSizeOfFlushableStores);<a name="line.2487"></a>
-<span class="sourceLineNo">2488</span>  }<a name="line.2488"></a>
-<span class="sourceLineNo">2489</span><a name="line.2489"></a>
-<span class="sourceLineNo">2490</span>  /**<a name="line.2490"></a>
-<span class="sourceLineNo">2491</span>   * Utility method broken out of internalPrepareFlushCache so that method is smaller.<a name="line.2491"></a>
-<span class="sourceLineNo">2492</span>   */<a name="line.2492"></a>
-<span class="sourceLineNo">2493</span>  private void logFatLineOnFlush(Collection&lt;HStore&gt; storesToFlush, long sequenceId) {<a name="line.2493"></a>
-<span class="sourceLineNo">2494</span>    if (!LOG.isInfoEnabled()) {<a name="line.2494"></a>
-<span class="sourceLineNo">2495</span>      return;<a name="line.2495"></a>
-<span class="sourceLineNo">2496</span>    }<a name="line.2496"></a>
-<span class="sourceLineNo">2497</span>    // Log a fat line detailing what is being flushed.<a name="line.2497"></a>
-<span class="sourceLineNo">2498</span>    StringBuilder perCfExtras = null;<a name="line.2498"></a>
-<span class="sourceLineNo">2499</span>    if (!isAllFamilies(storesToFlush)) {<a name="line.2499"></a>
-<span class="sourceLineNo">2500</span>      perCfExtras = new StringBuilder();<a name="line.2500"></a>
-<span class="sourceLineNo">2501</span>      for (HStore store: storesToFlush) {<a name="line.2501"></a>
-<span class="sourceLineNo">2502</span>        perCfExtras.append("; ").append(store.getColumnFamilyName());<a name="line.2502"></a>
-<span class="sourceLineNo">2503</span>        perCfExtras.append("=")<a name="line.2503"></a>
-<span class="sourceLineNo">2504</span>            .append(StringUtils.byteDesc(store.getFlushableSize().getDataSize()));<a name="line.2504"></a>
-<span class="sourceLineNo">2505</span>      }<a name="line.2505"></a>
-<span class="sourceLineNo">2506</span>    }<a name="line.2506"></a>
-<span class="sourceLineNo">2507</span>    LOG.info("Flushing " + + storesToFlush.size() + "/" + stores.size() +<a name="line.2507"></a>
-<span class="sourceLineNo">2508</span>        " column families, memstore=" + StringUtils.byteDesc(this.memstoreDataSize.get()) +<a name="line.2508"></a>
-<span class="sourceLineNo">2509</span>        ((perCfExtras != null &amp;&amp; perCfExtras.length() &gt; 0)? perCfExtras.toString(): "") +<a name="line.2509"></a>
-<span class="sourceLineNo">2510</span>        ((wal != null) ? "" : "; WAL is null, using passed sequenceid=" + sequenceId));<a name="line.2510"></a>
-<span class="sourceLineNo">2511</span>  }<a name="line.2511"></a>
-<span class="sourceLineNo">2512</span><a name="line.2512"></a>
-<span class="sourceLineNo">2513</span>  private void doAbortFlushToWAL(final WAL wal, final long flushOpSeqId,<a name="line.2513"></a>
-<span class="sourceLineNo">2514</span>      final Map&lt;byte[], List&lt;Path&gt;&gt; committedFiles) {<a name="line.2514"></a>
-<span class="sourceLineNo">2515</span>    if (wal == null) return;<a name="line.2515"></a>
-<span class="sourceLineNo">2516</span>    try {<a name="line.2516"></a>
-<span class="sourceLineNo">2517</span>      FlushDescriptor desc = ProtobufUtil.toFlushDescriptor(FlushAction.ABORT_FLUSH,<a name="line.2517"></a>
-<span class="sourceLineNo">2518</span>          getRegionInfo(), flushOpSeqId, committedFiles);<a name="line.2518"></a>
-<span class="sourceLineNo">2519</span>      WALUtil.writeFlushMarker(wal, this.getReplicationScope(), getRegionInfo(), desc, false,<a name="line.2519"></a>
-<span class="sourceLineNo">2520</span>          mvcc);<a name="line.2520"></a>
-<span class="sourceLineNo">2521</span>    } catch (Throwable t) {<a name="line.2521"></a>
-<span class="sourceLineNo">2522</span>      LOG.warn("Received unexpected exception trying to write ABORT_FLUSH marker to WAL:" +<a name="line.2522"></a>
-<span class="sourceLineNo">2523</span>          StringUtils.stringifyException(t));<a name="line.2523"></a>
-<span class="sourceLineNo">2524</span>      // ignore this since we will be aborting the RS with DSE.<a name="line.2524"></a>
-<span class="sourceLineNo">2525</span>    }<a name="line.2525"></a>
-<span class="sourceLineNo">2526</span>    // we have called wal.startCacheFlush(), now we have to abort it<a name="line.2526"></a>
-<span class="sourceLineNo">2527</span>    wal.abortCacheFlush(this.getRegionInfo().getEncodedNameAsBytes());<a name="line.2527"></a>
-<span class="sourceLineNo">2528</span>  }<a name="line.2528"></a>
-<span class="sourceLineNo">2529</span><a name="line.2529"></a>
-<span class="sourceLineNo">2530</span>  /**<a name="line.2530"></a>
-<span class="sourceLineNo">2531</span>   * Sync unflushed WAL changes. See HBASE-8208 for details<a name="line.2531"></a>
-<span class="sourceLineNo">2532</span>   */<a name="line.2532"></a>
-<span class="sourceLineNo">2533</span>  private static void doSyncOfUnflushedWALChanges(final WAL wal, final RegionInfo hri)<a name="line.2533"></a>
-<span class="sourceLineNo">2534</span>  throws IOException {<a name="line.2534"></a>
-<span class="sourceLineNo">2535</span>    if (wal == null) {<a name="line.2535"></a>
-<span class="sourceLineNo">2536</span>      return;<a name="line.2536"></a>
-<span class="sourceLineNo">2537</span>    }<a name="line.2537"></a>
-<span class="sourceLineNo">2538</span>    try {<a name="line.2538"></a>
-<span class="sourceLineNo">2539</span>      wal.sync(); // ensure that flush marker is sync'ed<a name="line.2539"></a>
-<span class="sourceLineNo">2540</span>    } catch (IOException ioe) {<a name="line.2540"></a>
-<span class="sourceLineNo">2541</span>      wal.abortCacheFlush(hri.getEncodedNameAsBytes());<a name="line.2541"></a>
-<span class="sourceLineNo">2542</span>      throw ioe;<a name="line.2542"></a>
-<span class="sourceLineNo">2543</span>    }<a name="line.2543"></a>
-<span class="sourceLineNo">2544</span>  }<a name="line.2544"></a>
-<span class="sourceLineNo">2545</span><a name="line.2545"></a>
-<span class="sourceLineNo">2546</span>  /**<a name="line.2546"></a>
-<span class="sourceLineNo">2547</span>   * @return True if passed Set is all families in the region.<a name="line.2547"></a>
-<span class="sourceLineNo">2548</span>   */<a name="line.2548"></a>
-<span class="sourceLineNo">2549</span>  private boolean isAllFamilies(Collection&lt;HStore&gt; families) {<a name="line.2549"></a>
-<span class="sourceLineNo">2550</span>    return families == null || this.stores.size() == families.size();<a name="line.2550"></a>
-<span class="sourceLineNo">2551</span>  }<a name="line.2551"></a>
-<span class="sourceLineNo">2552</span><a name="line.2552"></a>
-<span class="sourceLineNo">2553</span>  /**<a name="line.2553"></a>
-<span class="sourceLineNo">2554</span>   * Writes a marker to WAL indicating a flush is requested but cannot be complete due to various<a name="line.2554"></a>
-<span class="sourceLineNo">2555</span>   * reasons. Ignores exceptions from WAL. Returns whether the write succeeded.<a name="line.2555"></a>
-<span class="sourceLineNo">2556</span>   * @param wal<a name="line.2556"></a>
-<span class="sourceLineNo">2557</span>   * @return whether WAL write was successful<a name="line.2557"></a>
-<span class="sourceLineNo">2558</span>   */<a name="line.2558"></a>
-<span class="sourceLineNo">2559</span>  private boolean writeFlushRequestMarkerToWAL(WAL wal, boolean writeFlushWalMarker) {<a name="line.2559"></a>
-<span class="sourceLineNo">2560</span>    if (writeFlushWalMarker &amp;&amp; wal != null &amp;&amp; !writestate.readOnly) {<a name="line.2560"></a>
-<span class="sourceLineNo">2561</span>      FlushDescriptor desc = ProtobufUtil.toFlushDescriptor(FlushAction.CANNOT_FLUSH,<a name="line.2561"></a>
-<span class="sourceLineNo">2562</span>        getRegionInfo(), -1, new TreeMap&lt;&gt;(Bytes.BYTES_COMPARATOR));<a name="line.2562"></a>
-<span class="sourceLineNo">2563</span>      try {<a name="line.2563"></a>
-<span class="sourceLineNo">2564</span>        WALUtil.writeFlushMarker(wal, this.getReplicationScope(), getRegionInfo(), desc, true,<a name="line.2564"></a>
-<span class="sourceLineNo">2565</span>            mvcc);<a name="line.2565"></a>
-<span class="sourceLineNo">2566</span>        return true;<a name="line.2566"></a>
-<span class="sourceLineNo">2567</span>      } catch (IOException e) {<a name="line.2567"></a>
-<span class="sourceLineNo">2568</span>        LOG.warn(getRegionInfo().getEncodedName() + " : "<a name="line.2568"></a>
-<span class="sourceLineNo">2569</span>            + "Received exception while trying to write the flush request to wal", e);<a name="line.2569"></a>
-<span class="sourceLineNo">2570</span>      }<a name="line.2570"></a>
-<span class="sourceLineNo">2571</span>    }<a name="line.2571"></a>
-<span class="sourceLineNo">2572</span>    return false;<a name="line.2572"></a>
-<span class="sourceLineNo">2573</span>  }<a name="line.2573"></a>
-<span class="sourceLineNo">2574</span><a name="line.2574"></a>
-<span class="sourceLineNo">2575</span>  @edu.umd.cs.findbugs.annotations.SuppressWarnings(value="NN_NAKED_NOTIFY",<a name="line.2575"></a>
-<span class="sourceLineNo">2576</span>      justification="Intentional; notify is about completed flush")<a name="line.2576"></a>
-<span class="sourceLineNo">2577</span>  protected FlushResultImpl internalFlushCacheAndCommit(WAL wal, MonitoredTask status,<a name="line.2577"></a>
-<span class="sourceLineNo">2578</span>      PrepareFlushResult prepareResult, Collection&lt;HStore&gt; storesToFlush) throws IOException {<a name="line.2578"></a>
-<span class="sourceLineNo">2579</span>    // prepare flush context is carried via PrepareFlushResult<a name="line.2579"></a>
-<span class="sourceLineNo">2580</span>    TreeMap&lt;byte[], StoreFlushContext&gt; storeFlushCtxs = prepareResult.storeFlushCtxs;<a name="line.2580"></a>
-<span class="sourceLineNo">2581</span>    TreeMap&lt;byte[], List&lt;Path&gt;&gt; committedFiles = prepareResult.committedFiles;<a name="line.2581"></a>
-<span class="sourceLineNo">2582</span>    long startTime = prepareResult.startTime;<a name="line.2582"></a>
-<span class="sourceLineNo">2583</span>    long flushOpSeqId = prepareResult.flushOpSeqId;<a name="line.2583"></a>
-<span class="sourceLineNo">2584</span>    long flushedSeqId = prepareResult.flushedSeqId;<a name="line.2584"></a>
-<span class="sourceLineNo">2585</span><a name="line.2585"></a>
-<span class="sourceLineNo">2586</span>    String s = "Flushing stores of " + this;<a name="line.2586"></a>
-<span class="sourceLineNo">2587</span>    status.setStatus(s);<a name="line.2587"></a>
-<span class="sourceLineNo">2588</span>    if (LOG.isTraceEnabled()) LOG.trace(s);<a name="line.2588"></a>
-<span class="sourceLineNo">2589</span><a name="line.2589"></a>
-<span class="sourceLineNo">2590</span>    // Any failure from here on out will be catastrophic requiring server<a name="line.2590"></a>
-<span class="sourceLineNo">2591</span>    // restart so wal content can be replayed and put back into the memstore.<a name="line.2591"></a>
-<span class="sourceLineNo">2592</span>    // Otherwise, the snapshot content while backed up in the wal, it will not<a name="line.2592"></a>
-<span class="sourceLineNo">2593</span>    // be part of the current running servers state.<a name="line.2593"></a>
-<span class="sourceLineNo">2594</span>    boolean compactionRequested = false;<a name="line.2594"></a>
-<span class="sourceLineNo">2595</span>    long flushedOutputFileSize = 0;<a name="line.2595"></a>
-<span class="sourceLineNo">2596</span>    try {<a name="line.2596"></a>
-<span class="sourceLineNo">2597</span>      // A.  Flush memstore to all the HStores.<a name="line.2597"></a>
-<span class="sourceLineNo">2598</span>      // Keep running vector of all store files that includes both old and the<a name="line.2598"></a>
-<span class="sourceLineNo">2599</span>      // just-made new flush store file. The new flushed file is still in the<a name="line.2599"></a>
-<span class="sourceLineNo">2600</span>      // tmp directory.<a name="line.2600"></a>
-<span class="sourceLineNo">2601</span><a name="line.2601"></a>
-<span class="sourceLineNo">2602</span>      for (StoreFlushContext flush : storeFlushCtxs.values()) {<a name="line.2602"></a>
-<span class="sourceLineNo">2603</span>        flush.flushCache(status);<a name="line.2603"></a>
-<span class="sourceLineNo">2604</span>      }<a name="line.2604"></a>
-<span class="sourceLineNo">2605</span><a name="line.2605"></a>
-<span class="sourceLineNo">2606</span>      // Switch snapshot (in memstore) -&gt; new hfile (thus causing<a name="line.2606"></a>
-<span class="sourceLineNo">2607</span>      // all the store scanners to reset/reseek).<a name="line.2607"></a>
-<span class="sourceLineNo">2608</span>      Iterator&lt;HStore&gt; it = storesToFlush.iterator();<a name="line.2608"></a>
-<span class="sourceLineNo">2609</span>      // stores.values() and storeFlushCtxs have same order<a name="line.2609"></a>
-<span class="sourceLineNo">2610</span>      for (StoreFlushContext flush : storeFlushCtxs.values()) {<a name="line.2610"></a>
-<span class="sourceLineNo">2611</span>        boolean needsCompaction = flush.commit(status);<a name="line.2611"></a>
-<span class="sourceLineNo">2612</span>        if (needsCompaction) {<a name="line.2612"></a>
-<span class="sourceLineNo">2613</span>          compactionRequested = true;<a name="line.2613"></a>
-<span class="sourceLineNo">2614</span>        }<a name="line.2614"></a>
-<span class="sourceLineNo">2615</span>        byte[] storeName = it.next().getColumnFamilyDescriptor().getName();<a name="line.2615"></a>
-<span class="sourceLineNo">2616</span>        List&lt;Path&gt; storeCommittedFiles = flush.getCommittedFiles();<a name="line.2616"></a>
-<span class="sourceLineNo">2617</span>        committedFiles.put(storeName, storeCommittedFiles);<a name="line.2617"></a>
-<span class="sourceLineNo">2618</span>        // Flush committed no files, indicating flush is empty or flush was canceled<a name="line.2618"></a>
-<span class="sourceLineNo">2619</span>        if (storeCommittedFiles == null || storeCommittedFiles.isEmpty()) {<a name="line.2619"></a>
-<span class="sourceLineNo">2620</span>          MemStoreSize storeFlushableSize = prepareResult.storeFlushableSize.get(storeName);<a name="line.2620"></a>
-<span class="sourceLineNo">2621</span>          prepareResult.totalFlushableSize.decMemStoreSize(storeFlushableSize);<a name="line.2621"></a>
-<span class="sourceLineNo">2622</span>        }<a name="line.2622"></a>
-<span class="sourceLineNo">2623</span>        flushedOutputFileSize += flush.getOutputFileSize();<a name="line.2623"></a>
-<span class="sourceLineNo">2624</span>      }<a name="line.2624"></a>
-<span class="sourceLineNo">2625</span>      storeFlushCtxs.clear();<a name="line.2625"></a>
-<span class="sourceLineNo">2626</span><a name="line.2626"></a>
-<span class="sourceLineNo">2627</span>      // Set down the memstore size by amount of flush.<a name="line.2627"></a>
-<span class="sourceLineNo">2628</span>      this.decrMemStoreSize(prepareResult.totalFlushableSize);<a name="line.2628"></a>
-<span class="sourceLineNo">2629</span><a name="line.2629"></a>
-<span class="sourceLineNo">2630</span>      if (wal != null) {<a name="line.2630"></a>
-<span class="sourceLineNo">2631</span>        // write flush marker to WAL. If fail, we should throw DroppedSnapshotException<a name="line.2631"></a>
-<span class="sourceLineNo">2632</span>        FlushDescriptor desc = ProtobufUtil.toFlushDescriptor(FlushAction.COMMIT_FLUSH,<a name="line.2632"></a>
-<span class="sourceLineNo">2633</span>          getRegionInfo(), flushOpSeqId, committedFiles);<a name="line.2633"></a>
-<span class="sourceLineNo">2634</span>        WALUtil.writeFlushMarker(wal, this.getReplicationScope(), getRegionInfo(), desc, true,<a name="line.2634"></a>
-<span class="sourceLineNo">2635</span>            mvcc);<a name="line.2635"></a>
-<span class="sourceLineNo">2636</span>      }<a name="line.2636"></a>
-<span class="sourceLineNo">2637</span>    } catch (Throwable t) {<a name="line.2637"></a>
-<span class="sourceLineNo">2638</span>      // An exception here means that the snapshot was not persisted.<a name="line.2638"></a>
-<span class="sourceLineNo">2639</span>      // The wal needs to be replayed so its content is restored to memstore.<a name="line.2639"></a>
-<span class="sourceLineNo">2640</span>      // Currently, only a server restart will do this.<a name="line.2640"></a>
-<span class="sourceLineNo">2641</span>      // We used to only catch IOEs but its possible that we'd get other<a name="line.2641"></a>
-<span class="sourceLineNo">2642</span>      // exceptions -- e.g. HBASE-659 was about an NPE -- so now we catch<a name="line.2642"></a>
-<span class="sourceLineNo">2643</span>      // all and sundry.<a name="line.2643"></a>
-<span class="sourceLineNo">2644</span>      if (wal != null) {<a name="line.2644"></a>
-<span class="sourceLineNo">2645</span>        try {<a name="line.2645"></a>
-<span class="sourceLineNo">2646</span>          FlushDescriptor desc = ProtobufUtil.toFlushDescriptor(FlushAction.ABORT_FLUSH,<a name="line.2646"></a>
-<span class="sourceLineNo">2647</span>            getRegionInfo(), flushOpSeqId, committedFiles);<a name="line.2647"></a>
-<span class="sourceLineNo">2648</span>          WALUtil.writeFlushMarker(wal, this.replicationScope, getRegionInfo(), desc, false, mvcc);<a name="line.2648"></a>
-<span class="sourceLineNo">2649</span>        } catch (Throwable ex) {<a name="line.2649"></a>
-<span class="sourceLineNo">2650</span>          LOG.warn(getRegionInfo().getEncodedName() + " : "<a name="line.2650"></a>
-<span class="sourceLineNo">2651</span>              + "failed writing ABORT_FLUSH marker to WAL", ex);<a name="line.2651"></a>
-<span class="sourceLineNo">2652</span>          // ignore this since we will be aborting the RS with DSE.<a name="line.2652"></a>
-<span class="sourceLineNo">2653</span>        }<a name="line.2653"></a>
-<span class="sourceLineNo">2654</span>        wal.abortCacheFlush(this.getRegionInfo().getEncodedNameAsBytes());<a name="line.2654"></a>
-<span class="sourceLineNo">2655</span>      }<a name="line.2655"></a>
-<span class="sourceLineNo">2656</span>      DroppedSnapshotException dse = new DroppedSnapshotException("region: " +<a name="line.2656"></a>
-<span class="sourceLineNo">2657</span>          Bytes.toStringBinary(getRegionInfo().getRegionName()));<a name="line.2657"></a>
-<span class="sourceLineNo">2658</span>      dse.initCause(t);<a name="line.2658"></a>
-<span class="sourceLineNo">2659</span>      status.abort("Flush failed: " + StringUtils.stringifyException(t));<a name="line.2659"></a>
-<span class="sourceLineNo">2660</span><a name="line.2660"></a>
-<span class="sourceLineNo">2661</span>      // Callers for flushcache() should catch DroppedSnapshotException and abort the region server.<a name="line.2661"></a>
-<span class="sourceLineNo">2662</span>      // However, since we may have the region read lock, we cannot call close(true) here since<a name="line.2662"></a>
-<span class="sourceLineNo">2663</span>      // we cannot promote to a write lock. Instead we are setting closing so that all other region<a name="line.2663"></a>
-<span class="sourceLineNo">2664</span>      // operations except for close will be rejected.<a name="line.2664"></a>
-<span class="sourceLineNo">2665</span>      this.closing.set(true);<a name="line.2665"></a>
-<span class="sourceLineNo">2666</span><a name="line.2666"></a>
-<span class="sourceLineNo">2667</span>      if (rsServices != null) {<a name="line.2667"></a>
-<span class="sourceLineNo">2668</span>        // This is a safeguard against the case where the caller fails to explicitly handle aborting<a name="line.2668"></a>
-<span class="sourceLineNo">2669</span>        rsServices.abort("Replay of WAL required. Forcing server shutdown", dse);<a name="line.2669"></a>
-<span class="sourceLineNo">2670</span>      }<a name="line.2670"></a>
-<span class="sourceLineNo">2671</span><a name="line.2671"></a>
-<span class="sourceLineNo">2672</span>      throw dse;<a name="line.2672"></a>
-<span class="sourceLineNo">2673</span>    }<a name="line.2673"></a>
-<span class="sourceLineNo">2674</span><a name="line.2674"></a>
-<span class="sourceLineNo">2675</span>    // If we get to here, the HStores have been written.<a name="line.2675"></a>
-<span class="sourceLineNo">2676</span>    if (wal != null) {<a name="line.2676"></a>
-<span class="sourceLineNo">2677</span>      wal.completeCacheFlush(this.getRegionInfo().getEncodedNameAsBytes());<a name="line.2677"></a>
-<span class="sourceLineNo">2678</span>    }<a name="line.2678"></a>
-<span class="sourceLineNo">2679</span><a name="line.2679"></a>
-<span class="sourceLineNo">2680</span>    // Record latest flush time<a name="line.2680"></a>
-<span class="sourceLineNo">2681</span>    for (HStore store: storesToFlush) {<a name="line.2681"></a>
-<span class="sourceLineNo">2682</span>      this.lastStoreFlushTimeMap.put(store, startTime);<a name="line.2682"></a>
-<span class="sourceLineNo">2683</span>    }<a name="line.2683"></a>
-<span class="sourceLineNo">2684</span><a name="line.2684"></a>
-<span class="sourceLineNo">2685</span>    this.maxFlushedSeqId = flushedSeqId;<a name="line.2685"></a>
-<span class="sourceLineNo">2686</span>    this.lastFlushOpSeqId = flushOpSeqId;<a name="line.2686"></a>
-<span class="sourceLineNo">2687</span><a name="line.2687"></a>
-<span class="sourceLineNo">2688</span>    // C. Finally notify anyone waiting on memstore to clear:<a name="line.2688"></a>
-<span class="sourceLineNo">2689</span>    // e.g. checkResources().<a name="line.2689"></a>
-<span class="sourceLineNo">2690</span>    synchronized (this) {<a name="line.2690"></a>
-<span class="sourceLineNo">2691</span>      notifyAll(); // FindBugs NN_NAKED_NOTIFY<a name="line.2691"></a>
-<span class="sourceLineNo">2692</span>    }<a name="line.2692"></a>
-<span class="sourceLineNo">2693</span><a name="line.2693"></a>
-<span class="sourceLineNo">2694</span>    long time = EnvironmentEdgeManager.currentTime() - startTime;<a name="line.2694"></a>
-<span class="sourceLineNo">2695</span>    long memstoresize = this.memstoreDataSize.get();<a name="line.2695"></a>
-<span class="sourceLineNo">2696</span>    String msg = "Finished memstore flush of ~"<a name="line.2696"></a>
-<span class="sourceLineNo">2697</span>        + StringUtils.byteDesc(prepareResult.totalFlushableSize.getDataSize()) + "/"<a name="line.2697"></a>
-<span class="sourceLineNo">2698</span>        + prepareResult.totalFlushableSize.getDataSize() + ", currentsize="<a name="line.2698"></a>
-<span class="sourceLineNo">2699</span>        + StringUtils.byteDesc(memstoresize) + "/" + memstoresize<a name="line.2699"></a>
-<span class="sourceLineNo">2700</span>        + " for region " + this + " in " + time + "ms, sequenceid="<a name="line.2700"></a>
-<span class="sourceLineNo">2701</span>        + flushOpSeqId +  ", compaction requested=" + compactionRequested<a name="line.2701"></a>
-<span class="sourceLineNo">2702</span>        + ((wal == null) ? "; wal=null" : "");<a name="line.2702"></a>
-<span class="sourceLineNo">2703</span>    LOG.info(msg);<a name="line.2703"></a>
-<span class="sourceLineNo">2704</span>    status.setStatus(msg);<a name="line.2704"></a>
-<span class="sourceLineNo">2705</span><a name="line.2705"></a>
-<span class="sourceLineNo">2706</span>    if (rsServices != null &amp;&amp; rsServices.getMetrics() != null) {<a name="line.2706"></a>
-<span class="sourceLineNo">2707</span>      rsServices.getMetrics().updateFlush(time - startTime,<a name="line.2707"></a>
-<span class="sourceLineNo">2708</span>          prepareResult.totalFlushableSize.getDataSize(), flushedOutputFileSize);<a name="line.2708"></a>
-<span class="sourceLineNo">2709</span>    }<a name="line.2709"></a>
-<span class="sourceLineNo">2710</span><a name="line.2710"></a>
-<span class="sourceLineNo">2711</span>    return new FlushResultImpl(compactionRequested ?<a name="line.2711"></a>
-<span class="sourceLineNo">2712</span>        FlushResult.Result.FLUSHED_COMPACTION_NEEDED :<a name="line.2712"></a>
-<span class="sourceLineNo">2713</span>          FlushResult.Result.FLUSHED_NO_COMPACTION_NEEDED, flushOpSeqId);<a name="line.2713"></a>
-<span class="sourceLineNo">2714</span>  }<a name="line.2714"></a>
-<span class="sourceLineNo">2715</span><a name="line.2715"></a>
-<span class="sourceLineNo">2716</span>  /**<a name="line.2716"></a>
-<span class="sourceLineNo">2717</span>   * Method to safely get the next sequence number.<a name="line.2717"></a>
-<span class="sourceLineNo">2718</span>   * @return Next sequence number unassociated with any actual edit.<a name="line.2718"></a>
-<span class="sourceLineNo">2719</span>   * @throws IOException<a name="line.2719"></a>
-<span class="sourceLineNo">2720</span>   */<a name="line.2720"></a>
-<span class="sourceLineNo">2721</span>  @VisibleForTesting<a name="line.2721"></a>
-<span class="sourceLineNo">2722</span>  protected long getNextSequenceId(final WAL wal) throws IOException {<a name="line.2722"></a>
-<span class="sourceLineNo">2723</span>    WriteEntry we = mvcc.begin();<a name="line.2723"></a>
-<span class="sourceLineNo">2724</span>    mvcc.completeAndWait(we);<a name="line.2724"></a>
-<span class="sourceLineNo">2725</span>    return we.getWriteNumber();<a name="line.2725"></a>
-<span class="sourceLineNo">2726</span>  }<a name="line.2726"></a>
-<span class="sourceLineNo">2727</span><a name="line.2727"></a>
-<span class="sourceLineNo">2728</span>  //////////////////////////////////////////////////////////////////////////////<a name="line.2728"></a>
-<span class="sourceLineNo">2729</span>  // get() methods for client use.<a name="line.2729"></a>
-<span class="sourceLineNo">2730</span>  //////////////////////////////////////////////////////////////////////////////<a name="line.2730"></a>
-<span class="sourceLineNo">2731</span><a name="line.2731"></a>
-<span class="sourceLineNo">2732</span>  @Override<a name="line.2732"></a>
-<span class="sourceLineNo">2733</span>  public RegionScannerImpl getScanner(Scan scan) throws IOException {<a name="line.2733"></a>
-<span class="sourceLineNo">2734</span>   return getScanner(scan, null);<a name="line.2734"></a>
-<span class="sourceLineNo">2735</span>  }<a name="line.2735"></a>
-<span class="sourceLineNo">2736</span><a name="line.2736"></a>
-<span class="sourceLineNo">2737</span>  @Override<a name="line.2737"></a>
-<span class="sourceLineNo">2738</span>  public RegionScannerImpl getScanner(Scan scan, List&lt;KeyValueScanner&gt; additionalScanners)<a name="line.2738"></a>
-<span class="sourceLineNo">2739</span>      throws IOException {<a name="line.2739"></a>
-<span class="sourceLineNo">2740</span>    return getScanner(scan, additionalScanners, HConstants.NO_NONCE, HConstants.NO_NONCE);<a name="line.2740"></a>
-<span class="sourceLineNo">2741</span>  }<a name="line.2741"></a>
-<span class="sourceLineNo">2742</span><a name="line.2742"></a>
-<span class="sourceLineNo">2743</span>  private RegionScannerImpl getScanner(Scan scan, List&lt;KeyValueScanner&gt; additionalScanners,<a name="line.2743"></a>
-<span class="sourceLineNo">2744</span>      long nonceGroup, long nonce) throws IOException {<a name="line.2744"></a>
-<span class="sourceLineNo">2745</span>    startRegionOperation(Operation.SCAN);<a name="line.2745"></a>
-<span class="sourceLineNo">2746</span>    try {<a name="line.2746"></a>
-<span class="sourceLineNo">2747</span>      // Verify families are all valid<a name="line.2747"></a>
-<span class="sourceLineNo">2748</span>      if (!scan.hasFamilies()) {<a name="line.2748"></a>
-<span class="sourceLineNo">2749</span>        // Adding all families to scanner<a name="line.2749"></a>
-<span class="sourceLineNo">2750</span>        for (byte[] family : this.htableDescriptor.getColumnFamilyNames()) {<a name="line.2750"></a>
-<span class="sourceLineNo">2751</span>          scan.addFamily(family);<a name="line.2751"></a>
-<span class="sourceLineNo">2752</span>        }<a name="line.2752"></a>
-<span class="sourceLineNo">2753</span>      } else {<a name="line.2753"></a>
-<span class="sourceLineNo">2754</span>        for (byte[] family : scan.getFamilyMap().keySet()) {<a name="line.2754"></a>
-<span class="sourceLineNo">2755</span>          checkFamily(family);<a name="line.2755"></a>
-<span class="sourceLineNo">2756</span>        }<a name="line.2756"></a>
-<span class="sourceLineNo">2757</span>      }<a name="line.2757"></a>
-<span class="sourceLineNo">2758</span>      return instantiateRegionScanner(scan, additionalScanners, nonceGroup, nonce);<a name="line.2758"></a>
-<span class="sourceLineNo">2759</span>    } finally {<a name="line.2759"></a>
-<span class="sourceLineNo">2760</span>      closeRegionOperation(Operation.SCAN);<a name="line.2760"></a>
-<span class="sourceLineNo">2761</span>    }<a name="line.2761"></a>
-<span class="sourceLineNo">2762</span>  }<a name="line.2762"></a>
-<span class="sourceLineNo">2763</span><a name="line.2763"></a>
-<span class="sourceLineNo">2764</span>  protected RegionScanner instantiateRegionScanner(Scan scan,<a name="line.2764"></a>
-<span class="sourceLineNo">2765</span>      List&lt;KeyValueScanner&gt; additionalScanners) throws IOException {<a name="line.2765"></a>
-<span class="sourceLineNo">2766</span>    return instantiateRegionScanner(scan, additionalScanners, HConstants.NO_NONCE,<a name="line.2766"></a>
-<span class="sourceLineNo">2767</span>      HConstants.NO_NONCE);<a name="line.2767"></a>
-<span class="sourceLineNo">2768</span>  }<a name="line.2768"></a>
-<span class="sourceLineNo">2769</span><a name="line.2769"></a>
-<span class="sourceLineNo">2770</span>  protected RegionScannerImpl instantiateRegionScanner(Scan scan,<a name="line.2770"></a>
-<span class="sourceLineNo">2771</span>      List&lt;KeyValueScanner&gt; additionalScanners, long nonceGroup, long nonce) throws IOException {<a name="line.2771"></a>
-<span class="sourceLineNo">2772</span>    if (scan.isReversed()) {<a name="line.2772"></a>
-<span class="sourceLineNo">2773</span>      if (scan.getFilter() != null) {<a name="line.2773"></a>
-<span class="sourceLineNo">2774</span>        scan.getFilter().setReversed(true);<a name="line.2774"></a>
-<span class="sourceLineNo">2775</span>      }<a name="line.2775"></a>
-<span class="sourceLineNo">2776</span>      return new ReversedRegionScannerImpl(scan, additionalScanners, this);<a name="line.2776"></a>
-<span class="sourceLineNo">2777</span>    }<a name="line.2777"></a>
-<span class="sourceLineNo">2778</span>    return new RegionScannerImpl(scan, additionalScanners, this, nonceGroup, nonce);<a name="line.2778"></a>
-<span class="sourceLineNo">2779</span>  }<a name="line.2779"></a>
-<span class="sourceLineNo">2780</span><a name="line.2780"></a>
-<span class="sourceLineNo">2781</span>  /**<a name="line.2781"></a>
-<span class="sourceLineNo">2782</span>   * Prepare a delete for a row mutation processor<a name="line.2782"></a>
-<span class="sourceLineNo">2783</span>   * @param delete The passed delete is modified by this method. WARNING!<a name="line.2783"></a>
-<span class="sourceLineNo">2784</span>   * @throws IOException<a name="line.2784"></a>
-<span class="sourceLineNo">2785</span>   */<a name="line.2785"></a>
-<span class="sourceLineNo">2786</span>  public void prepareDelete(Delete delete) throws IOException {<a name="line.2786"></a>
-<span class="sourceLineNo">2787</span>    // Check to see if this is a deleteRow insert<a name="line.2787"></a>
-<span class="sourceLineNo">2788</span>    if(delete.getFamilyCellMap().isEmpty()){<a name="line.2788"></a>
-<span class="sourceLineNo">2789</span>      for(byte [] family : this.htableDescriptor.getColumnFamilyNames()){<a name="line.2789"></a>
-<span class="sourceLineNo">2790</span>        // Don't eat the timestamp<a name="line.2790"></a>
-<span class="sourceLineNo">2791</span>        delete.addFamily(family, delete.getTimeStamp());<a name="line.2791"></a>
-<span class="sourceLineNo">2792</span>      }<a name="line.2792"></a>
-<span class="sourceLineNo">2793</span>    } else {<a name="line.2793"></a>
-<span class="sourceLineNo">2794</span>      for(byte [] family : delete.getFamilyCellMap().keySet()) {<a name="line.2794"></a>
-<span class="sourceLineNo">2795</span>        if(family == null) {<a name="line.2795"></a>
-<span class="sourceLineNo">2796</span>          throw new NoSuchColumnFamilyException("Empty family is invalid");<a name="line.2796"></a>
-<span class="sourceLineNo">2797</span>        }<a name="line.2797"></a>
-<span class="sourceLineNo">2798</span>        checkFamily(family);<a name="line.2798"></a>
-<span class="sourceLineNo">2799</span>      }<a name="line.2799"></a>
-<span class="sourceLineNo">2800</span>    }<a name="line.2800"></a>
-<span class="sourceLineNo">2801</span>  }<a name="line.2801"></a>
-<span class="sourceLineNo">2802</span><a name="line.2802"></a>
-<span class="sourceLineNo">2803</span>  @Override<a name="line.2803"></a>
-<span class="sourceLineNo">2804</span>  public void delete(Delete delete) throws IOException {<a name="line.2804"></a>
-<span class="sourceLineNo">2805</span>    checkReadOnly();<a name="line.2805"></a>
-<span class="sourceLineNo">2806</span>    checkResources();<a name="line.2806"></a>
-<span class="sourceLineNo">2807</span>    startRegionOperation(Operation.DELETE);<a name="line.2807"></a>
-<span class="sourceLineNo">2808</span>    try {<a name="line.2808"></a>
-<span class="sourceLineNo">2809</span>      // All edits for the given row (across all column families) must happen atomically.<a name="line.2809"></a>
-<span class="sourceLineNo">2810</span>      doBatchMutate(delete);<a name="line.2810"></a>
-<span class="sourceLineNo">2811</span>    } finally {<a name="line.2811"></a>
-<span class="sourceLineNo">2812</span>      closeRegionOperation(Operation.DELETE);<a name="line.2812"></a>
-<span class="sourceLineNo">2813</span>    }<a name="line.2813"></a>
-<span class="sourceLineNo">2814</span>  }<a name="line.2814"></a>
-<span class="sourceLineNo">2815</span><a name="line.2815"></a>
-<span class="sourceLineNo">2816</span>  /**<a name="line.2816"></a>
-<span class="sourceLineNo">2817</span>   * Row needed by below method.<a name="line.2817"></a>
-<span class="sourceLineNo">2818</span>   */<a name="line.2818"></a>
-<span class="sourceLineNo">2819</span>  private static final byte [] FOR_UNIT_TESTS_ONLY = Bytes.toBytes("ForUnitTestsOnly");<a name="line.2819"></a>
-<span class="sourceLineNo">2820</span><a name="line.2820"></a>
-<span class="sourceLineNo">2821</span>  /**<a name="line.2821"></a>
-<span class="sourceLineNo">2822</span>   * This is used only by unit tests. Not required to be a public API.<a name="line.2822"></a>
-<span class="sourceLineNo">2823</span>   * @param familyMap map of family to edits for the given family.<a name="line.2823"></a>
-<span class="sourceLineNo">2824</span>   * @throws IOException<a name="line.2824"></a>
-<span class="sourceLineNo">2825</span>   */<a name="line.2825"></a>
-<span class="sourceLineNo">2826</span>  void delete(NavigableMap&lt;byte[], List&lt;Cell&gt;&gt; familyMap,<a name="line.2826"></a>
-<span class="sourceLineNo">2827</span>      Durability durability) throws IOException {<a name="line.2827"></a>
-<span class="sourceLineNo">2828</span>    Delete delete = new Delete(FOR_UNIT_TESTS_ONLY);<a name="line.2828"></a>
-<span class="sourceLineNo">2829</span>    delete.setFamilyCellMap(familyMap);<a name="line.2829"></a>
-<span class="sourceLineNo">2830</span>    delete.setDurability(durability);<a name="line.2830"></a>
-<span class="sourceLineNo">2831</span>    doBatchMutate(delete);<a name="line.2831"></a>
-<span class="sourceLineNo">2832</span>  }<a name="line.2832"></a>
-<span class="sourceLineNo">2833</span><a name="line.2833"></a>
-<span class="sourceLineNo">2834</span>  /**<a name="line.2834"></a>
-<span class="sourceLineNo">2835</span>   * Set up correct timestamps in the KVs in Delete object.<a name="line.2835"></a>
-<span class="sourceLineNo">2836</span>   * &lt;p&gt;Caller should have the row and region locks.<a name="line.2836"></a>
-<span class="sourceLineNo">2837</span>   * @param mutation<a name="line.2837"></a>
-<span class="sourceLineNo">2838</span>   * @param familyMap<a name="line.2838"></a>
-<span class="sourceLineNo">2839</span>   * @param byteNow<a name="line.2839"></a>
-<span class="sourceLineNo">2840</span>   * @throws IOException<a name="line.2840"></a>
-<span class="sourceLineNo">2841</span>   */<a name="line.2841"></a>
-<span class="sourceLineNo">2842</span>  public void prepareDeleteTimestamps(Mutation mutation, Map&lt;byte[], List&lt;Cell&gt;&gt; familyMap,<a name="line.2842"></a>
-<span class="sourceLineNo">2843</span>      byte[] byteNow) throws IOException {<a name="line.2843"></a>
-<span class="sourceLineNo">2844</span>    for (Map.Entry&lt;byte[], List&lt;Cell&gt;&gt; e : familyMap.entrySet()) {<a name="line.2844"></a>
-<span class="sourceLineNo">2845</span><a name="line.2845"></a>
-<span class="sourceLineNo">2846</span>      byte[] family = e.getKey();<a name="line.2846"></a>
-<span class="sourceLineNo">2847</span>      List&lt;Cell&gt; cells = e.getValue();<a name="line.2847"></a>
-<span class="sourceLineNo">2848</span>      assert cells instanceof RandomAccess;<a name="line.2848"></a>
-<span class="sourceLineNo">2849</span><a name="line.2849"></a>
-<span class="sourceLineNo">2850</span>      Map&lt;byte[], Integer&gt; kvCount = new TreeMap&lt;&gt;(Bytes.BYTES_COMPARATOR);<a name="line.2850"></a>
-<span class="sourceLineNo">2851</span>      int listSize = cells.size();<a name="line.2851"></a>
-<span class="sourceLineNo">2852</span>      for (int i=0; i &lt; listSize; i++) {<a name="line.2852"></a>
-<span class="sourceLineNo">2853</span>        Cell cell = cells.get(i);<a name="line.2853"></a>
-<span class="sourceLineNo">2854</span>        //  Check if time is LATEST, change to time of most recent addition if so<a name="line.2854"></a>
-<span class="sourceLineNo">2855</span>        //  This is expensive.<a name="line.2855"></a>
-<span class="sourceLineNo">2856</span>        if (cell.getTimestamp() == HConstants.LATEST_TIMESTAMP<a name="line.2856"></a>
-<span class="sourceLineNo">2857</span>            &amp;&amp; PrivateCellUtil.isDeleteType(cell)) {<a name="line.2857"></a>
-<span class="sourceLineNo">2858</span>          byte[] qual = CellUtil.cloneQualifier(cell);<a name="line.2858"></a>
-<span class="sourceLineNo">2859</span><a name="line.2859"></a>
-<span class="sourceLineNo">2860</span>          Integer count = kvCount.get(qual);<a name="line.2860"></a>
-<span class="sourceLineNo">2861</span>          if (count == null) {<a name="line.2861"></a>
-<span class="sourceLineNo">2862</span>            kvCount.put(qual, 1);<a name="line.2862"></a>
-<span class="sourceLineNo">2863</span>          } else {<a name="line.2863"></a>
-<span class="sourceLineNo">2864</span>            kvCount.put(qual, count + 1);<a name="line.2864"></a>
-<span class="sourceLineNo">2865</span>          }<a name="line.2865"></a>
-<span class="sourceLineNo">2866</span>          count = kvCount.get(qual);<a name="line.2866"></a>
-<span class="sourceLineNo">2867</span><a name="line.2867"></a>
-<span class="sourceLineNo">2868</span>          Get get = new Get(CellUtil.cloneRow(cell));<a name="line.2868"></a>
-<span class="sourceLineNo">2869</span>          get.setMaxVersions(count);<a name="line.2869"></a>
-<span class="sourceLineNo">2870</span>          get.addColumn(family, qual);<a name="line.2870"></a>
-<span class="sourceLineNo">2871</span>          if (coprocessorHost != null) {<a name="line.2871"></a>
-<span class="sourceLineNo">2872</span>            if (!coprocessorHost.prePrepareTimeStampForDeleteVersion(mutation, cell,<a name="line.2872"></a>
-<span class="sourceLineNo">2873</span>                byteNow, get)) {<a name="line.2873"></a>
-<span class="sourceLineNo">2874</span>              updateDeleteLatestVersionTimeStamp(cell, get, count, byteNow);<a name="line.2874"></a>
-<span class="sourceLineNo">2875</span>            }<a name="line.2875"></a>
-<span class="sourceLineNo">2876</span>          } else {<a name="line.2876"></a>
-<span class="sourceLineNo">2877</span>            updateDeleteLatestVersionTimeStamp(cell, get, count, byteNow);<a name="line.2877"></a>
-<span class="sourceLineNo">2878</span>          }<a name="line.2878"></a>
-<span class="sourceLineNo">2879</span>        } else {<a name="line.2879"></a>
-<span class="sourceLineNo">2880</span>          PrivateCellUtil.updateLatestStamp(cell, byteNow, 0);<a name="line.2880"></a>
-<span class="sourceLineNo">2881</span>        }<a name="line.2881"></a>
-<span class="sourceLineNo">2882</span>      }<a name="line.2882"></a>
-<span class="sourceLineNo">2883</span>    }<a name="line.2883"></a>
-<span class="sourceLineNo">2884</span>  }<a name="line.2884"></a>
-<span class="sourceLineNo">2885</span><a name="line.2885"></a>
-<span class="sourceLineNo">2886</span>  void updateDeleteLatestVersionTimeStamp(Cell cell, Get get, int count, byte[] byteNow)<a name="line.2886"></a>
-<span class="sourceLineNo">2887</span>      throws IOException {<a name="line.2887"></a>
-<span class="sourceLineNo">2888</span>    List&lt;Cell&gt; result = get(get, false);<a name="line.2888"></a>
-<span class="sourceLineNo">2889</span><a name="line.2889"></a>
-<span class="sourceLineNo">2890</span>    if (result.size() &lt; count) {<a name="line.2890"></a>
-<span class="sourceLineNo">2891</span>      // Nothing to delete<a name="line.2891"></a>
-<span class="sourceLineNo">2892</span>      PrivateCellUtil.updateLatestStamp(cell, byteNow, 0);<a name="line.2892"></a>
-<span class="sourceLineNo">2893</span>      return;<a name="line.2893"></a>
-<span class="sourceLineNo">2894</span>    }<a name="line.2894"></a>
-<span class="sourceLineNo">2895</span>    if (result.size() &gt; count) {<a name="line.2895"></a>
-<span class="sourceLineNo">2896</span>      throw new RuntimeException("Unexpected size: " + result.size());<a name="line.2896"></a>
-<span class="sourceLineNo">2897</span>    }<a name="line.2897"></a>
-<span class="sourceLineNo">2898</span>    Cell getCell = result.get(count - 1);<a name="line.2898"></a>
-<span class="sourceLineNo">2899</span>    PrivateCellUtil.setTimestamp(cell, getCell.getTimestamp());<a name="line.2899"></a>
-<span class="sourceLineNo">2900</span>  }<a name="line.2900"></a>
-<span class="sourceLineNo">2901</span><a name="line.2901"></a>
-<span class="sourceLineNo">2902</span>  @Override<a name="line.2902"></a>
-<span class="sourceLineNo">2903</span>  public void put(Put put) throws IOException {<a name="line.2903"></a>
-<span class="sourceLineNo">2904</span>    checkReadOnly();<a name="line.2904"></a>
-<span class="sourceLineNo">2905</span><a name="line.2905"></a>
-<span class="sourceLineNo">2906</span>    // Do a rough check that we have resources to accept a write.  The check is<a name="line.2906"></a>
-<span class="sourceLineNo">2907</span>    // 'rough' in that between the resource check and the call to obtain a<a name="line.2907"></a>
-<span class="sourceLineNo">2908</span>    // read lock, resources may run out.  For now, the thought is that this<a name="line.2908"></a>
-<span class="sourceLineNo">2909</span>    // will be extremely rare; we'll deal with it when it happens.<a name="line.2909"></a>
-<span class="sourceLineNo">2910</span>    checkResources();<a name="line.2910"></a>
-<span class="sourceLineNo">2911</span>    startRegionOperation(Operation.PUT);<a name="line.2911"></a>
-<span class="sourceLineNo">2912</span>    try {<a name="line.2912"></a>
-<span class="sourceLineNo">2913</span>      // All edits for the given row (across all column families) must happen atomically.<a name="line.2913"></a>
-<span class="sourceLineNo">2914</span>      doBatchMutate(put);<a name="line.2914"></a>
-<span class="sourceLineNo">2915</span>    } finally {<a name="line.2915"></a>
-<span class="sourceLineNo">2916</span>      closeRegionOperation(Operation.PUT);<a name="line.2916"></a>
-<span class="sourceLineNo">2917</span>    }<a name="line.2917"></a>
-<span class="sourceLineNo">2918</span>  }<a name="line.2918"></a>
-<span class="sourceLineNo">2919</span><a name="line.2919"></a>
-<span class="sourceLineNo">2920</span>  /**<a name="line.2920"></a>
-<span class="sourceLineNo">2921</span>   * Class that tracks the progress of a batch operations, accumulating status codes and tracking<a name="line.2921"></a>
-<span class="sourceLineNo">2922</span>   * the index at which processing is proceeding. These batch operations may get split into<a name="line.2922"></a>
-<span class="sourceLineNo">2923</span>   * mini-batches for processing.<a name="line.2923"></a>
-<span class="sourceLineNo">2924</span>   */<a name="line.2924"></a>
-<span class="sourceLineNo">2925</span>  private abstract static class BatchOperation&lt;T&gt; {<a name="line.2925"></a>
-<span class="sourceLineNo">2926</span>    protected final T[] operations;<a name="line.2926"></a>
-<span class="sourceLineNo">2927</span>    protected final OperationStatus[] retCodeDetails;<a name="line.2927"></a>
-<span class="sourceLineNo">2928</span>    protected final WALEdit[] walEditsFromCoprocessors;<a name="line.2928"></a>
-<span class="sourceLineNo">2929</span>    // reference family cell maps directly so coprocessors can mutate them if desired<a name="line.2929"></a>
-<span class="sourceLineNo">2930</span>    protected final Map&lt;byte[], List&lt;Cell&gt;&gt;[] familyCellMaps;<a name="line.2930"></a>
-<span class="sourceLineNo">2931</span><a name="line.2931"></a>
-<span class="sourceLineNo">2932</span>    protected final HRegion region;<a name="line.2932"></a>
-<span class="sourceLineNo">2933</span>    protected int nextIndexToProcess = 0;<a name="line.2933"></a>
-<span class="sourceLineNo">2934</span>    protected final ObservedExceptionsInBatch observedExceptions;<a name="line.2934"></a>
-<span class="sourceLineNo">2935</span>    //Durability of the batch (highest durability of all operations)<a name="line.2935"></a>
-<span class="sourceLineNo">2936</span>    protected Durability durability;<a name="line.2936"></a>
-<span class="sourceLineNo">2937</span>    protected boolean atomic = false;<a name="line.2937"></a>
-<span class="sourceLineNo">2938</span><a name="line.2938"></a>
-<span class="sourceLineNo">2939</span>    public BatchOperation(final HRegion region, T[] operations) {<a name="line.2939"></a>
-<span class="sourceLineNo">2940</span>      this.operations = operations;<a name="line.2940"></a>
-<span class="sourceLineNo">2941</span>      this.retCodeDetails = new OperationStatus[operations.length];<a name="line.2941"></a>
-<span class="sourceLineNo">2942</span>      Arrays.fill(this.retCodeDetails, OperationStatus.NOT_RUN);<a name="line.2942"></a>
-<span class="sourceLineNo">2943</span>      this.walEditsFromCoprocessors = new WALEdit[operations.length];<a name="line.2943"></a>
-<span class="sourceLineNo">2944</span>      familyCellMaps = new Map[operations.length];<a name="line.2944"></a>
-<span class="sourceLineNo">2945</span><a name="line.2945"></a>
-<span class="sourceLineNo">2946</span>      this.region = region;<a name="line.2946"></a>
-<span class="sourceLineNo">2947</span>      observedExceptions = new ObservedExceptionsInBatch();<a name="line.2947"></a>
-<span class="sourceLineNo">2948</span>      durability = Durability.USE_DEFAULT;<a name="line.2948"></a>
-<span class="sourceLineNo">2949</span>    }<a name="line.2949"></a>
-<span class="sourceLineNo">2950</span><a name="line.2950"></a>
-<span class="sourceLineNo">2951</span>    /**<a name="line.2951"></a>
-<span class="sourceLineNo">2952</span>     * Visitor interface for batch operations<a name="line.2952"></a>
-<span class="sourceLineNo">2953</span>     */<a name="line.2953"></a>
-<span class="sourceLineNo">2954</span>    @FunctionalInterface<a name="line.2954"></a>
-<span class="sourceLineNo">2955</span>    public interface Visitor {<a name="line.2955"></a>
-<span class="sourceLineNo">2956</span>      /**<a name="line.2956"></a>
-<span class="sourceLineNo">2957</span>       * @param index operation index<a name="line.2957"></a>
-<span class="sourceLineNo">2958</span>       * @return If true continue visiting remaining entries, break otherwise<a name="line.2958"></a>
-<span class="sourceLineNo">2959</span>       */<a name="line.2959"></a>
-<span class="sourceLineNo">2960</span>      boolean visit(int index) throws IOException;<a name="line.2960"></a>
-<span class="sourceLineNo">2961</span>    }<a name="line.2961"></a>
-<span class="sourceLineNo">2962</span><a name="line.2962"></a>
-<span class="sourceLineNo">2963</span>    /**<a name="line.2963"></a>
-<span class="sourceLineNo">2964</span>     * Helper method for visiting pending/ all batch operations<a name="line.2964"></a>
-<span class="sourceLineNo">2965</span>     */<a name="line.2965"></a>
-<span class="sourceLineNo">2966</span>    public void visitBatchOperations(boolean pendingOnly, int lastIndexExclusive, Visitor visitor)<a name="line.2966"></a>
-<span class="sourceLineNo">2967</span>        throws IOException {<a name="line.2967"></a>
-<span class="sourceLineNo">2968</span>      assert lastIndexExclusive &lt;= this.size();<a name="line.2968"></a>
-<span class="sourceLineNo">2969</span>      for (int i = nextIndexToProcess; i &lt; lastIndexExclusive; i++) {<a name="line.2969"></a>
-<span class="sourceLineNo">2970</span>        if (!pendingOnly || isOperationPending(i)) {<a name="line.2970"></a>
-<span class="sourceLineNo">2971</span>          if (!visitor.visit(i)) {<a name="line.2971"></a>
-<span class="sourceLineNo">2972</span>            break;<a name="line.2972"></a>
-<span class="sourceLineNo">2973</span>          }<a name="line.2973"></a>
-<span class="sourceLineNo">2974</span>        }<a name="line.2974"></a>
-<span class="sourceLineNo">2975</span>      }<a name="line.2975"></a>
-<span class="sourceLineNo">2976</span>    }<a name="line.2976"></a>
-<span class="sourceLineNo">2977</span><a name="line.2977"></a>
-<span class="sourceLineNo">2978</span>    public abstract Mutation getMutation(int index);<a name="line.2978"></a>
-<span class="sourceLineNo">2979</span>    public abstract long getNonceGroup(int index);<a name="line.2979"></a>
-<span class="sourceLineNo">2980</span>    public abstract long getNonce(int index);<a name="line.2980"></a>
-<span class="sourceLineNo">2981</span>    /** This method is potentially expensive and useful mostly for non-replay CP path. */<a name="line.2981"></a>
-<span class="sourceLineNo">2982</span>    public abstract Mutation[] getMutationsForCoprocs();<a name="line.2982"></a>
-<span class="sourceLineNo">2983</span>    public abstract boolean isInReplay();<a name="line.2983"></a>
-<span class="sourceLineNo">2984</span>    public abstract long getOrigLogSeqNum();<a name="line.2984"></a>
-<span class="sourceLineNo">2985</span>    public abstract void startRegionOperation() throws IOException;<a name="line.2985"></a>
-<span class="sourceLineNo">2986</span>    public abstract void closeRegionOperation() throws IOException;<a name="line.2986"></a>
-<span class="sourceLineNo">2987</span><a name="line.2987"></a>
-<span class="sourceLineNo">2988</span>    /**<a name="line.2988"></a>
-<span class="sourceLineNo">2989</span>     * Validates each mutation and prepares a batch for write. If necessary (non-replay case), runs<a name="line.2989"></a>
-<span class="sourceLineNo">2990</span>     * CP prePut()/ preDelete() hooks for all mutations in a batch. This is intended to operate on<a name="line.2990"></a>
-<span class="sourceLineNo">2991</span>     * entire batch and will be called from outside of class to check and prepare batch. This can<a name="line.2991"></a>
-<span class="sourceLineNo">2992</span>     * be implemented by calling helper method {@link #checkAndPrepareMutation(int, long)} in a<a name="line.2992"></a>
-<span class="sourceLineNo">2993</span>     * 'for' loop over mutations.<a name="line.2993"></a>
-<span class="sourceLineNo">2994</span>     */<a name="line.2994"></a>
-<span class="sourceLineNo">2995</span>    public abstract void checkAndPrepare() throws IOException;<a name="line.2995"></a>
-<span class="sourceLineNo">2996</span><a name="line.2996"></a>
-<span class="sourceLineNo">2997</span>    /**<a name="line.2997"></a>
-<span class="sourceLineNo">2998</span>     * Implement any Put request specific check and prepare logic here. Please refer to<a name="line.2998"></a>
-<span class="sourceLineNo">2999</span>     * {@link #checkAndPrepareMutation(Mutation, long)} for how its used.<a name="line.2999"></a>
-<span class="sourceLineNo">3000</span>     */<a name="line.3000"></a>
-<span class="sourceLineNo">3001</span>    protected abstract void checkAndPreparePut(final Put p) throws IOException;<a name="line.3001"></a>
-<span class="sourceLineNo">3002</span><a name="line.3002"></a>
-<span class="sourceLineNo">3003</span>    /**<a name="line.3003"></a>
-<span class="sourceLineNo">3004</span>     *  If necessary, calls preBatchMutate() CP hook for a mini-batch and updates metrics, cell<a name="line.3004"></a>
-<span class="sourceLineNo">3005</span>     *  count, tags and timestamp for all cells of all operations in a mini-batch.<a name="line.3005"></a>
-<span class="sourceLineNo">3006</span>     */<a name="line.3006"></a>
-<span class="sourceLineNo">3007</span>    public abstract void prepareMiniBatchOperations(MiniBatchOperationInProgress&lt;Mutation&gt;<a name="line.3007"></a>
-<span class="sourceLineNo">3008</span>        miniBatchOp, long timestamp, final List&lt;RowLock&gt; acquiredRowLocks) throws IOException;<a name="line.3008"></a>
-<span class="sourceLineNo">3009</span><a name="line.3009"></a>
-<span class="sourceLineNo">3010</span>    /**<a name="line.3010"></a>
-<span class="sourceLineNo">3011</span>     * Write mini-batch operations to MemStore<a name="line.3011"></a>
-<span class="sourceLineNo">3012</span>     */<a name="line.3012"></a>
-<span class="sourceLineNo">3013</span>    public abstract WriteEntry writeMiniBatchOperationsToMemStore(<a name="line.3013"></a>
-<span class="sourceLineNo">3014</span>        final MiniBatchOperationInProgress&lt;Mutation&gt; miniBatchOp, final WriteEntry writeEntry)<a name="line.3014"></a>
-<span class="sourceLineNo">3015</span>        throws IOException;<a name="line.3015"></a>
-<span class="sourceLineNo">3016</span><a name="line.3016"></a>
-<span class="sourceLineNo">3017</span>    protected void writeMiniBatchOperationsToMemStore(<a name="line.3017"></a>
-<span class="sourceLineNo">3018</span>        final MiniBatchOperationInProgress&lt;Mutation&gt; miniBatchOp, final long writeNumber)<a name="line.3018"></a>
-<span class="sourceLineNo">3019</span>        throws IOException {<a name="line.3019"></a>
-<span class="sourceLineNo">3020</span>      MemStoreSizing memStoreAccounting = new MemStoreSizing();<a name="line.3020"></a>
-<span class="sourceLineNo">3021</span>      visitBatchOperations(true, miniBatchOp.getLastIndexExclusive(), (int index) -&gt; {<a name="line.3021"></a>
-<span class="sourceLineNo">3022</span>        // We need to update the sequence id for following reasons.<a name="line.3022"></a>
-<span class="sourceLineNo">3023</span>        // 1) If the op is in replay mode, FSWALEntry#stampRegionSequenceId won't stamp sequence id.<a name="line.3023"></a>
-<span class="sourceLineNo">3024</span>        // 2) If no WAL, FSWALEntry won't be used<a name="line.3024"></a>
-<span class="sourceLineNo">3025</span>        // we use durability of the original mutation for the mutation passed by CP.<a name="line.3025"></a>
-<span class="sourceLineNo">3026</span>        if (isInReplay() || getMutation(index).getDurability() == Durability.SKIP_WAL) {<a name="line.3026"></a>
-<span class="sourceLineNo">3027</span>          region.updateSequenceId(familyCellMaps[index].values(), writeNumber);<a name="line.3027"></a>
-<span class="sourceLineNo">3028</span>        }<a name="line.3028"></a>
-<span class="sourceLineNo">3029</span>        applyFamilyMapToMemStore(familyCellMaps[index], memStoreAccounting);<a name="line.3029"></a>
-<span class="sourceLineNo">3030</span>        return true;<a name="line.3030"></a>
-<span class="sourceLineNo">3031</span>      });<a name="line.3031"></a>
-<span class="sourceLineNo">3032</span>      // update memStore size<a name="line.3032"></a>
-<span class="sourceLineNo">3033</span>      region.addAndGetMemStoreSize(memStoreAccounting);<a name="line.3033"></a>
-<span class="sourceLineNo">3034</span>    }<a name="line.3034"></a>
-<span class="sourceLineNo">3035</span><a name="line.3035"></a>
-<span class="sourceLineNo">3036</span>    public boolean isDone() {<a name="line.3036"></a>
-<span class="sourceLineNo">3037</span>      return nextIndexToProcess == operations.length;<a name="line.3037"></a>
-<span class="sourceLineNo">3038</span>    }<a name="line.3038"></a>
-<span class="sourceLineNo">3039</span><a name="line.3039"></a>
-<span class="sourceLineNo">3040</span>    public int size() {<a name="line.3040"></a>
-<span class="sourceLineNo">3041</span>      return operations.length;<a name="line.3041"></a>
-<span class="sourceLineNo">3042</span>    }<a name="line.3042"></a>
-<span class="sourceLineNo">3043</span><a name="line.3043"></a>
-<span class="sourceLineNo">3044</span>    public boolean isOperationPending(int index) {<a name="line.3044"></a>
-<span class="sourceLineNo">3045</span>      return retCodeDetails[index].getOperationStatusCode() == OperationStatusCode.NOT_RUN;<a name="line.3045"></a>
-<span class="sourceLineNo">3046</span>    }<a name="line.3046"></a>
-<span class="sourceLineNo">3047</span><a name="line.3047"></a>
-<span class="sourceLineNo">3048</span>    public List&lt;UUID&gt; getClusterIds() {<a name="line.3048"></a>
-<span class="sourceLineNo">3049</span>      assert size() != 0;<a name="line.3049"></a>
-<span class="sourceLineNo">3050</span>      return getMutation(0).getClusterIds();<a name="line.3050"></a>
-<span class="sourceLineNo">3051</span>    }<a name="line.3051"></a>
-<span class="sourceLineNo">3052</span><a name="line.3052"></a>
-<span class="sourceLineNo">3053</span>    boolean isAtomic() {<a name="line.3053"></a>
-<span class="sourceLineNo">3054</span>      return atomic;<a name="line.3054"></a>
-<span class="sourceLineNo">3055</span>    }<a name="line.3055"></a>
-<span class="sourceLineNo">3056</span><a name="line.3056"></a>
-<span class="sourceLineNo">3057</span>    /**<a name="line.3057"></a>
-<span class="sourceLineNo">3058</span>     * Helper method that checks and prepares only one mutation. This can be used to implement<a name="line.3058"></a>
-<span class="sourceLineNo">3059</span>     * {@link #checkAndPrepare()} for entire Batch.<a name="line.3059"></a>
-<span class="sourceLineNo">3060</span>     * NOTE: As CP prePut()/ preDelete() hooks may modify mutations, this method should be called<a name="line.3060"></a>
-<span class="sourceLineNo">3061</span>     * after prePut()/ preDelete() CP hooks are run for the mutation<a name="line.3061"></a>
-<span class="sourceLineNo">3062</span>     */<a name="line.3062"></a>
-<span class="sourceLineNo">3063</span>    protected void checkAndPrepareMutation(Mutation mutation, final long timestamp)<a name="line.3063"></a>
-<span class="sourceLineNo">3064</span>        throws IOException {<a name="line.3064"></a>
-<span class="sourceLineNo">3065</span>      region.checkRow(mutation.getRow(), "batchMutate");<a name="line.3065"></a>
-<span class="sourceLineNo">3066</span>      if (mutation instanceof Put) {<a name="line.3066"></a>
-<span class="sourceLineNo">3067</span>        // Check the families in the put. If bad, skip this one.<a name="line.3067"></a>
-<span class="sourceLineNo">3068</span>        checkAndPreparePut((Put) mutation);<a name="line.3068"></a>
-<span class="sourceLineNo">3069</span>        region.checkTimestamps(mutation.getFamilyCellMap(), timestamp);<a name="line.3069"></a>
-<span class="sourceLineNo">3070</span>      } else {<a name="line.3070"></a>
-<span class="sourceLineNo">3071</span>        region.prepareDelete((Delete) mutation);<a name="line.3071"></a>
-<span class="sourceLineNo">3072</span>      }<a name="line.3072"></a>
-<span class="sourceLineNo">3073</span>    }<a name="line.3073"></a>
-<span class="sourceLineNo">3074</span><a name="line.3074"></a>
-<span class="sourceLineNo">3075</span>    protected void checkAndPrepareMutation(int index, long timestamp) throws IOException {<a name="line.3075"></a>
-<span class="sourceLineNo">3076</span>      Mutation mutation = getMutation(index);<a name="line.3076"></a>
-<span class="sourceLineNo">3077</span>      try {<a name="line.3077"></a>
-<span class="sourceLineNo">3078</span>        this.checkAndPrepareMutation(mutation, timestamp);<a name="line.3078"></a>
-<span class="sourceLineNo">3079</span><a name="line.3079"></a>
-<span class="sourceLineNo">3080</span>        // store the family map reference to allow for mutations<a name="line.3080"></a>
-<span class="sourceLineNo">3081</span>        familyCellMaps[index] = mutation.getFamilyCellMap();<a name="line.3081"></a>
-<span class="sourceLineNo">3082</span>        // store durability for the batch (highest durability of all operations in the batch)<a name="line.3082"></a>
-<span class="sourceLineNo">3083</span>        Durability tmpDur = region.getEffectiveDurability(mutation.getDurability());<a name="line.3083"></a>
-<span class="sourceLineNo">3084</span>        if (tmpDur.ordinal() &gt; durability.ordinal()) {<a name="line.3084"></a>
-<span class="sourceLineNo">3085</span>          durability = tmpDur;<a name="line.3085"></a>
-<span class="sourceLineNo">3086</span>        }<a name="line.3086"></a>
-<span class="sourceLineNo">3087</span>      } catch (NoSuchColumnFamilyException nscfe) {<a name="line.3087"></a>
-<span class="sourceLineNo">3088</span>        final String msg = "No such column family in batch mutation. ";<a name="line.3088"></a>
-<span class="sourceLineNo">3089</span>        if (observedExceptions.hasSeenNoSuchFamily()) {<a name="line.3089"></a>
-<span class="sourceLineNo">3090</span>          LOG.warn(msg + nscfe.getMessage());<a name="line.3090"></a>
-<span class="sourceLineNo">3091</span>        } else {<a name="line.3091"></a>
-<span class="sourceLineNo">3092</span>          LOG.warn(msg, nscfe);<a name="line.3092"></a>
-<span class="sourceLineNo">3093</span>          observedExceptions.sawNoSuchFamily();<a name="line.3093"></a>
-<span class="sourceLineNo">3094</span>        }<a name="line.3094"></a>
-<span class="sourceLineNo">3095</span>        retCodeDetails[index] = new OperationStatus(<a name="line.3095"></a>
-<span class="sourceLineNo">3096</span>            OperationStatusCode.BAD_FAMILY, nscfe.getMessage());<a name="line.3096"></a>
-<span class="sourceLineNo">3097</span>        if (isAtomic()) { // fail, atomic means all or none<a name="line.3097"></a>
-<span class="sourceLineNo">3098</span>          throw nscfe;<a name="line.3098"></a>
-<span class="sourceLineNo">3099</span>        }<a name="line.3099"></a>
-<span class="sourceLineNo">3100</span>      } catch (FailedSanityCheckException fsce) {<a name="line.3100"></a>
-<span class="sourceLineNo">3101</span>        final String msg = "Batch Mutation did not pass sanity check. ";<a name="line.3101"></a>
-<span class="sourceLineNo">3102</span>        if (observedExceptions.hasSeenFailedSanityCheck()) {<a name="line.3102"></a>
-<span class="sourceLineNo">3103</span>          LOG.warn(msg + fsce.getMessage());<a name="line.3103"></a>
-<span class="sourceLineNo">3104</span>        } else {<a name="line.3104"></a>
-<span class="sourceLineNo">3105</span>          LOG.warn(msg, fsce);<a name="line.3105"></a>
-<span class="sourceLineNo">3106</span>          observedExceptions.sawFailedSanityCheck();<a name="line.3106"></a>
-<span class="sourceLineNo">3107</span>        }<a name="line.3107"></a>
-<span class="sourceLineNo">3108</span>        retCodeDetails[index] = new OperationStatus(<a name="line.3108"></a>
-<span class="sourceLineNo">3109</span>            OperationStatusCode.SANITY_CHECK_FAILURE, fsce.getMessage());<a name="line.3109"></a>
-<span class="sourceLineNo">3110</span>        if (isAtomic()) {<a name="line.3110"></a>
-<span class="sourceLineNo">3111</span>          throw fsce;<a name="line.3111"></a>
-<span class="sourceLineNo">3112</span>        }<a name="line.3112"></a>
-<span class="sourceLineNo">3113</span>      } catch (WrongRegionException we) {<a name="line.3113"></a>
-<span class="sourceLineNo">3114</span>        final String msg = "Batch mutation had a row that does not belong to this region. ";<a name="line.3114"></a>
-<span class="sourceLineNo">3115</span>        if (observedExceptions.hasSeenWrongRegion()) {<a name="line.3115"></a>
-<span class="sourceLineNo">3116</span>          LOG.warn(msg + we.getMessage());<a name="line.3116"></a>
-<span class="sourceLineNo">3117</span>        } else {<a name="line.3117"></a>
-<span class="sourceLineNo">3118</span>          LOG.warn(msg, we);<a name="line.3118"></a>
-<span class="sourceLineNo">3119</span>          observedExceptions.sawWrongRegion();<a name="line.3119"></a>
-<span class="sourceLineNo">3120</span>        }<a name="line.3120"></a>
-<span class="sourceLineNo">3121</span>        retCodeDetails[index] = new OperationStatus(<a name="line.3121"></a>
-<span class="sourceLineNo">3122</span>            OperationStatusCode.SANITY_CHECK_FAILURE, we.getMessage());<a name="line.3122"></a>
-<span class="sourceLineNo">3123</span>        if (isAtomic()) {<a name="line.3123"></a>
-<span class="sourceLineNo">3124</span>          throw we;<a name="line.3124"></a>
-<span class="sourceLineNo">3125</span>        }<a name="line.3125"></a>
-<span class="sourceLineNo">3126</span>      }<a name="line.3126"></a>
-<span class="sourceLineNo">3127</span>    }<a name="line.3127"></a>
-<span class="sourceLineNo">3128</span><a name="line.3128"></a>
-<span class="sourceLineNo">3129</span>    /**<a name="line.3129"></a>
-<span class="sourceLineNo">3130</span>     * Creates Mini-batch of all operations [nextIndexToProcess, lastIndexExclusive) for which<a name="line.3130"></a>
-<span class="sourceLineNo">3131</span>     * a row lock can be acquired. All mutations with locked rows are considered to be<a name="line.3131"></a>
-<span class="sourceLineNo">3132</span>     * In-progress operations and hence the name {@link MiniBatchOperationInProgress}. Mini batch<a name="line.3132"></a>
-<span class="sourceLineNo">3133</span>     * is window over {@link BatchOperation} and contains contiguous pending operations.<a name="line.3133"></a>
-<span class="sourceLineNo">3134</span>     *<a name="line.3134"></a>
-<span class="sourceLineNo">3135</span>     * @param acquiredRowLocks keeps track of rowLocks acquired.<a name="line.3135"></a>
-<span class="sourceLineNo">3136</span>     */<a name="line.3136"></a>
-<span class="sourceLineNo">3137</span>    public MiniBatchOperationInProgress&lt;Mutation&gt; lockRowsAndBuildMiniBatch(<a name="line.3137"></a>
-<span class="sourceLineNo">3138</span>        List&lt;RowLock&gt; acquiredRowLocks) throws IOException {<a name="line.3138"></a>
-<span class="sourceLineNo">3139</span>      int readyToWriteCount = 0;<a name="line.3139"></a>
-<span class="sourceLineNo">3140</span>      int lastIndexExclusive = 0;<a name="line.3140"></a>
-<span class="sourceLineNo">3141</span>      for (; lastIndexExclusive &lt; size(); lastIndexExclusive++) {<a name="line.3141"></a>
-<span class="sourceLineNo">3142</span>        if (!isOperationPending(lastIndexExclusive)) {<a name="line.3142"></a>
-<span class="sourceLineNo">3143</span>          continue;<a name="line.3143"></a>
-<span class="sourceLineNo">3144</span>        }<a name="line.3144"></a>
-<span class="sourceLineNo">3145</span>        Mutation mutation = getMutation(lastIndexExclusive);<a name="line.3145"></a>
-<span class="sourceLineNo">3146</span>        // If we haven't got any rows in our batch, we should block to get the next one.<a name="line.3146"></a>
-<span class="sourceLineNo">3147</span>        RowLock rowLock = null;<a name="line.3147"></a>
-<span class="sourceLineNo">3148</span>        try {<a name="line.3148"></a>
-<span class="sourceLineNo">3149</span>          // if atomic then get exclusive lock, else shared lock<a name="line.3149"></a>
-<span class="sourceLineNo">3150</span>          rowLock = region.getRowLockInternal(mutation.getRow(), !isAtomic());<a name="line.3150"></a>
-<span class="sourceLineNo">3151</span>        } catch (TimeoutIOException e) {<a name="line.3151"></a>
-<span class="sourceLineNo">3152</span>          // We will retry when other exceptions, but we should stop if we timeout .<a name="line.3152"></a>
-<span class="sourceLineNo">3153</span>          throw e;<a name="line.3153"></a>
-<span class="sourceLineNo">3154</span>        } catch (IOException ioe) {<a name="line.3154"></a>
-<span class="sourceLineNo">3155</span>          LOG.warn("Failed getting lock, row=" + Bytes.toStringBinary(mutation.getRow()), ioe);<a name="line.3155"></a>
-<span class="sourceLineNo">3156</span>          if (isAtomic()) { // fail, atomic means all or none<a name="line.3156"></a>
-<span class="sourceLineNo">3157</span>            throw ioe;<a name="line.3157"></a>
-<span class="sourceLineNo">3158</span>          }<a name="line.3158"></a>
-<span class="sourceLineNo">3159</span>        }<a name="line.3159"></a>
-<span class="sourceLineNo">3160</span>        if (rowLock == null) {<a name="line.3160"></a>
-<span class="sourceLineNo">3161</span>          // We failed to grab another lock<a name="line.3161"></a>
-<span class="sourceLineNo">3162</span>          if (isAtomic()) {<a name="line.3162"></a>
-<span class="sourceLineNo">3163</span>            throw new IOException("Can't apply all operations atomically!");<a name="line.3163"></a>
-<span class="sourceLineNo">3164</span>          }<a name="line.3164"></a>
-<span class="sourceLineNo">3165</span>          break; // Stop acquiring more rows for this batch<a name="line.3165"></a>
-<span class="sourceLineNo">3166</span>        } else {<a name="line.3166"></a>
-<span class="sourceLineNo">3167</span>          acquiredRowLocks.add(rowLock);<a name="line.3167"></a>
-<span class="sourceLineNo">3168</span>        }<a name="line.3168"></a>
-<span class="sourceLineNo">3169</span>        readyToWriteCount++;<a name="line.3169"></a>
-<span class="sourceLineNo">3170</span>      }<a name="line.3170"></a>
-<span class="sourceLineNo">3171</span>      return createMiniBatch(lastIndexExclusive, readyToWriteCount);<a name="line.3171"></a>
-<span class="sourceLineNo">3172</span>    }<a name="line.3172"></a>
-<span class="sourceLineNo">3173</span><a name="line.3173"></a>
-<span class="sourceLineNo">3174</span>    protected MiniBatchOperationInProgress&lt;Mutation&gt; createMiniBatch(final int lastIndexExclusive,<a name="line.3174"></a>
-<span class="sourceLineNo">3175</span>        final int readyToWriteCount) {<a name="line.3175"></a>
-<span class="sourceLineNo">3176</span>      return new MiniBatchOperationInProgress&lt;&gt;(getMutationsForCoprocs(), retCodeDetails,<a name="line.3176"></a>
-<span class="sourceLineNo">3177</span>          walEditsFromCoprocessors, nextIndexToProcess, lastIndexExclusive, readyToWriteCount);<a name="line.3177"></a>
-<span class="sourceLineNo">3178</span>    }<a name="line.3178"></a>
-<span class="sourceLineNo">3179</span><a name="line.3179"></a>
-<span class="sourceLineNo">3180</span>    /**<a name="line.3180"></a>
-<span class="sourceLineNo">3181</span>     * Builds separate WALEdit per nonce by applying input mutations. If WALEdits from CP are<a name="line.3181"></a>
-<span class="sourceLineNo">3182</span>     * present, they are merged to result WALEdit.<a name="line.3182"></a>
-<span class="sourceLineNo">3183</span>     */<a name="line.3183"></a>
-<span class="sourceLineNo">3184</span>    public List&lt;Pair&lt;NonceKey, WALEdit&gt;&gt; buildWALEdits(<a name="line.3184"></a>
-<span class="sourceLineNo">3185</span>        final MiniBatchOperationInProgress&lt;Mutation&gt; miniBatchOp) throws IOException {<a name="line.3185"></a>
-<span class="sourceLineNo">3186</span>      List&lt;Pair&lt;NonceKey, WALEdit&gt;&gt; walEdits = new ArrayList&lt;&gt;();<a name="line.3186"></a>
-<span class="sourceLineNo">3187</span><a name="line.3187"></a>
-<span class="sourceLineNo">3188</span>      visitBatchOperations(true, nextIndexToProcess + miniBatchOp.size(), new Visitor() {<a name="line.3188"></a>
-<span class="sourceLineNo">3189</span>        private Pair&lt;NonceKey, WALEdit&gt; curWALEditForNonce;<a name="line.3189"></a>
-<span class="sourceLineNo">3190</span>        @Override<a name="line.3190"></a>
-<span class="sourceLineNo">3191</span>        public boolean visit(int index) throws IOException {<a name="line.3191"></a>
-<span class="sourceLineNo">3192</span>          Mutation m = getMutation(index);<a name="line.3192"></a>
-<span class="sourceLineNo">3193</span>          // we use durability of the original mutation for the mutation passed by CP.<a name="line.3193"></a>
-<span class="sourceLineNo">3194</span>          if (region.getEffectiveDurability(m.getDurability()) == Durability.SKIP_WAL) {<a name="line.3194"></a>
-<span class="sourceLineNo">3195</span>            region.recordMutationWithoutWal(m.getFamilyCellMap());<a name="line.3195"></a>
-<span class="sourceLineNo">3196</span>            return true;<a name="line.3196"></a>
-<span class="sourceLineNo">3197</span>          }<a name="line.3197"></a>
-<span class="sourceLineNo">3198</span><a name="line.3198"></a>
-<span class="sourceLineNo">3199</span>          // the batch may contain multiple nonce keys (replay case). If so, write WALEdit for each.<a name="line.3199"></a>
-<span class="sourceLineNo">3200</span>          // Given how nonce keys are originally written, these should be contiguous.<a name="line.3200"></a>
-<span class="sourceLineNo">3201</span>          // They don't have to be, it will still work, just write more WALEdits than needed.<a name="line.3201"></a>
-<span class="sourceLineNo">3202</span>          long nonceGroup = getNonceGroup(index);<a name="line.3202"></a>
-<span class="sourceLineNo">3203</span>          long nonce = getNonce(index);<a name="line.3203"></a>
-<span class="sourceLineNo">3204</span>          if (curWALEditForNonce == null ||<a name="line.3204"></a>
-<span class="sourceLineNo">3205</span>              curWALEditForNonce.getFirst().getNonceGroup() != nonceGroup ||<a name="line.3205"></a>
-<span class="sourceLineNo">3206</span>              curWALEditForNonce.getFirst().getNonce() != nonce) {<a name="line.3206"></a>
-<span class="sourceLineNo">3207</span>            curWALEditForNonce = new Pair&lt;&gt;(new NonceKey(nonceGroup, nonce),<a name="line.3207"></a>
-<span class="sourceLineNo">3208</span>                new WALEdit(miniBatchOp.getCellCount(), isInReplay()));<a name="line.3208"></a>
-<span class="sourceLineNo">3209</span>            walEdits.add(curWALEditForNonce);<a name="line.3209"></a>
-<span class="sourceLineNo">3210</span>          }<a name="line.3210"></a>
-<span class="sourceLineNo">3211</span>          WALEdit walEdit = curWALEditForNonce.getSecond();<a name="line.3211"></a>
-<span class="sourceLineNo">3212</span><a name="line.3212"></a>
-<span class="sourceLineNo">3213</span>          // Add WAL edits by CP<a name="line.3213"></a>
-<span class="sourceLineNo">3214</span>          WALEdit fromCP = walEditsFromCoprocessors[index];<a name="line.3214"></a>
-<span class="sourceLineNo">3215</span>          if (fromCP != null) {<a name="line.3215"></a>
-<span class="sourceLineNo">3216</span>            for (Cell cell : fromCP.getCells()) {<a name="line.3216"></a>
-<span class="sourceLineNo">3217</span>              walEdit.add(cell);<a name="line.3217"></a>
-<span class="sourceLineNo">3218</span>            }<a name="line.3218"></a>
-<span class="sourceLineNo">3219</span>          }<a name="line.3219"></a>
-<span class="sourceLineNo">3220</span>          addFamilyMapToWALEdit(familyCellMaps[index], walEdit);<a name="line.3220"></a>
-<span class="sourceLineNo">3221</span><a name="line.3221"></a>
-<span class="sourceLineNo">3222</span>          return true;<a name="line.3222"></a>
-<span class="sourceLineNo">3223</span>        }<a name="line.3223"></a>
-<span class="sourceLineNo">3224</span>      });<a name="line.3224"></a>
-<span class="sourceLineNo">3225</span>      return walEdits;<a name="line.3225"></a>
-<span class="sourceLineNo">3226</span>    }<a name="line.3226"></a>
-<span class="sourceLineNo">3227</span><a name="line.3227"></a>
-<span class="sourceLineNo">3228</span>    /**<a name="line.3228"></a>
-<span class="sourceLineNo">3229</span>     * This method completes mini-batch operations by calling postBatchMutate() CP hook (if<a name="line.3229"></a>
-<span class="sourceLineNo">3230</span>     * required) and completing mvcc.<a name="line.3230"></a>
-<span class="sourceLineNo">3231</span>     */<a name="line.3231"></a>
-<span class="sourceLineNo">3232</span>    public void completeMiniBatchOperations(<a name="line.3232"></a>
-<span class="sourceLineNo">3233</span>        final MiniBatchOperationInProgress&lt;Mutation&gt; miniBatchOp, final WriteEntry writeEntry)<a name="line.3233"></a>
-<span class="sourceLineNo">3234</span>        throws IOException {<a name="line.3234"></a>
-<span class="sourceLineNo">3235</span>      if (writeEntry != null) {<a name="line.3235"></a>
-<span class="sourceLineNo">3236</span>        region.mvcc.completeAndWait(writeEntry);<a name="line.3236"></a>
-<span class="sourceLineNo">3237</span>      }<a name="line.3237"></a>
-<span class="sourceLineNo">3238</span>    }<a name="line.3238"></a>
-<span class="sourceLineNo">3239</span><a name="line.3239"></a>
-<span class="sourceLineNo">3240</span>    public void doPostOpCleanupForMiniBatch(<a name="line.3240"></a>
-<span class="sourceLineNo">3241</span>        final MiniBatchOperationInProgress&lt;Mutation&gt; miniBatchOp, final WALEdit walEdit,<a name="line.3241"></a>
-<span class="sourceLineNo">3242</span>        boolean success) throws IOException {}<a name="line.3242"></a>
-<span class="sourceLineNo">3243</span><a name="line.3243"></a>
-<span class="sourceLineNo">3244</span>    /**<a name="line.3244"></a>
-<span class="sourceLineNo">3245</span>     * Atomically apply the given map of family-&gt;edits to the memstore.<a name="line.3245"></a>
-<span class="sourceLineNo">3246</span>     * This handles the consistency control on its own, but the caller<a name="line.3246"></a>
-<span class="sourceLineNo">3247</span>     * should already have locked updatesLock.readLock(). This also does<a name="line.3247"></a>
-<span class="sourceLineNo">3248</span>     * &lt;b&gt;not&lt;/b&gt; check the families for validity.<a name="line.3248"></a>
-<span class="sourceLineNo">3249</span>     *<a name="line.3249"></a>
-<span class="sourceLineNo">3250</span>     * @param familyMap Map of Cells by family<a name="line.3250"></a>
-<span class="sourceLineNo">3251</span>     */<a name="line.3251"></a>
-<span class="sourceLineNo">3252</span>    protected void applyFamilyMapToMemStore(Map&lt;byte[], List&lt;Cell&gt;&gt; familyMap,<a name="line.3252"></a>
-<span class="sourceLineNo">3253</span>        MemStoreSizing memstoreAccounting) throws IOException {<a name="line.3253"></a>
-<span class="sourceLineNo">3254</span>      for (Map.Entry&lt;byte[], List&lt;Cell&gt;&gt; e : familyMap.entrySet()) {<a name="line.3254"></a>
-<span class="sourceLineNo">3255</span>        byte[] family = e.getKey();<a name="line.3255"></a>
-<span class="sourceLineNo">3256</span>        List&lt;Cell&gt; cells = e.getValue();<a name="line.3256"></a>
-<span class="sourceLineNo">3257</span>        assert cells instanceof RandomAccess;<a name="line.3257"></a>
-<span class="sourceLineNo">3258</span>        region.applyToMemStore(region.getStore(family), cells, false, memstoreAccounting);<a name="line.3258"></a>
-<span class="sourceLineNo">3259</span>      }<a name="line.3259"></a>
-<span class="sourceLineNo">3260</span>    }<a name="line.3260"></a>
-<span class="sourceLineNo">3261</span><a name="line.3261"></a>
-<span class="sourceLineNo">3262</span>    /**<a name="line.3262"></a>
-<span class="sourceLineNo">3263</span>     * Append the given map of family-&gt;edits to a WALEdit data structure.<a name="line.3263"></a>
-<span class="sourceLineNo">3264</span>     * This does not write to the WAL itself.<a name="line.3264"></a>
-<span class="sourceLineNo">3265</span>     * @param familyMap map of family-&gt;edits<a name="line.3265"></a>
-<span class="sourceLineNo">3266</span>     * @param walEdit the destination entry to append into<a name="line.3266"></a>
-<span class="sourceLineNo">3267</span>     */<a name="line.3267"></a>
-<span class="sourceLineNo">3268</span>    private void addFamilyMapToWALEdit(Map&lt;byte[], List&lt;Cell&gt;&gt; familyMap,<a name="line.3268"></a>
-<span class="sourceLineNo">3269</span>        WALEdit walEdit) {<a name="line.3269"></a>
-<span class="sourceLineNo">3270</span>      for (List&lt;Cell&gt; edits : familyMap.values()) {<a name="line.3270"></a>
-<span class="sourceLineNo">3271</span>        // Optimization: 'foreach' loop is not used. See:<a name="line.3271"></a>
-<span class="sourceLineNo">3272</span>        // HBASE-12023 HRegion.applyFamilyMapToMemstore creates too many iterator objects<a name="line.3272"></a>
-<span class="sourceLineNo">3273</span>        assert edits instanceof RandomAccess;<a name="line.3273"></a>
-<span class="sourceLineNo">3274</span>        int listSize = edits.size();<a name="line.3274"></a>
-<span class="sourceLineNo">3275</span>        for (int i=0; i &lt; listSize; i++) {<a name="line.3275"></a>
-<span class="sourceLineNo">3276</span>          Cell cell = edits.get(i);<a name="line.3276"></a>
-<span class="sourceLineNo">3277</span>          walEdit.add(cell);<a name="line.3277"></a>
-<span class="sourceLineNo">3278</span>        }<a name="line.3278"></a>
-<span class="sourceLineNo">3279</span>      }<a name="line.3279"></a>
-<span class="sourceLineNo">3280</span>    }<a name="line.3280"></a>
-<span class="sourceLineNo">3281</span>  }<a name="line.3281"></a>
-<span class="sourceLineNo">3282</span><a name="line.3282"></a>
-<span class="sourceLineNo">3283</span>  /**<a name="line.3283"></a>
-<span class="sourceLineNo">3284</span>   * Batch of mutation operations. Base class is shared with {@link ReplayBatchOperation} as most<a name="line.3284"></a>
-<span class="sourceLineNo">3285</span>   * of the logic is same.<a name="line.3285"></a>
-<span class="sourceLineNo">3286</span>   */<a name="line.3286"></a>
-<span class="sourceLineNo">3287</span>  static class MutationBatchOperation extends BatchOperation&lt;Mutation&gt; {<a name="line.3287"></a>
-<span class="sourceLineNo">3288</span>    private long nonceGroup;<a name="line.3288"></a>
-<span class="sourceLineNo">3289</span>    private long nonce;<a name="line.3289"></a>
-<span class="sourceLineNo">3290</span>    public MutationBatchOperation(final HRegion region, Mutation[] operations, boolean atomic,<a name="line.3290"></a>
-<span class="sourceLineNo">3291</span>        long nonceGroup, long nonce) {<a name="line.3291"></a>
-<span class="sourceLineNo">3292</span>      super(region, operations);<a name="line.3292"></a>
-<span class="sourceLineNo">3293</span>      this.atomic = atomic;<a name="line.3293"></a>
-<span class="sourceLineNo">3294</span>      this.nonceGroup = nonceGroup;<a name="line.3294"></a>
-<span class="sourceLineNo">3295</span>      this.nonce = nonce;<a name="line.3295"></a>
-<span class="sourceLineNo">3296</span>    }<a name="line.3296"></a>
-<span class="sourceLineNo">3297</span><a name="line.3297"></a>
-<span class="sourceLineNo">3298</span>    @Override<a name="line.3298"></a>
-<span class="sourceLineNo">3299</span>    public Mutation getMutation(int index) {<a name="line.3299"></a>
-<span class="sourceLineNo">3300</span>      return this.operations[index];<a name="line.3300"></a>
-<span class="sourceLineNo">3301</span>    }<a name="line.3301"></a>
-<span class="sourceLineNo">3302</span><a name="line.3302"></a>
-<span class="sourceLineNo">3303</span>    @Override<a name="line.3303"></a>
-<span class="sourceLineNo">3304</span>    public long getNonceGroup(int index) {<a name="line.3304"></a>
-<span class="sourceLineNo">3305</span>      return nonceGroup;<a name="line.3305"></a>
-<span class="sourceLineNo">3306</span>    }<a name="line.3306"></a>
-<span class="sourceLineNo">3307</span><a na

<TRUNCATED>

[16/51] [partial] hbase-site git commit: Published site at .

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/c54c242b/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/HStore.StoreFlusherImpl.html
----------------------------------------------------------------------
diff --git a/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/HStore.StoreFlusherImpl.html b/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/HStore.StoreFlusherImpl.html
index 64ba75d..6cb35af 100644
--- a/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/HStore.StoreFlusherImpl.html
+++ b/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/HStore.StoreFlusherImpl.html
@@ -56,2149 +56,2149 @@
 <span class="sourceLineNo">048</span>import java.util.function.ToLongFunction;<a name="line.48"></a>
 <span class="sourceLineNo">049</span>import java.util.stream.Collectors;<a name="line.49"></a>
 <span class="sourceLineNo">050</span>import java.util.stream.LongStream;<a name="line.50"></a>
-<span class="sourceLineNo">051</span><a name="line.51"></a>
-<span class="sourceLineNo">052</span>import org.apache.commons.logging.Log;<a name="line.52"></a>
-<span class="sourceLineNo">053</span>import org.apache.commons.logging.LogFactory;<a name="line.53"></a>
-<span class="sourceLineNo">054</span>import org.apache.hadoop.conf.Configuration;<a name="line.54"></a>
-<span class="sourceLineNo">055</span>import org.apache.hadoop.fs.FileSystem;<a name="line.55"></a>
-<span class="sourceLineNo">056</span>import org.apache.hadoop.fs.Path;<a name="line.56"></a>
-<span class="sourceLineNo">057</span>import org.apache.hadoop.hbase.Cell;<a name="line.57"></a>
-<span class="sourceLineNo">058</span>import org.apache.hadoop.hbase.CellComparator;<a name="line.58"></a>
-<span class="sourceLineNo">059</span>import org.apache.hadoop.hbase.CellUtil;<a name="line.59"></a>
-<span class="sourceLineNo">060</span>import org.apache.hadoop.hbase.CompoundConfiguration;<a name="line.60"></a>
-<span class="sourceLineNo">061</span>import org.apache.hadoop.hbase.HConstants;<a name="line.61"></a>
-<span class="sourceLineNo">062</span>import org.apache.hadoop.hbase.MemoryCompactionPolicy;<a name="line.62"></a>
-<span class="sourceLineNo">063</span>import org.apache.hadoop.hbase.TableName;<a name="line.63"></a>
-<span class="sourceLineNo">064</span>import org.apache.hadoop.hbase.backup.FailedArchiveException;<a name="line.64"></a>
-<span class="sourceLineNo">065</span>import org.apache.hadoop.hbase.client.ColumnFamilyDescriptor;<a name="line.65"></a>
-<span class="sourceLineNo">066</span>import org.apache.hadoop.hbase.client.RegionInfo;<a name="line.66"></a>
-<span class="sourceLineNo">067</span>import org.apache.hadoop.hbase.client.Scan;<a name="line.67"></a>
-<span class="sourceLineNo">068</span>import org.apache.hadoop.hbase.conf.ConfigurationManager;<a name="line.68"></a>
-<span class="sourceLineNo">069</span>import org.apache.hadoop.hbase.conf.PropagatingConfigurationObserver;<a name="line.69"></a>
-<span class="sourceLineNo">070</span>import org.apache.hadoop.hbase.io.HeapSize;<a name="line.70"></a>
-<span class="sourceLineNo">071</span>import org.apache.hadoop.hbase.io.compress.Compression;<a name="line.71"></a>
-<span class="sourceLineNo">072</span>import org.apache.hadoop.hbase.io.crypto.Encryption;<a name="line.72"></a>
-<span class="sourceLineNo">073</span>import org.apache.hadoop.hbase.io.hfile.CacheConfig;<a name="line.73"></a>
-<span class="sourceLineNo">074</span>import org.apache.hadoop.hbase.io.hfile.HFile;<a name="line.74"></a>
-<span class="sourceLineNo">075</span>import org.apache.hadoop.hbase.io.hfile.HFileContext;<a name="line.75"></a>
-<span class="sourceLineNo">076</span>import org.apache.hadoop.hbase.io.hfile.HFileContextBuilder;<a name="line.76"></a>
-<span class="sourceLineNo">077</span>import org.apache.hadoop.hbase.io.hfile.HFileDataBlockEncoder;<a name="line.77"></a>
-<span class="sourceLineNo">078</span>import org.apache.hadoop.hbase.io.hfile.HFileDataBlockEncoderImpl;<a name="line.78"></a>
-<span class="sourceLineNo">079</span>import org.apache.hadoop.hbase.io.hfile.HFileScanner;<a name="line.79"></a>
-<span class="sourceLineNo">080</span>import org.apache.hadoop.hbase.io.hfile.InvalidHFileException;<a name="line.80"></a>
-<span class="sourceLineNo">081</span>import org.apache.hadoop.hbase.monitoring.MonitoredTask;<a name="line.81"></a>
-<span class="sourceLineNo">082</span>import org.apache.hadoop.hbase.regionserver.compactions.CompactionContext;<a name="line.82"></a>
-<span class="sourceLineNo">083</span>import org.apache.hadoop.hbase.regionserver.compactions.CompactionLifeCycleTracker;<a name="line.83"></a>
-<span class="sourceLineNo">084</span>import org.apache.hadoop.hbase.regionserver.compactions.CompactionProgress;<a name="line.84"></a>
-<span class="sourceLineNo">085</span>import org.apache.hadoop.hbase.regionserver.compactions.CompactionRequestImpl;<a name="line.85"></a>
-<span class="sourceLineNo">086</span>import org.apache.hadoop.hbase.regionserver.compactions.DefaultCompactor;<a name="line.86"></a>
-<span class="sourceLineNo">087</span>import org.apache.hadoop.hbase.regionserver.compactions.OffPeakHours;<a name="line.87"></a>
-<span class="sourceLineNo">088</span>import org.apache.hadoop.hbase.regionserver.querymatcher.ScanQueryMatcher;<a name="line.88"></a>
-<span class="sourceLineNo">089</span>import org.apache.hadoop.hbase.regionserver.throttle.ThroughputController;<a name="line.89"></a>
-<span class="sourceLineNo">090</span>import org.apache.hadoop.hbase.regionserver.wal.WALUtil;<a name="line.90"></a>
-<span class="sourceLineNo">091</span>import org.apache.hadoop.hbase.security.EncryptionUtil;<a name="line.91"></a>
-<span class="sourceLineNo">092</span>import org.apache.hadoop.hbase.security.User;<a name="line.92"></a>
-<span class="sourceLineNo">093</span>import org.apache.hadoop.hbase.util.Bytes;<a name="line.93"></a>
-<span class="sourceLineNo">094</span>import org.apache.hadoop.hbase.util.ChecksumType;<a name="line.94"></a>
-<span class="sourceLineNo">095</span>import org.apache.hadoop.hbase.util.ClassSize;<a name="line.95"></a>
-<span class="sourceLineNo">096</span>import org.apache.hadoop.hbase.util.EnvironmentEdgeManager;<a name="line.96"></a>
-<span class="sourceLineNo">097</span>import org.apache.hadoop.hbase.util.Pair;<a name="line.97"></a>
-<span class="sourceLineNo">098</span>import org.apache.hadoop.hbase.util.ReflectionUtils;<a name="line.98"></a>
-<span class="sourceLineNo">099</span>import org.apache.hadoop.util.StringUtils;<a name="line.99"></a>
-<span class="sourceLineNo">100</span>import org.apache.hadoop.util.StringUtils.TraditionalBinaryPrefix;<a name="line.100"></a>
-<span class="sourceLineNo">101</span>import org.apache.yetus.audience.InterfaceAudience;<a name="line.101"></a>
-<span class="sourceLineNo">102</span><a name="line.102"></a>
-<span class="sourceLineNo">103</span>import org.apache.hadoop.hbase.shaded.com.google.common.annotations.VisibleForTesting;<a name="line.103"></a>
-<span class="sourceLineNo">104</span>import org.apache.hadoop.hbase.shaded.com.google.common.base.Preconditions;<a name="line.104"></a>
-<span class="sourceLineNo">105</span>import org.apache.hadoop.hbase.shaded.com.google.common.collect.ImmutableCollection;<a name="line.105"></a>
-<span class="sourceLineNo">106</span>import org.apache.hadoop.hbase.shaded.com.google.common.collect.ImmutableList;<a name="line.106"></a>
-<span class="sourceLineNo">107</span>import org.apache.hadoop.hbase.shaded.com.google.common.collect.Lists;<a name="line.107"></a>
-<span class="sourceLineNo">108</span>import org.apache.hadoop.hbase.shaded.com.google.common.collect.Sets;<a name="line.108"></a>
-<span class="sourceLineNo">109</span>import org.apache.hadoop.hbase.shaded.protobuf.ProtobufUtil;<a name="line.109"></a>
-<span class="sourceLineNo">110</span>import org.apache.hadoop.hbase.shaded.protobuf.generated.WALProtos.CompactionDescriptor;<a name="line.110"></a>
-<span class="sourceLineNo">111</span><a name="line.111"></a>
-<span class="sourceLineNo">112</span>/**<a name="line.112"></a>
-<span class="sourceLineNo">113</span> * A Store holds a column family in a Region.  Its a memstore and a set of zero<a name="line.113"></a>
-<span class="sourceLineNo">114</span> * or more StoreFiles, which stretch backwards over time.<a name="line.114"></a>
-<span class="sourceLineNo">115</span> *<a name="line.115"></a>
-<span class="sourceLineNo">116</span> * &lt;p&gt;There's no reason to consider append-logging at this level; all logging<a name="line.116"></a>
-<span class="sourceLineNo">117</span> * and locking is handled at the HRegion level.  Store just provides<a name="line.117"></a>
-<span class="sourceLineNo">118</span> * services to manage sets of StoreFiles.  One of the most important of those<a name="line.118"></a>
-<span class="sourceLineNo">119</span> * services is compaction services where files are aggregated once they pass<a name="line.119"></a>
-<span class="sourceLineNo">120</span> * a configurable threshold.<a name="line.120"></a>
-<span class="sourceLineNo">121</span> *<a name="line.121"></a>
-<span class="sourceLineNo">122</span> * &lt;p&gt;Locking and transactions are handled at a higher level.  This API should<a name="line.122"></a>
-<span class="sourceLineNo">123</span> * not be called directly but by an HRegion manager.<a name="line.123"></a>
-<span class="sourceLineNo">124</span> */<a name="line.124"></a>
-<span class="sourceLineNo">125</span>@InterfaceAudience.Private<a name="line.125"></a>
-<span class="sourceLineNo">126</span>public class HStore implements Store, HeapSize, StoreConfigInformation, PropagatingConfigurationObserver {<a name="line.126"></a>
-<span class="sourceLineNo">127</span>  public static final String MEMSTORE_CLASS_NAME = "hbase.regionserver.memstore.class";<a name="line.127"></a>
-<span class="sourceLineNo">128</span>  public static final String COMPACTCHECKER_INTERVAL_MULTIPLIER_KEY =<a name="line.128"></a>
-<span class="sourceLineNo">129</span>      "hbase.server.compactchecker.interval.multiplier";<a name="line.129"></a>
-<span class="sourceLineNo">130</span>  public static final String BLOCKING_STOREFILES_KEY = "hbase.hstore.blockingStoreFiles";<a name="line.130"></a>
-<span class="sourceLineNo">131</span>  public static final String BLOCK_STORAGE_POLICY_KEY = "hbase.hstore.block.storage.policy";<a name="line.131"></a>
-<span class="sourceLineNo">132</span>  // keep in accordance with HDFS default storage policy<a name="line.132"></a>
-<span class="sourceLineNo">133</span>  public static final String DEFAULT_BLOCK_STORAGE_POLICY = "HOT";<a name="line.133"></a>
-<span class="sourceLineNo">134</span>  public static final int DEFAULT_COMPACTCHECKER_INTERVAL_MULTIPLIER = 1000;<a name="line.134"></a>
-<span class="sourceLineNo">135</span>  public static final int DEFAULT_BLOCKING_STOREFILE_COUNT = 10;<a name="line.135"></a>
-<span class="sourceLineNo">136</span><a name="line.136"></a>
-<span class="sourceLineNo">137</span>  private static final Log LOG = LogFactory.getLog(HStore.class);<a name="line.137"></a>
-<span class="sourceLineNo">138</span><a name="line.138"></a>
-<span class="sourceLineNo">139</span>  protected final MemStore memstore;<a name="line.139"></a>
-<span class="sourceLineNo">140</span>  // This stores directory in the filesystem.<a name="line.140"></a>
-<span class="sourceLineNo">141</span>  protected final HRegion region;<a name="line.141"></a>
-<span class="sourceLineNo">142</span>  private final ColumnFamilyDescriptor family;<a name="line.142"></a>
-<span class="sourceLineNo">143</span>  private final HRegionFileSystem fs;<a name="line.143"></a>
-<span class="sourceLineNo">144</span>  protected Configuration conf;<a name="line.144"></a>
-<span class="sourceLineNo">145</span>  protected CacheConfig cacheConf;<a name="line.145"></a>
-<span class="sourceLineNo">146</span>  private long lastCompactSize = 0;<a name="line.146"></a>
-<span class="sourceLineNo">147</span>  volatile boolean forceMajor = false;<a name="line.147"></a>
-<span class="sourceLineNo">148</span>  /* how many bytes to write between status checks */<a name="line.148"></a>
-<span class="sourceLineNo">149</span>  static int closeCheckInterval = 0;<a name="line.149"></a>
-<span class="sourceLineNo">150</span>  private volatile long storeSize = 0L;<a name="line.150"></a>
-<span class="sourceLineNo">151</span>  private volatile long totalUncompressedBytes = 0L;<a name="line.151"></a>
-<span class="sourceLineNo">152</span><a name="line.152"></a>
-<span class="sourceLineNo">153</span>  /**<a name="line.153"></a>
-<span class="sourceLineNo">154</span>   * RWLock for store operations.<a name="line.154"></a>
-<span class="sourceLineNo">155</span>   * Locked in shared mode when the list of component stores is looked at:<a name="line.155"></a>
-<span class="sourceLineNo">156</span>   *   - all reads/writes to table data<a name="line.156"></a>
-<span class="sourceLineNo">157</span>   *   - checking for split<a name="line.157"></a>
-<span class="sourceLineNo">158</span>   * Locked in exclusive mode when the list of component stores is modified:<a name="line.158"></a>
-<span class="sourceLineNo">159</span>   *   - closing<a name="line.159"></a>
-<span class="sourceLineNo">160</span>   *   - completing a compaction<a name="line.160"></a>
-<span class="sourceLineNo">161</span>   */<a name="line.161"></a>
-<span class="sourceLineNo">162</span>  final ReentrantReadWriteLock lock = new ReentrantReadWriteLock();<a name="line.162"></a>
-<span class="sourceLineNo">163</span>  /**<a name="line.163"></a>
-<span class="sourceLineNo">164</span>   * Lock specific to archiving compacted store files.  This avoids races around<a name="line.164"></a>
-<span class="sourceLineNo">165</span>   * the combination of retrieving the list of compacted files and moving them to<a name="line.165"></a>
-<span class="sourceLineNo">166</span>   * the archive directory.  Since this is usually a background process (other than<a name="line.166"></a>
-<span class="sourceLineNo">167</span>   * on close), we don't want to handle this with the store write lock, which would<a name="line.167"></a>
-<span class="sourceLineNo">168</span>   * block readers and degrade performance.<a name="line.168"></a>
-<span class="sourceLineNo">169</span>   *<a name="line.169"></a>
-<span class="sourceLineNo">170</span>   * Locked by:<a name="line.170"></a>
-<span class="sourceLineNo">171</span>   *   - CompactedHFilesDispatchHandler via closeAndArchiveCompactedFiles()<a name="line.171"></a>
-<span class="sourceLineNo">172</span>   *   - close()<a name="line.172"></a>
-<span class="sourceLineNo">173</span>   */<a name="line.173"></a>
-<span class="sourceLineNo">174</span>  final ReentrantLock archiveLock = new ReentrantLock();<a name="line.174"></a>
-<span class="sourceLineNo">175</span><a name="line.175"></a>
-<span class="sourceLineNo">176</span>  private final boolean verifyBulkLoads;<a name="line.176"></a>
-<span class="sourceLineNo">177</span><a name="line.177"></a>
-<span class="sourceLineNo">178</span>  private ScanInfo scanInfo;<a name="line.178"></a>
-<span class="sourceLineNo">179</span><a name="line.179"></a>
-<span class="sourceLineNo">180</span>  // TODO: ideally, this should be part of storeFileManager, as we keep passing this to it.<a name="line.180"></a>
-<span class="sourceLineNo">181</span>  final List&lt;HStoreFile&gt; filesCompacting = Lists.newArrayList();<a name="line.181"></a>
-<span class="sourceLineNo">182</span><a name="line.182"></a>
-<span class="sourceLineNo">183</span>  // All access must be synchronized.<a name="line.183"></a>
-<span class="sourceLineNo">184</span>  private final Set&lt;ChangedReadersObserver&gt; changedReaderObservers =<a name="line.184"></a>
-<span class="sourceLineNo">185</span>    Collections.newSetFromMap(new ConcurrentHashMap&lt;ChangedReadersObserver, Boolean&gt;());<a name="line.185"></a>
-<span class="sourceLineNo">186</span><a name="line.186"></a>
-<span class="sourceLineNo">187</span>  protected final int blocksize;<a name="line.187"></a>
-<span class="sourceLineNo">188</span>  private HFileDataBlockEncoder dataBlockEncoder;<a name="line.188"></a>
-<span class="sourceLineNo">189</span><a name="line.189"></a>
-<span class="sourceLineNo">190</span>  /** Checksum configuration */<a name="line.190"></a>
-<span class="sourceLineNo">191</span>  protected ChecksumType checksumType;<a name="line.191"></a>
-<span class="sourceLineNo">192</span>  protected int bytesPerChecksum;<a name="line.192"></a>
-<span class="sourceLineNo">193</span><a name="line.193"></a>
-<span class="sourceLineNo">194</span>  // Comparing KeyValues<a name="line.194"></a>
-<span class="sourceLineNo">195</span>  protected final CellComparator comparator;<a name="line.195"></a>
-<span class="sourceLineNo">196</span><a name="line.196"></a>
-<span class="sourceLineNo">197</span>  final StoreEngine&lt;?, ?, ?, ?&gt; storeEngine;<a name="line.197"></a>
-<span class="sourceLineNo">198</span><a name="line.198"></a>
-<span class="sourceLineNo">199</span>  private static final AtomicBoolean offPeakCompactionTracker = new AtomicBoolean();<a name="line.199"></a>
-<span class="sourceLineNo">200</span>  private volatile OffPeakHours offPeakHours;<a name="line.200"></a>
-<span class="sourceLineNo">201</span><a name="line.201"></a>
-<span class="sourceLineNo">202</span>  private static final int DEFAULT_FLUSH_RETRIES_NUMBER = 10;<a name="line.202"></a>
-<span class="sourceLineNo">203</span>  private int flushRetriesNumber;<a name="line.203"></a>
-<span class="sourceLineNo">204</span>  private int pauseTime;<a name="line.204"></a>
-<span class="sourceLineNo">205</span><a name="line.205"></a>
-<span class="sourceLineNo">206</span>  private long blockingFileCount;<a name="line.206"></a>
-<span class="sourceLineNo">207</span>  private int compactionCheckMultiplier;<a name="line.207"></a>
-<span class="sourceLineNo">208</span>  protected Encryption.Context cryptoContext = Encryption.Context.NONE;<a name="line.208"></a>
-<span class="sourceLineNo">209</span><a name="line.209"></a>
-<span class="sourceLineNo">210</span>  private volatile long flushedCellsCount = 0;<a name="line.210"></a>
-<span class="sourceLineNo">211</span>  private volatile long compactedCellsCount = 0;<a name="line.211"></a>
-<span class="sourceLineNo">212</span>  private volatile long majorCompactedCellsCount = 0;<a name="line.212"></a>
-<span class="sourceLineNo">213</span>  private volatile long flushedCellsSize = 0;<a name="line.213"></a>
-<span class="sourceLineNo">214</span>  private volatile long flushedOutputFileSize = 0;<a name="line.214"></a>
-<span class="sourceLineNo">215</span>  private volatile long compactedCellsSize = 0;<a name="line.215"></a>
-<span class="sourceLineNo">216</span>  private volatile long majorCompactedCellsSize = 0;<a name="line.216"></a>
-<span class="sourceLineNo">217</span><a name="line.217"></a>
-<span class="sourceLineNo">218</span>  /**<a name="line.218"></a>
-<span class="sourceLineNo">219</span>   * Constructor<a name="line.219"></a>
-<span class="sourceLineNo">220</span>   * @param region<a name="line.220"></a>
-<span class="sourceLineNo">221</span>   * @param family HColumnDescriptor for this column<a name="line.221"></a>
-<span class="sourceLineNo">222</span>   * @param confParam configuration object<a name="line.222"></a>
-<span class="sourceLineNo">223</span>   * failed.  Can be null.<a name="line.223"></a>
-<span class="sourceLineNo">224</span>   * @throws IOException<a name="line.224"></a>
-<span class="sourceLineNo">225</span>   */<a name="line.225"></a>
-<span class="sourceLineNo">226</span>  protected HStore(final HRegion region, final ColumnFamilyDescriptor family,<a name="line.226"></a>
-<span class="sourceLineNo">227</span>      final Configuration confParam) throws IOException {<a name="line.227"></a>
-<span class="sourceLineNo">228</span><a name="line.228"></a>
-<span class="sourceLineNo">229</span>    this.fs = region.getRegionFileSystem();<a name="line.229"></a>
-<span class="sourceLineNo">230</span><a name="line.230"></a>
-<span class="sourceLineNo">231</span>    // Assemble the store's home directory and Ensure it exists.<a name="line.231"></a>
-<span class="sourceLineNo">232</span>    fs.createStoreDir(family.getNameAsString());<a name="line.232"></a>
-<span class="sourceLineNo">233</span>    this.region = region;<a name="line.233"></a>
-<span class="sourceLineNo">234</span>    this.family = family;<a name="line.234"></a>
-<span class="sourceLineNo">235</span>    // 'conf' renamed to 'confParam' b/c we use this.conf in the constructor<a name="line.235"></a>
-<span class="sourceLineNo">236</span>    // CompoundConfiguration will look for keys in reverse order of addition, so we'd<a name="line.236"></a>
-<span class="sourceLineNo">237</span>    // add global config first, then table and cf overrides, then cf metadata.<a name="line.237"></a>
-<span class="sourceLineNo">238</span>    this.conf = new CompoundConfiguration()<a name="line.238"></a>
-<span class="sourceLineNo">239</span>      .add(confParam)<a name="line.239"></a>
-<span class="sourceLineNo">240</span>      .addBytesMap(region.getTableDescriptor().getValues())<a name="line.240"></a>
-<span class="sourceLineNo">241</span>      .addStringMap(family.getConfiguration())<a name="line.241"></a>
-<span class="sourceLineNo">242</span>      .addBytesMap(family.getValues());<a name="line.242"></a>
-<span class="sourceLineNo">243</span>    this.blocksize = family.getBlocksize();<a name="line.243"></a>
-<span class="sourceLineNo">244</span><a name="line.244"></a>
-<span class="sourceLineNo">245</span>    // set block storage policy for store directory<a name="line.245"></a>
-<span class="sourceLineNo">246</span>    String policyName = family.getStoragePolicy();<a name="line.246"></a>
-<span class="sourceLineNo">247</span>    if (null == policyName) {<a name="line.247"></a>
-<span class="sourceLineNo">248</span>      policyName = this.conf.get(BLOCK_STORAGE_POLICY_KEY, DEFAULT_BLOCK_STORAGE_POLICY);<a name="line.248"></a>
-<span class="sourceLineNo">249</span>    }<a name="line.249"></a>
-<span class="sourceLineNo">250</span>    this.fs.setStoragePolicy(family.getNameAsString(), policyName.trim());<a name="line.250"></a>
-<span class="sourceLineNo">251</span><a name="line.251"></a>
-<span class="sourceLineNo">252</span>    this.dataBlockEncoder =<a name="line.252"></a>
-<span class="sourceLineNo">253</span>        new HFileDataBlockEncoderImpl(family.getDataBlockEncoding());<a name="line.253"></a>
-<span class="sourceLineNo">254</span><a name="line.254"></a>
-<span class="sourceLineNo">255</span>    this.comparator = region.getCellComparator();<a name="line.255"></a>
-<span class="sourceLineNo">256</span>    // used by ScanQueryMatcher<a name="line.256"></a>
-<span class="sourceLineNo">257</span>    long timeToPurgeDeletes =<a name="line.257"></a>
-<span class="sourceLineNo">258</span>        Math.max(conf.getLong("hbase.hstore.time.to.purge.deletes", 0), 0);<a name="line.258"></a>
-<span class="sourceLineNo">259</span>    LOG.trace("Time to purge deletes set to " + timeToPurgeDeletes +<a name="line.259"></a>
-<span class="sourceLineNo">260</span>        "ms in store " + this);<a name="line.260"></a>
-<span class="sourceLineNo">261</span>    // Get TTL<a name="line.261"></a>
-<span class="sourceLineNo">262</span>    long ttl = determineTTLFromFamily(family);<a name="line.262"></a>
-<span class="sourceLineNo">263</span>    // Why not just pass a HColumnDescriptor in here altogether?  Even if have<a name="line.263"></a>
-<span class="sourceLineNo">264</span>    // to clone it?<a name="line.264"></a>
-<span class="sourceLineNo">265</span>    scanInfo = new ScanInfo(conf, family, ttl, timeToPurgeDeletes, this.comparator);<a name="line.265"></a>
-<span class="sourceLineNo">266</span>    MemoryCompactionPolicy inMemoryCompaction = null;<a name="line.266"></a>
-<span class="sourceLineNo">267</span>    if (this.getTableName().isSystemTable()) {<a name="line.267"></a>
-<span class="sourceLineNo">268</span>      inMemoryCompaction = MemoryCompactionPolicy<a name="line.268"></a>
-<span class="sourceLineNo">269</span>          .valueOf(conf.get("hbase.systemtables.compacting.memstore.type", "NONE"));<a name="line.269"></a>
-<span class="sourceLineNo">270</span>    } else {<a name="line.270"></a>
-<span class="sourceLineNo">271</span>      inMemoryCompaction = family.getInMemoryCompaction();<a name="line.271"></a>
-<span class="sourceLineNo">272</span>    }<a name="line.272"></a>
-<span class="sourceLineNo">273</span>    if (inMemoryCompaction == null) {<a name="line.273"></a>
-<span class="sourceLineNo">274</span>      inMemoryCompaction =<a name="line.274"></a>
-<span class="sourceLineNo">275</span>          MemoryCompactionPolicy.valueOf(conf.get(CompactingMemStore.COMPACTING_MEMSTORE_TYPE_KEY,<a name="line.275"></a>
-<span class="sourceLineNo">276</span>            CompactingMemStore.COMPACTING_MEMSTORE_TYPE_DEFAULT));<a name="line.276"></a>
-<span class="sourceLineNo">277</span>    }<a name="line.277"></a>
-<span class="sourceLineNo">278</span>    String className;<a name="line.278"></a>
-<span class="sourceLineNo">279</span>    switch (inMemoryCompaction) {<a name="line.279"></a>
-<span class="sourceLineNo">280</span>      case NONE:<a name="line.280"></a>
-<span class="sourceLineNo">281</span>        className = DefaultMemStore.class.getName();<a name="line.281"></a>
-<span class="sourceLineNo">282</span>        this.memstore = ReflectionUtils.newInstance(DefaultMemStore.class,<a name="line.282"></a>
-<span class="sourceLineNo">283</span>            new Object[] { conf, this.comparator });<a name="line.283"></a>
-<span class="sourceLineNo">284</span>        break;<a name="line.284"></a>
-<span class="sourceLineNo">285</span>      default:<a name="line.285"></a>
-<span class="sourceLineNo">286</span>        Class&lt;? extends CompactingMemStore&gt; clz = conf.getClass(MEMSTORE_CLASS_NAME,<a name="line.286"></a>
-<span class="sourceLineNo">287</span>          CompactingMemStore.class, CompactingMemStore.class);<a name="line.287"></a>
-<span class="sourceLineNo">288</span>        className = clz.getName();<a name="line.288"></a>
-<span class="sourceLineNo">289</span>        this.memstore = ReflectionUtils.newInstance(clz, new Object[] { conf, this.comparator, this,<a name="line.289"></a>
-<span class="sourceLineNo">290</span>            this.getHRegion().getRegionServicesForStores(), inMemoryCompaction });<a name="line.290"></a>
-<span class="sourceLineNo">291</span>    }<a name="line.291"></a>
-<span class="sourceLineNo">292</span>    LOG.info("Memstore class name is " + className);<a name="line.292"></a>
-<span class="sourceLineNo">293</span>    this.offPeakHours = OffPeakHours.getInstance(conf);<a name="line.293"></a>
-<span class="sourceLineNo">294</span><a name="line.294"></a>
-<span class="sourceLineNo">295</span>    // Setting up cache configuration for this family<a name="line.295"></a>
-<span class="sourceLineNo">296</span>    createCacheConf(family);<a name="line.296"></a>
-<span class="sourceLineNo">297</span><a name="line.297"></a>
-<span class="sourceLineNo">298</span>    this.verifyBulkLoads = conf.getBoolean("hbase.hstore.bulkload.verify", false);<a name="line.298"></a>
-<span class="sourceLineNo">299</span><a name="line.299"></a>
-<span class="sourceLineNo">300</span>    this.blockingFileCount =<a name="line.300"></a>
-<span class="sourceLineNo">301</span>        conf.getInt(BLOCKING_STOREFILES_KEY, DEFAULT_BLOCKING_STOREFILE_COUNT);<a name="line.301"></a>
-<span class="sourceLineNo">302</span>    this.compactionCheckMultiplier = conf.getInt(<a name="line.302"></a>
-<span class="sourceLineNo">303</span>        COMPACTCHECKER_INTERVAL_MULTIPLIER_KEY, DEFAULT_COMPACTCHECKER_INTERVAL_MULTIPLIER);<a name="line.303"></a>
-<span class="sourceLineNo">304</span>    if (this.compactionCheckMultiplier &lt;= 0) {<a name="line.304"></a>
-<span class="sourceLineNo">305</span>      LOG.error("Compaction check period multiplier must be positive, setting default: "<a name="line.305"></a>
-<span class="sourceLineNo">306</span>          + DEFAULT_COMPACTCHECKER_INTERVAL_MULTIPLIER);<a name="line.306"></a>
-<span class="sourceLineNo">307</span>      this.compactionCheckMultiplier = DEFAULT_COMPACTCHECKER_INTERVAL_MULTIPLIER;<a name="line.307"></a>
-<span class="sourceLineNo">308</span>    }<a name="line.308"></a>
-<span class="sourceLineNo">309</span><a name="line.309"></a>
-<span class="sourceLineNo">310</span>    if (HStore.closeCheckInterval == 0) {<a name="line.310"></a>
-<span class="sourceLineNo">311</span>      HStore.closeCheckInterval = conf.getInt(<a name="line.311"></a>
-<span class="sourceLineNo">312</span>          "hbase.hstore.close.check.interval", 10*1000*1000 /* 10 MB */);<a name="line.312"></a>
-<span class="sourceLineNo">313</span>    }<a name="line.313"></a>
-<span class="sourceLineNo">314</span><a name="line.314"></a>
-<span class="sourceLineNo">315</span>    this.storeEngine = createStoreEngine(this, this.conf, this.comparator);<a name="line.315"></a>
-<span class="sourceLineNo">316</span>    this.storeEngine.getStoreFileManager().loadFiles(loadStoreFiles());<a name="line.316"></a>
-<span class="sourceLineNo">317</span><a name="line.317"></a>
-<span class="sourceLineNo">318</span>    // Initialize checksum type from name. The names are CRC32, CRC32C, etc.<a name="line.318"></a>
-<span class="sourceLineNo">319</span>    this.checksumType = getChecksumType(conf);<a name="line.319"></a>
-<span class="sourceLineNo">320</span>    // initilize bytes per checksum<a name="line.320"></a>
-<span class="sourceLineNo">321</span>    this.bytesPerChecksum = getBytesPerChecksum(conf);<a name="line.321"></a>
-<span class="sourceLineNo">322</span>    flushRetriesNumber = conf.getInt(<a name="line.322"></a>
-<span class="sourceLineNo">323</span>        "hbase.hstore.flush.retries.number", DEFAULT_FLUSH_RETRIES_NUMBER);<a name="line.323"></a>
-<span class="sourceLineNo">324</span>    pauseTime = conf.getInt(HConstants.HBASE_SERVER_PAUSE, HConstants.DEFAULT_HBASE_SERVER_PAUSE);<a name="line.324"></a>
-<span class="sourceLineNo">325</span>    if (flushRetriesNumber &lt;= 0) {<a name="line.325"></a>
-<span class="sourceLineNo">326</span>      throw new IllegalArgumentException(<a name="line.326"></a>
-<span class="sourceLineNo">327</span>          "hbase.hstore.flush.retries.number must be &gt; 0, not "<a name="line.327"></a>
-<span class="sourceLineNo">328</span>              + flushRetriesNumber);<a name="line.328"></a>
-<span class="sourceLineNo">329</span>    }<a name="line.329"></a>
-<span class="sourceLineNo">330</span>    cryptoContext = EncryptionUtil.createEncryptionContext(conf, family);<a name="line.330"></a>
-<span class="sourceLineNo">331</span>  }<a name="line.331"></a>
-<span class="sourceLineNo">332</span><a name="line.332"></a>
-<span class="sourceLineNo">333</span>  /**<a name="line.333"></a>
-<span class="sourceLineNo">334</span>   * Creates the cache config.<a name="line.334"></a>
-<span class="sourceLineNo">335</span>   * @param family The current column family.<a name="line.335"></a>
-<span class="sourceLineNo">336</span>   */<a name="line.336"></a>
-<span class="sourceLineNo">337</span>  protected void createCacheConf(final ColumnFamilyDescriptor family) {<a name="line.337"></a>
-<span class="sourceLineNo">338</span>    this.cacheConf = new CacheConfig(conf, family);<a name="line.338"></a>
-<span class="sourceLineNo">339</span>  }<a name="line.339"></a>
-<span class="sourceLineNo">340</span><a name="line.340"></a>
-<span class="sourceLineNo">341</span>  /**<a name="line.341"></a>
-<span class="sourceLineNo">342</span>   * Creates the store engine configured for the given Store.<a name="line.342"></a>
-<span class="sourceLineNo">343</span>   * @param store The store. An unfortunate dependency needed due to it<a name="line.343"></a>
-<span class="sourceLineNo">344</span>   *              being passed to coprocessors via the compactor.<a name="line.344"></a>
-<span class="sourceLineNo">345</span>   * @param conf Store configuration.<a name="line.345"></a>
-<span class="sourceLineNo">346</span>   * @param kvComparator KVComparator for storeFileManager.<a name="line.346"></a>
-<span class="sourceLineNo">347</span>   * @return StoreEngine to use.<a name="line.347"></a>
-<span class="sourceLineNo">348</span>   */<a name="line.348"></a>
-<span class="sourceLineNo">349</span>  protected StoreEngine&lt;?, ?, ?, ?&gt; createStoreEngine(HStore store, Configuration conf,<a name="line.349"></a>
-<span class="sourceLineNo">350</span>      CellComparator kvComparator) throws IOException {<a name="line.350"></a>
-<span class="sourceLineNo">351</span>    return StoreEngine.create(store, conf, comparator);<a name="line.351"></a>
-<span class="sourceLineNo">352</span>  }<a name="line.352"></a>
-<span class="sourceLineNo">353</span><a name="line.353"></a>
-<span class="sourceLineNo">354</span>  /**<a name="line.354"></a>
-<span class="sourceLineNo">355</span>   * @param family<a name="line.355"></a>
-<span class="sourceLineNo">356</span>   * @return TTL in seconds of the specified family<a name="line.356"></a>
-<span class="sourceLineNo">357</span>   */<a name="line.357"></a>
-<span class="sourceLineNo">358</span>  public static long determineTTLFromFamily(final ColumnFamilyDescriptor family) {<a name="line.358"></a>
-<span class="sourceLineNo">359</span>    // HCD.getTimeToLive returns ttl in seconds.  Convert to milliseconds.<a name="line.359"></a>
-<span class="sourceLineNo">360</span>    long ttl = family.getTimeToLive();<a name="line.360"></a>
-<span class="sourceLineNo">361</span>    if (ttl == HConstants.FOREVER) {<a name="line.361"></a>
-<span class="sourceLineNo">362</span>      // Default is unlimited ttl.<a name="line.362"></a>
-<span class="sourceLineNo">363</span>      ttl = Long.MAX_VALUE;<a name="line.363"></a>
-<span class="sourceLineNo">364</span>    } else if (ttl == -1) {<a name="line.364"></a>
-<span class="sourceLineNo">365</span>      ttl = Long.MAX_VALUE;<a name="line.365"></a>
-<span class="sourceLineNo">366</span>    } else {<a name="line.366"></a>
-<span class="sourceLineNo">367</span>      // Second -&gt; ms adjust for user data<a name="line.367"></a>
-<span class="sourceLineNo">368</span>      ttl *= 1000;<a name="line.368"></a>
-<span class="sourceLineNo">369</span>    }<a name="line.369"></a>
-<span class="sourceLineNo">370</span>    return ttl;<a name="line.370"></a>
-<span class="sourceLineNo">371</span>  }<a name="line.371"></a>
-<span class="sourceLineNo">372</span><a name="line.372"></a>
-<span class="sourceLineNo">373</span>  @Override<a name="line.373"></a>
-<span class="sourceLineNo">374</span>  public String getColumnFamilyName() {<a name="line.374"></a>
-<span class="sourceLineNo">375</span>    return this.family.getNameAsString();<a name="line.375"></a>
-<span class="sourceLineNo">376</span>  }<a name="line.376"></a>
-<span class="sourceLineNo">377</span><a name="line.377"></a>
-<span class="sourceLineNo">378</span>  @Override<a name="line.378"></a>
-<span class="sourceLineNo">379</span>  public TableName getTableName() {<a name="line.379"></a>
-<span class="sourceLineNo">380</span>    return this.getRegionInfo().getTable();<a name="line.380"></a>
-<span class="sourceLineNo">381</span>  }<a name="line.381"></a>
-<span class="sourceLineNo">382</span><a name="line.382"></a>
-<span class="sourceLineNo">383</span>  @Override<a name="line.383"></a>
-<span class="sourceLineNo">384</span>  public FileSystem getFileSystem() {<a name="line.384"></a>
-<span class="sourceLineNo">385</span>    return this.fs.getFileSystem();<a name="line.385"></a>
-<span class="sourceLineNo">386</span>  }<a name="line.386"></a>
-<span class="sourceLineNo">387</span><a name="line.387"></a>
-<span class="sourceLineNo">388</span>  public HRegionFileSystem getRegionFileSystem() {<a name="line.388"></a>
-<span class="sourceLineNo">389</span>    return this.fs;<a name="line.389"></a>
-<span class="sourceLineNo">390</span>  }<a name="line.390"></a>
-<span class="sourceLineNo">391</span><a name="line.391"></a>
-<span class="sourceLineNo">392</span>  /* Implementation of StoreConfigInformation */<a name="line.392"></a>
-<span class="sourceLineNo">393</span>  @Override<a name="line.393"></a>
-<span class="sourceLineNo">394</span>  public long getStoreFileTtl() {<a name="line.394"></a>
-<span class="sourceLineNo">395</span>    // TTL only applies if there's no MIN_VERSIONs setting on the column.<a name="line.395"></a>
-<span class="sourceLineNo">396</span>    return (this.scanInfo.getMinVersions() == 0) ? this.scanInfo.getTtl() : Long.MAX_VALUE;<a name="line.396"></a>
-<span class="sourceLineNo">397</span>  }<a name="line.397"></a>
-<span class="sourceLineNo">398</span><a name="line.398"></a>
-<span class="sourceLineNo">399</span>  @Override<a name="line.399"></a>
-<span class="sourceLineNo">400</span>  public long getMemStoreFlushSize() {<a name="line.400"></a>
-<span class="sourceLineNo">401</span>    // TODO: Why is this in here?  The flushsize of the region rather than the store?  St.Ack<a name="line.401"></a>
-<span class="sourceLineNo">402</span>    return this.region.memstoreFlushSize;<a name="line.402"></a>
-<span class="sourceLineNo">403</span>  }<a name="line.403"></a>
-<span class="sourceLineNo">404</span><a name="line.404"></a>
-<span class="sourceLineNo">405</span>  @Override<a name="line.405"></a>
-<span class="sourceLineNo">406</span>  public MemStoreSize getFlushableSize() {<a name="line.406"></a>
-<span class="sourceLineNo">407</span>    return this.memstore.getFlushableSize();<a name="line.407"></a>
-<span class="sourceLineNo">408</span>  }<a name="line.408"></a>
-<span class="sourceLineNo">409</span><a name="line.409"></a>
-<span class="sourceLineNo">410</span>  @Override<a name="line.410"></a>
-<span class="sourceLineNo">411</span>  public MemStoreSize getSnapshotSize() {<a name="line.411"></a>
-<span class="sourceLineNo">412</span>    return this.memstore.getSnapshotSize();<a name="line.412"></a>
-<span class="sourceLineNo">413</span>  }<a name="line.413"></a>
-<span class="sourceLineNo">414</span><a name="line.414"></a>
-<span class="sourceLineNo">415</span>  @Override<a name="line.415"></a>
-<span class="sourceLineNo">416</span>  public long getCompactionCheckMultiplier() {<a name="line.416"></a>
-<span class="sourceLineNo">417</span>    return this.compactionCheckMultiplier;<a name="line.417"></a>
-<span class="sourceLineNo">418</span>  }<a name="line.418"></a>
-<span class="sourceLineNo">419</span><a name="line.419"></a>
-<span class="sourceLineNo">420</span>  @Override<a name="line.420"></a>
-<span class="sourceLineNo">421</span>  public long getBlockingFileCount() {<a name="line.421"></a>
-<span class="sourceLineNo">422</span>    return blockingFileCount;<a name="line.422"></a>
-<span class="sourceLineNo">423</span>  }<a name="line.423"></a>
-<span class="sourceLineNo">424</span>  /* End implementation of StoreConfigInformation */<a name="line.424"></a>
-<span class="sourceLineNo">425</span><a name="line.425"></a>
-<span class="sourceLineNo">426</span>  /**<a name="line.426"></a>
-<span class="sourceLineNo">427</span>   * Returns the configured bytesPerChecksum value.<a name="line.427"></a>
-<span class="sourceLineNo">428</span>   * @param conf The configuration<a name="line.428"></a>
-<span class="sourceLineNo">429</span>   * @return The bytesPerChecksum that is set in the configuration<a name="line.429"></a>
-<span class="sourceLineNo">430</span>   */<a name="line.430"></a>
-<span class="sourceLineNo">431</span>  public static int getBytesPerChecksum(Configuration conf) {<a name="line.431"></a>
-<span class="sourceLineNo">432</span>    return conf.getInt(HConstants.BYTES_PER_CHECKSUM,<a name="line.432"></a>
-<span class="sourceLineNo">433</span>                       HFile.DEFAULT_BYTES_PER_CHECKSUM);<a name="line.433"></a>
-<span class="sourceLineNo">434</span>  }<a name="line.434"></a>
-<span class="sourceLineNo">435</span><a name="line.435"></a>
-<span class="sourceLineNo">436</span>  /**<a name="line.436"></a>
-<span class="sourceLineNo">437</span>   * Returns the configured checksum algorithm.<a name="line.437"></a>
-<span class="sourceLineNo">438</span>   * @param conf The configuration<a name="line.438"></a>
-<span class="sourceLineNo">439</span>   * @return The checksum algorithm that is set in the configuration<a name="line.439"></a>
-<span class="sourceLineNo">440</span>   */<a name="line.440"></a>
-<span class="sourceLineNo">441</span>  public static ChecksumType getChecksumType(Configuration conf) {<a name="line.441"></a>
-<span class="sourceLineNo">442</span>    String checksumName = conf.get(HConstants.CHECKSUM_TYPE_NAME);<a name="line.442"></a>
-<span class="sourceLineNo">443</span>    if (checksumName == null) {<a name="line.443"></a>
-<span class="sourceLineNo">444</span>      return ChecksumType.getDefaultChecksumType();<a name="line.444"></a>
-<span class="sourceLineNo">445</span>    } else {<a name="line.445"></a>
-<span class="sourceLineNo">446</span>      return ChecksumType.nameToType(checksumName);<a name="line.446"></a>
-<span class="sourceLineNo">447</span>    }<a name="line.447"></a>
-<span class="sourceLineNo">448</span>  }<a name="line.448"></a>
-<span class="sourceLineNo">449</span><a name="line.449"></a>
-<span class="sourceLineNo">450</span>  /**<a name="line.450"></a>
-<span class="sourceLineNo">451</span>   * @return how many bytes to write between status checks<a name="line.451"></a>
-<span class="sourceLineNo">452</span>   */<a name="line.452"></a>
-<span class="sourceLineNo">453</span>  public static int getCloseCheckInterval() {<a name="line.453"></a>
-<span class="sourceLineNo">454</span>    return closeCheckInterval;<a name="line.454"></a>
-<span class="sourceLineNo">455</span>  }<a name="line.455"></a>
-<span class="sourceLineNo">456</span><a name="line.456"></a>
-<span class="sourceLineNo">457</span>  @Override<a name="line.457"></a>
-<span class="sourceLineNo">458</span>  public ColumnFamilyDescriptor getColumnFamilyDescriptor() {<a name="line.458"></a>
-<span class="sourceLineNo">459</span>    return this.family;<a name="line.459"></a>
-<span class="sourceLineNo">460</span>  }<a name="line.460"></a>
-<span class="sourceLineNo">461</span><a name="line.461"></a>
-<span class="sourceLineNo">462</span>  @Override<a name="line.462"></a>
-<span class="sourceLineNo">463</span>  public OptionalLong getMaxSequenceId() {<a name="line.463"></a>
-<span class="sourceLineNo">464</span>    return StoreUtils.getMaxSequenceIdInList(this.getStorefiles());<a name="line.464"></a>
-<span class="sourceLineNo">465</span>  }<a name="line.465"></a>
-<span class="sourceLineNo">466</span><a name="line.466"></a>
-<span class="sourceLineNo">467</span>  @Override<a name="line.467"></a>
-<span class="sourceLineNo">468</span>  public OptionalLong getMaxMemStoreTS() {<a name="line.468"></a>
-<span class="sourceLineNo">469</span>    return StoreUtils.getMaxMemStoreTSInList(this.getStorefiles());<a name="line.469"></a>
-<span class="sourceLineNo">470</span>  }<a name="line.470"></a>
-<span class="sourceLineNo">471</span><a name="line.471"></a>
-<span class="sourceLineNo">472</span>  /**<a name="line.472"></a>
-<span class="sourceLineNo">473</span>   * @param tabledir {@link Path} to where the table is being stored<a name="line.473"></a>
-<span class="sourceLineNo">474</span>   * @param hri {@link RegionInfo} for the region.<a name="line.474"></a>
-<span class="sourceLineNo">475</span>   * @param family {@link ColumnFamilyDescriptor} describing the column family<a name="line.475"></a>
-<span class="sourceLineNo">476</span>   * @return Path to family/Store home directory.<a name="line.476"></a>
-<span class="sourceLineNo">477</span>   */<a name="line.477"></a>
-<span class="sourceLineNo">478</span>  @Deprecated<a name="line.478"></a>
-<span class="sourceLineNo">479</span>  public static Path getStoreHomedir(final Path tabledir,<a name="line.479"></a>
-<span class="sourceLineNo">480</span>      final RegionInfo hri, final byte[] family) {<a name="line.480"></a>
-<span class="sourceLineNo">481</span>    return getStoreHomedir(tabledir, hri.getEncodedName(), family);<a name="line.481"></a>
-<span class="sourceLineNo">482</span>  }<a name="line.482"></a>
-<span class="sourceLineNo">483</span><a name="line.483"></a>
-<span class="sourceLineNo">484</span>  /**<a name="line.484"></a>
-<span class="sourceLineNo">485</span>   * @param tabledir {@link Path} to where the table is being stored<a name="line.485"></a>
-<span class="sourceLineNo">486</span>   * @param encodedName Encoded region name.<a name="line.486"></a>
-<span class="sourceLineNo">487</span>   * @param family {@link ColumnFamilyDescriptor} describing the column family<a name="line.487"></a>
-<span class="sourceLineNo">488</span>   * @return Path to family/Store home directory.<a name="line.488"></a>
-<span class="sourceLineNo">489</span>   */<a name="line.489"></a>
-<span class="sourceLineNo">490</span>  @Deprecated<a name="line.490"></a>
-<span class="sourceLineNo">491</span>  public static Path getStoreHomedir(final Path tabledir,<a name="line.491"></a>
-<span class="sourceLineNo">492</span>      final String encodedName, final byte[] family) {<a name="line.492"></a>
-<span class="sourceLineNo">493</span>    return new Path(tabledir, new Path(encodedName, Bytes.toString(family)));<a name="line.493"></a>
-<span class="sourceLineNo">494</span>  }<a name="line.494"></a>
-<span class="sourceLineNo">495</span><a name="line.495"></a>
-<span class="sourceLineNo">496</span>  /**<a name="line.496"></a>
-<span class="sourceLineNo">497</span>   * @return the data block encoder<a name="line.497"></a>
-<span class="sourceLineNo">498</span>   */<a name="line.498"></a>
-<span class="sourceLineNo">499</span>  public HFileDataBlockEncoder getDataBlockEncoder() {<a name="line.499"></a>
-<span class="sourceLineNo">500</span>    return dataBlockEncoder;<a name="line.500"></a>
-<span class="sourceLineNo">501</span>  }<a name="line.501"></a>
-<span class="sourceLineNo">502</span><a name="line.502"></a>
-<span class="sourceLineNo">503</span>  /**<a name="line.503"></a>
-<span class="sourceLineNo">504</span>   * Should be used only in tests.<a name="line.504"></a>
-<span class="sourceLineNo">505</span>   * @param blockEncoder the block delta encoder to use<a name="line.505"></a>
-<span class="sourceLineNo">506</span>   */<a name="line.506"></a>
-<span class="sourceLineNo">507</span>  void setDataBlockEncoderInTest(HFileDataBlockEncoder blockEncoder) {<a name="line.507"></a>
-<span class="sourceLineNo">508</span>    this.dataBlockEncoder = blockEncoder;<a name="line.508"></a>
-<span class="sourceLineNo">509</span>  }<a name="line.509"></a>
-<span class="sourceLineNo">510</span><a name="line.510"></a>
-<span class="sourceLineNo">511</span>  /**<a name="line.511"></a>
-<span class="sourceLineNo">512</span>   * Creates an unsorted list of StoreFile loaded in parallel<a name="line.512"></a>
-<span class="sourceLineNo">513</span>   * from the given directory.<a name="line.513"></a>
-<span class="sourceLineNo">514</span>   * @throws IOException<a name="line.514"></a>
-<span class="sourceLineNo">515</span>   */<a name="line.515"></a>
-<span class="sourceLineNo">516</span>  private List&lt;HStoreFile&gt; loadStoreFiles() throws IOException {<a name="line.516"></a>
-<span class="sourceLineNo">517</span>    Collection&lt;StoreFileInfo&gt; files = fs.getStoreFiles(getColumnFamilyName());<a name="line.517"></a>
-<span class="sourceLineNo">518</span>    return openStoreFiles(files);<a name="line.518"></a>
-<span class="sourceLineNo">519</span>  }<a name="line.519"></a>
-<span class="sourceLineNo">520</span><a name="line.520"></a>
-<span class="sourceLineNo">521</span>  private List&lt;HStoreFile&gt; openStoreFiles(Collection&lt;StoreFileInfo&gt; files) throws IOException {<a name="line.521"></a>
-<span class="sourceLineNo">522</span>    if (files == null || files.isEmpty()) {<a name="line.522"></a>
-<span class="sourceLineNo">523</span>      return new ArrayList&lt;&gt;();<a name="line.523"></a>
-<span class="sourceLineNo">524</span>    }<a name="line.524"></a>
-<span class="sourceLineNo">525</span>    // initialize the thread pool for opening store files in parallel..<a name="line.525"></a>
-<span class="sourceLineNo">526</span>    ThreadPoolExecutor storeFileOpenerThreadPool =<a name="line.526"></a>
-<span class="sourceLineNo">527</span>      this.region.getStoreFileOpenAndCloseThreadPool("StoreFileOpenerThread-" +<a name="line.527"></a>
-<span class="sourceLineNo">528</span>          this.getColumnFamilyName());<a name="line.528"></a>
-<span class="sourceLineNo">529</span>    CompletionService&lt;HStoreFile&gt; completionService = new ExecutorCompletionService&lt;&gt;(storeFileOpenerThreadPool);<a name="line.529"></a>
-<span class="sourceLineNo">530</span><a name="line.530"></a>
-<span class="sourceLineNo">531</span>    int totalValidStoreFile = 0;<a name="line.531"></a>
-<span class="sourceLineNo">532</span>    for (StoreFileInfo storeFileInfo : files) {<a name="line.532"></a>
-<span class="sourceLineNo">533</span>      // open each store file in parallel<a name="line.533"></a>
-<span class="sourceLineNo">534</span>      completionService.submit(() -&gt; this.createStoreFileAndReader(storeFileInfo));<a name="line.534"></a>
-<span class="sourceLineNo">535</span>      totalValidStoreFile++;<a name="line.535"></a>
-<span class="sourceLineNo">536</span>    }<a name="line.536"></a>
-<span class="sourceLineNo">537</span><a name="line.537"></a>
-<span class="sourceLineNo">538</span>    ArrayList&lt;HStoreFile&gt; results = new ArrayList&lt;&gt;(files.size());<a name="line.538"></a>
-<span class="sourceLineNo">539</span>    IOException ioe = null;<a name="line.539"></a>
-<span class="sourceLineNo">540</span>    try {<a name="line.540"></a>
-<span class="sourceLineNo">541</span>      for (int i = 0; i &lt; totalValidStoreFile; i++) {<a name="line.541"></a>
-<span class="sourceLineNo">542</span>        try {<a name="line.542"></a>
-<span class="sourceLineNo">543</span>          HStoreFile storeFile = completionService.take().get();<a name="line.543"></a>
-<span class="sourceLineNo">544</span>          if (storeFile != null) {<a name="line.544"></a>
-<span class="sourceLineNo">545</span>            long length = storeFile.getReader().length();<a name="line.545"></a>
-<span class="sourceLineNo">546</span>            this.storeSize += length;<a name="line.546"></a>
-<span class="sourceLineNo">547</span>            this.totalUncompressedBytes += storeFile.getReader().getTotalUncompressedBytes();<a name="line.547"></a>
-<span class="sourceLineNo">548</span>            if (LOG.isDebugEnabled()) {<a name="line.548"></a>
-<span class="sourceLineNo">549</span>              LOG.debug("loaded " + storeFile.toStringDetailed());<a name="line.549"></a>
-<span class="sourceLineNo">550</span>            }<a name="line.550"></a>
-<span class="sourceLineNo">551</span>            results.add(storeFile);<a name="line.551"></a>
-<span class="sourceLineNo">552</span>          }<a name="line.552"></a>
-<span class="sourceLineNo">553</span>        } catch (InterruptedException e) {<a name="line.553"></a>
-<span class="sourceLineNo">554</span>          if (ioe == null) ioe = new InterruptedIOException(e.getMessage());<a name="line.554"></a>
-<span class="sourceLineNo">555</span>        } catch (ExecutionException e) {<a name="line.555"></a>
-<span class="sourceLineNo">556</span>          if (ioe == null) ioe = new IOException(e.getCause());<a name="line.556"></a>
-<span class="sourceLineNo">557</span>        }<a name="line.557"></a>
-<span class="sourceLineNo">558</span>      }<a name="line.558"></a>
-<span class="sourceLineNo">559</span>    } finally {<a name="line.559"></a>
-<span class="sourceLineNo">560</span>      storeFileOpenerThreadPool.shutdownNow();<a name="line.560"></a>
-<span class="sourceLineNo">561</span>    }<a name="line.561"></a>
-<span class="sourceLineNo">562</span>    if (ioe != null) {<a name="line.562"></a>
-<span class="sourceLineNo">563</span>      // close StoreFile readers<a name="line.563"></a>
-<span class="sourceLineNo">564</span>      boolean evictOnClose =<a name="line.564"></a>
-<span class="sourceLineNo">565</span>          cacheConf != null? cacheConf.shouldEvictOnClose(): true;<a name="line.565"></a>
-<span class="sourceLineNo">566</span>      for (HStoreFile file : results) {<a name="line.566"></a>
-<span class="sourceLineNo">567</span>        try {<a name="line.567"></a>
-<span class="sourceLineNo">568</span>          if (file != null) file.closeStoreFile(evictOnClose);<a name="line.568"></a>
-<span class="sourceLineNo">569</span>        } catch (IOException e) {<a name="line.569"></a>
-<span class="sourceLineNo">570</span>          LOG.warn(e.getMessage());<a name="line.570"></a>
-<span class="sourceLineNo">571</span>        }<a name="line.571"></a>
-<span class="sourceLineNo">572</span>      }<a name="line.572"></a>
-<span class="sourceLineNo">573</span>      throw ioe;<a name="line.573"></a>
-<span class="sourceLineNo">574</span>    }<a name="line.574"></a>
-<span class="sourceLineNo">575</span><a name="line.575"></a>
-<span class="sourceLineNo">576</span>    return results;<a name="line.576"></a>
-<span class="sourceLineNo">577</span>  }<a name="line.577"></a>
-<span class="sourceLineNo">578</span><a name="line.578"></a>
-<span class="sourceLineNo">579</span>  @Override<a name="line.579"></a>
-<span class="sourceLineNo">580</span>  public void refreshStoreFiles() throws IOException {<a name="line.580"></a>
-<span class="sourceLineNo">581</span>    Collection&lt;StoreFileInfo&gt; newFiles = fs.getStoreFiles(getColumnFamilyName());<a name="line.581"></a>
-<span class="sourceLineNo">582</span>    refreshStoreFilesInternal(newFiles);<a name="line.582"></a>
-<span class="sourceLineNo">583</span>  }<a name="line.583"></a>
-<span class="sourceLineNo">584</span><a name="line.584"></a>
-<span class="sourceLineNo">585</span>  /**<a name="line.585"></a>
-<span class="sourceLineNo">586</span>   * Replaces the store files that the store has with the given files. Mainly used by secondary<a name="line.586"></a>
-<span class="sourceLineNo">587</span>   * region replicas to keep up to date with the primary region files.<a name="line.587"></a>
-<span class="sourceLineNo">588</span>   * @throws IOException<a name="line.588"></a>
-<span class="sourceLineNo">589</span>   */<a name="line.589"></a>
-<span class="sourceLineNo">590</span>  public void refreshStoreFiles(Collection&lt;String&gt; newFiles) throws IOException {<a name="line.590"></a>
-<span class="sourceLineNo">591</span>    List&lt;StoreFileInfo&gt; storeFiles = new ArrayList&lt;&gt;(newFiles.size());<a name="line.591"></a>
-<span class="sourceLineNo">592</span>    for (String file : newFiles) {<a name="line.592"></a>
-<span class="sourceLineNo">593</span>      storeFiles.add(fs.getStoreFileInfo(getColumnFamilyName(), file));<a name="line.593"></a>
-<span class="sourceLineNo">594</span>    }<a name="line.594"></a>
-<span class="sourceLineNo">595</span>    refreshStoreFilesInternal(storeFiles);<a name="line.595"></a>
-<span class="sourceLineNo">596</span>  }<a name="line.596"></a>
-<span class="sourceLineNo">597</span><a name="line.597"></a>
-<span class="sourceLineNo">598</span>  /**<a name="line.598"></a>
-<span class="sourceLineNo">599</span>   * Checks the underlying store files, and opens the files that  have not<a name="line.599"></a>
-<span class="sourceLineNo">600</span>   * been opened, and removes the store file readers for store files no longer<a name="line.600"></a>
-<span class="sourceLineNo">601</span>   * available. Mainly used by secondary region replicas to keep up to date with<a name="line.601"></a>
-<span class="sourceLineNo">602</span>   * the primary region files.<a name="line.602"></a>
-<span class="sourceLineNo">603</span>   * @throws IOException<a name="line.603"></a>
-<span class="sourceLineNo">604</span>   */<a name="line.604"></a>
-<span class="sourceLineNo">605</span>  private void refreshStoreFilesInternal(Collection&lt;StoreFileInfo&gt; newFiles) throws IOException {<a name="line.605"></a>
-<span class="sourceLineNo">606</span>    StoreFileManager sfm = storeEngine.getStoreFileManager();<a name="line.606"></a>
-<span class="sourceLineNo">607</span>    Collection&lt;HStoreFile&gt; currentFiles = sfm.getStorefiles();<a name="line.607"></a>
-<span class="sourceLineNo">608</span>    Collection&lt;HStoreFile&gt; compactedFiles = sfm.getCompactedfiles();<a name="line.608"></a>
-<span class="sourceLineNo">609</span>    if (currentFiles == null) currentFiles = Collections.emptySet();<a name="line.609"></a>
-<span class="sourceLineNo">610</span>    if (newFiles == null) newFiles = Collections.emptySet();<a name="line.610"></a>
-<span class="sourceLineNo">611</span>    if (compactedFiles == null) compactedFiles = Collections.emptySet();<a name="line.611"></a>
-<span class="sourceLineNo">612</span><a name="line.612"></a>
-<span class="sourceLineNo">613</span>    HashMap&lt;StoreFileInfo, HStoreFile&gt; currentFilesSet = new HashMap&lt;&gt;(currentFiles.size());<a name="line.613"></a>
-<span class="sourceLineNo">614</span>    for (HStoreFile sf : currentFiles) {<a name="line.614"></a>
-<span class="sourceLineNo">615</span>      currentFilesSet.put(sf.getFileInfo(), sf);<a name="line.615"></a>
-<span class="sourceLineNo">616</span>    }<a name="line.616"></a>
-<span class="sourceLineNo">617</span>    HashMap&lt;StoreFileInfo, HStoreFile&gt; compactedFilesSet = new HashMap&lt;&gt;(compactedFiles.size());<a name="line.617"></a>
-<span class="sourceLineNo">618</span>    for (HStoreFile sf : compactedFiles) {<a name="line.618"></a>
-<span class="sourceLineNo">619</span>      compactedFilesSet.put(sf.getFileInfo(), sf);<a name="line.619"></a>
-<span class="sourceLineNo">620</span>    }<a name="line.620"></a>
-<span class="sourceLineNo">621</span><a name="line.621"></a>
-<span class="sourceLineNo">622</span>    Set&lt;StoreFileInfo&gt; newFilesSet = new HashSet&lt;StoreFileInfo&gt;(newFiles);<a name="line.622"></a>
-<span class="sourceLineNo">623</span>    // Exclude the files that have already been compacted<a name="line.623"></a>
-<span class="sourceLineNo">624</span>    newFilesSet = Sets.difference(newFilesSet, compactedFilesSet.keySet());<a name="line.624"></a>
-<span class="sourceLineNo">625</span>    Set&lt;StoreFileInfo&gt; toBeAddedFiles = Sets.difference(newFilesSet, currentFilesSet.keySet());<a name="line.625"></a>
-<span class="sourceLineNo">626</span>    Set&lt;StoreFileInfo&gt; toBeRemovedFiles = Sets.difference(currentFilesSet.keySet(), newFilesSet);<a name="line.626"></a>
-<span class="sourceLineNo">627</span><a name="line.627"></a>
-<span class="sourceLineNo">628</span>    if (toBeAddedFiles.isEmpty() &amp;&amp; toBeRemovedFiles.isEmpty()) {<a name="line.628"></a>
-<span class="sourceLineNo">629</span>      return;<a name="line.629"></a>
-<span class="sourceLineNo">630</span>    }<a name="line.630"></a>
-<span class="sourceLineNo">631</span><a name="line.631"></a>
-<span class="sourceLineNo">632</span>    LOG.info("Refreshing store files for region " + this.getRegionInfo().getRegionNameAsString()<a name="line.632"></a>
-<span class="sourceLineNo">633</span>      + " files to add: " + toBeAddedFiles + " files to remove: " + toBeRemovedFiles);<a name="line.633"></a>
-<span class="sourceLineNo">634</span><a name="line.634"></a>
-<span class="sourceLineNo">635</span>    Set&lt;HStoreFile&gt; toBeRemovedStoreFiles = new HashSet&lt;&gt;(toBeRemovedFiles.size());<a name="line.635"></a>
-<span class="sourceLineNo">636</span>    for (StoreFileInfo sfi : toBeRemovedFiles) {<a name="line.636"></a>
-<span class="sourceLineNo">637</span>      toBeRemovedStoreFiles.add(currentFilesSet.get(sfi));<a name="line.637"></a>
-<span class="sourceLineNo">638</span>    }<a name="line.638"></a>
-<span class="sourceLineNo">639</span><a name="line.639"></a>
-<span class="sourceLineNo">640</span>    // try to open the files<a name="line.640"></a>
-<span class="sourceLineNo">641</span>    List&lt;HStoreFile&gt; openedFiles = openStoreFiles(toBeAddedFiles);<a name="line.641"></a>
-<span class="sourceLineNo">642</span><a name="line.642"></a>
-<span class="sourceLineNo">643</span>    // propogate the file changes to the underlying store file manager<a name="line.643"></a>
-<span class="sourceLineNo">644</span>    replaceStoreFiles(toBeRemovedStoreFiles, openedFiles); //won't throw an exception<a name="line.644"></a>
-<span class="sourceLineNo">645</span><a name="line.645"></a>
-<span class="sourceLineNo">646</span>    // Advance the memstore read point to be at least the new store files seqIds so that<a name="line.646"></a>
-<span class="sourceLineNo">647</span>    // readers might pick it up. This assumes that the store is not getting any writes (otherwise<a name="line.647"></a>
-<span class="sourceLineNo">648</span>    // in-flight transactions might be made visible)<a name="line.648"></a>
-<span class="sourceLineNo">649</span>    if (!toBeAddedFiles.isEmpty()) {<a name="line.649"></a>
-<span class="sourceLineNo">650</span>      // we must have the max sequence id here as we do have several store files<a name="line.650"></a>
-<span class="sourceLineNo">651</span>      region.getMVCC().advanceTo(this.getMaxSequenceId().getAsLong());<a name="line.651"></a>
-<span class="sourceLineNo">652</span>    }<a name="line.652"></a>
-<span class="sourceLineNo">653</span><a name="line.653"></a>
-<span class="sourceLineNo">654</span>    completeCompaction(toBeRemovedStoreFiles);<a name="line.654"></a>
-<span class="sourceLineNo">655</span>  }<a name="line.655"></a>
-<span class="sourceLineNo">656</span><a name="line.656"></a>
-<span class="sourceLineNo">657</span>  private HStoreFile createStoreFileAndReader(final Path p) throws IOException {<a name="line.657"></a>
-<span class="sourceLineNo">658</span>    StoreFileInfo info = new StoreFileInfo(conf, this.getFileSystem(), p);<a name="line.658"></a>
-<span class="sourceLineNo">659</span>    return createStoreFileAndReader(info);<a name="line.659"></a>
-<span class="sourceLineNo">660</span>  }<a name="line.660"></a>
-<span class="sourceLineNo">661</span><a name="line.661"></a>
-<span class="sourceLineNo">662</span>  private HStoreFile createStoreFileAndReader(StoreFileInfo info) throws IOException {<a name="line.662"></a>
-<span class="sourceLineNo">663</span>    info.setRegionCoprocessorHost(this.region.getCoprocessorHost());<a name="line.663"></a>
-<span class="sourceLineNo">664</span>    HStoreFile storeFile = new HStoreFile(this.getFileSystem(), info, this.conf, this.cacheConf,<a name="line.664"></a>
-<span class="sourceLineNo">665</span>        this.family.getBloomFilterType(), isPrimaryReplicaStore());<a name="line.665"></a>
-<span class="sourceLineNo">666</span>    storeFile.initReader();<a name="line.666"></a>
-<span class="sourceLineNo">667</span>    return storeFile;<a name="line.667"></a>
-<span class="sourceLineNo">668</span>  }<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>   * This message intends to inform the MemStore that next coming updates<a name="line.671"></a>
-<span class="sourceLineNo">672</span>   * are going to be part of the replaying edits from WAL<a name="line.672"></a>
-<span class="sourceLineNo">673</span>   */<a name="line.673"></a>
-<span class="sourceLineNo">674</span>  public void startReplayingFromWAL(){<a name="line.674"></a>
-<span class="sourceLineNo">675</span>    this.memstore.startReplayingFromWAL();<a name="line.675"></a>
-<span class="sourceLineNo">676</span>  }<a name="line.676"></a>
-<span class="sourceLineNo">677</span><a name="line.677"></a>
-<span class="sourceLineNo">678</span>  /**<a name="line.678"></a>
-<span class="sourceLineNo">679</span>   * This message intends to inform the MemStore that the replaying edits from WAL<a name="line.679"></a>
-<span class="sourceLineNo">680</span>   * are done<a name="line.680"></a>
-<span class="sourceLineNo">681</span>   */<a name="line.681"></a>
-<span class="sourceLineNo">682</span>  public void stopReplayingFromWAL(){<a name="line.682"></a>
-<span class="sourceLineNo">683</span>    this.memstore.stopReplayingFromWAL();<a name="line.683"></a>
-<span class="sourceLineNo">684</span>  }<a name="line.684"></a>
-<span class="sourceLineNo">685</span><a name="line.685"></a>
-<span class="sourceLineNo">686</span>  /**<a name="line.686"></a>
-<span class="sourceLineNo">687</span>   * Adds a value to the memstore<a name="line.687"></a>
-<span class="sourceLineNo">688</span>   */<a name="line.688"></a>
-<span class="sourceLineNo">689</span>  public void add(final Cell cell, MemStoreSizing memstoreSizing) {<a name="line.689"></a>
-<span class="sourceLineNo">690</span>    lock.readLock().lock();<a name="line.690"></a>
-<span class="sourceLineNo">691</span>    try {<a name="line.691"></a>
-<span class="sourceLineNo">692</span>       this.memstore.add(cell, memstoreSizing);<a name="line.692"></a>
-<span class="sourceLineNo">693</span>    } finally {<a name="line.693"></a>
-<span class="sourceLineNo">694</span>      lock.readLock().unlock();<a name="line.694"></a>
-<span class="sourceLineNo">695</span>    }<a name="line.695"></a>
-<span class="sourceLineNo">696</span>  }<a name="line.696"></a>
-<span class="sourceLineNo">697</span><a name="line.697"></a>
-<span class="sourceLineNo">698</span>  /**<a name="line.698"></a>
-<span class="sourceLineNo">699</span>   * Adds the specified value to the memstore<a name="line.699"></a>
-<span class="sourceLineNo">700</span>   */<a name="line.700"></a>
-<span class="sourceLineNo">701</span>  public void add(final Iterable&lt;Cell&gt; cells, MemStoreSizing memstoreSizing) {<a name="line.701"></a>
-<span class="sourceLineNo">702</span>    lock.readLock().lock();<a name="line.702"></a>
-<span class="sourceLineNo">703</span>    try {<a name="line.703"></a>
-<span class="sourceLineNo">704</span>      memstore.add(cells, memstoreSizing);<a name="line.704"></a>
-<span class="sourceLineNo">705</span>    } finally {<a name="line.705"></a>
-<span class="sourceLineNo">706</span>      lock.readLock().unlock();<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>  @Override<a name="line.710"></a>
-<span class="sourceLineNo">711</span>  public long timeOfOldestEdit() {<a name="line.711"></a>
-<span class="sourceLineNo">712</span>    return memstore.timeOfOldestEdit();<a name="line.712"></a>
-<span class="sourceLineNo">713</span>  }<a name="line.713"></a>
-<span class="sourceLineNo">714</span><a name="line.714"></a>
-<span class="sourceLineNo">715</span>  /**<a name="line.715"></a>
-<span class="sourceLineNo">716</span>   * @return All store files.<a name="line.716"></a>
-<span class="sourceLineNo">717</span>   */<a name="line.717"></a>
-<span class="sourceLineNo">718</span>  @Override<a name="line.718"></a>
-<span class="sourceLineNo">719</span>  public Collection&lt;HStoreFile&gt; getStorefiles() {<a name="line.719"></a>
-<span class="sourceLineNo">720</span>    return this.storeEngine.getStoreFileManager().getStorefiles();<a name="line.720"></a>
-<span class="sourceLineNo">721</span>  }<a name="line.721"></a>
-<span class="sourceLineNo">722</span><a name="line.722"></a>
-<span class="sourceLineNo">723</span>  @Override<a name="line.723"></a>
-<span class="sourceLineNo">724</span>  public Collection&lt;HStoreFile&gt; getCompactedFiles() {<a name="line.724"></a>
-<span class="sourceLineNo">725</span>    return this.storeEngine.getStoreFileManager().getCompactedfiles();<a name="line.725"></a>
-<span class="sourceLineNo">726</span>  }<a name="line.726"></a>
-<span class="sourceLineNo">727</span><a name="line.727"></a>
-<span class="sourceLineNo">728</span>  /**<a name="line.728"></a>
-<span class="sourceLineNo">729</span>   * This throws a WrongRegionException if the HFile does not fit in this region, or an<a name="line.729"></a>
-<span class="sourceLineNo">730</span>   * InvalidHFileException if the HFile is not valid.<a name="line.730"></a>
-<span class="sourceLineNo">731</span>   */<a name="line.731"></a>
-<span class="sourceLineNo">732</span>  public void assertBulkLoadHFileOk(Path srcPath) throws IOException {<a name="line.732"></a>
-<span class="sourceLineNo">733</span>    HFile.Reader reader  = null;<a name="line.733"></a>
-<span class="sourceLineNo">734</span>    try {<a name="line.734"></a>
-<span class="sourceLineNo">735</span>      LOG.info("Validating hfile at " + srcPath + " for inclusion in "<a name="line.735"></a>
-<span class="sourceLineNo">736</span>          + "store " + this + " region " + this.getRegionInfo().getRegionNameAsString());<a name="line.736"></a>
-<span class="sourceLineNo">737</span>      reader = HFile.createReader(srcPath.getFileSystem(conf), srcPath, cacheConf,<a name="line.737"></a>
-<span class="sourceLineNo">738</span>        isPrimaryReplicaStore(), conf);<a name="line.738"></a>
-<span class="sourceLineNo">739</span>      reader.loadFileInfo();<a name="line.739"></a>
-<span class="sourceLineNo">740</span><a name="line.740"></a>
-<span class="sourceLineNo">741</span>      Optional&lt;byte[]&gt; firstKey = reader.getFirstRowKey();<a name="line.741"></a>
-<span class="sourceLineNo">742</span>      Preconditions.checkState(firstKey.isPresent(), "First key can not be null");<a name="line.742"></a>
-<span class="sourceLineNo">743</span>      Optional&lt;Cell&gt; lk = reader.getLastKey();<a name="line.743"></a>
-<span class="sourceLineNo">744</span>      Preconditions.checkState(lk.isPresent(), "Last key can not be null");<a name="line.744"></a>
-<span class="sourceLineNo">745</span>      byte[] lastKey =  CellUtil.cloneRow(lk.get());<a name="line.745"></a>
-<span class="sourceLineNo">746</span><a name="line.746"></a>
-<span class="sourceLineNo">747</span>      LOG.debug("HFile bounds: first=" + Bytes.toStringBinary(firstKey.get()) +<a name="line.747"></a>
-<span class="sourceLineNo">748</span>          " last=" + Bytes.toStringBinary(lastKey));<a name="line.748"></a>
-<span class="sourceLineNo">749</span>      LOG.debug("Region bounds: first=" +<a name="line.749"></a>
-<span class="sourceLineNo">750</span>          Bytes.toStringBinary(getRegionInfo().getStartKey()) +<a name="line.750"></a>
-<span class="sourceLineNo">751</span>          " last=" + Bytes.toStringBinary(getRegionInfo().getEndKey()));<a name="line.751"></a>
-<span class="sourceLineNo">752</span><a name="line.752"></a>
-<span class="sourceLineNo">753</span>      if (!this.getRegionInfo().containsRange(firstKey.get(), lastKey)) {<a name="line.753"></a>
-<span class="sourceLineNo">754</span>        throw new WrongRegionException(<a name="line.754"></a>
-<span class="sourceLineNo">755</span>            "Bulk load file " + srcPath.toString() + " does not fit inside region "<a name="line.755"></a>
-<span class="sourceLineNo">756</span>            + this.getRegionInfo().getRegionNameAsString());<a name="line.756"></a>
-<span class="sourceLineNo">757</span>      }<a name="line.757"></a>
-<span class="sourceLineNo">758</span><a name="line.758"></a>
-<span class="sourceLineNo">759</span>      if(reader.length() &gt; conf.getLong(HConstants.HREGION_MAX_FILESIZE,<a name="line.759"></a>
-<span class="sourceLineNo">760</span>          HConstants.DEFAULT_MAX_FILE_SIZE)) {<a name="line.760"></a>
-<span class="sourceLineNo">761</span>        LOG.warn("Trying to bulk load hfile " + srcPath.toString() + " with size: " +<a name="line.761"></a>
-<span class="sourceLineNo">762</span>            reader.length() + " bytes can be problematic as it may lead to oversplitting.");<a name="line.762"></a>
-<span class="sourceLineNo">763</span>      }<a name="line.763"></a>
-<span class="sourceLineNo">764</span><a name="line.764"></a>
-<span class="sourceLineNo">765</span>      if (verifyBulkLoads) {<a name="line.765"></a>
-<span class="sourceLineNo">766</span>        long verificationStartTime = EnvironmentEdgeManager.currentTime();<a name="line.766"></a>
-<span class="sourceLineNo">767</span>        LOG.info("Full verification started for bulk load hfile: " + srcPath.toString());<a name="line.767"></a>
-<span class="sourceLineNo">768</span>        Cell prevCell = null;<a name="line.768"></a>
-<span class="sourceLineNo">769</span>        HFileScanner scanner = reader.getScanner(false, false, false);<a name="line.769"></a>
-<span class="sourceLineNo">770</span>        scanner.seekTo();<a name="line.770"></a>
-<span class="sourceLineNo">771</span>        do {<a name="line.771"></a>
-<span class="sourceLineNo">772</span>          Cell cell = scanner.getCell();<a name="line.772"></a>
-<span class="sourceLineNo">773</span>          if (prevCell != null) {<a name="line.773"></a>
-<span class="sourceLineNo">774</span>            if (comparator.compareRows(prevCell, cell) &gt; 0) {<a name="line.774"></a>
-<span class="sourceLineNo">775</span>              throw new InvalidHFileException("Previous row is greater than"<a name="line.775"></a>
-<span class="sourceLineNo">776</span>                  + " current row: path=" + srcPath + " previous="<a name="line.776"></a>
-<span class="sourceLineNo">777</span>                  + CellUtil.getCellKeyAsString(prevCell) + " current="<a name="line.777"></a>
-<span class="sourceLineNo">778</span>                  + CellUtil.getCellKeyAsString(cell));<a name="line.778"></a>
-<span class="sourceLineNo">779</span>            }<a name="line.779"></a>
-<span class="sourceLineNo">780</span>            if (CellComparator.getInstance().compareFamilies(prevCell, cell) != 0) {<a name="line.780"></a>
-<span class="sourceLineNo">781</span>              throw new InvalidHFileException("Previous key had different"<a name="line.781"></a>
-<span class="sourceLineNo">782</span>                  + " family compared to current key: path=" + srcPath<a name="line.782"></a>
-<span class="sourceLineNo">783</span>                  + " previous="<a name="line.783"></a>
-<span class="sourceLineNo">784</span>                  + Bytes.toStringBinary(prevCell.getFamilyArray(), prevCell.getFamilyOffset(),<a name="line.784"></a>
-<span class="sourceLineNo">785</span>                      prevCell.getFamilyLength())<a name="line.785"></a>
-<span class="sourceLineNo">786</span>                  + " current="<a name="line.786"></a>
-<span class="sourceLineNo">787</span>                  + Bytes.toStringBinary(cell.getFamilyArray(), cell.getFamilyOffset(),<a name="line.787"></a>
-<span class="sourceLineNo">788</span>                      cell.getFamilyLength()));<a name="line.788"></a>
-<span class="sourceLineNo">789</span>            }<a name="line.789"></a>
-<span class="sourceLineNo">790</span>          }<a name="line.790"></a>
-<span class="sourceLineNo">791</span>          prevCell = cell;<a name="line.791"></a>
-<span class="sourceLineNo">792</span>        } while (scanner.next());<a name="line.792"></a>
-<span class="sourceLineNo">793</span>      LOG.info("Full verification complete for bulk load hfile: " + srcPath.toString()<a name="line.793"></a>
-<span class="sourceLineNo">794</span>         + " took " + (EnvironmentEdgeManager.currentTime() - verificationStartTime)<a name="line.794"></a>
-<span class="sourceLineNo">795</span>         + " ms");<a name="line.795"></a>
-<span class="sourceLineNo">796</span>      }<a name="line.796"></a>
-<span class="sourceLineNo">797</span>    } finally {<a name="line.797"></a>
-<span class="sourceLineNo">798</span>      if (reader != null) reader.close();<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>  /**<a name="line.802"></a>
-<span class="sourceLineNo">803</span>   * This method should only be called from Region. It is assumed that the ranges of values in the<a name="line.803"></a>
-<span class="sourceLineNo">804</span>   * HFile fit within the stores assigned region. (assertBulkLoadHFileOk checks this)<a name="line.804"></a>
-<span class="sourceLineNo">805</span>   *<a name="line.805"></a>
-<span class="sourceLineNo">806</span>   * @param srcPathStr<a name="line.806"></a>
-<span class="sourceLineNo">807</span>   * @param seqNum sequence Id associated with the HFile<a name="line.807"></a>
-<span class="sourceLineNo">808</span>   */<a name="line.808"></a>
-<span class="sourceLineNo">809</span>  public Pair&lt;Path, Path&gt; preBulkLoadHFile(String srcPathStr, long seqNum) throws IOException {<a name="line.809"></a>
-<span class="sourceLineNo">810</span>    Path srcPath = new Path(srcPathStr);<a name="line.810"></a>
-<span class="sourceLineNo">811</span>    return fs.bulkLoadStoreFile(getColumnFamilyName(), srcPath, seqNum);<a name="line.811"></a>
-<span class="sourceLineNo">812</span>  }<a name="line.812"></a>
-<span class="sourceLineNo">813</span><a name="line.813"></a>
-<span class="sourceLineNo">814</span>  public Path bulkLoadHFile(byte[] family, String srcPathStr, Path dstPath) throws IOException {<a name="line.814"></a>
-<span class="sourceLineNo">815</span>    Path srcPath = new Path(srcPathStr);<a name="line.815"></a>
-<span class="sourceLineNo">816</span>    try {<a name="line.816"></a>
-<span class="sourceLineNo">817</span>      fs.commitStoreFile(srcPath, dstPath);<a name="line.817"></a>
-<span class="sourceLineNo">818</span>    } finally {<a name="line.818"></a>
-<span class="sourceLineNo">819</span>      if (this.getCoprocessorHost() != null) {<a name="line.819"></a>
-<span class="sourceLineNo">820</span>        this.getCoprocessorHost().postCommitStoreFile(family, srcPath, dstPath);<a name="line.820"></a>
-<span class="sourceLineNo">821</span>      }<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>    LOG.info("Loaded HFile " + srcPath + " into store '" + getColumnFamilyName() + "' as "<a name="line.824"></a>
-<span class="sourceLineNo">825</span>        + dstPath + " - updating store file list.");<a name="line.825"></a>
-<span class="sourceLineNo">826</span><a name="line.826"></a>
-<span class="sourceLineNo">827</span>    HStoreFile sf = createStoreFileAndReader(dstPath);<a name="line.827"></a>
-<span class="sourceLineNo">828</span>    bulkLoadHFile(sf);<a name="line.828"></a>
-<span class="sourceLineNo">829</span><a name="line.829"></a>
-<span class="sourceLineNo">830</span>    LOG.info("Successfully loaded store file " + srcPath + " into store " + this<a name="line.830"></a>
-<span class="sourceLineNo">831</span>        + " (new location: " + dstPath + ")");<a name="line.831"></a>
-<span class="sourceLineNo">832</span><a name="line.832"></a>
-<span class="sourceLineNo">833</span>    return dstPath;<a name="line.833"></a>
-<span class="sourceLineNo">834</span>  }<a name="line.834"></a>
-<span class="sourceLineNo">835</span><a name="line.835"></a>
-<span class="sourceLineNo">836</span>  public void bulkLoadHFile(StoreFileInfo fileInfo) throws IOException {<a name="line.836"></a>
-<span class="sourceLineNo">837</span>    HStoreFile sf = createStoreFileAndReader(fileInfo);<a name="line.837"></a>
-<span class="sourceLineNo">838</span>    bulkLoadHFile(sf);<a name="line.838"></a>
-<span class="sourceLineNo">839</span>  }<a name="line.839"></a>
-<span class="sourceLineNo">840</span><a name="line.840"></a>
-<span class="sourceLineNo">841</span>  private void bulkLoadHFile(HStoreFile sf) throws IOException {<a name="line.841"></a>
-<span class="sourceLineNo">842</span>    StoreFileReader r = sf.getReader();<a name="line.842"></a>
-<span class="sourceLineNo">843</span>    this.storeSize += r.length();<a name="line.843"></a>
-<span class="sourceLineNo">844</span>    this.totalUncompressedBytes += r.getTotalUncompressedBytes();<a name="line.844"></a>
-<span class="sourceLineNo">845</span><a name="line.845"></a>
-<span class="sourceLineNo">846</span>    // Append the new storefile into the list<a name="line.846"></a>
-<span class="sourceLineNo">847</span>    this.lock.writeLock().lock();<a name="line.847"></a>
-<span class="sourceLineNo">848</span>    try {<a name="line.848"></a>
-<span class="sourceLineNo">849</span>      this.storeEngine.getStoreFileManager().insertNewFiles(Lists.newArrayList(sf));<a name="line.849"></a>
-<span class="sourceLineNo">850</span>    } finally {<a name="line.850"></a>
-<span class="sourceLineNo">851</span>      // We need the lock, as long as we are updating the storeFiles<a name="line.851"></a>
-<span class="sourceLineNo">852</span>      // or changing the memstore. Let us release it before calling<a name="line.852"></a>
-<span class="sourceLineNo">853</span>      // notifyChangeReadersObservers. See HBASE-4485 for a possible<a name="line.853"></a>
-<span class="sourceLineNo">854</span>      // deadlock scenario that could have happened if continue to hold<a name="line.854"></a>
-<span class="sourceLineNo">855</span>      // the lock.<a name="line.855"></a>
-<span class="sourceLineNo">856</span>      this.lock.writeLock().unlock();<a name="line.856"></a>
-<span class="sourceLineNo">857</span>    }<a name="line.857"></a>
-<span class="sourceLineNo">858</span>    LOG.info("Loaded HFile " + sf.getFileInfo() + " into store '" + getColumnFamilyName());<a name="line.858"></a>
-<span class="sourceLineNo">859</span>    if (LOG.isTraceEnabled()) {<a name="line.859"></a>
-<span class="sourceLineNo">860</span>      String traceMessage = "BULK LOAD time,size,store size,store files ["<a name="line.860"></a>
-<span class="sourceLineNo">861</span>          + EnvironmentEdgeManager.currentTime() + "," + r.length() + "," + storeSize<a name="line.861"></a>
-<span class="sourceLineNo">862</span>          + "," + storeEngine.getStoreFileManager().getStorefileCount() + "]";<a name="line.862"></a>
-<span class="sourceLineNo">863</span>      LOG.trace(traceMessage);<a name="line.863"></a>
-<span class="sourceLineNo">864</span>    }<a name="line.864"></a>
-<span class="sourceLineNo">865</span>  }<a name="line.865"></a>
-<span class="sourceLineNo">866</span><a name="line.866"></a>
-<span class="sourceLineNo">867</span>  /**<a name="line.867"></a>
-<span class="sourceLineNo">868</span>   * Close all the readers We don't need to worry about subsequent requests because the Region holds<a name="line.868"></a>
-<span class="sourceLineNo">869</span>   * a write lock that will prevent any more reads or writes.<a name="line.869"></a>
-<span class="sourceLineNo">870</span>   * @return the {@link StoreFile StoreFiles} that were previously being used.<a name="line.870"></a>
-<span class="sourceLineNo">871</span>   * @throws IOException on failure<a name="line.871"></a>
-<span class="sourceLineNo">872</span>   */<a name="line.872"></a>
-<span class="sourceLineNo">873</span>  public ImmutableCollection&lt;HStoreFile&gt; close() throws IOException {<a name="line.873"></a>
-<span class="sourceLineNo">874</span>    this.archiveLock.lock();<a name="line.874"></a>
-<span class="sourceLineNo">875</span>    this.lock.writeLock().lock();<a name="line.875"></a>
-<span class="sourceLineNo">876</span>    try {<a name="line.876"></a>
-<span class="sourceLineNo">877</span>      // Clear so metrics doesn't find them.<a name="line.877"></a>
-<span class="sourceLineNo">878</span>      ImmutableCollection&lt;HStoreFile&gt; result = storeEngine.getStoreFileManager().clearFiles();<a name="line.878"></a>
-<span class="sourceLineNo">879</span>      Collection&lt;HStoreFile&gt; compactedfiles =<a name="line.879"></a>
-<span class="sourceLineNo">880</span>          storeEngine.getStoreFileManager().clearCompactedFiles();<a name="line.880"></a>
-<span class="sourceLineNo">881</span>      // clear the compacted files<a name="line.881"></a>
-<span class="sourceLineNo">882</span>      if (compactedfiles != null &amp;&amp; !compactedfiles.isEmpty()) {<a name="line.882"></a>
-<span class="sourceLineNo">883</span>        removeCompactedfiles(compactedfiles);<a name="line.883"></a>
-<span class="sourceLineNo">884</span>      }<a name="line.884"></a>
-<span class="sourceLineNo">885</span>      if (!result.isEmpty()) {<a name="line.885"></a>
-<span class="sourceLineNo">886</span>        // initialize the thread pool for closing store files in parallel.<a name="line.886"></a>
-<span class="sourceLineNo">887</span>        ThreadPoolExecutor storeFileCloserThreadPool = this.region<a name="line.887"></a>
-<span class="sourceLineNo">888</span>            .getStoreFileOpenAndCloseThreadPool("StoreFileCloserThread-"<a name="line.888"></a>
-<span class="sourceLineNo">889</span>                + this.getColumnFamilyName());<a name="line.889"></a>
-<span class="sourceLineNo">890</span><a name="line.890"></a>
-<span class="sourceLineNo">891</span>        // close each store file in parallel<a name="line.891"></a>
-<span class="sourceLineNo">892</span>        CompletionService&lt;Void&gt; completionService =<a name="line.892"></a>
-<span class="sourceLineNo">893</span>          new ExecutorCompletionService&lt;&gt;(storeFileCloserThreadPool);<a name="line.893"></a>
-<span class="sourceLineNo">894</span>        for (HStoreFile f : result) {<a name="line.894"></a>
-<span class="sourceLineNo">895</span>          completionService.submit(new Callable&lt;Void&gt;() {<a name="line.895"></a>
-<span class="sourceLineNo">896</span>            @Override<a name="line.896"></a>
-<span class="sourceLineNo">897</span>            public Void call() throws IOException {<a name="line.897"></a>
-<span class="sourceLineNo">898</span>              boolean evictOnClose =<a name="line.898"></a>
-<span class="sourceLineNo">899</span>                  cacheConf != null? cacheConf.shouldEvictOnClose(): true;<a name="line.899"></a>
-<span class="sourceLineNo">900</span>              f.closeStoreFile(evictOnClose);<a name="line.900"></a>
-<span class="sourceLineNo">901</span>              return null;<a name="line.901"></a>
-<span class="sourceLineNo">902</span>            }<a name="line.902"></a>
-<span class="sourceLineNo">903</span>          });<a name="line.903"></a>
-<span class="sourceLineNo">904</span>        }<a name="line.904"></a>
-<span class="sourceLineNo">905</span><a name="line.905"></a>
-<span class="sourceLineNo">906</span>        IOException ioe = null;<a name="line.906"></a>
-<span class="sourceLineNo">907</span>        try {<a name="line.907"></a>
-<span class="sourceLineNo">908</span>          for (int i = 0; i &lt; result.size(); i++) {<a name="line.908"></a>
-<span class="sourceLineNo">909</span>            try {<a name="line.909"></a>
-<span class="sourceLineNo">910</span>              Future&lt;Void&gt; future = completionService.take();<a name="line.910"></a>
-<span class="sourceLineNo">911</span>              future.get();<a name="line.911"></a>
-<span class="sourceLineNo">912</span>            } catch (InterruptedException e) {<a name="line.912"></a>
-<span class="sourceLineNo">913</span>              if (ioe == null) {<a name="line.913"></a>
-<span class="sourceLineNo">914</span>                ioe = new InterruptedIOException();<a name="line.914"></a>
-<span class="sourceLineNo">915</span>                ioe.initCause(e);<a name="line.915"></a>
-<span class="sourceLineNo">916</span>              }<a name="line.916"></a>
-<span class="sourceLineNo">917</span>            } catch (ExecutionException e) {<a name="line.917"></a>
-<span class="sourceLineNo">918</span>              if (ioe == null) ioe = new IOException(e.getCause());<a name="line.918"></a>
-<span class="sourceLineNo">919</span>            }<a name="line.919"></a>
-<span class="sourceLineNo">920</span>          }<a name="line.920"></a>
-<span class="sourceLineNo">921</span>        } finally {<a name="line.921"></a>
-<span class="sourceLineNo">922</span>          storeFileCloserThreadPool.shutdownNow();<a name="line.922"></a>
-<span class="sourceLineNo">923</span>        }<a name="line.923"></a>
-<span class="sourceLineNo">924</span>        if (ioe != null) throw ioe;<a name="line.924"></a>
-<span class="sourceLineNo">925</span>      }<a name="line.925"></a>
-<span class="sourceLineNo">926</span>      LOG.info("Closed " + this);<a name="line.926"></a>
-<span class="sourceLineNo">927</span>      return result;<a name="line.927"></a>
-<span class="sourceLineNo">928</span>    } finally {<a name="line.928"></a>
-<span class="sourceLineNo">929</span>      this.lock.writeLock().unlock();<a name="line.929"></a>
-<span class="sourceLineNo">930</span>      this.archiveLock.unlock();<a name="line.930"></a>
-<span class="sourceLineNo">931</span>    }<a name="line.931"></a>
-<span class="sourceLineNo">932</span>  }<a name="line.932"></a>
-<span class="sourceLineNo">933</span

<TRUNCATED>

[44/51] [partial] hbase-site git commit: Published site at .

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/c54c242b/devapidocs/org/apache/hadoop/hbase/quotas/package-tree.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/quotas/package-tree.html b/devapidocs/org/apache/hadoop/hbase/quotas/package-tree.html
index 7f92e7a..7ce0c75 100644
--- a/devapidocs/org/apache/hadoop/hbase/quotas/package-tree.html
+++ b/devapidocs/org/apache/hadoop/hbase/quotas/package-tree.html
@@ -206,12 +206,12 @@
 <ul>
 <li type="circle">java.lang.<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Enum.html?is-external=true" title="class or interface in java.lang"><span class="typeNameLink">Enum</span></a>&lt;E&gt; (implements java.lang.<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Comparable.html?is-external=true" title="class or interface in java.lang">Comparable</a>&lt;T&gt;, java.io.<a href="http://docs.oracle.com/javase/8/docs/api/java/io/Serializable.html?is-external=true" title="class or interface in java.io">Serializable</a>)
 <ul>
-<li type="circle">org.apache.hadoop.hbase.quotas.<a href="../../../../../org/apache/hadoop/hbase/quotas/SpaceViolationPolicy.html" title="enum in org.apache.hadoop.hbase.quotas"><span class="typeNameLink">SpaceViolationPolicy</span></a></li>
-<li type="circle">org.apache.hadoop.hbase.quotas.<a href="../../../../../org/apache/hadoop/hbase/quotas/QuotaScope.html" title="enum in org.apache.hadoop.hbase.quotas"><span class="typeNameLink">QuotaScope</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.quotas.<a href="../../../../../org/apache/hadoop/hbase/quotas/ThrottleType.html" title="enum in org.apache.hadoop.hbase.quotas"><span class="typeNameLink">ThrottleType</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.quotas.<a href="../../../../../org/apache/hadoop/hbase/quotas/QuotaScope.html" title="enum in org.apache.hadoop.hbase.quotas"><span class="typeNameLink">QuotaScope</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.quotas.<a href="../../../../../org/apache/hadoop/hbase/quotas/OperationQuota.OperationType.html" title="enum in org.apache.hadoop.hbase.quotas"><span class="typeNameLink">OperationQuota.OperationType</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.quotas.<a href="../../../../../org/apache/hadoop/hbase/quotas/SpaceViolationPolicy.html" title="enum in org.apache.hadoop.hbase.quotas"><span class="typeNameLink">SpaceViolationPolicy</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.quotas.<a href="../../../../../org/apache/hadoop/hbase/quotas/ThrottlingException.Type.html" title="enum in org.apache.hadoop.hbase.quotas"><span class="typeNameLink">ThrottlingException.Type</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.quotas.<a href="../../../../../org/apache/hadoop/hbase/quotas/QuotaType.html" title="enum in org.apache.hadoop.hbase.quotas"><span class="typeNameLink">QuotaType</span></a></li>
-<li type="circle">org.apache.hadoop.hbase.quotas.<a href="../../../../../org/apache/hadoop/hbase/quotas/OperationQuota.OperationType.html" title="enum in org.apache.hadoop.hbase.quotas"><span class="typeNameLink">OperationQuota.OperationType</span></a></li>
 </ul>
 </li>
 </ul>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/c54c242b/devapidocs/org/apache/hadoop/hbase/regionserver/HRegion.BatchOperation.Visitor.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/regionserver/HRegion.BatchOperation.Visitor.html b/devapidocs/org/apache/hadoop/hbase/regionserver/HRegion.BatchOperation.Visitor.html
index ea6e355..b650ada 100644
--- a/devapidocs/org/apache/hadoop/hbase/regionserver/HRegion.BatchOperation.Visitor.html
+++ b/devapidocs/org/apache/hadoop/hbase/regionserver/HRegion.BatchOperation.Visitor.html
@@ -110,7 +110,7 @@ var activeTableTab = "activeTableTab";
 <hr>
 <br>
 <pre><a href="http://docs.oracle.com/javase/8/docs/api/java/lang/FunctionalInterface.html?is-external=true" title="class or interface in java.lang">@FunctionalInterface</a>
-public static interface <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.BatchOperation.html#line.2955">HRegion.BatchOperation.Visitor</a></pre>
+public static interface <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.BatchOperation.html#line.2954">HRegion.BatchOperation.Visitor</a></pre>
 <div class="block">Visitor interface for batch operations</div>
 </li>
 </ul>
@@ -155,7 +155,7 @@ public static interface <a href="../../../../../src-html/org/apache/hadoop/hbase
 <ul class="blockListLast">
 <li class="blockList">
 <h4>visit</h4>
-<pre>boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.BatchOperation.Visitor.html#line.2960">visit</a>(int&nbsp;index)
+<pre>boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.BatchOperation.Visitor.html#line.2959">visit</a>(int&nbsp;index)
        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>
 <dl>
 <dt><span class="paramLabel">Parameters:</span></dt>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/c54c242b/devapidocs/org/apache/hadoop/hbase/regionserver/HRegion.BatchOperation.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/regionserver/HRegion.BatchOperation.html b/devapidocs/org/apache/hadoop/hbase/regionserver/HRegion.BatchOperation.html
index c5d91ff..dd6ca44 100644
--- a/devapidocs/org/apache/hadoop/hbase/regionserver/HRegion.BatchOperation.html
+++ b/devapidocs/org/apache/hadoop/hbase/regionserver/HRegion.BatchOperation.html
@@ -117,7 +117,7 @@ var activeTableTab = "activeTableTab";
 </dl>
 <hr>
 <br>
-<pre>private abstract static class <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.html#line.2925">HRegion.BatchOperation</a>&lt;T&gt;
+<pre>private abstract static class <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.html#line.2924">HRegion.BatchOperation</a>&lt;T&gt;
 extends <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a></pre>
 <div class="block">Class that tracks the progress of a batch operations, accumulating status codes and tracking
  the index at which processing is proceeding. These batch operations may get split into
@@ -411,7 +411,7 @@ extends <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>operations</h4>
-<pre>protected final&nbsp;<a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegion.BatchOperation.html" title="type parameter in HRegion.BatchOperation">T</a>[] <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.BatchOperation.html#line.2926">operations</a></pre>
+<pre>protected final&nbsp;<a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegion.BatchOperation.html" title="type parameter in HRegion.BatchOperation">T</a>[] <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.BatchOperation.html#line.2925">operations</a></pre>
 </li>
 </ul>
 <a name="retCodeDetails">
@@ -420,7 +420,7 @@ extends <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>retCodeDetails</h4>
-<pre>protected final&nbsp;<a href="../../../../../org/apache/hadoop/hbase/regionserver/OperationStatus.html" title="class in org.apache.hadoop.hbase.regionserver">OperationStatus</a>[] <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.BatchOperation.html#line.2927">retCodeDetails</a></pre>
+<pre>protected final&nbsp;<a href="../../../../../org/apache/hadoop/hbase/regionserver/OperationStatus.html" title="class in org.apache.hadoop.hbase.regionserver">OperationStatus</a>[] <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.BatchOperation.html#line.2926">retCodeDetails</a></pre>
 </li>
 </ul>
 <a name="walEditsFromCoprocessors">
@@ -429,7 +429,7 @@ extends <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>walEditsFromCoprocessors</h4>
-<pre>protected final&nbsp;<a href="../../../../../org/apache/hadoop/hbase/wal/WALEdit.html" title="class in org.apache.hadoop.hbase.wal">WALEdit</a>[] <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.BatchOperation.html#line.2928">walEditsFromCoprocessors</a></pre>
+<pre>protected final&nbsp;<a href="../../../../../org/apache/hadoop/hbase/wal/WALEdit.html" title="class in org.apache.hadoop.hbase.wal">WALEdit</a>[] <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.BatchOperation.html#line.2927">walEditsFromCoprocessors</a></pre>
 </li>
 </ul>
 <a name="familyCellMaps">
@@ -438,7 +438,7 @@ extends <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>familyCellMaps</h4>
-<pre>protected final&nbsp;<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;byte[],<a href="http://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&gt;&gt;[] <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.BatchOperation.html#line.2930">familyCellMaps</a></pre>
+<pre>protected final&nbsp;<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;byte[],<a href="http://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&gt;&gt;[] <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.BatchOperation.html#line.2929">familyCellMaps</a></pre>
 </li>
 </ul>
 <a name="region">
@@ -447,7 +447,7 @@ extends <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>region</h4>
-<pre>protected final&nbsp;<a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegion.html" title="class in org.apache.hadoop.hbase.regionserver">HRegion</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.BatchOperation.html#line.2932">region</a></pre>
+<pre>protected final&nbsp;<a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegion.html" title="class in org.apache.hadoop.hbase.regionserver">HRegion</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.BatchOperation.html#line.2931">region</a></pre>
 </li>
 </ul>
 <a name="nextIndexToProcess">
@@ -456,7 +456,7 @@ extends <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>nextIndexToProcess</h4>
-<pre>protected&nbsp;int <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.BatchOperation.html#line.2933">nextIndexToProcess</a></pre>
+<pre>protected&nbsp;int <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.BatchOperation.html#line.2932">nextIndexToProcess</a></pre>
 </li>
 </ul>
 <a name="observedExceptions">
@@ -465,7 +465,7 @@ extends <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>observedExceptions</h4>
-<pre>protected final&nbsp;<a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegion.ObservedExceptionsInBatch.html" title="class in org.apache.hadoop.hbase.regionserver">HRegion.ObservedExceptionsInBatch</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.BatchOperation.html#line.2934">observedExceptions</a></pre>
+<pre>protected final&nbsp;<a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegion.ObservedExceptionsInBatch.html" title="class in org.apache.hadoop.hbase.regionserver">HRegion.ObservedExceptionsInBatch</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.BatchOperation.html#line.2933">observedExceptions</a></pre>
 </li>
 </ul>
 <a name="durability">
@@ -474,7 +474,7 @@ extends <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>durability</h4>
-<pre>protected&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/Durability.html" title="enum in org.apache.hadoop.hbase.client">Durability</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.BatchOperation.html#line.2936">durability</a></pre>
+<pre>protected&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/Durability.html" title="enum in org.apache.hadoop.hbase.client">Durability</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.BatchOperation.html#line.2935">durability</a></pre>
 </li>
 </ul>
 <a name="atomic">
@@ -483,7 +483,7 @@ extends <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?
 <ul class="blockListLast">
 <li class="blockList">
 <h4>atomic</h4>
-<pre>protected&nbsp;boolean <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.BatchOperation.html#line.2937">atomic</a></pre>
+<pre>protected&nbsp;boolean <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.BatchOperation.html#line.2936">atomic</a></pre>
 </li>
 </ul>
 </li>
@@ -502,7 +502,7 @@ extends <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?
 <ul class="blockListLast">
 <li class="blockList">
 <h4>BatchOperation</h4>
-<pre>public&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.BatchOperation.html#line.2939">BatchOperation</a>(<a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegion.html" title="class in org.apache.hadoop.hbase.regionserver">HRegion</a>&nbsp;region,
+<pre>public&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.BatchOperation.html#line.2938">BatchOperation</a>(<a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegion.html" title="class in org.apache.hadoop.hbase.regionserver">HRegion</a>&nbsp;region,
                       <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegion.BatchOperation.html" title="type parameter in HRegion.BatchOperation">T</a>[]&nbsp;operations)</pre>
 </li>
 </ul>
@@ -520,7 +520,7 @@ extends <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>visitBatchOperations</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.BatchOperation.html#line.2966">visitBatchOperations</a>(boolean&nbsp;pendingOnly,
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.BatchOperation.html#line.2965">visitBatchOperations</a>(boolean&nbsp;pendingOnly,
                                  int&nbsp;lastIndexExclusive,
                                  <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegion.BatchOperation.Visitor.html" title="interface in org.apache.hadoop.hbase.regionserver">HRegion.BatchOperation.Visitor</a>&nbsp;visitor)
                           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>
@@ -537,7 +537,7 @@ extends <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>getMutation</h4>
-<pre>public abstract&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/Mutation.html" title="class in org.apache.hadoop.hbase.client">Mutation</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.BatchOperation.html#line.2978">getMutation</a>(int&nbsp;index)</pre>
+<pre>public abstract&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/Mutation.html" title="class in org.apache.hadoop.hbase.client">Mutation</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.BatchOperation.html#line.2977">getMutation</a>(int&nbsp;index)</pre>
 </li>
 </ul>
 <a name="getNonceGroup-int-">
@@ -546,7 +546,7 @@ extends <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>getNonceGroup</h4>
-<pre>public abstract&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.BatchOperation.html#line.2979">getNonceGroup</a>(int&nbsp;index)</pre>
+<pre>public abstract&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.BatchOperation.html#line.2978">getNonceGroup</a>(int&nbsp;index)</pre>
 </li>
 </ul>
 <a name="getNonce-int-">
@@ -555,7 +555,7 @@ extends <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>getNonce</h4>
-<pre>public abstract&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.BatchOperation.html#line.2980">getNonce</a>(int&nbsp;index)</pre>
+<pre>public abstract&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.BatchOperation.html#line.2979">getNonce</a>(int&nbsp;index)</pre>
 </li>
 </ul>
 <a name="getMutationsForCoprocs--">
@@ -564,7 +564,7 @@ extends <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>getMutationsForCoprocs</h4>
-<pre>public abstract&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/Mutation.html" title="class in org.apache.hadoop.hbase.client">Mutation</a>[]&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.BatchOperation.html#line.2982">getMutationsForCoprocs</a>()</pre>
+<pre>public abstract&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/Mutation.html" title="class in org.apache.hadoop.hbase.client">Mutation</a>[]&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.BatchOperation.html#line.2981">getMutationsForCoprocs</a>()</pre>
 <div class="block">This method is potentially expensive and useful mostly for non-replay CP path.</div>
 </li>
 </ul>
@@ -574,7 +574,7 @@ extends <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>isInReplay</h4>
-<pre>public abstract&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.BatchOperation.html#line.2983">isInReplay</a>()</pre>
+<pre>public abstract&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.BatchOperation.html#line.2982">isInReplay</a>()</pre>
 </li>
 </ul>
 <a name="getOrigLogSeqNum--">
@@ -583,7 +583,7 @@ extends <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>getOrigLogSeqNum</h4>
-<pre>public abstract&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.BatchOperation.html#line.2984">getOrigLogSeqNum</a>()</pre>
+<pre>public abstract&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.BatchOperation.html#line.2983">getOrigLogSeqNum</a>()</pre>
 </li>
 </ul>
 <a name="startRegionOperation--">
@@ -592,7 +592,7 @@ extends <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>startRegionOperation</h4>
-<pre>public abstract&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.BatchOperation.html#line.2985">startRegionOperation</a>()
+<pre>public abstract&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.BatchOperation.html#line.2984">startRegionOperation</a>()
                                    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>
 <dl>
 <dt><span class="throwsLabel">Throws:</span></dt>
@@ -606,7 +606,7 @@ extends <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>closeRegionOperation</h4>
-<pre>public abstract&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.BatchOperation.html#line.2986">closeRegionOperation</a>()
+<pre>public abstract&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.BatchOperation.html#line.2985">closeRegionOperation</a>()
                                    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>
 <dl>
 <dt><span class="throwsLabel">Throws:</span></dt>
@@ -620,7 +620,7 @@ extends <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>checkAndPrepare</h4>
-<pre>public abstract&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.BatchOperation.html#line.2995">checkAndPrepare</a>()
+<pre>public abstract&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.BatchOperation.html#line.2994">checkAndPrepare</a>()
                               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">Validates each mutation and prepares a batch for write. If necessary (non-replay case), runs
  CP prePut()/ preDelete() hooks for all mutations in a batch. This is intended to operate on
@@ -639,7 +639,7 @@ extends <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>checkAndPreparePut</h4>
-<pre>protected abstract&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.BatchOperation.html#line.3001">checkAndPreparePut</a>(<a href="../../../../../org/apache/hadoop/hbase/client/Put.html" title="class in org.apache.hadoop.hbase.client">Put</a>&nbsp;p)
+<pre>protected abstract&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.BatchOperation.html#line.3000">checkAndPreparePut</a>(<a href="../../../../../org/apache/hadoop/hbase/client/Put.html" title="class in org.apache.hadoop.hbase.client">Put</a>&nbsp;p)
                                     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">Implement any Put request specific check and prepare logic here. Please refer to
  <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegion.BatchOperation.html#checkAndPrepareMutation-org.apache.hadoop.hbase.client.Mutation-long-"><code>checkAndPrepareMutation(Mutation, long)</code></a> for how its used.</div>
@@ -655,7 +655,7 @@ extends <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>prepareMiniBatchOperations</h4>
-<pre>public abstract&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.BatchOperation.html#line.3007">prepareMiniBatchOperations</a>(<a href="../../../../../org/apache/hadoop/hbase/regionserver/MiniBatchOperationInProgress.html" title="class in org.apache.hadoop.hbase.regionserver">MiniBatchOperationInProgress</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/client/Mutation.html" title="class in org.apache.hadoop.hbase.client">Mutation</a>&gt;&nbsp;miniBatchOp,
+<pre>public abstract&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.BatchOperation.html#line.3006">prepareMiniBatchOperations</a>(<a href="../../../../../org/apache/hadoop/hbase/regionserver/MiniBatchOperationInProgress.html" title="class in org.apache.hadoop.hbase.regionserver">MiniBatchOperationInProgress</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/client/Mutation.html" title="class in org.apache.hadoop.hbase.client">Mutation</a>&gt;&nbsp;miniBatchOp,
                                                 long&nbsp;timestamp,
                                                 <a href="http://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/regionserver/Region.RowLock.html" title="interface in org.apache.hadoop.hbase.regionserver">Region.RowLock</a>&gt;&nbsp;acquiredRowLocks)
                                          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>
@@ -673,7 +673,7 @@ extends <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>writeMiniBatchOperationsToMemStore</h4>
-<pre>public abstract&nbsp;<a href="../../../../../org/apache/hadoop/hbase/regionserver/MultiVersionConcurrencyControl.WriteEntry.html" title="class in org.apache.hadoop.hbase.regionserver">MultiVersionConcurrencyControl.WriteEntry</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.BatchOperation.html#line.3013">writeMiniBatchOperationsToMemStore</a>(<a href="../../../../../org/apache/hadoop/hbase/regionserver/MiniBatchOperationInProgress.html" title="class in org.apache.hadoop.hbase.regionserver">MiniBatchOperationInProgress</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/client/Mutation.html" title="class in org.apache.hadoop.hbase.client">Mutation</a>&gt;&nbsp;miniBatchOp,
+<pre>public abstract&nbsp;<a href="../../../../../org/apache/hadoop/hbase/regionserver/MultiVersionConcurrencyControl.WriteEntry.html" title="class in org.apache.hadoop.hbase.regionserver">MultiVersionConcurrencyControl.WriteEntry</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.BatchOperation.html#line.3012">writeMiniBatchOperationsToMemStore</a>(<a href="../../../../../org/apache/hadoop/hbase/regionserver/MiniBatchOperationInProgress.html" title="class in org.apache.hadoop.hbase.regionserver">MiniBatchOperationInProgress</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/client/Mutation.html" title="class in org.apache.hadoop.hbase.client">Mutation</a>&gt;&nbsp;miniBatchOp,
                                                                                              <a href="../../../../../org/apache/hadoop/hbase/regionserver/MultiVersionConcurrencyControl.WriteEntry.html" title="class in org.apache.hadoop.hbase.regionserver">MultiVersionConcurrencyControl.WriteEntry</a>&nbsp;writeEntry)
                                                                                       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">Write mini-batch operations to MemStore</div>
@@ -689,7 +689,7 @@ extends <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>writeMiniBatchOperationsToMemStore</h4>
-<pre>protected&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.BatchOperation.html#line.3017">writeMiniBatchOperationsToMemStore</a>(<a href="../../../../../org/apache/hadoop/hbase/regionserver/MiniBatchOperationInProgress.html" title="class in org.apache.hadoop.hbase.regionserver">MiniBatchOperationInProgress</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/client/Mutation.html" title="class in org.apache.hadoop.hbase.client">Mutation</a>&gt;&nbsp;miniBatchOp,
+<pre>protected&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.BatchOperation.html#line.3016">writeMiniBatchOperationsToMemStore</a>(<a href="../../../../../org/apache/hadoop/hbase/regionserver/MiniBatchOperationInProgress.html" title="class in org.apache.hadoop.hbase.regionserver">MiniBatchOperationInProgress</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/client/Mutation.html" title="class in org.apache.hadoop.hbase.client">Mutation</a>&gt;&nbsp;miniBatchOp,
                                                   long&nbsp;writeNumber)
                                            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>
 <dl>
@@ -704,7 +704,7 @@ extends <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>isDone</h4>
-<pre>public&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.BatchOperation.html#line.3036">isDone</a>()</pre>
+<pre>public&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.BatchOperation.html#line.3035">isDone</a>()</pre>
 </li>
 </ul>
 <a name="size--">
@@ -713,7 +713,7 @@ extends <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>size</h4>
-<pre>public&nbsp;int&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.BatchOperation.html#line.3040">size</a>()</pre>
+<pre>public&nbsp;int&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.BatchOperation.html#line.3039">size</a>()</pre>
 </li>
 </ul>
 <a name="isOperationPending-int-">
@@ -722,7 +722,7 @@ extends <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>isOperationPending</h4>
-<pre>public&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.BatchOperation.html#line.3044">isOperationPending</a>(int&nbsp;index)</pre>
+<pre>public&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.BatchOperation.html#line.3043">isOperationPending</a>(int&nbsp;index)</pre>
 </li>
 </ul>
 <a name="getClusterIds--">
@@ -731,7 +731,7 @@ extends <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>getClusterIds</h4>
-<pre>public&nbsp;<a href="http://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="http://docs.oracle.com/javase/8/docs/api/java/util/UUID.html?is-external=true" title="class or interface in java.util">UUID</a>&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.BatchOperation.html#line.3048">getClusterIds</a>()</pre>
+<pre>public&nbsp;<a href="http://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="http://docs.oracle.com/javase/8/docs/api/java/util/UUID.html?is-external=true" title="class or interface in java.util">UUID</a>&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.BatchOperation.html#line.3047">getClusterIds</a>()</pre>
 </li>
 </ul>
 <a name="isAtomic--">
@@ -740,7 +740,7 @@ extends <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>isAtomic</h4>
-<pre>boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.BatchOperation.html#line.3053">isAtomic</a>()</pre>
+<pre>boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.BatchOperation.html#line.3052">isAtomic</a>()</pre>
 </li>
 </ul>
 <a name="checkAndPrepareMutation-org.apache.hadoop.hbase.client.Mutation-long-">
@@ -749,7 +749,7 @@ extends <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>checkAndPrepareMutation</h4>
-<pre>protected&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.BatchOperation.html#line.3063">checkAndPrepareMutation</a>(<a href="../../../../../org/apache/hadoop/hbase/client/Mutation.html" title="class in org.apache.hadoop.hbase.client">Mutation</a>&nbsp;mutation,
+<pre>protected&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.BatchOperation.html#line.3062">checkAndPrepareMutation</a>(<a href="../../../../../org/apache/hadoop/hbase/client/Mutation.html" title="class in org.apache.hadoop.hbase.client">Mutation</a>&nbsp;mutation,
                                        long&nbsp;timestamp)
                                 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">Helper method that checks and prepares only one mutation. This can be used to implement
@@ -768,7 +768,7 @@ extends <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>checkAndPrepareMutation</h4>
-<pre>protected&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.BatchOperation.html#line.3075">checkAndPrepareMutation</a>(int&nbsp;index,
+<pre>protected&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.BatchOperation.html#line.3074">checkAndPrepareMutation</a>(int&nbsp;index,
                                        long&nbsp;timestamp)
                                 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>
 <dl>
@@ -783,7 +783,7 @@ extends <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>lockRowsAndBuildMiniBatch</h4>
-<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/regionserver/MiniBatchOperationInProgress.html" title="class in org.apache.hadoop.hbase.regionserver">MiniBatchOperationInProgress</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/client/Mutation.html" title="class in org.apache.hadoop.hbase.client">Mutation</a>&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.BatchOperation.html#line.3137">lockRowsAndBuildMiniBatch</a>(<a href="http://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/regionserver/Region.RowLock.html" title="interface in org.apache.hadoop.hbase.regionserver">Region.RowLock</a>&gt;&nbsp;acquiredRowLocks)
+<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/regionserver/MiniBatchOperationInProgress.html" title="class in org.apache.hadoop.hbase.regionserver">MiniBatchOperationInProgress</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/client/Mutation.html" title="class in org.apache.hadoop.hbase.client">Mutation</a>&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.BatchOperation.html#line.3136">lockRowsAndBuildMiniBatch</a>(<a href="http://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/regionserver/Region.RowLock.html" title="interface in org.apache.hadoop.hbase.regionserver">Region.RowLock</a>&gt;&nbsp;acquiredRowLocks)
                                                                  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">Creates Mini-batch of all operations [nextIndexToProcess, lastIndexExclusive) for which
  a row lock can be acquired. All mutations with locked rows are considered to be
@@ -803,7 +803,7 @@ extends <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>createMiniBatch</h4>
-<pre>protected&nbsp;<a href="../../../../../org/apache/hadoop/hbase/regionserver/MiniBatchOperationInProgress.html" title="class in org.apache.hadoop.hbase.regionserver">MiniBatchOperationInProgress</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/client/Mutation.html" title="class in org.apache.hadoop.hbase.client">Mutation</a>&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.BatchOperation.html#line.3174">createMiniBatch</a>(int&nbsp;lastIndexExclusive,
+<pre>protected&nbsp;<a href="../../../../../org/apache/hadoop/hbase/regionserver/MiniBatchOperationInProgress.html" title="class in org.apache.hadoop.hbase.regionserver">MiniBatchOperationInProgress</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/client/Mutation.html" title="class in org.apache.hadoop.hbase.client">Mutation</a>&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.BatchOperation.html#line.3173">createMiniBatch</a>(int&nbsp;lastIndexExclusive,
                                                                  int&nbsp;readyToWriteCount)</pre>
 </li>
 </ul>
@@ -813,7 +813,7 @@ extends <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>buildWALEdits</h4>
-<pre>public&nbsp;<a href="http://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/util/Pair.html" title="class in org.apache.hadoop.hbase.util">Pair</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/util/NonceKey.html" title="class in org.apache.hadoop.hbase.util">NonceKey</a>,<a href="../../../../../org/apache/hadoop/hbase/wal/WALEdit.html" title="class in org.apache.hadoop.hbase.wal">WALEdit</a>&gt;&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.BatchOperation.html#line.3184">buildWALEdits</a>(<a href="../../../../../org/apache/hadoop/hbase/regionserver/MiniBatchOperationInProgress.html" title="class in org.apache.hadoop.hbase.regionserver">MiniBatchOperationInProgress</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/client/Mutation.html" title="class in org.apache.hadoop.hbase.client">Mutation</a>&gt;&nbsp;mi
 niBatchOp)
+<pre>public&nbsp;<a href="http://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/util/Pair.html" title="class in org.apache.hadoop.hbase.util">Pair</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/util/NonceKey.html" title="class in org.apache.hadoop.hbase.util">NonceKey</a>,<a href="../../../../../org/apache/hadoop/hbase/wal/WALEdit.html" title="class in org.apache.hadoop.hbase.wal">WALEdit</a>&gt;&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.BatchOperation.html#line.3183">buildWALEdits</a>(<a href="../../../../../org/apache/hadoop/hbase/regionserver/MiniBatchOperationInProgress.html" title="class in org.apache.hadoop.hbase.regionserver">MiniBatchOperationInProgress</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/client/Mutation.html" title="class in org.apache.hadoop.hbase.client">Mutation</a>&gt;&nbsp;mi
 niBatchOp)
                                            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">Builds separate WALEdit per nonce by applying input mutations. If WALEdits from CP are
  present, they are merged to result WALEdit.</div>
@@ -829,7 +829,7 @@ extends <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>completeMiniBatchOperations</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.BatchOperation.html#line.3232">completeMiniBatchOperations</a>(<a href="../../../../../org/apache/hadoop/hbase/regionserver/MiniBatchOperationInProgress.html" title="class in org.apache.hadoop.hbase.regionserver">MiniBatchOperationInProgress</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/client/Mutation.html" title="class in org.apache.hadoop.hbase.client">Mutation</a>&gt;&nbsp;miniBatchOp,
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.BatchOperation.html#line.3231">completeMiniBatchOperations</a>(<a href="../../../../../org/apache/hadoop/hbase/regionserver/MiniBatchOperationInProgress.html" title="class in org.apache.hadoop.hbase.regionserver">MiniBatchOperationInProgress</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/client/Mutation.html" title="class in org.apache.hadoop.hbase.client">Mutation</a>&gt;&nbsp;miniBatchOp,
                                         <a href="../../../../../org/apache/hadoop/hbase/regionserver/MultiVersionConcurrencyControl.WriteEntry.html" title="class in org.apache.hadoop.hbase.regionserver">MultiVersionConcurrencyControl.WriteEntry</a>&nbsp;writeEntry)
                                  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">This method completes mini-batch operations by calling postBatchMutate() CP hook (if
@@ -846,7 +846,7 @@ extends <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>doPostOpCleanupForMiniBatch</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.BatchOperation.html#line.3240">doPostOpCleanupForMiniBatch</a>(<a href="../../../../../org/apache/hadoop/hbase/regionserver/MiniBatchOperationInProgress.html" title="class in org.apache.hadoop.hbase.regionserver">MiniBatchOperationInProgress</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/client/Mutation.html" title="class in org.apache.hadoop.hbase.client">Mutation</a>&gt;&nbsp;miniBatchOp,
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.BatchOperation.html#line.3239">doPostOpCleanupForMiniBatch</a>(<a href="../../../../../org/apache/hadoop/hbase/regionserver/MiniBatchOperationInProgress.html" title="class in org.apache.hadoop.hbase.regionserver">MiniBatchOperationInProgress</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/client/Mutation.html" title="class in org.apache.hadoop.hbase.client">Mutation</a>&gt;&nbsp;miniBatchOp,
                                         <a href="../../../../../org/apache/hadoop/hbase/wal/WALEdit.html" title="class in org.apache.hadoop.hbase.wal">WALEdit</a>&nbsp;walEdit,
                                         boolean&nbsp;success)
                                  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>
@@ -862,7 +862,7 @@ extends <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>applyFamilyMapToMemStore</h4>
-<pre>protected&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.BatchOperation.html#line.3252">applyFamilyMapToMemStore</a>(<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;byte[],<a href="http://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&gt;&gt;&nbsp;familyMap,
+<pre>protected&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.BatchOperation.html#line.3251">applyFamilyMapToMemStore</a>(<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;byte[],<a href="http://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&gt;&gt;&nbsp;familyMap,
                                         <a href="../../../../../org/apache/hadoop/hbase/regionserver/MemStoreSizing.html" title="class in org.apache.hadoop.hbase.regionserver">MemStoreSizing</a>&nbsp;memstoreAccounting)
                                  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">Atomically apply the given map of family->edits to the memstore.
@@ -883,7 +883,7 @@ extends <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?
 <ul class="blockListLast">
 <li class="blockList">
 <h4>addFamilyMapToWALEdit</h4>
-<pre>private&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.BatchOperation.html#line.3268">addFamilyMapToWALEdit</a>(<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;byte[],<a href="http://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&gt;&gt;&nbsp;familyMap,
+<pre>private&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.BatchOperation.html#line.3267">addFamilyMapToWALEdit</a>(<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;byte[],<a href="http://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&gt;&gt;&nbsp;familyMap,
                                    <a href="../../../../../org/apache/hadoop/hbase/wal/WALEdit.html" title="class in org.apache.hadoop.hbase.wal">WALEdit</a>&nbsp;walEdit)</pre>
 <div class="block">Append the given map of family->edits to a WALEdit data structure.
  This does not write to the WAL itself.</div>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/c54c242b/devapidocs/org/apache/hadoop/hbase/regionserver/HRegion.BulkLoadListener.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/regionserver/HRegion.BulkLoadListener.html b/devapidocs/org/apache/hadoop/hbase/regionserver/HRegion.BulkLoadListener.html
index 3b15e1c..b8c5538 100644
--- a/devapidocs/org/apache/hadoop/hbase/regionserver/HRegion.BulkLoadListener.html
+++ b/devapidocs/org/apache/hadoop/hbase/regionserver/HRegion.BulkLoadListener.html
@@ -109,7 +109,7 @@ var activeTableTab = "activeTableTab";
 </dl>
 <hr>
 <br>
-<pre>public static interface <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.html#line.5776">HRegion.BulkLoadListener</a></pre>
+<pre>public static interface <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.html#line.5775">HRegion.BulkLoadListener</a></pre>
 <div class="block">Listener class to enable callers of
  bulkLoadHFile() to perform any necessary
  pre/post processing of a given bulkload call</div>
@@ -174,7 +174,7 @@ var activeTableTab = "activeTableTab";
 <ul class="blockList">
 <li class="blockList">
 <h4>prepareBulkLoad</h4>
-<pre><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/regionserver/HRegion.BulkLoadListener.html#line.5784">prepareBulkLoad</a>(byte[]&nbsp;family,
+<pre><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/regionserver/HRegion.BulkLoadListener.html#line.5783">prepareBulkLoad</a>(byte[]&nbsp;family,
                        <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;srcPath,
                        boolean&nbsp;copyFile)
                 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>
@@ -196,7 +196,7 @@ var activeTableTab = "activeTableTab";
 <ul class="blockList">
 <li class="blockList">
 <h4>doneBulkLoad</h4>
-<pre>void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.BulkLoadListener.html#line.5793">doneBulkLoad</a>(byte[]&nbsp;family,
+<pre>void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.BulkLoadListener.html#line.5792">doneBulkLoad</a>(byte[]&nbsp;family,
                   <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;srcPath)
            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">Called after a successful HFile load</div>
@@ -215,7 +215,7 @@ var activeTableTab = "activeTableTab";
 <ul class="blockListLast">
 <li class="blockList">
 <h4>failedBulkLoad</h4>
-<pre>void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.BulkLoadListener.html#line.5801">failedBulkLoad</a>(byte[]&nbsp;family,
+<pre>void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.BulkLoadListener.html#line.5800">failedBulkLoad</a>(byte[]&nbsp;family,
                     <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;srcPath)
              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">Called after a failed HFile load</div>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/c54c242b/devapidocs/org/apache/hadoop/hbase/regionserver/HRegion.MutationBatchOperation.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/regionserver/HRegion.MutationBatchOperation.html b/devapidocs/org/apache/hadoop/hbase/regionserver/HRegion.MutationBatchOperation.html
index c279054..d18db5c 100644
--- a/devapidocs/org/apache/hadoop/hbase/regionserver/HRegion.MutationBatchOperation.html
+++ b/devapidocs/org/apache/hadoop/hbase/regionserver/HRegion.MutationBatchOperation.html
@@ -118,7 +118,7 @@ var activeTableTab = "activeTableTab";
 </dl>
 <hr>
 <br>
-<pre>static class <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.html#line.3287">HRegion.MutationBatchOperation</a>
+<pre>static class <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.html#line.3286">HRegion.MutationBatchOperation</a>
 extends <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegion.BatchOperation.html" title="class in org.apache.hadoop.hbase.regionserver">HRegion.BatchOperation</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/client/Mutation.html" title="class in org.apache.hadoop.hbase.client">Mutation</a>&gt;</pre>
 <div class="block">Batch of mutation operations. Base class is shared with <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegion.ReplayBatchOperation.html" title="class in org.apache.hadoop.hbase.regionserver"><code>HRegion.ReplayBatchOperation</code></a> as most
  of the logic is same.</div>
@@ -342,7 +342,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegion.Bat
 <ul class="blockList">
 <li class="blockList">
 <h4>nonceGroup</h4>
-<pre>private&nbsp;long <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.MutationBatchOperation.html#line.3288">nonceGroup</a></pre>
+<pre>private&nbsp;long <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.MutationBatchOperation.html#line.3287">nonceGroup</a></pre>
 </li>
 </ul>
 <a name="nonce">
@@ -351,7 +351,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegion.Bat
 <ul class="blockListLast">
 <li class="blockList">
 <h4>nonce</h4>
-<pre>private&nbsp;long <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.MutationBatchOperation.html#line.3289">nonce</a></pre>
+<pre>private&nbsp;long <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.MutationBatchOperation.html#line.3288">nonce</a></pre>
 </li>
 </ul>
 </li>
@@ -368,7 +368,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegion.Bat
 <ul class="blockListLast">
 <li class="blockList">
 <h4>MutationBatchOperation</h4>
-<pre>public&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.MutationBatchOperation.html#line.3290">MutationBatchOperation</a>(<a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegion.html" title="class in org.apache.hadoop.hbase.regionserver">HRegion</a>&nbsp;region,
+<pre>public&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.MutationBatchOperation.html#line.3289">MutationBatchOperation</a>(<a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegion.html" title="class in org.apache.hadoop.hbase.regionserver">HRegion</a>&nbsp;region,
                               <a href="../../../../../org/apache/hadoop/hbase/client/Mutation.html" title="class in org.apache.hadoop.hbase.client">Mutation</a>[]&nbsp;operations,
                               boolean&nbsp;atomic,
                               long&nbsp;nonceGroup,
@@ -389,7 +389,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegion.Bat
 <ul class="blockList">
 <li class="blockList">
 <h4>getMutation</h4>
-<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/Mutation.html" title="class in org.apache.hadoop.hbase.client">Mutation</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.MutationBatchOperation.html#line.3299">getMutation</a>(int&nbsp;index)</pre>
+<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/Mutation.html" title="class in org.apache.hadoop.hbase.client">Mutation</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.MutationBatchOperation.html#line.3298">getMutation</a>(int&nbsp;index)</pre>
 <dl>
 <dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
 <dd><code><a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegion.BatchOperation.html#getMutation-int-">getMutation</a></code>&nbsp;in class&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegion.BatchOperation.html" title="class in org.apache.hadoop.hbase.regionserver">HRegion.BatchOperation</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/client/Mutation.html" title="class in org.apache.hadoop.hbase.client">Mutation</a>&gt;</code></dd>
@@ -402,7 +402,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegion.Bat
 <ul class="blockList">
 <li class="blockList">
 <h4>getNonceGroup</h4>
-<pre>public&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.MutationBatchOperation.html#line.3304">getNonceGroup</a>(int&nbsp;index)</pre>
+<pre>public&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.MutationBatchOperation.html#line.3303">getNonceGroup</a>(int&nbsp;index)</pre>
 <dl>
 <dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
 <dd><code><a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegion.BatchOperation.html#getNonceGroup-int-">getNonceGroup</a></code>&nbsp;in class&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegion.BatchOperation.html" title="class in org.apache.hadoop.hbase.regionserver">HRegion.BatchOperation</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/client/Mutation.html" title="class in org.apache.hadoop.hbase.client">Mutation</a>&gt;</code></dd>
@@ -415,7 +415,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegion.Bat
 <ul class="blockList">
 <li class="blockList">
 <h4>getNonce</h4>
-<pre>public&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.MutationBatchOperation.html#line.3309">getNonce</a>(int&nbsp;index)</pre>
+<pre>public&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.MutationBatchOperation.html#line.3308">getNonce</a>(int&nbsp;index)</pre>
 <dl>
 <dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
 <dd><code><a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegion.BatchOperation.html#getNonce-int-">getNonce</a></code>&nbsp;in class&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegion.BatchOperation.html" title="class in org.apache.hadoop.hbase.regionserver">HRegion.BatchOperation</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/client/Mutation.html" title="class in org.apache.hadoop.hbase.client">Mutation</a>&gt;</code></dd>
@@ -428,7 +428,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegion.Bat
 <ul class="blockList">
 <li class="blockList">
 <h4>getMutationsForCoprocs</h4>
-<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/Mutation.html" title="class in org.apache.hadoop.hbase.client">Mutation</a>[]&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.MutationBatchOperation.html#line.3314">getMutationsForCoprocs</a>()</pre>
+<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/Mutation.html" title="class in org.apache.hadoop.hbase.client">Mutation</a>[]&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.MutationBatchOperation.html#line.3313">getMutationsForCoprocs</a>()</pre>
 <div class="block"><span class="descfrmTypeLabel">Description copied from class:&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegion.BatchOperation.html#getMutationsForCoprocs--">HRegion.BatchOperation</a></code></span></div>
 <div class="block">This method is potentially expensive and useful mostly for non-replay CP path.</div>
 <dl>
@@ -443,7 +443,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegion.Bat
 <ul class="blockList">
 <li class="blockList">
 <h4>isInReplay</h4>
-<pre>public&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.MutationBatchOperation.html#line.3319">isInReplay</a>()</pre>
+<pre>public&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.MutationBatchOperation.html#line.3318">isInReplay</a>()</pre>
 <dl>
 <dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
 <dd><code><a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegion.BatchOperation.html#isInReplay--">isInReplay</a></code>&nbsp;in class&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegion.BatchOperation.html" title="class in org.apache.hadoop.hbase.regionserver">HRegion.BatchOperation</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/client/Mutation.html" title="class in org.apache.hadoop.hbase.client">Mutation</a>&gt;</code></dd>
@@ -456,7 +456,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegion.Bat
 <ul class="blockList">
 <li class="blockList">
 <h4>getOrigLogSeqNum</h4>
-<pre>public&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.MutationBatchOperation.html#line.3324">getOrigLogSeqNum</a>()</pre>
+<pre>public&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.MutationBatchOperation.html#line.3323">getOrigLogSeqNum</a>()</pre>
 <dl>
 <dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
 <dd><code><a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegion.BatchOperation.html#getOrigLogSeqNum--">getOrigLogSeqNum</a></code>&nbsp;in class&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegion.BatchOperation.html" title="class in org.apache.hadoop.hbase.regionserver">HRegion.BatchOperation</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/client/Mutation.html" title="class in org.apache.hadoop.hbase.client">Mutation</a>&gt;</code></dd>
@@ -469,7 +469,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegion.Bat
 <ul class="blockList">
 <li class="blockList">
 <h4>startRegionOperation</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.MutationBatchOperation.html#line.3329">startRegionOperation</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.MutationBatchOperation.html#line.3328">startRegionOperation</a>()
                           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>
 <dl>
 <dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
@@ -485,7 +485,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegion.Bat
 <ul class="blockList">
 <li class="blockList">
 <h4>closeRegionOperation</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.MutationBatchOperation.html#line.3334">closeRegionOperation</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.MutationBatchOperation.html#line.3333">closeRegionOperation</a>()
                           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>
 <dl>
 <dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
@@ -501,7 +501,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegion.Bat
 <ul class="blockList">
 <li class="blockList">
 <h4>checkAndPreparePut</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.MutationBatchOperation.html#line.3339">checkAndPreparePut</a>(<a href="../../../../../org/apache/hadoop/hbase/client/Put.html" title="class in org.apache.hadoop.hbase.client">Put</a>&nbsp;p)
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.MutationBatchOperation.html#line.3338">checkAndPreparePut</a>(<a href="../../../../../org/apache/hadoop/hbase/client/Put.html" title="class in org.apache.hadoop.hbase.client">Put</a>&nbsp;p)
                         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="descfrmTypeLabel">Description copied from class:&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegion.BatchOperation.html#checkAndPreparePut-org.apache.hadoop.hbase.client.Put-">HRegion.BatchOperation</a></code></span></div>
 <div class="block">Implement any Put request specific check and prepare logic here. Please refer to
@@ -520,7 +520,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegion.Bat
 <ul class="blockList">
 <li class="blockList">
 <h4>checkAndPrepare</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.MutationBatchOperation.html#line.3344">checkAndPrepare</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.MutationBatchOperation.html#line.3343">checkAndPrepare</a>()
                      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="descfrmTypeLabel">Description copied from class:&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegion.BatchOperation.html#checkAndPrepare--">HRegion.BatchOperation</a></code></span></div>
 <div class="block">Validates each mutation and prepares a batch for write. If necessary (non-replay case), runs
@@ -542,7 +542,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegion.Bat
 <ul class="blockList">
 <li class="blockList">
 <h4>prepareMiniBatchOperations</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.MutationBatchOperation.html#line.3389">prepareMiniBatchOperations</a>(<a href="../../../../../org/apache/hadoop/hbase/regionserver/MiniBatchOperationInProgress.html" title="class in org.apache.hadoop.hbase.regionserver">MiniBatchOperationInProgress</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/client/Mutation.html" title="class in org.apache.hadoop.hbase.client">Mutation</a>&gt;&nbsp;miniBatchOp,
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.MutationBatchOperation.html#line.3388">prepareMiniBatchOperations</a>(<a href="../../../../../org/apache/hadoop/hbase/regionserver/MiniBatchOperationInProgress.html" title="class in org.apache.hadoop.hbase.regionserver">MiniBatchOperationInProgress</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/client/Mutation.html" title="class in org.apache.hadoop.hbase.client">Mutation</a>&gt;&nbsp;miniBatchOp,
                                        long&nbsp;timestamp,
                                        <a href="http://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/regionserver/Region.RowLock.html" title="interface in org.apache.hadoop.hbase.regionserver">Region.RowLock</a>&gt;&nbsp;acquiredRowLocks)
                                 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>
@@ -563,7 +563,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegion.Bat
 <ul class="blockList">
 <li class="blockList">
 <h4>buildWALEdits</h4>
-<pre>public&nbsp;<a href="http://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/util/Pair.html" title="class in org.apache.hadoop.hbase.util">Pair</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/util/NonceKey.html" title="class in org.apache.hadoop.hbase.util">NonceKey</a>,<a href="../../../../../org/apache/hadoop/hbase/wal/WALEdit.html" title="class in org.apache.hadoop.hbase.wal">WALEdit</a>&gt;&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.MutationBatchOperation.html#line.3425">buildWALEdits</a>(<a href="../../../../../org/apache/hadoop/hbase/regionserver/MiniBatchOperationInProgress.html" title="class in org.apache.hadoop.hbase.regionserver">MiniBatchOperationInProgress</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/client/Mutation.html" title="class in org.apache.hadoop.hbase.client">Mutation</a>&gt;
 &nbsp;miniBatchOp)
+<pre>public&nbsp;<a href="http://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/util/Pair.html" title="class in org.apache.hadoop.hbase.util">Pair</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/util/NonceKey.html" title="class in org.apache.hadoop.hbase.util">NonceKey</a>,<a href="../../../../../org/apache/hadoop/hbase/wal/WALEdit.html" title="class in org.apache.hadoop.hbase.wal">WALEdit</a>&gt;&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.MutationBatchOperation.html#line.3424">buildWALEdits</a>(<a href="../../../../../org/apache/hadoop/hbase/regionserver/MiniBatchOperationInProgress.html" title="class in org.apache.hadoop.hbase.regionserver">MiniBatchOperationInProgress</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/client/Mutation.html" title="class in org.apache.hadoop.hbase.client">Mutation</a>&gt;
 &nbsp;miniBatchOp)
                                            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="descfrmTypeLabel">Description copied from class:&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegion.BatchOperation.html#buildWALEdits-org.apache.hadoop.hbase.regionserver.MiniBatchOperationInProgress-">HRegion.BatchOperation</a></code></span></div>
 <div class="block">Builds separate WALEdit per nonce by applying input mutations. If WALEdits from CP are
@@ -582,7 +582,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegion.Bat
 <ul class="blockList">
 <li class="blockList">
 <h4>writeMiniBatchOperationsToMemStore</h4>
-<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/regionserver/MultiVersionConcurrencyControl.WriteEntry.html" title="class in org.apache.hadoop.hbase.regionserver">MultiVersionConcurrencyControl.WriteEntry</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.MutationBatchOperation.html#line.3436">writeMiniBatchOperationsToMemStore</a>(<a href="../../../../../org/apache/hadoop/hbase/regionserver/MiniBatchOperationInProgress.html" title="class in org.apache.hadoop.hbase.regionserver">MiniBatchOperationInProgress</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/client/Mutation.html" title="class in org.apache.hadoop.hbase.client">Mutation</a>&gt;&nbsp;miniBatchOp,
+<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/regionserver/MultiVersionConcurrencyControl.WriteEntry.html" title="class in org.apache.hadoop.hbase.regionserver">MultiVersionConcurrencyControl.WriteEntry</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.MutationBatchOperation.html#line.3435">writeMiniBatchOperationsToMemStore</a>(<a href="../../../../../org/apache/hadoop/hbase/regionserver/MiniBatchOperationInProgress.html" title="class in org.apache.hadoop.hbase.regionserver">MiniBatchOperationInProgress</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/client/Mutation.html" title="class in org.apache.hadoop.hbase.client">Mutation</a>&gt;&nbsp;miniBatchOp,
                                                                                     @Nullable
                                                                                     <a href="../../../../../org/apache/hadoop/hbase/regionserver/MultiVersionConcurrencyControl.WriteEntry.html" title="class in org.apache.hadoop.hbase.regionserver">MultiVersionConcurrencyControl.WriteEntry</a>&nbsp;writeEntry)
                                                                              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>
@@ -602,7 +602,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegion.Bat
 <ul class="blockList">
 <li class="blockList">
 <h4>completeMiniBatchOperations</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.MutationBatchOperation.html#line.3447">completeMiniBatchOperations</a>(<a href="../../../../../org/apache/hadoop/hbase/regionserver/MiniBatchOperationInProgress.html" title="class in org.apache.hadoop.hbase.regionserver">MiniBatchOperationInProgress</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/client/Mutation.html" title="class in org.apache.hadoop.hbase.client">Mutation</a>&gt;&nbsp;miniBatchOp,
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.MutationBatchOperation.html#line.3446">completeMiniBatchOperations</a>(<a href="../../../../../org/apache/hadoop/hbase/regionserver/MiniBatchOperationInProgress.html" title="class in org.apache.hadoop.hbase.regionserver">MiniBatchOperationInProgress</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/client/Mutation.html" title="class in org.apache.hadoop.hbase.client">Mutation</a>&gt;&nbsp;miniBatchOp,
                                         <a href="../../../../../org/apache/hadoop/hbase/regionserver/MultiVersionConcurrencyControl.WriteEntry.html" title="class in org.apache.hadoop.hbase.regionserver">MultiVersionConcurrencyControl.WriteEntry</a>&nbsp;writeEntry)
                                  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="descfrmTypeLabel">Description copied from class:&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegion.BatchOperation.html#completeMiniBatchOperations-org.apache.hadoop.hbase.regionserver.MiniBatchOperationInProgress-org.apache.hadoop.hbase.regionserver.MultiVersionConcurrencyControl.WriteEntry-">HRegion.BatchOperation</a></code></span></div>
@@ -622,7 +622,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegion.Bat
 <ul class="blockList">
 <li class="blockList">
 <h4>doPostOpCleanupForMiniBatch</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.MutationBatchOperation.html#line.3459">doPostOpCleanupForMiniBatch</a>(<a href="../../../../../org/apache/hadoop/hbase/regionserver/MiniBatchOperationInProgress.html" title="class in org.apache.hadoop.hbase.regionserver">MiniBatchOperationInProgress</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/client/Mutation.html" title="class in org.apache.hadoop.hbase.client">Mutation</a>&gt;&nbsp;miniBatchOp,
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.MutationBatchOperation.html#line.3458">doPostOpCleanupForMiniBatch</a>(<a href="../../../../../org/apache/hadoop/hbase/regionserver/MiniBatchOperationInProgress.html" title="class in org.apache.hadoop.hbase.regionserver">MiniBatchOperationInProgress</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/client/Mutation.html" title="class in org.apache.hadoop.hbase.client">Mutation</a>&gt;&nbsp;miniBatchOp,
                                         <a href="../../../../../org/apache/hadoop/hbase/wal/WALEdit.html" title="class in org.apache.hadoop.hbase.wal">WALEdit</a>&nbsp;walEdit,
                                         boolean&nbsp;success)
                                  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>
@@ -640,7 +640,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegion.Bat
 <ul class="blockList">
 <li class="blockList">
 <h4>callPreMutateCPHook</h4>
-<pre>private&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.MutationBatchOperation.html#line.3506">callPreMutateCPHook</a>(int&nbsp;index,
+<pre>private&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.MutationBatchOperation.html#line.3505">callPreMutateCPHook</a>(int&nbsp;index,
                                  <a href="../../../../../org/apache/hadoop/hbase/wal/WALEdit.html" title="class in org.apache.hadoop.hbase.wal">WALEdit</a>&nbsp;walEdit,
                                  int[]&nbsp;metrics)
                           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>
@@ -659,7 +659,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegion.Bat
 <ul class="blockList">
 <li class="blockList">
 <h4>checkAndMergeCPMutations</h4>
-<pre>private&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.MutationBatchOperation.html#line.3543">checkAndMergeCPMutations</a>(<a href="../../../../../org/apache/hadoop/hbase/regionserver/MiniBatchOperationInProgress.html" title="class in org.apache.hadoop.hbase.regionserver">MiniBatchOperationInProgress</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/client/Mutation.html" title="class in org.apache.hadoop.hbase.client">Mutation</a>&gt;&nbsp;miniBatchOp,
+<pre>private&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.MutationBatchOperation.html#line.3542">checkAndMergeCPMutations</a>(<a href="../../../../../org/apache/hadoop/hbase/regionserver/MiniBatchOperationInProgress.html" title="class in org.apache.hadoop.hbase.regionserver">MiniBatchOperationInProgress</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/client/Mutation.html" title="class in org.apache.hadoop.hbase.client">Mutation</a>&gt;&nbsp;miniBatchOp,
                                       <a href="http://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/regionserver/Region.RowLock.html" title="interface in org.apache.hadoop.hbase.regionserver">Region.RowLock</a>&gt;&nbsp;acquiredRowLocks,
                                       long&nbsp;timestamp)
                                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>
@@ -675,7 +675,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegion.Bat
 <ul class="blockListLast">
 <li class="blockList">
 <h4>mergeFamilyMaps</h4>
-<pre>private&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.MutationBatchOperation.html#line.3578">mergeFamilyMaps</a>(<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;byte[],<a href="http://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&gt;&gt;&nbsp;familyMap,
+<pre>private&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegion.MutationBatchOperation.html#line.3577">mergeFamilyMaps</a>(<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;byte[],<a href="http://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&gt;&gt;&nbsp;familyMap,
                              <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;byte[],<a href="http://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&gt;&gt;&nbsp;toBeMerged)</pre>
 </li>
 </ul>


[24/51] [partial] hbase-site git commit: Published site at .

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/c54c242b/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/HRegion.ObservedExceptionsInBatch.html
----------------------------------------------------------------------
diff --git a/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/HRegion.ObservedExceptionsInBatch.html b/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/HRegion.ObservedExceptionsInBatch.html
index 3edfbef..9707b2c 100644
--- a/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/HRegion.ObservedExceptionsInBatch.html
+++ b/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/HRegion.ObservedExceptionsInBatch.html
@@ -2459,5936 +2459,5935 @@
 <span class="sourceLineNo">2451</span>      }<a name="line.2451"></a>
 <span class="sourceLineNo">2452</span><a name="line.2452"></a>
 <span class="sourceLineNo">2453</span>      for (HStore s : storesToFlush) {<a name="line.2453"></a>
-<span class="sourceLineNo">2454</span>        MemStoreSize flushableSize = s.getFlushableSize();<a name="line.2454"></a>
-<span class="sourceLineNo">2455</span>        totalSizeOfFlushableStores.incMemStoreSize(flushableSize);<a name="line.2455"></a>
-<span class="sourceLineNo">2456</span>        storeFlushCtxs.put(s.getColumnFamilyDescriptor().getName(),<a name="line.2456"></a>
-<span class="sourceLineNo">2457</span>          s.createFlushContext(flushOpSeqId, tracker));<a name="line.2457"></a>
-<span class="sourceLineNo">2458</span>        // for writing stores to WAL<a name="line.2458"></a>
-<span class="sourceLineNo">2459</span>        committedFiles.put(s.getColumnFamilyDescriptor().getName(), null);<a name="line.2459"></a>
-<span class="sourceLineNo">2460</span>        storeFlushableSize.put(s.getColumnFamilyDescriptor().getName(), flushableSize);<a name="line.2460"></a>
-<span class="sourceLineNo">2461</span>      }<a name="line.2461"></a>
-<span class="sourceLineNo">2462</span><a name="line.2462"></a>
-<span class="sourceLineNo">2463</span>      // write the snapshot start to WAL<a name="line.2463"></a>
-<span class="sourceLineNo">2464</span>      if (wal != null &amp;&amp; !writestate.readOnly) {<a name="line.2464"></a>
-<span class="sourceLineNo">2465</span>        FlushDescriptor desc = ProtobufUtil.toFlushDescriptor(FlushAction.START_FLUSH,<a name="line.2465"></a>
-<span class="sourceLineNo">2466</span>            getRegionInfo(), flushOpSeqId, committedFiles);<a name="line.2466"></a>
-<span class="sourceLineNo">2467</span>        // No sync. Sync is below where no updates lock and we do FlushAction.COMMIT_FLUSH<a name="line.2467"></a>
-<span class="sourceLineNo">2468</span>        WALUtil.writeFlushMarker(wal, this.getReplicationScope(), getRegionInfo(), desc, false,<a name="line.2468"></a>
-<span class="sourceLineNo">2469</span>            mvcc);<a name="line.2469"></a>
-<span class="sourceLineNo">2470</span>      }<a name="line.2470"></a>
-<span class="sourceLineNo">2471</span><a name="line.2471"></a>
-<span class="sourceLineNo">2472</span>      // Prepare flush (take a snapshot)<a name="line.2472"></a>
-<span class="sourceLineNo">2473</span>      for (StoreFlushContext flush : storeFlushCtxs.values()) {<a name="line.2473"></a>
-<span class="sourceLineNo">2474</span>        flush.prepare();<a name="line.2474"></a>
-<span class="sourceLineNo">2475</span>      }<a name="line.2475"></a>
-<span class="sourceLineNo">2476</span>    } catch (IOException ex) {<a name="line.2476"></a>
-<span class="sourceLineNo">2477</span>      doAbortFlushToWAL(wal, flushOpSeqId, committedFiles);<a name="line.2477"></a>
-<span class="sourceLineNo">2478</span>      throw ex;<a name="line.2478"></a>
-<span class="sourceLineNo">2479</span>    } finally {<a name="line.2479"></a>
-<span class="sourceLineNo">2480</span>      this.updatesLock.writeLock().unlock();<a name="line.2480"></a>
-<span class="sourceLineNo">2481</span>    }<a name="line.2481"></a>
-<span class="sourceLineNo">2482</span>    String s = "Finished memstore snapshotting " + this + ", syncing WAL and waiting on mvcc, " +<a name="line.2482"></a>
-<span class="sourceLineNo">2483</span>        "flushsize=" + totalSizeOfFlushableStores;<a name="line.2483"></a>
-<span class="sourceLineNo">2484</span>    status.setStatus(s);<a name="line.2484"></a>
-<span class="sourceLineNo">2485</span>    doSyncOfUnflushedWALChanges(wal, getRegionInfo());<a name="line.2485"></a>
-<span class="sourceLineNo">2486</span>    return new PrepareFlushResult(storeFlushCtxs, committedFiles, storeFlushableSize, startTime,<a name="line.2486"></a>
-<span class="sourceLineNo">2487</span>        flushOpSeqId, flushedSeqId, totalSizeOfFlushableStores);<a name="line.2487"></a>
-<span class="sourceLineNo">2488</span>  }<a name="line.2488"></a>
-<span class="sourceLineNo">2489</span><a name="line.2489"></a>
-<span class="sourceLineNo">2490</span>  /**<a name="line.2490"></a>
-<span class="sourceLineNo">2491</span>   * Utility method broken out of internalPrepareFlushCache so that method is smaller.<a name="line.2491"></a>
-<span class="sourceLineNo">2492</span>   */<a name="line.2492"></a>
-<span class="sourceLineNo">2493</span>  private void logFatLineOnFlush(Collection&lt;HStore&gt; storesToFlush, long sequenceId) {<a name="line.2493"></a>
-<span class="sourceLineNo">2494</span>    if (!LOG.isInfoEnabled()) {<a name="line.2494"></a>
-<span class="sourceLineNo">2495</span>      return;<a name="line.2495"></a>
-<span class="sourceLineNo">2496</span>    }<a name="line.2496"></a>
-<span class="sourceLineNo">2497</span>    // Log a fat line detailing what is being flushed.<a name="line.2497"></a>
-<span class="sourceLineNo">2498</span>    StringBuilder perCfExtras = null;<a name="line.2498"></a>
-<span class="sourceLineNo">2499</span>    if (!isAllFamilies(storesToFlush)) {<a name="line.2499"></a>
-<span class="sourceLineNo">2500</span>      perCfExtras = new StringBuilder();<a name="line.2500"></a>
-<span class="sourceLineNo">2501</span>      for (HStore store: storesToFlush) {<a name="line.2501"></a>
-<span class="sourceLineNo">2502</span>        perCfExtras.append("; ").append(store.getColumnFamilyName());<a name="line.2502"></a>
-<span class="sourceLineNo">2503</span>        perCfExtras.append("=")<a name="line.2503"></a>
-<span class="sourceLineNo">2504</span>            .append(StringUtils.byteDesc(store.getFlushableSize().getDataSize()));<a name="line.2504"></a>
-<span class="sourceLineNo">2505</span>      }<a name="line.2505"></a>
-<span class="sourceLineNo">2506</span>    }<a name="line.2506"></a>
-<span class="sourceLineNo">2507</span>    LOG.info("Flushing " + + storesToFlush.size() + "/" + stores.size() +<a name="line.2507"></a>
-<span class="sourceLineNo">2508</span>        " column families, memstore=" + StringUtils.byteDesc(this.memstoreDataSize.get()) +<a name="line.2508"></a>
-<span class="sourceLineNo">2509</span>        ((perCfExtras != null &amp;&amp; perCfExtras.length() &gt; 0)? perCfExtras.toString(): "") +<a name="line.2509"></a>
-<span class="sourceLineNo">2510</span>        ((wal != null) ? "" : "; WAL is null, using passed sequenceid=" + sequenceId));<a name="line.2510"></a>
-<span class="sourceLineNo">2511</span>  }<a name="line.2511"></a>
-<span class="sourceLineNo">2512</span><a name="line.2512"></a>
-<span class="sourceLineNo">2513</span>  private void doAbortFlushToWAL(final WAL wal, final long flushOpSeqId,<a name="line.2513"></a>
-<span class="sourceLineNo">2514</span>      final Map&lt;byte[], List&lt;Path&gt;&gt; committedFiles) {<a name="line.2514"></a>
-<span class="sourceLineNo">2515</span>    if (wal == null) return;<a name="line.2515"></a>
-<span class="sourceLineNo">2516</span>    try {<a name="line.2516"></a>
-<span class="sourceLineNo">2517</span>      FlushDescriptor desc = ProtobufUtil.toFlushDescriptor(FlushAction.ABORT_FLUSH,<a name="line.2517"></a>
-<span class="sourceLineNo">2518</span>          getRegionInfo(), flushOpSeqId, committedFiles);<a name="line.2518"></a>
-<span class="sourceLineNo">2519</span>      WALUtil.writeFlushMarker(wal, this.getReplicationScope(), getRegionInfo(), desc, false,<a name="line.2519"></a>
-<span class="sourceLineNo">2520</span>          mvcc);<a name="line.2520"></a>
-<span class="sourceLineNo">2521</span>    } catch (Throwable t) {<a name="line.2521"></a>
-<span class="sourceLineNo">2522</span>      LOG.warn("Received unexpected exception trying to write ABORT_FLUSH marker to WAL:" +<a name="line.2522"></a>
-<span class="sourceLineNo">2523</span>          StringUtils.stringifyException(t));<a name="line.2523"></a>
-<span class="sourceLineNo">2524</span>      // ignore this since we will be aborting the RS with DSE.<a name="line.2524"></a>
-<span class="sourceLineNo">2525</span>    }<a name="line.2525"></a>
-<span class="sourceLineNo">2526</span>    // we have called wal.startCacheFlush(), now we have to abort it<a name="line.2526"></a>
-<span class="sourceLineNo">2527</span>    wal.abortCacheFlush(this.getRegionInfo().getEncodedNameAsBytes());<a name="line.2527"></a>
-<span class="sourceLineNo">2528</span>  }<a name="line.2528"></a>
-<span class="sourceLineNo">2529</span><a name="line.2529"></a>
-<span class="sourceLineNo">2530</span>  /**<a name="line.2530"></a>
-<span class="sourceLineNo">2531</span>   * Sync unflushed WAL changes. See HBASE-8208 for details<a name="line.2531"></a>
-<span class="sourceLineNo">2532</span>   */<a name="line.2532"></a>
-<span class="sourceLineNo">2533</span>  private static void doSyncOfUnflushedWALChanges(final WAL wal, final RegionInfo hri)<a name="line.2533"></a>
-<span class="sourceLineNo">2534</span>  throws IOException {<a name="line.2534"></a>
-<span class="sourceLineNo">2535</span>    if (wal == null) {<a name="line.2535"></a>
-<span class="sourceLineNo">2536</span>      return;<a name="line.2536"></a>
-<span class="sourceLineNo">2537</span>    }<a name="line.2537"></a>
-<span class="sourceLineNo">2538</span>    try {<a name="line.2538"></a>
-<span class="sourceLineNo">2539</span>      wal.sync(); // ensure that flush marker is sync'ed<a name="line.2539"></a>
-<span class="sourceLineNo">2540</span>    } catch (IOException ioe) {<a name="line.2540"></a>
-<span class="sourceLineNo">2541</span>      wal.abortCacheFlush(hri.getEncodedNameAsBytes());<a name="line.2541"></a>
-<span class="sourceLineNo">2542</span>      throw ioe;<a name="line.2542"></a>
-<span class="sourceLineNo">2543</span>    }<a name="line.2543"></a>
-<span class="sourceLineNo">2544</span>  }<a name="line.2544"></a>
-<span class="sourceLineNo">2545</span><a name="line.2545"></a>
-<span class="sourceLineNo">2546</span>  /**<a name="line.2546"></a>
-<span class="sourceLineNo">2547</span>   * @return True if passed Set is all families in the region.<a name="line.2547"></a>
-<span class="sourceLineNo">2548</span>   */<a name="line.2548"></a>
-<span class="sourceLineNo">2549</span>  private boolean isAllFamilies(Collection&lt;HStore&gt; families) {<a name="line.2549"></a>
-<span class="sourceLineNo">2550</span>    return families == null || this.stores.size() == families.size();<a name="line.2550"></a>
-<span class="sourceLineNo">2551</span>  }<a name="line.2551"></a>
-<span class="sourceLineNo">2552</span><a name="line.2552"></a>
-<span class="sourceLineNo">2553</span>  /**<a name="line.2553"></a>
-<span class="sourceLineNo">2554</span>   * Writes a marker to WAL indicating a flush is requested but cannot be complete due to various<a name="line.2554"></a>
-<span class="sourceLineNo">2555</span>   * reasons. Ignores exceptions from WAL. Returns whether the write succeeded.<a name="line.2555"></a>
-<span class="sourceLineNo">2556</span>   * @param wal<a name="line.2556"></a>
-<span class="sourceLineNo">2557</span>   * @return whether WAL write was successful<a name="line.2557"></a>
-<span class="sourceLineNo">2558</span>   */<a name="line.2558"></a>
-<span class="sourceLineNo">2559</span>  private boolean writeFlushRequestMarkerToWAL(WAL wal, boolean writeFlushWalMarker) {<a name="line.2559"></a>
-<span class="sourceLineNo">2560</span>    if (writeFlushWalMarker &amp;&amp; wal != null &amp;&amp; !writestate.readOnly) {<a name="line.2560"></a>
-<span class="sourceLineNo">2561</span>      FlushDescriptor desc = ProtobufUtil.toFlushDescriptor(FlushAction.CANNOT_FLUSH,<a name="line.2561"></a>
-<span class="sourceLineNo">2562</span>        getRegionInfo(), -1, new TreeMap&lt;&gt;(Bytes.BYTES_COMPARATOR));<a name="line.2562"></a>
-<span class="sourceLineNo">2563</span>      try {<a name="line.2563"></a>
-<span class="sourceLineNo">2564</span>        WALUtil.writeFlushMarker(wal, this.getReplicationScope(), getRegionInfo(), desc, true,<a name="line.2564"></a>
-<span class="sourceLineNo">2565</span>            mvcc);<a name="line.2565"></a>
-<span class="sourceLineNo">2566</span>        return true;<a name="line.2566"></a>
-<span class="sourceLineNo">2567</span>      } catch (IOException e) {<a name="line.2567"></a>
-<span class="sourceLineNo">2568</span>        LOG.warn(getRegionInfo().getEncodedName() + " : "<a name="line.2568"></a>
-<span class="sourceLineNo">2569</span>            + "Received exception while trying to write the flush request to wal", e);<a name="line.2569"></a>
-<span class="sourceLineNo">2570</span>      }<a name="line.2570"></a>
-<span class="sourceLineNo">2571</span>    }<a name="line.2571"></a>
-<span class="sourceLineNo">2572</span>    return false;<a name="line.2572"></a>
-<span class="sourceLineNo">2573</span>  }<a name="line.2573"></a>
-<span class="sourceLineNo">2574</span><a name="line.2574"></a>
-<span class="sourceLineNo">2575</span>  @edu.umd.cs.findbugs.annotations.SuppressWarnings(value="NN_NAKED_NOTIFY",<a name="line.2575"></a>
-<span class="sourceLineNo">2576</span>      justification="Intentional; notify is about completed flush")<a name="line.2576"></a>
-<span class="sourceLineNo">2577</span>  protected FlushResultImpl internalFlushCacheAndCommit(WAL wal, MonitoredTask status,<a name="line.2577"></a>
-<span class="sourceLineNo">2578</span>      PrepareFlushResult prepareResult, Collection&lt;HStore&gt; storesToFlush) throws IOException {<a name="line.2578"></a>
-<span class="sourceLineNo">2579</span>    // prepare flush context is carried via PrepareFlushResult<a name="line.2579"></a>
-<span class="sourceLineNo">2580</span>    TreeMap&lt;byte[], StoreFlushContext&gt; storeFlushCtxs = prepareResult.storeFlushCtxs;<a name="line.2580"></a>
-<span class="sourceLineNo">2581</span>    TreeMap&lt;byte[], List&lt;Path&gt;&gt; committedFiles = prepareResult.committedFiles;<a name="line.2581"></a>
-<span class="sourceLineNo">2582</span>    long startTime = prepareResult.startTime;<a name="line.2582"></a>
-<span class="sourceLineNo">2583</span>    long flushOpSeqId = prepareResult.flushOpSeqId;<a name="line.2583"></a>
-<span class="sourceLineNo">2584</span>    long flushedSeqId = prepareResult.flushedSeqId;<a name="line.2584"></a>
-<span class="sourceLineNo">2585</span><a name="line.2585"></a>
-<span class="sourceLineNo">2586</span>    String s = "Flushing stores of " + this;<a name="line.2586"></a>
-<span class="sourceLineNo">2587</span>    status.setStatus(s);<a name="line.2587"></a>
-<span class="sourceLineNo">2588</span>    if (LOG.isTraceEnabled()) LOG.trace(s);<a name="line.2588"></a>
-<span class="sourceLineNo">2589</span><a name="line.2589"></a>
-<span class="sourceLineNo">2590</span>    // Any failure from here on out will be catastrophic requiring server<a name="line.2590"></a>
-<span class="sourceLineNo">2591</span>    // restart so wal content can be replayed and put back into the memstore.<a name="line.2591"></a>
-<span class="sourceLineNo">2592</span>    // Otherwise, the snapshot content while backed up in the wal, it will not<a name="line.2592"></a>
-<span class="sourceLineNo">2593</span>    // be part of the current running servers state.<a name="line.2593"></a>
-<span class="sourceLineNo">2594</span>    boolean compactionRequested = false;<a name="line.2594"></a>
-<span class="sourceLineNo">2595</span>    long flushedOutputFileSize = 0;<a name="line.2595"></a>
-<span class="sourceLineNo">2596</span>    try {<a name="line.2596"></a>
-<span class="sourceLineNo">2597</span>      // A.  Flush memstore to all the HStores.<a name="line.2597"></a>
-<span class="sourceLineNo">2598</span>      // Keep running vector of all store files that includes both old and the<a name="line.2598"></a>
-<span class="sourceLineNo">2599</span>      // just-made new flush store file. The new flushed file is still in the<a name="line.2599"></a>
-<span class="sourceLineNo">2600</span>      // tmp directory.<a name="line.2600"></a>
-<span class="sourceLineNo">2601</span><a name="line.2601"></a>
-<span class="sourceLineNo">2602</span>      for (StoreFlushContext flush : storeFlushCtxs.values()) {<a name="line.2602"></a>
-<span class="sourceLineNo">2603</span>        flush.flushCache(status);<a name="line.2603"></a>
-<span class="sourceLineNo">2604</span>      }<a name="line.2604"></a>
-<span class="sourceLineNo">2605</span><a name="line.2605"></a>
-<span class="sourceLineNo">2606</span>      // Switch snapshot (in memstore) -&gt; new hfile (thus causing<a name="line.2606"></a>
-<span class="sourceLineNo">2607</span>      // all the store scanners to reset/reseek).<a name="line.2607"></a>
-<span class="sourceLineNo">2608</span>      Iterator&lt;HStore&gt; it = storesToFlush.iterator();<a name="line.2608"></a>
-<span class="sourceLineNo">2609</span>      // stores.values() and storeFlushCtxs have same order<a name="line.2609"></a>
-<span class="sourceLineNo">2610</span>      for (StoreFlushContext flush : storeFlushCtxs.values()) {<a name="line.2610"></a>
-<span class="sourceLineNo">2611</span>        boolean needsCompaction = flush.commit(status);<a name="line.2611"></a>
-<span class="sourceLineNo">2612</span>        if (needsCompaction) {<a name="line.2612"></a>
-<span class="sourceLineNo">2613</span>          compactionRequested = true;<a name="line.2613"></a>
-<span class="sourceLineNo">2614</span>        }<a name="line.2614"></a>
-<span class="sourceLineNo">2615</span>        byte[] storeName = it.next().getColumnFamilyDescriptor().getName();<a name="line.2615"></a>
-<span class="sourceLineNo">2616</span>        List&lt;Path&gt; storeCommittedFiles = flush.getCommittedFiles();<a name="line.2616"></a>
-<span class="sourceLineNo">2617</span>        committedFiles.put(storeName, storeCommittedFiles);<a name="line.2617"></a>
-<span class="sourceLineNo">2618</span>        // Flush committed no files, indicating flush is empty or flush was canceled<a name="line.2618"></a>
-<span class="sourceLineNo">2619</span>        if (storeCommittedFiles == null || storeCommittedFiles.isEmpty()) {<a name="line.2619"></a>
-<span class="sourceLineNo">2620</span>          MemStoreSize storeFlushableSize = prepareResult.storeFlushableSize.get(storeName);<a name="line.2620"></a>
-<span class="sourceLineNo">2621</span>          prepareResult.totalFlushableSize.decMemStoreSize(storeFlushableSize);<a name="line.2621"></a>
-<span class="sourceLineNo">2622</span>        }<a name="line.2622"></a>
-<span class="sourceLineNo">2623</span>        flushedOutputFileSize += flush.getOutputFileSize();<a name="line.2623"></a>
-<span class="sourceLineNo">2624</span>      }<a name="line.2624"></a>
-<span class="sourceLineNo">2625</span>      storeFlushCtxs.clear();<a name="line.2625"></a>
-<span class="sourceLineNo">2626</span><a name="line.2626"></a>
-<span class="sourceLineNo">2627</span>      // Set down the memstore size by amount of flush.<a name="line.2627"></a>
-<span class="sourceLineNo">2628</span>      this.decrMemStoreSize(prepareResult.totalFlushableSize);<a name="line.2628"></a>
-<span class="sourceLineNo">2629</span><a name="line.2629"></a>
-<span class="sourceLineNo">2630</span>      if (wal != null) {<a name="line.2630"></a>
-<span class="sourceLineNo">2631</span>        // write flush marker to WAL. If fail, we should throw DroppedSnapshotException<a name="line.2631"></a>
-<span class="sourceLineNo">2632</span>        FlushDescriptor desc = ProtobufUtil.toFlushDescriptor(FlushAction.COMMIT_FLUSH,<a name="line.2632"></a>
-<span class="sourceLineNo">2633</span>          getRegionInfo(), flushOpSeqId, committedFiles);<a name="line.2633"></a>
-<span class="sourceLineNo">2634</span>        WALUtil.writeFlushMarker(wal, this.getReplicationScope(), getRegionInfo(), desc, true,<a name="line.2634"></a>
-<span class="sourceLineNo">2635</span>            mvcc);<a name="line.2635"></a>
-<span class="sourceLineNo">2636</span>      }<a name="line.2636"></a>
-<span class="sourceLineNo">2637</span>    } catch (Throwable t) {<a name="line.2637"></a>
-<span class="sourceLineNo">2638</span>      // An exception here means that the snapshot was not persisted.<a name="line.2638"></a>
-<span class="sourceLineNo">2639</span>      // The wal needs to be replayed so its content is restored to memstore.<a name="line.2639"></a>
-<span class="sourceLineNo">2640</span>      // Currently, only a server restart will do this.<a name="line.2640"></a>
-<span class="sourceLineNo">2641</span>      // We used to only catch IOEs but its possible that we'd get other<a name="line.2641"></a>
-<span class="sourceLineNo">2642</span>      // exceptions -- e.g. HBASE-659 was about an NPE -- so now we catch<a name="line.2642"></a>
-<span class="sourceLineNo">2643</span>      // all and sundry.<a name="line.2643"></a>
-<span class="sourceLineNo">2644</span>      if (wal != null) {<a name="line.2644"></a>
-<span class="sourceLineNo">2645</span>        try {<a name="line.2645"></a>
-<span class="sourceLineNo">2646</span>          FlushDescriptor desc = ProtobufUtil.toFlushDescriptor(FlushAction.ABORT_FLUSH,<a name="line.2646"></a>
-<span class="sourceLineNo">2647</span>            getRegionInfo(), flushOpSeqId, committedFiles);<a name="line.2647"></a>
-<span class="sourceLineNo">2648</span>          WALUtil.writeFlushMarker(wal, this.replicationScope, getRegionInfo(), desc, false, mvcc);<a name="line.2648"></a>
-<span class="sourceLineNo">2649</span>        } catch (Throwable ex) {<a name="line.2649"></a>
-<span class="sourceLineNo">2650</span>          LOG.warn(getRegionInfo().getEncodedName() + " : "<a name="line.2650"></a>
-<span class="sourceLineNo">2651</span>              + "failed writing ABORT_FLUSH marker to WAL", ex);<a name="line.2651"></a>
-<span class="sourceLineNo">2652</span>          // ignore this since we will be aborting the RS with DSE.<a name="line.2652"></a>
-<span class="sourceLineNo">2653</span>        }<a name="line.2653"></a>
-<span class="sourceLineNo">2654</span>        wal.abortCacheFlush(this.getRegionInfo().getEncodedNameAsBytes());<a name="line.2654"></a>
-<span class="sourceLineNo">2655</span>      }<a name="line.2655"></a>
-<span class="sourceLineNo">2656</span>      DroppedSnapshotException dse = new DroppedSnapshotException("region: " +<a name="line.2656"></a>
-<span class="sourceLineNo">2657</span>          Bytes.toStringBinary(getRegionInfo().getRegionName()));<a name="line.2657"></a>
-<span class="sourceLineNo">2658</span>      dse.initCause(t);<a name="line.2658"></a>
-<span class="sourceLineNo">2659</span>      status.abort("Flush failed: " + StringUtils.stringifyException(t));<a name="line.2659"></a>
-<span class="sourceLineNo">2660</span><a name="line.2660"></a>
-<span class="sourceLineNo">2661</span>      // Callers for flushcache() should catch DroppedSnapshotException and abort the region server.<a name="line.2661"></a>
-<span class="sourceLineNo">2662</span>      // However, since we may have the region read lock, we cannot call close(true) here since<a name="line.2662"></a>
-<span class="sourceLineNo">2663</span>      // we cannot promote to a write lock. Instead we are setting closing so that all other region<a name="line.2663"></a>
-<span class="sourceLineNo">2664</span>      // operations except for close will be rejected.<a name="line.2664"></a>
-<span class="sourceLineNo">2665</span>      this.closing.set(true);<a name="line.2665"></a>
-<span class="sourceLineNo">2666</span><a name="line.2666"></a>
-<span class="sourceLineNo">2667</span>      if (rsServices != null) {<a name="line.2667"></a>
-<span class="sourceLineNo">2668</span>        // This is a safeguard against the case where the caller fails to explicitly handle aborting<a name="line.2668"></a>
-<span class="sourceLineNo">2669</span>        rsServices.abort("Replay of WAL required. Forcing server shutdown", dse);<a name="line.2669"></a>
-<span class="sourceLineNo">2670</span>      }<a name="line.2670"></a>
-<span class="sourceLineNo">2671</span><a name="line.2671"></a>
-<span class="sourceLineNo">2672</span>      throw dse;<a name="line.2672"></a>
-<span class="sourceLineNo">2673</span>    }<a name="line.2673"></a>
-<span class="sourceLineNo">2674</span><a name="line.2674"></a>
-<span class="sourceLineNo">2675</span>    // If we get to here, the HStores have been written.<a name="line.2675"></a>
-<span class="sourceLineNo">2676</span>    if (wal != null) {<a name="line.2676"></a>
-<span class="sourceLineNo">2677</span>      wal.completeCacheFlush(this.getRegionInfo().getEncodedNameAsBytes());<a name="line.2677"></a>
-<span class="sourceLineNo">2678</span>    }<a name="line.2678"></a>
-<span class="sourceLineNo">2679</span><a name="line.2679"></a>
-<span class="sourceLineNo">2680</span>    // Record latest flush time<a name="line.2680"></a>
-<span class="sourceLineNo">2681</span>    for (HStore store: storesToFlush) {<a name="line.2681"></a>
-<span class="sourceLineNo">2682</span>      this.lastStoreFlushTimeMap.put(store, startTime);<a name="line.2682"></a>
-<span class="sourceLineNo">2683</span>    }<a name="line.2683"></a>
-<span class="sourceLineNo">2684</span><a name="line.2684"></a>
-<span class="sourceLineNo">2685</span>    this.maxFlushedSeqId = flushedSeqId;<a name="line.2685"></a>
-<span class="sourceLineNo">2686</span>    this.lastFlushOpSeqId = flushOpSeqId;<a name="line.2686"></a>
-<span class="sourceLineNo">2687</span><a name="line.2687"></a>
-<span class="sourceLineNo">2688</span>    // C. Finally notify anyone waiting on memstore to clear:<a name="line.2688"></a>
-<span class="sourceLineNo">2689</span>    // e.g. checkResources().<a name="line.2689"></a>
-<span class="sourceLineNo">2690</span>    synchronized (this) {<a name="line.2690"></a>
-<span class="sourceLineNo">2691</span>      notifyAll(); // FindBugs NN_NAKED_NOTIFY<a name="line.2691"></a>
-<span class="sourceLineNo">2692</span>    }<a name="line.2692"></a>
-<span class="sourceLineNo">2693</span><a name="line.2693"></a>
-<span class="sourceLineNo">2694</span>    long time = EnvironmentEdgeManager.currentTime() - startTime;<a name="line.2694"></a>
-<span class="sourceLineNo">2695</span>    long memstoresize = this.memstoreDataSize.get();<a name="line.2695"></a>
-<span class="sourceLineNo">2696</span>    String msg = "Finished memstore flush of ~"<a name="line.2696"></a>
-<span class="sourceLineNo">2697</span>        + StringUtils.byteDesc(prepareResult.totalFlushableSize.getDataSize()) + "/"<a name="line.2697"></a>
-<span class="sourceLineNo">2698</span>        + prepareResult.totalFlushableSize.getDataSize() + ", currentsize="<a name="line.2698"></a>
-<span class="sourceLineNo">2699</span>        + StringUtils.byteDesc(memstoresize) + "/" + memstoresize<a name="line.2699"></a>
-<span class="sourceLineNo">2700</span>        + " for region " + this + " in " + time + "ms, sequenceid="<a name="line.2700"></a>
-<span class="sourceLineNo">2701</span>        + flushOpSeqId +  ", compaction requested=" + compactionRequested<a name="line.2701"></a>
-<span class="sourceLineNo">2702</span>        + ((wal == null) ? "; wal=null" : "");<a name="line.2702"></a>
-<span class="sourceLineNo">2703</span>    LOG.info(msg);<a name="line.2703"></a>
-<span class="sourceLineNo">2704</span>    status.setStatus(msg);<a name="line.2704"></a>
-<span class="sourceLineNo">2705</span><a name="line.2705"></a>
-<span class="sourceLineNo">2706</span>    if (rsServices != null &amp;&amp; rsServices.getMetrics() != null) {<a name="line.2706"></a>
-<span class="sourceLineNo">2707</span>      rsServices.getMetrics().updateFlush(time - startTime,<a name="line.2707"></a>
-<span class="sourceLineNo">2708</span>          prepareResult.totalFlushableSize.getDataSize(), flushedOutputFileSize);<a name="line.2708"></a>
-<span class="sourceLineNo">2709</span>    }<a name="line.2709"></a>
-<span class="sourceLineNo">2710</span><a name="line.2710"></a>
-<span class="sourceLineNo">2711</span>    return new FlushResultImpl(compactionRequested ?<a name="line.2711"></a>
-<span class="sourceLineNo">2712</span>        FlushResult.Result.FLUSHED_COMPACTION_NEEDED :<a name="line.2712"></a>
-<span class="sourceLineNo">2713</span>          FlushResult.Result.FLUSHED_NO_COMPACTION_NEEDED, flushOpSeqId);<a name="line.2713"></a>
-<span class="sourceLineNo">2714</span>  }<a name="line.2714"></a>
-<span class="sourceLineNo">2715</span><a name="line.2715"></a>
-<span class="sourceLineNo">2716</span>  /**<a name="line.2716"></a>
-<span class="sourceLineNo">2717</span>   * Method to safely get the next sequence number.<a name="line.2717"></a>
-<span class="sourceLineNo">2718</span>   * @return Next sequence number unassociated with any actual edit.<a name="line.2718"></a>
-<span class="sourceLineNo">2719</span>   * @throws IOException<a name="line.2719"></a>
-<span class="sourceLineNo">2720</span>   */<a name="line.2720"></a>
-<span class="sourceLineNo">2721</span>  @VisibleForTesting<a name="line.2721"></a>
-<span class="sourceLineNo">2722</span>  protected long getNextSequenceId(final WAL wal) throws IOException {<a name="line.2722"></a>
-<span class="sourceLineNo">2723</span>    WriteEntry we = mvcc.begin();<a name="line.2723"></a>
-<span class="sourceLineNo">2724</span>    mvcc.completeAndWait(we);<a name="line.2724"></a>
-<span class="sourceLineNo">2725</span>    return we.getWriteNumber();<a name="line.2725"></a>
-<span class="sourceLineNo">2726</span>  }<a name="line.2726"></a>
-<span class="sourceLineNo">2727</span><a name="line.2727"></a>
-<span class="sourceLineNo">2728</span>  //////////////////////////////////////////////////////////////////////////////<a name="line.2728"></a>
-<span class="sourceLineNo">2729</span>  // get() methods for client use.<a name="line.2729"></a>
-<span class="sourceLineNo">2730</span>  //////////////////////////////////////////////////////////////////////////////<a name="line.2730"></a>
-<span class="sourceLineNo">2731</span><a name="line.2731"></a>
-<span class="sourceLineNo">2732</span>  @Override<a name="line.2732"></a>
-<span class="sourceLineNo">2733</span>  public RegionScannerImpl getScanner(Scan scan) throws IOException {<a name="line.2733"></a>
-<span class="sourceLineNo">2734</span>   return getScanner(scan, null);<a name="line.2734"></a>
-<span class="sourceLineNo">2735</span>  }<a name="line.2735"></a>
-<span class="sourceLineNo">2736</span><a name="line.2736"></a>
-<span class="sourceLineNo">2737</span>  @Override<a name="line.2737"></a>
-<span class="sourceLineNo">2738</span>  public RegionScannerImpl getScanner(Scan scan, List&lt;KeyValueScanner&gt; additionalScanners)<a name="line.2738"></a>
-<span class="sourceLineNo">2739</span>      throws IOException {<a name="line.2739"></a>
-<span class="sourceLineNo">2740</span>    return getScanner(scan, additionalScanners, HConstants.NO_NONCE, HConstants.NO_NONCE);<a name="line.2740"></a>
-<span class="sourceLineNo">2741</span>  }<a name="line.2741"></a>
-<span class="sourceLineNo">2742</span><a name="line.2742"></a>
-<span class="sourceLineNo">2743</span>  private RegionScannerImpl getScanner(Scan scan, List&lt;KeyValueScanner&gt; additionalScanners,<a name="line.2743"></a>
-<span class="sourceLineNo">2744</span>      long nonceGroup, long nonce) throws IOException {<a name="line.2744"></a>
-<span class="sourceLineNo">2745</span>    startRegionOperation(Operation.SCAN);<a name="line.2745"></a>
-<span class="sourceLineNo">2746</span>    try {<a name="line.2746"></a>
-<span class="sourceLineNo">2747</span>      // Verify families are all valid<a name="line.2747"></a>
-<span class="sourceLineNo">2748</span>      if (!scan.hasFamilies()) {<a name="line.2748"></a>
-<span class="sourceLineNo">2749</span>        // Adding all families to scanner<a name="line.2749"></a>
-<span class="sourceLineNo">2750</span>        for (byte[] family : this.htableDescriptor.getColumnFamilyNames()) {<a name="line.2750"></a>
-<span class="sourceLineNo">2751</span>          scan.addFamily(family);<a name="line.2751"></a>
-<span class="sourceLineNo">2752</span>        }<a name="line.2752"></a>
-<span class="sourceLineNo">2753</span>      } else {<a name="line.2753"></a>
-<span class="sourceLineNo">2754</span>        for (byte[] family : scan.getFamilyMap().keySet()) {<a name="line.2754"></a>
-<span class="sourceLineNo">2755</span>          checkFamily(family);<a name="line.2755"></a>
-<span class="sourceLineNo">2756</span>        }<a name="line.2756"></a>
-<span class="sourceLineNo">2757</span>      }<a name="line.2757"></a>
-<span class="sourceLineNo">2758</span>      return instantiateRegionScanner(scan, additionalScanners, nonceGroup, nonce);<a name="line.2758"></a>
-<span class="sourceLineNo">2759</span>    } finally {<a name="line.2759"></a>
-<span class="sourceLineNo">2760</span>      closeRegionOperation(Operation.SCAN);<a name="line.2760"></a>
-<span class="sourceLineNo">2761</span>    }<a name="line.2761"></a>
-<span class="sourceLineNo">2762</span>  }<a name="line.2762"></a>
-<span class="sourceLineNo">2763</span><a name="line.2763"></a>
-<span class="sourceLineNo">2764</span>  protected RegionScanner instantiateRegionScanner(Scan scan,<a name="line.2764"></a>
-<span class="sourceLineNo">2765</span>      List&lt;KeyValueScanner&gt; additionalScanners) throws IOException {<a name="line.2765"></a>
-<span class="sourceLineNo">2766</span>    return instantiateRegionScanner(scan, additionalScanners, HConstants.NO_NONCE,<a name="line.2766"></a>
-<span class="sourceLineNo">2767</span>      HConstants.NO_NONCE);<a name="line.2767"></a>
-<span class="sourceLineNo">2768</span>  }<a name="line.2768"></a>
-<span class="sourceLineNo">2769</span><a name="line.2769"></a>
-<span class="sourceLineNo">2770</span>  protected RegionScannerImpl instantiateRegionScanner(Scan scan,<a name="line.2770"></a>
-<span class="sourceLineNo">2771</span>      List&lt;KeyValueScanner&gt; additionalScanners, long nonceGroup, long nonce) throws IOException {<a name="line.2771"></a>
-<span class="sourceLineNo">2772</span>    if (scan.isReversed()) {<a name="line.2772"></a>
-<span class="sourceLineNo">2773</span>      if (scan.getFilter() != null) {<a name="line.2773"></a>
-<span class="sourceLineNo">2774</span>        scan.getFilter().setReversed(true);<a name="line.2774"></a>
-<span class="sourceLineNo">2775</span>      }<a name="line.2775"></a>
-<span class="sourceLineNo">2776</span>      return new ReversedRegionScannerImpl(scan, additionalScanners, this);<a name="line.2776"></a>
-<span class="sourceLineNo">2777</span>    }<a name="line.2777"></a>
-<span class="sourceLineNo">2778</span>    return new RegionScannerImpl(scan, additionalScanners, this, nonceGroup, nonce);<a name="line.2778"></a>
-<span class="sourceLineNo">2779</span>  }<a name="line.2779"></a>
-<span class="sourceLineNo">2780</span><a name="line.2780"></a>
-<span class="sourceLineNo">2781</span>  /**<a name="line.2781"></a>
-<span class="sourceLineNo">2782</span>   * Prepare a delete for a row mutation processor<a name="line.2782"></a>
-<span class="sourceLineNo">2783</span>   * @param delete The passed delete is modified by this method. WARNING!<a name="line.2783"></a>
-<span class="sourceLineNo">2784</span>   * @throws IOException<a name="line.2784"></a>
-<span class="sourceLineNo">2785</span>   */<a name="line.2785"></a>
-<span class="sourceLineNo">2786</span>  public void prepareDelete(Delete delete) throws IOException {<a name="line.2786"></a>
-<span class="sourceLineNo">2787</span>    // Check to see if this is a deleteRow insert<a name="line.2787"></a>
-<span class="sourceLineNo">2788</span>    if(delete.getFamilyCellMap().isEmpty()){<a name="line.2788"></a>
-<span class="sourceLineNo">2789</span>      for(byte [] family : this.htableDescriptor.getColumnFamilyNames()){<a name="line.2789"></a>
-<span class="sourceLineNo">2790</span>        // Don't eat the timestamp<a name="line.2790"></a>
-<span class="sourceLineNo">2791</span>        delete.addFamily(family, delete.getTimeStamp());<a name="line.2791"></a>
-<span class="sourceLineNo">2792</span>      }<a name="line.2792"></a>
-<span class="sourceLineNo">2793</span>    } else {<a name="line.2793"></a>
-<span class="sourceLineNo">2794</span>      for(byte [] family : delete.getFamilyCellMap().keySet()) {<a name="line.2794"></a>
-<span class="sourceLineNo">2795</span>        if(family == null) {<a name="line.2795"></a>
-<span class="sourceLineNo">2796</span>          throw new NoSuchColumnFamilyException("Empty family is invalid");<a name="line.2796"></a>
-<span class="sourceLineNo">2797</span>        }<a name="line.2797"></a>
-<span class="sourceLineNo">2798</span>        checkFamily(family);<a name="line.2798"></a>
-<span class="sourceLineNo">2799</span>      }<a name="line.2799"></a>
-<span class="sourceLineNo">2800</span>    }<a name="line.2800"></a>
-<span class="sourceLineNo">2801</span>  }<a name="line.2801"></a>
-<span class="sourceLineNo">2802</span><a name="line.2802"></a>
-<span class="sourceLineNo">2803</span>  @Override<a name="line.2803"></a>
-<span class="sourceLineNo">2804</span>  public void delete(Delete delete) throws IOException {<a name="line.2804"></a>
-<span class="sourceLineNo">2805</span>    checkReadOnly();<a name="line.2805"></a>
-<span class="sourceLineNo">2806</span>    checkResources();<a name="line.2806"></a>
-<span class="sourceLineNo">2807</span>    startRegionOperation(Operation.DELETE);<a name="line.2807"></a>
-<span class="sourceLineNo">2808</span>    try {<a name="line.2808"></a>
-<span class="sourceLineNo">2809</span>      // All edits for the given row (across all column families) must happen atomically.<a name="line.2809"></a>
-<span class="sourceLineNo">2810</span>      doBatchMutate(delete);<a name="line.2810"></a>
-<span class="sourceLineNo">2811</span>    } finally {<a name="line.2811"></a>
-<span class="sourceLineNo">2812</span>      closeRegionOperation(Operation.DELETE);<a name="line.2812"></a>
-<span class="sourceLineNo">2813</span>    }<a name="line.2813"></a>
-<span class="sourceLineNo">2814</span>  }<a name="line.2814"></a>
-<span class="sourceLineNo">2815</span><a name="line.2815"></a>
-<span class="sourceLineNo">2816</span>  /**<a name="line.2816"></a>
-<span class="sourceLineNo">2817</span>   * Row needed by below method.<a name="line.2817"></a>
-<span class="sourceLineNo">2818</span>   */<a name="line.2818"></a>
-<span class="sourceLineNo">2819</span>  private static final byte [] FOR_UNIT_TESTS_ONLY = Bytes.toBytes("ForUnitTestsOnly");<a name="line.2819"></a>
-<span class="sourceLineNo">2820</span><a name="line.2820"></a>
-<span class="sourceLineNo">2821</span>  /**<a name="line.2821"></a>
-<span class="sourceLineNo">2822</span>   * This is used only by unit tests. Not required to be a public API.<a name="line.2822"></a>
-<span class="sourceLineNo">2823</span>   * @param familyMap map of family to edits for the given family.<a name="line.2823"></a>
-<span class="sourceLineNo">2824</span>   * @throws IOException<a name="line.2824"></a>
-<span class="sourceLineNo">2825</span>   */<a name="line.2825"></a>
-<span class="sourceLineNo">2826</span>  void delete(NavigableMap&lt;byte[], List&lt;Cell&gt;&gt; familyMap,<a name="line.2826"></a>
-<span class="sourceLineNo">2827</span>      Durability durability) throws IOException {<a name="line.2827"></a>
-<span class="sourceLineNo">2828</span>    Delete delete = new Delete(FOR_UNIT_TESTS_ONLY);<a name="line.2828"></a>
-<span class="sourceLineNo">2829</span>    delete.setFamilyCellMap(familyMap);<a name="line.2829"></a>
-<span class="sourceLineNo">2830</span>    delete.setDurability(durability);<a name="line.2830"></a>
-<span class="sourceLineNo">2831</span>    doBatchMutate(delete);<a name="line.2831"></a>
-<span class="sourceLineNo">2832</span>  }<a name="line.2832"></a>
-<span class="sourceLineNo">2833</span><a name="line.2833"></a>
-<span class="sourceLineNo">2834</span>  /**<a name="line.2834"></a>
-<span class="sourceLineNo">2835</span>   * Set up correct timestamps in the KVs in Delete object.<a name="line.2835"></a>
-<span class="sourceLineNo">2836</span>   * &lt;p&gt;Caller should have the row and region locks.<a name="line.2836"></a>
-<span class="sourceLineNo">2837</span>   * @param mutation<a name="line.2837"></a>
-<span class="sourceLineNo">2838</span>   * @param familyMap<a name="line.2838"></a>
-<span class="sourceLineNo">2839</span>   * @param byteNow<a name="line.2839"></a>
-<span class="sourceLineNo">2840</span>   * @throws IOException<a name="line.2840"></a>
-<span class="sourceLineNo">2841</span>   */<a name="line.2841"></a>
-<span class="sourceLineNo">2842</span>  public void prepareDeleteTimestamps(Mutation mutation, Map&lt;byte[], List&lt;Cell&gt;&gt; familyMap,<a name="line.2842"></a>
-<span class="sourceLineNo">2843</span>      byte[] byteNow) throws IOException {<a name="line.2843"></a>
-<span class="sourceLineNo">2844</span>    for (Map.Entry&lt;byte[], List&lt;Cell&gt;&gt; e : familyMap.entrySet()) {<a name="line.2844"></a>
-<span class="sourceLineNo">2845</span><a name="line.2845"></a>
-<span class="sourceLineNo">2846</span>      byte[] family = e.getKey();<a name="line.2846"></a>
-<span class="sourceLineNo">2847</span>      List&lt;Cell&gt; cells = e.getValue();<a name="line.2847"></a>
-<span class="sourceLineNo">2848</span>      assert cells instanceof RandomAccess;<a name="line.2848"></a>
-<span class="sourceLineNo">2849</span><a name="line.2849"></a>
-<span class="sourceLineNo">2850</span>      Map&lt;byte[], Integer&gt; kvCount = new TreeMap&lt;&gt;(Bytes.BYTES_COMPARATOR);<a name="line.2850"></a>
-<span class="sourceLineNo">2851</span>      int listSize = cells.size();<a name="line.2851"></a>
-<span class="sourceLineNo">2852</span>      for (int i=0; i &lt; listSize; i++) {<a name="line.2852"></a>
-<span class="sourceLineNo">2853</span>        Cell cell = cells.get(i);<a name="line.2853"></a>
-<span class="sourceLineNo">2854</span>        //  Check if time is LATEST, change to time of most recent addition if so<a name="line.2854"></a>
-<span class="sourceLineNo">2855</span>        //  This is expensive.<a name="line.2855"></a>
-<span class="sourceLineNo">2856</span>        if (cell.getTimestamp() == HConstants.LATEST_TIMESTAMP<a name="line.2856"></a>
-<span class="sourceLineNo">2857</span>            &amp;&amp; PrivateCellUtil.isDeleteType(cell)) {<a name="line.2857"></a>
-<span class="sourceLineNo">2858</span>          byte[] qual = CellUtil.cloneQualifier(cell);<a name="line.2858"></a>
-<span class="sourceLineNo">2859</span><a name="line.2859"></a>
-<span class="sourceLineNo">2860</span>          Integer count = kvCount.get(qual);<a name="line.2860"></a>
-<span class="sourceLineNo">2861</span>          if (count == null) {<a name="line.2861"></a>
-<span class="sourceLineNo">2862</span>            kvCount.put(qual, 1);<a name="line.2862"></a>
-<span class="sourceLineNo">2863</span>          } else {<a name="line.2863"></a>
-<span class="sourceLineNo">2864</span>            kvCount.put(qual, count + 1);<a name="line.2864"></a>
-<span class="sourceLineNo">2865</span>          }<a name="line.2865"></a>
-<span class="sourceLineNo">2866</span>          count = kvCount.get(qual);<a name="line.2866"></a>
-<span class="sourceLineNo">2867</span><a name="line.2867"></a>
-<span class="sourceLineNo">2868</span>          Get get = new Get(CellUtil.cloneRow(cell));<a name="line.2868"></a>
-<span class="sourceLineNo">2869</span>          get.setMaxVersions(count);<a name="line.2869"></a>
-<span class="sourceLineNo">2870</span>          get.addColumn(family, qual);<a name="line.2870"></a>
-<span class="sourceLineNo">2871</span>          if (coprocessorHost != null) {<a name="line.2871"></a>
-<span class="sourceLineNo">2872</span>            if (!coprocessorHost.prePrepareTimeStampForDeleteVersion(mutation, cell,<a name="line.2872"></a>
-<span class="sourceLineNo">2873</span>                byteNow, get)) {<a name="line.2873"></a>
-<span class="sourceLineNo">2874</span>              updateDeleteLatestVersionTimeStamp(cell, get, count, byteNow);<a name="line.2874"></a>
-<span class="sourceLineNo">2875</span>            }<a name="line.2875"></a>
-<span class="sourceLineNo">2876</span>          } else {<a name="line.2876"></a>
-<span class="sourceLineNo">2877</span>            updateDeleteLatestVersionTimeStamp(cell, get, count, byteNow);<a name="line.2877"></a>
-<span class="sourceLineNo">2878</span>          }<a name="line.2878"></a>
-<span class="sourceLineNo">2879</span>        } else {<a name="line.2879"></a>
-<span class="sourceLineNo">2880</span>          PrivateCellUtil.updateLatestStamp(cell, byteNow, 0);<a name="line.2880"></a>
-<span class="sourceLineNo">2881</span>        }<a name="line.2881"></a>
-<span class="sourceLineNo">2882</span>      }<a name="line.2882"></a>
-<span class="sourceLineNo">2883</span>    }<a name="line.2883"></a>
-<span class="sourceLineNo">2884</span>  }<a name="line.2884"></a>
-<span class="sourceLineNo">2885</span><a name="line.2885"></a>
-<span class="sourceLineNo">2886</span>  void updateDeleteLatestVersionTimeStamp(Cell cell, Get get, int count, byte[] byteNow)<a name="line.2886"></a>
-<span class="sourceLineNo">2887</span>      throws IOException {<a name="line.2887"></a>
-<span class="sourceLineNo">2888</span>    List&lt;Cell&gt; result = get(get, false);<a name="line.2888"></a>
-<span class="sourceLineNo">2889</span><a name="line.2889"></a>
-<span class="sourceLineNo">2890</span>    if (result.size() &lt; count) {<a name="line.2890"></a>
-<span class="sourceLineNo">2891</span>      // Nothing to delete<a name="line.2891"></a>
-<span class="sourceLineNo">2892</span>      PrivateCellUtil.updateLatestStamp(cell, byteNow, 0);<a name="line.2892"></a>
-<span class="sourceLineNo">2893</span>      return;<a name="line.2893"></a>
-<span class="sourceLineNo">2894</span>    }<a name="line.2894"></a>
-<span class="sourceLineNo">2895</span>    if (result.size() &gt; count) {<a name="line.2895"></a>
-<span class="sourceLineNo">2896</span>      throw new RuntimeException("Unexpected size: " + result.size());<a name="line.2896"></a>
-<span class="sourceLineNo">2897</span>    }<a name="line.2897"></a>
-<span class="sourceLineNo">2898</span>    Cell getCell = result.get(count - 1);<a name="line.2898"></a>
-<span class="sourceLineNo">2899</span>    PrivateCellUtil.setTimestamp(cell, getCell.getTimestamp());<a name="line.2899"></a>
-<span class="sourceLineNo">2900</span>  }<a name="line.2900"></a>
-<span class="sourceLineNo">2901</span><a name="line.2901"></a>
-<span class="sourceLineNo">2902</span>  @Override<a name="line.2902"></a>
-<span class="sourceLineNo">2903</span>  public void put(Put put) throws IOException {<a name="line.2903"></a>
-<span class="sourceLineNo">2904</span>    checkReadOnly();<a name="line.2904"></a>
-<span class="sourceLineNo">2905</span><a name="line.2905"></a>
-<span class="sourceLineNo">2906</span>    // Do a rough check that we have resources to accept a write.  The check is<a name="line.2906"></a>
-<span class="sourceLineNo">2907</span>    // 'rough' in that between the resource check and the call to obtain a<a name="line.2907"></a>
-<span class="sourceLineNo">2908</span>    // read lock, resources may run out.  For now, the thought is that this<a name="line.2908"></a>
-<span class="sourceLineNo">2909</span>    // will be extremely rare; we'll deal with it when it happens.<a name="line.2909"></a>
-<span class="sourceLineNo">2910</span>    checkResources();<a name="line.2910"></a>
-<span class="sourceLineNo">2911</span>    startRegionOperation(Operation.PUT);<a name="line.2911"></a>
-<span class="sourceLineNo">2912</span>    try {<a name="line.2912"></a>
-<span class="sourceLineNo">2913</span>      // All edits for the given row (across all column families) must happen atomically.<a name="line.2913"></a>
-<span class="sourceLineNo">2914</span>      doBatchMutate(put);<a name="line.2914"></a>
-<span class="sourceLineNo">2915</span>    } finally {<a name="line.2915"></a>
-<span class="sourceLineNo">2916</span>      closeRegionOperation(Operation.PUT);<a name="line.2916"></a>
-<span class="sourceLineNo">2917</span>    }<a name="line.2917"></a>
-<span class="sourceLineNo">2918</span>  }<a name="line.2918"></a>
-<span class="sourceLineNo">2919</span><a name="line.2919"></a>
-<span class="sourceLineNo">2920</span>  /**<a name="line.2920"></a>
-<span class="sourceLineNo">2921</span>   * Class that tracks the progress of a batch operations, accumulating status codes and tracking<a name="line.2921"></a>
-<span class="sourceLineNo">2922</span>   * the index at which processing is proceeding. These batch operations may get split into<a name="line.2922"></a>
-<span class="sourceLineNo">2923</span>   * mini-batches for processing.<a name="line.2923"></a>
-<span class="sourceLineNo">2924</span>   */<a name="line.2924"></a>
-<span class="sourceLineNo">2925</span>  private abstract static class BatchOperation&lt;T&gt; {<a name="line.2925"></a>
-<span class="sourceLineNo">2926</span>    protected final T[] operations;<a name="line.2926"></a>
-<span class="sourceLineNo">2927</span>    protected final OperationStatus[] retCodeDetails;<a name="line.2927"></a>
-<span class="sourceLineNo">2928</span>    protected final WALEdit[] walEditsFromCoprocessors;<a name="line.2928"></a>
-<span class="sourceLineNo">2929</span>    // reference family cell maps directly so coprocessors can mutate them if desired<a name="line.2929"></a>
-<span class="sourceLineNo">2930</span>    protected final Map&lt;byte[], List&lt;Cell&gt;&gt;[] familyCellMaps;<a name="line.2930"></a>
-<span class="sourceLineNo">2931</span><a name="line.2931"></a>
-<span class="sourceLineNo">2932</span>    protected final HRegion region;<a name="line.2932"></a>
-<span class="sourceLineNo">2933</span>    protected int nextIndexToProcess = 0;<a name="line.2933"></a>
-<span class="sourceLineNo">2934</span>    protected final ObservedExceptionsInBatch observedExceptions;<a name="line.2934"></a>
-<span class="sourceLineNo">2935</span>    //Durability of the batch (highest durability of all operations)<a name="line.2935"></a>
-<span class="sourceLineNo">2936</span>    protected Durability durability;<a name="line.2936"></a>
-<span class="sourceLineNo">2937</span>    protected boolean atomic = false;<a name="line.2937"></a>
-<span class="sourceLineNo">2938</span><a name="line.2938"></a>
-<span class="sourceLineNo">2939</span>    public BatchOperation(final HRegion region, T[] operations) {<a name="line.2939"></a>
-<span class="sourceLineNo">2940</span>      this.operations = operations;<a name="line.2940"></a>
-<span class="sourceLineNo">2941</span>      this.retCodeDetails = new OperationStatus[operations.length];<a name="line.2941"></a>
-<span class="sourceLineNo">2942</span>      Arrays.fill(this.retCodeDetails, OperationStatus.NOT_RUN);<a name="line.2942"></a>
-<span class="sourceLineNo">2943</span>      this.walEditsFromCoprocessors = new WALEdit[operations.length];<a name="line.2943"></a>
-<span class="sourceLineNo">2944</span>      familyCellMaps = new Map[operations.length];<a name="line.2944"></a>
-<span class="sourceLineNo">2945</span><a name="line.2945"></a>
-<span class="sourceLineNo">2946</span>      this.region = region;<a name="line.2946"></a>
-<span class="sourceLineNo">2947</span>      observedExceptions = new ObservedExceptionsInBatch();<a name="line.2947"></a>
-<span class="sourceLineNo">2948</span>      durability = Durability.USE_DEFAULT;<a name="line.2948"></a>
-<span class="sourceLineNo">2949</span>    }<a name="line.2949"></a>
-<span class="sourceLineNo">2950</span><a name="line.2950"></a>
-<span class="sourceLineNo">2951</span>    /**<a name="line.2951"></a>
-<span class="sourceLineNo">2952</span>     * Visitor interface for batch operations<a name="line.2952"></a>
-<span class="sourceLineNo">2953</span>     */<a name="line.2953"></a>
-<span class="sourceLineNo">2954</span>    @FunctionalInterface<a name="line.2954"></a>
-<span class="sourceLineNo">2955</span>    public interface Visitor {<a name="line.2955"></a>
-<span class="sourceLineNo">2956</span>      /**<a name="line.2956"></a>
-<span class="sourceLineNo">2957</span>       * @param index operation index<a name="line.2957"></a>
-<span class="sourceLineNo">2958</span>       * @return If true continue visiting remaining entries, break otherwise<a name="line.2958"></a>
-<span class="sourceLineNo">2959</span>       */<a name="line.2959"></a>
-<span class="sourceLineNo">2960</span>      boolean visit(int index) throws IOException;<a name="line.2960"></a>
-<span class="sourceLineNo">2961</span>    }<a name="line.2961"></a>
-<span class="sourceLineNo">2962</span><a name="line.2962"></a>
-<span class="sourceLineNo">2963</span>    /**<a name="line.2963"></a>
-<span class="sourceLineNo">2964</span>     * Helper method for visiting pending/ all batch operations<a name="line.2964"></a>
-<span class="sourceLineNo">2965</span>     */<a name="line.2965"></a>
-<span class="sourceLineNo">2966</span>    public void visitBatchOperations(boolean pendingOnly, int lastIndexExclusive, Visitor visitor)<a name="line.2966"></a>
-<span class="sourceLineNo">2967</span>        throws IOException {<a name="line.2967"></a>
-<span class="sourceLineNo">2968</span>      assert lastIndexExclusive &lt;= this.size();<a name="line.2968"></a>
-<span class="sourceLineNo">2969</span>      for (int i = nextIndexToProcess; i &lt; lastIndexExclusive; i++) {<a name="line.2969"></a>
-<span class="sourceLineNo">2970</span>        if (!pendingOnly || isOperationPending(i)) {<a name="line.2970"></a>
-<span class="sourceLineNo">2971</span>          if (!visitor.visit(i)) {<a name="line.2971"></a>
-<span class="sourceLineNo">2972</span>            break;<a name="line.2972"></a>
-<span class="sourceLineNo">2973</span>          }<a name="line.2973"></a>
-<span class="sourceLineNo">2974</span>        }<a name="line.2974"></a>
-<span class="sourceLineNo">2975</span>      }<a name="line.2975"></a>
-<span class="sourceLineNo">2976</span>    }<a name="line.2976"></a>
-<span class="sourceLineNo">2977</span><a name="line.2977"></a>
-<span class="sourceLineNo">2978</span>    public abstract Mutation getMutation(int index);<a name="line.2978"></a>
-<span class="sourceLineNo">2979</span>    public abstract long getNonceGroup(int index);<a name="line.2979"></a>
-<span class="sourceLineNo">2980</span>    public abstract long getNonce(int index);<a name="line.2980"></a>
-<span class="sourceLineNo">2981</span>    /** This method is potentially expensive and useful mostly for non-replay CP path. */<a name="line.2981"></a>
-<span class="sourceLineNo">2982</span>    public abstract Mutation[] getMutationsForCoprocs();<a name="line.2982"></a>
-<span class="sourceLineNo">2983</span>    public abstract boolean isInReplay();<a name="line.2983"></a>
-<span class="sourceLineNo">2984</span>    public abstract long getOrigLogSeqNum();<a name="line.2984"></a>
-<span class="sourceLineNo">2985</span>    public abstract void startRegionOperation() throws IOException;<a name="line.2985"></a>
-<span class="sourceLineNo">2986</span>    public abstract void closeRegionOperation() throws IOException;<a name="line.2986"></a>
-<span class="sourceLineNo">2987</span><a name="line.2987"></a>
-<span class="sourceLineNo">2988</span>    /**<a name="line.2988"></a>
-<span class="sourceLineNo">2989</span>     * Validates each mutation and prepares a batch for write. If necessary (non-replay case), runs<a name="line.2989"></a>
-<span class="sourceLineNo">2990</span>     * CP prePut()/ preDelete() hooks for all mutations in a batch. This is intended to operate on<a name="line.2990"></a>
-<span class="sourceLineNo">2991</span>     * entire batch and will be called from outside of class to check and prepare batch. This can<a name="line.2991"></a>
-<span class="sourceLineNo">2992</span>     * be implemented by calling helper method {@link #checkAndPrepareMutation(int, long)} in a<a name="line.2992"></a>
-<span class="sourceLineNo">2993</span>     * 'for' loop over mutations.<a name="line.2993"></a>
-<span class="sourceLineNo">2994</span>     */<a name="line.2994"></a>
-<span class="sourceLineNo">2995</span>    public abstract void checkAndPrepare() throws IOException;<a name="line.2995"></a>
-<span class="sourceLineNo">2996</span><a name="line.2996"></a>
-<span class="sourceLineNo">2997</span>    /**<a name="line.2997"></a>
-<span class="sourceLineNo">2998</span>     * Implement any Put request specific check and prepare logic here. Please refer to<a name="line.2998"></a>
-<span class="sourceLineNo">2999</span>     * {@link #checkAndPrepareMutation(Mutation, long)} for how its used.<a name="line.2999"></a>
-<span class="sourceLineNo">3000</span>     */<a name="line.3000"></a>
-<span class="sourceLineNo">3001</span>    protected abstract void checkAndPreparePut(final Put p) throws IOException;<a name="line.3001"></a>
-<span class="sourceLineNo">3002</span><a name="line.3002"></a>
-<span class="sourceLineNo">3003</span>    /**<a name="line.3003"></a>
-<span class="sourceLineNo">3004</span>     *  If necessary, calls preBatchMutate() CP hook for a mini-batch and updates metrics, cell<a name="line.3004"></a>
-<span class="sourceLineNo">3005</span>     *  count, tags and timestamp for all cells of all operations in a mini-batch.<a name="line.3005"></a>
-<span class="sourceLineNo">3006</span>     */<a name="line.3006"></a>
-<span class="sourceLineNo">3007</span>    public abstract void prepareMiniBatchOperations(MiniBatchOperationInProgress&lt;Mutation&gt;<a name="line.3007"></a>
-<span class="sourceLineNo">3008</span>        miniBatchOp, long timestamp, final List&lt;RowLock&gt; acquiredRowLocks) throws IOException;<a name="line.3008"></a>
-<span class="sourceLineNo">3009</span><a name="line.3009"></a>
-<span class="sourceLineNo">3010</span>    /**<a name="line.3010"></a>
-<span class="sourceLineNo">3011</span>     * Write mini-batch operations to MemStore<a name="line.3011"></a>
-<span class="sourceLineNo">3012</span>     */<a name="line.3012"></a>
-<span class="sourceLineNo">3013</span>    public abstract WriteEntry writeMiniBatchOperationsToMemStore(<a name="line.3013"></a>
-<span class="sourceLineNo">3014</span>        final MiniBatchOperationInProgress&lt;Mutation&gt; miniBatchOp, final WriteEntry writeEntry)<a name="line.3014"></a>
-<span class="sourceLineNo">3015</span>        throws IOException;<a name="line.3015"></a>
-<span class="sourceLineNo">3016</span><a name="line.3016"></a>
-<span class="sourceLineNo">3017</span>    protected void writeMiniBatchOperationsToMemStore(<a name="line.3017"></a>
-<span class="sourceLineNo">3018</span>        final MiniBatchOperationInProgress&lt;Mutation&gt; miniBatchOp, final long writeNumber)<a name="line.3018"></a>
-<span class="sourceLineNo">3019</span>        throws IOException {<a name="line.3019"></a>
-<span class="sourceLineNo">3020</span>      MemStoreSizing memStoreAccounting = new MemStoreSizing();<a name="line.3020"></a>
-<span class="sourceLineNo">3021</span>      visitBatchOperations(true, miniBatchOp.getLastIndexExclusive(), (int index) -&gt; {<a name="line.3021"></a>
-<span class="sourceLineNo">3022</span>        // We need to update the sequence id for following reasons.<a name="line.3022"></a>
-<span class="sourceLineNo">3023</span>        // 1) If the op is in replay mode, FSWALEntry#stampRegionSequenceId won't stamp sequence id.<a name="line.3023"></a>
-<span class="sourceLineNo">3024</span>        // 2) If no WAL, FSWALEntry won't be used<a name="line.3024"></a>
-<span class="sourceLineNo">3025</span>        // we use durability of the original mutation for the mutation passed by CP.<a name="line.3025"></a>
-<span class="sourceLineNo">3026</span>        if (isInReplay() || getMutation(index).getDurability() == Durability.SKIP_WAL) {<a name="line.3026"></a>
-<span class="sourceLineNo">3027</span>          region.updateSequenceId(familyCellMaps[index].values(), writeNumber);<a name="line.3027"></a>
-<span class="sourceLineNo">3028</span>        }<a name="line.3028"></a>
-<span class="sourceLineNo">3029</span>        applyFamilyMapToMemStore(familyCellMaps[index], memStoreAccounting);<a name="line.3029"></a>
-<span class="sourceLineNo">3030</span>        return true;<a name="line.3030"></a>
-<span class="sourceLineNo">3031</span>      });<a name="line.3031"></a>
-<span class="sourceLineNo">3032</span>      // update memStore size<a name="line.3032"></a>
-<span class="sourceLineNo">3033</span>      region.addAndGetMemStoreSize(memStoreAccounting);<a name="line.3033"></a>
-<span class="sourceLineNo">3034</span>    }<a name="line.3034"></a>
-<span class="sourceLineNo">3035</span><a name="line.3035"></a>
-<span class="sourceLineNo">3036</span>    public boolean isDone() {<a name="line.3036"></a>
-<span class="sourceLineNo">3037</span>      return nextIndexToProcess == operations.length;<a name="line.3037"></a>
-<span class="sourceLineNo">3038</span>    }<a name="line.3038"></a>
-<span class="sourceLineNo">3039</span><a name="line.3039"></a>
-<span class="sourceLineNo">3040</span>    public int size() {<a name="line.3040"></a>
-<span class="sourceLineNo">3041</span>      return operations.length;<a name="line.3041"></a>
-<span class="sourceLineNo">3042</span>    }<a name="line.3042"></a>
-<span class="sourceLineNo">3043</span><a name="line.3043"></a>
-<span class="sourceLineNo">3044</span>    public boolean isOperationPending(int index) {<a name="line.3044"></a>
-<span class="sourceLineNo">3045</span>      return retCodeDetails[index].getOperationStatusCode() == OperationStatusCode.NOT_RUN;<a name="line.3045"></a>
-<span class="sourceLineNo">3046</span>    }<a name="line.3046"></a>
-<span class="sourceLineNo">3047</span><a name="line.3047"></a>
-<span class="sourceLineNo">3048</span>    public List&lt;UUID&gt; getClusterIds() {<a name="line.3048"></a>
-<span class="sourceLineNo">3049</span>      assert size() != 0;<a name="line.3049"></a>
-<span class="sourceLineNo">3050</span>      return getMutation(0).getClusterIds();<a name="line.3050"></a>
-<span class="sourceLineNo">3051</span>    }<a name="line.3051"></a>
-<span class="sourceLineNo">3052</span><a name="line.3052"></a>
-<span class="sourceLineNo">3053</span>    boolean isAtomic() {<a name="line.3053"></a>
-<span class="sourceLineNo">3054</span>      return atomic;<a name="line.3054"></a>
-<span class="sourceLineNo">3055</span>    }<a name="line.3055"></a>
-<span class="sourceLineNo">3056</span><a name="line.3056"></a>
-<span class="sourceLineNo">3057</span>    /**<a name="line.3057"></a>
-<span class="sourceLineNo">3058</span>     * Helper method that checks and prepares only one mutation. This can be used to implement<a name="line.3058"></a>
-<span class="sourceLineNo">3059</span>     * {@link #checkAndPrepare()} for entire Batch.<a name="line.3059"></a>
-<span class="sourceLineNo">3060</span>     * NOTE: As CP prePut()/ preDelete() hooks may modify mutations, this method should be called<a name="line.3060"></a>
-<span class="sourceLineNo">3061</span>     * after prePut()/ preDelete() CP hooks are run for the mutation<a name="line.3061"></a>
-<span class="sourceLineNo">3062</span>     */<a name="line.3062"></a>
-<span class="sourceLineNo">3063</span>    protected void checkAndPrepareMutation(Mutation mutation, final long timestamp)<a name="line.3063"></a>
-<span class="sourceLineNo">3064</span>        throws IOException {<a name="line.3064"></a>
-<span class="sourceLineNo">3065</span>      region.checkRow(mutation.getRow(), "batchMutate");<a name="line.3065"></a>
-<span class="sourceLineNo">3066</span>      if (mutation instanceof Put) {<a name="line.3066"></a>
-<span class="sourceLineNo">3067</span>        // Check the families in the put. If bad, skip this one.<a name="line.3067"></a>
-<span class="sourceLineNo">3068</span>        checkAndPreparePut((Put) mutation);<a name="line.3068"></a>
-<span class="sourceLineNo">3069</span>        region.checkTimestamps(mutation.getFamilyCellMap(), timestamp);<a name="line.3069"></a>
-<span class="sourceLineNo">3070</span>      } else {<a name="line.3070"></a>
-<span class="sourceLineNo">3071</span>        region.prepareDelete((Delete) mutation);<a name="line.3071"></a>
-<span class="sourceLineNo">3072</span>      }<a name="line.3072"></a>
-<span class="sourceLineNo">3073</span>    }<a name="line.3073"></a>
-<span class="sourceLineNo">3074</span><a name="line.3074"></a>
-<span class="sourceLineNo">3075</span>    protected void checkAndPrepareMutation(int index, long timestamp) throws IOException {<a name="line.3075"></a>
-<span class="sourceLineNo">3076</span>      Mutation mutation = getMutation(index);<a name="line.3076"></a>
-<span class="sourceLineNo">3077</span>      try {<a name="line.3077"></a>
-<span class="sourceLineNo">3078</span>        this.checkAndPrepareMutation(mutation, timestamp);<a name="line.3078"></a>
-<span class="sourceLineNo">3079</span><a name="line.3079"></a>
-<span class="sourceLineNo">3080</span>        // store the family map reference to allow for mutations<a name="line.3080"></a>
-<span class="sourceLineNo">3081</span>        familyCellMaps[index] = mutation.getFamilyCellMap();<a name="line.3081"></a>
-<span class="sourceLineNo">3082</span>        // store durability for the batch (highest durability of all operations in the batch)<a name="line.3082"></a>
-<span class="sourceLineNo">3083</span>        Durability tmpDur = region.getEffectiveDurability(mutation.getDurability());<a name="line.3083"></a>
-<span class="sourceLineNo">3084</span>        if (tmpDur.ordinal() &gt; durability.ordinal()) {<a name="line.3084"></a>
-<span class="sourceLineNo">3085</span>          durability = tmpDur;<a name="line.3085"></a>
-<span class="sourceLineNo">3086</span>        }<a name="line.3086"></a>
-<span class="sourceLineNo">3087</span>      } catch (NoSuchColumnFamilyException nscfe) {<a name="line.3087"></a>
-<span class="sourceLineNo">3088</span>        final String msg = "No such column family in batch mutation. ";<a name="line.3088"></a>
-<span class="sourceLineNo">3089</span>        if (observedExceptions.hasSeenNoSuchFamily()) {<a name="line.3089"></a>
-<span class="sourceLineNo">3090</span>          LOG.warn(msg + nscfe.getMessage());<a name="line.3090"></a>
-<span class="sourceLineNo">3091</span>        } else {<a name="line.3091"></a>
-<span class="sourceLineNo">3092</span>          LOG.warn(msg, nscfe);<a name="line.3092"></a>
-<span class="sourceLineNo">3093</span>          observedExceptions.sawNoSuchFamily();<a name="line.3093"></a>
-<span class="sourceLineNo">3094</span>        }<a name="line.3094"></a>
-<span class="sourceLineNo">3095</span>        retCodeDetails[index] = new OperationStatus(<a name="line.3095"></a>
-<span class="sourceLineNo">3096</span>            OperationStatusCode.BAD_FAMILY, nscfe.getMessage());<a name="line.3096"></a>
-<span class="sourceLineNo">3097</span>        if (isAtomic()) { // fail, atomic means all or none<a name="line.3097"></a>
-<span class="sourceLineNo">3098</span>          throw nscfe;<a name="line.3098"></a>
-<span class="sourceLineNo">3099</span>        }<a name="line.3099"></a>
-<span class="sourceLineNo">3100</span>      } catch (FailedSanityCheckException fsce) {<a name="line.3100"></a>
-<span class="sourceLineNo">3101</span>        final String msg = "Batch Mutation did not pass sanity check. ";<a name="line.3101"></a>
-<span class="sourceLineNo">3102</span>        if (observedExceptions.hasSeenFailedSanityCheck()) {<a name="line.3102"></a>
-<span class="sourceLineNo">3103</span>          LOG.warn(msg + fsce.getMessage());<a name="line.3103"></a>
-<span class="sourceLineNo">3104</span>        } else {<a name="line.3104"></a>
-<span class="sourceLineNo">3105</span>          LOG.warn(msg, fsce);<a name="line.3105"></a>
-<span class="sourceLineNo">3106</span>          observedExceptions.sawFailedSanityCheck();<a name="line.3106"></a>
-<span class="sourceLineNo">3107</span>        }<a name="line.3107"></a>
-<span class="sourceLineNo">3108</span>        retCodeDetails[index] = new OperationStatus(<a name="line.3108"></a>
-<span class="sourceLineNo">3109</span>            OperationStatusCode.SANITY_CHECK_FAILURE, fsce.getMessage());<a name="line.3109"></a>
-<span class="sourceLineNo">3110</span>        if (isAtomic()) {<a name="line.3110"></a>
-<span class="sourceLineNo">3111</span>          throw fsce;<a name="line.3111"></a>
-<span class="sourceLineNo">3112</span>        }<a name="line.3112"></a>
-<span class="sourceLineNo">3113</span>      } catch (WrongRegionException we) {<a name="line.3113"></a>
-<span class="sourceLineNo">3114</span>        final String msg = "Batch mutation had a row that does not belong to this region. ";<a name="line.3114"></a>
-<span class="sourceLineNo">3115</span>        if (observedExceptions.hasSeenWrongRegion()) {<a name="line.3115"></a>
-<span class="sourceLineNo">3116</span>          LOG.warn(msg + we.getMessage());<a name="line.3116"></a>
-<span class="sourceLineNo">3117</span>        } else {<a name="line.3117"></a>
-<span class="sourceLineNo">3118</span>          LOG.warn(msg, we);<a name="line.3118"></a>
-<span class="sourceLineNo">3119</span>          observedExceptions.sawWrongRegion();<a name="line.3119"></a>
-<span class="sourceLineNo">3120</span>        }<a name="line.3120"></a>
-<span class="sourceLineNo">3121</span>        retCodeDetails[index] = new OperationStatus(<a name="line.3121"></a>
-<span class="sourceLineNo">3122</span>            OperationStatusCode.SANITY_CHECK_FAILURE, we.getMessage());<a name="line.3122"></a>
-<span class="sourceLineNo">3123</span>        if (isAtomic()) {<a name="line.3123"></a>
-<span class="sourceLineNo">3124</span>          throw we;<a name="line.3124"></a>
-<span class="sourceLineNo">3125</span>        }<a name="line.3125"></a>
-<span class="sourceLineNo">3126</span>      }<a name="line.3126"></a>
-<span class="sourceLineNo">3127</span>    }<a name="line.3127"></a>
-<span class="sourceLineNo">3128</span><a name="line.3128"></a>
-<span class="sourceLineNo">3129</span>    /**<a name="line.3129"></a>
-<span class="sourceLineNo">3130</span>     * Creates Mini-batch of all operations [nextIndexToProcess, lastIndexExclusive) for which<a name="line.3130"></a>
-<span class="sourceLineNo">3131</span>     * a row lock can be acquired. All mutations with locked rows are considered to be<a name="line.3131"></a>
-<span class="sourceLineNo">3132</span>     * In-progress operations and hence the name {@link MiniBatchOperationInProgress}. Mini batch<a name="line.3132"></a>
-<span class="sourceLineNo">3133</span>     * is window over {@link BatchOperation} and contains contiguous pending operations.<a name="line.3133"></a>
-<span class="sourceLineNo">3134</span>     *<a name="line.3134"></a>
-<span class="sourceLineNo">3135</span>     * @param acquiredRowLocks keeps track of rowLocks acquired.<a name="line.3135"></a>
-<span class="sourceLineNo">3136</span>     */<a name="line.3136"></a>
-<span class="sourceLineNo">3137</span>    public MiniBatchOperationInProgress&lt;Mutation&gt; lockRowsAndBuildMiniBatch(<a name="line.3137"></a>
-<span class="sourceLineNo">3138</span>        List&lt;RowLock&gt; acquiredRowLocks) throws IOException {<a name="line.3138"></a>
-<span class="sourceLineNo">3139</span>      int readyToWriteCount = 0;<a name="line.3139"></a>
-<span class="sourceLineNo">3140</span>      int lastIndexExclusive = 0;<a name="line.3140"></a>
-<span class="sourceLineNo">3141</span>      for (; lastIndexExclusive &lt; size(); lastIndexExclusive++) {<a name="line.3141"></a>
-<span class="sourceLineNo">3142</span>        if (!isOperationPending(lastIndexExclusive)) {<a name="line.3142"></a>
-<span class="sourceLineNo">3143</span>          continue;<a name="line.3143"></a>
-<span class="sourceLineNo">3144</span>        }<a name="line.3144"></a>
-<span class="sourceLineNo">3145</span>        Mutation mutation = getMutation(lastIndexExclusive);<a name="line.3145"></a>
-<span class="sourceLineNo">3146</span>        // If we haven't got any rows in our batch, we should block to get the next one.<a name="line.3146"></a>
-<span class="sourceLineNo">3147</span>        RowLock rowLock = null;<a name="line.3147"></a>
-<span class="sourceLineNo">3148</span>        try {<a name="line.3148"></a>
-<span class="sourceLineNo">3149</span>          // if atomic then get exclusive lock, else shared lock<a name="line.3149"></a>
-<span class="sourceLineNo">3150</span>          rowLock = region.getRowLockInternal(mutation.getRow(), !isAtomic());<a name="line.3150"></a>
-<span class="sourceLineNo">3151</span>        } catch (TimeoutIOException e) {<a name="line.3151"></a>
-<span class="sourceLineNo">3152</span>          // We will retry when other exceptions, but we should stop if we timeout .<a name="line.3152"></a>
-<span class="sourceLineNo">3153</span>          throw e;<a name="line.3153"></a>
-<span class="sourceLineNo">3154</span>        } catch (IOException ioe) {<a name="line.3154"></a>
-<span class="sourceLineNo">3155</span>          LOG.warn("Failed getting lock, row=" + Bytes.toStringBinary(mutation.getRow()), ioe);<a name="line.3155"></a>
-<span class="sourceLineNo">3156</span>          if (isAtomic()) { // fail, atomic means all or none<a name="line.3156"></a>
-<span class="sourceLineNo">3157</span>            throw ioe;<a name="line.3157"></a>
-<span class="sourceLineNo">3158</span>          }<a name="line.3158"></a>
-<span class="sourceLineNo">3159</span>        }<a name="line.3159"></a>
-<span class="sourceLineNo">3160</span>        if (rowLock == null) {<a name="line.3160"></a>
-<span class="sourceLineNo">3161</span>          // We failed to grab another lock<a name="line.3161"></a>
-<span class="sourceLineNo">3162</span>          if (isAtomic()) {<a name="line.3162"></a>
-<span class="sourceLineNo">3163</span>            throw new IOException("Can't apply all operations atomically!");<a name="line.3163"></a>
-<span class="sourceLineNo">3164</span>          }<a name="line.3164"></a>
-<span class="sourceLineNo">3165</span>          break; // Stop acquiring more rows for this batch<a name="line.3165"></a>
-<span class="sourceLineNo">3166</span>        } else {<a name="line.3166"></a>
-<span class="sourceLineNo">3167</span>          acquiredRowLocks.add(rowLock);<a name="line.3167"></a>
-<span class="sourceLineNo">3168</span>        }<a name="line.3168"></a>
-<span class="sourceLineNo">3169</span>        readyToWriteCount++;<a name="line.3169"></a>
-<span class="sourceLineNo">3170</span>      }<a name="line.3170"></a>
-<span class="sourceLineNo">3171</span>      return createMiniBatch(lastIndexExclusive, readyToWriteCount);<a name="line.3171"></a>
-<span class="sourceLineNo">3172</span>    }<a name="line.3172"></a>
-<span class="sourceLineNo">3173</span><a name="line.3173"></a>
-<span class="sourceLineNo">3174</span>    protected MiniBatchOperationInProgress&lt;Mutation&gt; createMiniBatch(final int lastIndexExclusive,<a name="line.3174"></a>
-<span class="sourceLineNo">3175</span>        final int readyToWriteCount) {<a name="line.3175"></a>
-<span class="sourceLineNo">3176</span>      return new MiniBatchOperationInProgress&lt;&gt;(getMutationsForCoprocs(), retCodeDetails,<a name="line.3176"></a>
-<span class="sourceLineNo">3177</span>          walEditsFromCoprocessors, nextIndexToProcess, lastIndexExclusive, readyToWriteCount);<a name="line.3177"></a>
-<span class="sourceLineNo">3178</span>    }<a name="line.3178"></a>
-<span class="sourceLineNo">3179</span><a name="line.3179"></a>
-<span class="sourceLineNo">3180</span>    /**<a name="line.3180"></a>
-<span class="sourceLineNo">3181</span>     * Builds separate WALEdit per nonce by applying input mutations. If WALEdits from CP are<a name="line.3181"></a>
-<span class="sourceLineNo">3182</span>     * present, they are merged to result WALEdit.<a name="line.3182"></a>
-<span class="sourceLineNo">3183</span>     */<a name="line.3183"></a>
-<span class="sourceLineNo">3184</span>    public List&lt;Pair&lt;NonceKey, WALEdit&gt;&gt; buildWALEdits(<a name="line.3184"></a>
-<span class="sourceLineNo">3185</span>        final MiniBatchOperationInProgress&lt;Mutation&gt; miniBatchOp) throws IOException {<a name="line.3185"></a>
-<span class="sourceLineNo">3186</span>      List&lt;Pair&lt;NonceKey, WALEdit&gt;&gt; walEdits = new ArrayList&lt;&gt;();<a name="line.3186"></a>
-<span class="sourceLineNo">3187</span><a name="line.3187"></a>
-<span class="sourceLineNo">3188</span>      visitBatchOperations(true, nextIndexToProcess + miniBatchOp.size(), new Visitor() {<a name="line.3188"></a>
-<span class="sourceLineNo">3189</span>        private Pair&lt;NonceKey, WALEdit&gt; curWALEditForNonce;<a name="line.3189"></a>
-<span class="sourceLineNo">3190</span>        @Override<a name="line.3190"></a>
-<span class="sourceLineNo">3191</span>        public boolean visit(int index) throws IOException {<a name="line.3191"></a>
-<span class="sourceLineNo">3192</span>          Mutation m = getMutation(index);<a name="line.3192"></a>
-<span class="sourceLineNo">3193</span>          // we use durability of the original mutation for the mutation passed by CP.<a name="line.3193"></a>
-<span class="sourceLineNo">3194</span>          if (region.getEffectiveDurability(m.getDurability()) == Durability.SKIP_WAL) {<a name="line.3194"></a>
-<span class="sourceLineNo">3195</span>            region.recordMutationWithoutWal(m.getFamilyCellMap());<a name="line.3195"></a>
-<span class="sourceLineNo">3196</span>            return true;<a name="line.3196"></a>
-<span class="sourceLineNo">3197</span>          }<a name="line.3197"></a>
-<span class="sourceLineNo">3198</span><a name="line.3198"></a>
-<span class="sourceLineNo">3199</span>          // the batch may contain multiple nonce keys (replay case). If so, write WALEdit for each.<a name="line.3199"></a>
-<span class="sourceLineNo">3200</span>          // Given how nonce keys are originally written, these should be contiguous.<a name="line.3200"></a>
-<span class="sourceLineNo">3201</span>          // They don't have to be, it will still work, just write more WALEdits than needed.<a name="line.3201"></a>
-<span class="sourceLineNo">3202</span>          long nonceGroup = getNonceGroup(index);<a name="line.3202"></a>
-<span class="sourceLineNo">3203</span>          long nonce = getNonce(index);<a name="line.3203"></a>
-<span class="sourceLineNo">3204</span>          if (curWALEditForNonce == null ||<a name="line.3204"></a>
-<span class="sourceLineNo">3205</span>              curWALEditForNonce.getFirst().getNonceGroup() != nonceGroup ||<a name="line.3205"></a>
-<span class="sourceLineNo">3206</span>              curWALEditForNonce.getFirst().getNonce() != nonce) {<a name="line.3206"></a>
-<span class="sourceLineNo">3207</span>            curWALEditForNonce = new Pair&lt;&gt;(new NonceKey(nonceGroup, nonce),<a name="line.3207"></a>
-<span class="sourceLineNo">3208</span>                new WALEdit(miniBatchOp.getCellCount(), isInReplay()));<a name="line.3208"></a>
-<span class="sourceLineNo">3209</span>            walEdits.add(curWALEditForNonce);<a name="line.3209"></a>
-<span class="sourceLineNo">3210</span>          }<a name="line.3210"></a>
-<span class="sourceLineNo">3211</span>          WALEdit walEdit = curWALEditForNonce.getSecond();<a name="line.3211"></a>
-<span class="sourceLineNo">3212</span><a name="line.3212"></a>
-<span class="sourceLineNo">3213</span>          // Add WAL edits by CP<a name="line.3213"></a>
-<span class="sourceLineNo">3214</span>          WALEdit fromCP = walEditsFromCoprocessors[index];<a name="line.3214"></a>
-<span class="sourceLineNo">3215</span>          if (fromCP != null) {<a name="line.3215"></a>
-<span class="sourceLineNo">3216</span>            for (Cell cell : fromCP.getCells()) {<a name="line.3216"></a>
-<span class="sourceLineNo">3217</span>              walEdit.add(cell);<a name="line.3217"></a>
-<span class="sourceLineNo">3218</span>            }<a name="line.3218"></a>
-<span class="sourceLineNo">3219</span>          }<a name="line.3219"></a>
-<span class="sourceLineNo">3220</span>          addFamilyMapToWALEdit(familyCellMaps[index], walEdit);<a name="line.3220"></a>
-<span class="sourceLineNo">3221</span><a name="line.3221"></a>
-<span class="sourceLineNo">3222</span>          return true;<a name="line.3222"></a>
-<span class="sourceLineNo">3223</span>        }<a name="line.3223"></a>
-<span class="sourceLineNo">3224</span>      });<a name="line.3224"></a>
-<span class="sourceLineNo">3225</span>      return walEdits;<a name="line.3225"></a>
-<span class="sourceLineNo">3226</span>    }<a name="line.3226"></a>
-<span class="sourceLineNo">3227</span><a name="line.3227"></a>
-<span class="sourceLineNo">3228</span>    /**<a name="line.3228"></a>
-<span class="sourceLineNo">3229</span>     * This method completes mini-batch operations by calling postBatchMutate() CP hook (if<a name="line.3229"></a>
-<span class="sourceLineNo">3230</span>     * required) and completing mvcc.<a name="line.3230"></a>
-<span class="sourceLineNo">3231</span>     */<a name="line.3231"></a>
-<span class="sourceLineNo">3232</span>    public void completeMiniBatchOperations(<a name="line.3232"></a>
-<span class="sourceLineNo">3233</span>        final MiniBatchOperationInProgress&lt;Mutation&gt; miniBatchOp, final WriteEntry writeEntry)<a name="line.3233"></a>
-<span class="sourceLineNo">3234</span>        throws IOException {<a name="line.3234"></a>
-<span class="sourceLineNo">3235</span>      if (writeEntry != null) {<a name="line.3235"></a>
-<span class="sourceLineNo">3236</span>        region.mvcc.completeAndWait(writeEntry);<a name="line.3236"></a>
-<span class="sourceLineNo">3237</span>      }<a name="line.3237"></a>
-<span class="sourceLineNo">3238</span>    }<a name="line.3238"></a>
-<span class="sourceLineNo">3239</span><a name="line.3239"></a>
-<span class="sourceLineNo">3240</span>    public void doPostOpCleanupForMiniBatch(<a name="line.3240"></a>
-<span class="sourceLineNo">3241</span>        final MiniBatchOperationInProgress&lt;Mutation&gt; miniBatchOp, final WALEdit walEdit,<a name="line.3241"></a>
-<span class="sourceLineNo">3242</span>        boolean success) throws IOException {}<a name="line.3242"></a>
-<span class="sourceLineNo">3243</span><a name="line.3243"></a>
-<span class="sourceLineNo">3244</span>    /**<a name="line.3244"></a>
-<span class="sourceLineNo">3245</span>     * Atomically apply the given map of family-&gt;edits to the memstore.<a name="line.3245"></a>
-<span class="sourceLineNo">3246</span>     * This handles the consistency control on its own, but the caller<a name="line.3246"></a>
-<span class="sourceLineNo">3247</span>     * should already have locked updatesLock.readLock(). This also does<a name="line.3247"></a>
-<span class="sourceLineNo">3248</span>     * &lt;b&gt;not&lt;/b&gt; check the families for validity.<a name="line.3248"></a>
-<span class="sourceLineNo">3249</span>     *<a name="line.3249"></a>
-<span class="sourceLineNo">3250</span>     * @param familyMap Map of Cells by family<a name="line.3250"></a>
-<span class="sourceLineNo">3251</span>     */<a name="line.3251"></a>
-<span class="sourceLineNo">3252</span>    protected void applyFamilyMapToMemStore(Map&lt;byte[], List&lt;Cell&gt;&gt; familyMap,<a name="line.3252"></a>
-<span class="sourceLineNo">3253</span>        MemStoreSizing memstoreAccounting) throws IOException {<a name="line.3253"></a>
-<span class="sourceLineNo">3254</span>      for (Map.Entry&lt;byte[], List&lt;Cell&gt;&gt; e : familyMap.entrySet()) {<a name="line.3254"></a>
-<span class="sourceLineNo">3255</span>        byte[] family = e.getKey();<a name="line.3255"></a>
-<span class="sourceLineNo">3256</span>        List&lt;Cell&gt; cells = e.getValue();<a name="line.3256"></a>
-<span class="sourceLineNo">3257</span>        assert cells instanceof RandomAccess;<a name="line.3257"></a>
-<span class="sourceLineNo">3258</span>        region.applyToMemStore(region.getStore(family), cells, false, memstoreAccounting);<a name="line.3258"></a>
-<span class="sourceLineNo">3259</span>      }<a name="line.3259"></a>
-<span class="sourceLineNo">3260</span>    }<a name="line.3260"></a>
-<span class="sourceLineNo">3261</span><a name="line.3261"></a>
-<span class="sourceLineNo">3262</span>    /**<a name="line.3262"></a>
-<span class="sourceLineNo">3263</span>     * Append the given map of family-&gt;edits to a WALEdit data structure.<a name="line.3263"></a>
-<span class="sourceLineNo">3264</span>     * This does not write to the WAL itself.<a name="line.3264"></a>
-<span class="sourceLineNo">3265</span>     * @param familyMap map of family-&gt;edits<a name="line.3265"></a>
-<span class="sourceLineNo">3266</span>     * @param walEdit the destination entry to append into<a name="line.3266"></a>
-<span class="sourceLineNo">3267</span>     */<a name="line.3267"></a>
-<span class="sourceLineNo">3268</span>    private void addFamilyMapToWALEdit(Map&lt;byte[], List&lt;Cell&gt;&gt; familyMap,<a name="line.3268"></a>
-<span class="sourceLineNo">3269</span>        WALEdit walEdit) {<a name="line.3269"></a>
-<span class="sourceLineNo">3270</span>      for (List&lt;Cell&gt; edits : familyMap.values()) {<a name="line.3270"></a>
-<span class="sourceLineNo">3271</span>        // Optimization: 'foreach' loop is not used. See:<a name="line.3271"></a>
-<span class="sourceLineNo">3272</span>        // HBASE-12023 HRegion.applyFamilyMapToMemstore creates too many iterator objects<a name="line.3272"></a>
-<span class="sourceLineNo">3273</span>        assert edits instanceof RandomAccess;<a name="line.3273"></a>
-<span class="sourceLineNo">3274</span>        int listSize = edits.size();<a name="line.3274"></a>
-<span class="sourceLineNo">3275</span>        for (int i=0; i &lt; listSize; i++) {<a name="line.3275"></a>
-<span class="sourceLineNo">3276</span>          Cell cell = edits.get(i);<a name="line.3276"></a>
-<span class="sourceLineNo">3277</span>          walEdit.add(cell);<a name="line.3277"></a>
-<span class="sourceLineNo">3278</span>        }<a name="line.3278"></a>
-<span class="sourceLineNo">3279</span>      }<a name="line.3279"></a>
-<span class="sourceLineNo">3280</span>    }<a name="line.3280"></a>
-<span class="sourceLineNo">3281</span>  }<a name="line.3281"></a>
-<span class="sourceLineNo">3282</span><a name="line.3282"></a>
-<span class="sourceLineNo">3283</span>  /**<a name="line.3283"></a>
-<span class="sourceLineNo">3284</span>   * Batch of mutation operations. Base class is shared with {@link ReplayBatchOperation} as most<a name="line.3284"></a>
-<span class="sourceLineNo">3285</span>   * of the logic is same.<a name="line.3285"></a>
-<span class="sourceLineNo">3286</span>   */<a name="line.3286"></a>
-<span class="sourceLineNo">3287</span>  static class MutationBatchOperation extends BatchOperation&lt;Mutation&gt; {<a name="line.3287"></a>
-<span class="sourceLineNo">3288</span>    private long nonceGroup;<a name="line.3288"></a>
-<span class="sourceLineNo">3289</span>    private long nonce;<a name="line.3289"></a>
-<span class="sourceLineNo">3290</span>    public MutationBatchOperation(final HRegion region, Mutation[] operations, boolean atomic,<a name="line.3290"></a>
-<span class="sourceLineNo">3291</span>        long nonceGroup, long nonce) {<a name="line.3291"></a>
-<span class="sourceLineNo">3292</span>      super(region, operations);<a name="line.3292"></a>
-<span class="sourceLineNo">3293</span>      this.atomic = atomic;<a name="line.3293"></a>
-<span class="sourceLineNo">3294</span>      this.nonceGroup = nonceGroup;<a name="line.3294"></a>
-<span class="sourceLineNo">3295</span>      this.nonce = nonce;<a name="line.3295"></a>
-<span class="sourceLineNo">3296</span>    }<a name="line.3296"></a>
-<span class="sourceLineNo">3297</span><a name="line.3297"></a>
-<span class="sourceLineNo">3298</span>    @Override<a name="line.3298"></a>
-<span class="sourceLineNo">3299</span>    public Mutation getMutation(int index) {<a name="line.3299"></a>
-<span class="sourceLineNo">3300</span>      return this.operations[index];<a name="line.3300"></a>
-<span class="sourceLineNo">3301</span>    }<a name="line.3301"></a>
-<span class="sourceLineNo">3302</span><a name="line.3302"></a>
-<span class="sourceLineNo">3303</span>    @Override<a name="line.3303"></a>
-<span class="sourceLineNo">3304</span>    public long getNonceGroup(int index) {<a name="line.3304"></a>
-<span class="sourceLineNo">3305</span>      return nonceGroup;<a name="line.3305"></a>
-<span class="sourceLineNo">3306</span>    }<a name="line.3306"></a>
-<span class="sourc

<TRUNCATED>

[11/51] [partial] hbase-site git commit: Published site at .

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/c54c242b/hbase-build-configuration/hbase-archetypes/hbase-archetype-builder/dependency-management.html
----------------------------------------------------------------------
diff --git a/hbase-build-configuration/hbase-archetypes/hbase-archetype-builder/dependency-management.html b/hbase-build-configuration/hbase-archetypes/hbase-archetype-builder/dependency-management.html
index f655fb8..9ddef5a 100644
--- a/hbase-build-configuration/hbase-archetypes/hbase-archetype-builder/dependency-management.html
+++ b/hbase-build-configuration/hbase-archetypes/hbase-archetype-builder/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="20171202" />
+    <meta name="Date-Revision-yyyymmdd" content="20171203" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase - Archetype builder &#x2013; Project Dependency Management</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -804,7 +804,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2017-12-02</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2017-12-03</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/c54c242b/hbase-build-configuration/hbase-archetypes/hbase-archetype-builder/index.html
----------------------------------------------------------------------
diff --git a/hbase-build-configuration/hbase-archetypes/hbase-archetype-builder/index.html b/hbase-build-configuration/hbase-archetypes/hbase-archetype-builder/index.html
index 9f2b61d..b6c51a5 100644
--- a/hbase-build-configuration/hbase-archetypes/hbase-archetype-builder/index.html
+++ b/hbase-build-configuration/hbase-archetypes/hbase-archetype-builder/index.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="20171202" />
+    <meta name="Date-Revision-yyyymmdd" content="20171203" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase - Archetype builder &#x2013; About</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -119,7 +119,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2017-12-02</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2017-12-03</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/c54c242b/hbase-build-configuration/hbase-archetypes/hbase-archetype-builder/integration.html
----------------------------------------------------------------------
diff --git a/hbase-build-configuration/hbase-archetypes/hbase-archetype-builder/integration.html b/hbase-build-configuration/hbase-archetypes/hbase-archetype-builder/integration.html
index 781a534..be52b0c 100644
--- a/hbase-build-configuration/hbase-archetypes/hbase-archetype-builder/integration.html
+++ b/hbase-build-configuration/hbase-archetypes/hbase-archetype-builder/integration.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="20171202" />
+    <meta name="Date-Revision-yyyymmdd" content="20171203" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase - Archetype builder &#x2013; CI Management</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -126,7 +126,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2017-12-02</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2017-12-03</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/c54c242b/hbase-build-configuration/hbase-archetypes/hbase-archetype-builder/issue-tracking.html
----------------------------------------------------------------------
diff --git a/hbase-build-configuration/hbase-archetypes/hbase-archetype-builder/issue-tracking.html b/hbase-build-configuration/hbase-archetypes/hbase-archetype-builder/issue-tracking.html
index afd4d1d..4c9ea7a 100644
--- a/hbase-build-configuration/hbase-archetypes/hbase-archetype-builder/issue-tracking.html
+++ b/hbase-build-configuration/hbase-archetypes/hbase-archetype-builder/issue-tracking.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="20171202" />
+    <meta name="Date-Revision-yyyymmdd" content="20171203" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase - Archetype builder &#x2013; Issue Management</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -123,7 +123,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2017-12-02</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2017-12-03</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/c54c242b/hbase-build-configuration/hbase-archetypes/hbase-archetype-builder/license.html
----------------------------------------------------------------------
diff --git a/hbase-build-configuration/hbase-archetypes/hbase-archetype-builder/license.html b/hbase-build-configuration/hbase-archetypes/hbase-archetype-builder/license.html
index 8b1a6b7..9b72fb6 100644
--- a/hbase-build-configuration/hbase-archetypes/hbase-archetype-builder/license.html
+++ b/hbase-build-configuration/hbase-archetypes/hbase-archetype-builder/license.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="20171202" />
+    <meta name="Date-Revision-yyyymmdd" content="20171203" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase - Archetype builder &#x2013; Project Licenses</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -326,7 +326,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2017-12-02</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2017-12-03</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/c54c242b/hbase-build-configuration/hbase-archetypes/hbase-archetype-builder/mail-lists.html
----------------------------------------------------------------------
diff --git a/hbase-build-configuration/hbase-archetypes/hbase-archetype-builder/mail-lists.html b/hbase-build-configuration/hbase-archetypes/hbase-archetype-builder/mail-lists.html
index e43e7c4..bbc14a8 100644
--- a/hbase-build-configuration/hbase-archetypes/hbase-archetype-builder/mail-lists.html
+++ b/hbase-build-configuration/hbase-archetypes/hbase-archetype-builder/mail-lists.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="20171202" />
+    <meta name="Date-Revision-yyyymmdd" content="20171203" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase - Archetype builder &#x2013; Project Mailing Lists</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -176,7 +176,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2017-12-02</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2017-12-03</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/c54c242b/hbase-build-configuration/hbase-archetypes/hbase-archetype-builder/plugin-management.html
----------------------------------------------------------------------
diff --git a/hbase-build-configuration/hbase-archetypes/hbase-archetype-builder/plugin-management.html b/hbase-build-configuration/hbase-archetypes/hbase-archetype-builder/plugin-management.html
index 20cc2a6..09bf341 100644
--- a/hbase-build-configuration/hbase-archetypes/hbase-archetype-builder/plugin-management.html
+++ b/hbase-build-configuration/hbase-archetypes/hbase-archetype-builder/plugin-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="20171202" />
+    <meta name="Date-Revision-yyyymmdd" content="20171203" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase - Archetype builder &#x2013; Project Plugin Management</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -271,7 +271,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2017-12-02</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2017-12-03</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/c54c242b/hbase-build-configuration/hbase-archetypes/hbase-archetype-builder/plugins.html
----------------------------------------------------------------------
diff --git a/hbase-build-configuration/hbase-archetypes/hbase-archetype-builder/plugins.html b/hbase-build-configuration/hbase-archetypes/hbase-archetype-builder/plugins.html
index b236763..f83eab1 100644
--- a/hbase-build-configuration/hbase-archetypes/hbase-archetype-builder/plugins.html
+++ b/hbase-build-configuration/hbase-archetypes/hbase-archetype-builder/plugins.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="20171202" />
+    <meta name="Date-Revision-yyyymmdd" content="20171203" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase - Archetype builder &#x2013; Project Plugins</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -218,7 +218,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2017-12-02</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2017-12-03</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/c54c242b/hbase-build-configuration/hbase-archetypes/hbase-archetype-builder/project-info.html
----------------------------------------------------------------------
diff --git a/hbase-build-configuration/hbase-archetypes/hbase-archetype-builder/project-info.html b/hbase-build-configuration/hbase-archetypes/hbase-archetype-builder/project-info.html
index 136f1f6..06fc86d 100644
--- a/hbase-build-configuration/hbase-archetypes/hbase-archetype-builder/project-info.html
+++ b/hbase-build-configuration/hbase-archetypes/hbase-archetype-builder/project-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="20171202" />
+    <meta name="Date-Revision-yyyymmdd" content="20171203" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase - Archetype builder &#x2013; Project Information</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -167,7 +167,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2017-12-02</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2017-12-03</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/c54c242b/hbase-build-configuration/hbase-archetypes/hbase-archetype-builder/project-summary.html
----------------------------------------------------------------------
diff --git a/hbase-build-configuration/hbase-archetypes/hbase-archetype-builder/project-summary.html b/hbase-build-configuration/hbase-archetypes/hbase-archetype-builder/project-summary.html
index 3b525c5..180a1dc 100644
--- a/hbase-build-configuration/hbase-archetypes/hbase-archetype-builder/project-summary.html
+++ b/hbase-build-configuration/hbase-archetypes/hbase-archetype-builder/project-summary.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="20171202" />
+    <meta name="Date-Revision-yyyymmdd" content="20171203" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase - Archetype builder &#x2013; Project Summary</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -163,7 +163,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2017-12-02</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2017-12-03</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/c54c242b/hbase-build-configuration/hbase-archetypes/hbase-archetype-builder/source-repository.html
----------------------------------------------------------------------
diff --git a/hbase-build-configuration/hbase-archetypes/hbase-archetype-builder/source-repository.html b/hbase-build-configuration/hbase-archetypes/hbase-archetype-builder/source-repository.html
index 74c66c5..b44bafc 100644
--- a/hbase-build-configuration/hbase-archetypes/hbase-archetype-builder/source-repository.html
+++ b/hbase-build-configuration/hbase-archetypes/hbase-archetype-builder/source-repository.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="20171202" />
+    <meta name="Date-Revision-yyyymmdd" content="20171203" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase - Archetype builder &#x2013; Source Code Management</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -134,7 +134,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2017-12-02</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2017-12-03</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/c54c242b/hbase-build-configuration/hbase-archetypes/hbase-archetype-builder/team-list.html
----------------------------------------------------------------------
diff --git a/hbase-build-configuration/hbase-archetypes/hbase-archetype-builder/team-list.html b/hbase-build-configuration/hbase-archetypes/hbase-archetype-builder/team-list.html
index a32d255..e717af7 100644
--- a/hbase-build-configuration/hbase-archetypes/hbase-archetype-builder/team-list.html
+++ b/hbase-build-configuration/hbase-archetypes/hbase-archetype-builder/team-list.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="20171202" />
+    <meta name="Date-Revision-yyyymmdd" content="20171203" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase - Archetype builder &#x2013; Project Team</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -547,7 +547,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2017-12-02</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2017-12-03</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/c54c242b/hbase-build-configuration/hbase-archetypes/hbase-client-project/checkstyle.html
----------------------------------------------------------------------
diff --git a/hbase-build-configuration/hbase-archetypes/hbase-client-project/checkstyle.html b/hbase-build-configuration/hbase-archetypes/hbase-client-project/checkstyle.html
index 71ff079..0ba5a84 100644
--- a/hbase-build-configuration/hbase-archetypes/hbase-client-project/checkstyle.html
+++ b/hbase-build-configuration/hbase-archetypes/hbase-client-project/checkstyle.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="20171202" />
+    <meta name="Date-Revision-yyyymmdd" content="20171203" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase - Exemplar for hbase-client archetype &#x2013; Checkstyle Results</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -244,7 +244,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2017-12-02</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2017-12-03</li>
             </p>
                 </div>
 


[36/51] [partial] hbase-site git commit: Published site at .

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/c54c242b/devapidocs/org/apache/hadoop/hbase/zookeeper/ReadOnlyZKClient.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/zookeeper/ReadOnlyZKClient.html b/devapidocs/org/apache/hadoop/hbase/zookeeper/ReadOnlyZKClient.html
new file mode 100644
index 0000000..deec7b1
--- /dev/null
+++ b/devapidocs/org/apache/hadoop/hbase/zookeeper/ReadOnlyZKClient.html
@@ -0,0 +1,698 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<!-- NewPage -->
+<html lang="en">
+<head>
+<!-- Generated by javadoc -->
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title>ReadOnlyZKClient (Apache HBase 3.0.0-SNAPSHOT API)</title>
+<link rel="stylesheet" type="text/css" href="../../../../../stylesheet.css" title="Style">
+<script type="text/javascript" src="../../../../../script.js"></script>
+</head>
+<body>
+<script type="text/javascript"><!--
+    try {
+        if (location.href.indexOf('is-external=true') == -1) {
+            parent.document.title="ReadOnlyZKClient (Apache HBase 3.0.0-SNAPSHOT API)";
+        }
+    }
+    catch(err) {
+    }
+//-->
+var methods = {"i0":10,"i1":10,"i2":10,"i3":9,"i4":10,"i5":10,"i6":10,"i7":10,"i8":10,"i9":10};
+var tabs = {65535:["t0","All Methods"],1:["t1","Static Methods"],2:["t2","Instance Methods"],8:["t4","Concrete Methods"]};
+var altColor = "altColor";
+var rowColor = "rowColor";
+var tableTab = "tableTab";
+var activeTableTab = "activeTableTab";
+</script>
+<noscript>
+<div>JavaScript is disabled on your browser.</div>
+</noscript>
+<!-- ========= START OF TOP NAVBAR ======= -->
+<div class="topNav"><a name="navbar.top">
+<!--   -->
+</a>
+<div class="skipNav"><a href="#skip.navbar.top" title="Skip navigation links">Skip navigation links</a></div>
+<a name="navbar.top.firstrow">
+<!--   -->
+</a>
+<ul class="navList" title="Navigation">
+<li><a href="../../../../../overview-summary.html">Overview</a></li>
+<li><a href="package-summary.html">Package</a></li>
+<li class="navBarCell1Rev">Class</li>
+<li><a href="class-use/ReadOnlyZKClient.html">Use</a></li>
+<li><a href="package-tree.html">Tree</a></li>
+<li><a href="../../../../../deprecated-list.html">Deprecated</a></li>
+<li><a href="../../../../../index-all.html">Index</a></li>
+<li><a href="../../../../../help-doc.html">Help</a></li>
+</ul>
+</div>
+<div class="subNav">
+<ul class="navList">
+<li><a href="../../../../../org/apache/hadoop/hbase/zookeeper/PendingWatcher.html" title="class in org.apache.hadoop.hbase.zookeeper"><span class="typeNameLink">Prev&nbsp;Class</span></a></li>
+<li><a href="../../../../../org/apache/hadoop/hbase/zookeeper/ReadOnlyZKClient.Task.html" title="class in org.apache.hadoop.hbase.zookeeper"><span class="typeNameLink">Next&nbsp;Class</span></a></li>
+</ul>
+<ul class="navList">
+<li><a href="../../../../../index.html?org/apache/hadoop/hbase/zookeeper/ReadOnlyZKClient.html" target="_top">Frames</a></li>
+<li><a href="ReadOnlyZKClient.html" target="_top">No&nbsp;Frames</a></li>
+</ul>
+<ul class="navList" id="allclasses_navbar_top">
+<li><a href="../../../../../allclasses-noframe.html">All&nbsp;Classes</a></li>
+</ul>
+<div>
+<script type="text/javascript"><!--
+  allClassesLink = document.getElementById("allclasses_navbar_top");
+  if(window==top) {
+    allClassesLink.style.display = "block";
+  }
+  else {
+    allClassesLink.style.display = "none";
+  }
+  //-->
+</script>
+</div>
+<div>
+<ul class="subNavList">
+<li>Summary:&nbsp;</li>
+<li><a href="#nested.class.summary">Nested</a>&nbsp;|&nbsp;</li>
+<li><a href="#field.summary">Field</a>&nbsp;|&nbsp;</li>
+<li><a href="#constructor.summary">Constr</a>&nbsp;|&nbsp;</li>
+<li><a href="#method.summary">Method</a></li>
+</ul>
+<ul class="subNavList">
+<li>Detail:&nbsp;</li>
+<li><a href="#field.detail">Field</a>&nbsp;|&nbsp;</li>
+<li><a href="#constructor.detail">Constr</a>&nbsp;|&nbsp;</li>
+<li><a href="#method.detail">Method</a></li>
+</ul>
+</div>
+<a name="skip.navbar.top">
+<!--   -->
+</a></div>
+<!-- ========= END OF TOP NAVBAR ========= -->
+<!-- ======== START OF CLASS DATA ======== -->
+<div class="header">
+<div class="subTitle">org.apache.hadoop.hbase.zookeeper</div>
+<h2 title="Class ReadOnlyZKClient" class="title">Class ReadOnlyZKClient</h2>
+</div>
+<div class="contentContainer">
+<ul class="inheritance">
+<li><a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">java.lang.Object</a></li>
+<li>
+<ul class="inheritance">
+<li>org.apache.hadoop.hbase.zookeeper.ReadOnlyZKClient</li>
+</ul>
+</li>
+</ul>
+<div class="description">
+<ul class="blockList">
+<li class="blockList">
+<dl>
+<dt>All Implemented Interfaces:</dt>
+<dd><a href="http://docs.oracle.com/javase/8/docs/api/java/io/Closeable.html?is-external=true" title="class or interface in java.io">Closeable</a>, <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/AutoCloseable.html?is-external=true" title="class or interface in java.lang">AutoCloseable</a></dd>
+</dl>
+<hr>
+<br>
+<pre>@InterfaceAudience.Private
+public final class <a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/ReadOnlyZKClient.html#line.48">ReadOnlyZKClient</a>
+extends <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a>
+implements <a href="http://docs.oracle.com/javase/8/docs/api/java/io/Closeable.html?is-external=true" title="class or interface in java.io">Closeable</a></pre>
+<div class="block">A very simple read only zookeeper implementation without watcher support.</div>
+</li>
+</ul>
+</div>
+<div class="summary">
+<ul class="blockList">
+<li class="blockList">
+<!-- ======== NESTED CLASS SUMMARY ======== -->
+<ul class="blockList">
+<li class="blockList"><a name="nested.class.summary">
+<!--   -->
+</a>
+<h3>Nested Class Summary</h3>
+<table class="memberSummary" border="0" cellpadding="3" cellspacing="0" summary="Nested Class Summary table, listing nested classes, and an explanation">
+<caption><span>Nested Classes</span><span class="tabEnd">&nbsp;</span></caption>
+<tr>
+<th class="colFirst" scope="col">Modifier and Type</th>
+<th class="colLast" scope="col">Class and Description</th>
+</tr>
+<tr class="altColor">
+<td class="colFirst"><code>private static class&nbsp;</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/zookeeper/ReadOnlyZKClient.Task.html" title="class in org.apache.hadoop.hbase.zookeeper">ReadOnlyZKClient.Task</a></span></code>&nbsp;</td>
+</tr>
+<tr class="rowColor">
+<td class="colFirst"><code>private class&nbsp;</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/zookeeper/ReadOnlyZKClient.ZKTask.html" title="class in org.apache.hadoop.hbase.zookeeper">ReadOnlyZKClient.ZKTask</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/zookeeper/ReadOnlyZKClient.ZKTask.html" title="type parameter in ReadOnlyZKClient.ZKTask">T</a>&gt;</span></code>&nbsp;</td>
+</tr>
+</table>
+</li>
+</ul>
+<!-- =========== FIELD SUMMARY =========== -->
+<ul class="blockList">
+<li class="blockList"><a name="field.summary">
+<!--   -->
+</a>
+<h3>Field Summary</h3>
+<table class="memberSummary" border="0" cellpadding="3" cellspacing="0" summary="Field Summary table, listing fields, and an explanation">
+<caption><span>Fields</span><span class="tabEnd">&nbsp;</span></caption>
+<tr>
+<th class="colFirst" scope="col">Modifier and Type</th>
+<th class="colLast" scope="col">Field and Description</th>
+</tr>
+<tr class="altColor">
+<td class="colFirst"><code>private static <a href="../../../../../org/apache/hadoop/hbase/zookeeper/ReadOnlyZKClient.Task.html" title="class in org.apache.hadoop.hbase.zookeeper">ReadOnlyZKClient.Task</a></code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/zookeeper/ReadOnlyZKClient.html#CLOSE">CLOSE</a></span></code>&nbsp;</td>
+</tr>
+<tr class="rowColor">
+<td class="colFirst"><code>private <a href="http://docs.oracle.com/javase/8/docs/api/java/util/concurrent/atomic/AtomicBoolean.html?is-external=true" title="class or interface in java.util.concurrent.atomic">AtomicBoolean</a></code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/zookeeper/ReadOnlyZKClient.html#closed">closed</a></span></code>&nbsp;</td>
+</tr>
+<tr class="altColor">
+<td class="colFirst"><code>private <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 class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/zookeeper/ReadOnlyZKClient.html#connectString">connectString</a></span></code>&nbsp;</td>
+</tr>
+<tr class="rowColor">
+<td class="colFirst"><code>private static int</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/zookeeper/ReadOnlyZKClient.html#DEFAULT_KEEPALIVE_MILLIS">DEFAULT_KEEPALIVE_MILLIS</a></span></code>&nbsp;</td>
+</tr>
+<tr class="altColor">
+<td class="colFirst"><code>private static int</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/zookeeper/ReadOnlyZKClient.html#DEFAULT_RECOVERY_RETRY">DEFAULT_RECOVERY_RETRY</a></span></code>&nbsp;</td>
+</tr>
+<tr class="rowColor">
+<td class="colFirst"><code>private static int</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/zookeeper/ReadOnlyZKClient.html#DEFAULT_RECOVERY_RETRY_INTERVAL_MILLIS">DEFAULT_RECOVERY_RETRY_INTERVAL_MILLIS</a></span></code>&nbsp;</td>
+</tr>
+<tr class="altColor">
+<td class="colFirst"><code>private static <a href="http://docs.oracle.com/javase/8/docs/api/java/util/EnumSet.html?is-external=true" title="class or interface in java.util">EnumSet</a>&lt;org.apache.zookeeper.KeeperException.Code&gt;</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/zookeeper/ReadOnlyZKClient.html#FAIL_FAST_CODES">FAIL_FAST_CODES</a></span></code>&nbsp;</td>
+</tr>
+<tr class="rowColor">
+<td class="colFirst"><code>static <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 class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/zookeeper/ReadOnlyZKClient.html#KEEPALIVE_MILLIS">KEEPALIVE_MILLIS</a></span></code>&nbsp;</td>
+</tr>
+<tr class="altColor">
+<td class="colFirst"><code>private int</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/zookeeper/ReadOnlyZKClient.html#keepAliveTimeMs">keepAliveTimeMs</a></span></code>&nbsp;</td>
+</tr>
+<tr class="rowColor">
+<td class="colFirst"><code>private static org.apache.commons.logging.Log</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/zookeeper/ReadOnlyZKClient.html#LOG">LOG</a></span></code>&nbsp;</td>
+</tr>
+<tr class="altColor">
+<td class="colFirst"><code>private int</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/zookeeper/ReadOnlyZKClient.html#maxRetries">maxRetries</a></span></code>&nbsp;</td>
+</tr>
+<tr class="rowColor">
+<td class="colFirst"><code>static <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 class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/zookeeper/ReadOnlyZKClient.html#RECOVERY_RETRY">RECOVERY_RETRY</a></span></code>&nbsp;</td>
+</tr>
+<tr class="altColor">
+<td class="colFirst"><code>static <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 class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/zookeeper/ReadOnlyZKClient.html#RECOVERY_RETRY_INTERVAL_MILLIS">RECOVERY_RETRY_INTERVAL_MILLIS</a></span></code>&nbsp;</td>
+</tr>
+<tr class="rowColor">
+<td class="colFirst"><code>private int</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/zookeeper/ReadOnlyZKClient.html#retryIntervalMs">retryIntervalMs</a></span></code>&nbsp;</td>
+</tr>
+<tr class="altColor">
+<td class="colFirst"><code>private int</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/zookeeper/ReadOnlyZKClient.html#sessionTimeoutMs">sessionTimeoutMs</a></span></code>&nbsp;</td>
+</tr>
+<tr class="rowColor">
+<td class="colFirst"><code>private <a href="http://docs.oracle.com/javase/8/docs/api/java/util/concurrent/DelayQueue.html?is-external=true" title="class or interface in java.util.concurrent">DelayQueue</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/zookeeper/ReadOnlyZKClient.Task.html" title="class in org.apache.hadoop.hbase.zookeeper">ReadOnlyZKClient.Task</a>&gt;</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/zookeeper/ReadOnlyZKClient.html#tasks">tasks</a></span></code>&nbsp;</td>
+</tr>
+<tr class="altColor">
+<td class="colFirst"><code>private org.apache.zookeeper.ZooKeeper</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/zookeeper/ReadOnlyZKClient.html#zookeeper">zookeeper</a></span></code>&nbsp;</td>
+</tr>
+</table>
+</li>
+</ul>
+<!-- ======== CONSTRUCTOR SUMMARY ======== -->
+<ul class="blockList">
+<li class="blockList"><a name="constructor.summary">
+<!--   -->
+</a>
+<h3>Constructor Summary</h3>
+<table class="memberSummary" border="0" cellpadding="3" cellspacing="0" summary="Constructor Summary table, listing constructors, and an explanation">
+<caption><span>Constructors</span><span class="tabEnd">&nbsp;</span></caption>
+<tr>
+<th class="colOne" scope="col">Constructor and Description</th>
+</tr>
+<tr class="altColor">
+<td class="colOne"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/zookeeper/ReadOnlyZKClient.html#ReadOnlyZKClient-org.apache.hadoop.conf.Configuration-">ReadOnlyZKClient</a></span>(org.apache.hadoop.conf.Configuration&nbsp;conf)</code>&nbsp;</td>
+</tr>
+</table>
+</li>
+</ul>
+<!-- ========== METHOD SUMMARY =========== -->
+<ul class="blockList">
+<li class="blockList"><a name="method.summary">
+<!--   -->
+</a>
+<h3>Method Summary</h3>
+<table class="memberSummary" border="0" cellpadding="3" cellspacing="0" summary="Method Summary table, listing methods, and an explanation">
+<caption><span id="t0" class="activeTableTab"><span>All Methods</span><span class="tabEnd">&nbsp;</span></span><span id="t1" class="tableTab"><span><a href="javascript:show(1);">Static Methods</a></span><span class="tabEnd">&nbsp;</span></span><span id="t2" class="tableTab"><span><a href="javascript:show(2);">Instance Methods</a></span><span class="tabEnd">&nbsp;</span></span><span id="t4" class="tableTab"><span><a href="javascript:show(8);">Concrete Methods</a></span><span class="tabEnd">&nbsp;</span></span></caption>
+<tr>
+<th class="colFirst" scope="col">Modifier and Type</th>
+<th class="colLast" scope="col">Method and Description</th>
+</tr>
+<tr id="i0" class="altColor">
+<td class="colFirst"><code>void</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/zookeeper/ReadOnlyZKClient.html#close--">close</a></span>()</code>&nbsp;</td>
+</tr>
+<tr id="i1" class="rowColor">
+<td class="colFirst"><code>private void</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/zookeeper/ReadOnlyZKClient.html#closeZk--">closeZk</a></span>()</code>&nbsp;</td>
+</tr>
+<tr id="i2" class="altColor">
+<td class="colFirst"><code><a href="http://docs.oracle.com/javase/8/docs/api/java/util/concurrent/CompletableFuture.html?is-external=true" title="class or interface in java.util.concurrent">CompletableFuture</a>&lt;org.apache.zookeeper.data.Stat&gt;</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/zookeeper/ReadOnlyZKClient.html#exists-java.lang.String-">exists</a></span>(<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;path)</code>&nbsp;</td>
+</tr>
+<tr id="i3" class="rowColor">
+<td class="colFirst"><code>private static &lt;T&gt;&nbsp;<a href="http://docs.oracle.com/javase/8/docs/api/java/util/concurrent/CompletableFuture.html?is-external=true" title="class or interface in java.util.concurrent">CompletableFuture</a>&lt;T&gt;</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/zookeeper/ReadOnlyZKClient.html#failed-java.lang.Throwable-">failed</a></span>(<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Throwable.html?is-external=true" title="class or interface in java.lang">Throwable</a>&nbsp;e)</code>&nbsp;</td>
+</tr>
+<tr id="i4" class="altColor">
+<td class="colFirst"><code><a href="http://docs.oracle.com/javase/8/docs/api/java/util/concurrent/CompletableFuture.html?is-external=true" title="class or interface in java.util.concurrent">CompletableFuture</a>&lt;byte[]&gt;</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/zookeeper/ReadOnlyZKClient.html#get-java.lang.String-">get</a></span>(<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;path)</code>&nbsp;</td>
+</tr>
+<tr id="i5" class="rowColor">
+<td class="colFirst"><code><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 class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/zookeeper/ReadOnlyZKClient.html#getConnectString--">getConnectString</a></span>()</code>&nbsp;</td>
+</tr>
+<tr id="i6" class="altColor">
+<td class="colFirst"><code>private <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 class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/zookeeper/ReadOnlyZKClient.html#getId--">getId</a></span>()</code>&nbsp;</td>
+</tr>
+<tr id="i7" class="rowColor">
+<td class="colFirst"><code>private org.apache.zookeeper.ZooKeeper</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/zookeeper/ReadOnlyZKClient.html#getZk--">getZk</a></span>()</code>&nbsp;</td>
+</tr>
+<tr id="i8" class="altColor">
+<td class="colFirst"><code>(package private) org.apache.zookeeper.ZooKeeper</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/zookeeper/ReadOnlyZKClient.html#getZooKeeper--">getZooKeeper</a></span>()</code>&nbsp;</td>
+</tr>
+<tr id="i9" class="rowColor">
+<td class="colFirst"><code>private void</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/zookeeper/ReadOnlyZKClient.html#run--">run</a></span>()</code>&nbsp;</td>
+</tr>
+</table>
+<ul class="blockList">
+<li class="blockList"><a name="methods.inherited.from.class.java.lang.Object">
+<!--   -->
+</a>
+<h3>Methods inherited from class&nbsp;java.lang.<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a></h3>
+<code><a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#clone--" title="class or interface in java.lang">clone</a>, <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#equals-java.lang.Object-" title="class or interface in java.lang">equals</a>, <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#finalize--" title="class or interface in java.lang">finalize</a>, <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#getClass--" title="class or interface in java.lang">getClass</a>, <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#hashCode--" title="class or interface in java.lang">hashCode</a>, <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notify--" title="class or interface in java.lang">notify</a>, <a href="http://docs.oracle.com/javase/8/docs/api/java/lang
 /Object.html?is-external=true#notifyAll--" title="class or interface in java.lang">notifyAll</a>, <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#toString--" title="class or interface in java.lang">toString</a>, <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait--" title="class or interface in java.lang">wait</a>, <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-" title="class or interface in java.lang">wait</a>, <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-int-" title="class or interface in java.lang">wait</a></code></li>
+</ul>
+</li>
+</ul>
+</li>
+</ul>
+</div>
+<div class="details">
+<ul class="blockList">
+<li class="blockList">
+<!-- ============ FIELD DETAIL =========== -->
+<ul class="blockList">
+<li class="blockList"><a name="field.detail">
+<!--   -->
+</a>
+<h3>Field Detail</h3>
+<a name="LOG">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>LOG</h4>
+<pre>private static final&nbsp;org.apache.commons.logging.Log <a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/ReadOnlyZKClient.html#line.50">LOG</a></pre>
+</li>
+</ul>
+<a name="RECOVERY_RETRY">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>RECOVERY_RETRY</h4>
+<pre>public static 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> <a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/ReadOnlyZKClient.html#line.52">RECOVERY_RETRY</a></pre>
+<dl>
+<dt><span class="seeLabel">See Also:</span></dt>
+<dd><a href="../../../../../constant-values.html#org.apache.hadoop.hbase.zookeeper.ReadOnlyZKClient.RECOVERY_RETRY">Constant Field Values</a></dd>
+</dl>
+</li>
+</ul>
+<a name="DEFAULT_RECOVERY_RETRY">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>DEFAULT_RECOVERY_RETRY</h4>
+<pre>private static final&nbsp;int <a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/ReadOnlyZKClient.html#line.54">DEFAULT_RECOVERY_RETRY</a></pre>
+<dl>
+<dt><span class="seeLabel">See Also:</span></dt>
+<dd><a href="../../../../../constant-values.html#org.apache.hadoop.hbase.zookeeper.ReadOnlyZKClient.DEFAULT_RECOVERY_RETRY">Constant Field Values</a></dd>
+</dl>
+</li>
+</ul>
+<a name="RECOVERY_RETRY_INTERVAL_MILLIS">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>RECOVERY_RETRY_INTERVAL_MILLIS</h4>
+<pre>public static 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> <a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/ReadOnlyZKClient.html#line.56">RECOVERY_RETRY_INTERVAL_MILLIS</a></pre>
+<dl>
+<dt><span class="seeLabel">See Also:</span></dt>
+<dd><a href="../../../../../constant-values.html#org.apache.hadoop.hbase.zookeeper.ReadOnlyZKClient.RECOVERY_RETRY_INTERVAL_MILLIS">Constant Field Values</a></dd>
+</dl>
+</li>
+</ul>
+<a name="DEFAULT_RECOVERY_RETRY_INTERVAL_MILLIS">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>DEFAULT_RECOVERY_RETRY_INTERVAL_MILLIS</h4>
+<pre>private static final&nbsp;int <a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/ReadOnlyZKClient.html#line.59">DEFAULT_RECOVERY_RETRY_INTERVAL_MILLIS</a></pre>
+<dl>
+<dt><span class="seeLabel">See Also:</span></dt>
+<dd><a href="../../../../../constant-values.html#org.apache.hadoop.hbase.zookeeper.ReadOnlyZKClient.DEFAULT_RECOVERY_RETRY_INTERVAL_MILLIS">Constant Field Values</a></dd>
+</dl>
+</li>
+</ul>
+<a name="KEEPALIVE_MILLIS">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>KEEPALIVE_MILLIS</h4>
+<pre>public static 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> <a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/ReadOnlyZKClient.html#line.61">KEEPALIVE_MILLIS</a></pre>
+<dl>
+<dt><span class="seeLabel">See Also:</span></dt>
+<dd><a href="../../../../../constant-values.html#org.apache.hadoop.hbase.zookeeper.ReadOnlyZKClient.KEEPALIVE_MILLIS">Constant Field Values</a></dd>
+</dl>
+</li>
+</ul>
+<a name="DEFAULT_KEEPALIVE_MILLIS">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>DEFAULT_KEEPALIVE_MILLIS</h4>
+<pre>private static final&nbsp;int <a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/ReadOnlyZKClient.html#line.63">DEFAULT_KEEPALIVE_MILLIS</a></pre>
+<dl>
+<dt><span class="seeLabel">See Also:</span></dt>
+<dd><a href="../../../../../constant-values.html#org.apache.hadoop.hbase.zookeeper.ReadOnlyZKClient.DEFAULT_KEEPALIVE_MILLIS">Constant Field Values</a></dd>
+</dl>
+</li>
+</ul>
+<a name="FAIL_FAST_CODES">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>FAIL_FAST_CODES</h4>
+<pre>private static final&nbsp;<a href="http://docs.oracle.com/javase/8/docs/api/java/util/EnumSet.html?is-external=true" title="class or interface in java.util">EnumSet</a>&lt;org.apache.zookeeper.KeeperException.Code&gt; <a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/ReadOnlyZKClient.html#line.65">FAIL_FAST_CODES</a></pre>
+</li>
+</ul>
+<a name="connectString">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>connectString</h4>
+<pre>private 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> <a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/ReadOnlyZKClient.html#line.67">connectString</a></pre>
+</li>
+</ul>
+<a name="sessionTimeoutMs">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>sessionTimeoutMs</h4>
+<pre>private final&nbsp;int <a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/ReadOnlyZKClient.html#line.69">sessionTimeoutMs</a></pre>
+</li>
+</ul>
+<a name="maxRetries">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>maxRetries</h4>
+<pre>private final&nbsp;int <a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/ReadOnlyZKClient.html#line.71">maxRetries</a></pre>
+</li>
+</ul>
+<a name="retryIntervalMs">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>retryIntervalMs</h4>
+<pre>private final&nbsp;int <a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/ReadOnlyZKClient.html#line.73">retryIntervalMs</a></pre>
+</li>
+</ul>
+<a name="keepAliveTimeMs">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>keepAliveTimeMs</h4>
+<pre>private final&nbsp;int <a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/ReadOnlyZKClient.html#line.75">keepAliveTimeMs</a></pre>
+</li>
+</ul>
+<a name="CLOSE">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>CLOSE</h4>
+<pre>private static final&nbsp;<a href="../../../../../org/apache/hadoop/hbase/zookeeper/ReadOnlyZKClient.Task.html" title="class in org.apache.hadoop.hbase.zookeeper">ReadOnlyZKClient.Task</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/ReadOnlyZKClient.html#line.110">CLOSE</a></pre>
+</li>
+</ul>
+<a name="tasks">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>tasks</h4>
+<pre>private final&nbsp;<a href="http://docs.oracle.com/javase/8/docs/api/java/util/concurrent/DelayQueue.html?is-external=true" title="class or interface in java.util.concurrent">DelayQueue</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/zookeeper/ReadOnlyZKClient.Task.html" title="class in org.apache.hadoop.hbase.zookeeper">ReadOnlyZKClient.Task</a>&gt; <a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/ReadOnlyZKClient.html#line.113">tasks</a></pre>
+</li>
+</ul>
+<a name="closed">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>closed</h4>
+<pre>private final&nbsp;<a href="http://docs.oracle.com/javase/8/docs/api/java/util/concurrent/atomic/AtomicBoolean.html?is-external=true" title="class or interface in java.util.concurrent.atomic">AtomicBoolean</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/ReadOnlyZKClient.html#line.115">closed</a></pre>
+</li>
+</ul>
+<a name="zookeeper">
+<!--   -->
+</a>
+<ul class="blockListLast">
+<li class="blockList">
+<h4>zookeeper</h4>
+<pre>private&nbsp;org.apache.zookeeper.ZooKeeper <a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/ReadOnlyZKClient.html#line.117">zookeeper</a></pre>
+</li>
+</ul>
+</li>
+</ul>
+<!-- ========= CONSTRUCTOR DETAIL ======== -->
+<ul class="blockList">
+<li class="blockList"><a name="constructor.detail">
+<!--   -->
+</a>
+<h3>Constructor Detail</h3>
+<a name="ReadOnlyZKClient-org.apache.hadoop.conf.Configuration-">
+<!--   -->
+</a>
+<ul class="blockListLast">
+<li class="blockList">
+<h4>ReadOnlyZKClient</h4>
+<pre>public&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/ReadOnlyZKClient.html#line.123">ReadOnlyZKClient</a>(org.apache.hadoop.conf.Configuration&nbsp;conf)</pre>
+</li>
+</ul>
+</li>
+</ul>
+<!-- ============ METHOD DETAIL ========== -->
+<ul class="blockList">
+<li class="blockList"><a name="method.detail">
+<!--   -->
+</a>
+<h3>Method Detail</h3>
+<a name="getId--">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>getId</h4>
+<pre>private&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/zookeeper/ReadOnlyZKClient.html#line.119">getId</a>()</pre>
+</li>
+</ul>
+<a name="failed-java.lang.Throwable-">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>failed</h4>
+<pre>private static&nbsp;&lt;T&gt;&nbsp;<a href="http://docs.oracle.com/javase/8/docs/api/java/util/concurrent/CompletableFuture.html?is-external=true" title="class or interface in java.util.concurrent">CompletableFuture</a>&lt;T&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/ReadOnlyZKClient.html#line.238">failed</a>(<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Throwable.html?is-external=true" title="class or interface in java.lang">Throwable</a>&nbsp;e)</pre>
+</li>
+</ul>
+<a name="get-java.lang.String-">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>get</h4>
+<pre>public&nbsp;<a href="http://docs.oracle.com/javase/8/docs/api/java/util/concurrent/CompletableFuture.html?is-external=true" title="class or interface in java.util.concurrent">CompletableFuture</a>&lt;byte[]&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/ReadOnlyZKClient.html#line.244">get</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;path)</pre>
+</li>
+</ul>
+<a name="exists-java.lang.String-">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>exists</h4>
+<pre>public&nbsp;<a href="http://docs.oracle.com/javase/8/docs/api/java/util/concurrent/CompletableFuture.html?is-external=true" title="class or interface in java.util.concurrent">CompletableFuture</a>&lt;org.apache.zookeeper.data.Stat&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/ReadOnlyZKClient.html#line.260">exists</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;path)</pre>
+</li>
+</ul>
+<a name="closeZk--">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>closeZk</h4>
+<pre>private&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/ReadOnlyZKClient.html#line.275">closeZk</a>()</pre>
+</li>
+</ul>
+<a name="getZk--">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>getZk</h4>
+<pre>private&nbsp;org.apache.zookeeper.ZooKeeper&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/ReadOnlyZKClient.html#line.285">getZk</a>()
+                                      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>
+<dl>
+<dt><span class="throwsLabel">Throws:</span></dt>
+<dd><code><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></code></dd>
+</dl>
+</li>
+</ul>
+<a name="run--">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>run</h4>
+<pre>private&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/ReadOnlyZKClient.html#line.294">run</a>()</pre>
+</li>
+</ul>
+<a name="close--">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>close</h4>
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/ReadOnlyZKClient.html#line.331">close</a>()</pre>
+<dl>
+<dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
+<dd><code><a href="http://docs.oracle.com/javase/8/docs/api/java/io/Closeable.html?is-external=true#close--" title="class or interface in java.io">close</a></code>&nbsp;in interface&nbsp;<code><a href="http://docs.oracle.com/javase/8/docs/api/java/io/Closeable.html?is-external=true" title="class or interface in java.io">Closeable</a></code></dd>
+<dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
+<dd><code><a href="http://docs.oracle.com/javase/8/docs/api/java/lang/AutoCloseable.html?is-external=true#close--" title="class or interface in java.lang">close</a></code>&nbsp;in interface&nbsp;<code><a href="http://docs.oracle.com/javase/8/docs/api/java/lang/AutoCloseable.html?is-external=true" title="class or interface in java.lang">AutoCloseable</a></code></dd>
+</dl>
+</li>
+</ul>
+<a name="getZooKeeper--">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>getZooKeeper</h4>
+<pre>org.apache.zookeeper.ZooKeeper&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/ReadOnlyZKClient.html#line.339">getZooKeeper</a>()</pre>
+</li>
+</ul>
+<a name="getConnectString--">
+<!--   -->
+</a>
+<ul class="blockListLast">
+<li class="blockList">
+<h4>getConnectString</h4>
+<pre>public&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/zookeeper/ReadOnlyZKClient.html#line.344">getConnectString</a>()</pre>
+</li>
+</ul>
+</li>
+</ul>
+</li>
+</ul>
+</div>
+</div>
+<!-- ========= END OF CLASS DATA ========= -->
+<!-- ======= START OF BOTTOM NAVBAR ====== -->
+<div class="bottomNav"><a name="navbar.bottom">
+<!--   -->
+</a>
+<div class="skipNav"><a href="#skip.navbar.bottom" title="Skip navigation links">Skip navigation links</a></div>
+<a name="navbar.bottom.firstrow">
+<!--   -->
+</a>
+<ul class="navList" title="Navigation">
+<li><a href="../../../../../overview-summary.html">Overview</a></li>
+<li><a href="package-summary.html">Package</a></li>
+<li class="navBarCell1Rev">Class</li>
+<li><a href="class-use/ReadOnlyZKClient.html">Use</a></li>
+<li><a href="package-tree.html">Tree</a></li>
+<li><a href="../../../../../deprecated-list.html">Deprecated</a></li>
+<li><a href="../../../../../index-all.html">Index</a></li>
+<li><a href="../../../../../help-doc.html">Help</a></li>
+</ul>
+</div>
+<div class="subNav">
+<ul class="navList">
+<li><a href="../../../../../org/apache/hadoop/hbase/zookeeper/PendingWatcher.html" title="class in org.apache.hadoop.hbase.zookeeper"><span class="typeNameLink">Prev&nbsp;Class</span></a></li>
+<li><a href="../../../../../org/apache/hadoop/hbase/zookeeper/ReadOnlyZKClient.Task.html" title="class in org.apache.hadoop.hbase.zookeeper"><span class="typeNameLink">Next&nbsp;Class</span></a></li>
+</ul>
+<ul class="navList">
+<li><a href="../../../../../index.html?org/apache/hadoop/hbase/zookeeper/ReadOnlyZKClient.html" target="_top">Frames</a></li>
+<li><a href="ReadOnlyZKClient.html" target="_top">No&nbsp;Frames</a></li>
+</ul>
+<ul class="navList" id="allclasses_navbar_bottom">
+<li><a href="../../../../../allclasses-noframe.html">All&nbsp;Classes</a></li>
+</ul>
+<div>
+<script type="text/javascript"><!--
+  allClassesLink = document.getElementById("allclasses_navbar_bottom");
+  if(window==top) {
+    allClassesLink.style.display = "block";
+  }
+  else {
+    allClassesLink.style.display = "none";
+  }
+  //-->
+</script>
+</div>
+<div>
+<ul class="subNavList">
+<li>Summary:&nbsp;</li>
+<li><a href="#nested.class.summary">Nested</a>&nbsp;|&nbsp;</li>
+<li><a href="#field.summary">Field</a>&nbsp;|&nbsp;</li>
+<li><a href="#constructor.summary">Constr</a>&nbsp;|&nbsp;</li>
+<li><a href="#method.summary">Method</a></li>
+</ul>
+<ul class="subNavList">
+<li>Detail:&nbsp;</li>
+<li><a href="#field.detail">Field</a>&nbsp;|&nbsp;</li>
+<li><a href="#constructor.detail">Constr</a>&nbsp;|&nbsp;</li>
+<li><a href="#method.detail">Method</a></li>
+</ul>
+</div>
+<a name="skip.navbar.bottom">
+<!--   -->
+</a></div>
+<!-- ======== END OF BOTTOM NAVBAR ======= -->
+<p class="legalCopy"><small>Copyright &#169; 2007&#x2013;2017 <a href="https://www.apache.org/">The Apache Software Foundation</a>. All rights reserved.</small></p>
+</body>
+</html>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/c54c242b/devapidocs/org/apache/hadoop/hbase/zookeeper/RecoverableZooKeeper.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/zookeeper/RecoverableZooKeeper.html b/devapidocs/org/apache/hadoop/hbase/zookeeper/RecoverableZooKeeper.html
index 511d474..253b8f3 100644
--- a/devapidocs/org/apache/hadoop/hbase/zookeeper/RecoverableZooKeeper.html
+++ b/devapidocs/org/apache/hadoop/hbase/zookeeper/RecoverableZooKeeper.html
@@ -49,7 +49,7 @@ var activeTableTab = "activeTableTab";
 </div>
 <div class="subNav">
 <ul class="navList">
-<li><a href="../../../../../org/apache/hadoop/hbase/zookeeper/PendingWatcher.html" title="class in org.apache.hadoop.hbase.zookeeper"><span class="typeNameLink">Prev&nbsp;Class</span></a></li>
+<li><a href="../../../../../org/apache/hadoop/hbase/zookeeper/ReadOnlyZKClient.ZKTask.html" title="class in org.apache.hadoop.hbase.zookeeper"><span class="typeNameLink">Prev&nbsp;Class</span></a></li>
 <li><a href="../../../../../org/apache/hadoop/hbase/zookeeper/RegionNormalizerTracker.html" title="class in org.apache.hadoop.hbase.zookeeper"><span class="typeNameLink">Next&nbsp;Class</span></a></li>
 </ul>
 <ul class="navList">
@@ -1062,7 +1062,7 @@ extends <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?
 </div>
 <div class="subNav">
 <ul class="navList">
-<li><a href="../../../../../org/apache/hadoop/hbase/zookeeper/PendingWatcher.html" title="class in org.apache.hadoop.hbase.zookeeper"><span class="typeNameLink">Prev&nbsp;Class</span></a></li>
+<li><a href="../../../../../org/apache/hadoop/hbase/zookeeper/ReadOnlyZKClient.ZKTask.html" title="class in org.apache.hadoop.hbase.zookeeper"><span class="typeNameLink">Prev&nbsp;Class</span></a></li>
 <li><a href="../../../../../org/apache/hadoop/hbase/zookeeper/RegionNormalizerTracker.html" title="class in org.apache.hadoop.hbase.zookeeper"><span class="typeNameLink">Next&nbsp;Class</span></a></li>
 </ul>
 <ul class="navList">

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/c54c242b/devapidocs/org/apache/hadoop/hbase/zookeeper/class-use/ReadOnlyZKClient.Task.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/zookeeper/class-use/ReadOnlyZKClient.Task.html b/devapidocs/org/apache/hadoop/hbase/zookeeper/class-use/ReadOnlyZKClient.Task.html
new file mode 100644
index 0000000..49138e5
--- /dev/null
+++ b/devapidocs/org/apache/hadoop/hbase/zookeeper/class-use/ReadOnlyZKClient.Task.html
@@ -0,0 +1,191 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<!-- NewPage -->
+<html lang="en">
+<head>
+<!-- Generated by javadoc -->
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title>Uses of Class org.apache.hadoop.hbase.zookeeper.ReadOnlyZKClient.Task (Apache HBase 3.0.0-SNAPSHOT API)</title>
+<link rel="stylesheet" type="text/css" href="../../../../../../stylesheet.css" title="Style">
+<script type="text/javascript" src="../../../../../../script.js"></script>
+</head>
+<body>
+<script type="text/javascript"><!--
+    try {
+        if (location.href.indexOf('is-external=true') == -1) {
+            parent.document.title="Uses of Class org.apache.hadoop.hbase.zookeeper.ReadOnlyZKClient.Task (Apache HBase 3.0.0-SNAPSHOT API)";
+        }
+    }
+    catch(err) {
+    }
+//-->
+</script>
+<noscript>
+<div>JavaScript is disabled on your browser.</div>
+</noscript>
+<!-- ========= START OF TOP NAVBAR ======= -->
+<div class="topNav"><a name="navbar.top">
+<!--   -->
+</a>
+<div class="skipNav"><a href="#skip.navbar.top" title="Skip navigation links">Skip navigation links</a></div>
+<a name="navbar.top.firstrow">
+<!--   -->
+</a>
+<ul class="navList" title="Navigation">
+<li><a href="../../../../../../overview-summary.html">Overview</a></li>
+<li><a href="../package-summary.html">Package</a></li>
+<li><a href="../../../../../../org/apache/hadoop/hbase/zookeeper/ReadOnlyZKClient.Task.html" title="class in org.apache.hadoop.hbase.zookeeper">Class</a></li>
+<li class="navBarCell1Rev">Use</li>
+<li><a href="../../../../../../overview-tree.html">Tree</a></li>
+<li><a href="../../../../../../deprecated-list.html">Deprecated</a></li>
+<li><a href="../../../../../../index-all.html">Index</a></li>
+<li><a href="../../../../../../help-doc.html">Help</a></li>
+</ul>
+</div>
+<div class="subNav">
+<ul class="navList">
+<li>Prev</li>
+<li>Next</li>
+</ul>
+<ul class="navList">
+<li><a href="../../../../../../index.html?org/apache/hadoop/hbase/zookeeper/class-use/ReadOnlyZKClient.Task.html" target="_top">Frames</a></li>
+<li><a href="ReadOnlyZKClient.Task.html" target="_top">No&nbsp;Frames</a></li>
+</ul>
+<ul class="navList" id="allclasses_navbar_top">
+<li><a href="../../../../../../allclasses-noframe.html">All&nbsp;Classes</a></li>
+</ul>
+<div>
+<script type="text/javascript"><!--
+  allClassesLink = document.getElementById("allclasses_navbar_top");
+  if(window==top) {
+    allClassesLink.style.display = "block";
+  }
+  else {
+    allClassesLink.style.display = "none";
+  }
+  //-->
+</script>
+</div>
+<a name="skip.navbar.top">
+<!--   -->
+</a></div>
+<!-- ========= END OF TOP NAVBAR ========= -->
+<div class="header">
+<h2 title="Uses of Class org.apache.hadoop.hbase.zookeeper.ReadOnlyZKClient.Task" class="title">Uses of Class<br>org.apache.hadoop.hbase.zookeeper.ReadOnlyZKClient.Task</h2>
+</div>
+<div class="classUseContainer">
+<ul class="blockList">
+<li class="blockList">
+<table class="useSummary" border="0" cellpadding="3" cellspacing="0" summary="Use table, listing packages, and an explanation">
+<caption><span>Packages that use <a href="../../../../../../org/apache/hadoop/hbase/zookeeper/ReadOnlyZKClient.Task.html" title="class in org.apache.hadoop.hbase.zookeeper">ReadOnlyZKClient.Task</a></span><span class="tabEnd">&nbsp;</span></caption>
+<tr>
+<th class="colFirst" scope="col">Package</th>
+<th class="colLast" scope="col">Description</th>
+</tr>
+<tbody>
+<tr class="altColor">
+<td class="colFirst"><a href="#org.apache.hadoop.hbase.zookeeper">org.apache.hadoop.hbase.zookeeper</a></td>
+<td class="colLast">&nbsp;</td>
+</tr>
+</tbody>
+</table>
+</li>
+<li class="blockList">
+<ul class="blockList">
+<li class="blockList"><a name="org.apache.hadoop.hbase.zookeeper">
+<!--   -->
+</a>
+<h3>Uses of <a href="../../../../../../org/apache/hadoop/hbase/zookeeper/ReadOnlyZKClient.Task.html" title="class in org.apache.hadoop.hbase.zookeeper">ReadOnlyZKClient.Task</a> in <a href="../../../../../../org/apache/hadoop/hbase/zookeeper/package-summary.html">org.apache.hadoop.hbase.zookeeper</a></h3>
+<table class="useSummary" border="0" cellpadding="3" cellspacing="0" summary="Use table, listing subclasses, and an explanation">
+<caption><span>Subclasses of <a href="../../../../../../org/apache/hadoop/hbase/zookeeper/ReadOnlyZKClient.Task.html" title="class in org.apache.hadoop.hbase.zookeeper">ReadOnlyZKClient.Task</a> in <a href="../../../../../../org/apache/hadoop/hbase/zookeeper/package-summary.html">org.apache.hadoop.hbase.zookeeper</a></span><span class="tabEnd">&nbsp;</span></caption>
+<tr>
+<th class="colFirst" scope="col">Modifier and Type</th>
+<th class="colLast" scope="col">Class and Description</th>
+</tr>
+<tbody>
+<tr class="altColor">
+<td class="colFirst"><code>private class&nbsp;</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/zookeeper/ReadOnlyZKClient.ZKTask.html" title="class in org.apache.hadoop.hbase.zookeeper">ReadOnlyZKClient.ZKTask</a>&lt;T&gt;</span></code>&nbsp;</td>
+</tr>
+</tbody>
+</table>
+<table class="useSummary" border="0" cellpadding="3" cellspacing="0" summary="Use table, listing fields, and an explanation">
+<caption><span>Fields in <a href="../../../../../../org/apache/hadoop/hbase/zookeeper/package-summary.html">org.apache.hadoop.hbase.zookeeper</a> declared as <a href="../../../../../../org/apache/hadoop/hbase/zookeeper/ReadOnlyZKClient.Task.html" title="class in org.apache.hadoop.hbase.zookeeper">ReadOnlyZKClient.Task</a></span><span class="tabEnd">&nbsp;</span></caption>
+<tr>
+<th class="colFirst" scope="col">Modifier and Type</th>
+<th class="colLast" scope="col">Field and Description</th>
+</tr>
+<tbody>
+<tr class="altColor">
+<td class="colFirst"><code>private static <a href="../../../../../../org/apache/hadoop/hbase/zookeeper/ReadOnlyZKClient.Task.html" title="class in org.apache.hadoop.hbase.zookeeper">ReadOnlyZKClient.Task</a></code></td>
+<td class="colLast"><span class="typeNameLabel">ReadOnlyZKClient.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/zookeeper/ReadOnlyZKClient.html#CLOSE">CLOSE</a></span></code>&nbsp;</td>
+</tr>
+</tbody>
+</table>
+<table class="useSummary" border="0" cellpadding="3" cellspacing="0" summary="Use table, listing fields, and an explanation">
+<caption><span>Fields in <a href="../../../../../../org/apache/hadoop/hbase/zookeeper/package-summary.html">org.apache.hadoop.hbase.zookeeper</a> with type parameters of type <a href="../../../../../../org/apache/hadoop/hbase/zookeeper/ReadOnlyZKClient.Task.html" title="class in org.apache.hadoop.hbase.zookeeper">ReadOnlyZKClient.Task</a></span><span class="tabEnd">&nbsp;</span></caption>
+<tr>
+<th class="colFirst" scope="col">Modifier and Type</th>
+<th class="colLast" scope="col">Field and Description</th>
+</tr>
+<tbody>
+<tr class="altColor">
+<td class="colFirst"><code>private <a href="http://docs.oracle.com/javase/8/docs/api/java/util/concurrent/DelayQueue.html?is-external=true" title="class or interface in java.util.concurrent">DelayQueue</a>&lt;<a href="../../../../../../org/apache/hadoop/hbase/zookeeper/ReadOnlyZKClient.Task.html" title="class in org.apache.hadoop.hbase.zookeeper">ReadOnlyZKClient.Task</a>&gt;</code></td>
+<td class="colLast"><span class="typeNameLabel">ReadOnlyZKClient.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/zookeeper/ReadOnlyZKClient.html#tasks">tasks</a></span></code>&nbsp;</td>
+</tr>
+</tbody>
+</table>
+</li>
+</ul>
+</li>
+</ul>
+</div>
+<!-- ======= START OF BOTTOM NAVBAR ====== -->
+<div class="bottomNav"><a name="navbar.bottom">
+<!--   -->
+</a>
+<div class="skipNav"><a href="#skip.navbar.bottom" title="Skip navigation links">Skip navigation links</a></div>
+<a name="navbar.bottom.firstrow">
+<!--   -->
+</a>
+<ul class="navList" title="Navigation">
+<li><a href="../../../../../../overview-summary.html">Overview</a></li>
+<li><a href="../package-summary.html">Package</a></li>
+<li><a href="../../../../../../org/apache/hadoop/hbase/zookeeper/ReadOnlyZKClient.Task.html" title="class in org.apache.hadoop.hbase.zookeeper">Class</a></li>
+<li class="navBarCell1Rev">Use</li>
+<li><a href="../../../../../../overview-tree.html">Tree</a></li>
+<li><a href="../../../../../../deprecated-list.html">Deprecated</a></li>
+<li><a href="../../../../../../index-all.html">Index</a></li>
+<li><a href="../../../../../../help-doc.html">Help</a></li>
+</ul>
+</div>
+<div class="subNav">
+<ul class="navList">
+<li>Prev</li>
+<li>Next</li>
+</ul>
+<ul class="navList">
+<li><a href="../../../../../../index.html?org/apache/hadoop/hbase/zookeeper/class-use/ReadOnlyZKClient.Task.html" target="_top">Frames</a></li>
+<li><a href="ReadOnlyZKClient.Task.html" target="_top">No&nbsp;Frames</a></li>
+</ul>
+<ul class="navList" id="allclasses_navbar_bottom">
+<li><a href="../../../../../../allclasses-noframe.html">All&nbsp;Classes</a></li>
+</ul>
+<div>
+<script type="text/javascript"><!--
+  allClassesLink = document.getElementById("allclasses_navbar_bottom");
+  if(window==top) {
+    allClassesLink.style.display = "block";
+  }
+  else {
+    allClassesLink.style.display = "none";
+  }
+  //-->
+</script>
+</div>
+<a name="skip.navbar.bottom">
+<!--   -->
+</a></div>
+<!-- ======== END OF BOTTOM NAVBAR ======= -->
+<p class="legalCopy"><small>Copyright &#169; 2007&#x2013;2017 <a href="https://www.apache.org/">The Apache Software Foundation</a>. All rights reserved.</small></p>
+</body>
+</html>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/c54c242b/devapidocs/org/apache/hadoop/hbase/zookeeper/class-use/ReadOnlyZKClient.ZKTask.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/zookeeper/class-use/ReadOnlyZKClient.ZKTask.html b/devapidocs/org/apache/hadoop/hbase/zookeeper/class-use/ReadOnlyZKClient.ZKTask.html
new file mode 100644
index 0000000..13ffc00
--- /dev/null
+++ b/devapidocs/org/apache/hadoop/hbase/zookeeper/class-use/ReadOnlyZKClient.ZKTask.html
@@ -0,0 +1,125 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<!-- NewPage -->
+<html lang="en">
+<head>
+<!-- Generated by javadoc -->
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title>Uses of Class org.apache.hadoop.hbase.zookeeper.ReadOnlyZKClient.ZKTask (Apache HBase 3.0.0-SNAPSHOT API)</title>
+<link rel="stylesheet" type="text/css" href="../../../../../../stylesheet.css" title="Style">
+<script type="text/javascript" src="../../../../../../script.js"></script>
+</head>
+<body>
+<script type="text/javascript"><!--
+    try {
+        if (location.href.indexOf('is-external=true') == -1) {
+            parent.document.title="Uses of Class org.apache.hadoop.hbase.zookeeper.ReadOnlyZKClient.ZKTask (Apache HBase 3.0.0-SNAPSHOT API)";
+        }
+    }
+    catch(err) {
+    }
+//-->
+</script>
+<noscript>
+<div>JavaScript is disabled on your browser.</div>
+</noscript>
+<!-- ========= START OF TOP NAVBAR ======= -->
+<div class="topNav"><a name="navbar.top">
+<!--   -->
+</a>
+<div class="skipNav"><a href="#skip.navbar.top" title="Skip navigation links">Skip navigation links</a></div>
+<a name="navbar.top.firstrow">
+<!--   -->
+</a>
+<ul class="navList" title="Navigation">
+<li><a href="../../../../../../overview-summary.html">Overview</a></li>
+<li><a href="../package-summary.html">Package</a></li>
+<li><a href="../../../../../../org/apache/hadoop/hbase/zookeeper/ReadOnlyZKClient.ZKTask.html" title="class in org.apache.hadoop.hbase.zookeeper">Class</a></li>
+<li class="navBarCell1Rev">Use</li>
+<li><a href="../../../../../../overview-tree.html">Tree</a></li>
+<li><a href="../../../../../../deprecated-list.html">Deprecated</a></li>
+<li><a href="../../../../../../index-all.html">Index</a></li>
+<li><a href="../../../../../../help-doc.html">Help</a></li>
+</ul>
+</div>
+<div class="subNav">
+<ul class="navList">
+<li>Prev</li>
+<li>Next</li>
+</ul>
+<ul class="navList">
+<li><a href="../../../../../../index.html?org/apache/hadoop/hbase/zookeeper/class-use/ReadOnlyZKClient.ZKTask.html" target="_top">Frames</a></li>
+<li><a href="ReadOnlyZKClient.ZKTask.html" target="_top">No&nbsp;Frames</a></li>
+</ul>
+<ul class="navList" id="allclasses_navbar_top">
+<li><a href="../../../../../../allclasses-noframe.html">All&nbsp;Classes</a></li>
+</ul>
+<div>
+<script type="text/javascript"><!--
+  allClassesLink = document.getElementById("allclasses_navbar_top");
+  if(window==top) {
+    allClassesLink.style.display = "block";
+  }
+  else {
+    allClassesLink.style.display = "none";
+  }
+  //-->
+</script>
+</div>
+<a name="skip.navbar.top">
+<!--   -->
+</a></div>
+<!-- ========= END OF TOP NAVBAR ========= -->
+<div class="header">
+<h2 title="Uses of Class org.apache.hadoop.hbase.zookeeper.ReadOnlyZKClient.ZKTask" class="title">Uses of Class<br>org.apache.hadoop.hbase.zookeeper.ReadOnlyZKClient.ZKTask</h2>
+</div>
+<div class="classUseContainer">No usage of org.apache.hadoop.hbase.zookeeper.ReadOnlyZKClient.ZKTask</div>
+<!-- ======= START OF BOTTOM NAVBAR ====== -->
+<div class="bottomNav"><a name="navbar.bottom">
+<!--   -->
+</a>
+<div class="skipNav"><a href="#skip.navbar.bottom" title="Skip navigation links">Skip navigation links</a></div>
+<a name="navbar.bottom.firstrow">
+<!--   -->
+</a>
+<ul class="navList" title="Navigation">
+<li><a href="../../../../../../overview-summary.html">Overview</a></li>
+<li><a href="../package-summary.html">Package</a></li>
+<li><a href="../../../../../../org/apache/hadoop/hbase/zookeeper/ReadOnlyZKClient.ZKTask.html" title="class in org.apache.hadoop.hbase.zookeeper">Class</a></li>
+<li class="navBarCell1Rev">Use</li>
+<li><a href="../../../../../../overview-tree.html">Tree</a></li>
+<li><a href="../../../../../../deprecated-list.html">Deprecated</a></li>
+<li><a href="../../../../../../index-all.html">Index</a></li>
+<li><a href="../../../../../../help-doc.html">Help</a></li>
+</ul>
+</div>
+<div class="subNav">
+<ul class="navList">
+<li>Prev</li>
+<li>Next</li>
+</ul>
+<ul class="navList">
+<li><a href="../../../../../../index.html?org/apache/hadoop/hbase/zookeeper/class-use/ReadOnlyZKClient.ZKTask.html" target="_top">Frames</a></li>
+<li><a href="ReadOnlyZKClient.ZKTask.html" target="_top">No&nbsp;Frames</a></li>
+</ul>
+<ul class="navList" id="allclasses_navbar_bottom">
+<li><a href="../../../../../../allclasses-noframe.html">All&nbsp;Classes</a></li>
+</ul>
+<div>
+<script type="text/javascript"><!--
+  allClassesLink = document.getElementById("allclasses_navbar_bottom");
+  if(window==top) {
+    allClassesLink.style.display = "block";
+  }
+  else {
+    allClassesLink.style.display = "none";
+  }
+  //-->
+</script>
+</div>
+<a name="skip.navbar.bottom">
+<!--   -->
+</a></div>
+<!-- ======== END OF BOTTOM NAVBAR ======= -->
+<p class="legalCopy"><small>Copyright &#169; 2007&#x2013;2017 <a href="https://www.apache.org/">The Apache Software Foundation</a>. All rights reserved.</small></p>
+</body>
+</html>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/c54c242b/devapidocs/org/apache/hadoop/hbase/zookeeper/class-use/ReadOnlyZKClient.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/zookeeper/class-use/ReadOnlyZKClient.html b/devapidocs/org/apache/hadoop/hbase/zookeeper/class-use/ReadOnlyZKClient.html
new file mode 100644
index 0000000..655118e
--- /dev/null
+++ b/devapidocs/org/apache/hadoop/hbase/zookeeper/class-use/ReadOnlyZKClient.html
@@ -0,0 +1,180 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<!-- NewPage -->
+<html lang="en">
+<head>
+<!-- Generated by javadoc -->
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title>Uses of Class org.apache.hadoop.hbase.zookeeper.ReadOnlyZKClient (Apache HBase 3.0.0-SNAPSHOT API)</title>
+<link rel="stylesheet" type="text/css" href="../../../../../../stylesheet.css" title="Style">
+<script type="text/javascript" src="../../../../../../script.js"></script>
+</head>
+<body>
+<script type="text/javascript"><!--
+    try {
+        if (location.href.indexOf('is-external=true') == -1) {
+            parent.document.title="Uses of Class org.apache.hadoop.hbase.zookeeper.ReadOnlyZKClient (Apache HBase 3.0.0-SNAPSHOT API)";
+        }
+    }
+    catch(err) {
+    }
+//-->
+</script>
+<noscript>
+<div>JavaScript is disabled on your browser.</div>
+</noscript>
+<!-- ========= START OF TOP NAVBAR ======= -->
+<div class="topNav"><a name="navbar.top">
+<!--   -->
+</a>
+<div class="skipNav"><a href="#skip.navbar.top" title="Skip navigation links">Skip navigation links</a></div>
+<a name="navbar.top.firstrow">
+<!--   -->
+</a>
+<ul class="navList" title="Navigation">
+<li><a href="../../../../../../overview-summary.html">Overview</a></li>
+<li><a href="../package-summary.html">Package</a></li>
+<li><a href="../../../../../../org/apache/hadoop/hbase/zookeeper/ReadOnlyZKClient.html" title="class in org.apache.hadoop.hbase.zookeeper">Class</a></li>
+<li class="navBarCell1Rev">Use</li>
+<li><a href="../../../../../../overview-tree.html">Tree</a></li>
+<li><a href="../../../../../../deprecated-list.html">Deprecated</a></li>
+<li><a href="../../../../../../index-all.html">Index</a></li>
+<li><a href="../../../../../../help-doc.html">Help</a></li>
+</ul>
+</div>
+<div class="subNav">
+<ul class="navList">
+<li>Prev</li>
+<li>Next</li>
+</ul>
+<ul class="navList">
+<li><a href="../../../../../../index.html?org/apache/hadoop/hbase/zookeeper/class-use/ReadOnlyZKClient.html" target="_top">Frames</a></li>
+<li><a href="ReadOnlyZKClient.html" target="_top">No&nbsp;Frames</a></li>
+</ul>
+<ul class="navList" id="allclasses_navbar_top">
+<li><a href="../../../../../../allclasses-noframe.html">All&nbsp;Classes</a></li>
+</ul>
+<div>
+<script type="text/javascript"><!--
+  allClassesLink = document.getElementById("allclasses_navbar_top");
+  if(window==top) {
+    allClassesLink.style.display = "block";
+  }
+  else {
+    allClassesLink.style.display = "none";
+  }
+  //-->
+</script>
+</div>
+<a name="skip.navbar.top">
+<!--   -->
+</a></div>
+<!-- ========= END OF TOP NAVBAR ========= -->
+<div class="header">
+<h2 title="Uses of Class org.apache.hadoop.hbase.zookeeper.ReadOnlyZKClient" class="title">Uses of Class<br>org.apache.hadoop.hbase.zookeeper.ReadOnlyZKClient</h2>
+</div>
+<div class="classUseContainer">
+<ul class="blockList">
+<li class="blockList">
+<table class="useSummary" border="0" cellpadding="3" cellspacing="0" summary="Use table, listing packages, and an explanation">
+<caption><span>Packages that use <a href="../../../../../../org/apache/hadoop/hbase/zookeeper/ReadOnlyZKClient.html" title="class in org.apache.hadoop.hbase.zookeeper">ReadOnlyZKClient</a></span><span class="tabEnd">&nbsp;</span></caption>
+<tr>
+<th class="colFirst" scope="col">Package</th>
+<th class="colLast" scope="col">Description</th>
+</tr>
+<tbody>
+<tr class="altColor">
+<td class="colFirst"><a href="#org.apache.hadoop.hbase.client">org.apache.hadoop.hbase.client</a></td>
+<td class="colLast">
+<div class="block">Provides HBase Client</div>
+</td>
+</tr>
+</tbody>
+</table>
+</li>
+<li class="blockList">
+<ul class="blockList">
+<li class="blockList"><a name="org.apache.hadoop.hbase.client">
+<!--   -->
+</a>
+<h3>Uses of <a href="../../../../../../org/apache/hadoop/hbase/zookeeper/ReadOnlyZKClient.html" title="class in org.apache.hadoop.hbase.zookeeper">ReadOnlyZKClient</a> in <a href="../../../../../../org/apache/hadoop/hbase/client/package-summary.html">org.apache.hadoop.hbase.client</a></h3>
+<table class="useSummary" border="0" cellpadding="3" cellspacing="0" summary="Use table, listing fields, and an explanation">
+<caption><span>Fields in <a href="../../../../../../org/apache/hadoop/hbase/client/package-summary.html">org.apache.hadoop.hbase.client</a> declared as <a href="../../../../../../org/apache/hadoop/hbase/zookeeper/ReadOnlyZKClient.html" title="class in org.apache.hadoop.hbase.zookeeper">ReadOnlyZKClient</a></span><span class="tabEnd">&nbsp;</span></caption>
+<tr>
+<th class="colFirst" scope="col">Modifier and Type</th>
+<th class="colLast" scope="col">Field and Description</th>
+</tr>
+<tbody>
+<tr class="altColor">
+<td class="colFirst"><code>private <a href="../../../../../../org/apache/hadoop/hbase/zookeeper/ReadOnlyZKClient.html" title="class in org.apache.hadoop.hbase.zookeeper">ReadOnlyZKClient</a></code></td>
+<td class="colLast"><span class="typeNameLabel">ZKAsyncRegistry.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/client/ZKAsyncRegistry.html#zk">zk</a></span></code>&nbsp;</td>
+</tr>
+</tbody>
+</table>
+<table class="useSummary" border="0" cellpadding="3" cellspacing="0" summary="Use table, listing methods, and an explanation">
+<caption><span>Methods in <a href="../../../../../../org/apache/hadoop/hbase/client/package-summary.html">org.apache.hadoop.hbase.client</a> that return <a href="../../../../../../org/apache/hadoop/hbase/zookeeper/ReadOnlyZKClient.html" title="class in org.apache.hadoop.hbase.zookeeper">ReadOnlyZKClient</a></span><span class="tabEnd">&nbsp;</span></caption>
+<tr>
+<th class="colFirst" scope="col">Modifier and Type</th>
+<th class="colLast" scope="col">Method and Description</th>
+</tr>
+<tbody>
+<tr class="altColor">
+<td class="colFirst"><code>(package private) <a href="../../../../../../org/apache/hadoop/hbase/zookeeper/ReadOnlyZKClient.html" title="class in org.apache.hadoop.hbase.zookeeper">ReadOnlyZKClient</a></code></td>
+<td class="colLast"><span class="typeNameLabel">ZKAsyncRegistry.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/client/ZKAsyncRegistry.html#getZKClient--">getZKClient</a></span>()</code>&nbsp;</td>
+</tr>
+</tbody>
+</table>
+</li>
+</ul>
+</li>
+</ul>
+</div>
+<!-- ======= START OF BOTTOM NAVBAR ====== -->
+<div class="bottomNav"><a name="navbar.bottom">
+<!--   -->
+</a>
+<div class="skipNav"><a href="#skip.navbar.bottom" title="Skip navigation links">Skip navigation links</a></div>
+<a name="navbar.bottom.firstrow">
+<!--   -->
+</a>
+<ul class="navList" title="Navigation">
+<li><a href="../../../../../../overview-summary.html">Overview</a></li>
+<li><a href="../package-summary.html">Package</a></li>
+<li><a href="../../../../../../org/apache/hadoop/hbase/zookeeper/ReadOnlyZKClient.html" title="class in org.apache.hadoop.hbase.zookeeper">Class</a></li>
+<li class="navBarCell1Rev">Use</li>
+<li><a href="../../../../../../overview-tree.html">Tree</a></li>
+<li><a href="../../../../../../deprecated-list.html">Deprecated</a></li>
+<li><a href="../../../../../../index-all.html">Index</a></li>
+<li><a href="../../../../../../help-doc.html">Help</a></li>
+</ul>
+</div>
+<div class="subNav">
+<ul class="navList">
+<li>Prev</li>
+<li>Next</li>
+</ul>
+<ul class="navList">
+<li><a href="../../../../../../index.html?org/apache/hadoop/hbase/zookeeper/class-use/ReadOnlyZKClient.html" target="_top">Frames</a></li>
+<li><a href="ReadOnlyZKClient.html" target="_top">No&nbsp;Frames</a></li>
+</ul>
+<ul class="navList" id="allclasses_navbar_bottom">
+<li><a href="../../../../../../allclasses-noframe.html">All&nbsp;Classes</a></li>
+</ul>
+<div>
+<script type="text/javascript"><!--
+  allClassesLink = document.getElementById("allclasses_navbar_bottom");
+  if(window==top) {
+    allClassesLink.style.display = "block";
+  }
+  else {
+    allClassesLink.style.display = "none";
+  }
+  //-->
+</script>
+</div>
+<a name="skip.navbar.bottom">
+<!--   -->
+</a></div>
+<!-- ======== END OF BOTTOM NAVBAR ======= -->
+<p class="legalCopy"><small>Copyright &#169; 2007&#x2013;2017 <a href="https://www.apache.org/">The Apache Software Foundation</a>. All rights reserved.</small></p>
+</body>
+</html>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/c54c242b/devapidocs/org/apache/hadoop/hbase/zookeeper/package-frame.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/zookeeper/package-frame.html b/devapidocs/org/apache/hadoop/hbase/zookeeper/package-frame.html
index 085a99d..3c8f633 100644
--- a/devapidocs/org/apache/hadoop/hbase/zookeeper/package-frame.html
+++ b/devapidocs/org/apache/hadoop/hbase/zookeeper/package-frame.html
@@ -31,6 +31,8 @@
 <li><a href="MetricsZooKeeperSourceImpl.html" title="class in org.apache.hadoop.hbase.zookeeper" target="classFrame">MetricsZooKeeperSourceImpl</a></li>
 <li><a href="MiniZooKeeperCluster.html" title="class in org.apache.hadoop.hbase.zookeeper" target="classFrame">MiniZooKeeperCluster</a></li>
 <li><a href="PendingWatcher.html" title="class in org.apache.hadoop.hbase.zookeeper" target="classFrame">PendingWatcher</a></li>
+<li><a href="ReadOnlyZKClient.html" title="class in org.apache.hadoop.hbase.zookeeper" target="classFrame">ReadOnlyZKClient</a></li>
+<li><a href="ReadOnlyZKClient.Task.html" title="class in org.apache.hadoop.hbase.zookeeper" target="classFrame">ReadOnlyZKClient.Task</a></li>
 <li><a href="RecoverableZooKeeper.html" title="class in org.apache.hadoop.hbase.zookeeper" target="classFrame">RecoverableZooKeeper</a></li>
 <li><a href="RegionNormalizerTracker.html" title="class in org.apache.hadoop.hbase.zookeeper" target="classFrame">RegionNormalizerTracker</a></li>
 <li><a href="ZKAclReset.html" title="class in org.apache.hadoop.hbase.zookeeper" target="classFrame">ZKAclReset</a></li>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/c54c242b/devapidocs/org/apache/hadoop/hbase/zookeeper/package-summary.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/zookeeper/package-summary.html b/devapidocs/org/apache/hadoop/hbase/zookeeper/package-summary.html
index 07ac69a..ccec0f6 100644
--- a/devapidocs/org/apache/hadoop/hbase/zookeeper/package-summary.html
+++ b/devapidocs/org/apache/hadoop/hbase/zookeeper/package-summary.html
@@ -182,18 +182,28 @@
 </td>
 </tr>
 <tr class="rowColor">
+<td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/zookeeper/ReadOnlyZKClient.html" title="class in org.apache.hadoop.hbase.zookeeper">ReadOnlyZKClient</a></td>
+<td class="colLast">
+<div class="block">A very simple read only zookeeper implementation without watcher support.</div>
+</td>
+</tr>
+<tr class="altColor">
+<td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/zookeeper/ReadOnlyZKClient.Task.html" title="class in org.apache.hadoop.hbase.zookeeper">ReadOnlyZKClient.Task</a></td>
+<td class="colLast">&nbsp;</td>
+</tr>
+<tr class="altColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/zookeeper/RecoverableZooKeeper.html" title="class in org.apache.hadoop.hbase.zookeeper">RecoverableZooKeeper</a></td>
 <td class="colLast">
 <div class="block">A zookeeper that can handle 'recoverable' errors.</div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/zookeeper/RegionNormalizerTracker.html" title="class in org.apache.hadoop.hbase.zookeeper">RegionNormalizerTracker</a></td>
 <td class="colLast">
 <div class="block">Tracks region normalizer state up in ZK</div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/zookeeper/ZKAclReset.html" title="class in org.apache.hadoop.hbase.zookeeper">ZKAclReset</a></td>
 <td class="colLast">
 <div class="block">You may add the jaas.conf option
@@ -206,130 +216,130 @@
  Use -set-acls to set the ACLs, no option to erase ACLs</div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/zookeeper/ZKClusterId.html" title="class in org.apache.hadoop.hbase.zookeeper">ZKClusterId</a></td>
 <td class="colLast">
 <div class="block">Publishes and synchronizes a unique identifier specific to a given HBase
  cluster.</div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/zookeeper/ZKConfig.html" title="class in org.apache.hadoop.hbase.zookeeper">ZKConfig</a></td>
 <td class="colLast">
 <div class="block">Utility methods for reading, and building the ZooKeeper configuration.</div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/zookeeper/ZKConfig.ZKClusterKey.html" title="class in org.apache.hadoop.hbase.zookeeper">ZKConfig.ZKClusterKey</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/zookeeper/ZKLeaderManager.html" title="class in org.apache.hadoop.hbase.zookeeper">ZKLeaderManager</a></td>
 <td class="colLast">Deprecated
 <div class="block"><span class="deprecationComment">Not used</span></div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/zookeeper/ZKListener.html" title="class in org.apache.hadoop.hbase.zookeeper">ZKListener</a></td>
 <td class="colLast">
 <div class="block">Base class for internal listeners of ZooKeeper events.</div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/zookeeper/ZKMainServer.html" title="class in org.apache.hadoop.hbase.zookeeper">ZKMainServer</a></td>
 <td class="colLast">
 <div class="block">Tool for running ZookeeperMain from HBase by  reading a ZooKeeper server
  from HBase XML configuration.</div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/zookeeper/ZKMainServer.HACK_UNTIL_ZOOKEEPER_1897_ZooKeeperMain.html" title="class in org.apache.hadoop.hbase.zookeeper">ZKMainServer.HACK_UNTIL_ZOOKEEPER_1897_ZooKeeperMain</a></td>
 <td class="colLast">
 <div class="block">ZooKeeper 3.4.6 broke being able to pass commands on command line.</div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/zookeeper/ZKMetadata.html" title="class in org.apache.hadoop.hbase.zookeeper">ZKMetadata</a></td>
 <td class="colLast">
 <div class="block">The metadata append to the start of data on zookeeper.</div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/zookeeper/ZKMetrics.html" title="class in org.apache.hadoop.hbase.zookeeper">ZKMetrics</a></td>
 <td class="colLast">
 <div class="block">Class used to push numbers about ZooKeeper into the metrics subsystem.</div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/zookeeper/ZKNodeTracker.html" title="class in org.apache.hadoop.hbase.zookeeper">ZKNodeTracker</a></td>
 <td class="colLast">
 <div class="block">Tracks the availability and value of a single ZooKeeper node.</div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/zookeeper/ZKServerTool.html" title="class in org.apache.hadoop.hbase.zookeeper">ZKServerTool</a></td>
 <td class="colLast">
 <div class="block">Tool for reading ZooKeeper servers from HBase XML configuration and producing
  a line-by-line list for use by bash scripts.</div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/zookeeper/ZKSplitLog.html" title="class in org.apache.hadoop.hbase.zookeeper">ZKSplitLog</a></td>
 <td class="colLast">
 <div class="block">Common methods and attributes used by SplitLogManager and SplitLogWorker running distributed splitting of WAL logs.</div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/zookeeper/ZKUtil.html" title="class in org.apache.hadoop.hbase.zookeeper">ZKUtil</a></td>
 <td class="colLast">
 <div class="block">Internal HBase utility class for ZooKeeper.</div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/zookeeper/ZKUtil.JaasConfiguration.html" title="class in org.apache.hadoop.hbase.zookeeper">ZKUtil.JaasConfiguration</a></td>
 <td class="colLast">
 <div class="block">A JAAS configuration that defines the login modules that we want to use for login.</div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/zookeeper/ZKUtil.NodeAndData.html" title="class in org.apache.hadoop.hbase.zookeeper">ZKUtil.NodeAndData</a></td>
 <td class="colLast">Deprecated
 <div class="block"><span class="deprecationComment">Unused</span></div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/zookeeper/ZKUtil.ZKUtilOp.html" title="class in org.apache.hadoop.hbase.zookeeper">ZKUtil.ZKUtilOp</a></td>
 <td class="colLast">
 <div class="block">Represents an action taken by ZKUtil, e.g.</div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/zookeeper/ZKUtil.ZKUtilOp.CreateAndFailSilent.html" title="class in org.apache.hadoop.hbase.zookeeper">ZKUtil.ZKUtilOp.CreateAndFailSilent</a></td>
 <td class="colLast">
 <div class="block">ZKUtilOp representing createAndFailSilent in ZooKeeper
  (attempt to create node, ignore error if already exists)</div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/zookeeper/ZKUtil.ZKUtilOp.DeleteNodeFailSilent.html" title="class in org.apache.hadoop.hbase.zookeeper">ZKUtil.ZKUtilOp.DeleteNodeFailSilent</a></td>
 <td class="colLast">
 <div class="block">ZKUtilOp representing deleteNodeFailSilent in ZooKeeper
  (attempt to delete node, ignore error if node doesn't exist)</div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/zookeeper/ZKUtil.ZKUtilOp.SetData.html" title="class in org.apache.hadoop.hbase.zookeeper">ZKUtil.ZKUtilOp.SetData</a></td>
 <td class="colLast">
 <div class="block">ZKUtilOp representing setData in ZooKeeper</div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/zookeeper/ZKWatcher.html" title="class in org.apache.hadoop.hbase.zookeeper">ZKWatcher</a></td>
 <td class="colLast">
 <div class="block">Acts as the single ZooKeeper Watcher.</div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/zookeeper/ZNodePaths.html" title="class in org.apache.hadoop.hbase.zookeeper">ZNodePaths</a></td>
 <td class="colLast">
 <div class="block">Class that hold all the paths of znode for HBase.</div>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/c54c242b/devapidocs/org/apache/hadoop/hbase/zookeeper/package-tree.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/zookeeper/package-tree.html b/devapidocs/org/apache/hadoop/hbase/zookeeper/package-tree.html
index 5db3cde..7797d78 100644
--- a/devapidocs/org/apache/hadoop/hbase/zookeeper/package-tree.html
+++ b/devapidocs/org/apache/hadoop/hbase/zookeeper/package-tree.html
@@ -103,6 +103,12 @@
 <li type="circle">org.apache.hadoop.hbase.zookeeper.<a href="../../../../../org/apache/hadoop/hbase/zookeeper/MetaTableLocator.html" title="class in org.apache.hadoop.hbase.zookeeper"><span class="typeNameLink">MetaTableLocator</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.zookeeper.<a href="../../../../../org/apache/hadoop/hbase/zookeeper/MiniZooKeeperCluster.html" title="class in org.apache.hadoop.hbase.zookeeper"><span class="typeNameLink">MiniZooKeeperCluster</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.zookeeper.<a href="../../../../../org/apache/hadoop/hbase/zookeeper/PendingWatcher.html" title="class in org.apache.hadoop.hbase.zookeeper"><span class="typeNameLink">PendingWatcher</span></a> (implements org.apache.zookeeper.Watcher)</li>
+<li type="circle">org.apache.hadoop.hbase.zookeeper.<a href="../../../../../org/apache/hadoop/hbase/zookeeper/ReadOnlyZKClient.html" title="class in org.apache.hadoop.hbase.zookeeper"><span class="typeNameLink">ReadOnlyZKClient</span></a> (implements java.io.<a href="http://docs.oracle.com/javase/8/docs/api/java/io/Closeable.html?is-external=true" title="class or interface in java.io">Closeable</a>)</li>
+<li type="circle">org.apache.hadoop.hbase.zookeeper.<a href="../../../../../org/apache/hadoop/hbase/zookeeper/ReadOnlyZKClient.Task.html" title="class in org.apache.hadoop.hbase.zookeeper"><span class="typeNameLink">ReadOnlyZKClient.Task</span></a> (implements java.util.concurrent.<a href="http://docs.oracle.com/javase/8/docs/api/java/util/concurrent/Delayed.html?is-external=true" title="class or interface in java.util.concurrent">Delayed</a>)
+<ul>
+<li type="circle">org.apache.hadoop.hbase.zookeeper.<a href="../../../../../org/apache/hadoop/hbase/zookeeper/ReadOnlyZKClient.ZKTask.html" title="class in org.apache.hadoop.hbase.zookeeper"><span class="typeNameLink">ReadOnlyZKClient.ZKTask</span></a>&lt;T&gt;</li>
+</ul>
+</li>
 <li type="circle">org.apache.hadoop.hbase.zookeeper.<a href="../../../../../org/apache/hadoop/hbase/zookeeper/RecoverableZooKeeper.html" title="class in org.apache.hadoop.hbase.zookeeper"><span class="typeNameLink">RecoverableZooKeeper</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.zookeeper.<a href="../../../../../org/apache/hadoop/hbase/zookeeper/ZKClusterId.html" title="class in org.apache.hadoop.hbase.zookeeper"><span class="typeNameLink">ZKClusterId</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.zookeeper.<a href="../../../../../org/apache/hadoop/hbase/zookeeper/ZKConfig.html" title="class in org.apache.hadoop.hbase.zookeeper"><span class="typeNameLink">ZKConfig</span></a></li>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/c54c242b/devapidocs/org/apache/hadoop/hbase/zookeeper/package-use.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/zookeeper/package-use.html b/devapidocs/org/apache/hadoop/hbase/zookeeper/package-use.html
index 3f895db..1d666af 100644
--- a/devapidocs/org/apache/hadoop/hbase/zookeeper/package-use.html
+++ b/devapidocs/org/apache/hadoop/hbase/zookeeper/package-use.html
@@ -232,6 +232,11 @@
 </tr>
 <tbody>
 <tr class="altColor">
+<td class="colOne"><a href="../../../../../org/apache/hadoop/hbase/zookeeper/class-use/ReadOnlyZKClient.html#org.apache.hadoop.hbase.client">ReadOnlyZKClient</a>
+<div class="block">A very simple read only zookeeper implementation without watcher support.</div>
+</td>
+</tr>
+<tr class="rowColor">
 <td class="colOne"><a href="../../../../../org/apache/hadoop/hbase/zookeeper/class-use/ZNodePaths.html#org.apache.hadoop.hbase.client">ZNodePaths</a>
 <div class="block">Class that hold all the paths of znode for HBase.</div>
 </td>
@@ -642,61 +647,64 @@
 </td>
 </tr>
 <tr class="altColor">
+<td class="colOne"><a href="../../../../../org/apache/hadoop/hbase/zookeeper/class-use/ReadOnlyZKClient.Task.html#org.apache.hadoop.hbase.zookeeper">ReadOnlyZKClient.Task</a>&nbsp;</td>
+</tr>
+<tr class="rowColor">
 <td class="colOne"><a href="../../../../../org/apache/hadoop/hbase/zookeeper/class-use/RecoverableZooKeeper.html#org.apache.hadoop.hbase.zookeeper">RecoverableZooKeeper</a>
 <div class="block">A zookeeper that can handle 'recoverable' errors.</div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colOne"><a href="../../../../../org/apache/hadoop/hbase/zookeeper/class-use/ZKConfig.ZKClusterKey.html#org.apache.hadoop.hbase.zookeeper">ZKConfig.ZKClusterKey</a>&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colOne"><a href="../../../../../org/apache/hadoop/hbase/zookeeper/class-use/ZKListener.html#org.apache.hadoop.hbase.zookeeper">ZKListener</a>
 <div class="block">Base class for internal listeners of ZooKeeper events.</div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colOne"><a href="../../../../../org/apache/hadoop/hbase/zookeeper/class-use/ZKMetricsListener.html#org.apache.hadoop.hbase.zookeeper">ZKMetricsListener</a>&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colOne"><a href="../../../../../org/apache/hadoop/hbase/zookeeper/class-use/ZKNodeTracker.html#org.apache.hadoop.hbase.zookeeper">ZKNodeTracker</a>
 <div class="block">Tracks the availability and value of a single ZooKeeper node.</div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colOne"><a href="../../../../../org/apache/hadoop/hbase/zookeeper/class-use/ZKUtil.NodeAndData.html#org.apache.hadoop.hbase.zookeeper">ZKUtil.NodeAndData</a>
 <div class="block"><span class="deprecatedLabel">Deprecated.</span>&nbsp;
 <div class="block"><span class="deprecationComment">Unused</span></div>
 </div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colOne"><a href="../../../../../org/apache/hadoop/hbase/zookeeper/class-use/ZKUtil.ZKUtilOp.html#org.apache.hadoop.hbase.zookeeper">ZKUtil.ZKUtilOp</a>
 <div class="block">Represents an action taken by ZKUtil, e.g.</div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colOne"><a href="../../../../../org/apache/hadoop/hbase/zookeeper/class-use/ZKUtil.ZKUtilOp.CreateAndFailSilent.html#org.apache.hadoop.hbase.zookeeper">ZKUtil.ZKUtilOp.CreateAndFailSilent</a>
 <div class="block">ZKUtilOp representing createAndFailSilent in ZooKeeper
  (attempt to create node, ignore error if already exists)</div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colOne"><a href="../../../../../org/apache/hadoop/hbase/zookeeper/class-use/ZKUtil.ZKUtilOp.DeleteNodeFailSilent.html#org.apache.hadoop.hbase.zookeeper">ZKUtil.ZKUtilOp.DeleteNodeFailSilent</a>
 <div class="block">ZKUtilOp representing deleteNodeFailSilent in ZooKeeper
  (attempt to delete node, ignore error if node doesn't exist)</div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colOne"><a href="../../../../../org/apache/hadoop/hbase/zookeeper/class-use/ZKUtil.ZKUtilOp.SetData.html#org.apache.hadoop.hbase.zookeeper">ZKUtil.ZKUtilOp.SetData</a>
 <div class="block">ZKUtilOp representing setData in ZooKeeper</div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colOne"><a href="../../../../../org/apache/hadoop/hbase/zookeeper/class-use/ZKWatcher.html#org.apache.hadoop.hbase.zookeeper">ZKWatcher</a>
 <div class="block">Acts as the single ZooKeeper Watcher.</div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colOne"><a href="../../../../../org/apache/hadoop/hbase/zookeeper/class-use/ZNodePaths.html#org.apache.hadoop.hbase.zookeeper">ZNodePaths</a>
 <div class="block">Class that hold all the paths of znode for HBase.</div>
 </td>


[09/51] [partial] hbase-site git commit: Published site at .

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/c54c242b/hbase-build-configuration/hbase-archetypes/hbase-client-project/license.html
----------------------------------------------------------------------
diff --git a/hbase-build-configuration/hbase-archetypes/hbase-client-project/license.html b/hbase-build-configuration/hbase-archetypes/hbase-client-project/license.html
index af8b9cf..8344654 100644
--- a/hbase-build-configuration/hbase-archetypes/hbase-client-project/license.html
+++ b/hbase-build-configuration/hbase-archetypes/hbase-client-project/license.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="20171202" />
+    <meta name="Date-Revision-yyyymmdd" content="20171203" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase - Exemplar for hbase-client archetype &#x2013; Project Licenses</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -326,7 +326,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2017-12-02</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2017-12-03</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/c54c242b/hbase-build-configuration/hbase-archetypes/hbase-client-project/mail-lists.html
----------------------------------------------------------------------
diff --git a/hbase-build-configuration/hbase-archetypes/hbase-client-project/mail-lists.html b/hbase-build-configuration/hbase-archetypes/hbase-client-project/mail-lists.html
index afe6a90..ec3a91a 100644
--- a/hbase-build-configuration/hbase-archetypes/hbase-client-project/mail-lists.html
+++ b/hbase-build-configuration/hbase-archetypes/hbase-client-project/mail-lists.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="20171202" />
+    <meta name="Date-Revision-yyyymmdd" content="20171203" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase - Exemplar for hbase-client archetype &#x2013; Project Mailing Lists</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -176,7 +176,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2017-12-02</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2017-12-03</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/c54c242b/hbase-build-configuration/hbase-archetypes/hbase-client-project/plugin-management.html
----------------------------------------------------------------------
diff --git a/hbase-build-configuration/hbase-archetypes/hbase-client-project/plugin-management.html b/hbase-build-configuration/hbase-archetypes/hbase-client-project/plugin-management.html
index 0191301..bea329e 100644
--- a/hbase-build-configuration/hbase-archetypes/hbase-client-project/plugin-management.html
+++ b/hbase-build-configuration/hbase-archetypes/hbase-client-project/plugin-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="20171202" />
+    <meta name="Date-Revision-yyyymmdd" content="20171203" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase - Exemplar for hbase-client archetype &#x2013; Project Plugin Management</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -271,7 +271,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2017-12-02</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2017-12-03</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/c54c242b/hbase-build-configuration/hbase-archetypes/hbase-client-project/plugins.html
----------------------------------------------------------------------
diff --git a/hbase-build-configuration/hbase-archetypes/hbase-client-project/plugins.html b/hbase-build-configuration/hbase-archetypes/hbase-client-project/plugins.html
index 967ed67..374e080 100644
--- a/hbase-build-configuration/hbase-archetypes/hbase-client-project/plugins.html
+++ b/hbase-build-configuration/hbase-archetypes/hbase-client-project/plugins.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="20171202" />
+    <meta name="Date-Revision-yyyymmdd" content="20171203" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase - Exemplar for hbase-client archetype &#x2013; Project Plugins</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -226,7 +226,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2017-12-02</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2017-12-03</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/c54c242b/hbase-build-configuration/hbase-archetypes/hbase-client-project/project-info.html
----------------------------------------------------------------------
diff --git a/hbase-build-configuration/hbase-archetypes/hbase-client-project/project-info.html b/hbase-build-configuration/hbase-archetypes/hbase-client-project/project-info.html
index 7f55382..19b1cd2 100644
--- a/hbase-build-configuration/hbase-archetypes/hbase-client-project/project-info.html
+++ b/hbase-build-configuration/hbase-archetypes/hbase-client-project/project-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="20171202" />
+    <meta name="Date-Revision-yyyymmdd" content="20171203" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase - Exemplar for hbase-client archetype &#x2013; Project Information</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -167,7 +167,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2017-12-02</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2017-12-03</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/c54c242b/hbase-build-configuration/hbase-archetypes/hbase-client-project/project-reports.html
----------------------------------------------------------------------
diff --git a/hbase-build-configuration/hbase-archetypes/hbase-client-project/project-reports.html b/hbase-build-configuration/hbase-archetypes/hbase-client-project/project-reports.html
index c07fc98..9622920 100644
--- a/hbase-build-configuration/hbase-archetypes/hbase-client-project/project-reports.html
+++ b/hbase-build-configuration/hbase-archetypes/hbase-client-project/project-reports.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="20171202" />
+    <meta name="Date-Revision-yyyymmdd" content="20171203" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase - Exemplar for hbase-client archetype &#x2013; Generated Reports</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -128,7 +128,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2017-12-02</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2017-12-03</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/c54c242b/hbase-build-configuration/hbase-archetypes/hbase-client-project/project-summary.html
----------------------------------------------------------------------
diff --git a/hbase-build-configuration/hbase-archetypes/hbase-client-project/project-summary.html b/hbase-build-configuration/hbase-archetypes/hbase-client-project/project-summary.html
index ad2c7e7..30c6c85 100644
--- a/hbase-build-configuration/hbase-archetypes/hbase-client-project/project-summary.html
+++ b/hbase-build-configuration/hbase-archetypes/hbase-client-project/project-summary.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="20171202" />
+    <meta name="Date-Revision-yyyymmdd" content="20171203" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase - Exemplar for hbase-client archetype &#x2013; Project Summary</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -166,7 +166,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2017-12-02</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2017-12-03</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/c54c242b/hbase-build-configuration/hbase-archetypes/hbase-client-project/source-repository.html
----------------------------------------------------------------------
diff --git a/hbase-build-configuration/hbase-archetypes/hbase-client-project/source-repository.html b/hbase-build-configuration/hbase-archetypes/hbase-client-project/source-repository.html
index b3bf9b1..6819e88 100644
--- a/hbase-build-configuration/hbase-archetypes/hbase-client-project/source-repository.html
+++ b/hbase-build-configuration/hbase-archetypes/hbase-client-project/source-repository.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="20171202" />
+    <meta name="Date-Revision-yyyymmdd" content="20171203" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase - Exemplar for hbase-client archetype &#x2013; Source Code Management</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -134,7 +134,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2017-12-02</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2017-12-03</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/c54c242b/hbase-build-configuration/hbase-archetypes/hbase-client-project/team-list.html
----------------------------------------------------------------------
diff --git a/hbase-build-configuration/hbase-archetypes/hbase-client-project/team-list.html b/hbase-build-configuration/hbase-archetypes/hbase-client-project/team-list.html
index 0eb5980..5d33210 100644
--- a/hbase-build-configuration/hbase-archetypes/hbase-client-project/team-list.html
+++ b/hbase-build-configuration/hbase-archetypes/hbase-client-project/team-list.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="20171202" />
+    <meta name="Date-Revision-yyyymmdd" content="20171203" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase - Exemplar for hbase-client archetype &#x2013; Project Team</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -547,7 +547,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2017-12-02</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2017-12-03</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/c54c242b/hbase-build-configuration/hbase-archetypes/hbase-shaded-client-project/checkstyle.html
----------------------------------------------------------------------
diff --git a/hbase-build-configuration/hbase-archetypes/hbase-shaded-client-project/checkstyle.html b/hbase-build-configuration/hbase-archetypes/hbase-shaded-client-project/checkstyle.html
index 4634bed..37a6f2d 100644
--- a/hbase-build-configuration/hbase-archetypes/hbase-shaded-client-project/checkstyle.html
+++ b/hbase-build-configuration/hbase-archetypes/hbase-shaded-client-project/checkstyle.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="20171202" />
+    <meta name="Date-Revision-yyyymmdd" content="20171203" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase - Exemplar for hbase-shaded-client archetype &#x2013; Checkstyle Results</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -244,7 +244,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2017-12-02</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2017-12-03</li>
             </p>
                 </div>
 


[25/51] [partial] hbase-site git commit: Published site at .

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/c54c242b/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/HRegion.MutationBatchOperation.html
----------------------------------------------------------------------
diff --git a/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/HRegion.MutationBatchOperation.html b/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/HRegion.MutationBatchOperation.html
index 3edfbef..9707b2c 100644
--- a/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/HRegion.MutationBatchOperation.html
+++ b/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/HRegion.MutationBatchOperation.html
@@ -2459,5936 +2459,5935 @@
 <span class="sourceLineNo">2451</span>      }<a name="line.2451"></a>
 <span class="sourceLineNo">2452</span><a name="line.2452"></a>
 <span class="sourceLineNo">2453</span>      for (HStore s : storesToFlush) {<a name="line.2453"></a>
-<span class="sourceLineNo">2454</span>        MemStoreSize flushableSize = s.getFlushableSize();<a name="line.2454"></a>
-<span class="sourceLineNo">2455</span>        totalSizeOfFlushableStores.incMemStoreSize(flushableSize);<a name="line.2455"></a>
-<span class="sourceLineNo">2456</span>        storeFlushCtxs.put(s.getColumnFamilyDescriptor().getName(),<a name="line.2456"></a>
-<span class="sourceLineNo">2457</span>          s.createFlushContext(flushOpSeqId, tracker));<a name="line.2457"></a>
-<span class="sourceLineNo">2458</span>        // for writing stores to WAL<a name="line.2458"></a>
-<span class="sourceLineNo">2459</span>        committedFiles.put(s.getColumnFamilyDescriptor().getName(), null);<a name="line.2459"></a>
-<span class="sourceLineNo">2460</span>        storeFlushableSize.put(s.getColumnFamilyDescriptor().getName(), flushableSize);<a name="line.2460"></a>
-<span class="sourceLineNo">2461</span>      }<a name="line.2461"></a>
-<span class="sourceLineNo">2462</span><a name="line.2462"></a>
-<span class="sourceLineNo">2463</span>      // write the snapshot start to WAL<a name="line.2463"></a>
-<span class="sourceLineNo">2464</span>      if (wal != null &amp;&amp; !writestate.readOnly) {<a name="line.2464"></a>
-<span class="sourceLineNo">2465</span>        FlushDescriptor desc = ProtobufUtil.toFlushDescriptor(FlushAction.START_FLUSH,<a name="line.2465"></a>
-<span class="sourceLineNo">2466</span>            getRegionInfo(), flushOpSeqId, committedFiles);<a name="line.2466"></a>
-<span class="sourceLineNo">2467</span>        // No sync. Sync is below where no updates lock and we do FlushAction.COMMIT_FLUSH<a name="line.2467"></a>
-<span class="sourceLineNo">2468</span>        WALUtil.writeFlushMarker(wal, this.getReplicationScope(), getRegionInfo(), desc, false,<a name="line.2468"></a>
-<span class="sourceLineNo">2469</span>            mvcc);<a name="line.2469"></a>
-<span class="sourceLineNo">2470</span>      }<a name="line.2470"></a>
-<span class="sourceLineNo">2471</span><a name="line.2471"></a>
-<span class="sourceLineNo">2472</span>      // Prepare flush (take a snapshot)<a name="line.2472"></a>
-<span class="sourceLineNo">2473</span>      for (StoreFlushContext flush : storeFlushCtxs.values()) {<a name="line.2473"></a>
-<span class="sourceLineNo">2474</span>        flush.prepare();<a name="line.2474"></a>
-<span class="sourceLineNo">2475</span>      }<a name="line.2475"></a>
-<span class="sourceLineNo">2476</span>    } catch (IOException ex) {<a name="line.2476"></a>
-<span class="sourceLineNo">2477</span>      doAbortFlushToWAL(wal, flushOpSeqId, committedFiles);<a name="line.2477"></a>
-<span class="sourceLineNo">2478</span>      throw ex;<a name="line.2478"></a>
-<span class="sourceLineNo">2479</span>    } finally {<a name="line.2479"></a>
-<span class="sourceLineNo">2480</span>      this.updatesLock.writeLock().unlock();<a name="line.2480"></a>
-<span class="sourceLineNo">2481</span>    }<a name="line.2481"></a>
-<span class="sourceLineNo">2482</span>    String s = "Finished memstore snapshotting " + this + ", syncing WAL and waiting on mvcc, " +<a name="line.2482"></a>
-<span class="sourceLineNo">2483</span>        "flushsize=" + totalSizeOfFlushableStores;<a name="line.2483"></a>
-<span class="sourceLineNo">2484</span>    status.setStatus(s);<a name="line.2484"></a>
-<span class="sourceLineNo">2485</span>    doSyncOfUnflushedWALChanges(wal, getRegionInfo());<a name="line.2485"></a>
-<span class="sourceLineNo">2486</span>    return new PrepareFlushResult(storeFlushCtxs, committedFiles, storeFlushableSize, startTime,<a name="line.2486"></a>
-<span class="sourceLineNo">2487</span>        flushOpSeqId, flushedSeqId, totalSizeOfFlushableStores);<a name="line.2487"></a>
-<span class="sourceLineNo">2488</span>  }<a name="line.2488"></a>
-<span class="sourceLineNo">2489</span><a name="line.2489"></a>
-<span class="sourceLineNo">2490</span>  /**<a name="line.2490"></a>
-<span class="sourceLineNo">2491</span>   * Utility method broken out of internalPrepareFlushCache so that method is smaller.<a name="line.2491"></a>
-<span class="sourceLineNo">2492</span>   */<a name="line.2492"></a>
-<span class="sourceLineNo">2493</span>  private void logFatLineOnFlush(Collection&lt;HStore&gt; storesToFlush, long sequenceId) {<a name="line.2493"></a>
-<span class="sourceLineNo">2494</span>    if (!LOG.isInfoEnabled()) {<a name="line.2494"></a>
-<span class="sourceLineNo">2495</span>      return;<a name="line.2495"></a>
-<span class="sourceLineNo">2496</span>    }<a name="line.2496"></a>
-<span class="sourceLineNo">2497</span>    // Log a fat line detailing what is being flushed.<a name="line.2497"></a>
-<span class="sourceLineNo">2498</span>    StringBuilder perCfExtras = null;<a name="line.2498"></a>
-<span class="sourceLineNo">2499</span>    if (!isAllFamilies(storesToFlush)) {<a name="line.2499"></a>
-<span class="sourceLineNo">2500</span>      perCfExtras = new StringBuilder();<a name="line.2500"></a>
-<span class="sourceLineNo">2501</span>      for (HStore store: storesToFlush) {<a name="line.2501"></a>
-<span class="sourceLineNo">2502</span>        perCfExtras.append("; ").append(store.getColumnFamilyName());<a name="line.2502"></a>
-<span class="sourceLineNo">2503</span>        perCfExtras.append("=")<a name="line.2503"></a>
-<span class="sourceLineNo">2504</span>            .append(StringUtils.byteDesc(store.getFlushableSize().getDataSize()));<a name="line.2504"></a>
-<span class="sourceLineNo">2505</span>      }<a name="line.2505"></a>
-<span class="sourceLineNo">2506</span>    }<a name="line.2506"></a>
-<span class="sourceLineNo">2507</span>    LOG.info("Flushing " + + storesToFlush.size() + "/" + stores.size() +<a name="line.2507"></a>
-<span class="sourceLineNo">2508</span>        " column families, memstore=" + StringUtils.byteDesc(this.memstoreDataSize.get()) +<a name="line.2508"></a>
-<span class="sourceLineNo">2509</span>        ((perCfExtras != null &amp;&amp; perCfExtras.length() &gt; 0)? perCfExtras.toString(): "") +<a name="line.2509"></a>
-<span class="sourceLineNo">2510</span>        ((wal != null) ? "" : "; WAL is null, using passed sequenceid=" + sequenceId));<a name="line.2510"></a>
-<span class="sourceLineNo">2511</span>  }<a name="line.2511"></a>
-<span class="sourceLineNo">2512</span><a name="line.2512"></a>
-<span class="sourceLineNo">2513</span>  private void doAbortFlushToWAL(final WAL wal, final long flushOpSeqId,<a name="line.2513"></a>
-<span class="sourceLineNo">2514</span>      final Map&lt;byte[], List&lt;Path&gt;&gt; committedFiles) {<a name="line.2514"></a>
-<span class="sourceLineNo">2515</span>    if (wal == null) return;<a name="line.2515"></a>
-<span class="sourceLineNo">2516</span>    try {<a name="line.2516"></a>
-<span class="sourceLineNo">2517</span>      FlushDescriptor desc = ProtobufUtil.toFlushDescriptor(FlushAction.ABORT_FLUSH,<a name="line.2517"></a>
-<span class="sourceLineNo">2518</span>          getRegionInfo(), flushOpSeqId, committedFiles);<a name="line.2518"></a>
-<span class="sourceLineNo">2519</span>      WALUtil.writeFlushMarker(wal, this.getReplicationScope(), getRegionInfo(), desc, false,<a name="line.2519"></a>
-<span class="sourceLineNo">2520</span>          mvcc);<a name="line.2520"></a>
-<span class="sourceLineNo">2521</span>    } catch (Throwable t) {<a name="line.2521"></a>
-<span class="sourceLineNo">2522</span>      LOG.warn("Received unexpected exception trying to write ABORT_FLUSH marker to WAL:" +<a name="line.2522"></a>
-<span class="sourceLineNo">2523</span>          StringUtils.stringifyException(t));<a name="line.2523"></a>
-<span class="sourceLineNo">2524</span>      // ignore this since we will be aborting the RS with DSE.<a name="line.2524"></a>
-<span class="sourceLineNo">2525</span>    }<a name="line.2525"></a>
-<span class="sourceLineNo">2526</span>    // we have called wal.startCacheFlush(), now we have to abort it<a name="line.2526"></a>
-<span class="sourceLineNo">2527</span>    wal.abortCacheFlush(this.getRegionInfo().getEncodedNameAsBytes());<a name="line.2527"></a>
-<span class="sourceLineNo">2528</span>  }<a name="line.2528"></a>
-<span class="sourceLineNo">2529</span><a name="line.2529"></a>
-<span class="sourceLineNo">2530</span>  /**<a name="line.2530"></a>
-<span class="sourceLineNo">2531</span>   * Sync unflushed WAL changes. See HBASE-8208 for details<a name="line.2531"></a>
-<span class="sourceLineNo">2532</span>   */<a name="line.2532"></a>
-<span class="sourceLineNo">2533</span>  private static void doSyncOfUnflushedWALChanges(final WAL wal, final RegionInfo hri)<a name="line.2533"></a>
-<span class="sourceLineNo">2534</span>  throws IOException {<a name="line.2534"></a>
-<span class="sourceLineNo">2535</span>    if (wal == null) {<a name="line.2535"></a>
-<span class="sourceLineNo">2536</span>      return;<a name="line.2536"></a>
-<span class="sourceLineNo">2537</span>    }<a name="line.2537"></a>
-<span class="sourceLineNo">2538</span>    try {<a name="line.2538"></a>
-<span class="sourceLineNo">2539</span>      wal.sync(); // ensure that flush marker is sync'ed<a name="line.2539"></a>
-<span class="sourceLineNo">2540</span>    } catch (IOException ioe) {<a name="line.2540"></a>
-<span class="sourceLineNo">2541</span>      wal.abortCacheFlush(hri.getEncodedNameAsBytes());<a name="line.2541"></a>
-<span class="sourceLineNo">2542</span>      throw ioe;<a name="line.2542"></a>
-<span class="sourceLineNo">2543</span>    }<a name="line.2543"></a>
-<span class="sourceLineNo">2544</span>  }<a name="line.2544"></a>
-<span class="sourceLineNo">2545</span><a name="line.2545"></a>
-<span class="sourceLineNo">2546</span>  /**<a name="line.2546"></a>
-<span class="sourceLineNo">2547</span>   * @return True if passed Set is all families in the region.<a name="line.2547"></a>
-<span class="sourceLineNo">2548</span>   */<a name="line.2548"></a>
-<span class="sourceLineNo">2549</span>  private boolean isAllFamilies(Collection&lt;HStore&gt; families) {<a name="line.2549"></a>
-<span class="sourceLineNo">2550</span>    return families == null || this.stores.size() == families.size();<a name="line.2550"></a>
-<span class="sourceLineNo">2551</span>  }<a name="line.2551"></a>
-<span class="sourceLineNo">2552</span><a name="line.2552"></a>
-<span class="sourceLineNo">2553</span>  /**<a name="line.2553"></a>
-<span class="sourceLineNo">2554</span>   * Writes a marker to WAL indicating a flush is requested but cannot be complete due to various<a name="line.2554"></a>
-<span class="sourceLineNo">2555</span>   * reasons. Ignores exceptions from WAL. Returns whether the write succeeded.<a name="line.2555"></a>
-<span class="sourceLineNo">2556</span>   * @param wal<a name="line.2556"></a>
-<span class="sourceLineNo">2557</span>   * @return whether WAL write was successful<a name="line.2557"></a>
-<span class="sourceLineNo">2558</span>   */<a name="line.2558"></a>
-<span class="sourceLineNo">2559</span>  private boolean writeFlushRequestMarkerToWAL(WAL wal, boolean writeFlushWalMarker) {<a name="line.2559"></a>
-<span class="sourceLineNo">2560</span>    if (writeFlushWalMarker &amp;&amp; wal != null &amp;&amp; !writestate.readOnly) {<a name="line.2560"></a>
-<span class="sourceLineNo">2561</span>      FlushDescriptor desc = ProtobufUtil.toFlushDescriptor(FlushAction.CANNOT_FLUSH,<a name="line.2561"></a>
-<span class="sourceLineNo">2562</span>        getRegionInfo(), -1, new TreeMap&lt;&gt;(Bytes.BYTES_COMPARATOR));<a name="line.2562"></a>
-<span class="sourceLineNo">2563</span>      try {<a name="line.2563"></a>
-<span class="sourceLineNo">2564</span>        WALUtil.writeFlushMarker(wal, this.getReplicationScope(), getRegionInfo(), desc, true,<a name="line.2564"></a>
-<span class="sourceLineNo">2565</span>            mvcc);<a name="line.2565"></a>
-<span class="sourceLineNo">2566</span>        return true;<a name="line.2566"></a>
-<span class="sourceLineNo">2567</span>      } catch (IOException e) {<a name="line.2567"></a>
-<span class="sourceLineNo">2568</span>        LOG.warn(getRegionInfo().getEncodedName() + " : "<a name="line.2568"></a>
-<span class="sourceLineNo">2569</span>            + "Received exception while trying to write the flush request to wal", e);<a name="line.2569"></a>
-<span class="sourceLineNo">2570</span>      }<a name="line.2570"></a>
-<span class="sourceLineNo">2571</span>    }<a name="line.2571"></a>
-<span class="sourceLineNo">2572</span>    return false;<a name="line.2572"></a>
-<span class="sourceLineNo">2573</span>  }<a name="line.2573"></a>
-<span class="sourceLineNo">2574</span><a name="line.2574"></a>
-<span class="sourceLineNo">2575</span>  @edu.umd.cs.findbugs.annotations.SuppressWarnings(value="NN_NAKED_NOTIFY",<a name="line.2575"></a>
-<span class="sourceLineNo">2576</span>      justification="Intentional; notify is about completed flush")<a name="line.2576"></a>
-<span class="sourceLineNo">2577</span>  protected FlushResultImpl internalFlushCacheAndCommit(WAL wal, MonitoredTask status,<a name="line.2577"></a>
-<span class="sourceLineNo">2578</span>      PrepareFlushResult prepareResult, Collection&lt;HStore&gt; storesToFlush) throws IOException {<a name="line.2578"></a>
-<span class="sourceLineNo">2579</span>    // prepare flush context is carried via PrepareFlushResult<a name="line.2579"></a>
-<span class="sourceLineNo">2580</span>    TreeMap&lt;byte[], StoreFlushContext&gt; storeFlushCtxs = prepareResult.storeFlushCtxs;<a name="line.2580"></a>
-<span class="sourceLineNo">2581</span>    TreeMap&lt;byte[], List&lt;Path&gt;&gt; committedFiles = prepareResult.committedFiles;<a name="line.2581"></a>
-<span class="sourceLineNo">2582</span>    long startTime = prepareResult.startTime;<a name="line.2582"></a>
-<span class="sourceLineNo">2583</span>    long flushOpSeqId = prepareResult.flushOpSeqId;<a name="line.2583"></a>
-<span class="sourceLineNo">2584</span>    long flushedSeqId = prepareResult.flushedSeqId;<a name="line.2584"></a>
-<span class="sourceLineNo">2585</span><a name="line.2585"></a>
-<span class="sourceLineNo">2586</span>    String s = "Flushing stores of " + this;<a name="line.2586"></a>
-<span class="sourceLineNo">2587</span>    status.setStatus(s);<a name="line.2587"></a>
-<span class="sourceLineNo">2588</span>    if (LOG.isTraceEnabled()) LOG.trace(s);<a name="line.2588"></a>
-<span class="sourceLineNo">2589</span><a name="line.2589"></a>
-<span class="sourceLineNo">2590</span>    // Any failure from here on out will be catastrophic requiring server<a name="line.2590"></a>
-<span class="sourceLineNo">2591</span>    // restart so wal content can be replayed and put back into the memstore.<a name="line.2591"></a>
-<span class="sourceLineNo">2592</span>    // Otherwise, the snapshot content while backed up in the wal, it will not<a name="line.2592"></a>
-<span class="sourceLineNo">2593</span>    // be part of the current running servers state.<a name="line.2593"></a>
-<span class="sourceLineNo">2594</span>    boolean compactionRequested = false;<a name="line.2594"></a>
-<span class="sourceLineNo">2595</span>    long flushedOutputFileSize = 0;<a name="line.2595"></a>
-<span class="sourceLineNo">2596</span>    try {<a name="line.2596"></a>
-<span class="sourceLineNo">2597</span>      // A.  Flush memstore to all the HStores.<a name="line.2597"></a>
-<span class="sourceLineNo">2598</span>      // Keep running vector of all store files that includes both old and the<a name="line.2598"></a>
-<span class="sourceLineNo">2599</span>      // just-made new flush store file. The new flushed file is still in the<a name="line.2599"></a>
-<span class="sourceLineNo">2600</span>      // tmp directory.<a name="line.2600"></a>
-<span class="sourceLineNo">2601</span><a name="line.2601"></a>
-<span class="sourceLineNo">2602</span>      for (StoreFlushContext flush : storeFlushCtxs.values()) {<a name="line.2602"></a>
-<span class="sourceLineNo">2603</span>        flush.flushCache(status);<a name="line.2603"></a>
-<span class="sourceLineNo">2604</span>      }<a name="line.2604"></a>
-<span class="sourceLineNo">2605</span><a name="line.2605"></a>
-<span class="sourceLineNo">2606</span>      // Switch snapshot (in memstore) -&gt; new hfile (thus causing<a name="line.2606"></a>
-<span class="sourceLineNo">2607</span>      // all the store scanners to reset/reseek).<a name="line.2607"></a>
-<span class="sourceLineNo">2608</span>      Iterator&lt;HStore&gt; it = storesToFlush.iterator();<a name="line.2608"></a>
-<span class="sourceLineNo">2609</span>      // stores.values() and storeFlushCtxs have same order<a name="line.2609"></a>
-<span class="sourceLineNo">2610</span>      for (StoreFlushContext flush : storeFlushCtxs.values()) {<a name="line.2610"></a>
-<span class="sourceLineNo">2611</span>        boolean needsCompaction = flush.commit(status);<a name="line.2611"></a>
-<span class="sourceLineNo">2612</span>        if (needsCompaction) {<a name="line.2612"></a>
-<span class="sourceLineNo">2613</span>          compactionRequested = true;<a name="line.2613"></a>
-<span class="sourceLineNo">2614</span>        }<a name="line.2614"></a>
-<span class="sourceLineNo">2615</span>        byte[] storeName = it.next().getColumnFamilyDescriptor().getName();<a name="line.2615"></a>
-<span class="sourceLineNo">2616</span>        List&lt;Path&gt; storeCommittedFiles = flush.getCommittedFiles();<a name="line.2616"></a>
-<span class="sourceLineNo">2617</span>        committedFiles.put(storeName, storeCommittedFiles);<a name="line.2617"></a>
-<span class="sourceLineNo">2618</span>        // Flush committed no files, indicating flush is empty or flush was canceled<a name="line.2618"></a>
-<span class="sourceLineNo">2619</span>        if (storeCommittedFiles == null || storeCommittedFiles.isEmpty()) {<a name="line.2619"></a>
-<span class="sourceLineNo">2620</span>          MemStoreSize storeFlushableSize = prepareResult.storeFlushableSize.get(storeName);<a name="line.2620"></a>
-<span class="sourceLineNo">2621</span>          prepareResult.totalFlushableSize.decMemStoreSize(storeFlushableSize);<a name="line.2621"></a>
-<span class="sourceLineNo">2622</span>        }<a name="line.2622"></a>
-<span class="sourceLineNo">2623</span>        flushedOutputFileSize += flush.getOutputFileSize();<a name="line.2623"></a>
-<span class="sourceLineNo">2624</span>      }<a name="line.2624"></a>
-<span class="sourceLineNo">2625</span>      storeFlushCtxs.clear();<a name="line.2625"></a>
-<span class="sourceLineNo">2626</span><a name="line.2626"></a>
-<span class="sourceLineNo">2627</span>      // Set down the memstore size by amount of flush.<a name="line.2627"></a>
-<span class="sourceLineNo">2628</span>      this.decrMemStoreSize(prepareResult.totalFlushableSize);<a name="line.2628"></a>
-<span class="sourceLineNo">2629</span><a name="line.2629"></a>
-<span class="sourceLineNo">2630</span>      if (wal != null) {<a name="line.2630"></a>
-<span class="sourceLineNo">2631</span>        // write flush marker to WAL. If fail, we should throw DroppedSnapshotException<a name="line.2631"></a>
-<span class="sourceLineNo">2632</span>        FlushDescriptor desc = ProtobufUtil.toFlushDescriptor(FlushAction.COMMIT_FLUSH,<a name="line.2632"></a>
-<span class="sourceLineNo">2633</span>          getRegionInfo(), flushOpSeqId, committedFiles);<a name="line.2633"></a>
-<span class="sourceLineNo">2634</span>        WALUtil.writeFlushMarker(wal, this.getReplicationScope(), getRegionInfo(), desc, true,<a name="line.2634"></a>
-<span class="sourceLineNo">2635</span>            mvcc);<a name="line.2635"></a>
-<span class="sourceLineNo">2636</span>      }<a name="line.2636"></a>
-<span class="sourceLineNo">2637</span>    } catch (Throwable t) {<a name="line.2637"></a>
-<span class="sourceLineNo">2638</span>      // An exception here means that the snapshot was not persisted.<a name="line.2638"></a>
-<span class="sourceLineNo">2639</span>      // The wal needs to be replayed so its content is restored to memstore.<a name="line.2639"></a>
-<span class="sourceLineNo">2640</span>      // Currently, only a server restart will do this.<a name="line.2640"></a>
-<span class="sourceLineNo">2641</span>      // We used to only catch IOEs but its possible that we'd get other<a name="line.2641"></a>
-<span class="sourceLineNo">2642</span>      // exceptions -- e.g. HBASE-659 was about an NPE -- so now we catch<a name="line.2642"></a>
-<span class="sourceLineNo">2643</span>      // all and sundry.<a name="line.2643"></a>
-<span class="sourceLineNo">2644</span>      if (wal != null) {<a name="line.2644"></a>
-<span class="sourceLineNo">2645</span>        try {<a name="line.2645"></a>
-<span class="sourceLineNo">2646</span>          FlushDescriptor desc = ProtobufUtil.toFlushDescriptor(FlushAction.ABORT_FLUSH,<a name="line.2646"></a>
-<span class="sourceLineNo">2647</span>            getRegionInfo(), flushOpSeqId, committedFiles);<a name="line.2647"></a>
-<span class="sourceLineNo">2648</span>          WALUtil.writeFlushMarker(wal, this.replicationScope, getRegionInfo(), desc, false, mvcc);<a name="line.2648"></a>
-<span class="sourceLineNo">2649</span>        } catch (Throwable ex) {<a name="line.2649"></a>
-<span class="sourceLineNo">2650</span>          LOG.warn(getRegionInfo().getEncodedName() + " : "<a name="line.2650"></a>
-<span class="sourceLineNo">2651</span>              + "failed writing ABORT_FLUSH marker to WAL", ex);<a name="line.2651"></a>
-<span class="sourceLineNo">2652</span>          // ignore this since we will be aborting the RS with DSE.<a name="line.2652"></a>
-<span class="sourceLineNo">2653</span>        }<a name="line.2653"></a>
-<span class="sourceLineNo">2654</span>        wal.abortCacheFlush(this.getRegionInfo().getEncodedNameAsBytes());<a name="line.2654"></a>
-<span class="sourceLineNo">2655</span>      }<a name="line.2655"></a>
-<span class="sourceLineNo">2656</span>      DroppedSnapshotException dse = new DroppedSnapshotException("region: " +<a name="line.2656"></a>
-<span class="sourceLineNo">2657</span>          Bytes.toStringBinary(getRegionInfo().getRegionName()));<a name="line.2657"></a>
-<span class="sourceLineNo">2658</span>      dse.initCause(t);<a name="line.2658"></a>
-<span class="sourceLineNo">2659</span>      status.abort("Flush failed: " + StringUtils.stringifyException(t));<a name="line.2659"></a>
-<span class="sourceLineNo">2660</span><a name="line.2660"></a>
-<span class="sourceLineNo">2661</span>      // Callers for flushcache() should catch DroppedSnapshotException and abort the region server.<a name="line.2661"></a>
-<span class="sourceLineNo">2662</span>      // However, since we may have the region read lock, we cannot call close(true) here since<a name="line.2662"></a>
-<span class="sourceLineNo">2663</span>      // we cannot promote to a write lock. Instead we are setting closing so that all other region<a name="line.2663"></a>
-<span class="sourceLineNo">2664</span>      // operations except for close will be rejected.<a name="line.2664"></a>
-<span class="sourceLineNo">2665</span>      this.closing.set(true);<a name="line.2665"></a>
-<span class="sourceLineNo">2666</span><a name="line.2666"></a>
-<span class="sourceLineNo">2667</span>      if (rsServices != null) {<a name="line.2667"></a>
-<span class="sourceLineNo">2668</span>        // This is a safeguard against the case where the caller fails to explicitly handle aborting<a name="line.2668"></a>
-<span class="sourceLineNo">2669</span>        rsServices.abort("Replay of WAL required. Forcing server shutdown", dse);<a name="line.2669"></a>
-<span class="sourceLineNo">2670</span>      }<a name="line.2670"></a>
-<span class="sourceLineNo">2671</span><a name="line.2671"></a>
-<span class="sourceLineNo">2672</span>      throw dse;<a name="line.2672"></a>
-<span class="sourceLineNo">2673</span>    }<a name="line.2673"></a>
-<span class="sourceLineNo">2674</span><a name="line.2674"></a>
-<span class="sourceLineNo">2675</span>    // If we get to here, the HStores have been written.<a name="line.2675"></a>
-<span class="sourceLineNo">2676</span>    if (wal != null) {<a name="line.2676"></a>
-<span class="sourceLineNo">2677</span>      wal.completeCacheFlush(this.getRegionInfo().getEncodedNameAsBytes());<a name="line.2677"></a>
-<span class="sourceLineNo">2678</span>    }<a name="line.2678"></a>
-<span class="sourceLineNo">2679</span><a name="line.2679"></a>
-<span class="sourceLineNo">2680</span>    // Record latest flush time<a name="line.2680"></a>
-<span class="sourceLineNo">2681</span>    for (HStore store: storesToFlush) {<a name="line.2681"></a>
-<span class="sourceLineNo">2682</span>      this.lastStoreFlushTimeMap.put(store, startTime);<a name="line.2682"></a>
-<span class="sourceLineNo">2683</span>    }<a name="line.2683"></a>
-<span class="sourceLineNo">2684</span><a name="line.2684"></a>
-<span class="sourceLineNo">2685</span>    this.maxFlushedSeqId = flushedSeqId;<a name="line.2685"></a>
-<span class="sourceLineNo">2686</span>    this.lastFlushOpSeqId = flushOpSeqId;<a name="line.2686"></a>
-<span class="sourceLineNo">2687</span><a name="line.2687"></a>
-<span class="sourceLineNo">2688</span>    // C. Finally notify anyone waiting on memstore to clear:<a name="line.2688"></a>
-<span class="sourceLineNo">2689</span>    // e.g. checkResources().<a name="line.2689"></a>
-<span class="sourceLineNo">2690</span>    synchronized (this) {<a name="line.2690"></a>
-<span class="sourceLineNo">2691</span>      notifyAll(); // FindBugs NN_NAKED_NOTIFY<a name="line.2691"></a>
-<span class="sourceLineNo">2692</span>    }<a name="line.2692"></a>
-<span class="sourceLineNo">2693</span><a name="line.2693"></a>
-<span class="sourceLineNo">2694</span>    long time = EnvironmentEdgeManager.currentTime() - startTime;<a name="line.2694"></a>
-<span class="sourceLineNo">2695</span>    long memstoresize = this.memstoreDataSize.get();<a name="line.2695"></a>
-<span class="sourceLineNo">2696</span>    String msg = "Finished memstore flush of ~"<a name="line.2696"></a>
-<span class="sourceLineNo">2697</span>        + StringUtils.byteDesc(prepareResult.totalFlushableSize.getDataSize()) + "/"<a name="line.2697"></a>
-<span class="sourceLineNo">2698</span>        + prepareResult.totalFlushableSize.getDataSize() + ", currentsize="<a name="line.2698"></a>
-<span class="sourceLineNo">2699</span>        + StringUtils.byteDesc(memstoresize) + "/" + memstoresize<a name="line.2699"></a>
-<span class="sourceLineNo">2700</span>        + " for region " + this + " in " + time + "ms, sequenceid="<a name="line.2700"></a>
-<span class="sourceLineNo">2701</span>        + flushOpSeqId +  ", compaction requested=" + compactionRequested<a name="line.2701"></a>
-<span class="sourceLineNo">2702</span>        + ((wal == null) ? "; wal=null" : "");<a name="line.2702"></a>
-<span class="sourceLineNo">2703</span>    LOG.info(msg);<a name="line.2703"></a>
-<span class="sourceLineNo">2704</span>    status.setStatus(msg);<a name="line.2704"></a>
-<span class="sourceLineNo">2705</span><a name="line.2705"></a>
-<span class="sourceLineNo">2706</span>    if (rsServices != null &amp;&amp; rsServices.getMetrics() != null) {<a name="line.2706"></a>
-<span class="sourceLineNo">2707</span>      rsServices.getMetrics().updateFlush(time - startTime,<a name="line.2707"></a>
-<span class="sourceLineNo">2708</span>          prepareResult.totalFlushableSize.getDataSize(), flushedOutputFileSize);<a name="line.2708"></a>
-<span class="sourceLineNo">2709</span>    }<a name="line.2709"></a>
-<span class="sourceLineNo">2710</span><a name="line.2710"></a>
-<span class="sourceLineNo">2711</span>    return new FlushResultImpl(compactionRequested ?<a name="line.2711"></a>
-<span class="sourceLineNo">2712</span>        FlushResult.Result.FLUSHED_COMPACTION_NEEDED :<a name="line.2712"></a>
-<span class="sourceLineNo">2713</span>          FlushResult.Result.FLUSHED_NO_COMPACTION_NEEDED, flushOpSeqId);<a name="line.2713"></a>
-<span class="sourceLineNo">2714</span>  }<a name="line.2714"></a>
-<span class="sourceLineNo">2715</span><a name="line.2715"></a>
-<span class="sourceLineNo">2716</span>  /**<a name="line.2716"></a>
-<span class="sourceLineNo">2717</span>   * Method to safely get the next sequence number.<a name="line.2717"></a>
-<span class="sourceLineNo">2718</span>   * @return Next sequence number unassociated with any actual edit.<a name="line.2718"></a>
-<span class="sourceLineNo">2719</span>   * @throws IOException<a name="line.2719"></a>
-<span class="sourceLineNo">2720</span>   */<a name="line.2720"></a>
-<span class="sourceLineNo">2721</span>  @VisibleForTesting<a name="line.2721"></a>
-<span class="sourceLineNo">2722</span>  protected long getNextSequenceId(final WAL wal) throws IOException {<a name="line.2722"></a>
-<span class="sourceLineNo">2723</span>    WriteEntry we = mvcc.begin();<a name="line.2723"></a>
-<span class="sourceLineNo">2724</span>    mvcc.completeAndWait(we);<a name="line.2724"></a>
-<span class="sourceLineNo">2725</span>    return we.getWriteNumber();<a name="line.2725"></a>
-<span class="sourceLineNo">2726</span>  }<a name="line.2726"></a>
-<span class="sourceLineNo">2727</span><a name="line.2727"></a>
-<span class="sourceLineNo">2728</span>  //////////////////////////////////////////////////////////////////////////////<a name="line.2728"></a>
-<span class="sourceLineNo">2729</span>  // get() methods for client use.<a name="line.2729"></a>
-<span class="sourceLineNo">2730</span>  //////////////////////////////////////////////////////////////////////////////<a name="line.2730"></a>
-<span class="sourceLineNo">2731</span><a name="line.2731"></a>
-<span class="sourceLineNo">2732</span>  @Override<a name="line.2732"></a>
-<span class="sourceLineNo">2733</span>  public RegionScannerImpl getScanner(Scan scan) throws IOException {<a name="line.2733"></a>
-<span class="sourceLineNo">2734</span>   return getScanner(scan, null);<a name="line.2734"></a>
-<span class="sourceLineNo">2735</span>  }<a name="line.2735"></a>
-<span class="sourceLineNo">2736</span><a name="line.2736"></a>
-<span class="sourceLineNo">2737</span>  @Override<a name="line.2737"></a>
-<span class="sourceLineNo">2738</span>  public RegionScannerImpl getScanner(Scan scan, List&lt;KeyValueScanner&gt; additionalScanners)<a name="line.2738"></a>
-<span class="sourceLineNo">2739</span>      throws IOException {<a name="line.2739"></a>
-<span class="sourceLineNo">2740</span>    return getScanner(scan, additionalScanners, HConstants.NO_NONCE, HConstants.NO_NONCE);<a name="line.2740"></a>
-<span class="sourceLineNo">2741</span>  }<a name="line.2741"></a>
-<span class="sourceLineNo">2742</span><a name="line.2742"></a>
-<span class="sourceLineNo">2743</span>  private RegionScannerImpl getScanner(Scan scan, List&lt;KeyValueScanner&gt; additionalScanners,<a name="line.2743"></a>
-<span class="sourceLineNo">2744</span>      long nonceGroup, long nonce) throws IOException {<a name="line.2744"></a>
-<span class="sourceLineNo">2745</span>    startRegionOperation(Operation.SCAN);<a name="line.2745"></a>
-<span class="sourceLineNo">2746</span>    try {<a name="line.2746"></a>
-<span class="sourceLineNo">2747</span>      // Verify families are all valid<a name="line.2747"></a>
-<span class="sourceLineNo">2748</span>      if (!scan.hasFamilies()) {<a name="line.2748"></a>
-<span class="sourceLineNo">2749</span>        // Adding all families to scanner<a name="line.2749"></a>
-<span class="sourceLineNo">2750</span>        for (byte[] family : this.htableDescriptor.getColumnFamilyNames()) {<a name="line.2750"></a>
-<span class="sourceLineNo">2751</span>          scan.addFamily(family);<a name="line.2751"></a>
-<span class="sourceLineNo">2752</span>        }<a name="line.2752"></a>
-<span class="sourceLineNo">2753</span>      } else {<a name="line.2753"></a>
-<span class="sourceLineNo">2754</span>        for (byte[] family : scan.getFamilyMap().keySet()) {<a name="line.2754"></a>
-<span class="sourceLineNo">2755</span>          checkFamily(family);<a name="line.2755"></a>
-<span class="sourceLineNo">2756</span>        }<a name="line.2756"></a>
-<span class="sourceLineNo">2757</span>      }<a name="line.2757"></a>
-<span class="sourceLineNo">2758</span>      return instantiateRegionScanner(scan, additionalScanners, nonceGroup, nonce);<a name="line.2758"></a>
-<span class="sourceLineNo">2759</span>    } finally {<a name="line.2759"></a>
-<span class="sourceLineNo">2760</span>      closeRegionOperation(Operation.SCAN);<a name="line.2760"></a>
-<span class="sourceLineNo">2761</span>    }<a name="line.2761"></a>
-<span class="sourceLineNo">2762</span>  }<a name="line.2762"></a>
-<span class="sourceLineNo">2763</span><a name="line.2763"></a>
-<span class="sourceLineNo">2764</span>  protected RegionScanner instantiateRegionScanner(Scan scan,<a name="line.2764"></a>
-<span class="sourceLineNo">2765</span>      List&lt;KeyValueScanner&gt; additionalScanners) throws IOException {<a name="line.2765"></a>
-<span class="sourceLineNo">2766</span>    return instantiateRegionScanner(scan, additionalScanners, HConstants.NO_NONCE,<a name="line.2766"></a>
-<span class="sourceLineNo">2767</span>      HConstants.NO_NONCE);<a name="line.2767"></a>
-<span class="sourceLineNo">2768</span>  }<a name="line.2768"></a>
-<span class="sourceLineNo">2769</span><a name="line.2769"></a>
-<span class="sourceLineNo">2770</span>  protected RegionScannerImpl instantiateRegionScanner(Scan scan,<a name="line.2770"></a>
-<span class="sourceLineNo">2771</span>      List&lt;KeyValueScanner&gt; additionalScanners, long nonceGroup, long nonce) throws IOException {<a name="line.2771"></a>
-<span class="sourceLineNo">2772</span>    if (scan.isReversed()) {<a name="line.2772"></a>
-<span class="sourceLineNo">2773</span>      if (scan.getFilter() != null) {<a name="line.2773"></a>
-<span class="sourceLineNo">2774</span>        scan.getFilter().setReversed(true);<a name="line.2774"></a>
-<span class="sourceLineNo">2775</span>      }<a name="line.2775"></a>
-<span class="sourceLineNo">2776</span>      return new ReversedRegionScannerImpl(scan, additionalScanners, this);<a name="line.2776"></a>
-<span class="sourceLineNo">2777</span>    }<a name="line.2777"></a>
-<span class="sourceLineNo">2778</span>    return new RegionScannerImpl(scan, additionalScanners, this, nonceGroup, nonce);<a name="line.2778"></a>
-<span class="sourceLineNo">2779</span>  }<a name="line.2779"></a>
-<span class="sourceLineNo">2780</span><a name="line.2780"></a>
-<span class="sourceLineNo">2781</span>  /**<a name="line.2781"></a>
-<span class="sourceLineNo">2782</span>   * Prepare a delete for a row mutation processor<a name="line.2782"></a>
-<span class="sourceLineNo">2783</span>   * @param delete The passed delete is modified by this method. WARNING!<a name="line.2783"></a>
-<span class="sourceLineNo">2784</span>   * @throws IOException<a name="line.2784"></a>
-<span class="sourceLineNo">2785</span>   */<a name="line.2785"></a>
-<span class="sourceLineNo">2786</span>  public void prepareDelete(Delete delete) throws IOException {<a name="line.2786"></a>
-<span class="sourceLineNo">2787</span>    // Check to see if this is a deleteRow insert<a name="line.2787"></a>
-<span class="sourceLineNo">2788</span>    if(delete.getFamilyCellMap().isEmpty()){<a name="line.2788"></a>
-<span class="sourceLineNo">2789</span>      for(byte [] family : this.htableDescriptor.getColumnFamilyNames()){<a name="line.2789"></a>
-<span class="sourceLineNo">2790</span>        // Don't eat the timestamp<a name="line.2790"></a>
-<span class="sourceLineNo">2791</span>        delete.addFamily(family, delete.getTimeStamp());<a name="line.2791"></a>
-<span class="sourceLineNo">2792</span>      }<a name="line.2792"></a>
-<span class="sourceLineNo">2793</span>    } else {<a name="line.2793"></a>
-<span class="sourceLineNo">2794</span>      for(byte [] family : delete.getFamilyCellMap().keySet()) {<a name="line.2794"></a>
-<span class="sourceLineNo">2795</span>        if(family == null) {<a name="line.2795"></a>
-<span class="sourceLineNo">2796</span>          throw new NoSuchColumnFamilyException("Empty family is invalid");<a name="line.2796"></a>
-<span class="sourceLineNo">2797</span>        }<a name="line.2797"></a>
-<span class="sourceLineNo">2798</span>        checkFamily(family);<a name="line.2798"></a>
-<span class="sourceLineNo">2799</span>      }<a name="line.2799"></a>
-<span class="sourceLineNo">2800</span>    }<a name="line.2800"></a>
-<span class="sourceLineNo">2801</span>  }<a name="line.2801"></a>
-<span class="sourceLineNo">2802</span><a name="line.2802"></a>
-<span class="sourceLineNo">2803</span>  @Override<a name="line.2803"></a>
-<span class="sourceLineNo">2804</span>  public void delete(Delete delete) throws IOException {<a name="line.2804"></a>
-<span class="sourceLineNo">2805</span>    checkReadOnly();<a name="line.2805"></a>
-<span class="sourceLineNo">2806</span>    checkResources();<a name="line.2806"></a>
-<span class="sourceLineNo">2807</span>    startRegionOperation(Operation.DELETE);<a name="line.2807"></a>
-<span class="sourceLineNo">2808</span>    try {<a name="line.2808"></a>
-<span class="sourceLineNo">2809</span>      // All edits for the given row (across all column families) must happen atomically.<a name="line.2809"></a>
-<span class="sourceLineNo">2810</span>      doBatchMutate(delete);<a name="line.2810"></a>
-<span class="sourceLineNo">2811</span>    } finally {<a name="line.2811"></a>
-<span class="sourceLineNo">2812</span>      closeRegionOperation(Operation.DELETE);<a name="line.2812"></a>
-<span class="sourceLineNo">2813</span>    }<a name="line.2813"></a>
-<span class="sourceLineNo">2814</span>  }<a name="line.2814"></a>
-<span class="sourceLineNo">2815</span><a name="line.2815"></a>
-<span class="sourceLineNo">2816</span>  /**<a name="line.2816"></a>
-<span class="sourceLineNo">2817</span>   * Row needed by below method.<a name="line.2817"></a>
-<span class="sourceLineNo">2818</span>   */<a name="line.2818"></a>
-<span class="sourceLineNo">2819</span>  private static final byte [] FOR_UNIT_TESTS_ONLY = Bytes.toBytes("ForUnitTestsOnly");<a name="line.2819"></a>
-<span class="sourceLineNo">2820</span><a name="line.2820"></a>
-<span class="sourceLineNo">2821</span>  /**<a name="line.2821"></a>
-<span class="sourceLineNo">2822</span>   * This is used only by unit tests. Not required to be a public API.<a name="line.2822"></a>
-<span class="sourceLineNo">2823</span>   * @param familyMap map of family to edits for the given family.<a name="line.2823"></a>
-<span class="sourceLineNo">2824</span>   * @throws IOException<a name="line.2824"></a>
-<span class="sourceLineNo">2825</span>   */<a name="line.2825"></a>
-<span class="sourceLineNo">2826</span>  void delete(NavigableMap&lt;byte[], List&lt;Cell&gt;&gt; familyMap,<a name="line.2826"></a>
-<span class="sourceLineNo">2827</span>      Durability durability) throws IOException {<a name="line.2827"></a>
-<span class="sourceLineNo">2828</span>    Delete delete = new Delete(FOR_UNIT_TESTS_ONLY);<a name="line.2828"></a>
-<span class="sourceLineNo">2829</span>    delete.setFamilyCellMap(familyMap);<a name="line.2829"></a>
-<span class="sourceLineNo">2830</span>    delete.setDurability(durability);<a name="line.2830"></a>
-<span class="sourceLineNo">2831</span>    doBatchMutate(delete);<a name="line.2831"></a>
-<span class="sourceLineNo">2832</span>  }<a name="line.2832"></a>
-<span class="sourceLineNo">2833</span><a name="line.2833"></a>
-<span class="sourceLineNo">2834</span>  /**<a name="line.2834"></a>
-<span class="sourceLineNo">2835</span>   * Set up correct timestamps in the KVs in Delete object.<a name="line.2835"></a>
-<span class="sourceLineNo">2836</span>   * &lt;p&gt;Caller should have the row and region locks.<a name="line.2836"></a>
-<span class="sourceLineNo">2837</span>   * @param mutation<a name="line.2837"></a>
-<span class="sourceLineNo">2838</span>   * @param familyMap<a name="line.2838"></a>
-<span class="sourceLineNo">2839</span>   * @param byteNow<a name="line.2839"></a>
-<span class="sourceLineNo">2840</span>   * @throws IOException<a name="line.2840"></a>
-<span class="sourceLineNo">2841</span>   */<a name="line.2841"></a>
-<span class="sourceLineNo">2842</span>  public void prepareDeleteTimestamps(Mutation mutation, Map&lt;byte[], List&lt;Cell&gt;&gt; familyMap,<a name="line.2842"></a>
-<span class="sourceLineNo">2843</span>      byte[] byteNow) throws IOException {<a name="line.2843"></a>
-<span class="sourceLineNo">2844</span>    for (Map.Entry&lt;byte[], List&lt;Cell&gt;&gt; e : familyMap.entrySet()) {<a name="line.2844"></a>
-<span class="sourceLineNo">2845</span><a name="line.2845"></a>
-<span class="sourceLineNo">2846</span>      byte[] family = e.getKey();<a name="line.2846"></a>
-<span class="sourceLineNo">2847</span>      List&lt;Cell&gt; cells = e.getValue();<a name="line.2847"></a>
-<span class="sourceLineNo">2848</span>      assert cells instanceof RandomAccess;<a name="line.2848"></a>
-<span class="sourceLineNo">2849</span><a name="line.2849"></a>
-<span class="sourceLineNo">2850</span>      Map&lt;byte[], Integer&gt; kvCount = new TreeMap&lt;&gt;(Bytes.BYTES_COMPARATOR);<a name="line.2850"></a>
-<span class="sourceLineNo">2851</span>      int listSize = cells.size();<a name="line.2851"></a>
-<span class="sourceLineNo">2852</span>      for (int i=0; i &lt; listSize; i++) {<a name="line.2852"></a>
-<span class="sourceLineNo">2853</span>        Cell cell = cells.get(i);<a name="line.2853"></a>
-<span class="sourceLineNo">2854</span>        //  Check if time is LATEST, change to time of most recent addition if so<a name="line.2854"></a>
-<span class="sourceLineNo">2855</span>        //  This is expensive.<a name="line.2855"></a>
-<span class="sourceLineNo">2856</span>        if (cell.getTimestamp() == HConstants.LATEST_TIMESTAMP<a name="line.2856"></a>
-<span class="sourceLineNo">2857</span>            &amp;&amp; PrivateCellUtil.isDeleteType(cell)) {<a name="line.2857"></a>
-<span class="sourceLineNo">2858</span>          byte[] qual = CellUtil.cloneQualifier(cell);<a name="line.2858"></a>
-<span class="sourceLineNo">2859</span><a name="line.2859"></a>
-<span class="sourceLineNo">2860</span>          Integer count = kvCount.get(qual);<a name="line.2860"></a>
-<span class="sourceLineNo">2861</span>          if (count == null) {<a name="line.2861"></a>
-<span class="sourceLineNo">2862</span>            kvCount.put(qual, 1);<a name="line.2862"></a>
-<span class="sourceLineNo">2863</span>          } else {<a name="line.2863"></a>
-<span class="sourceLineNo">2864</span>            kvCount.put(qual, count + 1);<a name="line.2864"></a>
-<span class="sourceLineNo">2865</span>          }<a name="line.2865"></a>
-<span class="sourceLineNo">2866</span>          count = kvCount.get(qual);<a name="line.2866"></a>
-<span class="sourceLineNo">2867</span><a name="line.2867"></a>
-<span class="sourceLineNo">2868</span>          Get get = new Get(CellUtil.cloneRow(cell));<a name="line.2868"></a>
-<span class="sourceLineNo">2869</span>          get.setMaxVersions(count);<a name="line.2869"></a>
-<span class="sourceLineNo">2870</span>          get.addColumn(family, qual);<a name="line.2870"></a>
-<span class="sourceLineNo">2871</span>          if (coprocessorHost != null) {<a name="line.2871"></a>
-<span class="sourceLineNo">2872</span>            if (!coprocessorHost.prePrepareTimeStampForDeleteVersion(mutation, cell,<a name="line.2872"></a>
-<span class="sourceLineNo">2873</span>                byteNow, get)) {<a name="line.2873"></a>
-<span class="sourceLineNo">2874</span>              updateDeleteLatestVersionTimeStamp(cell, get, count, byteNow);<a name="line.2874"></a>
-<span class="sourceLineNo">2875</span>            }<a name="line.2875"></a>
-<span class="sourceLineNo">2876</span>          } else {<a name="line.2876"></a>
-<span class="sourceLineNo">2877</span>            updateDeleteLatestVersionTimeStamp(cell, get, count, byteNow);<a name="line.2877"></a>
-<span class="sourceLineNo">2878</span>          }<a name="line.2878"></a>
-<span class="sourceLineNo">2879</span>        } else {<a name="line.2879"></a>
-<span class="sourceLineNo">2880</span>          PrivateCellUtil.updateLatestStamp(cell, byteNow, 0);<a name="line.2880"></a>
-<span class="sourceLineNo">2881</span>        }<a name="line.2881"></a>
-<span class="sourceLineNo">2882</span>      }<a name="line.2882"></a>
-<span class="sourceLineNo">2883</span>    }<a name="line.2883"></a>
-<span class="sourceLineNo">2884</span>  }<a name="line.2884"></a>
-<span class="sourceLineNo">2885</span><a name="line.2885"></a>
-<span class="sourceLineNo">2886</span>  void updateDeleteLatestVersionTimeStamp(Cell cell, Get get, int count, byte[] byteNow)<a name="line.2886"></a>
-<span class="sourceLineNo">2887</span>      throws IOException {<a name="line.2887"></a>
-<span class="sourceLineNo">2888</span>    List&lt;Cell&gt; result = get(get, false);<a name="line.2888"></a>
-<span class="sourceLineNo">2889</span><a name="line.2889"></a>
-<span class="sourceLineNo">2890</span>    if (result.size() &lt; count) {<a name="line.2890"></a>
-<span class="sourceLineNo">2891</span>      // Nothing to delete<a name="line.2891"></a>
-<span class="sourceLineNo">2892</span>      PrivateCellUtil.updateLatestStamp(cell, byteNow, 0);<a name="line.2892"></a>
-<span class="sourceLineNo">2893</span>      return;<a name="line.2893"></a>
-<span class="sourceLineNo">2894</span>    }<a name="line.2894"></a>
-<span class="sourceLineNo">2895</span>    if (result.size() &gt; count) {<a name="line.2895"></a>
-<span class="sourceLineNo">2896</span>      throw new RuntimeException("Unexpected size: " + result.size());<a name="line.2896"></a>
-<span class="sourceLineNo">2897</span>    }<a name="line.2897"></a>
-<span class="sourceLineNo">2898</span>    Cell getCell = result.get(count - 1);<a name="line.2898"></a>
-<span class="sourceLineNo">2899</span>    PrivateCellUtil.setTimestamp(cell, getCell.getTimestamp());<a name="line.2899"></a>
-<span class="sourceLineNo">2900</span>  }<a name="line.2900"></a>
-<span class="sourceLineNo">2901</span><a name="line.2901"></a>
-<span class="sourceLineNo">2902</span>  @Override<a name="line.2902"></a>
-<span class="sourceLineNo">2903</span>  public void put(Put put) throws IOException {<a name="line.2903"></a>
-<span class="sourceLineNo">2904</span>    checkReadOnly();<a name="line.2904"></a>
-<span class="sourceLineNo">2905</span><a name="line.2905"></a>
-<span class="sourceLineNo">2906</span>    // Do a rough check that we have resources to accept a write.  The check is<a name="line.2906"></a>
-<span class="sourceLineNo">2907</span>    // 'rough' in that between the resource check and the call to obtain a<a name="line.2907"></a>
-<span class="sourceLineNo">2908</span>    // read lock, resources may run out.  For now, the thought is that this<a name="line.2908"></a>
-<span class="sourceLineNo">2909</span>    // will be extremely rare; we'll deal with it when it happens.<a name="line.2909"></a>
-<span class="sourceLineNo">2910</span>    checkResources();<a name="line.2910"></a>
-<span class="sourceLineNo">2911</span>    startRegionOperation(Operation.PUT);<a name="line.2911"></a>
-<span class="sourceLineNo">2912</span>    try {<a name="line.2912"></a>
-<span class="sourceLineNo">2913</span>      // All edits for the given row (across all column families) must happen atomically.<a name="line.2913"></a>
-<span class="sourceLineNo">2914</span>      doBatchMutate(put);<a name="line.2914"></a>
-<span class="sourceLineNo">2915</span>    } finally {<a name="line.2915"></a>
-<span class="sourceLineNo">2916</span>      closeRegionOperation(Operation.PUT);<a name="line.2916"></a>
-<span class="sourceLineNo">2917</span>    }<a name="line.2917"></a>
-<span class="sourceLineNo">2918</span>  }<a name="line.2918"></a>
-<span class="sourceLineNo">2919</span><a name="line.2919"></a>
-<span class="sourceLineNo">2920</span>  /**<a name="line.2920"></a>
-<span class="sourceLineNo">2921</span>   * Class that tracks the progress of a batch operations, accumulating status codes and tracking<a name="line.2921"></a>
-<span class="sourceLineNo">2922</span>   * the index at which processing is proceeding. These batch operations may get split into<a name="line.2922"></a>
-<span class="sourceLineNo">2923</span>   * mini-batches for processing.<a name="line.2923"></a>
-<span class="sourceLineNo">2924</span>   */<a name="line.2924"></a>
-<span class="sourceLineNo">2925</span>  private abstract static class BatchOperation&lt;T&gt; {<a name="line.2925"></a>
-<span class="sourceLineNo">2926</span>    protected final T[] operations;<a name="line.2926"></a>
-<span class="sourceLineNo">2927</span>    protected final OperationStatus[] retCodeDetails;<a name="line.2927"></a>
-<span class="sourceLineNo">2928</span>    protected final WALEdit[] walEditsFromCoprocessors;<a name="line.2928"></a>
-<span class="sourceLineNo">2929</span>    // reference family cell maps directly so coprocessors can mutate them if desired<a name="line.2929"></a>
-<span class="sourceLineNo">2930</span>    protected final Map&lt;byte[], List&lt;Cell&gt;&gt;[] familyCellMaps;<a name="line.2930"></a>
-<span class="sourceLineNo">2931</span><a name="line.2931"></a>
-<span class="sourceLineNo">2932</span>    protected final HRegion region;<a name="line.2932"></a>
-<span class="sourceLineNo">2933</span>    protected int nextIndexToProcess = 0;<a name="line.2933"></a>
-<span class="sourceLineNo">2934</span>    protected final ObservedExceptionsInBatch observedExceptions;<a name="line.2934"></a>
-<span class="sourceLineNo">2935</span>    //Durability of the batch (highest durability of all operations)<a name="line.2935"></a>
-<span class="sourceLineNo">2936</span>    protected Durability durability;<a name="line.2936"></a>
-<span class="sourceLineNo">2937</span>    protected boolean atomic = false;<a name="line.2937"></a>
-<span class="sourceLineNo">2938</span><a name="line.2938"></a>
-<span class="sourceLineNo">2939</span>    public BatchOperation(final HRegion region, T[] operations) {<a name="line.2939"></a>
-<span class="sourceLineNo">2940</span>      this.operations = operations;<a name="line.2940"></a>
-<span class="sourceLineNo">2941</span>      this.retCodeDetails = new OperationStatus[operations.length];<a name="line.2941"></a>
-<span class="sourceLineNo">2942</span>      Arrays.fill(this.retCodeDetails, OperationStatus.NOT_RUN);<a name="line.2942"></a>
-<span class="sourceLineNo">2943</span>      this.walEditsFromCoprocessors = new WALEdit[operations.length];<a name="line.2943"></a>
-<span class="sourceLineNo">2944</span>      familyCellMaps = new Map[operations.length];<a name="line.2944"></a>
-<span class="sourceLineNo">2945</span><a name="line.2945"></a>
-<span class="sourceLineNo">2946</span>      this.region = region;<a name="line.2946"></a>
-<span class="sourceLineNo">2947</span>      observedExceptions = new ObservedExceptionsInBatch();<a name="line.2947"></a>
-<span class="sourceLineNo">2948</span>      durability = Durability.USE_DEFAULT;<a name="line.2948"></a>
-<span class="sourceLineNo">2949</span>    }<a name="line.2949"></a>
-<span class="sourceLineNo">2950</span><a name="line.2950"></a>
-<span class="sourceLineNo">2951</span>    /**<a name="line.2951"></a>
-<span class="sourceLineNo">2952</span>     * Visitor interface for batch operations<a name="line.2952"></a>
-<span class="sourceLineNo">2953</span>     */<a name="line.2953"></a>
-<span class="sourceLineNo">2954</span>    @FunctionalInterface<a name="line.2954"></a>
-<span class="sourceLineNo">2955</span>    public interface Visitor {<a name="line.2955"></a>
-<span class="sourceLineNo">2956</span>      /**<a name="line.2956"></a>
-<span class="sourceLineNo">2957</span>       * @param index operation index<a name="line.2957"></a>
-<span class="sourceLineNo">2958</span>       * @return If true continue visiting remaining entries, break otherwise<a name="line.2958"></a>
-<span class="sourceLineNo">2959</span>       */<a name="line.2959"></a>
-<span class="sourceLineNo">2960</span>      boolean visit(int index) throws IOException;<a name="line.2960"></a>
-<span class="sourceLineNo">2961</span>    }<a name="line.2961"></a>
-<span class="sourceLineNo">2962</span><a name="line.2962"></a>
-<span class="sourceLineNo">2963</span>    /**<a name="line.2963"></a>
-<span class="sourceLineNo">2964</span>     * Helper method for visiting pending/ all batch operations<a name="line.2964"></a>
-<span class="sourceLineNo">2965</span>     */<a name="line.2965"></a>
-<span class="sourceLineNo">2966</span>    public void visitBatchOperations(boolean pendingOnly, int lastIndexExclusive, Visitor visitor)<a name="line.2966"></a>
-<span class="sourceLineNo">2967</span>        throws IOException {<a name="line.2967"></a>
-<span class="sourceLineNo">2968</span>      assert lastIndexExclusive &lt;= this.size();<a name="line.2968"></a>
-<span class="sourceLineNo">2969</span>      for (int i = nextIndexToProcess; i &lt; lastIndexExclusive; i++) {<a name="line.2969"></a>
-<span class="sourceLineNo">2970</span>        if (!pendingOnly || isOperationPending(i)) {<a name="line.2970"></a>
-<span class="sourceLineNo">2971</span>          if (!visitor.visit(i)) {<a name="line.2971"></a>
-<span class="sourceLineNo">2972</span>            break;<a name="line.2972"></a>
-<span class="sourceLineNo">2973</span>          }<a name="line.2973"></a>
-<span class="sourceLineNo">2974</span>        }<a name="line.2974"></a>
-<span class="sourceLineNo">2975</span>      }<a name="line.2975"></a>
-<span class="sourceLineNo">2976</span>    }<a name="line.2976"></a>
-<span class="sourceLineNo">2977</span><a name="line.2977"></a>
-<span class="sourceLineNo">2978</span>    public abstract Mutation getMutation(int index);<a name="line.2978"></a>
-<span class="sourceLineNo">2979</span>    public abstract long getNonceGroup(int index);<a name="line.2979"></a>
-<span class="sourceLineNo">2980</span>    public abstract long getNonce(int index);<a name="line.2980"></a>
-<span class="sourceLineNo">2981</span>    /** This method is potentially expensive and useful mostly for non-replay CP path. */<a name="line.2981"></a>
-<span class="sourceLineNo">2982</span>    public abstract Mutation[] getMutationsForCoprocs();<a name="line.2982"></a>
-<span class="sourceLineNo">2983</span>    public abstract boolean isInReplay();<a name="line.2983"></a>
-<span class="sourceLineNo">2984</span>    public abstract long getOrigLogSeqNum();<a name="line.2984"></a>
-<span class="sourceLineNo">2985</span>    public abstract void startRegionOperation() throws IOException;<a name="line.2985"></a>
-<span class="sourceLineNo">2986</span>    public abstract void closeRegionOperation() throws IOException;<a name="line.2986"></a>
-<span class="sourceLineNo">2987</span><a name="line.2987"></a>
-<span class="sourceLineNo">2988</span>    /**<a name="line.2988"></a>
-<span class="sourceLineNo">2989</span>     * Validates each mutation and prepares a batch for write. If necessary (non-replay case), runs<a name="line.2989"></a>
-<span class="sourceLineNo">2990</span>     * CP prePut()/ preDelete() hooks for all mutations in a batch. This is intended to operate on<a name="line.2990"></a>
-<span class="sourceLineNo">2991</span>     * entire batch and will be called from outside of class to check and prepare batch. This can<a name="line.2991"></a>
-<span class="sourceLineNo">2992</span>     * be implemented by calling helper method {@link #checkAndPrepareMutation(int, long)} in a<a name="line.2992"></a>
-<span class="sourceLineNo">2993</span>     * 'for' loop over mutations.<a name="line.2993"></a>
-<span class="sourceLineNo">2994</span>     */<a name="line.2994"></a>
-<span class="sourceLineNo">2995</span>    public abstract void checkAndPrepare() throws IOException;<a name="line.2995"></a>
-<span class="sourceLineNo">2996</span><a name="line.2996"></a>
-<span class="sourceLineNo">2997</span>    /**<a name="line.2997"></a>
-<span class="sourceLineNo">2998</span>     * Implement any Put request specific check and prepare logic here. Please refer to<a name="line.2998"></a>
-<span class="sourceLineNo">2999</span>     * {@link #checkAndPrepareMutation(Mutation, long)} for how its used.<a name="line.2999"></a>
-<span class="sourceLineNo">3000</span>     */<a name="line.3000"></a>
-<span class="sourceLineNo">3001</span>    protected abstract void checkAndPreparePut(final Put p) throws IOException;<a name="line.3001"></a>
-<span class="sourceLineNo">3002</span><a name="line.3002"></a>
-<span class="sourceLineNo">3003</span>    /**<a name="line.3003"></a>
-<span class="sourceLineNo">3004</span>     *  If necessary, calls preBatchMutate() CP hook for a mini-batch and updates metrics, cell<a name="line.3004"></a>
-<span class="sourceLineNo">3005</span>     *  count, tags and timestamp for all cells of all operations in a mini-batch.<a name="line.3005"></a>
-<span class="sourceLineNo">3006</span>     */<a name="line.3006"></a>
-<span class="sourceLineNo">3007</span>    public abstract void prepareMiniBatchOperations(MiniBatchOperationInProgress&lt;Mutation&gt;<a name="line.3007"></a>
-<span class="sourceLineNo">3008</span>        miniBatchOp, long timestamp, final List&lt;RowLock&gt; acquiredRowLocks) throws IOException;<a name="line.3008"></a>
-<span class="sourceLineNo">3009</span><a name="line.3009"></a>
-<span class="sourceLineNo">3010</span>    /**<a name="line.3010"></a>
-<span class="sourceLineNo">3011</span>     * Write mini-batch operations to MemStore<a name="line.3011"></a>
-<span class="sourceLineNo">3012</span>     */<a name="line.3012"></a>
-<span class="sourceLineNo">3013</span>    public abstract WriteEntry writeMiniBatchOperationsToMemStore(<a name="line.3013"></a>
-<span class="sourceLineNo">3014</span>        final MiniBatchOperationInProgress&lt;Mutation&gt; miniBatchOp, final WriteEntry writeEntry)<a name="line.3014"></a>
-<span class="sourceLineNo">3015</span>        throws IOException;<a name="line.3015"></a>
-<span class="sourceLineNo">3016</span><a name="line.3016"></a>
-<span class="sourceLineNo">3017</span>    protected void writeMiniBatchOperationsToMemStore(<a name="line.3017"></a>
-<span class="sourceLineNo">3018</span>        final MiniBatchOperationInProgress&lt;Mutation&gt; miniBatchOp, final long writeNumber)<a name="line.3018"></a>
-<span class="sourceLineNo">3019</span>        throws IOException {<a name="line.3019"></a>
-<span class="sourceLineNo">3020</span>      MemStoreSizing memStoreAccounting = new MemStoreSizing();<a name="line.3020"></a>
-<span class="sourceLineNo">3021</span>      visitBatchOperations(true, miniBatchOp.getLastIndexExclusive(), (int index) -&gt; {<a name="line.3021"></a>
-<span class="sourceLineNo">3022</span>        // We need to update the sequence id for following reasons.<a name="line.3022"></a>
-<span class="sourceLineNo">3023</span>        // 1) If the op is in replay mode, FSWALEntry#stampRegionSequenceId won't stamp sequence id.<a name="line.3023"></a>
-<span class="sourceLineNo">3024</span>        // 2) If no WAL, FSWALEntry won't be used<a name="line.3024"></a>
-<span class="sourceLineNo">3025</span>        // we use durability of the original mutation for the mutation passed by CP.<a name="line.3025"></a>
-<span class="sourceLineNo">3026</span>        if (isInReplay() || getMutation(index).getDurability() == Durability.SKIP_WAL) {<a name="line.3026"></a>
-<span class="sourceLineNo">3027</span>          region.updateSequenceId(familyCellMaps[index].values(), writeNumber);<a name="line.3027"></a>
-<span class="sourceLineNo">3028</span>        }<a name="line.3028"></a>
-<span class="sourceLineNo">3029</span>        applyFamilyMapToMemStore(familyCellMaps[index], memStoreAccounting);<a name="line.3029"></a>
-<span class="sourceLineNo">3030</span>        return true;<a name="line.3030"></a>
-<span class="sourceLineNo">3031</span>      });<a name="line.3031"></a>
-<span class="sourceLineNo">3032</span>      // update memStore size<a name="line.3032"></a>
-<span class="sourceLineNo">3033</span>      region.addAndGetMemStoreSize(memStoreAccounting);<a name="line.3033"></a>
-<span class="sourceLineNo">3034</span>    }<a name="line.3034"></a>
-<span class="sourceLineNo">3035</span><a name="line.3035"></a>
-<span class="sourceLineNo">3036</span>    public boolean isDone() {<a name="line.3036"></a>
-<span class="sourceLineNo">3037</span>      return nextIndexToProcess == operations.length;<a name="line.3037"></a>
-<span class="sourceLineNo">3038</span>    }<a name="line.3038"></a>
-<span class="sourceLineNo">3039</span><a name="line.3039"></a>
-<span class="sourceLineNo">3040</span>    public int size() {<a name="line.3040"></a>
-<span class="sourceLineNo">3041</span>      return operations.length;<a name="line.3041"></a>
-<span class="sourceLineNo">3042</span>    }<a name="line.3042"></a>
-<span class="sourceLineNo">3043</span><a name="line.3043"></a>
-<span class="sourceLineNo">3044</span>    public boolean isOperationPending(int index) {<a name="line.3044"></a>
-<span class="sourceLineNo">3045</span>      return retCodeDetails[index].getOperationStatusCode() == OperationStatusCode.NOT_RUN;<a name="line.3045"></a>
-<span class="sourceLineNo">3046</span>    }<a name="line.3046"></a>
-<span class="sourceLineNo">3047</span><a name="line.3047"></a>
-<span class="sourceLineNo">3048</span>    public List&lt;UUID&gt; getClusterIds() {<a name="line.3048"></a>
-<span class="sourceLineNo">3049</span>      assert size() != 0;<a name="line.3049"></a>
-<span class="sourceLineNo">3050</span>      return getMutation(0).getClusterIds();<a name="line.3050"></a>
-<span class="sourceLineNo">3051</span>    }<a name="line.3051"></a>
-<span class="sourceLineNo">3052</span><a name="line.3052"></a>
-<span class="sourceLineNo">3053</span>    boolean isAtomic() {<a name="line.3053"></a>
-<span class="sourceLineNo">3054</span>      return atomic;<a name="line.3054"></a>
-<span class="sourceLineNo">3055</span>    }<a name="line.3055"></a>
-<span class="sourceLineNo">3056</span><a name="line.3056"></a>
-<span class="sourceLineNo">3057</span>    /**<a name="line.3057"></a>
-<span class="sourceLineNo">3058</span>     * Helper method that checks and prepares only one mutation. This can be used to implement<a name="line.3058"></a>
-<span class="sourceLineNo">3059</span>     * {@link #checkAndPrepare()} for entire Batch.<a name="line.3059"></a>
-<span class="sourceLineNo">3060</span>     * NOTE: As CP prePut()/ preDelete() hooks may modify mutations, this method should be called<a name="line.3060"></a>
-<span class="sourceLineNo">3061</span>     * after prePut()/ preDelete() CP hooks are run for the mutation<a name="line.3061"></a>
-<span class="sourceLineNo">3062</span>     */<a name="line.3062"></a>
-<span class="sourceLineNo">3063</span>    protected void checkAndPrepareMutation(Mutation mutation, final long timestamp)<a name="line.3063"></a>
-<span class="sourceLineNo">3064</span>        throws IOException {<a name="line.3064"></a>
-<span class="sourceLineNo">3065</span>      region.checkRow(mutation.getRow(), "batchMutate");<a name="line.3065"></a>
-<span class="sourceLineNo">3066</span>      if (mutation instanceof Put) {<a name="line.3066"></a>
-<span class="sourceLineNo">3067</span>        // Check the families in the put. If bad, skip this one.<a name="line.3067"></a>
-<span class="sourceLineNo">3068</span>        checkAndPreparePut((Put) mutation);<a name="line.3068"></a>
-<span class="sourceLineNo">3069</span>        region.checkTimestamps(mutation.getFamilyCellMap(), timestamp);<a name="line.3069"></a>
-<span class="sourceLineNo">3070</span>      } else {<a name="line.3070"></a>
-<span class="sourceLineNo">3071</span>        region.prepareDelete((Delete) mutation);<a name="line.3071"></a>
-<span class="sourceLineNo">3072</span>      }<a name="line.3072"></a>
-<span class="sourceLineNo">3073</span>    }<a name="line.3073"></a>
-<span class="sourceLineNo">3074</span><a name="line.3074"></a>
-<span class="sourceLineNo">3075</span>    protected void checkAndPrepareMutation(int index, long timestamp) throws IOException {<a name="line.3075"></a>
-<span class="sourceLineNo">3076</span>      Mutation mutation = getMutation(index);<a name="line.3076"></a>
-<span class="sourceLineNo">3077</span>      try {<a name="line.3077"></a>
-<span class="sourceLineNo">3078</span>        this.checkAndPrepareMutation(mutation, timestamp);<a name="line.3078"></a>
-<span class="sourceLineNo">3079</span><a name="line.3079"></a>
-<span class="sourceLineNo">3080</span>        // store the family map reference to allow for mutations<a name="line.3080"></a>
-<span class="sourceLineNo">3081</span>        familyCellMaps[index] = mutation.getFamilyCellMap();<a name="line.3081"></a>
-<span class="sourceLineNo">3082</span>        // store durability for the batch (highest durability of all operations in the batch)<a name="line.3082"></a>
-<span class="sourceLineNo">3083</span>        Durability tmpDur = region.getEffectiveDurability(mutation.getDurability());<a name="line.3083"></a>
-<span class="sourceLineNo">3084</span>        if (tmpDur.ordinal() &gt; durability.ordinal()) {<a name="line.3084"></a>
-<span class="sourceLineNo">3085</span>          durability = tmpDur;<a name="line.3085"></a>
-<span class="sourceLineNo">3086</span>        }<a name="line.3086"></a>
-<span class="sourceLineNo">3087</span>      } catch (NoSuchColumnFamilyException nscfe) {<a name="line.3087"></a>
-<span class="sourceLineNo">3088</span>        final String msg = "No such column family in batch mutation. ";<a name="line.3088"></a>
-<span class="sourceLineNo">3089</span>        if (observedExceptions.hasSeenNoSuchFamily()) {<a name="line.3089"></a>
-<span class="sourceLineNo">3090</span>          LOG.warn(msg + nscfe.getMessage());<a name="line.3090"></a>
-<span class="sourceLineNo">3091</span>        } else {<a name="line.3091"></a>
-<span class="sourceLineNo">3092</span>          LOG.warn(msg, nscfe);<a name="line.3092"></a>
-<span class="sourceLineNo">3093</span>          observedExceptions.sawNoSuchFamily();<a name="line.3093"></a>
-<span class="sourceLineNo">3094</span>        }<a name="line.3094"></a>
-<span class="sourceLineNo">3095</span>        retCodeDetails[index] = new OperationStatus(<a name="line.3095"></a>
-<span class="sourceLineNo">3096</span>            OperationStatusCode.BAD_FAMILY, nscfe.getMessage());<a name="line.3096"></a>
-<span class="sourceLineNo">3097</span>        if (isAtomic()) { // fail, atomic means all or none<a name="line.3097"></a>
-<span class="sourceLineNo">3098</span>          throw nscfe;<a name="line.3098"></a>
-<span class="sourceLineNo">3099</span>        }<a name="line.3099"></a>
-<span class="sourceLineNo">3100</span>      } catch (FailedSanityCheckException fsce) {<a name="line.3100"></a>
-<span class="sourceLineNo">3101</span>        final String msg = "Batch Mutation did not pass sanity check. ";<a name="line.3101"></a>
-<span class="sourceLineNo">3102</span>        if (observedExceptions.hasSeenFailedSanityCheck()) {<a name="line.3102"></a>
-<span class="sourceLineNo">3103</span>          LOG.warn(msg + fsce.getMessage());<a name="line.3103"></a>
-<span class="sourceLineNo">3104</span>        } else {<a name="line.3104"></a>
-<span class="sourceLineNo">3105</span>          LOG.warn(msg, fsce);<a name="line.3105"></a>
-<span class="sourceLineNo">3106</span>          observedExceptions.sawFailedSanityCheck();<a name="line.3106"></a>
-<span class="sourceLineNo">3107</span>        }<a name="line.3107"></a>
-<span class="sourceLineNo">3108</span>        retCodeDetails[index] = new OperationStatus(<a name="line.3108"></a>
-<span class="sourceLineNo">3109</span>            OperationStatusCode.SANITY_CHECK_FAILURE, fsce.getMessage());<a name="line.3109"></a>
-<span class="sourceLineNo">3110</span>        if (isAtomic()) {<a name="line.3110"></a>
-<span class="sourceLineNo">3111</span>          throw fsce;<a name="line.3111"></a>
-<span class="sourceLineNo">3112</span>        }<a name="line.3112"></a>
-<span class="sourceLineNo">3113</span>      } catch (WrongRegionException we) {<a name="line.3113"></a>
-<span class="sourceLineNo">3114</span>        final String msg = "Batch mutation had a row that does not belong to this region. ";<a name="line.3114"></a>
-<span class="sourceLineNo">3115</span>        if (observedExceptions.hasSeenWrongRegion()) {<a name="line.3115"></a>
-<span class="sourceLineNo">3116</span>          LOG.warn(msg + we.getMessage());<a name="line.3116"></a>
-<span class="sourceLineNo">3117</span>        } else {<a name="line.3117"></a>
-<span class="sourceLineNo">3118</span>          LOG.warn(msg, we);<a name="line.3118"></a>
-<span class="sourceLineNo">3119</span>          observedExceptions.sawWrongRegion();<a name="line.3119"></a>
-<span class="sourceLineNo">3120</span>        }<a name="line.3120"></a>
-<span class="sourceLineNo">3121</span>        retCodeDetails[index] = new OperationStatus(<a name="line.3121"></a>
-<span class="sourceLineNo">3122</span>            OperationStatusCode.SANITY_CHECK_FAILURE, we.getMessage());<a name="line.3122"></a>
-<span class="sourceLineNo">3123</span>        if (isAtomic()) {<a name="line.3123"></a>
-<span class="sourceLineNo">3124</span>          throw we;<a name="line.3124"></a>
-<span class="sourceLineNo">3125</span>        }<a name="line.3125"></a>
-<span class="sourceLineNo">3126</span>      }<a name="line.3126"></a>
-<span class="sourceLineNo">3127</span>    }<a name="line.3127"></a>
-<span class="sourceLineNo">3128</span><a name="line.3128"></a>
-<span class="sourceLineNo">3129</span>    /**<a name="line.3129"></a>
-<span class="sourceLineNo">3130</span>     * Creates Mini-batch of all operations [nextIndexToProcess, lastIndexExclusive) for which<a name="line.3130"></a>
-<span class="sourceLineNo">3131</span>     * a row lock can be acquired. All mutations with locked rows are considered to be<a name="line.3131"></a>
-<span class="sourceLineNo">3132</span>     * In-progress operations and hence the name {@link MiniBatchOperationInProgress}. Mini batch<a name="line.3132"></a>
-<span class="sourceLineNo">3133</span>     * is window over {@link BatchOperation} and contains contiguous pending operations.<a name="line.3133"></a>
-<span class="sourceLineNo">3134</span>     *<a name="line.3134"></a>
-<span class="sourceLineNo">3135</span>     * @param acquiredRowLocks keeps track of rowLocks acquired.<a name="line.3135"></a>
-<span class="sourceLineNo">3136</span>     */<a name="line.3136"></a>
-<span class="sourceLineNo">3137</span>    public MiniBatchOperationInProgress&lt;Mutation&gt; lockRowsAndBuildMiniBatch(<a name="line.3137"></a>
-<span class="sourceLineNo">3138</span>        List&lt;RowLock&gt; acquiredRowLocks) throws IOException {<a name="line.3138"></a>
-<span class="sourceLineNo">3139</span>      int readyToWriteCount = 0;<a name="line.3139"></a>
-<span class="sourceLineNo">3140</span>      int lastIndexExclusive = 0;<a name="line.3140"></a>
-<span class="sourceLineNo">3141</span>      for (; lastIndexExclusive &lt; size(); lastIndexExclusive++) {<a name="line.3141"></a>
-<span class="sourceLineNo">3142</span>        if (!isOperationPending(lastIndexExclusive)) {<a name="line.3142"></a>
-<span class="sourceLineNo">3143</span>          continue;<a name="line.3143"></a>
-<span class="sourceLineNo">3144</span>        }<a name="line.3144"></a>
-<span class="sourceLineNo">3145</span>        Mutation mutation = getMutation(lastIndexExclusive);<a name="line.3145"></a>
-<span class="sourceLineNo">3146</span>        // If we haven't got any rows in our batch, we should block to get the next one.<a name="line.3146"></a>
-<span class="sourceLineNo">3147</span>        RowLock rowLock = null;<a name="line.3147"></a>
-<span class="sourceLineNo">3148</span>        try {<a name="line.3148"></a>
-<span class="sourceLineNo">3149</span>          // if atomic then get exclusive lock, else shared lock<a name="line.3149"></a>
-<span class="sourceLineNo">3150</span>          rowLock = region.getRowLockInternal(mutation.getRow(), !isAtomic());<a name="line.3150"></a>
-<span class="sourceLineNo">3151</span>        } catch (TimeoutIOException e) {<a name="line.3151"></a>
-<span class="sourceLineNo">3152</span>          // We will retry when other exceptions, but we should stop if we timeout .<a name="line.3152"></a>
-<span class="sourceLineNo">3153</span>          throw e;<a name="line.3153"></a>
-<span class="sourceLineNo">3154</span>        } catch (IOException ioe) {<a name="line.3154"></a>
-<span class="sourceLineNo">3155</span>          LOG.warn("Failed getting lock, row=" + Bytes.toStringBinary(mutation.getRow()), ioe);<a name="line.3155"></a>
-<span class="sourceLineNo">3156</span>          if (isAtomic()) { // fail, atomic means all or none<a name="line.3156"></a>
-<span class="sourceLineNo">3157</span>            throw ioe;<a name="line.3157"></a>
-<span class="sourceLineNo">3158</span>          }<a name="line.3158"></a>
-<span class="sourceLineNo">3159</span>        }<a name="line.3159"></a>
-<span class="sourceLineNo">3160</span>        if (rowLock == null) {<a name="line.3160"></a>
-<span class="sourceLineNo">3161</span>          // We failed to grab another lock<a name="line.3161"></a>
-<span class="sourceLineNo">3162</span>          if (isAtomic()) {<a name="line.3162"></a>
-<span class="sourceLineNo">3163</span>            throw new IOException("Can't apply all operations atomically!");<a name="line.3163"></a>
-<span class="sourceLineNo">3164</span>          }<a name="line.3164"></a>
-<span class="sourceLineNo">3165</span>          break; // Stop acquiring more rows for this batch<a name="line.3165"></a>
-<span class="sourceLineNo">3166</span>        } else {<a name="line.3166"></a>
-<span class="sourceLineNo">3167</span>          acquiredRowLocks.add(rowLock);<a name="line.3167"></a>
-<span class="sourceLineNo">3168</span>        }<a name="line.3168"></a>
-<span class="sourceLineNo">3169</span>        readyToWriteCount++;<a name="line.3169"></a>
-<span class="sourceLineNo">3170</span>      }<a name="line.3170"></a>
-<span class="sourceLineNo">3171</span>      return createMiniBatch(lastIndexExclusive, readyToWriteCount);<a name="line.3171"></a>
-<span class="sourceLineNo">3172</span>    }<a name="line.3172"></a>
-<span class="sourceLineNo">3173</span><a name="line.3173"></a>
-<span class="sourceLineNo">3174</span>    protected MiniBatchOperationInProgress&lt;Mutation&gt; createMiniBatch(final int lastIndexExclusive,<a name="line.3174"></a>
-<span class="sourceLineNo">3175</span>        final int readyToWriteCount) {<a name="line.3175"></a>
-<span class="sourceLineNo">3176</span>      return new MiniBatchOperationInProgress&lt;&gt;(getMutationsForCoprocs(), retCodeDetails,<a name="line.3176"></a>
-<span class="sourceLineNo">3177</span>          walEditsFromCoprocessors, nextIndexToProcess, lastIndexExclusive, readyToWriteCount);<a name="line.3177"></a>
-<span class="sourceLineNo">3178</span>    }<a name="line.3178"></a>
-<span class="sourceLineNo">3179</span><a name="line.3179"></a>
-<span class="sourceLineNo">3180</span>    /**<a name="line.3180"></a>
-<span class="sourceLineNo">3181</span>     * Builds separate WALEdit per nonce by applying input mutations. If WALEdits from CP are<a name="line.3181"></a>
-<span class="sourceLineNo">3182</span>     * present, they are merged to result WALEdit.<a name="line.3182"></a>
-<span class="sourceLineNo">3183</span>     */<a name="line.3183"></a>
-<span class="sourceLineNo">3184</span>    public List&lt;Pair&lt;NonceKey, WALEdit&gt;&gt; buildWALEdits(<a name="line.3184"></a>
-<span class="sourceLineNo">3185</span>        final MiniBatchOperationInProgress&lt;Mutation&gt; miniBatchOp) throws IOException {<a name="line.3185"></a>
-<span class="sourceLineNo">3186</span>      List&lt;Pair&lt;NonceKey, WALEdit&gt;&gt; walEdits = new ArrayList&lt;&gt;();<a name="line.3186"></a>
-<span class="sourceLineNo">3187</span><a name="line.3187"></a>
-<span class="sourceLineNo">3188</span>      visitBatchOperations(true, nextIndexToProcess + miniBatchOp.size(), new Visitor() {<a name="line.3188"></a>
-<span class="sourceLineNo">3189</span>        private Pair&lt;NonceKey, WALEdit&gt; curWALEditForNonce;<a name="line.3189"></a>
-<span class="sourceLineNo">3190</span>        @Override<a name="line.3190"></a>
-<span class="sourceLineNo">3191</span>        public boolean visit(int index) throws IOException {<a name="line.3191"></a>
-<span class="sourceLineNo">3192</span>          Mutation m = getMutation(index);<a name="line.3192"></a>
-<span class="sourceLineNo">3193</span>          // we use durability of the original mutation for the mutation passed by CP.<a name="line.3193"></a>
-<span class="sourceLineNo">3194</span>          if (region.getEffectiveDurability(m.getDurability()) == Durability.SKIP_WAL) {<a name="line.3194"></a>
-<span class="sourceLineNo">3195</span>            region.recordMutationWithoutWal(m.getFamilyCellMap());<a name="line.3195"></a>
-<span class="sourceLineNo">3196</span>            return true;<a name="line.3196"></a>
-<span class="sourceLineNo">3197</span>          }<a name="line.3197"></a>
-<span class="sourceLineNo">3198</span><a name="line.3198"></a>
-<span class="sourceLineNo">3199</span>          // the batch may contain multiple nonce keys (replay case). If so, write WALEdit for each.<a name="line.3199"></a>
-<span class="sourceLineNo">3200</span>          // Given how nonce keys are originally written, these should be contiguous.<a name="line.3200"></a>
-<span class="sourceLineNo">3201</span>          // They don't have to be, it will still work, just write more WALEdits than needed.<a name="line.3201"></a>
-<span class="sourceLineNo">3202</span>          long nonceGroup = getNonceGroup(index);<a name="line.3202"></a>
-<span class="sourceLineNo">3203</span>          long nonce = getNonce(index);<a name="line.3203"></a>
-<span class="sourceLineNo">3204</span>          if (curWALEditForNonce == null ||<a name="line.3204"></a>
-<span class="sourceLineNo">3205</span>              curWALEditForNonce.getFirst().getNonceGroup() != nonceGroup ||<a name="line.3205"></a>
-<span class="sourceLineNo">3206</span>              curWALEditForNonce.getFirst().getNonce() != nonce) {<a name="line.3206"></a>
-<span class="sourceLineNo">3207</span>            curWALEditForNonce = new Pair&lt;&gt;(new NonceKey(nonceGroup, nonce),<a name="line.3207"></a>
-<span class="sourceLineNo">3208</span>                new WALEdit(miniBatchOp.getCellCount(), isInReplay()));<a name="line.3208"></a>
-<span class="sourceLineNo">3209</span>            walEdits.add(curWALEditForNonce);<a name="line.3209"></a>
-<span class="sourceLineNo">3210</span>          }<a name="line.3210"></a>
-<span class="sourceLineNo">3211</span>          WALEdit walEdit = curWALEditForNonce.getSecond();<a name="line.3211"></a>
-<span class="sourceLineNo">3212</span><a name="line.3212"></a>
-<span class="sourceLineNo">3213</span>          // Add WAL edits by CP<a name="line.3213"></a>
-<span class="sourceLineNo">3214</span>          WALEdit fromCP = walEditsFromCoprocessors[index];<a name="line.3214"></a>
-<span class="sourceLineNo">3215</span>          if (fromCP != null) {<a name="line.3215"></a>
-<span class="sourceLineNo">3216</span>            for (Cell cell : fromCP.getCells()) {<a name="line.3216"></a>
-<span class="sourceLineNo">3217</span>              walEdit.add(cell);<a name="line.3217"></a>
-<span class="sourceLineNo">3218</span>            }<a name="line.3218"></a>
-<span class="sourceLineNo">3219</span>          }<a name="line.3219"></a>
-<span class="sourceLineNo">3220</span>          addFamilyMapToWALEdit(familyCellMaps[index], walEdit);<a name="line.3220"></a>
-<span class="sourceLineNo">3221</span><a name="line.3221"></a>
-<span class="sourceLineNo">3222</span>          return true;<a name="line.3222"></a>
-<span class="sourceLineNo">3223</span>        }<a name="line.3223"></a>
-<span class="sourceLineNo">3224</span>      });<a name="line.3224"></a>
-<span class="sourceLineNo">3225</span>      return walEdits;<a name="line.3225"></a>
-<span class="sourceLineNo">3226</span>    }<a name="line.3226"></a>
-<span class="sourceLineNo">3227</span><a name="line.3227"></a>
-<span class="sourceLineNo">3228</span>    /**<a name="line.3228"></a>
-<span class="sourceLineNo">3229</span>     * This method completes mini-batch operations by calling postBatchMutate() CP hook (if<a name="line.3229"></a>
-<span class="sourceLineNo">3230</span>     * required) and completing mvcc.<a name="line.3230"></a>
-<span class="sourceLineNo">3231</span>     */<a name="line.3231"></a>
-<span class="sourceLineNo">3232</span>    public void completeMiniBatchOperations(<a name="line.3232"></a>
-<span class="sourceLineNo">3233</span>        final MiniBatchOperationInProgress&lt;Mutation&gt; miniBatchOp, final WriteEntry writeEntry)<a name="line.3233"></a>
-<span class="sourceLineNo">3234</span>        throws IOException {<a name="line.3234"></a>
-<span class="sourceLineNo">3235</span>      if (writeEntry != null) {<a name="line.3235"></a>
-<span class="sourceLineNo">3236</span>        region.mvcc.completeAndWait(writeEntry);<a name="line.3236"></a>
-<span class="sourceLineNo">3237</span>      }<a name="line.3237"></a>
-<span class="sourceLineNo">3238</span>    }<a name="line.3238"></a>
-<span class="sourceLineNo">3239</span><a name="line.3239"></a>
-<span class="sourceLineNo">3240</span>    public void doPostOpCleanupForMiniBatch(<a name="line.3240"></a>
-<span class="sourceLineNo">3241</span>        final MiniBatchOperationInProgress&lt;Mutation&gt; miniBatchOp, final WALEdit walEdit,<a name="line.3241"></a>
-<span class="sourceLineNo">3242</span>        boolean success) throws IOException {}<a name="line.3242"></a>
-<span class="sourceLineNo">3243</span><a name="line.3243"></a>
-<span class="sourceLineNo">3244</span>    /**<a name="line.3244"></a>
-<span class="sourceLineNo">3245</span>     * Atomically apply the given map of family-&gt;edits to the memstore.<a name="line.3245"></a>
-<span class="sourceLineNo">3246</span>     * This handles the consistency control on its own, but the caller<a name="line.3246"></a>
-<span class="sourceLineNo">3247</span>     * should already have locked updatesLock.readLock(). This also does<a name="line.3247"></a>
-<span class="sourceLineNo">3248</span>     * &lt;b&gt;not&lt;/b&gt; check the families for validity.<a name="line.3248"></a>
-<span class="sourceLineNo">3249</span>     *<a name="line.3249"></a>
-<span class="sourceLineNo">3250</span>     * @param familyMap Map of Cells by family<a name="line.3250"></a>
-<span class="sourceLineNo">3251</span>     */<a name="line.3251"></a>
-<span class="sourceLineNo">3252</span>    protected void applyFamilyMapToMemStore(Map&lt;byte[], List&lt;Cell&gt;&gt; familyMap,<a name="line.3252"></a>
-<span class="sourceLineNo">3253</span>        MemStoreSizing memstoreAccounting) throws IOException {<a name="line.3253"></a>
-<span class="sourceLineNo">3254</span>      for (Map.Entry&lt;byte[], List&lt;Cell&gt;&gt; e : familyMap.entrySet()) {<a name="line.3254"></a>
-<span class="sourceLineNo">3255</span>        byte[] family = e.getKey();<a name="line.3255"></a>
-<span class="sourceLineNo">3256</span>        List&lt;Cell&gt; cells = e.getValue();<a name="line.3256"></a>
-<span class="sourceLineNo">3257</span>        assert cells instanceof RandomAccess;<a name="line.3257"></a>
-<span class="sourceLineNo">3258</span>        region.applyToMemStore(region.getStore(family), cells, false, memstoreAccounting);<a name="line.3258"></a>
-<span class="sourceLineNo">3259</span>      }<a name="line.3259"></a>
-<span class="sourceLineNo">3260</span>    }<a name="line.3260"></a>
-<span class="sourceLineNo">3261</span><a name="line.3261"></a>
-<span class="sourceLineNo">3262</span>    /**<a name="line.3262"></a>
-<span class="sourceLineNo">3263</span>     * Append the given map of family-&gt;edits to a WALEdit data structure.<a name="line.3263"></a>
-<span class="sourceLineNo">3264</span>     * This does not write to the WAL itself.<a name="line.3264"></a>
-<span class="sourceLineNo">3265</span>     * @param familyMap map of family-&gt;edits<a name="line.3265"></a>
-<span class="sourceLineNo">3266</span>     * @param walEdit the destination entry to append into<a name="line.3266"></a>
-<span class="sourceLineNo">3267</span>     */<a name="line.3267"></a>
-<span class="sourceLineNo">3268</span>    private void addFamilyMapToWALEdit(Map&lt;byte[], List&lt;Cell&gt;&gt; familyMap,<a name="line.3268"></a>
-<span class="sourceLineNo">3269</span>        WALEdit walEdit) {<a name="line.3269"></a>
-<span class="sourceLineNo">3270</span>      for (List&lt;Cell&gt; edits : familyMap.values()) {<a name="line.3270"></a>
-<span class="sourceLineNo">3271</span>        // Optimization: 'foreach' loop is not used. See:<a name="line.3271"></a>
-<span class="sourceLineNo">3272</span>        // HBASE-12023 HRegion.applyFamilyMapToMemstore creates too many iterator objects<a name="line.3272"></a>
-<span class="sourceLineNo">3273</span>        assert edits instanceof RandomAccess;<a name="line.3273"></a>
-<span class="sourceLineNo">3274</span>        int listSize = edits.size();<a name="line.3274"></a>
-<span class="sourceLineNo">3275</span>        for (int i=0; i &lt; listSize; i++) {<a name="line.3275"></a>
-<span class="sourceLineNo">3276</span>          Cell cell = edits.get(i);<a name="line.3276"></a>
-<span class="sourceLineNo">3277</span>          walEdit.add(cell);<a name="line.3277"></a>
-<span class="sourceLineNo">3278</span>        }<a name="line.3278"></a>
-<span class="sourceLineNo">3279</span>      }<a name="line.3279"></a>
-<span class="sourceLineNo">3280</span>    }<a name="line.3280"></a>
-<span class="sourceLineNo">3281</span>  }<a name="line.3281"></a>
-<span class="sourceLineNo">3282</span><a name="line.3282"></a>
-<span class="sourceLineNo">3283</span>  /**<a name="line.3283"></a>
-<span class="sourceLineNo">3284</span>   * Batch of mutation operations. Base class is shared with {@link ReplayBatchOperation} as most<a name="line.3284"></a>
-<span class="sourceLineNo">3285</span>   * of the logic is same.<a name="line.3285"></a>
-<span class="sourceLineNo">3286</span>   */<a name="line.3286"></a>
-<span class="sourceLineNo">3287</span>  static class MutationBatchOperation extends BatchOperation&lt;Mutation&gt; {<a name="line.3287"></a>
-<span class="sourceLineNo">3288</span>    private long nonceGroup;<a name="line.3288"></a>
-<span class="sourceLineNo">3289</span>    private long nonce;<a name="line.3289"></a>
-<span class="sourceLineNo">3290</span>    public MutationBatchOperation(final HRegion region, Mutation[] operations, boolean atomic,<a name="line.3290"></a>
-<span class="sourceLineNo">3291</span>        long nonceGroup, long nonce) {<a name="line.3291"></a>
-<span class="sourceLineNo">3292</span>      super(region, operations);<a name="line.3292"></a>
-<span class="sourceLineNo">3293</span>      this.atomic = atomic;<a name="line.3293"></a>
-<span class="sourceLineNo">3294</span>      this.nonceGroup = nonceGroup;<a name="line.3294"></a>
-<span class="sourceLineNo">3295</span>      this.nonce = nonce;<a name="line.3295"></a>
-<span class="sourceLineNo">3296</span>    }<a name="line.3296"></a>
-<span class="sourceLineNo">3297</span><a name="line.3297"></a>
-<span class="sourceLineNo">3298</span>    @Override<a name="line.3298"></a>
-<span class="sourceLineNo">3299</span>    public Mutation getMutation(int index) {<a name="line.3299"></a>
-<span class="sourceLineNo">3300</span>      return this.operations[index];<a name="line.3300"></a>
-<span class="sourceLineNo">3301</span>    }<a name="line.3301"></a>
-<span class="sourceLineNo">3302</span><a name="line.3302"></a>
-<span class="sourceLineNo">3303</span>    @Override<a name="line.3303"></a>
-<span class="sourceLineNo">3304</span>    public long getNonceGroup(int index) {<a name="line.3304"></a>
-<span class="sourceLineNo">3305</span>      return nonceGroup;<a name="line.3305"></a>
-<span class="sourceLineNo">3306</span>    }<a name="line.3306"></a>
-<span class="sourceLineNo">3307</

<TRUNCATED>

[51/51] [partial] hbase-site git commit: Published site at .

Posted by gi...@apache.org.
Published site at .


Project: http://git-wip-us.apache.org/repos/asf/hbase-site/repo
Commit: http://git-wip-us.apache.org/repos/asf/hbase-site/commit/c54c242b
Tree: http://git-wip-us.apache.org/repos/asf/hbase-site/tree/c54c242b
Diff: http://git-wip-us.apache.org/repos/asf/hbase-site/diff/c54c242b

Branch: refs/heads/asf-site
Commit: c54c242b2e29825f40d65037b163d780e2ba0026
Parents: 21e0e11
Author: jenkins <bu...@apache.org>
Authored: Sun Dec 3 15:17:45 2017 +0000
Committer: jenkins <bu...@apache.org>
Committed: Sun Dec 3 15:17:45 2017 +0000

----------------------------------------------------------------------
 acid-semantics.html                             |     4 +-
 apache_hbase_reference_guide.pdf                |     4 +-
 apidocs/allclasses-frame.html                   |     2 +
 apidocs/allclasses-noframe.html                 |     2 +
 apidocs/index-all.html                          |    16 +
 .../org/apache/hadoop/hbase/CellComparator.html |     4 +-
 .../org/apache/hadoop/hbase/CellScannable.html  |   235 +
 .../org/apache/hadoop/hbase/CellScanner.html    |   276 +
 apidocs/org/apache/hadoop/hbase/CellUtil.html   |    26 +-
 .../org/apache/hadoop/hbase/class-use/Cell.html |    12 +-
 .../hadoop/hbase/class-use/CellScannable.html   |   219 +
 .../hadoop/hbase/class-use/CellScanner.html     |   230 +
 .../org/apache/hadoop/hbase/client/Append.html  |     2 +-
 .../org/apache/hadoop/hbase/client/Delete.html  |     2 +-
 .../apache/hadoop/hbase/client/Increment.html   |     2 +-
 .../apache/hadoop/hbase/client/Mutation.html    |    10 +-
 apidocs/org/apache/hadoop/hbase/client/Put.html |     2 +-
 .../org/apache/hadoop/hbase/client/Result.html  |    24 +-
 .../hadoop/hbase/client/package-tree.html       |     4 +-
 .../apache/hadoop/hbase/filter/RowFilter.html   |     2 +-
 .../hbase/filter/SingleColumnValueFilter.html   |     2 +-
 .../mapreduce/TableSnapshotInputFormat.html     |     2 +-
 .../org/apache/hadoop/hbase/package-frame.html  |     2 +
 .../apache/hadoop/hbase/package-summary.html    |    12 +
 .../org/apache/hadoop/hbase/package-tree.html   |     2 +
 .../org/apache/hadoop/hbase/package-use.html    |    20 +
 apidocs/overview-tree.html                      |     6 +-
 .../org/apache/hadoop/hbase/CellScannable.html  |   106 +
 .../org/apache/hadoop/hbase/CellScanner.html    |   135 +
 .../hbase/zookeeper/MiniZooKeeperCluster.html   |     6 +-
 book.html                                       |     2 +-
 bulk-loads.html                                 |     4 +-
 checkstyle-aggregate.html                       | 20054 ++++++++---------
 checkstyle.rss                                  |    60 +-
 coc.html                                        |     4 +-
 cygwin.html                                     |     4 +-
 dependencies.html                               |     4 +-
 dependency-convergence.html                     |     4 +-
 dependency-info.html                            |     4 +-
 dependency-management.html                      |     4 +-
 devapidocs/allclasses-frame.html                |     5 +-
 devapidocs/allclasses-noframe.html              |     5 +-
 devapidocs/constant-values.html                 |    60 +-
 devapidocs/index-all.html                       |   151 +-
 .../org/apache/hadoop/hbase/CellScannable.html  |     2 +-
 .../org/apache/hadoop/hbase/CellScanner.html    |     9 +-
 .../hadoop/hbase/backup/package-tree.html       |     2 +-
 .../hadoop/hbase/class-use/HRegionInfo.html     |    32 -
 .../hbase/client/RpcRetryingCallerImpl.html     |    40 +-
 .../hbase/client/ZKAsyncRegistry.Converter.html |   231 +
 .../ZKAsyncRegistry.CuratorEventProcessor.html  |   231 -
 .../hadoop/hbase/client/ZKAsyncRegistry.html    |   111 +-
 .../hbase/client/class-use/RegionInfo.html      |    16 +-
 .../class-use/ZKAsyncRegistry.Converter.html    |   168 +
 .../ZKAsyncRegistry.CuratorEventProcessor.html  |   169 -
 .../hadoop/hbase/client/package-frame.html      |     2 +-
 .../hadoop/hbase/client/package-summary.html    |     2 +-
 .../hadoop/hbase/client/package-tree.html       |    28 +-
 .../apache/hadoop/hbase/client/package-use.html |     2 +-
 .../class-use/DeserializationException.html     |     2 +-
 .../hadoop/hbase/filter/package-tree.html       |     4 +-
 .../hadoop/hbase/io/hfile/package-tree.html     |     6 +-
 .../hadoop/hbase/ipc/BlockingRpcConnection.html |    42 +-
 .../apache/hadoop/hbase/ipc/package-tree.html   |     4 +-
 .../hadoop/hbase/mapreduce/package-tree.html    |     2 +-
 .../hbase/master/balancer/package-tree.html     |     2 +-
 .../hadoop/hbase/master/package-tree.html       |     4 +-
 .../hadoop/hbase/monitoring/package-tree.html   |     2 +-
 .../org/apache/hadoop/hbase/package-tree.html   |    16 +-
 .../org/apache/hadoop/hbase/package-use.html    |     8 -
 .../hadoop/hbase/procedure2/package-tree.html   |     6 +-
 .../hadoop/hbase/quotas/package-tree.html       |     6 +-
 .../HRegion.BatchOperation.Visitor.html         |     4 +-
 .../regionserver/HRegion.BatchOperation.html    |    78 +-
 .../regionserver/HRegion.BulkLoadListener.html  |     8 +-
 .../HRegion.MutationBatchOperation.html         |    44 +-
 .../regionserver/HRegion.RegionScannerImpl.html |    90 +-
 .../HRegion.ReplayBatchOperation.html           |    32 +-
 .../regionserver/HRegion.RowLockContext.html    |    28 +-
 .../hbase/regionserver/HRegion.RowLockImpl.html |    16 +-
 .../hadoop/hbase/regionserver/HRegion.html      |   368 +-
 .../regionserver/HStore.StoreFlusherImpl.html   |    26 +-
 .../hadoop/hbase/regionserver/HStore.html       |   320 +-
 .../hbase/regionserver/StoreFlushContext.html   |    25 +-
 .../regionserver/class-use/MemStoreSize.html    |    13 +
 .../hadoop/hbase/regionserver/package-tree.html |    18 +-
 .../regionserver/querymatcher/package-tree.html |     4 +-
 .../hbase/regionserver/wal/MetricsWAL.html      |    41 +-
 .../wal/WALActionsListener.Base.html            |   561 -
 .../regionserver/wal/WALActionsListener.html    |   117 +-
 .../hbase/regionserver/wal/WALCellCodec.html    |     4 +-
 .../wal/class-use/WALActionsListener.Base.html  |   191 -
 .../wal/class-use/WALActionsListener.html       |     4 -
 .../hbase/regionserver/wal/package-frame.html   |     1 -
 .../hbase/regionserver/wal/package-summary.html |    18 +-
 .../hbase/regionserver/wal/package-tree.html    |     8 +-
 .../hbase/regionserver/wal/package-use.html     |    14 +-
 .../replication/regionserver/Replication.html   |    36 +-
 .../replication/regionserver/package-tree.html  |     6 +-
 .../hadoop/hbase/rest/model/package-tree.html   |     2 +-
 .../hbase/security/access/package-tree.html     |     2 +-
 .../hadoop/hbase/security/package-tree.html     |     2 +-
 .../apache/hadoop/hbase/util/package-tree.html  |     8 +-
 .../hadoop/hbase/wal/class-use/WALEdit.html     |    34 +-
 .../hadoop/hbase/wal/class-use/WALKey.html      |    34 +-
 .../hbase/zookeeper/MiniZooKeeperCluster.html   |    39 +-
 .../hadoop/hbase/zookeeper/PendingWatcher.html  |     4 +-
 .../hbase/zookeeper/ReadOnlyZKClient.Task.html  |   396 +
 .../zookeeper/ReadOnlyZKClient.ZKTask.html      |   454 +
 .../hbase/zookeeper/ReadOnlyZKClient.html       |   698 +
 .../hbase/zookeeper/RecoverableZooKeeper.html   |     4 +-
 .../class-use/ReadOnlyZKClient.Task.html        |   191 +
 .../class-use/ReadOnlyZKClient.ZKTask.html      |   125 +
 .../zookeeper/class-use/ReadOnlyZKClient.html   |   180 +
 .../hadoop/hbase/zookeeper/package-frame.html   |     2 +
 .../hadoop/hbase/zookeeper/package-summary.html |    56 +-
 .../hadoop/hbase/zookeeper/package-tree.html    |     6 +
 .../hadoop/hbase/zookeeper/package-use.html     |    30 +-
 devapidocs/overview-tree.html                   |    16 +-
 .../org/apache/hadoop/hbase/CellScannable.html  |     2 +-
 .../org/apache/hadoop/hbase/CellScanner.html    |    29 +-
 .../org/apache/hadoop/hbase/Version.html        |     6 +-
 .../hbase/client/RpcRetryingCallerImpl.html     |   433 +-
 .../hbase/client/ZKAsyncRegistry.Converter.html |   302 +
 .../ZKAsyncRegistry.CuratorEventProcessor.html  |   337 -
 .../hadoop/hbase/client/ZKAsyncRegistry.html    |   455 +-
 .../ipc/BlockingRpcConnection.CallSender.html   |  1126 +-
 .../hadoop/hbase/ipc/BlockingRpcConnection.html |  1126 +-
 .../HRegion.BatchOperation.Visitor.html         | 11849 +++++-----
 .../regionserver/HRegion.BatchOperation.html    | 11849 +++++-----
 .../regionserver/HRegion.BulkLoadListener.html  | 11849 +++++-----
 .../HRegion.FlushResult.Result.html             | 11849 +++++-----
 .../hbase/regionserver/HRegion.FlushResult.html | 11849 +++++-----
 .../regionserver/HRegion.FlushResultImpl.html   | 11849 +++++-----
 .../HRegion.MutationBatchOperation.html         | 11849 +++++-----
 .../HRegion.ObservedExceptionsInBatch.html      | 11849 +++++-----
 .../HRegion.PrepareFlushResult.html             | 11849 +++++-----
 .../regionserver/HRegion.RegionScannerImpl.html | 11849 +++++-----
 .../HRegion.ReplayBatchOperation.html           | 11849 +++++-----
 .../regionserver/HRegion.RowLockContext.html    | 11849 +++++-----
 .../hbase/regionserver/HRegion.RowLockImpl.html | 11849 +++++-----
 .../hbase/regionserver/HRegion.WriteState.html  | 11849 +++++-----
 .../hadoop/hbase/regionserver/HRegion.html      | 11849 +++++-----
 .../regionserver/HStore.StoreFlusherImpl.html   |  4284 ++--
 .../hadoop/hbase/regionserver/HStore.html       |  4284 ++--
 .../hadoop/hbase/regionserver/LogRoller.html    |     2 +-
 .../hbase/regionserver/StoreFlushContext.html   |   134 +-
 .../hbase/regionserver/wal/MetricsWAL.html      |     2 +-
 .../wal/WALActionsListener.Base.html            |   223 -
 .../regionserver/wal/WALActionsListener.html    |   223 +-
 ...Replication.ReplicationStatisticsThread.html |     4 +-
 .../replication/regionserver/Replication.html   |     4 +-
 .../hbase/zookeeper/MiniZooKeeperCluster.html   |     6 +-
 .../hbase/zookeeper/ReadOnlyZKClient.Task.html  |   419 +
 .../zookeeper/ReadOnlyZKClient.ZKTask.html      |   419 +
 .../hbase/zookeeper/ReadOnlyZKClient.html       |   419 +
 ...HACK_UNTIL_ZOOKEEPER_1897_ZooKeeperMain.html |    62 +-
 .../hadoop/hbase/zookeeper/ZKMainServer.html    |    62 +-
 export_control.html                             |     4 +-
 hbase-annotations/checkstyle.html               |     6 +-
 hbase-annotations/checkstyle.rss                |    16 +-
 hbase-annotations/dependencies.html             |     4 +-
 hbase-annotations/dependency-convergence.html   |     4 +-
 hbase-annotations/dependency-info.html          |     4 +-
 hbase-annotations/dependency-management.html    |     4 +-
 hbase-annotations/index.html                    |     4 +-
 hbase-annotations/integration.html              |     4 +-
 hbase-annotations/issue-tracking.html           |     4 +-
 hbase-annotations/license.html                  |     4 +-
 hbase-annotations/mail-lists.html               |     4 +-
 hbase-annotations/plugin-management.html        |     4 +-
 hbase-annotations/plugins.html                  |     4 +-
 hbase-annotations/project-info.html             |     4 +-
 hbase-annotations/project-reports.html          |     4 +-
 hbase-annotations/project-summary.html          |     4 +-
 hbase-annotations/source-repository.html        |     4 +-
 hbase-annotations/team-list.html                |     4 +-
 hbase-build-configuration/dependencies.html     |    10 +-
 .../dependency-convergence.html                 |     4 +-
 hbase-build-configuration/dependency-info.html  |     4 +-
 .../dependency-management.html                  |     4 +-
 .../hbase-archetypes/dependencies.html          |    10 +-
 .../dependency-convergence.html                 |     4 +-
 .../hbase-archetypes/dependency-info.html       |     4 +-
 .../hbase-archetypes/dependency-management.html |     4 +-
 .../hbase-archetype-builder/dependencies.html   |    10 +-
 .../dependency-convergence.html                 |     4 +-
 .../dependency-info.html                        |     4 +-
 .../dependency-management.html                  |     4 +-
 .../hbase-archetype-builder/index.html          |     4 +-
 .../hbase-archetype-builder/integration.html    |     4 +-
 .../hbase-archetype-builder/issue-tracking.html |     4 +-
 .../hbase-archetype-builder/license.html        |     4 +-
 .../hbase-archetype-builder/mail-lists.html     |     4 +-
 .../plugin-management.html                      |     4 +-
 .../hbase-archetype-builder/plugins.html        |     4 +-
 .../hbase-archetype-builder/project-info.html   |     4 +-
 .../project-summary.html                        |     4 +-
 .../source-repository.html                      |     4 +-
 .../hbase-archetype-builder/team-list.html      |     4 +-
 .../hbase-client-project/checkstyle.html        |     4 +-
 .../hbase-client-project/dependencies.html      |   178 +-
 .../dependency-convergence.html                 |     4 +-
 .../hbase-client-project/dependency-info.html   |     4 +-
 .../dependency-management.html                  |     4 +-
 .../hbase-client-project/index.html             |     4 +-
 .../hbase-client-project/integration.html       |     4 +-
 .../hbase-client-project/issue-tracking.html    |     4 +-
 .../hbase-client-project/license.html           |     4 +-
 .../hbase-client-project/mail-lists.html        |     4 +-
 .../hbase-client-project/plugin-management.html |     4 +-
 .../hbase-client-project/plugins.html           |     4 +-
 .../hbase-client-project/project-info.html      |     4 +-
 .../hbase-client-project/project-reports.html   |     4 +-
 .../hbase-client-project/project-summary.html   |     4 +-
 .../hbase-client-project/source-repository.html |     4 +-
 .../hbase-client-project/team-list.html         |     4 +-
 .../hbase-shaded-client-project/checkstyle.html |     4 +-
 .../dependencies.html                           |   222 +-
 .../dependency-convergence.html                 |     4 +-
 .../dependency-info.html                        |     4 +-
 .../dependency-management.html                  |     4 +-
 .../hbase-shaded-client-project/index.html      |     4 +-
 .../integration.html                            |     4 +-
 .../issue-tracking.html                         |     4 +-
 .../hbase-shaded-client-project/license.html    |     4 +-
 .../hbase-shaded-client-project/mail-lists.html |     4 +-
 .../plugin-management.html                      |     4 +-
 .../hbase-shaded-client-project/plugins.html    |     4 +-
 .../project-info.html                           |     4 +-
 .../project-reports.html                        |     4 +-
 .../project-summary.html                        |     4 +-
 .../source-repository.html                      |     4 +-
 .../hbase-shaded-client-project/team-list.html  |     4 +-
 .../hbase-archetypes/index.html                 |     4 +-
 .../hbase-archetypes/integration.html           |     4 +-
 .../hbase-archetypes/issue-tracking.html        |     4 +-
 .../hbase-archetypes/license.html               |     4 +-
 .../hbase-archetypes/mail-lists.html            |     4 +-
 .../hbase-archetypes/plugin-management.html     |     4 +-
 .../hbase-archetypes/plugins.html               |     4 +-
 .../hbase-archetypes/project-info.html          |     4 +-
 .../hbase-archetypes/project-summary.html       |     4 +-
 .../hbase-archetypes/source-repository.html     |     4 +-
 .../hbase-archetypes/team-list.html             |     4 +-
 .../hbase-spark/checkstyle.html                 |     4 +-
 .../hbase-spark/dependencies.html               |   271 +-
 .../hbase-spark/dependency-convergence.html     |     4 +-
 .../hbase-spark/dependency-info.html            |     4 +-
 .../hbase-spark/dependency-management.html      |     4 +-
 .../hbase-spark/index.html                      |     4 +-
 .../hbase-spark/integration.html                |     4 +-
 .../hbase-spark/issue-tracking.html             |     4 +-
 .../hbase-spark/license.html                    |     4 +-
 .../hbase-spark/mail-lists.html                 |     4 +-
 .../hbase-spark/plugin-management.html          |     4 +-
 .../hbase-spark/plugins.html                    |     4 +-
 .../hbase-spark/project-info.html               |     4 +-
 .../hbase-spark/project-reports.html            |     4 +-
 .../hbase-spark/project-summary.html            |     4 +-
 .../hbase-spark/source-repository.html          |     4 +-
 .../hbase-spark/team-list.html                  |     4 +-
 hbase-build-configuration/index.html            |     4 +-
 hbase-build-configuration/integration.html      |     4 +-
 hbase-build-configuration/issue-tracking.html   |     4 +-
 hbase-build-configuration/license.html          |     4 +-
 hbase-build-configuration/mail-lists.html       |     4 +-
 .../plugin-management.html                      |     4 +-
 hbase-build-configuration/plugins.html          |     4 +-
 hbase-build-configuration/project-info.html     |     4 +-
 hbase-build-configuration/project-summary.html  |     4 +-
 .../source-repository.html                      |     4 +-
 hbase-build-configuration/team-list.html        |     4 +-
 hbase-shaded-check-invariants/checkstyle.html   |     4 +-
 hbase-shaded-check-invariants/dependencies.html |   102 +-
 .../dependency-convergence.html                 |     4 +-
 .../dependency-info.html                        |     4 +-
 .../dependency-management.html                  |     4 +-
 hbase-shaded-check-invariants/index.html        |     4 +-
 hbase-shaded-check-invariants/integration.html  |     4 +-
 .../issue-tracking.html                         |     4 +-
 hbase-shaded-check-invariants/license.html      |     4 +-
 hbase-shaded-check-invariants/mail-lists.html   |     4 +-
 .../plugin-management.html                      |     4 +-
 hbase-shaded-check-invariants/plugins.html      |     4 +-
 hbase-shaded-check-invariants/project-info.html |     4 +-
 .../project-reports.html                        |     4 +-
 .../project-summary.html                        |     4 +-
 .../source-repository.html                      |     4 +-
 hbase-shaded-check-invariants/team-list.html    |     4 +-
 index.html                                      |     4 +-
 integration.html                                |     4 +-
 issue-tracking.html                             |     4 +-
 license.html                                    |     4 +-
 mail-lists.html                                 |     4 +-
 metrics.html                                    |     4 +-
 old_news.html                                   |     4 +-
 plugin-management.html                          |     4 +-
 plugins.html                                    |     4 +-
 poweredbyhbase.html                             |     4 +-
 project-info.html                               |     4 +-
 project-reports.html                            |     4 +-
 project-summary.html                            |     4 +-
 pseudo-distributed.html                         |     4 +-
 replication.html                                |     4 +-
 resources.html                                  |     4 +-
 source-repository.html                          |     4 +-
 sponsors.html                                   |     4 +-
 supportingprojects.html                         |     4 +-
 team-list.html                                  |     4 +-
 testdevapidocs/allclasses-frame.html            |     2 +
 testdevapidocs/allclasses-noframe.html          |     2 +
 testdevapidocs/index-all.html                   |    36 +-
 .../TestAcidGuaranteesWithAdaptivePolicy.html   |    25 +-
 .../TestAcidGuaranteesWithBasicPolicy.html      |    19 +-
 .../TestAcidGuaranteesWithEagerPolicy.html      |    25 +-
 ...TestAcidGuaranteesWithNoInMemCompaction.html |    49 +-
 .../hadoop/hbase/backup/package-tree.html       |     2 +-
 .../class-use/HBaseCommonTestingUtility.html    |    22 +
 .../hbase/client/TestZKAsyncRegistry.html       |    10 +-
 ...TestImportExport.TableWALActionListener.html |    39 +-
 .../hbase/mapreduce/TestImportExport.html       |     2 +-
 .../hadoop/hbase/mapreduce/package-summary.html |     2 +-
 .../hadoop/hbase/mapreduce/package-tree.html    |     6 +-
 .../org/apache/hadoop/hbase/package-tree.html   |    10 +-
 .../org/apache/hadoop/hbase/package-use.html    |     5 +
 .../hadoop/hbase/procedure2/package-tree.html   |     4 +-
 ...ionServerBulkLoad.FindBulkHBaseListener.html |    38 +-
 .../TestWALLockup.DummyWALActionsListener.html  |    37 +-
 .../hadoop/hbase/regionserver/package-tree.html |    20 +-
 ...ActionsListener.DummyWALActionsListener.html |    41 +-
 .../hbase/regionserver/wal/package-tree.html    |     6 +-
 .../TestWALEntryStream.PathWatcher.html         |    37 +-
 .../replication/regionserver/package-tree.html  |     6 +-
 .../apache/hadoop/hbase/test/package-tree.html  |     2 +-
 .../VerySlowRegionServerTests.html              |     4 +-
 .../hbase/testclassification/ZKTests.html       |   168 +
 .../testclassification/class-use/ZKTests.html   |   125 +
 .../hbase/testclassification/package-frame.html |     1 +
 .../testclassification/package-summary.html     |     4 +
 .../hbase/testclassification/package-tree.html  |     1 +
 .../TestWALFactory.DumbWALActionsListener.html  |    45 +-
 .../apache/hadoop/hbase/wal/package-tree.html   |     8 +-
 .../TestMetricsZooKeeperSourceImpl.html         |     4 +-
 .../hbase/zookeeper/TestReadOnlyZKClient.html   |   471 +
 .../zookeeper/TestRecoverableZooKeeper.html     |     4 +-
 .../hadoop/hbase/zookeeper/TestZKUtil.html      |    14 +-
 .../hadoop/hbase/zookeeper/TestZKWatcher.html   |     6 +-
 .../class-use/TestReadOnlyZKClient.html         |   125 +
 .../hadoop/hbase/zookeeper/package-frame.html   |     1 +
 .../hadoop/hbase/zookeeper/package-summary.html |    40 +-
 .../hadoop/hbase/zookeeper/package-tree.html    |     1 +
 testdevapidocs/overview-tree.html               |    24 +-
 .../TestAcidGuaranteesWithAdaptivePolicy.html   |    26 +-
 .../TestAcidGuaranteesWithEagerPolicy.html      |    25 +-
 ...TestAcidGuaranteesWithNoInMemCompaction.html |   210 +-
 .../hbase/client/TestZKAsyncRegistry.html       |   145 +-
 .../hadoop/hbase/fs/TestBlockReorder.html       |     2 +-
 ...TestImportExport.TableWALActionListener.html |     2 +-
 .../hbase/mapreduce/TestImportExport.html       |     2 +-
 .../regionserver/TestWALLockup.DummyServer.html |     2 +-
 .../TestWALLockup.DummyWALActionsListener.html  |     2 +-
 .../hbase/regionserver/TestWALLockup.html       |     2 +-
 .../wal/AbstractTestLogRollPeriod.html          |     2 +-
 .../hbase/regionserver/wal/TestFSHLog.html      |     2 +-
 .../hbase/regionserver/wal/TestLogRolling.html  |     4 +-
 ...ActionsListener.DummyWALActionsListener.html |     2 +-
 .../wal/TestWALActionsListener.html             |     2 +-
 ...estMasterReplication.CoprocessorCounter.html |     2 +-
 .../replication/TestMasterReplication.html      |     2 +-
 .../replication/TestMultiSlaveReplication.html  |     2 +-
 .../TestWALEntryStream.PathWatcher.html         |     2 +-
 .../regionserver/TestWALEntryStream.html        |     2 +-
 .../hbase/testclassification/ZKTests.html       |    93 +
 .../TestWALFactory.DumbWALActionsListener.html  |    44 +-
 .../apache/hadoop/hbase/wal/TestWALFactory.html |    44 +-
 ...ALPerformanceEvaluation.WALPutBenchmark.html |     2 +-
 .../hbase/wal/WALPerformanceEvaluation.html     |     2 +-
 .../hbase/zookeeper/TestInstancePending.html    |    16 +-
 .../hbase/zookeeper/TestReadOnlyZKClient.html   |   213 +
 .../hadoop/hbase/zookeeper/TestZKMetrics.html   |    52 +-
 .../hadoop/hbase/zookeeper/TestZKUtil.html      |   170 +-
 .../hadoop/hbase/zookeeper/TestZKWatcher.html   |    63 +-
 383 files changed, 113985 insertions(+), 109385 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/hbase-site/blob/c54c242b/acid-semantics.html
----------------------------------------------------------------------
diff --git a/acid-semantics.html b/acid-semantics.html
index 50d51f9..c5b3aa4 100644
--- a/acid-semantics.html
+++ b/acid-semantics.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="20171202" />
+    <meta name="Date-Revision-yyyymmdd" content="20171203" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase &#x2013;  
       Apache HBase (TM) ACID Properties
@@ -606,7 +606,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-12-02</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2017-12-03</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/c54c242b/apache_hbase_reference_guide.pdf
----------------------------------------------------------------------
diff --git a/apache_hbase_reference_guide.pdf b/apache_hbase_reference_guide.pdf
index 6a68825..d80011b 100644
--- a/apache_hbase_reference_guide.pdf
+++ b/apache_hbase_reference_guide.pdf
@@ -5,8 +5,8 @@
 /Author (Apache HBase Team)
 /Creator (Asciidoctor PDF 1.5.0.alpha.15, based on Prawn 2.2.2)
 /Producer (Apache HBase Team)
-/ModDate (D:20171202144741+00'00')
-/CreationDate (D:20171202144741+00'00')
+/ModDate (D:20171203144752+00'00')
+/CreationDate (D:20171203144752+00'00')
 >>
 endobj
 2 0 obj

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/c54c242b/apidocs/allclasses-frame.html
----------------------------------------------------------------------
diff --git a/apidocs/allclasses-frame.html b/apidocs/allclasses-frame.html
index a3eeb6b..7a2c9d6 100644
--- a/apidocs/allclasses-frame.html
+++ b/apidocs/allclasses-frame.html
@@ -64,6 +64,8 @@
 <li><a href="org/apache/hadoop/hbase/CellComparator.html" title="interface in org.apache.hadoop.hbase" target="classFrame"><span class="interfaceName">CellComparator</span></a></li>
 <li><a href="org/apache/hadoop/hbase/mapreduce/CellCounter.html" title="class in org.apache.hadoop.hbase.mapreduce" target="classFrame">CellCounter</a></li>
 <li><a href="org/apache/hadoop/hbase/mapreduce/CellCreator.html" title="class in org.apache.hadoop.hbase.mapreduce" target="classFrame">CellCreator</a></li>
+<li><a href="org/apache/hadoop/hbase/CellScannable.html" title="interface in org.apache.hadoop.hbase" target="classFrame"><span class="interfaceName">CellScannable</span></a></li>
+<li><a href="org/apache/hadoop/hbase/CellScanner.html" title="interface in org.apache.hadoop.hbase" target="classFrame"><span class="interfaceName">CellScanner</span></a></li>
 <li><a href="org/apache/hadoop/hbase/ipc/CellScannerButNoCodecException.html" title="class in org.apache.hadoop.hbase.ipc" target="classFrame">CellScannerButNoCodecException</a></li>
 <li><a href="org/apache/hadoop/hbase/mapreduce/CellSerialization.html" title="class in org.apache.hadoop.hbase.mapreduce" target="classFrame">CellSerialization</a></li>
 <li><a href="org/apache/hadoop/hbase/mapreduce/CellSortReducer.html" title="class in org.apache.hadoop.hbase.mapreduce" target="classFrame">CellSortReducer</a></li>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/c54c242b/apidocs/allclasses-noframe.html
----------------------------------------------------------------------
diff --git a/apidocs/allclasses-noframe.html b/apidocs/allclasses-noframe.html
index 783d619..05728d4 100644
--- a/apidocs/allclasses-noframe.html
+++ b/apidocs/allclasses-noframe.html
@@ -64,6 +64,8 @@
 <li><a href="org/apache/hadoop/hbase/CellComparator.html" title="interface in org.apache.hadoop.hbase"><span class="interfaceName">CellComparator</span></a></li>
 <li><a href="org/apache/hadoop/hbase/mapreduce/CellCounter.html" title="class in org.apache.hadoop.hbase.mapreduce">CellCounter</a></li>
 <li><a href="org/apache/hadoop/hbase/mapreduce/CellCreator.html" title="class in org.apache.hadoop.hbase.mapreduce">CellCreator</a></li>
+<li><a href="org/apache/hadoop/hbase/CellScannable.html" title="interface in org.apache.hadoop.hbase"><span class="interfaceName">CellScannable</span></a></li>
+<li><a href="org/apache/hadoop/hbase/CellScanner.html" title="interface in org.apache.hadoop.hbase"><span class="interfaceName">CellScanner</span></a></li>
 <li><a href="org/apache/hadoop/hbase/ipc/CellScannerButNoCodecException.html" title="class in org.apache.hadoop.hbase.ipc">CellScannerButNoCodecException</a></li>
 <li><a href="org/apache/hadoop/hbase/mapreduce/CellSerialization.html" title="class in org.apache.hadoop.hbase.mapreduce">CellSerialization</a></li>
 <li><a href="org/apache/hadoop/hbase/mapreduce/CellSortReducer.html" title="class in org.apache.hadoop.hbase.mapreduce">CellSortReducer</a></li>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/c54c242b/apidocs/index-all.html
----------------------------------------------------------------------
diff --git a/apidocs/index-all.html b/apidocs/index-all.html
index 139b7e2..f491795 100644
--- a/apidocs/index-all.html
+++ b/apidocs/index-all.html
@@ -454,6 +454,10 @@
 </dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/HConstants.html#ADMIN_QOS">ADMIN_QOS</a></span> - Static variable in class org.apache.hadoop.hbase.<a href="org/apache/hadoop/hbase/HConstants.html" title="class in org.apache.hadoop.hbase">HConstants</a></dt>
 <dd>&nbsp;</dd>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/CellScanner.html#advance--">advance()</a></span> - Method in interface org.apache.hadoop.hbase.<a href="org/apache/hadoop/hbase/CellScanner.html" title="interface in org.apache.hadoop.hbase">CellScanner</a></dt>
+<dd>
+<div class="block">Advance the scanner 1 cell.</div>
+</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/client/Result.html#advance--">advance()</a></span> - Method in class org.apache.hadoop.hbase.client.<a href="org/apache/hadoop/hbase/client/Result.html" title="class in org.apache.hadoop.hbase.client">Result</a></dt>
 <dd>&nbsp;</dd>
 <dt><a href="org/apache/hadoop/hbase/client/AdvancedScanResultConsumer.html" title="interface in org.apache.hadoop.hbase.client"><span class="typeNameLink">AdvancedScanResultConsumer</span></a> - Interface in <a href="org/apache/hadoop/hbase/client/package-summary.html">org.apache.hadoop.hbase.client</a></dt>
@@ -1197,6 +1201,16 @@
 </dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/mapreduce/CellCreator.html#CellCreator-org.apache.hadoop.conf.Configuration-">CellCreator(Configuration)</a></span> - Constructor for class org.apache.hadoop.hbase.mapreduce.<a href="org/apache/hadoop/hbase/mapreduce/CellCreator.html" title="class in org.apache.hadoop.hbase.mapreduce">CellCreator</a></dt>
 <dd>&nbsp;</dd>
+<dt><a href="org/apache/hadoop/hbase/CellScannable.html" title="interface in org.apache.hadoop.hbase"><span class="typeNameLink">CellScannable</span></a> - Interface in <a href="org/apache/hadoop/hbase/package-summary.html">org.apache.hadoop.hbase</a></dt>
+<dd>
+<div class="block">Implementer can return a CellScanner over its Cell content.</div>
+</dd>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/CellScannable.html#cellScanner--">cellScanner()</a></span> - Method in interface org.apache.hadoop.hbase.<a href="org/apache/hadoop/hbase/CellScannable.html" title="interface in org.apache.hadoop.hbase">CellScannable</a></dt>
+<dd>&nbsp;</dd>
+<dt><a href="org/apache/hadoop/hbase/CellScanner.html" title="interface in org.apache.hadoop.hbase"><span class="typeNameLink">CellScanner</span></a> - Interface in <a href="org/apache/hadoop/hbase/package-summary.html">org.apache.hadoop.hbase</a></dt>
+<dd>
+<div class="block">An interface for iterating through a sequence of cells.</div>
+</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/client/Mutation.html#cellScanner--">cellScanner()</a></span> - Method in class org.apache.hadoop.hbase.client.<a href="org/apache/hadoop/hbase/client/Mutation.html" title="class in org.apache.hadoop.hbase.client">Mutation</a></dt>
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/client/Result.html#cellScanner--">cellScanner()</a></span> - Method in class org.apache.hadoop.hbase.client.<a href="org/apache/hadoop/hbase/client/Result.html" title="class in org.apache.hadoop.hbase.client">Result</a></dt>
@@ -3012,6 +3026,8 @@
 </dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/io/ByteBufferOutputStream.html#curBuf">curBuf</a></span> - Variable in class org.apache.hadoop.hbase.io.<a href="org/apache/hadoop/hbase/io/ByteBufferOutputStream.html" title="class in org.apache.hadoop.hbase.io">ByteBufferOutputStream</a></dt>
 <dd>&nbsp;</dd>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/CellScanner.html#current--">current()</a></span> - Method in interface org.apache.hadoop.hbase.<a href="org/apache/hadoop/hbase/CellScanner.html" title="interface in org.apache.hadoop.hbase">CellScanner</a></dt>
+<dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/client/Result.html#current--">current()</a></span> - Method in class org.apache.hadoop.hbase.client.<a href="org/apache/hadoop/hbase/client/Result.html" title="class in org.apache.hadoop.hbase.client">Result</a></dt>
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/client/AdvancedScanResultConsumer.ScanController.html#cursor--">cursor()</a></span> - Method in interface org.apache.hadoop.hbase.client.<a href="org/apache/hadoop/hbase/client/AdvancedScanResultConsumer.ScanController.html" title="interface in org.apache.hadoop.hbase.client">AdvancedScanResultConsumer.ScanController</a></dt>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/c54c242b/apidocs/org/apache/hadoop/hbase/CellComparator.html
----------------------------------------------------------------------
diff --git a/apidocs/org/apache/hadoop/hbase/CellComparator.html b/apidocs/org/apache/hadoop/hbase/CellComparator.html
index 8db284a..7040a82 100644
--- a/apidocs/org/apache/hadoop/hbase/CellComparator.html
+++ b/apidocs/org/apache/hadoop/hbase/CellComparator.html
@@ -50,7 +50,7 @@ var activeTableTab = "activeTableTab";
 <div class="subNav">
 <ul class="navList">
 <li><a href="../../../../org/apache/hadoop/hbase/CellBuilderType.html" title="enum in org.apache.hadoop.hbase"><span class="typeNameLink">Prev&nbsp;Class</span></a></li>
-<li><a href="../../../../org/apache/hadoop/hbase/CellUtil.html" title="class in org.apache.hadoop.hbase"><span class="typeNameLink">Next&nbsp;Class</span></a></li>
+<li><a href="../../../../org/apache/hadoop/hbase/CellScannable.html" title="interface in org.apache.hadoop.hbase"><span class="typeNameLink">Next&nbsp;Class</span></a></li>
 </ul>
 <ul class="navList">
 <li><a href="../../../../index.html?org/apache/hadoop/hbase/CellComparator.html" target="_top">Frames</a></li>
@@ -426,7 +426,7 @@ extends <a href="http://docs.oracle.com/javase/8/docs/api/java/util/Comparator.h
 <div class="subNav">
 <ul class="navList">
 <li><a href="../../../../org/apache/hadoop/hbase/CellBuilderType.html" title="enum in org.apache.hadoop.hbase"><span class="typeNameLink">Prev&nbsp;Class</span></a></li>
-<li><a href="../../../../org/apache/hadoop/hbase/CellUtil.html" title="class in org.apache.hadoop.hbase"><span class="typeNameLink">Next&nbsp;Class</span></a></li>
+<li><a href="../../../../org/apache/hadoop/hbase/CellScannable.html" title="interface in org.apache.hadoop.hbase"><span class="typeNameLink">Next&nbsp;Class</span></a></li>
 </ul>
 <ul class="navList">
 <li><a href="../../../../index.html?org/apache/hadoop/hbase/CellComparator.html" target="_top">Frames</a></li>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/c54c242b/apidocs/org/apache/hadoop/hbase/CellScannable.html
----------------------------------------------------------------------
diff --git a/apidocs/org/apache/hadoop/hbase/CellScannable.html b/apidocs/org/apache/hadoop/hbase/CellScannable.html
new file mode 100644
index 0000000..34eb11f
--- /dev/null
+++ b/apidocs/org/apache/hadoop/hbase/CellScannable.html
@@ -0,0 +1,235 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<!-- NewPage -->
+<html lang="en">
+<head>
+<!-- Generated by javadoc -->
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title>CellScannable (Apache HBase 3.0.0-SNAPSHOT API)</title>
+<link rel="stylesheet" type="text/css" href="../../../../stylesheet.css" title="Style">
+<script type="text/javascript" src="../../../../script.js"></script>
+</head>
+<body>
+<script type="text/javascript"><!--
+    try {
+        if (location.href.indexOf('is-external=true') == -1) {
+            parent.document.title="CellScannable (Apache HBase 3.0.0-SNAPSHOT API)";
+        }
+    }
+    catch(err) {
+    }
+//-->
+var methods = {"i0":6};
+var tabs = {65535:["t0","All Methods"],2:["t2","Instance Methods"],4:["t3","Abstract Methods"]};
+var altColor = "altColor";
+var rowColor = "rowColor";
+var tableTab = "tableTab";
+var activeTableTab = "activeTableTab";
+</script>
+<noscript>
+<div>JavaScript is disabled on your browser.</div>
+</noscript>
+<!-- ========= START OF TOP NAVBAR ======= -->
+<div class="topNav"><a name="navbar.top">
+<!--   -->
+</a>
+<div class="skipNav"><a href="#skip.navbar.top" title="Skip navigation links">Skip navigation links</a></div>
+<a name="navbar.top.firstrow">
+<!--   -->
+</a>
+<ul class="navList" title="Navigation">
+<li><a href="../../../../overview-summary.html">Overview</a></li>
+<li><a href="package-summary.html">Package</a></li>
+<li class="navBarCell1Rev">Class</li>
+<li><a href="class-use/CellScannable.html">Use</a></li>
+<li><a href="package-tree.html">Tree</a></li>
+<li><a href="../../../../deprecated-list.html">Deprecated</a></li>
+<li><a href="../../../../index-all.html">Index</a></li>
+<li><a href="../../../../help-doc.html">Help</a></li>
+</ul>
+</div>
+<div class="subNav">
+<ul class="navList">
+<li><a href="../../../../org/apache/hadoop/hbase/CellComparator.html" title="interface in org.apache.hadoop.hbase"><span class="typeNameLink">Prev&nbsp;Class</span></a></li>
+<li><a href="../../../../org/apache/hadoop/hbase/CellScanner.html" title="interface in org.apache.hadoop.hbase"><span class="typeNameLink">Next&nbsp;Class</span></a></li>
+</ul>
+<ul class="navList">
+<li><a href="../../../../index.html?org/apache/hadoop/hbase/CellScannable.html" target="_top">Frames</a></li>
+<li><a href="CellScannable.html" target="_top">No&nbsp;Frames</a></li>
+</ul>
+<ul class="navList" id="allclasses_navbar_top">
+<li><a href="../../../../allclasses-noframe.html">All&nbsp;Classes</a></li>
+</ul>
+<div>
+<script type="text/javascript"><!--
+  allClassesLink = document.getElementById("allclasses_navbar_top");
+  if(window==top) {
+    allClassesLink.style.display = "block";
+  }
+  else {
+    allClassesLink.style.display = "none";
+  }
+  //-->
+</script>
+</div>
+<div>
+<ul class="subNavList">
+<li>Summary:&nbsp;</li>
+<li>Nested&nbsp;|&nbsp;</li>
+<li>Field&nbsp;|&nbsp;</li>
+<li>Constr&nbsp;|&nbsp;</li>
+<li><a href="#method.summary">Method</a></li>
+</ul>
+<ul class="subNavList">
+<li>Detail:&nbsp;</li>
+<li>Field&nbsp;|&nbsp;</li>
+<li>Constr&nbsp;|&nbsp;</li>
+<li><a href="#method.detail">Method</a></li>
+</ul>
+</div>
+<a name="skip.navbar.top">
+<!--   -->
+</a></div>
+<!-- ========= END OF TOP NAVBAR ========= -->
+<!-- ======== START OF CLASS DATA ======== -->
+<div class="header">
+<div class="subTitle">org.apache.hadoop.hbase</div>
+<h2 title="Interface CellScannable" class="title">Interface CellScannable</h2>
+</div>
+<div class="contentContainer">
+<div class="description">
+<ul class="blockList">
+<li class="blockList">
+<dl>
+<dt>All Known Implementing Classes:</dt>
+<dd><a href="../../../../org/apache/hadoop/hbase/client/Append.html" title="class in org.apache.hadoop.hbase.client">Append</a>, <a href="../../../../org/apache/hadoop/hbase/client/Delete.html" title="class in org.apache.hadoop.hbase.client">Delete</a>, <a href="../../../../org/apache/hadoop/hbase/client/Increment.html" title="class in org.apache.hadoop.hbase.client">Increment</a>, <a href="../../../../org/apache/hadoop/hbase/client/Mutation.html" title="class in org.apache.hadoop.hbase.client">Mutation</a>, <a href="../../../../org/apache/hadoop/hbase/client/Put.html" title="class in org.apache.hadoop.hbase.client">Put</a>, <a href="../../../../org/apache/hadoop/hbase/client/Result.html" title="class in org.apache.hadoop.hbase.client">Result</a></dd>
+</dl>
+<hr>
+<br>
+<pre>@InterfaceAudience.Public
+public interface <a href="../../../../src-html/org/apache/hadoop/hbase/CellScannable.html#line.29">CellScannable</a></pre>
+<div class="block">Implementer can return a CellScanner over its Cell content.
+ Class name is ugly but mimicing java.util.Iterable only we are about the dumber
+ CellScanner rather than say Iterator&lt;Cell&gt;.  See CellScanner class comment for why we go
+ dumber than java.util.Iterator.</div>
+</li>
+</ul>
+</div>
+<div class="summary">
+<ul class="blockList">
+<li class="blockList">
+<!-- ========== METHOD SUMMARY =========== -->
+<ul class="blockList">
+<li class="blockList"><a name="method.summary">
+<!--   -->
+</a>
+<h3>Method Summary</h3>
+<table class="memberSummary" border="0" cellpadding="3" cellspacing="0" summary="Method Summary table, listing methods, and an explanation">
+<caption><span id="t0" class="activeTableTab"><span>All Methods</span><span class="tabEnd">&nbsp;</span></span><span id="t2" class="tableTab"><span><a href="javascript:show(2);">Instance Methods</a></span><span class="tabEnd">&nbsp;</span></span><span id="t3" class="tableTab"><span><a href="javascript:show(4);">Abstract Methods</a></span><span class="tabEnd">&nbsp;</span></span></caption>
+<tr>
+<th class="colFirst" scope="col">Modifier and Type</th>
+<th class="colLast" scope="col">Method and Description</th>
+</tr>
+<tr id="i0" class="altColor">
+<td class="colFirst"><code><a href="../../../../org/apache/hadoop/hbase/CellScanner.html" title="interface in org.apache.hadoop.hbase">CellScanner</a></code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/hadoop/hbase/CellScannable.html#cellScanner--">cellScanner</a></span>()</code>&nbsp;</td>
+</tr>
+</table>
+</li>
+</ul>
+</li>
+</ul>
+</div>
+<div class="details">
+<ul class="blockList">
+<li class="blockList">
+<!-- ============ METHOD DETAIL ========== -->
+<ul class="blockList">
+<li class="blockList"><a name="method.detail">
+<!--   -->
+</a>
+<h3>Method Detail</h3>
+<a name="cellScanner--">
+<!--   -->
+</a>
+<ul class="blockListLast">
+<li class="blockList">
+<h4>cellScanner</h4>
+<pre><a href="../../../../org/apache/hadoop/hbase/CellScanner.html" title="interface in org.apache.hadoop.hbase">CellScanner</a>&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/CellScannable.html#line.33">cellScanner</a>()</pre>
+<dl>
+<dt><span class="returnLabel">Returns:</span></dt>
+<dd>A CellScanner over the contained <a href="../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase"><code>Cell</code></a>s</dd>
+</dl>
+</li>
+</ul>
+</li>
+</ul>
+</li>
+</ul>
+</div>
+</div>
+<!-- ========= END OF CLASS DATA ========= -->
+<!-- ======= START OF BOTTOM NAVBAR ====== -->
+<div class="bottomNav"><a name="navbar.bottom">
+<!--   -->
+</a>
+<div class="skipNav"><a href="#skip.navbar.bottom" title="Skip navigation links">Skip navigation links</a></div>
+<a name="navbar.bottom.firstrow">
+<!--   -->
+</a>
+<ul class="navList" title="Navigation">
+<li><a href="../../../../overview-summary.html">Overview</a></li>
+<li><a href="package-summary.html">Package</a></li>
+<li class="navBarCell1Rev">Class</li>
+<li><a href="class-use/CellScannable.html">Use</a></li>
+<li><a href="package-tree.html">Tree</a></li>
+<li><a href="../../../../deprecated-list.html">Deprecated</a></li>
+<li><a href="../../../../index-all.html">Index</a></li>
+<li><a href="../../../../help-doc.html">Help</a></li>
+</ul>
+</div>
+<div class="subNav">
+<ul class="navList">
+<li><a href="../../../../org/apache/hadoop/hbase/CellComparator.html" title="interface in org.apache.hadoop.hbase"><span class="typeNameLink">Prev&nbsp;Class</span></a></li>
+<li><a href="../../../../org/apache/hadoop/hbase/CellScanner.html" title="interface in org.apache.hadoop.hbase"><span class="typeNameLink">Next&nbsp;Class</span></a></li>
+</ul>
+<ul class="navList">
+<li><a href="../../../../index.html?org/apache/hadoop/hbase/CellScannable.html" target="_top">Frames</a></li>
+<li><a href="CellScannable.html" target="_top">No&nbsp;Frames</a></li>
+</ul>
+<ul class="navList" id="allclasses_navbar_bottom">
+<li><a href="../../../../allclasses-noframe.html">All&nbsp;Classes</a></li>
+</ul>
+<div>
+<script type="text/javascript"><!--
+  allClassesLink = document.getElementById("allclasses_navbar_bottom");
+  if(window==top) {
+    allClassesLink.style.display = "block";
+  }
+  else {
+    allClassesLink.style.display = "none";
+  }
+  //-->
+</script>
+</div>
+<div>
+<ul class="subNavList">
+<li>Summary:&nbsp;</li>
+<li>Nested&nbsp;|&nbsp;</li>
+<li>Field&nbsp;|&nbsp;</li>
+<li>Constr&nbsp;|&nbsp;</li>
+<li><a href="#method.summary">Method</a></li>
+</ul>
+<ul class="subNavList">
+<li>Detail:&nbsp;</li>
+<li>Field&nbsp;|&nbsp;</li>
+<li>Constr&nbsp;|&nbsp;</li>
+<li><a href="#method.detail">Method</a></li>
+</ul>
+</div>
+<a name="skip.navbar.bottom">
+<!--   -->
+</a></div>
+<!-- ======== END OF BOTTOM NAVBAR ======= -->
+<p class="legalCopy"><small>Copyright &#169; 2007&#x2013;2017 <a href="https://www.apache.org/">The Apache Software Foundation</a>. All rights reserved.</small></p>
+</body>
+</html>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/c54c242b/apidocs/org/apache/hadoop/hbase/CellScanner.html
----------------------------------------------------------------------
diff --git a/apidocs/org/apache/hadoop/hbase/CellScanner.html b/apidocs/org/apache/hadoop/hbase/CellScanner.html
new file mode 100644
index 0000000..ed3acea
--- /dev/null
+++ b/apidocs/org/apache/hadoop/hbase/CellScanner.html
@@ -0,0 +1,276 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<!-- NewPage -->
+<html lang="en">
+<head>
+<!-- Generated by javadoc -->
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title>CellScanner (Apache HBase 3.0.0-SNAPSHOT API)</title>
+<link rel="stylesheet" type="text/css" href="../../../../stylesheet.css" title="Style">
+<script type="text/javascript" src="../../../../script.js"></script>
+</head>
+<body>
+<script type="text/javascript"><!--
+    try {
+        if (location.href.indexOf('is-external=true') == -1) {
+            parent.document.title="CellScanner (Apache HBase 3.0.0-SNAPSHOT API)";
+        }
+    }
+    catch(err) {
+    }
+//-->
+var methods = {"i0":6,"i1":6};
+var tabs = {65535:["t0","All Methods"],2:["t2","Instance Methods"],4:["t3","Abstract Methods"]};
+var altColor = "altColor";
+var rowColor = "rowColor";
+var tableTab = "tableTab";
+var activeTableTab = "activeTableTab";
+</script>
+<noscript>
+<div>JavaScript is disabled on your browser.</div>
+</noscript>
+<!-- ========= START OF TOP NAVBAR ======= -->
+<div class="topNav"><a name="navbar.top">
+<!--   -->
+</a>
+<div class="skipNav"><a href="#skip.navbar.top" title="Skip navigation links">Skip navigation links</a></div>
+<a name="navbar.top.firstrow">
+<!--   -->
+</a>
+<ul class="navList" title="Navigation">
+<li><a href="../../../../overview-summary.html">Overview</a></li>
+<li><a href="package-summary.html">Package</a></li>
+<li class="navBarCell1Rev">Class</li>
+<li><a href="class-use/CellScanner.html">Use</a></li>
+<li><a href="package-tree.html">Tree</a></li>
+<li><a href="../../../../deprecated-list.html">Deprecated</a></li>
+<li><a href="../../../../index-all.html">Index</a></li>
+<li><a href="../../../../help-doc.html">Help</a></li>
+</ul>
+</div>
+<div class="subNav">
+<ul class="navList">
+<li><a href="../../../../org/apache/hadoop/hbase/CellScannable.html" title="interface in org.apache.hadoop.hbase"><span class="typeNameLink">Prev&nbsp;Class</span></a></li>
+<li><a href="../../../../org/apache/hadoop/hbase/CellUtil.html" title="class in org.apache.hadoop.hbase"><span class="typeNameLink">Next&nbsp;Class</span></a></li>
+</ul>
+<ul class="navList">
+<li><a href="../../../../index.html?org/apache/hadoop/hbase/CellScanner.html" target="_top">Frames</a></li>
+<li><a href="CellScanner.html" target="_top">No&nbsp;Frames</a></li>
+</ul>
+<ul class="navList" id="allclasses_navbar_top">
+<li><a href="../../../../allclasses-noframe.html">All&nbsp;Classes</a></li>
+</ul>
+<div>
+<script type="text/javascript"><!--
+  allClassesLink = document.getElementById("allclasses_navbar_top");
+  if(window==top) {
+    allClassesLink.style.display = "block";
+  }
+  else {
+    allClassesLink.style.display = "none";
+  }
+  //-->
+</script>
+</div>
+<div>
+<ul class="subNavList">
+<li>Summary:&nbsp;</li>
+<li>Nested&nbsp;|&nbsp;</li>
+<li>Field&nbsp;|&nbsp;</li>
+<li>Constr&nbsp;|&nbsp;</li>
+<li><a href="#method.summary">Method</a></li>
+</ul>
+<ul class="subNavList">
+<li>Detail:&nbsp;</li>
+<li>Field&nbsp;|&nbsp;</li>
+<li>Constr&nbsp;|&nbsp;</li>
+<li><a href="#method.detail">Method</a></li>
+</ul>
+</div>
+<a name="skip.navbar.top">
+<!--   -->
+</a></div>
+<!-- ========= END OF TOP NAVBAR ========= -->
+<!-- ======== START OF CLASS DATA ======== -->
+<div class="header">
+<div class="subTitle">org.apache.hadoop.hbase</div>
+<h2 title="Interface CellScanner" class="title">Interface CellScanner</h2>
+</div>
+<div class="contentContainer">
+<div class="description">
+<ul class="blockList">
+<li class="blockList">
+<dl>
+<dt>All Known Implementing Classes:</dt>
+<dd><a href="../../../../org/apache/hadoop/hbase/client/Result.html" title="class in org.apache.hadoop.hbase.client">Result</a></dd>
+</dl>
+<hr>
+<br>
+<pre>@InterfaceAudience.Public
+public interface <a href="../../../../src-html/org/apache/hadoop/hbase/CellScanner.html#line.51">CellScanner</a></pre>
+<div class="block">An interface for iterating through a sequence of cells. Similar to Java's Iterator, but without
+ the hasNext() or remove() methods. The hasNext() method is problematic because it may require
+ actually loading the next object, which in turn requires storing the previous object somewhere.
+
+ <p>The core data block decoder should be as fast as possible, so we push the complexity and
+ performance expense of concurrently tracking multiple cells to layers above the CellScanner.
+ <p>
+ The <a href="../../../../org/apache/hadoop/hbase/CellScanner.html#current--"><code>current()</code></a> method will return a reference to a Cell implementation. This reference
+ may or may not point to a reusable cell implementation, so users of the CellScanner should not,
+ for example, accumulate a List of Cells. All of the references may point to the same object,
+ which would be the latest state of the underlying Cell. In short, the Cell is mutable.
+ </p>
+ Typical usage:
+
+ <pre>
+ while (scanner.advance()) {
+   Cell cell = scanner.current();
+   // do something
+ }
+ </pre>
+ <p>Often used reading <a href="../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase"><code>Cell</code></a>s written by
+ <code>CellOutputStream</code>.</div>
+</li>
+</ul>
+</div>
+<div class="summary">
+<ul class="blockList">
+<li class="blockList">
+<!-- ========== METHOD SUMMARY =========== -->
+<ul class="blockList">
+<li class="blockList"><a name="method.summary">
+<!--   -->
+</a>
+<h3>Method Summary</h3>
+<table class="memberSummary" border="0" cellpadding="3" cellspacing="0" summary="Method Summary table, listing methods, and an explanation">
+<caption><span id="t0" class="activeTableTab"><span>All Methods</span><span class="tabEnd">&nbsp;</span></span><span id="t2" class="tableTab"><span><a href="javascript:show(2);">Instance Methods</a></span><span class="tabEnd">&nbsp;</span></span><span id="t3" class="tableTab"><span><a href="javascript:show(4);">Abstract Methods</a></span><span class="tabEnd">&nbsp;</span></span></caption>
+<tr>
+<th class="colFirst" scope="col">Modifier and Type</th>
+<th class="colLast" scope="col">Method and Description</th>
+</tr>
+<tr id="i0" class="altColor">
+<td class="colFirst"><code>boolean</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/hadoop/hbase/CellScanner.html#advance--">advance</a></span>()</code>
+<div class="block">Advance the scanner 1 cell.</div>
+</td>
+</tr>
+<tr id="i1" class="rowColor">
+<td class="colFirst"><code><a href="../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a></code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/hadoop/hbase/CellScanner.html#current--">current</a></span>()</code>&nbsp;</td>
+</tr>
+</table>
+</li>
+</ul>
+</li>
+</ul>
+</div>
+<div class="details">
+<ul class="blockList">
+<li class="blockList">
+<!-- ============ METHOD DETAIL ========== -->
+<ul class="blockList">
+<li class="blockList"><a name="method.detail">
+<!--   -->
+</a>
+<h3>Method Detail</h3>
+<a name="current--">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>current</h4>
+<pre><a href="../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/CellScanner.html#line.55">current</a>()</pre>
+<dl>
+<dt><span class="returnLabel">Returns:</span></dt>
+<dd>the current Cell which may be mutable</dd>
+</dl>
+</li>
+</ul>
+<a name="advance--">
+<!--   -->
+</a>
+<ul class="blockListLast">
+<li class="blockList">
+<h4>advance</h4>
+<pre>boolean&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/CellScanner.html#line.62">advance</a>()
+         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">Advance the scanner 1 cell.</div>
+<dl>
+<dt><span class="returnLabel">Returns:</span></dt>
+<dd>true if the next cell is found and <a href="../../../../org/apache/hadoop/hbase/CellScanner.html#current--"><code>current()</code></a> will return a valid Cell</dd>
+<dt><span class="throwsLabel">Throws:</span></dt>
+<dd><code><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></code></dd>
+</dl>
+</li>
+</ul>
+</li>
+</ul>
+</li>
+</ul>
+</div>
+</div>
+<!-- ========= END OF CLASS DATA ========= -->
+<!-- ======= START OF BOTTOM NAVBAR ====== -->
+<div class="bottomNav"><a name="navbar.bottom">
+<!--   -->
+</a>
+<div class="skipNav"><a href="#skip.navbar.bottom" title="Skip navigation links">Skip navigation links</a></div>
+<a name="navbar.bottom.firstrow">
+<!--   -->
+</a>
+<ul class="navList" title="Navigation">
+<li><a href="../../../../overview-summary.html">Overview</a></li>
+<li><a href="package-summary.html">Package</a></li>
+<li class="navBarCell1Rev">Class</li>
+<li><a href="class-use/CellScanner.html">Use</a></li>
+<li><a href="package-tree.html">Tree</a></li>
+<li><a href="../../../../deprecated-list.html">Deprecated</a></li>
+<li><a href="../../../../index-all.html">Index</a></li>
+<li><a href="../../../../help-doc.html">Help</a></li>
+</ul>
+</div>
+<div class="subNav">
+<ul class="navList">
+<li><a href="../../../../org/apache/hadoop/hbase/CellScannable.html" title="interface in org.apache.hadoop.hbase"><span class="typeNameLink">Prev&nbsp;Class</span></a></li>
+<li><a href="../../../../org/apache/hadoop/hbase/CellUtil.html" title="class in org.apache.hadoop.hbase"><span class="typeNameLink">Next&nbsp;Class</span></a></li>
+</ul>
+<ul class="navList">
+<li><a href="../../../../index.html?org/apache/hadoop/hbase/CellScanner.html" target="_top">Frames</a></li>
+<li><a href="CellScanner.html" target="_top">No&nbsp;Frames</a></li>
+</ul>
+<ul class="navList" id="allclasses_navbar_bottom">
+<li><a href="../../../../allclasses-noframe.html">All&nbsp;Classes</a></li>
+</ul>
+<div>
+<script type="text/javascript"><!--
+  allClassesLink = document.getElementById("allclasses_navbar_bottom");
+  if(window==top) {
+    allClassesLink.style.display = "block";
+  }
+  else {
+    allClassesLink.style.display = "none";
+  }
+  //-->
+</script>
+</div>
+<div>
+<ul class="subNavList">
+<li>Summary:&nbsp;</li>
+<li>Nested&nbsp;|&nbsp;</li>
+<li>Field&nbsp;|&nbsp;</li>
+<li>Constr&nbsp;|&nbsp;</li>
+<li><a href="#method.summary">Method</a></li>
+</ul>
+<ul class="subNavList">
+<li>Detail:&nbsp;</li>
+<li>Field&nbsp;|&nbsp;</li>
+<li>Constr&nbsp;|&nbsp;</li>
+<li><a href="#method.detail">Method</a></li>
+</ul>
+</div>
+<a name="skip.navbar.bottom">
+<!--   -->
+</a></div>
+<!-- ======== END OF BOTTOM NAVBAR ======= -->
+<p class="legalCopy"><small>Copyright &#169; 2007&#x2013;2017 <a href="https://www.apache.org/">The Apache Software Foundation</a>. All rights reserved.</small></p>
+</body>
+</html>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/c54c242b/apidocs/org/apache/hadoop/hbase/CellUtil.html
----------------------------------------------------------------------
diff --git a/apidocs/org/apache/hadoop/hbase/CellUtil.html b/apidocs/org/apache/hadoop/hbase/CellUtil.html
index 6071cb8..b078c1f 100644
--- a/apidocs/org/apache/hadoop/hbase/CellUtil.html
+++ b/apidocs/org/apache/hadoop/hbase/CellUtil.html
@@ -49,7 +49,7 @@ var activeTableTab = "activeTableTab";
 </div>
 <div class="subNav">
 <ul class="navList">
-<li><a href="../../../../org/apache/hadoop/hbase/CellComparator.html" title="interface in org.apache.hadoop.hbase"><span class="typeNameLink">Prev&nbsp;Class</span></a></li>
+<li><a href="../../../../org/apache/hadoop/hbase/CellScanner.html" title="interface in org.apache.hadoop.hbase"><span class="typeNameLink">Prev&nbsp;Class</span></a></li>
 <li><a href="../../../../org/apache/hadoop/hbase/ChoreService.html" title="class in org.apache.hadoop.hbase"><span class="typeNameLink">Next&nbsp;Class</span></a></li>
 </ul>
 <ul class="navList">
@@ -384,23 +384,23 @@ extends <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?
 </td>
 </tr>
 <tr id="i28" class="altColor">
-<td class="colFirst"><code>static org.apache.hadoop.hbase.CellScanner</code></td>
+<td class="colFirst"><code>static <a href="../../../../org/apache/hadoop/hbase/CellScanner.html" title="interface in org.apache.hadoop.hbase">CellScanner</a></code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/hadoop/hbase/CellUtil.html#createCellScanner-org.apache.hadoop.hbase.Cell:A-">createCellScanner</a></span>(<a href="../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>[]&nbsp;cellArray)</code>&nbsp;</td>
 </tr>
 <tr id="i29" class="rowColor">
-<td class="colFirst"><code>static org.apache.hadoop.hbase.CellScanner</code></td>
+<td class="colFirst"><code>static <a href="../../../../org/apache/hadoop/hbase/CellScanner.html" title="interface in org.apache.hadoop.hbase">CellScanner</a></code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/hadoop/hbase/CellUtil.html#createCellScanner-java.lang.Iterable-">createCellScanner</a></span>(<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Iterable.html?is-external=true" title="class or interface in java.lang">Iterable</a>&lt;<a href="../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&gt;&nbsp;cellIterable)</code>&nbsp;</td>
 </tr>
 <tr id="i30" class="altColor">
-<td class="colFirst"><code>static org.apache.hadoop.hbase.CellScanner</code></td>
+<td class="colFirst"><code>static <a href="../../../../org/apache/hadoop/hbase/CellScanner.html" title="interface in org.apache.hadoop.hbase">CellScanner</a></code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/hadoop/hbase/CellUtil.html#createCellScanner-java.util.Iterator-">createCellScanner</a></span>(<a href="http://docs.oracle.com/javase/8/docs/api/java/util/Iterator.html?is-external=true" title="class or interface in java.util">Iterator</a>&lt;<a href="../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&gt;&nbsp;cells)</code>&nbsp;</td>
 </tr>
 <tr id="i31" class="rowColor">
-<td class="colFirst"><code>static org.apache.hadoop.hbase.CellScanner</code></td>
-<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/hadoop/hbase/CellUtil.html#createCellScanner-java.util.List-">createCellScanner</a></span>(<a href="http://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;? extends org.apache.hadoop.hbase.CellScannable&gt;&nbsp;cellScannerables)</code>&nbsp;</td>
+<td class="colFirst"><code>static <a href="../../../../org/apache/hadoop/hbase/CellScanner.html" title="interface in org.apache.hadoop.hbase">CellScanner</a></code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/hadoop/hbase/CellUtil.html#createCellScanner-java.util.List-">createCellScanner</a></span>(<a href="http://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;? extends <a href="../../../../org/apache/hadoop/hbase/CellScannable.html" title="interface in org.apache.hadoop.hbase">CellScannable</a>&gt;&nbsp;cellScannerables)</code>&nbsp;</td>
 </tr>
 <tr id="i32" class="altColor">
-<td class="colFirst"><code>static org.apache.hadoop.hbase.CellScanner</code></td>
+<td class="colFirst"><code>static <a href="../../../../org/apache/hadoop/hbase/CellScanner.html" title="interface in org.apache.hadoop.hbase">CellScanner</a></code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/hadoop/hbase/CellUtil.html#createCellScanner-java.util.NavigableMap-">createCellScanner</a></span>(<a href="http://docs.oracle.com/javase/8/docs/api/java/util/NavigableMap.html?is-external=true" title="class or interface in java.util">NavigableMap</a>&lt;byte[],<a href="http://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&gt;&gt;&nbsp;map)</code>
 <div class="block">Flatten the map of cells out under the CellScanner</div>
 </td>
@@ -1504,7 +1504,7 @@ public static&nbsp;<a href="../../../../org/apache/hadoop/hbase/Cell.html" title
 <ul class="blockList">
 <li class="blockList">
 <h4>createCellScanner</h4>
-<pre>public static&nbsp;org.apache.hadoop.hbase.CellScanner&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/CellUtil.html#line.606">createCellScanner</a>(<a href="http://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;? extends org.apache.hadoop.hbase.CellScannable&gt;&nbsp;cellScannerables)</pre>
+<pre>public static&nbsp;<a href="../../../../org/apache/hadoop/hbase/CellScanner.html" title="interface in org.apache.hadoop.hbase">CellScanner</a>&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/CellUtil.html#line.606">createCellScanner</a>(<a href="http://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;? extends <a href="../../../../org/apache/hadoop/hbase/CellScannable.html" title="interface in org.apache.hadoop.hbase">CellScannable</a>&gt;&nbsp;cellScannerables)</pre>
 <dl>
 <dt><span class="paramLabel">Parameters:</span></dt>
 <dd><code>cellScannerables</code> - </dd>
@@ -1519,7 +1519,7 @@ public static&nbsp;<a href="../../../../org/apache/hadoop/hbase/Cell.html" title
 <ul class="blockList">
 <li class="blockList">
 <h4>createCellScanner</h4>
-<pre>public static&nbsp;org.apache.hadoop.hbase.CellScanner&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/CellUtil.html#line.635">createCellScanner</a>(<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Iterable.html?is-external=true" title="class or interface in java.lang">Iterable</a>&lt;<a href="../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&gt;&nbsp;cellIterable)</pre>
+<pre>public static&nbsp;<a href="../../../../org/apache/hadoop/hbase/CellScanner.html" title="interface in org.apache.hadoop.hbase">CellScanner</a>&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/CellUtil.html#line.635">createCellScanner</a>(<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Iterable.html?is-external=true" title="class or interface in java.lang">Iterable</a>&lt;<a href="../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&gt;&nbsp;cellIterable)</pre>
 <dl>
 <dt><span class="paramLabel">Parameters:</span></dt>
 <dd><code>cellIterable</code> - </dd>
@@ -1534,7 +1534,7 @@ public static&nbsp;<a href="../../../../org/apache/hadoop/hbase/Cell.html" title
 <ul class="blockList">
 <li class="blockList">
 <h4>createCellScanner</h4>
-<pre>public static&nbsp;org.apache.hadoop.hbase.CellScanner&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/CellUtil.html#line.645">createCellScanner</a>(<a href="http://docs.oracle.com/javase/8/docs/api/java/util/Iterator.html?is-external=true" title="class or interface in java.util">Iterator</a>&lt;<a href="../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&gt;&nbsp;cells)</pre>
+<pre>public static&nbsp;<a href="../../../../org/apache/hadoop/hbase/CellScanner.html" title="interface in org.apache.hadoop.hbase">CellScanner</a>&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/CellUtil.html#line.645">createCellScanner</a>(<a href="http://docs.oracle.com/javase/8/docs/api/java/util/Iterator.html?is-external=true" title="class or interface in java.util">Iterator</a>&lt;<a href="../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&gt;&nbsp;cells)</pre>
 <dl>
 <dt><span class="paramLabel">Parameters:</span></dt>
 <dd><code>cells</code> - </dd>
@@ -1550,7 +1550,7 @@ public static&nbsp;<a href="../../../../org/apache/hadoop/hbase/Cell.html" title
 <ul class="blockList">
 <li class="blockList">
 <h4>createCellScanner</h4>
-<pre>public static&nbsp;org.apache.hadoop.hbase.CellScanner&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/CellUtil.html#line.669">createCellScanner</a>(<a href="../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>[]&nbsp;cellArray)</pre>
+<pre>public static&nbsp;<a href="../../../../org/apache/hadoop/hbase/CellScanner.html" title="interface in org.apache.hadoop.hbase">CellScanner</a>&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/CellUtil.html#line.669">createCellScanner</a>(<a href="../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>[]&nbsp;cellArray)</pre>
 <dl>
 <dt><span class="paramLabel">Parameters:</span></dt>
 <dd><code>cellArray</code> - </dd>
@@ -1565,7 +1565,7 @@ public static&nbsp;<a href="../../../../org/apache/hadoop/hbase/Cell.html" title
 <ul class="blockList">
 <li class="blockList">
 <h4>createCellScanner</h4>
-<pre>public static&nbsp;org.apache.hadoop.hbase.CellScanner&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/CellUtil.html#line.694">createCellScanner</a>(<a href="http://docs.oracle.com/javase/8/docs/api/java/util/NavigableMap.html?is-external=true" title="class or interface in java.util">NavigableMap</a>&lt;byte[],<a href="http://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&gt;&gt;&nbsp;map)</pre>
+<pre>public static&nbsp;<a href="../../../../org/apache/hadoop/hbase/CellScanner.html" title="interface in org.apache.hadoop.hbase">CellScanner</a>&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/CellUtil.html#line.694">createCellScanner</a>(<a href="http://docs.oracle.com/javase/8/docs/api/java/util/NavigableMap.html?is-external=true" title="class or interface in java.util">NavigableMap</a>&lt;byte[],<a href="http://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&gt;&gt;&nbsp;map)</pre>
 <div class="block">Flatten the map of cells out under the CellScanner</div>
 <dl>
 <dt><span class="paramLabel">Parameters:</span></dt>
@@ -2551,7 +2551,7 @@ public static final&nbsp;int&nbsp;<a href="../../../../src-html/org/apache/hadoo
 </div>
 <div class="subNav">
 <ul class="navList">
-<li><a href="../../../../org/apache/hadoop/hbase/CellComparator.html" title="interface in org.apache.hadoop.hbase"><span class="typeNameLink">Prev&nbsp;Class</span></a></li>
+<li><a href="../../../../org/apache/hadoop/hbase/CellScanner.html" title="interface in org.apache.hadoop.hbase"><span class="typeNameLink">Prev&nbsp;Class</span></a></li>
 <li><a href="../../../../org/apache/hadoop/hbase/ChoreService.html" title="class in org.apache.hadoop.hbase"><span class="typeNameLink">Next&nbsp;Class</span></a></li>
 </ul>
 <ul class="navList">

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/c54c242b/apidocs/org/apache/hadoop/hbase/class-use/Cell.html
----------------------------------------------------------------------
diff --git a/apidocs/org/apache/hadoop/hbase/class-use/Cell.html b/apidocs/org/apache/hadoop/hbase/class-use/Cell.html
index e41dd2b..5fbfece 100644
--- a/apidocs/org/apache/hadoop/hbase/class-use/Cell.html
+++ b/apidocs/org/apache/hadoop/hbase/class-use/Cell.html
@@ -268,6 +268,10 @@ Input/OutputFormats, a table indexing MapReduce job, and utility methods.</div>
 </div>
 </td>
 </tr>
+<tr class="altColor">
+<td class="colFirst"><code><a href="../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a></code></td>
+<td class="colLast"><span class="typeNameLabel">CellScanner.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/CellScanner.html#current--">current</a></span>()</code>&nbsp;</td>
+</tr>
 </tbody>
 </table>
 <table class="useSummary" border="0" cellpadding="3" cellspacing="0" summary="Use table, listing methods, and an explanation">
@@ -519,7 +523,7 @@ Input/OutputFormats, a table indexing MapReduce job, and utility methods.</div>
 </td>
 </tr>
 <tr class="altColor">
-<td class="colFirst"><code>static org.apache.hadoop.hbase.CellScanner</code></td>
+<td class="colFirst"><code>static <a href="../../../../../org/apache/hadoop/hbase/CellScanner.html" title="interface in org.apache.hadoop.hbase">CellScanner</a></code></td>
 <td class="colLast"><span class="typeNameLabel">CellUtil.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/CellUtil.html#createCellScanner-org.apache.hadoop.hbase.Cell:A-">createCellScanner</a></span>(<a href="../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>[]&nbsp;cellArray)</code>&nbsp;</td>
 </tr>
 <tr class="rowColor">
@@ -994,15 +998,15 @@ Input/OutputFormats, a table indexing MapReduce job, and utility methods.</div>
 </tr>
 <tbody>
 <tr class="altColor">
-<td class="colFirst"><code>static org.apache.hadoop.hbase.CellScanner</code></td>
+<td class="colFirst"><code>static <a href="../../../../../org/apache/hadoop/hbase/CellScanner.html" title="interface in org.apache.hadoop.hbase">CellScanner</a></code></td>
 <td class="colLast"><span class="typeNameLabel">CellUtil.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/CellUtil.html#createCellScanner-java.lang.Iterable-">createCellScanner</a></span>(<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Iterable.html?is-external=true" title="class or interface in java.lang">Iterable</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&gt;&nbsp;cellIterable)</code>&nbsp;</td>
 </tr>
 <tr class="rowColor">
-<td class="colFirst"><code>static org.apache.hadoop.hbase.CellScanner</code></td>
+<td class="colFirst"><code>static <a href="../../../../../org/apache/hadoop/hbase/CellScanner.html" title="interface in org.apache.hadoop.hbase">CellScanner</a></code></td>
 <td class="colLast"><span class="typeNameLabel">CellUtil.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/CellUtil.html#createCellScanner-java.util.Iterator-">createCellScanner</a></span>(<a href="http://docs.oracle.com/javase/8/docs/api/java/util/Iterator.html?is-external=true" title="class or interface in java.util">Iterator</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&gt;&nbsp;cells)</code>&nbsp;</td>
 </tr>
 <tr class="altColor">
-<td class="colFirst"><code>static org.apache.hadoop.hbase.CellScanner</code></td>
+<td class="colFirst"><code>static <a href="../../../../../org/apache/hadoop/hbase/CellScanner.html" title="interface in org.apache.hadoop.hbase">CellScanner</a></code></td>
 <td class="colLast"><span class="typeNameLabel">CellUtil.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/CellUtil.html#createCellScanner-java.util.NavigableMap-">createCellScanner</a></span>(<a href="http://docs.oracle.com/javase/8/docs/api/java/util/NavigableMap.html?is-external=true" title="class or interface in java.util">NavigableMap</a>&lt;byte[],<a href="http://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&gt;&gt;&nbsp;map)</code>
 <div class="block">Flatten the map of cells out under the CellScanner</div>
 </td>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/c54c242b/apidocs/org/apache/hadoop/hbase/class-use/CellScannable.html
----------------------------------------------------------------------
diff --git a/apidocs/org/apache/hadoop/hbase/class-use/CellScannable.html b/apidocs/org/apache/hadoop/hbase/class-use/CellScannable.html
new file mode 100644
index 0000000..48f2f4a
--- /dev/null
+++ b/apidocs/org/apache/hadoop/hbase/class-use/CellScannable.html
@@ -0,0 +1,219 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<!-- NewPage -->
+<html lang="en">
+<head>
+<!-- Generated by javadoc -->
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title>Uses of Interface org.apache.hadoop.hbase.CellScannable (Apache HBase 3.0.0-SNAPSHOT API)</title>
+<link rel="stylesheet" type="text/css" href="../../../../../stylesheet.css" title="Style">
+<script type="text/javascript" src="../../../../../script.js"></script>
+</head>
+<body>
+<script type="text/javascript"><!--
+    try {
+        if (location.href.indexOf('is-external=true') == -1) {
+            parent.document.title="Uses of Interface org.apache.hadoop.hbase.CellScannable (Apache HBase 3.0.0-SNAPSHOT API)";
+        }
+    }
+    catch(err) {
+    }
+//-->
+</script>
+<noscript>
+<div>JavaScript is disabled on your browser.</div>
+</noscript>
+<!-- ========= START OF TOP NAVBAR ======= -->
+<div class="topNav"><a name="navbar.top">
+<!--   -->
+</a>
+<div class="skipNav"><a href="#skip.navbar.top" title="Skip navigation links">Skip navigation links</a></div>
+<a name="navbar.top.firstrow">
+<!--   -->
+</a>
+<ul class="navList" title="Navigation">
+<li><a href="../../../../../overview-summary.html">Overview</a></li>
+<li><a href="../package-summary.html">Package</a></li>
+<li><a href="../../../../../org/apache/hadoop/hbase/CellScannable.html" title="interface in org.apache.hadoop.hbase">Class</a></li>
+<li class="navBarCell1Rev">Use</li>
+<li><a href="../package-tree.html">Tree</a></li>
+<li><a href="../../../../../deprecated-list.html">Deprecated</a></li>
+<li><a href="../../../../../index-all.html">Index</a></li>
+<li><a href="../../../../../help-doc.html">Help</a></li>
+</ul>
+</div>
+<div class="subNav">
+<ul class="navList">
+<li>Prev</li>
+<li>Next</li>
+</ul>
+<ul class="navList">
+<li><a href="../../../../../index.html?org/apache/hadoop/hbase/class-use/CellScannable.html" target="_top">Frames</a></li>
+<li><a href="CellScannable.html" target="_top">No&nbsp;Frames</a></li>
+</ul>
+<ul class="navList" id="allclasses_navbar_top">
+<li><a href="../../../../../allclasses-noframe.html">All&nbsp;Classes</a></li>
+</ul>
+<div>
+<script type="text/javascript"><!--
+  allClassesLink = document.getElementById("allclasses_navbar_top");
+  if(window==top) {
+    allClassesLink.style.display = "block";
+  }
+  else {
+    allClassesLink.style.display = "none";
+  }
+  //-->
+</script>
+</div>
+<a name="skip.navbar.top">
+<!--   -->
+</a></div>
+<!-- ========= END OF TOP NAVBAR ========= -->
+<div class="header">
+<h2 title="Uses of Interface org.apache.hadoop.hbase.CellScannable" class="title">Uses of Interface<br>org.apache.hadoop.hbase.CellScannable</h2>
+</div>
+<div class="classUseContainer">
+<ul class="blockList">
+<li class="blockList">
+<table class="useSummary" border="0" cellpadding="3" cellspacing="0" summary="Use table, listing packages, and an explanation">
+<caption><span>Packages that use <a href="../../../../../org/apache/hadoop/hbase/CellScannable.html" title="interface in org.apache.hadoop.hbase">CellScannable</a></span><span class="tabEnd">&nbsp;</span></caption>
+<tr>
+<th class="colFirst" scope="col">Package</th>
+<th class="colLast" scope="col">Description</th>
+</tr>
+<tbody>
+<tr class="altColor">
+<td class="colFirst"><a href="#org.apache.hadoop.hbase">org.apache.hadoop.hbase</a></td>
+<td class="colLast">&nbsp;</td>
+</tr>
+<tr class="rowColor">
+<td class="colFirst"><a href="#org.apache.hadoop.hbase.client">org.apache.hadoop.hbase.client</a></td>
+<td class="colLast">
+<div class="block">Provides HBase Client</div>
+</td>
+</tr>
+</tbody>
+</table>
+</li>
+<li class="blockList">
+<ul class="blockList">
+<li class="blockList"><a name="org.apache.hadoop.hbase">
+<!--   -->
+</a>
+<h3>Uses of <a href="../../../../../org/apache/hadoop/hbase/CellScannable.html" title="interface in org.apache.hadoop.hbase">CellScannable</a> in <a href="../../../../../org/apache/hadoop/hbase/package-summary.html">org.apache.hadoop.hbase</a></h3>
+<table class="useSummary" border="0" cellpadding="3" cellspacing="0" summary="Use table, listing methods, and an explanation">
+<caption><span>Method parameters in <a href="../../../../../org/apache/hadoop/hbase/package-summary.html">org.apache.hadoop.hbase</a> with type arguments of type <a href="../../../../../org/apache/hadoop/hbase/CellScannable.html" title="interface in org.apache.hadoop.hbase">CellScannable</a></span><span class="tabEnd">&nbsp;</span></caption>
+<tr>
+<th class="colFirst" scope="col">Modifier and Type</th>
+<th class="colLast" scope="col">Method and Description</th>
+</tr>
+<tbody>
+<tr class="altColor">
+<td class="colFirst"><code>static <a href="../../../../../org/apache/hadoop/hbase/CellScanner.html" title="interface in org.apache.hadoop.hbase">CellScanner</a></code></td>
+<td class="colLast"><span class="typeNameLabel">CellUtil.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/CellUtil.html#createCellScanner-java.util.List-">createCellScanner</a></span>(<a href="http://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;? extends <a href="../../../../../org/apache/hadoop/hbase/CellScannable.html" title="interface in org.apache.hadoop.hbase">CellScannable</a>&gt;&nbsp;cellScannerables)</code>&nbsp;</td>
+</tr>
+</tbody>
+</table>
+</li>
+<li class="blockList"><a name="org.apache.hadoop.hbase.client">
+<!--   -->
+</a>
+<h3>Uses of <a href="../../../../../org/apache/hadoop/hbase/CellScannable.html" title="interface in org.apache.hadoop.hbase">CellScannable</a> in <a href="../../../../../org/apache/hadoop/hbase/client/package-summary.html">org.apache.hadoop.hbase.client</a></h3>
+<table class="useSummary" border="0" cellpadding="3" cellspacing="0" summary="Use table, listing classes, and an explanation">
+<caption><span>Classes in <a href="../../../../../org/apache/hadoop/hbase/client/package-summary.html">org.apache.hadoop.hbase.client</a> that implement <a href="../../../../../org/apache/hadoop/hbase/CellScannable.html" title="interface in org.apache.hadoop.hbase">CellScannable</a></span><span class="tabEnd">&nbsp;</span></caption>
+<tr>
+<th class="colFirst" scope="col">Modifier and Type</th>
+<th class="colLast" scope="col">Class and Description</th>
+</tr>
+<tbody>
+<tr class="altColor">
+<td class="colFirst"><code>class&nbsp;</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/client/Append.html" title="class in org.apache.hadoop.hbase.client">Append</a></span></code>
+<div class="block">Performs Append operations on a single row.</div>
+</td>
+</tr>
+<tr class="rowColor">
+<td class="colFirst"><code>class&nbsp;</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/client/Delete.html" title="class in org.apache.hadoop.hbase.client">Delete</a></span></code>
+<div class="block">Used to perform Delete operations on a single row.</div>
+</td>
+</tr>
+<tr class="altColor">
+<td class="colFirst"><code>class&nbsp;</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/client/Increment.html" title="class in org.apache.hadoop.hbase.client">Increment</a></span></code>
+<div class="block">Used to perform Increment operations on a single row.</div>
+</td>
+</tr>
+<tr class="rowColor">
+<td class="colFirst"><code>class&nbsp;</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/client/Mutation.html" title="class in org.apache.hadoop.hbase.client">Mutation</a></span></code>&nbsp;</td>
+</tr>
+<tr class="altColor">
+<td class="colFirst"><code>class&nbsp;</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/client/Put.html" title="class in org.apache.hadoop.hbase.client">Put</a></span></code>
+<div class="block">Used to perform Put operations for a single row.</div>
+</td>
+</tr>
+<tr class="rowColor">
+<td class="colFirst"><code>class&nbsp;</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/client/Result.html" title="class in org.apache.hadoop.hbase.client">Result</a></span></code>
+<div class="block">Single row result of a <a href="../../../../../org/apache/hadoop/hbase/client/Get.html" title="class in org.apache.hadoop.hbase.client"><code>Get</code></a> or <a href="../../../../../org/apache/hadoop/hbase/client/Scan.html" title="class in org.apache.hadoop.hbase.client"><code>Scan</code></a> query.</div>
+</td>
+</tr>
+</tbody>
+</table>
+</li>
+</ul>
+</li>
+</ul>
+</div>
+<!-- ======= START OF BOTTOM NAVBAR ====== -->
+<div class="bottomNav"><a name="navbar.bottom">
+<!--   -->
+</a>
+<div class="skipNav"><a href="#skip.navbar.bottom" title="Skip navigation links">Skip navigation links</a></div>
+<a name="navbar.bottom.firstrow">
+<!--   -->
+</a>
+<ul class="navList" title="Navigation">
+<li><a href="../../../../../overview-summary.html">Overview</a></li>
+<li><a href="../package-summary.html">Package</a></li>
+<li><a href="../../../../../org/apache/hadoop/hbase/CellScannable.html" title="interface in org.apache.hadoop.hbase">Class</a></li>
+<li class="navBarCell1Rev">Use</li>
+<li><a href="../package-tree.html">Tree</a></li>
+<li><a href="../../../../../deprecated-list.html">Deprecated</a></li>
+<li><a href="../../../../../index-all.html">Index</a></li>
+<li><a href="../../../../../help-doc.html">Help</a></li>
+</ul>
+</div>
+<div class="subNav">
+<ul class="navList">
+<li>Prev</li>
+<li>Next</li>
+</ul>
+<ul class="navList">
+<li><a href="../../../../../index.html?org/apache/hadoop/hbase/class-use/CellScannable.html" target="_top">Frames</a></li>
+<li><a href="CellScannable.html" target="_top">No&nbsp;Frames</a></li>
+</ul>
+<ul class="navList" id="allclasses_navbar_bottom">
+<li><a href="../../../../../allclasses-noframe.html">All&nbsp;Classes</a></li>
+</ul>
+<div>
+<script type="text/javascript"><!--
+  allClassesLink = document.getElementById("allclasses_navbar_bottom");
+  if(window==top) {
+    allClassesLink.style.display = "block";
+  }
+  else {
+    allClassesLink.style.display = "none";
+  }
+  //-->
+</script>
+</div>
+<a name="skip.navbar.bottom">
+<!--   -->
+</a></div>
+<!-- ======== END OF BOTTOM NAVBAR ======= -->
+<p class="legalCopy"><small>Copyright &#169; 2007&#x2013;2017 <a href="https://www.apache.org/">The Apache Software Foundation</a>. All rights reserved.</small></p>
+</body>
+</html>


[06/51] [partial] hbase-site git commit: Published site at .

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/c54c242b/hbase-build-configuration/hbase-spark/dependencies.html
----------------------------------------------------------------------
diff --git a/hbase-build-configuration/hbase-spark/dependencies.html b/hbase-build-configuration/hbase-spark/dependencies.html
index 881ad81..778fc67 100644
--- a/hbase-build-configuration/hbase-spark/dependencies.html
+++ b/hbase-build-configuration/hbase-spark/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="20171202" />
+    <meta name="Date-Revision-yyyymmdd" content="20171203" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase - Spark &#x2013; Project Dependencies</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -1760,8 +1760,18 @@
 <td>
 <p><b>Description: </b>All of the recipes listed on the ZooKeeper recipes doc (except two phase commit).</p>
 <p><b>URL: </b><a class="externalLink" href="http://curator.apache.org/curator-recipes">http://curator.apache.org/curator-recipes</a></p>
-<p><b>Project Licenses: </b><a class="externalLink" href="http://www.apache.org/licenses/LICENSE-2.0.txt">The Apache Software License, Version 2.0</a></p></td></tr></table></div></li>
-<li>org.eclipse.jetty.orbit:javax.servlet:jar:3.0.0.v201112011016 (provided) <img id="_img43" src="./images/icon_info_sml.gif" alt="[Information]" onclick="toggleDependencyDetails( '_dep42', '_img43' );" style="cursor: pointer; vertical-align: text-bottom;"></img><div id="_dep42" style="display:none">
+<p><b>Project Licenses: </b><a class="externalLink" href="http://www.apache.org/licenses/LICENSE-2.0.txt">The Apache Software License, Version 2.0</a></p></td></tr></table></div>
+<ul>
+<li>org.apache.curator:curator-framework:jar:4.0.0 (compile) <img id="_img43" src="./images/icon_info_sml.gif" alt="[Information]" onclick="toggleDependencyDetails( '_dep42', '_img43' );" style="cursor: pointer; vertical-align: text-bottom;"></img><div id="_dep42" style="display:none">
+<table border="0" class="table table-striped">
+<tr class="a">
+<th>Curator Framework</th></tr>
+<tr class="b">
+<td>
+<p><b>Description: </b>High-level API that greatly simplifies using ZooKeeper.</p>
+<p><b>URL: </b><a class="externalLink" href="http://curator.apache.org/curator-framework">http://curator.apache.org/curator-framework</a></p>
+<p><b>Project Licenses: </b><a class="externalLink" href="http://www.apache.org/licenses/LICENSE-2.0.txt">The Apache Software License, Version 2.0</a></p></td></tr></table></div></li></ul></li>
+<li>org.eclipse.jetty.orbit:javax.servlet:jar:3.0.0.v201112011016 (provided) <img id="_img45" src="./images/icon_info_sml.gif" alt="[Information]" onclick="toggleDependencyDetails( '_dep44', '_img45' );" style="cursor: pointer; vertical-align: text-bottom;"></img><div id="_dep44" style="display:none">
 <table border="0" class="table table-striped">
 <tr class="a">
 <th>Jetty Orbit :: Servlet API</th></tr>
@@ -1771,7 +1781,7 @@
     it is an osgi bundle and is signed as well.</p>
 <p><b>URL: </b><a class="externalLink" href="http://www.eclipse.org/jetty/jetty-orbit/javax.servlet">http://www.eclipse.org/jetty/jetty-orbit/javax.servlet</a></p>
 <p><b>Project Licenses: </b><a class="externalLink" href="http://www.apache.org/licenses/LICENSE-2.0">Apache Software License - Version 2.0</a>, <a class="externalLink" href="http://www.eclipse.org/org/documents/epl-v10.php">Eclipse Public License - Version 1.0</a></p></td></tr></table></div></li>
-<li>org.apache.commons:commons-lang3:jar:3.6 (compile) <img id="_img45" src="./images/icon_info_sml.gif" alt="[Information]" onclick="toggleDependencyDetails( '_dep44', '_img45' );" style="cursor: pointer; vertical-align: text-bottom;"></img><div id="_dep44" style="display:none">
+<li>org.apache.commons:commons-lang3:jar:3.6 (compile) <img id="_img47" src="./images/icon_info_sml.gif" alt="[Information]" onclick="toggleDependencyDetails( '_dep46', '_img47' );" style="cursor: pointer; vertical-align: text-bottom;"></img><div id="_dep46" style="display:none">
 <table border="0" class="table table-striped">
 <tr class="a">
 <th>Apache Commons Lang</th></tr>
@@ -1782,7 +1792,7 @@
   standard as to justify existence in java.lang.</p>
 <p><b>URL: </b><a class="externalLink" href="http://commons.apache.org/proper/commons-lang/">http://commons.apache.org/proper/commons-lang/</a></p>
 <p><b>Project Licenses: </b><a class="externalLink" href="https://www.apache.org/licenses/LICENSE-2.0.txt">Apache License, Version 2.0</a></p></td></tr></table></div></li>
-<li>org.apache.commons:commons-math3:jar:3.6.1 (compile) <img id="_img47" src="./images/icon_info_sml.gif" alt="[Information]" onclick="toggleDependencyDetails( '_dep46', '_img47' );" style="cursor: pointer; vertical-align: text-bottom;"></img><div id="_dep46" style="display:none">
+<li>org.apache.commons:commons-math3:jar:3.6.1 (compile) <img id="_img49" src="./images/icon_info_sml.gif" alt="[Information]" onclick="toggleDependencyDetails( '_dep48', '_img49' );" style="cursor: pointer; vertical-align: text-bottom;"></img><div id="_dep48" style="display:none">
 <table border="0" class="table table-striped">
 <tr class="a">
 <th>Apache Commons Math</th></tr>
@@ -1791,7 +1801,7 @@
 <p><b>Description: </b>The Apache Commons Math project is a library of lightweight, self-contained mathematics and statistics components addressing the most common practical problems not immediately available in the Java programming language or commons-lang.</p>
 <p><b>URL: </b><a class="externalLink" href="http://commons.apache.org/proper/commons-math/">http://commons.apache.org/proper/commons-math/</a></p>
 <p><b>Project Licenses: </b><a class="externalLink" href="http://www.apache.org/licenses/LICENSE-2.0.txt">Apache License, Version 2.0</a></p></td></tr></table></div></li>
-<li>org.slf4j:slf4j-api:jar:1.7.24 (compile) <img id="_img49" src="./images/icon_info_sml.gif" alt="[Information]" onclick="toggleDependencyDetails( '_dep48', '_img49' );" style="cursor: pointer; vertical-align: text-bottom;"></img><div id="_dep48" style="display:none">
+<li>org.slf4j:slf4j-api:jar:1.7.24 (compile) <img id="_img51" src="./images/icon_info_sml.gif" alt="[Information]" onclick="toggleDependencyDetails( '_dep50', '_img51' );" style="cursor: pointer; vertical-align: text-bottom;"></img><div id="_dep50" style="display:none">
 <table border="0" class="table table-striped">
 <tr class="a">
 <th>SLF4J API Module</th></tr>
@@ -1800,7 +1810,7 @@
 <p><b>Description: </b>The slf4j API</p>
 <p><b>URL: </b><a class="externalLink" href="http://www.slf4j.org">http://www.slf4j.org</a></p>
 <p><b>Project Licenses: </b><a class="externalLink" href="http://www.opensource.org/licenses/mit-license.php">MIT License</a></p></td></tr></table></div></li>
-<li>org.slf4j:jul-to-slf4j:jar:1.7.10 (provided) <img id="_img51" src="./images/icon_info_sml.gif" alt="[Information]" onclick="toggleDependencyDetails( '_dep50', '_img51' );" style="cursor: pointer; vertical-align: text-bottom;"></img><div id="_dep50" style="display:none">
+<li>org.slf4j:jul-to-slf4j:jar:1.7.10 (provided) <img id="_img53" src="./images/icon_info_sml.gif" alt="[Information]" onclick="toggleDependencyDetails( '_dep52', '_img53' );" style="cursor: pointer; vertical-align: text-bottom;"></img><div id="_dep52" style="display:none">
 <table border="0" class="table table-striped">
 <tr class="a">
 <th>JUL to SLF4J bridge</th></tr>
@@ -1809,7 +1819,7 @@
 <p><b>Description: </b>JUL to SLF4J bridge</p>
 <p><b>URL: </b><a class="externalLink" href="http://www.slf4j.org">http://www.slf4j.org</a></p>
 <p><b>Project Licenses: </b><a class="externalLink" href="http://www.opensource.org/licenses/mit-license.php">MIT License</a></p></td></tr></table></div></li>
-<li>org.slf4j:jcl-over-slf4j:jar:1.7.10 (provided) <img id="_img53" src="./images/icon_info_sml.gif" alt="[Information]" onclick="toggleDependencyDetails( '_dep52', '_img53' );" style="cursor: pointer; vertical-align: text-bottom;"></img><div id="_dep52" style="display:none">
+<li>org.slf4j:jcl-over-slf4j:jar:1.7.10 (provided) <img id="_img55" src="./images/icon_info_sml.gif" alt="[Information]" onclick="toggleDependencyDetails( '_dep54', '_img55' );" style="cursor: pointer; vertical-align: text-bottom;"></img><div id="_dep54" style="display:none">
 <table border="0" class="table table-striped">
 <tr class="a">
 <th>JCL 1.1.1 implemented over SLF4J</th></tr>
@@ -1818,7 +1828,7 @@
 <p><b>Description: </b>JCL 1.1.1 implemented over SLF4J</p>
 <p><b>URL: </b><a class="externalLink" href="http://www.slf4j.org">http://www.slf4j.org</a></p>
 <p><b>Project Licenses: </b><a class="externalLink" href="http://www.opensource.org/licenses/mit-license.php">MIT License</a></p></td></tr></table></div></li>
-<li>log4j:log4j:jar:1.2.17 (compile) <img id="_img55" src="./images/icon_info_sml.gif" alt="[Information]" onclick="toggleDependencyDetails( '_dep54', '_img55' );" style="cursor: pointer; vertical-align: text-bottom;"></img><div id="_dep54" style="display:none">
+<li>log4j:log4j:jar:1.2.17 (compile) <img id="_img57" src="./images/icon_info_sml.gif" alt="[Information]" onclick="toggleDependencyDetails( '_dep56', '_img57' );" style="cursor: pointer; vertical-align: text-bottom;"></img><div id="_dep56" style="display:none">
 <table border="0" class="table table-striped">
 <tr class="a">
 <th>Apache Log4j</th></tr>
@@ -1827,7 +1837,7 @@
 <p><b>Description: </b>Apache Log4j 1.2</p>
 <p><b>URL: </b><a class="externalLink" href="http://logging.apache.org/log4j/1.2/">http://logging.apache.org/log4j/1.2/</a></p>
 <p><b>Project Licenses: </b><a class="externalLink" href="http://www.apache.org/licenses/LICENSE-2.0.txt">The Apache Software License, Version 2.0</a></p></td></tr></table></div></li>
-<li>org.slf4j:slf4j-log4j12:jar:1.7.10 (compile) <img id="_img57" src="./images/icon_info_sml.gif" alt="[Information]" onclick="toggleDependencyDetails( '_dep56', '_img57' );" style="cursor: pointer; vertical-align: text-bottom;"></img><div id="_dep56" style="display:none">
+<li>org.slf4j:slf4j-log4j12:jar:1.7.10 (compile) <img id="_img59" src="./images/icon_info_sml.gif" alt="[Information]" onclick="toggleDependencyDetails( '_dep58', '_img59' );" style="cursor: pointer; vertical-align: text-bottom;"></img><div id="_dep58" style="display:none">
 <table border="0" class="table table-striped">
 <tr class="a">
 <th>SLF4J LOG4J-12 Binding</th></tr>
@@ -1836,7 +1846,7 @@
 <p><b>Description: </b>SLF4J LOG4J-12 Binding</p>
 <p><b>URL: </b><a class="externalLink" href="http://www.slf4j.org">http://www.slf4j.org</a></p>
 <p><b>Project Licenses: </b><a class="externalLink" href="http://www.opensource.org/licenses/mit-license.php">MIT License</a></p></td></tr></table></div></li>
-<li>com.ning:compress-lzf:jar:1.0.3 (provided) <img id="_img59" src="./images/icon_info_sml.gif" alt="[Information]" onclick="toggleDependencyDetails( '_dep58', '_img59' );" style="cursor: pointer; vertical-align: text-bottom;"></img><div id="_dep58" style="display:none">
+<li>com.ning:compress-lzf:jar:1.0.3 (provided) <img id="_img61" src="./images/icon_info_sml.gif" alt="[Information]" onclick="toggleDependencyDetails( '_dep60', '_img61' );" style="cursor: pointer; vertical-align: text-bottom;"></img><div id="_dep60" style="display:none">
 <table border="0" class="table table-striped">
 <tr class="a">
 <th>Compress-LZF</th></tr>
@@ -1847,7 +1857,7 @@ Compressor is basic Lempel-Ziv codec, without Huffman (deflate/gzip) or statisti
 See &quot;http://oldhome.schmorp.de/marc/liblzf.html&quot; for more on original LZF package.</p>
 <p><b>URL: </b><a class="externalLink" href="http://github.com/ning/compress">http://github.com/ning/compress</a></p>
 <p><b>Project Licenses: </b><a class="externalLink" href="http://www.apache.org/licenses/LICENSE-2.0.html">Apache License 2.0</a></p></td></tr></table></div></li>
-<li>org.xerial.snappy:snappy-java:jar:1.1.2 (compile) <img id="_img61" src="./images/icon_info_sml.gif" alt="[Information]" onclick="toggleDependencyDetails( '_dep60', '_img61' );" style="cursor: pointer; vertical-align: text-bottom;"></img><div id="_dep60" style="display:none">
+<li>org.xerial.snappy:snappy-java:jar:1.1.2 (compile) <img id="_img63" src="./images/icon_info_sml.gif" alt="[Information]" onclick="toggleDependencyDetails( '_dep62', '_img63' );" style="cursor: pointer; vertical-align: text-bottom;"></img><div id="_dep62" style="display:none">
 <table border="0" class="table table-striped">
 <tr class="a">
 <th>snappy-java</th></tr>
@@ -1856,7 +1866,7 @@ See &quot;http://oldhome.schmorp.de/marc/liblzf.html&quot; for more on original
 <p><b>Description: </b>snappy-java: A fast compression/decompression library</p>
 <p><b>URL: </b><a class="externalLink" href="https://github.com/xerial/snappy-java">https://github.com/xerial/snappy-java</a></p>
 <p><b>Project Licenses: </b><a class="externalLink" href="http://www.apache.org/licenses/LICENSE-2.0.txt">The Apache Software License, Version 2.0</a></p></td></tr></table></div></li>
-<li>net.jpountz.lz4:lz4:jar:1.3.0 (provided) <img id="_img63" src="./images/icon_info_sml.gif" alt="[Information]" onclick="toggleDependencyDetails( '_dep62', '_img63' );" style="cursor: pointer; vertical-align: text-bottom;"></img><div id="_dep62" style="display:none">
+<li>net.jpountz.lz4:lz4:jar:1.3.0 (provided) <img id="_img65" src="./images/icon_info_sml.gif" alt="[Information]" onclick="toggleDependencyDetails( '_dep64', '_img65' );" style="cursor: pointer; vertical-align: text-bottom;"></img><div id="_dep64" style="display:none">
 <table border="0" class="table table-striped">
 <tr class="a">
 <th>LZ4 and xxHash</th></tr>
@@ -1865,7 +1875,7 @@ See &quot;http://oldhome.schmorp.de/marc/liblzf.html&quot; for more on original
 <p><b>Description: </b>Java ports and bindings of the LZ4 compression algorithm and the xxHash hashing algorithm</p>
 <p><b>URL: </b><a class="externalLink" href="https://github.com/jpountz/lz4-java">https://github.com/jpountz/lz4-java</a></p>
 <p><b>Project Licenses: </b><a class="externalLink" href="http://www.apache.org/licenses/LICENSE-2.0.txt">The Apache Software License, Version 2.0</a></p></td></tr></table></div></li>
-<li>org.roaringbitmap:RoaringBitmap:jar:0.5.11 (provided) <img id="_img65" src="./images/icon_info_sml.gif" alt="[Information]" onclick="toggleDependencyDetails( '_dep64', '_img65' );" style="cursor: pointer; vertical-align: text-bottom;"></img><div id="_dep64" style="display:none">
+<li>org.roaringbitmap:RoaringBitmap:jar:0.5.11 (provided) <img id="_img67" src="./images/icon_info_sml.gif" alt="[Information]" onclick="toggleDependencyDetails( '_dep66', '_img67' );" style="cursor: pointer; vertical-align: text-bottom;"></img><div id="_dep66" style="display:none">
 <table border="0" class="table table-striped">
 <tr class="a">
 <th>RoaringBitmap</th></tr>
@@ -1875,7 +1885,7 @@ See &quot;http://oldhome.schmorp.de/marc/liblzf.html&quot; for more on original
      conventional compressed bitmaps such as WAH or Concise.</p>
 <p><b>URL: </b><a class="externalLink" href="https://github.com/lemire/RoaringBitmap">https://github.com/lemire/RoaringBitmap</a></p>
 <p><b>Project Licenses: </b><a class="externalLink" href="http://www.apache.org/licenses/LICENSE-2.0.txt">Apache 2</a></p></td></tr></table></div></li>
-<li>commons-net:commons-net:jar:2.2 (compile) <img id="_img67" src="./images/icon_info_sml.gif" alt="[Information]" onclick="toggleDependencyDetails( '_dep66', '_img67' );" style="cursor: pointer; vertical-align: text-bottom;"></img><div id="_dep66" style="display:none">
+<li>commons-net:commons-net:jar:2.2 (compile) <img id="_img69" src="./images/icon_info_sml.gif" alt="[Information]" onclick="toggleDependencyDetails( '_dep68', '_img69' );" style="cursor: pointer; vertical-align: text-bottom;"></img><div id="_dep68" style="display:none">
 <table border="0" class="table table-striped">
 <tr class="a">
 <th>Commons Net</th></tr>
@@ -1884,7 +1894,7 @@ See &quot;http://oldhome.schmorp.de/marc/liblzf.html&quot; for more on original
 <p><b>Description: </b>A collection of network utilities and protocol implementations.</p>
 <p><b>URL: </b><a class="externalLink" href="http://commons.apache.org/net/">http://commons.apache.org/net/</a></p>
 <p><b>Project Licenses: </b><a class="externalLink" href="http://www.apache.org/licenses/LICENSE-2.0.txt">The Apache Software License, Version 2.0</a></p></td></tr></table></div></li>
-<li>com.typesafe.akka:akka-remote_2.10:jar:2.3.11 (provided) <img id="_img69" src="./images/icon_info_sml.gif" alt="[Information]" onclick="toggleDependencyDetails( '_dep68', '_img69' );" style="cursor: pointer; vertical-align: text-bottom;"></img><div id="_dep68" style="display:none">
+<li>com.typesafe.akka:akka-remote_2.10:jar:2.3.11 (provided) <img id="_img71" src="./images/icon_info_sml.gif" alt="[Information]" onclick="toggleDependencyDetails( '_dep70', '_img71' );" style="cursor: pointer; vertical-align: text-bottom;"></img><div id="_dep70" style="display:none">
 <table border="0" class="table table-striped">
 <tr class="a">
 <th>akka-remote</th></tr>
@@ -1894,7 +1904,7 @@ See &quot;http://oldhome.schmorp.de/marc/liblzf.html&quot; for more on original
 <p><b>URL: </b><a class="externalLink" href="http://akka.io/">http://akka.io/</a></p>
 <p><b>Project Licenses: </b><a class="externalLink" href="http://www.apache.org/licenses/LICENSE-2.0">Apache License, Version 2.0</a></p></td></tr></table></div>
 <ul>
-<li>com.typesafe.akka:akka-actor_2.10:jar:2.3.11 (provided) <img id="_img71" src="./images/icon_info_sml.gif" alt="[Information]" onclick="toggleDependencyDetails( '_dep70', '_img71' );" style="cursor: pointer; vertical-align: text-bottom;"></img><div id="_dep70" style="display:none">
+<li>com.typesafe.akka:akka-actor_2.10:jar:2.3.11 (provided) <img id="_img73" src="./images/icon_info_sml.gif" alt="[Information]" onclick="toggleDependencyDetails( '_dep72', '_img73' );" style="cursor: pointer; vertical-align: text-bottom;"></img><div id="_dep72" style="display:none">
 <table border="0" class="table table-striped">
 <tr class="a">
 <th>akka-actor</th></tr>
@@ -1904,7 +1914,7 @@ See &quot;http://oldhome.schmorp.de/marc/liblzf.html&quot; for more on original
 <p><b>URL: </b><a class="externalLink" href="http://akka.io/">http://akka.io/</a></p>
 <p><b>Project Licenses: </b><a class="externalLink" href="http://www.apache.org/licenses/LICENSE-2.0">Apache License, Version 2.0</a></p></td></tr></table></div>
 <ul>
-<li>com.typesafe:config:jar:1.2.1 (provided) <img id="_img73" src="./images/icon_info_sml.gif" alt="[Information]" onclick="toggleDependencyDetails( '_dep72', '_img73' );" style="cursor: pointer; vertical-align: text-bottom;"></img><div id="_dep72" style="display:none">
+<li>com.typesafe:config:jar:1.2.1 (provided) <img id="_img75" src="./images/icon_info_sml.gif" alt="[Information]" onclick="toggleDependencyDetails( '_dep74', '_img75' );" style="cursor: pointer; vertical-align: text-bottom;"></img><div id="_dep74" style="display:none">
 <table border="0" class="table table-striped">
 <tr class="a">
 <th>config</th></tr>
@@ -1913,7 +1923,7 @@ See &quot;http://oldhome.schmorp.de/marc/liblzf.html&quot; for more on original
 <p><b>Description: </b>config</p>
 <p><b>URL: </b><a class="externalLink" href="https://github.com/typesafehub/config">https://github.com/typesafehub/config</a></p>
 <p><b>Project Licenses: </b><a class="externalLink" href="http://www.apache.org/licenses/LICENSE-2.0">Apache License, Version 2.0</a></p></td></tr></table></div></li></ul></li>
-<li>io.netty:netty:jar:3.8.0.Final (provided) <img id="_img75" src="./images/icon_info_sml.gif" alt="[Information]" onclick="toggleDependencyDetails( '_dep74', '_img75' );" style="cursor: pointer; vertical-align: text-bottom;"></img><div id="_dep74" style="display:none">
+<li>io.netty:netty:jar:3.8.0.Final (provided) <img id="_img77" src="./images/icon_info_sml.gif" alt="[Information]" onclick="toggleDependencyDetails( '_dep76', '_img77' );" style="cursor: pointer; vertical-align: text-bottom;"></img><div id="_dep76" style="display:none">
 <table border="0" class="table table-striped">
 <tr class="a">
 <th>The Netty Project</th></tr>
@@ -1928,7 +1938,7 @@ See &quot;http://oldhome.schmorp.de/marc/liblzf.html&quot; for more on original
     programming such as TCP and UDP socket server.</p>
 <p><b>URL: </b><a class="externalLink" href="http://netty.io/">http://netty.io/</a></p>
 <p><b>Project Licenses: </b><a class="externalLink" href="http://www.apache.org/licenses/LICENSE-2.0">Apache License, Version 2.0</a></p></td></tr></table></div></li>
-<li>org.uncommons.maths:uncommons-maths:jar:1.2.2a (provided) <img id="_img77" src="./images/icon_info_sml.gif" alt="[Information]" onclick="toggleDependencyDetails( '_dep76', '_img77' );" style="cursor: pointer; vertical-align: text-bottom;"></img><div id="_dep76" style="display:none">
+<li>org.uncommons.maths:uncommons-maths:jar:1.2.2a (provided) <img id="_img79" src="./images/icon_info_sml.gif" alt="[Information]" onclick="toggleDependencyDetails( '_dep78', '_img79' );" style="cursor: pointer; vertical-align: text-bottom;"></img><div id="_dep78" style="display:none">
 <table border="0" class="table table-striped">
 <tr class="a">
 <th>Uncommons Maths</th></tr>
@@ -1937,7 +1947,7 @@ See &quot;http://oldhome.schmorp.de/marc/liblzf.html&quot; for more on original
 <p><b>Description: </b>Random number generators, probability distributions, combinatorics and statistics for Java.</p>
 <p><b>URL: </b><a class="externalLink" href="http://maths.uncommons.org/">http://maths.uncommons.org/</a></p>
 <p><b>Project Licenses: </b><a class="externalLink" href="http://www.apache.org/licenses/LICENSE-2.0.html">Apache License, Version 2.0</a></p></td></tr></table></div></li></ul></li>
-<li>com.typesafe.akka:akka-slf4j_2.10:jar:2.3.11 (provided) <img id="_img79" src="./images/icon_info_sml.gif" alt="[Information]" onclick="toggleDependencyDetails( '_dep78', '_img79' );" style="cursor: pointer; vertical-align: text-bottom;"></img><div id="_dep78" style="display:none">
+<li>com.typesafe.akka:akka-slf4j_2.10:jar:2.3.11 (provided) <img id="_img81" src="./images/icon_info_sml.gif" alt="[Information]" onclick="toggleDependencyDetails( '_dep80', '_img81' );" style="cursor: pointer; vertical-align: text-bottom;"></img><div id="_dep80" style="display:none">
 <table border="0" class="table table-striped">
 <tr class="a">
 <th>akka-slf4j</th></tr>
@@ -1946,7 +1956,7 @@ See &quot;http://oldhome.schmorp.de/marc/liblzf.html&quot; for more on original
 <p><b>Description: </b>akka-slf4j</p>
 <p><b>URL: </b><a class="externalLink" href="http://akka.io/">http://akka.io/</a></p>
 <p><b>Project Licenses: </b><a class="externalLink" href="http://www.apache.org/licenses/LICENSE-2.0">Apache License, Version 2.0</a></p></td></tr></table></div></li>
-<li>org.json4s:json4s-jackson_2.10:jar:3.2.10 (provided) <img id="_img81" src="./images/icon_info_sml.gif" alt="[Information]" onclick="toggleDependencyDetails( '_dep80', '_img81' );" style="cursor: pointer; vertical-align: text-bottom;"></img><div id="_dep80" style="display:none">
+<li>org.json4s:json4s-jackson_2.10:jar:3.2.10 (provided) <img id="_img83" src="./images/icon_info_sml.gif" alt="[Information]" onclick="toggleDependencyDetails( '_dep82', '_img83' );" style="cursor: pointer; vertical-align: text-bottom;"></img><div id="_dep82" style="display:none">
 <table border="0" class="table table-striped">
 <tr class="a">
 <th>json4s-jackson</th></tr>
@@ -1956,7 +1966,7 @@ See &quot;http://oldhome.schmorp.de/marc/liblzf.html&quot; for more on original
 <p><b>URL: </b><a class="externalLink" href="https://github.com/json4s/json4s">https://github.com/json4s/json4s</a></p>
 <p><b>Project Licenses: </b><a class="externalLink" href="http://github.com/json4s/json4s/raw/HEAD/LICENSE">ASL</a></p></td></tr></table></div>
 <ul>
-<li>org.json4s:json4s-core_2.10:jar:3.2.10 (provided) <img id="_img83" src="./images/icon_info_sml.gif" alt="[Information]" onclick="toggleDependencyDetails( '_dep82', '_img83' );" style="cursor: pointer; vertical-align: text-bottom;"></img><div id="_dep82" style="display:none">
+<li>org.json4s:json4s-core_2.10:jar:3.2.10 (provided) <img id="_img85" src="./images/icon_info_sml.gif" alt="[Information]" onclick="toggleDependencyDetails( '_dep84', '_img85' );" style="cursor: pointer; vertical-align: text-bottom;"></img><div id="_dep84" style="display:none">
 <table border="0" class="table table-striped">
 <tr class="a">
 <th>json4s-core</th></tr>
@@ -1966,7 +1976,7 @@ See &quot;http://oldhome.schmorp.de/marc/liblzf.html&quot; for more on original
 <p><b>URL: </b><a class="externalLink" href="https://github.com/json4s/json4s">https://github.com/json4s/json4s</a></p>
 <p><b>Project Licenses: </b><a class="externalLink" href="http://github.com/json4s/json4s/raw/HEAD/LICENSE">ASL</a></p></td></tr></table></div>
 <ul>
-<li>org.json4s:json4s-ast_2.10:jar:3.2.10 (provided) <img id="_img85" src="./images/icon_info_sml.gif" alt="[Information]" onclick="toggleDependencyDetails( '_dep84', '_img85' );" style="cursor: pointer; vertical-align: text-bottom;"></img><div id="_dep84" style="display:none">
+<li>org.json4s:json4s-ast_2.10:jar:3.2.10 (provided) <img id="_img87" src="./images/icon_info_sml.gif" alt="[Information]" onclick="toggleDependencyDetails( '_dep86', '_img87' );" style="cursor: pointer; vertical-align: text-bottom;"></img><div id="_dep86" style="display:none">
 <table border="0" class="table table-striped">
 <tr class="a">
 <th>json4s-ast</th></tr>
@@ -1975,7 +1985,7 @@ See &quot;http://oldhome.schmorp.de/marc/liblzf.html&quot; for more on original
 <p><b>Description: </b>json4s-ast</p>
 <p><b>URL: </b><a class="externalLink" href="https://github.com/json4s/json4s">https://github.com/json4s/json4s</a></p>
 <p><b>Project Licenses: </b><a class="externalLink" href="http://github.com/json4s/json4s/raw/HEAD/LICENSE">ASL</a></p></td></tr></table></div></li></ul></li></ul></li>
-<li>com.sun.jersey:jersey-server:jar:1.9 (compile) <img id="_img87" src="./images/icon_info_sml.gif" alt="[Information]" onclick="toggleDependencyDetails( '_dep86', '_img87' );" style="cursor: pointer; vertical-align: text-bottom;"></img><div id="_dep86" style="display:none">
+<li>com.sun.jersey:jersey-server:jar:1.9 (compile) <img id="_img89" src="./images/icon_info_sml.gif" alt="[Information]" onclick="toggleDependencyDetails( '_dep88', '_img89' );" style="cursor: pointer; vertical-align: text-bottom;"></img><div id="_dep88" style="display:none">
 <table border="0" class="table table-striped">
 <tr class="a">
 <th>jersey-server</th></tr>
@@ -1987,7 +1997,7 @@ See &quot;http://oldhome.schmorp.de/marc/liblzf.html&quot; for more on original
 <p><b>URL: </b><a class="externalLink" href="https://jersey.java.net/jersey-server/">https://jersey.java.net/jersey-server/</a></p>
 <p><b>Project Licenses: </b><a class="externalLink" href="http://glassfish.java.net/public/CDDL+GPL_1_1.html">CDDL 1.1</a>, <a class="externalLink" href="http://glassfish.java.net/public/CDDL+GPL_1_1.html">GPL2 w/ CPE</a></p></td></tr></table></div>
 <ul>
-<li>asm:asm:jar:3.1 (compile) <img id="_img89" src="./images/icon_info_sml.gif" alt="[Information]" onclick="toggleDependencyDetails( '_dep88', '_img89' );" style="cursor: pointer; vertical-align: text-bottom;"></img><div id="_dep88" style="display:none">
+<li>asm:asm:jar:3.1 (compile) <img id="_img91" src="./images/icon_info_sml.gif" alt="[Information]" onclick="toggleDependencyDetails( '_dep90', '_img91' );" style="cursor: pointer; vertical-align: text-bottom;"></img><div id="_dep90" style="display:none">
 <table border="0" class="table table-striped">
 <tr class="a">
 <th>ASM Core</th></tr>
@@ -1996,7 +2006,7 @@ See &quot;http://oldhome.schmorp.de/marc/liblzf.html&quot; for more on original
 <p><b>Description: </b>A very small and fast Java bytecode manipulation framework</p>
 <p><b>URL: </b><a class="externalLink" href="http://asm.objectweb.org/asm/">http://asm.objectweb.org/asm/</a></p>
 <p><b>Project Licenses: </b>No licenses are defined for this project.</p></td></tr></table></div></li></ul></li>
-<li>com.sun.jersey:jersey-core:jar:1.9 (compile) <img id="_img91" src="./images/icon_info_sml.gif" alt="[Information]" onclick="toggleDependencyDetails( '_dep90', '_img91' );" style="cursor: pointer; vertical-align: text-bottom;"></img><div id="_dep90" style="display:none">
+<li>com.sun.jersey:jersey-core:jar:1.9 (compile) <img id="_img93" src="./images/icon_info_sml.gif" alt="[Information]" onclick="toggleDependencyDetails( '_dep92', '_img93' );" style="cursor: pointer; vertical-align: text-bottom;"></img><div id="_dep92" style="display:none">
 <table border="0" class="table table-striped">
 <tr class="a">
 <th>jersey-core</th></tr>
@@ -2007,7 +2017,7 @@ See &quot;http://oldhome.schmorp.de/marc/liblzf.html&quot; for more on original
         RESTful Web services.</p>
 <p><b>URL: </b><a class="externalLink" href="https://jersey.java.net/jersey-core/">https://jersey.java.net/jersey-core/</a></p>
 <p><b>Project Licenses: </b><a class="externalLink" href="http://glassfish.java.net/public/CDDL+GPL_1_1.html">CDDL 1.1</a>, <a class="externalLink" href="http://glassfish.java.net/public/CDDL+GPL_1_1.html">GPL2 w/ CPE</a></p></td></tr></table></div></li>
-<li>org.apache.mesos:mesos:jar:shaded-protobuf:0.21.1 (provided) <img id="_img93" src="./images/icon_info_sml.gif" alt="[Information]" onclick="toggleDependencyDetails( '_dep92', '_img93' );" style="cursor: pointer; vertical-align: text-bottom;"></img><div id="_dep92" style="display:none">
+<li>org.apache.mesos:mesos:jar:shaded-protobuf:0.21.1 (provided) <img id="_img95" src="./images/icon_info_sml.gif" alt="[Information]" onclick="toggleDependencyDetails( '_dep94', '_img95' );" style="cursor: pointer; vertical-align: text-bottom;"></img><div id="_dep94" style="display:none">
 <table border="0" class="table table-striped">
 <tr class="a">
 <th>mesos</th></tr>
@@ -2016,7 +2026,7 @@ See &quot;http://oldhome.schmorp.de/marc/liblzf.html&quot; for more on original
 <p><b>Description: </b>The Apache Mesos Java API jar.</p>
 <p><b>URL: </b><a class="externalLink" href="http://mesos.apache.org">http://mesos.apache.org</a></p>
 <p><b>Project Licenses: </b><a class="externalLink" href="http://www.apache.org/licenses/LICENSE-2.0.txt">The Apache Software License, Version 2.0</a></p></td></tr></table></div></li>
-<li>io.netty:netty-all:jar:4.0.29.Final (compile) <img id="_img95" src="./images/icon_info_sml.gif" alt="[Information]" onclick="toggleDependencyDetails( '_dep94', '_img95' );" style="cursor: pointer; vertical-align: text-bottom;"></img><div id="_dep94" style="display:none">
+<li>io.netty:netty-all:jar:4.0.29.Final (compile) <img id="_img97" src="./images/icon_info_sml.gif" alt="[Information]" onclick="toggleDependencyDetails( '_dep96', '_img97' );" style="cursor: pointer; vertical-align: text-bottom;"></img><div id="_dep96" style="display:none">
 <table border="0" class="table table-striped">
 <tr class="a">
 <th>Netty/All-in-One</th></tr>
@@ -2027,7 +2037,7 @@ See &quot;http://oldhome.schmorp.de/marc/liblzf.html&quot; for more on original
     clients.</p>
 <p><b>URL: </b><a class="externalLink" href="http://netty.io/netty-all/">http://netty.io/netty-all/</a></p>
 <p><b>Project Licenses: </b><a class="externalLink" href="http://www.apache.org/licenses/LICENSE-2.0">Apache License, Version 2.0</a></p></td></tr></table></div></li>
-<li>com.clearspring.analytics:stream:jar:2.7.0 (provided) <img id="_img97" src="./images/icon_info_sml.gif" alt="[Information]" onclick="toggleDependencyDetails( '_dep96', '_img97' );" style="cursor: pointer; vertical-align: text-bottom;"></img><div id="_dep96" style="display:none">
+<li>com.clearspring.analytics:stream:jar:2.7.0 (provided) <img id="_img99" src="./images/icon_info_sml.gif" alt="[Information]" onclick="toggleDependencyDetails( '_dep98', '_img99' );" style="cursor: pointer; vertical-align: text-bottom;"></img><div id="_dep98" style="display:none">
 <table border="0" class="table table-striped">
 <tr class="a">
 <th>stream-lib</th></tr>
@@ -2036,7 +2046,7 @@ See &quot;http://oldhome.schmorp.de/marc/liblzf.html&quot; for more on original
 <p><b>Description: </b>A library for summarizing data in streams for which it is infeasible to store all events</p>
 <p><b>URL: </b><a class="externalLink" href="https://github.com/addthis/stream-lib">https://github.com/addthis/stream-lib</a></p>
 <p><b>Project Licenses: </b><a class="externalLink" href="http://www.apache.org/licenses/LICENSE-2.0.txt">Apache License, Version 2.0</a></p></td></tr></table></div></li>
-<li>io.dropwizard.metrics:metrics-core:jar:3.2.1 (compile) <img id="_img99" src="./images/icon_info_sml.gif" alt="[Information]" onclick="toggleDependencyDetails( '_dep98', '_img99' );" style="cursor: pointer; vertical-align: text-bottom;"></img><div id="_dep98" style="display:none">
+<li>io.dropwizard.metrics:metrics-core:jar:3.2.1 (compile) <img id="_img101" src="./images/icon_info_sml.gif" alt="[Information]" onclick="toggleDependencyDetails( '_dep100', '_img101' );" style="cursor: pointer; vertical-align: text-bottom;"></img><div id="_dep100" style="display:none">
 <table border="0" class="table table-striped">
 <tr class="a">
 <th>Metrics Core</th></tr>
@@ -2047,7 +2057,7 @@ See &quot;http://oldhome.schmorp.de/marc/liblzf.html&quot; for more on original
         components in your production environment.</p>
 <p><b>URL: </b><a class="externalLink" href="http://metrics.codahale.com/metrics-core/">http://metrics.codahale.com/metrics-core/</a></p>
 <p><b>Project Licenses: </b><a class="externalLink" href="http://www.apache.org/licenses/LICENSE-2.0.html">Apache License 2.0</a></p></td></tr></table></div></li>
-<li>io.dropwizard.metrics:metrics-jvm:jar:3.1.2 (provided) <img id="_img101" src="./images/icon_info_sml.gif" alt="[Information]" onclick="toggleDependencyDetails( '_dep100', '_img101' );" style="cursor: pointer; vertical-align: text-bottom;"></img><div id="_dep100" style="display:none">
+<li>io.dropwizard.metrics:metrics-jvm:jar:3.1.2 (provided) <img id="_img103" src="./images/icon_info_sml.gif" alt="[Information]" onclick="toggleDependencyDetails( '_dep102', '_img103' );" style="cursor: pointer; vertical-align: text-bottom;"></img><div id="_dep102" style="display:none">
 <table border="0" class="table table-striped">
 <tr class="a">
 <th>JVM Integration for Metrics</th></tr>
@@ -2057,7 +2067,7 @@ See &quot;http://oldhome.schmorp.de/marc/liblzf.html&quot; for more on original
         using Metrics.</p>
 <p><b>URL: </b><a class="externalLink" href="http://metrics.codahale.com/metrics-jvm/">http://metrics.codahale.com/metrics-jvm/</a></p>
 <p><b>Project Licenses: </b><a class="externalLink" href="http://www.apache.org/licenses/LICENSE-2.0.html">Apache License 2.0</a></p></td></tr></table></div></li>
-<li>io.dropwizard.metrics:metrics-json:jar:3.1.2 (provided) <img id="_img103" src="./images/icon_info_sml.gif" alt="[Information]" onclick="toggleDependencyDetails( '_dep102', '_img103' );" style="cursor: pointer; vertical-align: text-bottom;"></img><div id="_dep102" style="display:none">
+<li>io.dropwizard.metrics:metrics-json:jar:3.1.2 (provided) <img id="_img105" src="./images/icon_info_sml.gif" alt="[Information]" onclick="toggleDependencyDetails( '_dep104', '_img105' );" style="cursor: pointer; vertical-align: text-bottom;"></img><div id="_dep104" style="display:none">
 <table border="0" class="table table-striped">
 <tr class="a">
 <th>Jackson Integration for Metrics</th></tr>
@@ -2066,7 +2076,7 @@ See &quot;http://oldhome.schmorp.de/marc/liblzf.html&quot; for more on original
 <p><b>Description: </b>A set of Jackson modules which provide serializers for most Metrics classes.</p>
 <p><b>URL: </b><a class="externalLink" href="http://metrics.codahale.com/metrics-json/">http://metrics.codahale.com/metrics-json/</a></p>
 <p><b>Project Licenses: </b><a class="externalLink" href="http://www.apache.org/licenses/LICENSE-2.0.html">Apache License 2.0</a></p></td></tr></table></div></li>
-<li>io.dropwizard.metrics:metrics-graphite:jar:3.1.2 (provided) <img id="_img105" src="./images/icon_info_sml.gif" alt="[Information]" onclick="toggleDependencyDetails( '_dep104', '_img105' );" style="cursor: pointer; vertical-align: text-bottom;"></img><div id="_dep104" style="display:none">
+<li>io.dropwizard.metrics:metrics-graphite:jar:3.1.2 (provided) <img id="_img107" src="./images/icon_info_sml.gif" alt="[Information]" onclick="toggleDependencyDetails( '_dep106', '_img107' );" style="cursor: pointer; vertical-align: text-bottom;"></img><div id="_dep106" style="display:none">
 <table border="0" class="table table-striped">
 <tr class="a">
 <th>Graphite Integration for Metrics</th></tr>
@@ -2075,7 +2085,7 @@ See &quot;http://oldhome.schmorp.de/marc/liblzf.html&quot; for more on original
 <p><b>Description: </b>A reporter for Metrics which announces measurements to a Graphite server.</p>
 <p><b>URL: </b><a class="externalLink" href="http://metrics.codahale.com/metrics-graphite/">http://metrics.codahale.com/metrics-graphite/</a></p>
 <p><b>Project Licenses: </b><a class="externalLink" href="http://www.apache.org/licenses/LICENSE-2.0.html">Apache License 2.0</a></p></td></tr></table></div></li>
-<li>com.fasterxml.jackson.core:jackson-databind:jar:2.9.2 (compile) <img id="_img107" src="./images/icon_info_sml.gif" alt="[Information]" onclick="toggleDependencyDetails( '_dep106', '_img107' );" style="cursor: pointer; vertical-align: text-bottom;"></img><div id="_dep106" style="display:none">
+<li>com.fasterxml.jackson.core:jackson-databind:jar:2.9.2 (compile) <img id="_img109" src="./images/icon_info_sml.gif" alt="[Information]" onclick="toggleDependencyDetails( '_dep108', '_img109' );" style="cursor: pointer; vertical-align: text-bottom;"></img><div id="_dep108" style="display:none">
 <table border="0" class="table table-striped">
 <tr class="a">
 <th>jackson-databind</th></tr>
@@ -2084,7 +2094,7 @@ See &quot;http://oldhome.schmorp.de/marc/liblzf.html&quot; for more on original
 <p><b>Description: </b>General data-binding functionality for Jackson: works on core streaming API</p>
 <p><b>URL: </b><a class="externalLink" href="http://github.com/FasterXML/jackson">http://github.com/FasterXML/jackson</a></p>
 <p><b>Project Licenses: </b><a class="externalLink" href="http://www.apache.org/licenses/LICENSE-2.0.txt">The Apache Software License, Version 2.0</a></p></td></tr></table></div></li>
-<li>org.apache.ivy:ivy:jar:2.4.0 (provided) <img id="_img109" src="./images/icon_info_sml.gif" alt="[Information]" onclick="toggleDependencyDetails( '_dep108', '_img109' );" style="cursor: pointer; vertical-align: text-bottom;"></img><div id="_dep108" style="display:none">
+<li>org.apache.ivy:ivy:jar:2.4.0 (provided) <img id="_img111" src="./images/icon_info_sml.gif" alt="[Information]" onclick="toggleDependencyDetails( '_dep110', '_img111' );" style="cursor: pointer; vertical-align: text-bottom;"></img><div id="_dep110" style="display:none">
 <table border="0" class="table table-striped">
 <tr class="a">
 <th>Apache Ivy</th></tr>
@@ -2097,7 +2107,7 @@ See &quot;http://oldhome.schmorp.de/marc/liblzf.html&quot; for more on original
     and users.</p>
 <p><b>URL: </b><a class="externalLink" href="http://ant.apache.org/ivy/">http://ant.apache.org/ivy/</a></p>
 <p><b>Project Licenses: </b><a class="externalLink" href="http://www.apache.org/licenses/LICENSE-2.0.txt">The Apache Software License, Version 2.0</a></p></td></tr></table></div></li>
-<li>oro:oro:jar:2.0.8 (provided) <img id="_img111" src="./images/icon_info_sml.gif" alt="[Information]" onclick="toggleDependencyDetails( '_dep110', '_img111' );" style="cursor: pointer; vertical-align: text-bottom;"></img><div id="_dep110" style="display:none">
+<li>oro:oro:jar:2.0.8 (provided) <img id="_img113" src="./images/icon_info_sml.gif" alt="[Information]" onclick="toggleDependencyDetails( '_dep112', '_img113' );" style="cursor: pointer; vertical-align: text-bottom;"></img><div id="_dep112" style="display:none">
 <table border="0" class="table table-striped">
 <tr class="a">
 <th>oro</th></tr>
@@ -2105,7 +2115,7 @@ See &quot;http://oldhome.schmorp.de/marc/liblzf.html&quot; for more on original
 <td>
 <p><b>Description: </b>There is currently no description associated with this project.</p>
 <p><b>Project Licenses: </b>No licenses are defined for this project.</p></td></tr></table></div></li>
-<li>org.tachyonproject:tachyon-client:jar:0.8.2 (provided) <img id="_img113" src="./images/icon_info_sml.gif" alt="[Information]" onclick="toggleDependencyDetails( '_dep112', '_img113' );" style="cursor: pointer; vertical-align: text-bottom;"></img><div id="_dep112" style="display:none">
+<li>org.tachyonproject:tachyon-client:jar:0.8.2 (provided) <img id="_img115" src="./images/icon_info_sml.gif" alt="[Information]" onclick="toggleDependencyDetails( '_dep114', '_img115' );" style="cursor: pointer; vertical-align: text-bottom;"></img><div id="_dep114" style="display:none">
 <table border="0" class="table table-striped">
 <tr class="a">
 <th>Tachyon Clients - Distribution</th></tr>
@@ -2115,7 +2125,7 @@ See &quot;http://oldhome.schmorp.de/marc/liblzf.html&quot; for more on original
 <p><b>URL: </b><a class="externalLink" href="http://tachyon-project.org/tachyon-clients/tachyon-client/">http://tachyon-project.org/tachyon-clients/tachyon-client/</a></p>
 <p><b>Project Licenses: </b><a class="externalLink" href="https://github.com/amplab/tachyon/blob/master/LICENSE">Apache License</a></p></td></tr></table></div>
 <ul>
-<li>org.tachyonproject:tachyon-underfs-hdfs:jar:0.8.2 (provided) <img id="_img115" src="./images/icon_info_sml.gif" alt="[Information]" onclick="toggleDependencyDetails( '_dep114', '_img115' );" style="cursor: pointer; vertical-align: text-bottom;"></img><div id="_dep114" style="display:none">
+<li>org.tachyonproject:tachyon-underfs-hdfs:jar:0.8.2 (provided) <img id="_img117" src="./images/icon_info_sml.gif" alt="[Information]" onclick="toggleDependencyDetails( '_dep116', '_img117' );" style="cursor: pointer; vertical-align: text-bottom;"></img><div id="_dep116" style="display:none">
 <table border="0" class="table table-striped">
 <tr class="a">
 <th>Tachyon Under File System - HDFS</th></tr>
@@ -2124,7 +2134,7 @@ See &quot;http://oldhome.schmorp.de/marc/liblzf.html&quot; for more on original
 <p><b>Description: </b>HDFS Under File System implementation</p>
 <p><b>URL: </b><a class="externalLink" href="http://tachyon-project.org/tachyon-underfs/tachyon-underfs-hdfs/">http://tachyon-project.org/tachyon-underfs/tachyon-underfs-hdfs/</a></p>
 <p><b>Project Licenses: </b><a class="externalLink" href="https://github.com/amplab/tachyon/blob/master/LICENSE">Apache License</a></p></td></tr></table></div></li>
-<li>org.tachyonproject:tachyon-underfs-s3:jar:0.8.2 (provided) <img id="_img117" src="./images/icon_info_sml.gif" alt="[Information]" onclick="toggleDependencyDetails( '_dep116', '_img117' );" style="cursor: pointer; vertical-align: text-bottom;"></img><div id="_dep116" style="display:none">
+<li>org.tachyonproject:tachyon-underfs-s3:jar:0.8.2 (provided) <img id="_img119" src="./images/icon_info_sml.gif" alt="[Information]" onclick="toggleDependencyDetails( '_dep118', '_img119' );" style="cursor: pointer; vertical-align: text-bottom;"></img><div id="_dep118" style="display:none">
 <table border="0" class="table table-striped">
 <tr class="a">
 <th>Tachyon Under File System - S3</th></tr>
@@ -2133,7 +2143,7 @@ See &quot;http://oldhome.schmorp.de/marc/liblzf.html&quot; for more on original
 <p><b>Description: </b>S3 Under File System implementation</p>
 <p><b>URL: </b><a class="externalLink" href="http://tachyon-project.org/tachyon-underfs/tachyon-underfs-s3/">http://tachyon-project.org/tachyon-underfs/tachyon-underfs-s3/</a></p>
 <p><b>Project Licenses: </b><a class="externalLink" href="https://github.com/amplab/tachyon/blob/master/LICENSE">Apache License</a></p></td></tr></table></div></li>
-<li>org.tachyonproject:tachyon-underfs-local:jar:0.8.2 (provided) <img id="_img119" src="./images/icon_info_sml.gif" alt="[Information]" onclick="toggleDependencyDetails( '_dep118', '_img119' );" style="cursor: pointer; vertical-align: text-bottom;"></img><div id="_dep118" style="display:none">
+<li>org.tachyonproject:tachyon-underfs-local:jar:0.8.2 (provided) <img id="_img121" src="./images/icon_info_sml.gif" alt="[Information]" onclick="toggleDependencyDetails( '_dep120', '_img121' );" style="cursor: pointer; vertical-align: text-bottom;"></img><div id="_dep120" style="display:none">
 <table border="0" class="table table-striped">
 <tr class="a">
 <th>Tachyon Under File System - Local FS</th></tr>
@@ -2142,7 +2152,7 @@ See &quot;http://oldhome.schmorp.de/marc/liblzf.html&quot; for more on original
 <p><b>Description: </b>Under File System implementation that uses local file system</p>
 <p><b>URL: </b><a class="externalLink" href="http://tachyon-project.org/tachyon-underfs/tachyon-underfs-local/">http://tachyon-project.org/tachyon-underfs/tachyon-underfs-local/</a></p>
 <p><b>Project Licenses: </b><a class="externalLink" href="https://github.com/amplab/tachyon/blob/master/LICENSE">Apache License</a></p></td></tr></table></div></li></ul></li>
-<li>net.razorvine:pyrolite:jar:4.9 (provided) <img id="_img121" src="./images/icon_info_sml.gif" alt="[Information]" onclick="toggleDependencyDetails( '_dep120', '_img121' );" style="cursor: pointer; vertical-align: text-bottom;"></img><div id="_dep120" style="display:none">
+<li>net.razorvine:pyrolite:jar:4.9 (provided) <img id="_img123" src="./images/icon_info_sml.gif" alt="[Information]" onclick="toggleDependencyDetails( '_dep122', '_img123' );" style="cursor: pointer; vertical-align: text-bottom;"></img><div id="_dep122" style="display:none">
 <table border="0" class="table table-striped">
 <tr class="a">
 <th>pyrolite</th></tr>
@@ -2153,7 +2163,7 @@ See &quot;http://oldhome.schmorp.de/marc/liblzf.html&quot; for more on original
 Pyrolite only implements part of the client side Pyro library, hence its name 'lite'...  But because Pyrolite has no dependencies, it is a much lighter way to use Pyro from Java/.NET than a solution with jython+pyro or IronPython+Pyro would provide. So if you don't need Pyro's full feature set, and don't require your Java/.NET code to host Pyro objects itself, Pyrolite may be a good choice to connect java or .NET and python.</p>
 <p><b>URL: </b><a class="externalLink" href="https://github.com/irmen/Pyrolite">https://github.com/irmen/Pyrolite</a></p>
 <p><b>Project Licenses: </b><a class="externalLink" href="https://raw.githubusercontent.com/irmen/Pyrolite/master/LICENSE">MIT License</a></p></td></tr></table></div></li>
-<li>net.sf.py4j:py4j:jar:0.9 (provided) <img id="_img123" src="./images/icon_info_sml.gif" alt="[Information]" onclick="toggleDependencyDetails( '_dep122', '_img123' );" style="cursor: pointer; vertical-align: text-bottom;"></img><div id="_dep122" style="display:none">
+<li>net.sf.py4j:py4j:jar:0.9 (provided) <img id="_img125" src="./images/icon_info_sml.gif" alt="[Information]" onclick="toggleDependencyDetails( '_dep124', '_img125' );" style="cursor: pointer; vertical-align: text-bottom;"></img><div id="_dep124" style="display:none">
 <table border="0" class="table table-striped">
 <tr class="a">
 <th>Py4J</th></tr>
@@ -2162,7 +2172,7 @@ Pyrolite only implements part of the client side Pyro library, hence its name 'l
 <p><b>Description: </b>Py4J enables Python programs running in a Python interpreter to dynamically access Java objects in a Java Virtual Machine. Methods are called as if the Java objects resided in the Python interpreter and Java collections can be accessed through standard Python collection methods. Py4J also enables Java programs to call back Python objects.</p>
 <p><b>URL: </b><a class="externalLink" href="http://www.py4j.org/">http://www.py4j.org/</a></p>
 <p><b>Project Licenses: </b><a class="externalLink" href="http://www.opensource.org/licenses/bsd-license.html">The New BSD License</a></p></td></tr></table></div></li>
-<li>org.spark-project.spark:unused:jar:1.0.0 (provided) <img id="_img125" src="./images/icon_info_sml.gif" alt="[Information]" onclick="toggleDependencyDetails( '_dep124', '_img125' );" style="cursor: pointer; vertical-align: text-bottom;"></img><div id="_dep124" style="display:none">
+<li>org.spark-project.spark:unused:jar:1.0.0 (provided) <img id="_img127" src="./images/icon_info_sml.gif" alt="[Information]" onclick="toggleDependencyDetails( '_dep126', '_img127' );" style="cursor: pointer; vertical-align: text-bottom;"></img><div id="_dep126" style="display:none">
 <table border="0" class="table table-striped">
 <tr class="a">
 <th>empty</th></tr>
@@ -2171,7 +2181,7 @@ Pyrolite only implements part of the client side Pyro library, hence its name 'l
 <p><b>Description: </b>Sonatype helps open source projects to set up Maven repositories on https://oss.sonatype.org/</p>
 <p><b>URL: </b><a class="externalLink" href="http://nexus.sonatype.org/oss-repository-hosting.html/unused">http://nexus.sonatype.org/oss-repository-hosting.html/unused</a></p>
 <p><b>Project Licenses: </b><a class="externalLink" href="http://www.apache.org/licenses/LICENSE-2.0.txt">The Apache License, Version 2.0</a></p></td></tr></table></div></li></ul></li>
-<li>com.google.code.findbugs:jsr305:jar:1.3.9 (provided) <img id="_img127" src="./images/icon_info_sml.gif" alt="[Information]" onclick="toggleDependencyDetails( '_dep126', '_img127' );" style="cursor: pointer; vertical-align: text-bottom;"></img><div id="_dep126" style="display:none">
+<li>com.google.code.findbugs:jsr305:jar:1.3.9 (provided) <img id="_img129" src="./images/icon_info_sml.gif" alt="[Information]" onclick="toggleDependencyDetails( '_dep128', '_img129' );" style="cursor: pointer; vertical-align: text-bottom;"></img><div id="_dep128" style="display:none">
 <table border="0" class="table table-striped">
 <tr class="a">
 <th>FindBugs-jsr305</th></tr>
@@ -2180,7 +2190,7 @@ Pyrolite only implements part of the client side Pyro library, hence its name 'l
 <p><b>Description: </b>JSR305 Annotations for Findbugs</p>
 <p><b>URL: </b><a class="externalLink" href="http://findbugs.sourceforge.net/">http://findbugs.sourceforge.net/</a></p>
 <p><b>Project Licenses: </b><a class="externalLink" href="http://www.apache.org/licenses/LICENSE-2.0.txt">The Apache Software License, Version 2.0</a></p></td></tr></table></div></li>
-<li>org.apache.spark:spark-sql_2.10:jar:1.6.0 (provided) <img id="_img129" src="./images/icon_info_sml.gif" alt="[Information]" onclick="toggleDependencyDetails( '_dep128', '_img129' );" style="cursor: pointer; vertical-align: text-bottom;"></img><div id="_dep128" style="display:none">
+<li>org.apache.spark:spark-sql_2.10:jar:1.6.0 (provided) <img id="_img131" src="./images/icon_info_sml.gif" alt="[Information]" onclick="toggleDependencyDetails( '_dep130', '_img131' );" style="cursor: pointer; vertical-align: text-bottom;"></img><div id="_dep130" style="display:none">
 <table border="0" class="table table-striped">
 <tr class="a">
 <th>Spark Project SQL</th></tr>
@@ -2194,7 +2204,7 @@ Pyrolite only implements part of the client side Pyro library, hence its name 'l
 <p><b>URL: </b><a class="externalLink" href="http://spark.apache.org/">http://spark.apache.org/</a></p>
 <p><b>Project Licenses: </b><a class="externalLink" href="http://www.apache.org/licenses/LICENSE-2.0.html">Apache 2.0 License</a></p></td></tr></table></div>
 <ul>
-<li>org.apache.spark:spark-catalyst_2.10:jar:1.6.0 (provided) <img id="_img131" src="./images/icon_info_sml.gif" alt="[Information]" onclick="toggleDependencyDetails( '_dep130', '_img131' );" style="cursor: pointer; vertical-align: text-bottom;"></img><div id="_dep130" style="display:none">
+<li>org.apache.spark:spark-catalyst_2.10:jar:1.6.0 (provided) <img id="_img133" src="./images/icon_info_sml.gif" alt="[Information]" onclick="toggleDependencyDetails( '_dep132', '_img133' );" style="cursor: pointer; vertical-align: text-bottom;"></img><div id="_dep132" style="display:none">
 <table border="0" class="table table-striped">
 <tr class="a">
 <th>Spark Project Catalyst</th></tr>
@@ -2208,7 +2218,7 @@ Pyrolite only implements part of the client side Pyro library, hence its name 'l
 <p><b>URL: </b><a class="externalLink" href="http://spark.apache.org/">http://spark.apache.org/</a></p>
 <p><b>Project Licenses: </b><a class="externalLink" href="http://www.apache.org/licenses/LICENSE-2.0.html">Apache 2.0 License</a></p></td></tr></table></div>
 <ul>
-<li>org.codehaus.janino:janino:jar:2.7.8 (provided) <img id="_img133" src="./images/icon_info_sml.gif" alt="[Information]" onclick="toggleDependencyDetails( '_dep132', '_img133' );" style="cursor: pointer; vertical-align: text-bottom;"></img><div id="_dep132" style="display:none">
+<li>org.codehaus.janino:janino:jar:2.7.8 (provided) <img id="_img135" src="./images/icon_info_sml.gif" alt="[Information]" onclick="toggleDependencyDetails( '_dep134', '_img135' );" style="cursor: pointer; vertical-align: text-bottom;"></img><div id="_dep134" style="display:none">
 <table border="0" class="table table-striped">
 <tr class="a">
 <th>Janino</th></tr>
@@ -2221,7 +2231,7 @@ Pyrolite only implements part of the client side Pyro library, hence its name 'l
 <p><b>URL: </b><a class="externalLink" href="http://docs.codehaus.org/display/JANINO/Home/janino">http://docs.codehaus.org/display/JANINO/Home/janino</a></p>
 <p><b>Project Licenses: </b><a class="externalLink" href="http://dist.codehaus.org/janino/new_bsd_license.txt">New BSD License</a></p></td></tr></table></div>
 <ul>
-<li>org.codehaus.janino:commons-compiler:jar:2.7.8 (provided) <img id="_img135" src="./images/icon_info_sml.gif" alt="[Information]" onclick="toggleDependencyDetails( '_dep134', '_img135' );" style="cursor: pointer; vertical-align: text-bottom;"></img><div id="_dep134" style="display:none">
+<li>org.codehaus.janino:commons-compiler:jar:2.7.8 (provided) <img id="_img137" src="./images/icon_info_sml.gif" alt="[Information]" onclick="toggleDependencyDetails( '_dep136', '_img137' );" style="cursor: pointer; vertical-align: text-bottom;"></img><div id="_dep136" style="display:none">
 <table border="0" class="table table-striped">
 <tr class="a">
 <th>Commons Compiler</th></tr>
@@ -2233,7 +2243,7 @@ Pyrolite only implements part of the client side Pyro library, hence its name 'l
     like JSP.</p>
 <p><b>URL: </b><a class="externalLink" href="http://docs.codehaus.org/display/JANINO/Home/commons-compiler">http://docs.codehaus.org/display/JANINO/Home/commons-compiler</a></p>
 <p><b>Project Licenses: </b><a class="externalLink" href="http://dist.codehaus.org/janino/new_bsd_license.txt">New BSD License</a></p></td></tr></table></div></li></ul></li></ul></li>
-<li>org.apache.parquet:parquet-column:jar:1.7.0 (provided) <img id="_img137" src="./images/icon_info_sml.gif" alt="[Information]" onclick="toggleDependencyDetails( '_dep136', '_img137' );" style="cursor: pointer; vertical-align: text-bottom;"></img><div id="_dep136" style="display:none">
+<li>org.apache.parquet:parquet-column:jar:1.7.0 (provided) <img id="_img139" src="./images/icon_info_sml.gif" alt="[Information]" onclick="toggleDependencyDetails( '_dep138', '_img139' );" style="cursor: pointer; vertical-align: text-bottom;"></img><div id="_dep138" style="display:none">
 <table border="0" class="table table-striped">
 <tr class="a">
 <th>Apache Parquet Column</th></tr>
@@ -2243,7 +2253,7 @@ Pyrolite only implements part of the client side Pyro library, hence its name 'l
 <p><b>URL: </b><a class="externalLink" href="https://parquet.apache.org">https://parquet.apache.org</a></p>
 <p><b>Project Licenses: </b><a class="externalLink" href="http://www.apache.org/licenses/LICENSE-2.0.txt">The Apache Software License, Version 2.0</a></p></td></tr></table></div>
 <ul>
-<li>org.apache.parquet:parquet-common:jar:1.7.0 (provided) <img id="_img139" src="./images/icon_info_sml.gif" alt="[Information]" onclick="toggleDependencyDetails( '_dep138', '_img139' );" style="cursor: pointer; vertical-align: text-bottom;"></img><div id="_dep138" style="display:none">
+<li>org.apache.parquet:parquet-common:jar:1.7.0 (provided) <img id="_img141" src="./images/icon_info_sml.gif" alt="[Information]" onclick="toggleDependencyDetails( '_dep140', '_img141' );" style="cursor: pointer; vertical-align: text-bottom;"></img><div id="_dep140" style="display:none">
 <table border="0" class="table table-striped">
 <tr class="a">
 <th>Apache Parquet Common</th></tr>
@@ -2252,7 +2262,7 @@ Pyrolite only implements part of the client side Pyro library, hence its name 'l
 <p><b>Description: </b>Parquet is a columnar storage format that supports nested data. This provides the java implementation.</p>
 <p><b>URL: </b><a class="externalLink" href="https://parquet.apache.org">https://parquet.apache.org</a></p>
 <p><b>Project Licenses: </b><a class="externalLink" href="http://www.apache.org/licenses/LICENSE-2.0.txt">The Apache Software License, Version 2.0</a></p></td></tr></table></div></li>
-<li>org.apache.parquet:parquet-encoding:jar:1.7.0 (provided) <img id="_img141" src="./images/icon_info_sml.gif" alt="[Information]" onclick="toggleDependencyDetails( '_dep140', '_img141' );" style="cursor: pointer; vertical-align: text-bottom;"></img><div id="_dep140" style="display:none">
+<li>org.apache.parquet:parquet-encoding:jar:1.7.0 (provided) <img id="_img143" src="./images/icon_info_sml.gif" alt="[Information]" onclick="toggleDependencyDetails( '_dep142', '_img143' );" style="cursor: pointer; vertical-align: text-bottom;"></img><div id="_dep142" style="display:none">
 <table border="0" class="table table-striped">
 <tr class="a">
 <th>Apache Parquet Encodings</th></tr>
@@ -2262,7 +2272,7 @@ Pyrolite only implements part of the client side Pyro library, hence its name 'l
 <p><b>URL: </b><a class="externalLink" href="https://parquet.apache.org">https://parquet.apache.org</a></p>
 <p><b>Project Licenses: </b><a class="externalLink" href="http://www.apache.org/licenses/LICENSE-2.0.txt">The Apache Software License, Version 2.0</a></p></td></tr></table></div>
 <ul>
-<li>org.apache.parquet:parquet-generator:jar:1.7.0 (provided) <img id="_img143" src="./images/icon_info_sml.gif" alt="[Information]" onclick="toggleDependencyDetails( '_dep142', '_img143' );" style="cursor: pointer; vertical-align: text-bottom;"></img><div id="_dep142" style="display:none">
+<li>org.apache.parquet:parquet-generator:jar:1.7.0 (provided) <img id="_img145" src="./images/icon_info_sml.gif" alt="[Information]" onclick="toggleDependencyDetails( '_dep144', '_img145' );" style="cursor: pointer; vertical-align: text-bottom;"></img><div id="_dep144" style="display:none">
 <table border="0" class="table table-striped">
 <tr class="a">
 <th>Apache Parquet Generator</th></tr>
@@ -2271,7 +2281,7 @@ Pyrolite only implements part of the client side Pyro library, hence its name 'l
 <p><b>Description: </b>Parquet is a columnar storage format that supports nested data. This provides the java implementation.</p>
 <p><b>URL: </b><a class="externalLink" href="https://parquet.apache.org">https://parquet.apache.org</a></p>
 <p><b>Project Licenses: </b><a class="externalLink" href="http://www.apache.org/licenses/LICENSE-2.0.txt">The Apache Software License, Version 2.0</a></p></td></tr></table></div></li></ul></li></ul></li>
-<li>org.apache.parquet:parquet-hadoop:jar:1.7.0 (provided) <img id="_img145" src="./images/icon_info_sml.gif" alt="[Information]" onclick="toggleDependencyDetails( '_dep144', '_img145' );" style="cursor: pointer; vertical-align: text-bottom;"></img><div id="_dep144" style="display:none">
+<li>org.apache.parquet:parquet-hadoop:jar:1.7.0 (provided) <img id="_img147" src="./images/icon_info_sml.gif" alt="[Information]" onclick="toggleDependencyDetails( '_dep146', '_img147' );" style="cursor: pointer; vertical-align: text-bottom;"></img><div id="_dep146" style="display:none">
 <table border="0" class="table table-striped">
 <tr class="a">
 <th>Apache Parquet Hadoop</th></tr>
@@ -2281,7 +2291,7 @@ Pyrolite only implements part of the client side Pyro library, hence its name 'l
 <p><b>URL: </b><a class="externalLink" href="https://parquet.apache.org">https://parquet.apache.org</a></p>
 <p><b>Project Licenses: </b><a class="externalLink" href="http://www.apache.org/licenses/LICENSE-2.0.txt">The Apache Software License, Version 2.0</a></p></td></tr></table></div>
 <ul>
-<li>org.apache.parquet:parquet-format:jar:2.3.0-incubating (provided) <img id="_img147" src="./images/icon_info_sml.gif" alt="[Information]" onclick="toggleDependencyDetails( '_dep146', '_img147' );" style="cursor: pointer; vertical-align: text-bottom;"></img><div id="_dep146" style="display:none">
+<li>org.apache.parquet:parquet-format:jar:2.3.0-incubating (provided) <img id="_img149" src="./images/icon_info_sml.gif" alt="[Information]" onclick="toggleDependencyDetails( '_dep148', '_img149' );" style="cursor: pointer; vertical-align: text-bottom;"></img><div id="_dep148" style="display:none">
 <table border="0" class="table table-striped">
 <tr class="a">
 <th>Apache Parquet Format (Incubating)</th></tr>
@@ -2290,7 +2300,7 @@ Pyrolite only implements part of the client side Pyro library, hence its name 'l
 <p><b>Description: </b>Parquet is a columnar storage format that supports nested data. This provides all generated metadata code.</p>
 <p><b>URL: </b><a class="externalLink" href="http://parquet.incubator.apache.org/">http://parquet.incubator.apache.org/</a></p>
 <p><b>Project Licenses: </b><a class="externalLink" href="http://www.apache.org/licenses/LICENSE-2.0.txt">The Apache Software License, Version 2.0</a></p></td></tr></table></div></li>
-<li>org.apache.parquet:parquet-jackson:jar:1.7.0 (provided) <img id="_img149" src="./images/icon_info_sml.gif" alt="[Information]" onclick="toggleDependencyDetails( '_dep148', '_img149' );" style="cursor: pointer; vertical-align: text-bottom;"></img><div id="_dep148" style="display:none">
+<li>org.apache.parquet:parquet-jackson:jar:1.7.0 (provided) <img id="_img151" src="./images/icon_info_sml.gif" alt="[Information]" onclick="toggleDependencyDetails( '_dep150', '_img151' );" style="cursor: pointer; vertical-align: text-bottom;"></img><div id="_dep150" style="display:none">
 <table border="0" class="table table-striped">
 <tr class="a">
 <th>Apache Parquet Jackson</th></tr>
@@ -2299,7 +2309,7 @@ Pyrolite only implements part of the client side Pyro library, hence its name 'l
 <p><b>Description: </b>Parquet is a columnar storage format that supports nested data. This provides the java implementation.</p>
 <p><b>URL: </b><a class="externalLink" href="https://parquet.apache.org">https://parquet.apache.org</a></p>
 <p><b>Project Licenses: </b><a class="externalLink" href="http://www.apache.org/licenses/LICENSE-2.0.txt">The Apache Software License, Version 2.0</a></p></td></tr></table></div></li></ul></li></ul></li>
-<li>org.apache.spark:spark-streaming_2.10:jar:1.6.0 (provided) <img id="_img151" src="./images/icon_info_sml.gif" alt="[Information]" onclick="toggleDependencyDetails( '_dep150', '_img151' );" style="cursor: pointer; vertical-align: text-bottom;"></img><div id="_dep150" style="display:none">
+<li>org.apache.spark:spark-streaming_2.10:jar:1.6.0 (provided) <img id="_img153" src="./images/icon_info_sml.gif" alt="[Information]" onclick="toggleDependencyDetails( '_dep152', '_img153' );" style="cursor: pointer; vertical-align: text-bottom;"></img><div id="_dep152" style="display:none">
 <table border="0" class="table table-striped">
 <tr class="a">
 <th>Spark Project Streaming</th></tr>
@@ -2312,7 +2322,7 @@ Pyrolite only implements part of the client side Pyro library, hence its name 'l
     and users.</p>
 <p><b>URL: </b><a class="externalLink" href="http://spark.apache.org/">http://spark.apache.org/</a></p>
 <p><b>Project Licenses: </b><a class="externalLink" href="http://www.apache.org/licenses/LICENSE-2.0.html">Apache 2.0 License</a></p></td></tr></table></div></li>
-<li>org.apache.spark:spark-streaming_2.10:test-jar:tests:1.6.0 (test) <img id="_img153" src="./images/icon_info_sml.gif" alt="[Information]" onclick="toggleDependencyDetails( '_dep152', '_img153' );" style="cursor: pointer; vertical-align: text-bottom;"></img><div id="_dep152" style="display:none">
+<li>org.apache.spark:spark-streaming_2.10:test-jar:tests:1.6.0 (test) <img id="_img155" src="./images/icon_info_sml.gif" alt="[Information]" onclick="toggleDependencyDetails( '_dep154', '_img155' );" style="cursor: pointer; vertical-align: text-bottom;"></img><div id="_dep154" style="display:none">
 <table border="0" class="table table-striped">
 <tr class="a">
 <th>Spark Project Streaming</th></tr>
@@ -2325,7 +2335,7 @@ Pyrolite only implements part of the client side Pyro library, hence its name 'l
     and users.</p>
 <p><b>URL: </b><a class="externalLink" href="http://spark.apache.org/">http://spark.apache.org/</a></p>
 <p><b>Project Licenses: </b><a class="externalLink" href="http://www.apache.org/licenses/LICENSE-2.0.html">Apache 2.0 License</a></p></td></tr></table></div></li>
-<li>junit:junit:jar:4.12 (test) <img id="_img155" src="./images/icon_info_sml.gif" alt="[Information]" onclick="toggleDependencyDetails( '_dep154', '_img155' );" style="cursor: pointer; vertical-align: text-bottom;"></img><div id="_dep154" style="display:none">
+<li>junit:junit:jar:4.12 (test) <img id="_img157" src="./images/icon_info_sml.gif" alt="[Information]" onclick="toggleDependencyDetails( '_dep156', '_img157' );" style="cursor: pointer; vertical-align: text-bottom;"></img><div id="_dep156" style="display:none">
 <table border="0" class="table table-striped">
 <tr class="a">
 <th>JUnit</th></tr>
@@ -2335,7 +2345,7 @@ Pyrolite only implements part of the client side Pyro library, hence its name 'l
 <p><b>URL: </b><a class="externalLink" href="http://junit.org">http://junit.org</a></p>
 <p><b>Project Licenses: </b><a class="externalLink" href="http://www.eclipse.org/legal/epl-v10.html">Eclipse Public License 1.0</a></p></td></tr></table></div>
 <ul>
-<li>org.hamcrest:hamcrest-core:jar:1.3 (test) <img id="_img157" src="./images/icon_info_sml.gif" alt="[Information]" onclick="toggleDependencyDetails( '_dep156', '_img157' );" style="cursor: pointer; vertical-align: text-bottom;"></img><div id="_dep156" style="display:none">
+<li>org.hamcrest:hamcrest-core:jar:1.3 (test) <img id="_img159" src="./images/icon_info_sml.gif" alt="[Information]" onclick="toggleDependencyDetails( '_dep158', '_img159' );" style="cursor: pointer; vertical-align: text-bottom;"></img><div id="_dep158" style="display:none">
 <table border="0" class="table table-striped">
 <tr class="a">
 <th>Hamcrest Core</th></tr>
@@ -2344,7 +2354,7 @@ Pyrolite only implements part of the client side Pyro library, hence its name 'l
 <p><b>Description: </b>This is the core API of hamcrest matcher framework to be used by third-party framework providers. This includes the a foundation set of matcher implementations for common operations.</p>
 <p><b>URL: </b><a class="externalLink" href="https://github.com/hamcrest/JavaHamcrest/hamcrest-core">https://github.com/hamcrest/JavaHamcrest/hamcrest-core</a></p>
 <p><b>Project Licenses: </b><a class="externalLink" href="http://www.opensource.org/licenses/bsd-license.php">New BSD License</a></p></td></tr></table></div></li></ul></li>
-<li>org.scalatest:scalatest_2.10:jar:2.2.4 (test) <img id="_img159" src="./images/icon_info_sml.gif" alt="[Information]" onclick="toggleDependencyDetails( '_dep158', '_img159' );" style="cursor: pointer; vertical-align: text-bottom;"></img><div id="_dep158" style="display:none">
+<li>org.scalatest:scalatest_2.10:jar:2.2.4 (test) <img id="_img161" src="./images/icon_info_sml.gif" alt="[Information]" onclick="toggleDependencyDetails( '_dep160', '_img161' );" style="cursor: pointer; vertical-align: text-bottom;"></img><div id="_dep160" style="display:none">
 <table border="0" class="table table-striped">
 <tr class="a">
 <th>scalatest</th></tr>
@@ -2354,7 +2364,7 @@ Pyrolite only implements part of the client side Pyro library, hence its name 'l
 <p><b>URL: </b><a class="externalLink" href="http://www.scalatest.org">http://www.scalatest.org</a></p>
 <p><b>Project Licenses: </b><a class="externalLink" href="http://www.apache.org/licenses/LICENSE-2.0">the Apache License, ASL Version 2.0</a></p></td></tr></table></div>
 <ul>
-<li>org.scala-lang:scala-reflect:jar:2.10.4 (provided) <img id="_img161" src="./images/icon_info_sml.gif" alt="[Information]" onclick="toggleDependencyDetails( '_dep160', '_img161' );" style="cursor: pointer; vertical-align: text-bottom;"></img><div id="_dep160" style="display:none">
+<li>org.scala-lang:scala-reflect:jar:2.10.4 (provided) <img id="_img163" src="./images/icon_info_sml.gif" alt="[Information]" onclick="toggleDependencyDetails( '_dep162', '_img163' );" style="cursor: pointer; vertical-align: text-bottom;"></img><div id="_dep162" style="display:none">
 <table border="0" class="table table-striped">
 <tr class="a">
 <th>Scala Compiler</th></tr>
@@ -2363,7 +2373,7 @@ Pyrolite only implements part of the client side Pyro library, hence its name 'l
 <p><b>Description: </b>Compiler for the Scala Programming Language</p>
 <p><b>URL: </b><a class="externalLink" href="http://www.scala-lang.org/">http://www.scala-lang.org/</a></p>
 <p><b>Project Licenses: </b><a class="externalLink" href="http://www.scala-lang.org/downloads/license.html">BSD-like</a></p></td></tr></table></div></li></ul></li>
-<li>org.scalamock:scalamock-scalatest-support_2.10:jar:3.1.4 (test) <img id="_img163" src="./images/icon_info_sml.gif" alt="[Information]" onclick="toggleDependencyDetails( '_dep162', '_img163' );" style="cursor: pointer; vertical-align: text-bottom;"></img><div id="_dep162" style="display:none">
+<li>org.scalamock:scalamock-scalatest-support_2.10:jar:3.1.4 (test) <img id="_img165" src="./images/icon_info_sml.gif" alt="[Information]" onclick="toggleDependencyDetails( '_dep164', '_img165' );" style="cursor: pointer; vertical-align: text-bottom;"></img><div id="_dep164" style="display:none">
 <table border="0" class="table table-striped">
 <tr class="a">
 <th>ScalaMock ScalaTest Support</th></tr>
@@ -2373,7 +2383,7 @@ Pyrolite only implements part of the client side Pyro library, hence its name 'l
 <p><b>URL: </b><a class="externalLink" href="http://scalamock.org/">http://scalamock.org/</a></p>
 <p><b>Project Licenses: </b><a class="externalLink" href="http://www.opensource.org/licenses/bsd-license.php">BSD-style</a></p></td></tr></table></div>
 <ul>
-<li>org.scalamock:scalamock-core_2.10:jar:3.1.4 (test) <img id="_img165" src="./images/icon_info_sml.gif" alt="[Information]" onclick="toggleDependencyDetails( '_dep164', '_img165' );" style="cursor: pointer; vertical-align: text-bottom;"></img><div id="_dep164" style="display:none">
+<li>org.scalamock:scalamock-core_2.10:jar:3.1.4 (test) <img id="_img167" src="./images/icon_info_sml.gif" alt="[Information]" onclick="toggleDependencyDetails( '_dep166', '_img167' );" style="cursor: pointer; vertical-align: text-bottom;"></img><div id="_dep166" style="display:none">
 <table border="0" class="table table-striped">
 <tr class="a">
 <th>ScalaMock Core</th></tr>
@@ -2382,7 +2392,7 @@ Pyrolite only implements part of the client side Pyro library, hence its name 'l
 <p><b>Description: </b>ScalaMock Core</p>
 <p><b>URL: </b><a class="externalLink" href="http://scalamock.org/">http://scalamock.org/</a></p>
 <p><b>Project Licenses: </b><a class="externalLink" href="http://www.opensource.org/licenses/bsd-license.php">BSD-style</a></p></td></tr></table></div></li></ul></li>
-<li>com.fasterxml.jackson.module:jackson-module-scala_2.10:jar:2.9.2 (compile) <img id="_img167" src="./images/icon_info_sml.gif" alt="[Information]" onclick="toggleDependencyDetails( '_dep166', '_img167' );" style="cursor: pointer; vertical-align: text-bottom;"></img><div id="_dep166" style="display:none">
+<li>com.fasterxml.jackson.module:jackson-module-scala_2.10:jar:2.9.2 (compile) <img id="_img169" src="./images/icon_info_sml.gif" alt="[Information]" onclick="toggleDependencyDetails( '_dep168', '_img169' );" style="cursor: pointer; vertical-align: text-bottom;"></img><div id="_dep168" style="display:none">
 <table border="0" class="table table-striped">
 <tr class="a">
 <th>jackson-module-scala</th></tr>
@@ -2392,7 +2402,7 @@ Pyrolite only implements part of the client side Pyro library, hence its name 'l
 <p><b>URL: </b><a class="externalLink" href="http://wiki.fasterxml.com/JacksonModuleScala">http://wiki.fasterxml.com/JacksonModuleScala</a></p>
 <p><b>Project Licenses: </b><a class="externalLink" href="http://www.apache.org/licenses/LICENSE-2.0.txt">The Apache Software License, Version 2.0</a></p></td></tr></table></div>
 <ul>
-<li>com.fasterxml.jackson.core:jackson-core:jar:2.9.2 (compile) <img id="_img169" src="./images/icon_info_sml.gif" alt="[Information]" onclick="toggleDependencyDetails( '_dep168', '_img169' );" style="cursor: pointer; vertical-align: text-bottom;"></img><div id="_dep168" style="display:none">
+<li>com.fasterxml.jackson.core:jackson-core:jar:2.9.2 (compile) <img id="_img171" src="./images/icon_info_sml.gif" alt="[Information]" onclick="toggleDependencyDetails( '_dep170', '_img171' );" style="cursor: pointer; vertical-align: text-bottom;"></img><div id="_dep170" style="display:none">
 <table border="0" class="table table-striped">
 <tr class="a">
 <th>Jackson-core</th></tr>
@@ -2401,7 +2411,7 @@ Pyrolite only implements part of the client side Pyro library, hence its name 'l
 <p><b>Description: </b>Core Jackson processing abstractions (aka Streaming API), implementation for JSON</p>
 <p><b>URL: </b><a class="externalLink" href="https://github.com/FasterXML/jackson-core">https://github.com/FasterXML/jackson-core</a></p>
 <p><b>Project Licenses: </b><a class="externalLink" href="http://www.apache.org/licenses/LICENSE-2.0.txt">The Apache Software License, Version 2.0</a></p></td></tr></table></div></li>
-<li>com.fasterxml.jackson.core:jackson-annotations:jar:2.9.2 (compile) <img id="_img171" src="./images/icon_info_sml.gif" alt="[Information]" onclick="toggleDependencyDetails( '_dep170', '_img171' );" style="cursor: pointer; vertical-align: text-bottom;"></img><div id="_dep170" style="display:none">
+<li>com.fasterxml.jackson.core:jackson-annotations:jar:2.9.2 (compile) <img id="_img173" src="./images/icon_info_sml.gif" alt="[Information]" onclick="toggleDependencyDetails( '_dep172', '_img173' );" style="cursor: pointer; vertical-align: text-bottom;"></img><div id="_dep172" style="display:none">
 <table border="0" class="table table-striped">
 <tr class="a">
 <th>Jackson-annotations</th></tr>
@@ -2410,7 +2420,7 @@ Pyrolite only implements part of the client side Pyro library, hence its name 'l
 <p><b>Description: </b>Core annotations used for value types, used by Jackson data binding package.</p>
 <p><b>URL: </b><a class="externalLink" href="http://github.com/FasterXML/jackson">http://github.com/FasterXML/jackson</a></p>
 <p><b>Project Licenses: </b><a class="externalLink" href="http://www.apache.org/licenses/LICENSE-2.0.txt">The Apache Software License, Version 2.0</a></p></td></tr></table></div></li>
-<li>com.fasterxml.jackson.module:jackson-module-paranamer:jar:2.9.2 (compile) <img id="_img173" src="./images/icon_info_sml.gif" alt="[Information]" onclick="toggleDependencyDetails( '_dep172', '_img173' );" style="cursor: pointer; vertical-align: text-bottom;"></img><div id="_dep172" style="display:none">
+<li>com.fasterxml.jackson.module:jackson-module-paranamer:jar:2.9.2 (compile) <img id="_img175" src="./images/icon_info_sml.gif" alt="[Information]" onclick="toggleDependencyDetails( '_dep174', '_img175' );" style="cursor: pointer; vertical-align: text-bottom;"></img><div id="_dep174" style="display:none">
 <table border="0" class="table table-striped">
 <tr class="a">
 <th>Jackson module: Paranamer</th></tr>
@@ -2420,7 +2430,7 @@ Pyrolite only implements part of the client side Pyro library, hence its name 'l
 to introspect names of constructor (and factory method) parameters.</p>
 <p><b>URL: </b><a class="externalLink" href="https://github.com/FasterXML/jackson-modules-base">https://github.com/FasterXML/jackson-modules-base</a></p>
 <p><b>Project Licenses: </b><a class="externalLink" href="http://www.apache.org/licenses/LICENSE-2.0.txt">The Apache Software License, Version 2.0</a></p></td></tr></table></div></li></ul></li>
-<li>org.apache.hadoop:hadoop-client:jar:2.7.4 (compile) <img id="_img175" src="./images/icon_info_sml.gif" alt="[Information]" onclick="toggleDependencyDetails( '_dep174', '_img175' );" style="cursor: pointer; vertical-align: text-bottom;"></img><div id="_dep174" style="display:none">
+<li>org.apache.hadoop:hadoop-client:jar:2.7.4 (compile) <img id="_img177" src="./images/icon_info_sml.gif" alt="[Information]" onclick="toggleDependencyDetails( '_dep176', '_img177' );" style="cursor: pointer; vertical-align: text-bottom;"></img><div id="_dep176" style="display:none">
 <table border="0" class="table table-striped">
 <tr class="a">
 <th>Apache Hadoop Client</th></tr>
@@ -2429,7 +2439,7 @@ to introspect names of constructor (and factory method) parameters.</p>
 <p><b>Description: </b>Apache Hadoop Client</p>
 <p><b>Project Licenses: </b><a class="externalLink" href="http://www.apache.org/licenses/LICENSE-2.0.txt">Apache License, Version 2.0</a></p></td></tr></table></div>
 <ul>
-<li>org.apache.hadoop:hadoop-hdfs:jar:2.7.4 (compile) <img id="_img177" src="./images/icon_info_sml.gif" alt="[Information]" onclick="toggleDependencyDetails( '_dep176', '_img177' );" style="cursor: pointer; vertical-align: text-bottom;"></img><div id="_dep176" style="display:none">
+<li>org.apache.hadoop:hadoop-hdfs:jar:2.7.4 (compile) <img id="_img179" src="./images/icon_info_sml.gif" alt="[Information]" onclick="toggleDependencyDetails( '_dep178', '_img179' );" style="cursor: pointer; vertical-align: text-bottom;"></img><div id="_dep178" style="display:none">
 <table border="0" class="table table-striped">
 <tr class="a">
 <th>Apache Hadoop HDFS</th></tr>
@@ -2437,7 +2447,7 @@ to introspect names of constructor (and factory method) parameters.</p>
 <td>
 <p><b>Description: </b>Apache Hadoop HDFS</p>
 <p><b>Project Licenses: </b><a class="externalLink" href="http://www.apache.org/licenses/LICENSE-2.0.txt">Apache License, Version 2.0</a></p></td></tr></table></div></li>
-<li>org.apache.hadoop:hadoop-mapreduce-client-app:jar:2.7.4 (compile) <img id="_img179" src="./images/icon_info_sml.gif" alt="[Information]" onclick="toggleDependencyDetails( '_dep178', '_img179' );" style="cursor: pointer; vertical-align: text-bottom;"></img><div id="_dep178" style="display:none">
+<li>org.apache.hadoop:hadoop-mapreduce-client-app:jar:2.7.4 (compile) <img id="_img181" src="./images/icon_info_sml.gif" alt="[Information]" onclick="toggleDependencyDetails( '_dep180', '_img181' );" style="cursor: pointer; vertical-align: text-bottom;"></img><div id="_dep180" style="display:none">
 <table border="0" class="table table-striped">
 <tr class="a">
 <th>hadoop-mapreduce-client-app</th></tr>
@@ -2445,7 +2455,7 @@ to introspect names of constructor (and factory method) parameters.</p>
 <td>
 <p><b>Description: </b>Apache Hadoop Project POM</p>
 <p><b>Project Licenses: </b><a class="externalLink" href="http://www.apache.org/licenses/LICENSE-2.0.txt">Apache License, Version 2.0</a></p></td></tr></table></div></li>
-<li>org.apache.hadoop:hadoop-yarn-api:jar:2.7.4 (compile) <img id="_img181" src="./images/icon_info_sml.gif" alt="[Information]" onclick="toggleDependencyDetails( '_dep180', '_img181' );" style="cursor: pointer; vertical-align: text-bottom;"></img><div id="_dep180" style="display:none">
+<li>org.apache.hadoop:hadoop-yarn-api:jar:2.7.4 (compile) <img id="_img183" src="./images/icon_info_sml.gif" alt="[Information]" onclick="toggleDependencyDetails( '_dep182', '_img183' );" style="cursor: pointer; vertical-align: text-bottom;"></img><div id="_dep182" style="display:none">
 <table border="0" class="table table-striped">
 <tr class="a">
 <th>hadoop-yarn-api</th></tr>
@@ -2453,7 +2463,7 @@ to introspect names of constructor (and factory method) parameters.</p>
 <td>
 <p><b>Description: </b>Apache Hadoop Project POM</p>
 <p><b>Project Licenses: </b><a class="externalLink" href="http://www.apache.org/licenses/LICENSE-2.0.txt">Apache License, Version 2.0</a></p></td></tr></table></div></li>
-<li>org.apache.hadoop:hadoop-mapreduce-client-core:jar:2.7.4 (compile) <img id="_img183" src="./images/icon_info_sml.gif" alt="[Information]" onclick="toggleDependencyDetails( '_dep182', '_img183' );" style="cursor: pointer; vertical-align: text-bottom;"></img><div id="_dep182" style="display:none">
+<li>org.apache.hadoop:hadoop-mapreduce-client-core:jar:2.7.4 (compile) <img id="_img185" src="./images/icon_info_sml.gif" alt="[Information]" onclick="toggleDependencyDetails( '_dep184', '_img185' );" style="cursor: pointer; vertical-align: text-bottom;"></img><div id="_dep184" style="display:none">
 <table border="0" class="table table-striped">
 <tr class="a">
 <th>hadoop-mapreduce-client-core</th></tr>
@@ -2462,7 +2472,7 @@ to introspect names of constructor (and factory method) parameters.</p>
 <p><b>Description: </b>Apache Hadoop Project POM</p>
 <p><b>Project Licenses: </b><a class="externalLink" href="http://www.apache.org/licenses/LICENSE-2.0.txt">Apache License, Version 2.0</a></p></td></tr></table></div>
 <ul>
-<li>org.apache.hadoop:hadoop-yarn-common:jar:2.7.4 (compile) <img id="_img185" src="./images/icon_info_sml.gif" alt="[Information]" onclick="toggleDependencyDetails( '_dep184', '_img185' );" style="cursor: pointer; vertical-align: text-bottom;"></img><div id="_dep184" style="display:none">
+<li>org.apache.hadoop:hadoop-yarn-common:jar:2.7.4 (compile) <img id="_img187" src="./images/icon_info_sml.gif" alt="[Information]" onclick="toggleDependencyDetails( '_dep186', '_img187' );" style="cursor: pointer; vertical-align: text-bottom;"></img><div id="_dep186" style="display:none">
 <table border="0" class="table table-striped">
 <tr class="a">
 <th>hadoop-yarn-common</th></tr>
@@ -2471,7 +2481,7 @@ to introspect names of constructor (and factory method) parameters.</p>
 <p><b>Description: </b>Apache Hadoop Project POM</p>
 <p><b>Project Licenses: </b><a class="externalLink" href="http://www.apache.org/licenses/LICENSE-2.0.txt">Apache License, Version 2.0</a></p></td></tr></table></div>
 <ul>
-<li>javax.xml.bind:jaxb-api:jar:2.2.12 (compile) <img id="_img187" src="./images/icon_info_sml.gif" alt="[Information]" onclick="toggleDependencyDetails( '_dep186', '_img187' );" style="cursor: pointer; vertical-align: text-bottom;"></img><div id="_dep186" style="display:none">
+<li>javax.xml.bind:jaxb-api:jar:2.2.12 (compile) <img id="_img189" src="./images/icon_info_sml.gif" alt="[Information]" onclick="toggleDependencyDetails( '_dep188', '_img189' );" style="cursor: pointer; vertical-align: text-bottom;"></img><div id="_dep188" style="display:none">
 <table border="0" class="table table-striped">
 <tr class="a">
 <th>Java Architecture for XML Binding</th></tr>
@@ -2480,7 +2490,7 @@ to introspect names of constructor (and factory method) parameters.</p>
 <p><b>Description: </b>JAXB (JSR 222) API</p>
 <p><b>URL: </b><a class="externalLink" href="http://jaxb.java.net/">http://jaxb.java.net/</a></p>
 <p><b>Project Licenses: </b><a class="externalLink" href="https://glassfish.java.net/public/CDDL+GPL_1_1.html">CDDL 1.1</a>, <a class="externalLink" href="https://glassfish.java.net/public/CDDL+GPL_1_1.html">GPL2 w/ CPE</a></p></td></tr></table></div></li>
-<li>com.sun.jersey:jersey-client:jar:1.9 (compile) <img id="_img189" src="./images/icon_info_sml.gif" alt="[Information]" onclick="toggleDependencyDetails( '_dep188', '_img189' );" style="cursor: pointer; vertical-align: text-bottom;"></img><div id="_dep188" style="display:none">
+<li>com.sun.jersey:jersey-client:jar:1.9 (compile) <img id="_img191" src="./images/icon_info_sml.gif" alt="[Information]" onclick="toggleDependencyDetails( '_dep190', '_img191' );" style="cursor: pointer; vertical-align: text-bottom;"></img><div id="_dep190" style="display:none">
 <table border="0" class="table table-striped">
 <tr class="a">
 <th>jersey-client</th></tr>
@@ -2491,7 +2501,7 @@ to introspect names of constructor (and factory method) parameters.</p>
         RESTful Web services.</p>
 <p><b>URL: </b><a class="externalLink" href="https://jersey.java.net/jersey-client/">https://jersey.java.net/jersey-client/</a></p>
 <p><b>Project Licenses: </b><a class="externalLink" href="http://glassfish.java.net/public/CDDL+GPL_1_1.html">CDDL 1.1</a>, <a class="externalLink" href="http://glassfish.java.net/public/CDDL+GPL_1_1.html">GPL2 w/ CPE</a></p></td></tr></table></div></li></ul></li></ul></li>
-<li>org.apache.hadoop:hadoop-mapreduce-client-jobclient:jar:2.7.4 (compile) <img id="_img191" src="./images/icon_info_sml.gif" alt="[Information]" onclick="toggleDependencyDetails( '_dep190', '_img191' );" style="cursor: pointer; vertical-align: text-bottom;"></img><div id="_dep190" style="display:none">
+<li>org.apache.hadoop:hadoop-mapreduce-client-jobclient:jar:2.7.4 (compile) <img id="_img193" src="./images/icon_info_sml.gif" alt="[Information]" onclick="toggleDependencyDetails( '_dep192', '_img193' );" style="cursor: pointer; vertical-align: text-bottom;"></img><div id="_dep192" style="display:none">
 <table border="0" class="table table-striped">
 <tr class="a">
 <th>hadoop-mapreduce-client-jobclient</th></tr>
@@ -2499,7 +2509,7 @@ to introspect names of constructor (and factory method) parameters.</p>
 <td>
 <p><b>Description: </b>Apache Hadoop Project POM</p>
 <p><b>Project Licenses: </b><a class="externalLink" href="http://www.apache.org/licenses/LICENSE-2.0.txt">Apache License, Version 2.0</a></p></td></tr></table></div></li>
-<li>org.apache.hadoop:hadoop-annotations:jar:2.7.4 (compile) <img id="_img193" src="./images/icon_info_sml.gif" alt="[Information]" onclick="toggleDependencyDetails( '_dep192', '_img193' );" style="cursor: pointer; vertical-align: text-bottom;"></img><div id="_dep192" style="display:none">
+<li>org.apache.hadoop:hadoop-annotations:jar:2.7.4 (compile) <img id="_img195" src="./images/icon_info_sml.gif" alt="[Information]" onclick="toggleDependencyDetails( '_dep194', '_img195' );" style="cursor: pointer; vertical-align: text-bottom;"></img><div id="_dep194" style="display:none">
 <table border="0" class="table table-striped">
 <tr class="a">
 <th>Apache Hadoop Annotations</th></tr>
@@ -2507,7 +2517,7 @@ to introspect names of constructor (and factory method) parameters.</p>
 <td>
 <p><b>Description: </b>Apache Hadoop Annotations</p>
 <p><b>Project Licenses: </b><a class="externalLink" href="http://www.apache.org/licenses/LICENSE-2.0.txt">Apache License, Version 2.0</a></p></td></tr></table></div></li></ul></li>
-<li>org.apache.hadoop:hadoop-common:jar:2.7.4 (compile) <img id="_img195" src="./images/icon_info_sml.gif" alt="[Information]" onclick="toggleDependencyDetails( '_dep194', '_img195' );" style="cursor: pointer; vertical-align: text-bottom;"></img><div id="_dep194" style="display:none">
+<li>org.apache.hadoop:hadoop-common:jar:2.7.4 (compile) <img id="_img197" src="./images/icon_info_sml.gif" alt="[Information]" onclick="toggleDependencyDetails( '_dep196', '_img197' );" style="cursor: pointer; vertical-align: text-bottom;"></img><div id="_dep196" style="display:none">
 <table border="0" class="table table-striped">
 <tr class="a">
 <th>Apache Hadoop Common</th></tr>
@@ -2516,7 +2526,7 @@ to introspect names of constructor (and factory method) parameters.</p>
 <p><b>Description: </b>Apache Hadoop Common</p>
 <p><b>Project Licenses: </b><a class="externalLink" href="http://www.apache.org/licenses/LICENSE-2.0.txt">Apache License, Version 2.0</a></p></td></tr></table></div>
 <ul>
-<li>com.google.guava:guava:jar:11.0.2 (compile) <img id="_img197" src="./images/icon_info_sml.gif" alt="[Information]" onclick="toggleDependencyDetails( '_dep196', '_img197' );" style="cursor: pointer; vertical-align: text-bottom;"></img><div id="_dep196" style="display:none">
+<li>com.google.guava:guava:jar:11.0.2 (compile) <img id="_img199" src="./images/icon_info_sml.gif" alt="[Information]" onclick="toggleDependencyDetails( '_dep198', '_img199' );" style="cursor: pointer; vertical-align: text-bottom;"></img><div id="_dep198" style="display:none">
 <table border="0" class="table table-striped">
 <tr class="a">
 <th>Guava: Google Core Libraries for Java</th></tr>
@@ -2534,7 +2544,7 @@ to introspect names of constructor (and factory method) parameters.</p>
     per the JSR-305 spec.</p>
 <p><b>URL: </b><a class="externalLink" href="http://code.google.com/p/guava-libraries/guava">http://code.google.com/p/guava-libraries/guava</a></p>
 <p><b>Project Licenses: </b><a class="externalLink" href="http://www.apache.org/licenses/LICENSE-2.0.txt">The Apache Software L

<TRUNCATED>

[46/51] [partial] hbase-site git commit: Published site at .

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/c54c242b/devapidocs/org/apache/hadoop/hbase/CellScannable.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/CellScannable.html b/devapidocs/org/apache/hadoop/hbase/CellScannable.html
index d50ad63..4d156a7 100644
--- a/devapidocs/org/apache/hadoop/hbase/CellScannable.html
+++ b/devapidocs/org/apache/hadoop/hbase/CellScannable.html
@@ -109,7 +109,7 @@ var activeTableTab = "activeTableTab";
 </dl>
 <hr>
 <br>
-<pre>@InterfaceAudience.Private
+<pre>@InterfaceAudience.Public
 public interface <a href="../../../../src-html/org/apache/hadoop/hbase/CellScannable.html#line.29">CellScannable</a></pre>
 <div class="block">Implementer can return a CellScanner over its Cell content.
  Class name is ugly but mimicing java.util.Iterable only we are about the dumber

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/c54c242b/devapidocs/org/apache/hadoop/hbase/CellScanner.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/CellScanner.html b/devapidocs/org/apache/hadoop/hbase/CellScanner.html
index fd5bbe6..aecd235 100644
--- a/devapidocs/org/apache/hadoop/hbase/CellScanner.html
+++ b/devapidocs/org/apache/hadoop/hbase/CellScanner.html
@@ -109,9 +109,8 @@ var activeTableTab = "activeTableTab";
 </dl>
 <hr>
 <br>
-<pre>@InterfaceAudience.Private
- @InterfaceStability.Unstable
-public interface <a href="../../../../src-html/org/apache/hadoop/hbase/CellScanner.html#line.52">CellScanner</a></pre>
+<pre>@InterfaceAudience.Public
+public interface <a href="../../../../src-html/org/apache/hadoop/hbase/CellScanner.html#line.51">CellScanner</a></pre>
 <div class="block">An interface for iterating through a sequence of cells. Similar to Java's Iterator, but without
  the hasNext() or remove() methods. The hasNext() method is problematic because it may require
  actually loading the next object, which in turn requires storing the previous object somewhere.
@@ -183,7 +182,7 @@ public interface <a href="../../../../src-html/org/apache/hadoop/hbase/CellScann
 <ul class="blockList">
 <li class="blockList">
 <h4>current</h4>
-<pre><a href="../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/CellScanner.html#line.56">current</a>()</pre>
+<pre><a href="../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/CellScanner.html#line.55">current</a>()</pre>
 <dl>
 <dt><span class="returnLabel">Returns:</span></dt>
 <dd>the current Cell which may be mutable</dd>
@@ -196,7 +195,7 @@ public interface <a href="../../../../src-html/org/apache/hadoop/hbase/CellScann
 <ul class="blockListLast">
 <li class="blockList">
 <h4>advance</h4>
-<pre>boolean&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/CellScanner.html#line.63">advance</a>()
+<pre>boolean&nbsp;<a href="../../../../src-html/org/apache/hadoop/hbase/CellScanner.html#line.62">advance</a>()
          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">Advance the scanner 1 cell.</div>
 <dl>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/c54c242b/devapidocs/org/apache/hadoop/hbase/backup/package-tree.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/backup/package-tree.html b/devapidocs/org/apache/hadoop/hbase/backup/package-tree.html
index 7d49754..922f98e 100644
--- a/devapidocs/org/apache/hadoop/hbase/backup/package-tree.html
+++ b/devapidocs/org/apache/hadoop/hbase/backup/package-tree.html
@@ -167,9 +167,9 @@
 <ul>
 <li type="circle">java.lang.<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Enum.html?is-external=true" title="class or interface in java.lang"><span class="typeNameLink">Enum</span></a>&lt;E&gt; (implements java.lang.<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Comparable.html?is-external=true" title="class or interface in java.lang">Comparable</a>&lt;T&gt;, java.io.<a href="http://docs.oracle.com/javase/8/docs/api/java/io/Serializable.html?is-external=true" title="class or interface in java.io">Serializable</a>)
 <ul>
+<li type="circle">org.apache.hadoop.hbase.backup.<a href="../../../../../org/apache/hadoop/hbase/backup/BackupInfo.BackupState.html" title="enum in org.apache.hadoop.hbase.backup"><span class="typeNameLink">BackupInfo.BackupState</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.backup.<a href="../../../../../org/apache/hadoop/hbase/backup/BackupInfo.BackupPhase.html" title="enum in org.apache.hadoop.hbase.backup"><span class="typeNameLink">BackupInfo.BackupPhase</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.backup.<a href="../../../../../org/apache/hadoop/hbase/backup/BackupType.html" title="enum in org.apache.hadoop.hbase.backup"><span class="typeNameLink">BackupType</span></a></li>
-<li type="circle">org.apache.hadoop.hbase.backup.<a href="../../../../../org/apache/hadoop/hbase/backup/BackupInfo.BackupState.html" title="enum in org.apache.hadoop.hbase.backup"><span class="typeNameLink">BackupInfo.BackupState</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.backup.<a href="../../../../../org/apache/hadoop/hbase/backup/BackupRestoreConstants.BackupCommand.html" title="enum in org.apache.hadoop.hbase.backup"><span class="typeNameLink">BackupRestoreConstants.BackupCommand</span></a></li>
 </ul>
 </li>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/c54c242b/devapidocs/org/apache/hadoop/hbase/class-use/HRegionInfo.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/class-use/HRegionInfo.html b/devapidocs/org/apache/hadoop/hbase/class-use/HRegionInfo.html
index cec48c8..d54658b 100644
--- a/devapidocs/org/apache/hadoop/hbase/class-use/HRegionInfo.html
+++ b/devapidocs/org/apache/hadoop/hbase/class-use/HRegionInfo.html
@@ -107,10 +107,6 @@ Input/OutputFormats, a table indexing MapReduce job, and utility methods.</div>
 </td>
 </tr>
 <tr class="altColor">
-<td class="colFirst"><a href="#org.apache.hadoop.hbase.regionserver.wal">org.apache.hadoop.hbase.regionserver.wal</a></td>
-<td class="colLast">&nbsp;</td>
-</tr>
-<tr class="rowColor">
 <td class="colFirst"><a href="#org.apache.hadoop.hbase.util">org.apache.hadoop.hbase.util</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
@@ -653,34 +649,6 @@ Input/OutputFormats, a table indexing MapReduce job, and utility methods.</div>
 </tbody>
 </table>
 </li>
-<li class="blockList"><a name="org.apache.hadoop.hbase.regionserver.wal">
-<!--   -->
-</a>
-<h3>Uses of <a href="../../../../../org/apache/hadoop/hbase/HRegionInfo.html" title="class in org.apache.hadoop.hbase">HRegionInfo</a> in <a href="../../../../../org/apache/hadoop/hbase/regionserver/wal/package-summary.html">org.apache.hadoop.hbase.regionserver.wal</a></h3>
-<table class="useSummary" border="0" cellpadding="3" cellspacing="0" summary="Use table, listing methods, and an explanation">
-<caption><span>Methods in <a href="../../../../../org/apache/hadoop/hbase/regionserver/wal/package-summary.html">org.apache.hadoop.hbase.regionserver.wal</a> with parameters of type <a href="../../../../../org/apache/hadoop/hbase/HRegionInfo.html" title="class in org.apache.hadoop.hbase">HRegionInfo</a></span><span class="tabEnd">&nbsp;</span></caption>
-<tr>
-<th class="colFirst" scope="col">Modifier and Type</th>
-<th class="colLast" scope="col">Method and Description</th>
-</tr>
-<tbody>
-<tr class="altColor">
-<td class="colFirst"><code>void</code></td>
-<td class="colLast"><span class="typeNameLabel">WALActionsListener.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/wal/WALActionsListener.html#visitLogEntryBeforeWrite-org.apache.hadoop.hbase.HRegionInfo-org.apache.hadoop.hbase.wal.WALKey-org.apache.hadoop.hbase.wal.WALEdit-">visitLogEntryBeforeWrite</a></span>(<a href="../../../../../org/apache/hadoop/hbase/HRegionInfo.html" title="class in org.apache.hadoop.hbase">HRegionInfo</a>&nbsp;info,
-                        <a href="../../../../../org/apache/hadoop/hbase/wal/WALKey.html" title="class in org.apache.hadoop.hbase.wal">WALKey</a>&nbsp;logKey,
-                        <a href="../../../../../org/apache/hadoop/hbase/wal/WALEdit.html" title="class in org.apache.hadoop.hbase.wal">WALEdit</a>&nbsp;logEdit)</code>
-<div class="block">Called before each write.</div>
-</td>
-</tr>
-<tr class="rowColor">
-<td class="colFirst"><code>void</code></td>
-<td class="colLast"><span class="typeNameLabel">WALActionsListener.Base.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/wal/WALActionsListener.Base.html#visitLogEntryBeforeWrite-org.apache.hadoop.hbase.HRegionInfo-org.apache.hadoop.hbase.wal.WALKey-org.apache.hadoop.hbase.wal.WALEdit-">visitLogEntryBeforeWrite</a></span>(<a href="../../../../../org/apache/hadoop/hbase/HRegionInfo.html" title="class in org.apache.hadoop.hbase">HRegionInfo</a>&nbsp;info,
-                        <a href="../../../../../org/apache/hadoop/hbase/wal/WALKey.html" title="class in org.apache.hadoop.hbase.wal">WALKey</a>&nbsp;logKey,
-                        <a href="../../../../../org/apache/hadoop/hbase/wal/WALEdit.html" title="class in org.apache.hadoop.hbase.wal">WALEdit</a>&nbsp;logEdit)</code>&nbsp;</td>
-</tr>
-</tbody>
-</table>
-</li>
 <li class="blockList"><a name="org.apache.hadoop.hbase.util">
 <!--   -->
 </a>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/c54c242b/devapidocs/org/apache/hadoop/hbase/client/RpcRetryingCallerImpl.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/client/RpcRetryingCallerImpl.html b/devapidocs/org/apache/hadoop/hbase/client/RpcRetryingCallerImpl.html
index f9c3554..bedcb79 100644
--- a/devapidocs/org/apache/hadoop/hbase/client/RpcRetryingCallerImpl.html
+++ b/devapidocs/org/apache/hadoop/hbase/client/RpcRetryingCallerImpl.html
@@ -114,7 +114,7 @@ var activeTableTab = "activeTableTab";
 <hr>
 <br>
 <pre>@InterfaceAudience.Private
-public class <a href="../../../../../src-html/org/apache/hadoop/hbase/client/RpcRetryingCallerImpl.html#line.53">RpcRetryingCallerImpl</a>&lt;T&gt;
+public class <a href="../../../../../src-html/org/apache/hadoop/hbase/client/RpcRetryingCallerImpl.html#line.54">RpcRetryingCallerImpl</a>&lt;T&gt;
 extends <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a>
 implements <a href="../../../../../org/apache/hadoop/hbase/client/RpcRetryingCaller.html" title="interface in org.apache.hadoop.hbase.client">RpcRetryingCaller</a>&lt;T&gt;</pre>
 <div class="block">Runs an rpc'ing <a href="../../../../../org/apache/hadoop/hbase/client/RetryingCallable.html" title="interface in org.apache.hadoop.hbase.client"><code>RetryingCallable</code></a>. Sets into rpc client
@@ -291,7 +291,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/client/RpcRetryingCal
 <ul class="blockList">
 <li class="blockList">
 <h4>LOG</h4>
-<pre>public static final&nbsp;org.apache.commons.logging.Log <a href="../../../../../src-html/org/apache/hadoop/hbase/client/RpcRetryingCallerImpl.html#line.55">LOG</a></pre>
+<pre>public static final&nbsp;org.apache.commons.logging.Log <a href="../../../../../src-html/org/apache/hadoop/hbase/client/RpcRetryingCallerImpl.html#line.56">LOG</a></pre>
 </li>
 </ul>
 <a name="startLogErrorsCnt">
@@ -300,7 +300,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/client/RpcRetryingCal
 <ul class="blockList">
 <li class="blockList">
 <h4>startLogErrorsCnt</h4>
-<pre>private final&nbsp;int <a href="../../../../../src-html/org/apache/hadoop/hbase/client/RpcRetryingCallerImpl.html#line.58">startLogErrorsCnt</a></pre>
+<pre>private final&nbsp;int <a href="../../../../../src-html/org/apache/hadoop/hbase/client/RpcRetryingCallerImpl.html#line.59">startLogErrorsCnt</a></pre>
 <div class="block">How many retries are allowed before we start to log</div>
 </li>
 </ul>
@@ -310,7 +310,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/client/RpcRetryingCal
 <ul class="blockList">
 <li class="blockList">
 <h4>pause</h4>
-<pre>private final&nbsp;long <a href="../../../../../src-html/org/apache/hadoop/hbase/client/RpcRetryingCallerImpl.html#line.60">pause</a></pre>
+<pre>private final&nbsp;long <a href="../../../../../src-html/org/apache/hadoop/hbase/client/RpcRetryingCallerImpl.html#line.61">pause</a></pre>
 </li>
 </ul>
 <a name="pauseForCQTBE">
@@ -319,7 +319,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/client/RpcRetryingCal
 <ul class="blockList">
 <li class="blockList">
 <h4>pauseForCQTBE</h4>
-<pre>private final&nbsp;long <a href="../../../../../src-html/org/apache/hadoop/hbase/client/RpcRetryingCallerImpl.html#line.61">pauseForCQTBE</a></pre>
+<pre>private final&nbsp;long <a href="../../../../../src-html/org/apache/hadoop/hbase/client/RpcRetryingCallerImpl.html#line.62">pauseForCQTBE</a></pre>
 </li>
 </ul>
 <a name="maxAttempts">
@@ -328,7 +328,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/client/RpcRetryingCal
 <ul class="blockList">
 <li class="blockList">
 <h4>maxAttempts</h4>
-<pre>private final&nbsp;int <a href="../../../../../src-html/org/apache/hadoop/hbase/client/RpcRetryingCallerImpl.html#line.62">maxAttempts</a></pre>
+<pre>private final&nbsp;int <a href="../../../../../src-html/org/apache/hadoop/hbase/client/RpcRetryingCallerImpl.html#line.63">maxAttempts</a></pre>
 </li>
 </ul>
 <a name="rpcTimeout">
@@ -337,7 +337,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/client/RpcRetryingCal
 <ul class="blockList">
 <li class="blockList">
 <h4>rpcTimeout</h4>
-<pre>private final&nbsp;int <a href="../../../../../src-html/org/apache/hadoop/hbase/client/RpcRetryingCallerImpl.html#line.63">rpcTimeout</a></pre>
+<pre>private final&nbsp;int <a href="../../../../../src-html/org/apache/hadoop/hbase/client/RpcRetryingCallerImpl.html#line.64">rpcTimeout</a></pre>
 </li>
 </ul>
 <a name="cancelled">
@@ -346,7 +346,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/client/RpcRetryingCal
 <ul class="blockList">
 <li class="blockList">
 <h4>cancelled</h4>
-<pre>private final&nbsp;<a href="http://docs.oracle.com/javase/8/docs/api/java/util/concurrent/atomic/AtomicBoolean.html?is-external=true" title="class or interface in java.util.concurrent.atomic">AtomicBoolean</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/client/RpcRetryingCallerImpl.html#line.64">cancelled</a></pre>
+<pre>private final&nbsp;<a href="http://docs.oracle.com/javase/8/docs/api/java/util/concurrent/atomic/AtomicBoolean.html?is-external=true" title="class or interface in java.util.concurrent.atomic">AtomicBoolean</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/client/RpcRetryingCallerImpl.html#line.65">cancelled</a></pre>
 </li>
 </ul>
 <a name="interceptor">
@@ -355,7 +355,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/client/RpcRetryingCal
 <ul class="blockList">
 <li class="blockList">
 <h4>interceptor</h4>
-<pre>private final&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/RetryingCallerInterceptor.html" title="class in org.apache.hadoop.hbase.client">RetryingCallerInterceptor</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/client/RpcRetryingCallerImpl.html#line.65">interceptor</a></pre>
+<pre>private final&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/RetryingCallerInterceptor.html" title="class in org.apache.hadoop.hbase.client">RetryingCallerInterceptor</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/client/RpcRetryingCallerImpl.html#line.66">interceptor</a></pre>
 </li>
 </ul>
 <a name="context">
@@ -364,7 +364,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/client/RpcRetryingCal
 <ul class="blockList">
 <li class="blockList">
 <h4>context</h4>
-<pre>private final&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/RetryingCallerInterceptorContext.html" title="class in org.apache.hadoop.hbase.client">RetryingCallerInterceptorContext</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/client/RpcRetryingCallerImpl.html#line.66">context</a></pre>
+<pre>private final&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/RetryingCallerInterceptorContext.html" title="class in org.apache.hadoop.hbase.client">RetryingCallerInterceptorContext</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/client/RpcRetryingCallerImpl.html#line.67">context</a></pre>
 </li>
 </ul>
 <a name="tracker">
@@ -373,7 +373,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/client/RpcRetryingCal
 <ul class="blockListLast">
 <li class="blockList">
 <h4>tracker</h4>
-<pre>private final&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/RetryingTimeTracker.html" title="class in org.apache.hadoop.hbase.client">RetryingTimeTracker</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/client/RpcRetryingCallerImpl.html#line.67">tracker</a></pre>
+<pre>private final&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/RetryingTimeTracker.html" title="class in org.apache.hadoop.hbase.client">RetryingTimeTracker</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/client/RpcRetryingCallerImpl.html#line.68">tracker</a></pre>
 </li>
 </ul>
 </li>
@@ -390,7 +390,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/client/RpcRetryingCal
 <ul class="blockList">
 <li class="blockList">
 <h4>RpcRetryingCallerImpl</h4>
-<pre>public&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/RpcRetryingCallerImpl.html#line.69">RpcRetryingCallerImpl</a>(long&nbsp;pause,
+<pre>public&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/RpcRetryingCallerImpl.html#line.70">RpcRetryingCallerImpl</a>(long&nbsp;pause,
                              long&nbsp;pauseForCQTBE,
                              int&nbsp;retries,
                              int&nbsp;startLogErrorsCnt)</pre>
@@ -402,7 +402,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/client/RpcRetryingCal
 <ul class="blockListLast">
 <li class="blockList">
 <h4>RpcRetryingCallerImpl</h4>
-<pre>public&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/RpcRetryingCallerImpl.html#line.74">RpcRetryingCallerImpl</a>(long&nbsp;pause,
+<pre>public&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/RpcRetryingCallerImpl.html#line.75">RpcRetryingCallerImpl</a>(long&nbsp;pause,
                              long&nbsp;pauseForCQTBE,
                              int&nbsp;retries,
                              <a href="../../../../../org/apache/hadoop/hbase/client/RetryingCallerInterceptor.html" title="class in org.apache.hadoop.hbase.client">RetryingCallerInterceptor</a>&nbsp;interceptor,
@@ -424,7 +424,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/client/RpcRetryingCal
 <ul class="blockList">
 <li class="blockList">
 <h4>cancel</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/RpcRetryingCallerImpl.html#line.87">cancel</a>()</pre>
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/RpcRetryingCallerImpl.html#line.88">cancel</a>()</pre>
 <dl>
 <dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
 <dd><code><a href="../../../../../org/apache/hadoop/hbase/client/RpcRetryingCaller.html#cancel--">cancel</a></code>&nbsp;in interface&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/client/RpcRetryingCaller.html" title="interface in org.apache.hadoop.hbase.client">RpcRetryingCaller</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/client/RpcRetryingCallerImpl.html" title="type parameter in RpcRetryingCallerImpl">T</a>&gt;</code></dd>
@@ -437,7 +437,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/client/RpcRetryingCal
 <ul class="blockList">
 <li class="blockList">
 <h4>callWithRetries</h4>
-<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/RpcRetryingCallerImpl.html" title="type parameter in RpcRetryingCallerImpl">T</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/RpcRetryingCallerImpl.html#line.95">callWithRetries</a>(<a href="../../../../../org/apache/hadoop/hbase/client/RetryingCallable.html" title="interface in org.apache.hadoop.hbase.client">RetryingCallable</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/client/RpcRetryingCallerImpl.html" title="type parameter in RpcRetryingCallerImpl">T</a>&gt;&nbsp;callable,
+<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/RpcRetryingCallerImpl.html" title="type parameter in RpcRetryingCallerImpl">T</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/RpcRetryingCallerImpl.html#line.96">callWithRetries</a>(<a href="../../../../../org/apache/hadoop/hbase/client/RetryingCallable.html" title="interface in org.apache.hadoop.hbase.client">RetryingCallable</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/client/RpcRetryingCallerImpl.html" title="type parameter in RpcRetryingCallerImpl">T</a>&gt;&nbsp;callable,
                          int&nbsp;callTimeout)
                   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>,
                          <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/RuntimeException.html?is-external=true" title="class or interface in java.lang">RuntimeException</a></pre>
@@ -463,7 +463,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/client/RpcRetryingCal
 <ul class="blockList">
 <li class="blockList">
 <h4>singleCallDuration</h4>
-<pre>private&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/RpcRetryingCallerImpl.html#line.171">singleCallDuration</a>(long&nbsp;expectedSleep)</pre>
+<pre>private&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/RpcRetryingCallerImpl.html#line.182">singleCallDuration</a>(long&nbsp;expectedSleep)</pre>
 <dl>
 <dt><span class="returnLabel">Returns:</span></dt>
 <dd>Calculate how long a single call took</dd>
@@ -476,7 +476,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/client/RpcRetryingCal
 <ul class="blockList">
 <li class="blockList">
 <h4>callWithoutRetries</h4>
-<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/RpcRetryingCallerImpl.html" title="type parameter in RpcRetryingCallerImpl">T</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/RpcRetryingCallerImpl.html#line.176">callWithoutRetries</a>(<a href="../../../../../org/apache/hadoop/hbase/client/RetryingCallable.html" title="interface in org.apache.hadoop.hbase.client">RetryingCallable</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/client/RpcRetryingCallerImpl.html" title="type parameter in RpcRetryingCallerImpl">T</a>&gt;&nbsp;callable,
+<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/RpcRetryingCallerImpl.html" title="type parameter in RpcRetryingCallerImpl">T</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/RpcRetryingCallerImpl.html#line.187">callWithoutRetries</a>(<a href="../../../../../org/apache/hadoop/hbase/client/RetryingCallable.html" title="interface in org.apache.hadoop.hbase.client">RetryingCallable</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/client/RpcRetryingCallerImpl.html" title="type parameter in RpcRetryingCallerImpl">T</a>&gt;&nbsp;callable,
                             int&nbsp;callTimeout)
                      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>,
                             <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/RuntimeException.html?is-external=true" title="class or interface in java.lang">RuntimeException</a></pre>
@@ -502,7 +502,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/client/RpcRetryingCal
 <ul class="blockList">
 <li class="blockList">
 <h4>translateException</h4>
-<pre>static&nbsp;<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Throwable.html?is-external=true" title="class or interface in java.lang">Throwable</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/RpcRetryingCallerImpl.html#line.200">translateException</a>(<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Throwable.html?is-external=true" title="class or interface in java.lang">Throwable</a>&nbsp;t)
+<pre>static&nbsp;<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Throwable.html?is-external=true" title="class or interface in java.lang">Throwable</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/RpcRetryingCallerImpl.html#line.211">translateException</a>(<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Throwable.html?is-external=true" title="class or interface in java.lang">Throwable</a>&nbsp;t)
                              throws <a href="../../../../../org/apache/hadoop/hbase/DoNotRetryIOException.html" title="class in org.apache.hadoop.hbase">DoNotRetryIOException</a></pre>
 <div class="block">Get the good or the remote exception if any, throws the DoNotRetryIOException.</div>
 <dl>
@@ -521,7 +521,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/client/RpcRetryingCal
 <ul class="blockList">
 <li class="blockList">
 <h4>getTimeout</h4>
-<pre>private&nbsp;int&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/RpcRetryingCallerImpl.html#line.228">getTimeout</a>(int&nbsp;callTimeout)</pre>
+<pre>private&nbsp;int&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/RpcRetryingCallerImpl.html#line.239">getTimeout</a>(int&nbsp;callTimeout)</pre>
 </li>
 </ul>
 <a name="toString--">
@@ -530,7 +530,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/client/RpcRetryingCal
 <ul class="blockListLast">
 <li class="blockList">
 <h4>toString</h4>
-<pre>public&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/client/RpcRetryingCallerImpl.html#line.237">toString</a>()</pre>
+<pre>public&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/client/RpcRetryingCallerImpl.html#line.248">toString</a>()</pre>
 <dl>
 <dt><span class="overrideSpecifyLabel">Overrides:</span></dt>
 <dd><code><a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#toString--" title="class or interface in java.lang">toString</a></code>&nbsp;in class&nbsp;<code><a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a></code></dd>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/c54c242b/devapidocs/org/apache/hadoop/hbase/client/ZKAsyncRegistry.Converter.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/client/ZKAsyncRegistry.Converter.html b/devapidocs/org/apache/hadoop/hbase/client/ZKAsyncRegistry.Converter.html
new file mode 100644
index 0000000..08e4fcd
--- /dev/null
+++ b/devapidocs/org/apache/hadoop/hbase/client/ZKAsyncRegistry.Converter.html
@@ -0,0 +1,231 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<!-- NewPage -->
+<html lang="en">
+<head>
+<!-- Generated by javadoc -->
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title>ZKAsyncRegistry.Converter (Apache HBase 3.0.0-SNAPSHOT API)</title>
+<link rel="stylesheet" type="text/css" href="../../../../../stylesheet.css" title="Style">
+<script type="text/javascript" src="../../../../../script.js"></script>
+</head>
+<body>
+<script type="text/javascript"><!--
+    try {
+        if (location.href.indexOf('is-external=true') == -1) {
+            parent.document.title="ZKAsyncRegistry.Converter (Apache HBase 3.0.0-SNAPSHOT API)";
+        }
+    }
+    catch(err) {
+    }
+//-->
+var methods = {"i0":6};
+var tabs = {65535:["t0","All Methods"],2:["t2","Instance Methods"],4:["t3","Abstract Methods"]};
+var altColor = "altColor";
+var rowColor = "rowColor";
+var tableTab = "tableTab";
+var activeTableTab = "activeTableTab";
+</script>
+<noscript>
+<div>JavaScript is disabled on your browser.</div>
+</noscript>
+<!-- ========= START OF TOP NAVBAR ======= -->
+<div class="topNav"><a name="navbar.top">
+<!--   -->
+</a>
+<div class="skipNav"><a href="#skip.navbar.top" title="Skip navigation links">Skip navigation links</a></div>
+<a name="navbar.top.firstrow">
+<!--   -->
+</a>
+<ul class="navList" title="Navigation">
+<li><a href="../../../../../overview-summary.html">Overview</a></li>
+<li><a href="package-summary.html">Package</a></li>
+<li class="navBarCell1Rev">Class</li>
+<li><a href="class-use/ZKAsyncRegistry.Converter.html">Use</a></li>
+<li><a href="package-tree.html">Tree</a></li>
+<li><a href="../../../../../deprecated-list.html">Deprecated</a></li>
+<li><a href="../../../../../index-all.html">Index</a></li>
+<li><a href="../../../../../help-doc.html">Help</a></li>
+</ul>
+</div>
+<div class="subNav">
+<ul class="navList">
+<li><a href="../../../../../org/apache/hadoop/hbase/client/ZKAsyncRegistry.html" title="class in org.apache.hadoop.hbase.client"><span class="typeNameLink">Prev&nbsp;Class</span></a></li>
+<li>Next&nbsp;Class</li>
+</ul>
+<ul class="navList">
+<li><a href="../../../../../index.html?org/apache/hadoop/hbase/client/ZKAsyncRegistry.Converter.html" target="_top">Frames</a></li>
+<li><a href="ZKAsyncRegistry.Converter.html" target="_top">No&nbsp;Frames</a></li>
+</ul>
+<ul class="navList" id="allclasses_navbar_top">
+<li><a href="../../../../../allclasses-noframe.html">All&nbsp;Classes</a></li>
+</ul>
+<div>
+<script type="text/javascript"><!--
+  allClassesLink = document.getElementById("allclasses_navbar_top");
+  if(window==top) {
+    allClassesLink.style.display = "block";
+  }
+  else {
+    allClassesLink.style.display = "none";
+  }
+  //-->
+</script>
+</div>
+<div>
+<ul class="subNavList">
+<li>Summary:&nbsp;</li>
+<li>Nested&nbsp;|&nbsp;</li>
+<li>Field&nbsp;|&nbsp;</li>
+<li>Constr&nbsp;|&nbsp;</li>
+<li><a href="#method.summary">Method</a></li>
+</ul>
+<ul class="subNavList">
+<li>Detail:&nbsp;</li>
+<li>Field&nbsp;|&nbsp;</li>
+<li>Constr&nbsp;|&nbsp;</li>
+<li><a href="#method.detail">Method</a></li>
+</ul>
+</div>
+<a name="skip.navbar.top">
+<!--   -->
+</a></div>
+<!-- ========= END OF TOP NAVBAR ========= -->
+<!-- ======== START OF CLASS DATA ======== -->
+<div class="header">
+<div class="subTitle">org.apache.hadoop.hbase.client</div>
+<h2 title="Interface ZKAsyncRegistry.Converter" class="title">Interface ZKAsyncRegistry.Converter&lt;T&gt;</h2>
+</div>
+<div class="contentContainer">
+<div class="description">
+<ul class="blockList">
+<li class="blockList">
+<dl>
+<dt>Enclosing class:</dt>
+<dd><a href="../../../../../org/apache/hadoop/hbase/client/ZKAsyncRegistry.html" title="class in org.apache.hadoop.hbase.client">ZKAsyncRegistry</a></dd>
+</dl>
+<hr>
+<br>
+<pre>private static interface <a href="../../../../../src-html/org/apache/hadoop/hbase/client/ZKAsyncRegistry.html#line.66">ZKAsyncRegistry.Converter</a>&lt;T&gt;</pre>
+</li>
+</ul>
+</div>
+<div class="summary">
+<ul class="blockList">
+<li class="blockList">
+<!-- ========== METHOD SUMMARY =========== -->
+<ul class="blockList">
+<li class="blockList"><a name="method.summary">
+<!--   -->
+</a>
+<h3>Method Summary</h3>
+<table class="memberSummary" border="0" cellpadding="3" cellspacing="0" summary="Method Summary table, listing methods, and an explanation">
+<caption><span id="t0" class="activeTableTab"><span>All Methods</span><span class="tabEnd">&nbsp;</span></span><span id="t2" class="tableTab"><span><a href="javascript:show(2);">Instance Methods</a></span><span class="tabEnd">&nbsp;</span></span><span id="t3" class="tableTab"><span><a href="javascript:show(4);">Abstract Methods</a></span><span class="tabEnd">&nbsp;</span></span></caption>
+<tr>
+<th class="colFirst" scope="col">Modifier and Type</th>
+<th class="colLast" scope="col">Method and Description</th>
+</tr>
+<tr id="i0" class="altColor">
+<td class="colFirst"><code><a href="../../../../../org/apache/hadoop/hbase/client/ZKAsyncRegistry.Converter.html" title="type parameter in ZKAsyncRegistry.Converter">T</a></code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/client/ZKAsyncRegistry.Converter.html#convert-byte:A-">convert</a></span>(byte[]&nbsp;data)</code>&nbsp;</td>
+</tr>
+</table>
+</li>
+</ul>
+</li>
+</ul>
+</div>
+<div class="details">
+<ul class="blockList">
+<li class="blockList">
+<!-- ============ METHOD DETAIL ========== -->
+<ul class="blockList">
+<li class="blockList"><a name="method.detail">
+<!--   -->
+</a>
+<h3>Method Detail</h3>
+<a name="convert-byte:A-">
+<!--   -->
+</a>
+<ul class="blockListLast">
+<li class="blockList">
+<h4>convert</h4>
+<pre><a href="../../../../../org/apache/hadoop/hbase/client/ZKAsyncRegistry.Converter.html" title="type parameter in ZKAsyncRegistry.Converter">T</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/ZKAsyncRegistry.Converter.html#line.67">convert</a>(byte[]&nbsp;data)
+   throws <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Exception.html?is-external=true" title="class or interface in java.lang">Exception</a></pre>
+<dl>
+<dt><span class="throwsLabel">Throws:</span></dt>
+<dd><code><a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Exception.html?is-external=true" title="class or interface in java.lang">Exception</a></code></dd>
+</dl>
+</li>
+</ul>
+</li>
+</ul>
+</li>
+</ul>
+</div>
+</div>
+<!-- ========= END OF CLASS DATA ========= -->
+<!-- ======= START OF BOTTOM NAVBAR ====== -->
+<div class="bottomNav"><a name="navbar.bottom">
+<!--   -->
+</a>
+<div class="skipNav"><a href="#skip.navbar.bottom" title="Skip navigation links">Skip navigation links</a></div>
+<a name="navbar.bottom.firstrow">
+<!--   -->
+</a>
+<ul class="navList" title="Navigation">
+<li><a href="../../../../../overview-summary.html">Overview</a></li>
+<li><a href="package-summary.html">Package</a></li>
+<li class="navBarCell1Rev">Class</li>
+<li><a href="class-use/ZKAsyncRegistry.Converter.html">Use</a></li>
+<li><a href="package-tree.html">Tree</a></li>
+<li><a href="../../../../../deprecated-list.html">Deprecated</a></li>
+<li><a href="../../../../../index-all.html">Index</a></li>
+<li><a href="../../../../../help-doc.html">Help</a></li>
+</ul>
+</div>
+<div class="subNav">
+<ul class="navList">
+<li><a href="../../../../../org/apache/hadoop/hbase/client/ZKAsyncRegistry.html" title="class in org.apache.hadoop.hbase.client"><span class="typeNameLink">Prev&nbsp;Class</span></a></li>
+<li>Next&nbsp;Class</li>
+</ul>
+<ul class="navList">
+<li><a href="../../../../../index.html?org/apache/hadoop/hbase/client/ZKAsyncRegistry.Converter.html" target="_top">Frames</a></li>
+<li><a href="ZKAsyncRegistry.Converter.html" target="_top">No&nbsp;Frames</a></li>
+</ul>
+<ul class="navList" id="allclasses_navbar_bottom">
+<li><a href="../../../../../allclasses-noframe.html">All&nbsp;Classes</a></li>
+</ul>
+<div>
+<script type="text/javascript"><!--
+  allClassesLink = document.getElementById("allclasses_navbar_bottom");
+  if(window==top) {
+    allClassesLink.style.display = "block";
+  }
+  else {
+    allClassesLink.style.display = "none";
+  }
+  //-->
+</script>
+</div>
+<div>
+<ul class="subNavList">
+<li>Summary:&nbsp;</li>
+<li>Nested&nbsp;|&nbsp;</li>
+<li>Field&nbsp;|&nbsp;</li>
+<li>Constr&nbsp;|&nbsp;</li>
+<li><a href="#method.summary">Method</a></li>
+</ul>
+<ul class="subNavList">
+<li>Detail:&nbsp;</li>
+<li>Field&nbsp;|&nbsp;</li>
+<li>Constr&nbsp;|&nbsp;</li>
+<li><a href="#method.detail">Method</a></li>
+</ul>
+</div>
+<a name="skip.navbar.bottom">
+<!--   -->
+</a></div>
+<!-- ======== END OF BOTTOM NAVBAR ======= -->
+<p class="legalCopy"><small>Copyright &#169; 2007&#x2013;2017 <a href="https://www.apache.org/">The Apache Software Foundation</a>. All rights reserved.</small></p>
+</body>
+</html>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/c54c242b/devapidocs/org/apache/hadoop/hbase/client/ZKAsyncRegistry.CuratorEventProcessor.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/client/ZKAsyncRegistry.CuratorEventProcessor.html b/devapidocs/org/apache/hadoop/hbase/client/ZKAsyncRegistry.CuratorEventProcessor.html
deleted file mode 100644
index 4ca11e4..0000000
--- a/devapidocs/org/apache/hadoop/hbase/client/ZKAsyncRegistry.CuratorEventProcessor.html
+++ /dev/null
@@ -1,231 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
-<!-- NewPage -->
-<html lang="en">
-<head>
-<!-- Generated by javadoc -->
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<title>ZKAsyncRegistry.CuratorEventProcessor (Apache HBase 3.0.0-SNAPSHOT API)</title>
-<link rel="stylesheet" type="text/css" href="../../../../../stylesheet.css" title="Style">
-<script type="text/javascript" src="../../../../../script.js"></script>
-</head>
-<body>
-<script type="text/javascript"><!--
-    try {
-        if (location.href.indexOf('is-external=true') == -1) {
-            parent.document.title="ZKAsyncRegistry.CuratorEventProcessor (Apache HBase 3.0.0-SNAPSHOT API)";
-        }
-    }
-    catch(err) {
-    }
-//-->
-var methods = {"i0":6};
-var tabs = {65535:["t0","All Methods"],2:["t2","Instance Methods"],4:["t3","Abstract Methods"]};
-var altColor = "altColor";
-var rowColor = "rowColor";
-var tableTab = "tableTab";
-var activeTableTab = "activeTableTab";
-</script>
-<noscript>
-<div>JavaScript is disabled on your browser.</div>
-</noscript>
-<!-- ========= START OF TOP NAVBAR ======= -->
-<div class="topNav"><a name="navbar.top">
-<!--   -->
-</a>
-<div class="skipNav"><a href="#skip.navbar.top" title="Skip navigation links">Skip navigation links</a></div>
-<a name="navbar.top.firstrow">
-<!--   -->
-</a>
-<ul class="navList" title="Navigation">
-<li><a href="../../../../../overview-summary.html">Overview</a></li>
-<li><a href="package-summary.html">Package</a></li>
-<li class="navBarCell1Rev">Class</li>
-<li><a href="class-use/ZKAsyncRegistry.CuratorEventProcessor.html">Use</a></li>
-<li><a href="package-tree.html">Tree</a></li>
-<li><a href="../../../../../deprecated-list.html">Deprecated</a></li>
-<li><a href="../../../../../index-all.html">Index</a></li>
-<li><a href="../../../../../help-doc.html">Help</a></li>
-</ul>
-</div>
-<div class="subNav">
-<ul class="navList">
-<li><a href="../../../../../org/apache/hadoop/hbase/client/ZKAsyncRegistry.html" title="class in org.apache.hadoop.hbase.client"><span class="typeNameLink">Prev&nbsp;Class</span></a></li>
-<li>Next&nbsp;Class</li>
-</ul>
-<ul class="navList">
-<li><a href="../../../../../index.html?org/apache/hadoop/hbase/client/ZKAsyncRegistry.CuratorEventProcessor.html" target="_top">Frames</a></li>
-<li><a href="ZKAsyncRegistry.CuratorEventProcessor.html" target="_top">No&nbsp;Frames</a></li>
-</ul>
-<ul class="navList" id="allclasses_navbar_top">
-<li><a href="../../../../../allclasses-noframe.html">All&nbsp;Classes</a></li>
-</ul>
-<div>
-<script type="text/javascript"><!--
-  allClassesLink = document.getElementById("allclasses_navbar_top");
-  if(window==top) {
-    allClassesLink.style.display = "block";
-  }
-  else {
-    allClassesLink.style.display = "none";
-  }
-  //-->
-</script>
-</div>
-<div>
-<ul class="subNavList">
-<li>Summary:&nbsp;</li>
-<li>Nested&nbsp;|&nbsp;</li>
-<li>Field&nbsp;|&nbsp;</li>
-<li>Constr&nbsp;|&nbsp;</li>
-<li><a href="#method.summary">Method</a></li>
-</ul>
-<ul class="subNavList">
-<li>Detail:&nbsp;</li>
-<li>Field&nbsp;|&nbsp;</li>
-<li>Constr&nbsp;|&nbsp;</li>
-<li><a href="#method.detail">Method</a></li>
-</ul>
-</div>
-<a name="skip.navbar.top">
-<!--   -->
-</a></div>
-<!-- ========= END OF TOP NAVBAR ========= -->
-<!-- ======== START OF CLASS DATA ======== -->
-<div class="header">
-<div class="subTitle">org.apache.hadoop.hbase.client</div>
-<h2 title="Interface ZKAsyncRegistry.CuratorEventProcessor" class="title">Interface ZKAsyncRegistry.CuratorEventProcessor&lt;T&gt;</h2>
-</div>
-<div class="contentContainer">
-<div class="description">
-<ul class="blockList">
-<li class="blockList">
-<dl>
-<dt>Enclosing class:</dt>
-<dd><a href="../../../../../org/apache/hadoop/hbase/client/ZKAsyncRegistry.html" title="class in org.apache.hadoop.hbase.client">ZKAsyncRegistry</a></dd>
-</dl>
-<hr>
-<br>
-<pre>private static interface <a href="../../../../../src-html/org/apache/hadoop/hbase/client/ZKAsyncRegistry.html#line.91">ZKAsyncRegistry.CuratorEventProcessor</a>&lt;T&gt;</pre>
-</li>
-</ul>
-</div>
-<div class="summary">
-<ul class="blockList">
-<li class="blockList">
-<!-- ========== METHOD SUMMARY =========== -->
-<ul class="blockList">
-<li class="blockList"><a name="method.summary">
-<!--   -->
-</a>
-<h3>Method Summary</h3>
-<table class="memberSummary" border="0" cellpadding="3" cellspacing="0" summary="Method Summary table, listing methods, and an explanation">
-<caption><span id="t0" class="activeTableTab"><span>All Methods</span><span class="tabEnd">&nbsp;</span></span><span id="t2" class="tableTab"><span><a href="javascript:show(2);">Instance Methods</a></span><span class="tabEnd">&nbsp;</span></span><span id="t3" class="tableTab"><span><a href="javascript:show(4);">Abstract Methods</a></span><span class="tabEnd">&nbsp;</span></span></caption>
-<tr>
-<th class="colFirst" scope="col">Modifier and Type</th>
-<th class="colLast" scope="col">Method and Description</th>
-</tr>
-<tr id="i0" class="altColor">
-<td class="colFirst"><code><a href="../../../../../org/apache/hadoop/hbase/client/ZKAsyncRegistry.CuratorEventProcessor.html" title="type parameter in ZKAsyncRegistry.CuratorEventProcessor">T</a></code></td>
-<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/client/ZKAsyncRegistry.CuratorEventProcessor.html#process-org.apache.curator.framework.api.CuratorEvent-">process</a></span>(org.apache.curator.framework.api.CuratorEvent&nbsp;event)</code>&nbsp;</td>
-</tr>
-</table>
-</li>
-</ul>
-</li>
-</ul>
-</div>
-<div class="details">
-<ul class="blockList">
-<li class="blockList">
-<!-- ============ METHOD DETAIL ========== -->
-<ul class="blockList">
-<li class="blockList"><a name="method.detail">
-<!--   -->
-</a>
-<h3>Method Detail</h3>
-<a name="process-org.apache.curator.framework.api.CuratorEvent-">
-<!--   -->
-</a>
-<ul class="blockListLast">
-<li class="blockList">
-<h4>process</h4>
-<pre><a href="../../../../../org/apache/hadoop/hbase/client/ZKAsyncRegistry.CuratorEventProcessor.html" title="type parameter in ZKAsyncRegistry.CuratorEventProcessor">T</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/ZKAsyncRegistry.CuratorEventProcessor.html#line.92">process</a>(org.apache.curator.framework.api.CuratorEvent&nbsp;event)
-   throws <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Exception.html?is-external=true" title="class or interface in java.lang">Exception</a></pre>
-<dl>
-<dt><span class="throwsLabel">Throws:</span></dt>
-<dd><code><a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Exception.html?is-external=true" title="class or interface in java.lang">Exception</a></code></dd>
-</dl>
-</li>
-</ul>
-</li>
-</ul>
-</li>
-</ul>
-</div>
-</div>
-<!-- ========= END OF CLASS DATA ========= -->
-<!-- ======= START OF BOTTOM NAVBAR ====== -->
-<div class="bottomNav"><a name="navbar.bottom">
-<!--   -->
-</a>
-<div class="skipNav"><a href="#skip.navbar.bottom" title="Skip navigation links">Skip navigation links</a></div>
-<a name="navbar.bottom.firstrow">
-<!--   -->
-</a>
-<ul class="navList" title="Navigation">
-<li><a href="../../../../../overview-summary.html">Overview</a></li>
-<li><a href="package-summary.html">Package</a></li>
-<li class="navBarCell1Rev">Class</li>
-<li><a href="class-use/ZKAsyncRegistry.CuratorEventProcessor.html">Use</a></li>
-<li><a href="package-tree.html">Tree</a></li>
-<li><a href="../../../../../deprecated-list.html">Deprecated</a></li>
-<li><a href="../../../../../index-all.html">Index</a></li>
-<li><a href="../../../../../help-doc.html">Help</a></li>
-</ul>
-</div>
-<div class="subNav">
-<ul class="navList">
-<li><a href="../../../../../org/apache/hadoop/hbase/client/ZKAsyncRegistry.html" title="class in org.apache.hadoop.hbase.client"><span class="typeNameLink">Prev&nbsp;Class</span></a></li>
-<li>Next&nbsp;Class</li>
-</ul>
-<ul class="navList">
-<li><a href="../../../../../index.html?org/apache/hadoop/hbase/client/ZKAsyncRegistry.CuratorEventProcessor.html" target="_top">Frames</a></li>
-<li><a href="ZKAsyncRegistry.CuratorEventProcessor.html" target="_top">No&nbsp;Frames</a></li>
-</ul>
-<ul class="navList" id="allclasses_navbar_bottom">
-<li><a href="../../../../../allclasses-noframe.html">All&nbsp;Classes</a></li>
-</ul>
-<div>
-<script type="text/javascript"><!--
-  allClassesLink = document.getElementById("allclasses_navbar_bottom");
-  if(window==top) {
-    allClassesLink.style.display = "block";
-  }
-  else {
-    allClassesLink.style.display = "none";
-  }
-  //-->
-</script>
-</div>
-<div>
-<ul class="subNavList">
-<li>Summary:&nbsp;</li>
-<li>Nested&nbsp;|&nbsp;</li>
-<li>Field&nbsp;|&nbsp;</li>
-<li>Constr&nbsp;|&nbsp;</li>
-<li><a href="#method.summary">Method</a></li>
-</ul>
-<ul class="subNavList">
-<li>Detail:&nbsp;</li>
-<li>Field&nbsp;|&nbsp;</li>
-<li>Constr&nbsp;|&nbsp;</li>
-<li><a href="#method.detail">Method</a></li>
-</ul>
-</div>
-<a name="skip.navbar.bottom">
-<!--   -->
-</a></div>
-<!-- ======== END OF BOTTOM NAVBAR ======= -->
-<p class="legalCopy"><small>Copyright &#169; 2007&#x2013;2017 <a href="https://www.apache.org/">The Apache Software Foundation</a>. All rights reserved.</small></p>
-</body>
-</html>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/c54c242b/devapidocs/org/apache/hadoop/hbase/client/ZKAsyncRegistry.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/client/ZKAsyncRegistry.html b/devapidocs/org/apache/hadoop/hbase/client/ZKAsyncRegistry.html
index 06e8324..badb43b 100644
--- a/devapidocs/org/apache/hadoop/hbase/client/ZKAsyncRegistry.html
+++ b/devapidocs/org/apache/hadoop/hbase/client/ZKAsyncRegistry.html
@@ -18,7 +18,7 @@
     catch(err) {
     }
 //-->
-var methods = {"i0":10,"i1":9,"i2":10,"i3":9,"i4":10,"i5":10,"i6":9,"i7":10,"i8":10,"i9":9,"i10":9,"i11":10,"i12":10,"i13":9};
+var methods = {"i0":10,"i1":10,"i2":10,"i3":9,"i4":10,"i5":10,"i6":10,"i7":9,"i8":9,"i9":10,"i10":10,"i11":10,"i12":9};
 var tabs = {65535:["t0","All Methods"],1:["t1","Static Methods"],2:["t2","Instance Methods"],8:["t4","Concrete Methods"]};
 var altColor = "altColor";
 var rowColor = "rowColor";
@@ -50,7 +50,7 @@ var activeTableTab = "activeTableTab";
 <div class="subNav">
 <ul class="navList">
 <li><a href="../../../../../org/apache/hadoop/hbase/client/WrongRowIOException.html" title="class in org.apache.hadoop.hbase.client"><span class="typeNameLink">Prev&nbsp;Class</span></a></li>
-<li><a href="../../../../../org/apache/hadoop/hbase/client/ZKAsyncRegistry.CuratorEventProcessor.html" title="interface in org.apache.hadoop.hbase.client"><span class="typeNameLink">Next&nbsp;Class</span></a></li>
+<li><a href="../../../../../org/apache/hadoop/hbase/client/ZKAsyncRegistry.Converter.html" title="interface in org.apache.hadoop.hbase.client"><span class="typeNameLink">Next&nbsp;Class</span></a></li>
 </ul>
 <ul class="navList">
 <li><a href="../../../../../index.html?org/apache/hadoop/hbase/client/ZKAsyncRegistry.html" target="_top">Frames</a></li>
@@ -114,7 +114,7 @@ var activeTableTab = "activeTableTab";
 <hr>
 <br>
 <pre>@InterfaceAudience.Private
-class <a href="../../../../../src-html/org/apache/hadoop/hbase/client/ZKAsyncRegistry.html#line.63">ZKAsyncRegistry</a>
+class <a href="../../../../../src-html/org/apache/hadoop/hbase/client/ZKAsyncRegistry.html#line.53">ZKAsyncRegistry</a>
 extends <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a>
 implements <a href="../../../../../org/apache/hadoop/hbase/client/AsyncRegistry.html" title="interface in org.apache.hadoop.hbase.client">AsyncRegistry</a></pre>
 <div class="block">Fetch the registry data from zookeeper.</div>
@@ -138,7 +138,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/client/AsyncRegistry.
 </tr>
 <tr class="altColor">
 <td class="colFirst"><code>private static interface&nbsp;</code></td>
-<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/client/ZKAsyncRegistry.CuratorEventProcessor.html" title="interface in org.apache.hadoop.hbase.client">ZKAsyncRegistry.CuratorEventProcessor</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/client/ZKAsyncRegistry.CuratorEventProcessor.html" title="type parameter in ZKAsyncRegistry.CuratorEventProcessor">T</a>&gt;</span></code>&nbsp;</td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/client/ZKAsyncRegistry.Converter.html" title="interface in org.apache.hadoop.hbase.client">ZKAsyncRegistry.Converter</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/client/ZKAsyncRegistry.Converter.html" title="type parameter in ZKAsyncRegistry.Converter">T</a>&gt;</span></code>&nbsp;</td>
 </tr>
 </table>
 </li>
@@ -160,7 +160,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/client/AsyncRegistry.
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/client/ZKAsyncRegistry.html#LOG">LOG</a></span></code>&nbsp;</td>
 </tr>
 <tr class="rowColor">
-<td class="colFirst"><code>private org.apache.curator.framework.CuratorFramework</code></td>
+<td class="colFirst"><code>private <a href="../../../../../org/apache/hadoop/hbase/zookeeper/ReadOnlyZKClient.html" title="class in org.apache.hadoop.hbase.zookeeper">ReadOnlyZKClient</a></code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/client/ZKAsyncRegistry.html#zk">zk</a></span></code>&nbsp;</td>
 </tr>
 <tr class="altColor">
@@ -206,10 +206,9 @@ implements <a href="../../../../../org/apache/hadoop/hbase/client/AsyncRegistry.
 </td>
 </tr>
 <tr id="i1" class="rowColor">
-<td class="colFirst"><code>private static &lt;T&gt;&nbsp;<a href="http://docs.oracle.com/javase/8/docs/api/java/util/concurrent/CompletableFuture.html?is-external=true" title="class or interface in java.util.concurrent">CompletableFuture</a>&lt;T&gt;</code></td>
-<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/client/ZKAsyncRegistry.html#exec-org.apache.curator.framework.api.BackgroundPathable-java.lang.String-org.apache.hadoop.hbase.client.ZKAsyncRegistry.CuratorEventProcessor-">exec</a></span>(org.apache.curator.framework.api.BackgroundPathable&lt;?&gt;&nbsp;opBuilder,
-    <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;path,
-    <a href="../../../../../org/apache/hadoop/hbase/client/ZKAsyncRegistry.CuratorEventProcessor.html" title="interface in org.apache.hadoop.hbase.client">ZKAsyncRegistry.CuratorEventProcessor</a>&lt;T&gt;&nbsp;processor)</code>&nbsp;</td>
+<td class="colFirst"><code>private &lt;T&gt;&nbsp;<a href="http://docs.oracle.com/javase/8/docs/api/java/util/concurrent/CompletableFuture.html?is-external=true" title="class or interface in java.util.concurrent">CompletableFuture</a>&lt;T&gt;</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/client/ZKAsyncRegistry.html#getAndConvert-java.lang.String-org.apache.hadoop.hbase.client.ZKAsyncRegistry.Converter-">getAndConvert</a></span>(<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;path,
+             <a href="../../../../../org/apache/hadoop/hbase/client/ZKAsyncRegistry.Converter.html" title="interface in org.apache.hadoop.hbase.client">ZKAsyncRegistry.Converter</a>&lt;T&gt;&nbsp;converter)</code>&nbsp;</td>
 </tr>
 <tr id="i2" class="altColor">
 <td class="colFirst"><code><a href="http://docs.oracle.com/javase/8/docs/api/java/util/concurrent/CompletableFuture.html?is-external=true" title="class or interface in java.util.concurrent">CompletableFuture</a>&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>&gt;</code></td>
@@ -219,53 +218,49 @@ implements <a href="../../../../../org/apache/hadoop/hbase/client/AsyncRegistry.
 </tr>
 <tr id="i3" class="rowColor">
 <td class="colFirst"><code>private static <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 class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/client/ZKAsyncRegistry.html#getClusterId-org.apache.curator.framework.api.CuratorEvent-">getClusterId</a></span>(org.apache.curator.framework.api.CuratorEvent&nbsp;event)</code>&nbsp;</td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/client/ZKAsyncRegistry.html#getClusterId-byte:A-">getClusterId</a></span>(byte[]&nbsp;data)</code>&nbsp;</td>
 </tr>
 <tr id="i4" class="altColor">
-<td class="colFirst"><code>(package private) org.apache.curator.framework.CuratorFramework</code></td>
-<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/client/ZKAsyncRegistry.html#getCuratorFramework--">getCuratorFramework</a></span>()</code>&nbsp;</td>
-</tr>
-<tr id="i5" class="rowColor">
 <td class="colFirst"><code><a href="http://docs.oracle.com/javase/8/docs/api/java/util/concurrent/CompletableFuture.html?is-external=true" title="class or interface in java.util.concurrent">CompletableFuture</a>&lt;<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Integer.html?is-external=true" title="class or interface in java.lang">Integer</a>&gt;</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/client/ZKAsyncRegistry.html#getCurrentNrHRS--">getCurrentNrHRS</a></span>()</code>
 <div class="block">Get the number of 'running' regionservers.</div>
 </td>
 </tr>
-<tr id="i6" class="altColor">
-<td class="colFirst"><code>private static int</code></td>
-<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/client/ZKAsyncRegistry.html#getCurrentNrHRS-org.apache.curator.framework.api.CuratorEvent-">getCurrentNrHRS</a></span>(org.apache.curator.framework.api.CuratorEvent&nbsp;event)</code>&nbsp;</td>
-</tr>
-<tr id="i7" class="rowColor">
+<tr id="i5" class="rowColor">
 <td class="colFirst"><code><a href="http://docs.oracle.com/javase/8/docs/api/java/util/concurrent/CompletableFuture.html?is-external=true" title="class or interface in java.util.concurrent">CompletableFuture</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a>&gt;</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/client/ZKAsyncRegistry.html#getMasterAddress--">getMasterAddress</a></span>()</code>
 <div class="block">Get the address of HMaster.</div>
 </td>
 </tr>
-<tr id="i8" class="altColor">
+<tr id="i6" class="altColor">
 <td class="colFirst"><code><a href="http://docs.oracle.com/javase/8/docs/api/java/util/concurrent/CompletableFuture.html?is-external=true" title="class or interface in java.util.concurrent">CompletableFuture</a>&lt;<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Integer.html?is-external=true" title="class or interface in java.lang">Integer</a>&gt;</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/client/ZKAsyncRegistry.html#getMasterInfoPort--">getMasterInfoPort</a></span>()</code>
 <div class="block">Get the info port of HMaster.</div>
 </td>
 </tr>
-<tr id="i9" class="rowColor">
+<tr id="i7" class="rowColor">
 <td class="colFirst"><code>private static org.apache.hadoop.hbase.shaded.protobuf.generated.ZooKeeperProtos.Master</code></td>
-<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/client/ZKAsyncRegistry.html#getMasterProto-org.apache.curator.framework.api.CuratorEvent-">getMasterProto</a></span>(org.apache.curator.framework.api.CuratorEvent&nbsp;event)</code>&nbsp;</td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/client/ZKAsyncRegistry.html#getMasterProto-byte:A-">getMasterProto</a></span>(byte[]&nbsp;data)</code>&nbsp;</td>
 </tr>
-<tr id="i10" class="altColor">
+<tr id="i8" class="altColor">
 <td class="colFirst"><code>private static org.apache.hadoop.hbase.shaded.protobuf.generated.ZooKeeperProtos.MetaRegionServer</code></td>
-<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/client/ZKAsyncRegistry.html#getMetaProto-org.apache.curator.framework.api.CuratorEvent-">getMetaProto</a></span>(org.apache.curator.framework.api.CuratorEvent&nbsp;event)</code>&nbsp;</td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/client/ZKAsyncRegistry.html#getMetaProto-byte:A-">getMetaProto</a></span>(byte[]&nbsp;data)</code>&nbsp;</td>
 </tr>
-<tr id="i11" class="rowColor">
+<tr id="i9" class="rowColor">
 <td class="colFirst"><code><a href="http://docs.oracle.com/javase/8/docs/api/java/util/concurrent/CompletableFuture.html?is-external=true" title="class or interface in java.util.concurrent">CompletableFuture</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/RegionLocations.html" title="class in org.apache.hadoop.hbase">RegionLocations</a>&gt;</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/client/ZKAsyncRegistry.html#getMetaRegionLocation--">getMetaRegionLocation</a></span>()</code>
 <div class="block">Get the location of meta region.</div>
 </td>
 </tr>
-<tr id="i12" class="altColor">
+<tr id="i10" class="altColor">
 <td class="colFirst"><code>private <a href="../../../../../org/apache/hadoop/hbase/util/Pair.html" title="class in org.apache.hadoop.hbase.util">Pair</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/master/RegionState.State.html" title="enum in org.apache.hadoop.hbase.master">RegionState.State</a>,<a href="../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a>&gt;</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/client/ZKAsyncRegistry.html#getStateAndServerName-org.apache.hadoop.hbase.shaded.protobuf.generated.ZooKeeperProtos.MetaRegionServer-">getStateAndServerName</a></span>(org.apache.hadoop.hbase.shaded.protobuf.generated.ZooKeeperProtos.MetaRegionServer&nbsp;proto)</code>&nbsp;</td>
 </tr>
-<tr id="i13" class="rowColor">
+<tr id="i11" class="rowColor">
+<td class="colFirst"><code>(package private) <a href="../../../../../org/apache/hadoop/hbase/zookeeper/ReadOnlyZKClient.html" title="class in org.apache.hadoop.hbase.zookeeper">ReadOnlyZKClient</a></code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/client/ZKAsyncRegistry.html#getZKClient--">getZKClient</a></span>()</code>&nbsp;</td>
+</tr>
+<tr id="i12" class="altColor">
 <td class="colFirst"><code>private static void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/client/ZKAsyncRegistry.html#tryComplete-org.apache.commons.lang3.mutable.MutableInt-org.apache.hadoop.hbase.HRegionLocation:A-java.util.concurrent.CompletableFuture-">tryComplete</a></span>(org.apache.commons.lang3.mutable.MutableInt&nbsp;remaining,
            <a href="../../../../../org/apache/hadoop/hbase/HRegionLocation.html" title="class in org.apache.hadoop.hbase">HRegionLocation</a>[]&nbsp;locs,
@@ -299,7 +294,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/client/AsyncRegistry.
 <ul class="blockList">
 <li class="blockList">
 <h4>LOG</h4>
-<pre>private static final&nbsp;org.apache.commons.logging.Log <a href="../../../../../src-html/org/apache/hadoop/hbase/client/ZKAsyncRegistry.html#line.65">LOG</a></pre>
+<pre>private static final&nbsp;org.apache.commons.logging.Log <a href="../../../../../src-html/org/apache/hadoop/hbase/client/ZKAsyncRegistry.html#line.55">LOG</a></pre>
 </li>
 </ul>
 <a name="zk">
@@ -308,7 +303,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/client/AsyncRegistry.
 <ul class="blockList">
 <li class="blockList">
 <h4>zk</h4>
-<pre>private final&nbsp;org.apache.curator.framework.CuratorFramework <a href="../../../../../src-html/org/apache/hadoop/hbase/client/ZKAsyncRegistry.html#line.67">zk</a></pre>
+<pre>private final&nbsp;<a href="../../../../../org/apache/hadoop/hbase/zookeeper/ReadOnlyZKClient.html" title="class in org.apache.hadoop.hbase.zookeeper">ReadOnlyZKClient</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/client/ZKAsyncRegistry.html#line.57">zk</a></pre>
 </li>
 </ul>
 <a name="znodePaths">
@@ -317,7 +312,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/client/AsyncRegistry.
 <ul class="blockListLast">
 <li class="blockList">
 <h4>znodePaths</h4>
-<pre>private final&nbsp;<a href="../../../../../org/apache/hadoop/hbase/zookeeper/ZNodePaths.html" title="class in org.apache.hadoop.hbase.zookeeper">ZNodePaths</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/client/ZKAsyncRegistry.html#line.69">znodePaths</a></pre>
+<pre>private final&nbsp;<a href="../../../../../org/apache/hadoop/hbase/zookeeper/ZNodePaths.html" title="class in org.apache.hadoop.hbase.zookeeper">ZNodePaths</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/client/ZKAsyncRegistry.html#line.59">znodePaths</a></pre>
 </li>
 </ul>
 </li>
@@ -334,7 +329,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/client/AsyncRegistry.
 <ul class="blockListLast">
 <li class="blockList">
 <h4>ZKAsyncRegistry</h4>
-<pre><a href="../../../../../src-html/org/apache/hadoop/hbase/client/ZKAsyncRegistry.html#line.71">ZKAsyncRegistry</a>(org.apache.hadoop.conf.Configuration&nbsp;conf)</pre>
+<pre><a href="../../../../../src-html/org/apache/hadoop/hbase/client/ZKAsyncRegistry.html#line.61">ZKAsyncRegistry</a>(org.apache.hadoop.conf.Configuration&nbsp;conf)</pre>
 </li>
 </ul>
 </li>
@@ -345,24 +340,23 @@ implements <a href="../../../../../org/apache/hadoop/hbase/client/AsyncRegistry.
 <!--   -->
 </a>
 <h3>Method Detail</h3>
-<a name="exec-org.apache.curator.framework.api.BackgroundPathable-java.lang.String-org.apache.hadoop.hbase.client.ZKAsyncRegistry.CuratorEventProcessor-">
+<a name="getAndConvert-java.lang.String-org.apache.hadoop.hbase.client.ZKAsyncRegistry.Converter-">
 <!--   -->
 </a>
 <ul class="blockList">
 <li class="blockList">
-<h4>exec</h4>
-<pre>private static&nbsp;&lt;T&gt;&nbsp;<a href="http://docs.oracle.com/javase/8/docs/api/java/util/concurrent/CompletableFuture.html?is-external=true" title="class or interface in java.util.concurrent">CompletableFuture</a>&lt;T&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/ZKAsyncRegistry.html#line.95">exec</a>(org.apache.curator.framework.api.BackgroundPathable&lt;?&gt;&nbsp;opBuilder,
-                                             <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;path,
-                                             <a href="../../../../../org/apache/hadoop/hbase/client/ZKAsyncRegistry.CuratorEventProcessor.html" title="interface in org.apache.hadoop.hbase.client">ZKAsyncRegistry.CuratorEventProcessor</a>&lt;T&gt;&nbsp;processor)</pre>
+<h4>getAndConvert</h4>
+<pre>private&nbsp;&lt;T&gt;&nbsp;<a href="http://docs.oracle.com/javase/8/docs/api/java/util/concurrent/CompletableFuture.html?is-external=true" title="class or interface in java.util.concurrent">CompletableFuture</a>&lt;T&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/ZKAsyncRegistry.html#line.70">getAndConvert</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;path,
+                                               <a href="../../../../../org/apache/hadoop/hbase/client/ZKAsyncRegistry.Converter.html" title="interface in org.apache.hadoop.hbase.client">ZKAsyncRegistry.Converter</a>&lt;T&gt;&nbsp;converter)</pre>
 </li>
 </ul>
-<a name="getClusterId-org.apache.curator.framework.api.CuratorEvent-">
+<a name="getClusterId-byte:A-">
 <!--   -->
 </a>
 <ul class="blockList">
 <li class="blockList">
 <h4>getClusterId</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/client/ZKAsyncRegistry.html#line.112">getClusterId</a>(org.apache.curator.framework.api.CuratorEvent&nbsp;event)
+<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/client/ZKAsyncRegistry.html#line.86">getClusterId</a>(byte[]&nbsp;data)
                             throws <a href="../../../../../org/apache/hadoop/hbase/exceptions/DeserializationException.html" title="class in org.apache.hadoop.hbase.exceptions">DeserializationException</a></pre>
 <dl>
 <dt><span class="throwsLabel">Throws:</span></dt>
@@ -376,7 +370,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/client/AsyncRegistry.
 <ul class="blockList">
 <li class="blockList">
 <h4>getClusterId</h4>
-<pre>public&nbsp;<a href="http://docs.oracle.com/javase/8/docs/api/java/util/concurrent/CompletableFuture.html?is-external=true" title="class or interface in java.util.concurrent">CompletableFuture</a>&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>&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/ZKAsyncRegistry.html#line.122">getClusterId</a>()</pre>
+<pre>public&nbsp;<a href="http://docs.oracle.com/javase/8/docs/api/java/util/concurrent/CompletableFuture.html?is-external=true" title="class or interface in java.util.concurrent">CompletableFuture</a>&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>&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/ZKAsyncRegistry.html#line.95">getClusterId</a>()</pre>
 <div class="block"><span class="descfrmTypeLabel">Description copied from interface:&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/client/AsyncRegistry.html#getClusterId--">AsyncRegistry</a></code></span></div>
 <div class="block">Should only be called once.
  <p>
@@ -387,22 +381,22 @@ implements <a href="../../../../../org/apache/hadoop/hbase/client/AsyncRegistry.
 </dl>
 </li>
 </ul>
-<a name="getCuratorFramework--">
+<a name="getZKClient--">
 <!--   -->
 </a>
 <ul class="blockList">
 <li class="blockList">
-<h4>getCuratorFramework</h4>
-<pre>org.apache.curator.framework.CuratorFramework&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/ZKAsyncRegistry.html#line.127">getCuratorFramework</a>()</pre>
+<h4>getZKClient</h4>
+<pre><a href="../../../../../org/apache/hadoop/hbase/zookeeper/ReadOnlyZKClient.html" title="class in org.apache.hadoop.hbase.zookeeper">ReadOnlyZKClient</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/ZKAsyncRegistry.html#line.100">getZKClient</a>()</pre>
 </li>
 </ul>
-<a name="getMetaProto-org.apache.curator.framework.api.CuratorEvent-">
+<a name="getMetaProto-byte:A-">
 <!--   -->
 </a>
 <ul class="blockList">
 <li class="blockList">
 <h4>getMetaProto</h4>
-<pre>private static&nbsp;org.apache.hadoop.hbase.shaded.protobuf.generated.ZooKeeperProtos.MetaRegionServer&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/ZKAsyncRegistry.html#line.131">getMetaProto</a>(org.apache.curator.framework.api.CuratorEvent&nbsp;event)
+<pre>private static&nbsp;org.apache.hadoop.hbase.shaded.protobuf.generated.ZooKeeperProtos.MetaRegionServer&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/ZKAsyncRegistry.html#line.104">getMetaProto</a>(byte[]&nbsp;data)
                                                                                                         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>
 <dl>
 <dt><span class="throwsLabel">Throws:</span></dt>
@@ -416,7 +410,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/client/AsyncRegistry.
 <ul class="blockList">
 <li class="blockList">
 <h4>tryComplete</h4>
-<pre>private static&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/ZKAsyncRegistry.html#line.143">tryComplete</a>(org.apache.commons.lang3.mutable.MutableInt&nbsp;remaining,
+<pre>private static&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/ZKAsyncRegistry.html#line.114">tryComplete</a>(org.apache.commons.lang3.mutable.MutableInt&nbsp;remaining,
                                 <a href="../../../../../org/apache/hadoop/hbase/HRegionLocation.html" title="class in org.apache.hadoop.hbase">HRegionLocation</a>[]&nbsp;locs,
                                 <a href="http://docs.oracle.com/javase/8/docs/api/java/util/concurrent/CompletableFuture.html?is-external=true" title="class or interface in java.util.concurrent">CompletableFuture</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/RegionLocations.html" title="class in org.apache.hadoop.hbase">RegionLocations</a>&gt;&nbsp;future)</pre>
 </li>
@@ -427,7 +421,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/client/AsyncRegistry.
 <ul class="blockList">
 <li class="blockList">
 <h4>getStateAndServerName</h4>
-<pre>private&nbsp;<a href="../../../../../org/apache/hadoop/hbase/util/Pair.html" title="class in org.apache.hadoop.hbase.util">Pair</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/master/RegionState.State.html" title="enum in org.apache.hadoop.hbase.master">RegionState.State</a>,<a href="../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a>&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/ZKAsyncRegistry.html#line.152">getStateAndServerName</a>(org.apache.hadoop.hbase.shaded.protobuf.generated.ZooKeeperProtos.MetaRegionServer&nbsp;proto)</pre>
+<pre>private&nbsp;<a href="../../../../../org/apache/hadoop/hbase/util/Pair.html" title="class in org.apache.hadoop.hbase.util">Pair</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/master/RegionState.State.html" title="enum in org.apache.hadoop.hbase.master">RegionState.State</a>,<a href="../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a>&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/ZKAsyncRegistry.html#line.123">getStateAndServerName</a>(org.apache.hadoop.hbase.shaded.protobuf.generated.ZooKeeperProtos.MetaRegionServer&nbsp;proto)</pre>
 </li>
 </ul>
 <a name="getMetaRegionLocation--">
@@ -436,7 +430,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/client/AsyncRegistry.
 <ul class="blockList">
 <li class="blockList">
 <h4>getMetaRegionLocation</h4>
-<pre>public&nbsp;<a href="http://docs.oracle.com/javase/8/docs/api/java/util/concurrent/CompletableFuture.html?is-external=true" title="class or interface in java.util.concurrent">CompletableFuture</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/RegionLocations.html" title="class in org.apache.hadoop.hbase">RegionLocations</a>&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/ZKAsyncRegistry.html#line.166">getMetaRegionLocation</a>()</pre>
+<pre>public&nbsp;<a href="http://docs.oracle.com/javase/8/docs/api/java/util/concurrent/CompletableFuture.html?is-external=true" title="class or interface in java.util.concurrent">CompletableFuture</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/RegionLocations.html" title="class in org.apache.hadoop.hbase">RegionLocations</a>&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/ZKAsyncRegistry.html#line.137">getMetaRegionLocation</a>()</pre>
 <div class="block"><span class="descfrmTypeLabel">Description copied from interface:&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/client/AsyncRegistry.html#getMetaRegionLocation--">AsyncRegistry</a></code></span></div>
 <div class="block">Get the location of meta region.</div>
 <dl>
@@ -445,22 +439,13 @@ implements <a href="../../../../../org/apache/hadoop/hbase/client/AsyncRegistry.
 </dl>
 </li>
 </ul>
-<a name="getCurrentNrHRS-org.apache.curator.framework.api.CuratorEvent-">
-<!--   -->
-</a>
-<ul class="blockList">
-<li class="blockList">
-<h4>getCurrentNrHRS</h4>
-<pre>private static&nbsp;int&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/ZKAsyncRegistry.html#line.222">getCurrentNrHRS</a>(org.apache.curator.framework.api.CuratorEvent&nbsp;event)</pre>
-</li>
-</ul>
 <a name="getCurrentNrHRS--">
 <!--   -->
 </a>
 <ul class="blockList">
 <li class="blockList">
 <h4>getCurrentNrHRS</h4>
-<pre>public&nbsp;<a href="http://docs.oracle.com/javase/8/docs/api/java/util/concurrent/CompletableFuture.html?is-external=true" title="class or interface in java.util.concurrent">CompletableFuture</a>&lt;<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Integer.html?is-external=true" title="class or interface in java.lang">Integer</a>&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/ZKAsyncRegistry.html#line.228">getCurrentNrHRS</a>()</pre>
+<pre>public&nbsp;<a href="http://docs.oracle.com/javase/8/docs/api/java/util/concurrent/CompletableFuture.html?is-external=true" title="class or interface in java.util.concurrent">CompletableFuture</a>&lt;<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Integer.html?is-external=true" title="class or interface in java.lang">Integer</a>&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/ZKAsyncRegistry.html#line.194">getCurrentNrHRS</a>()</pre>
 <div class="block"><span class="descfrmTypeLabel">Description copied from interface:&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/client/AsyncRegistry.html#getCurrentNrHRS--">AsyncRegistry</a></code></span></div>
 <div class="block">Get the number of 'running' regionservers.</div>
 <dl>
@@ -469,13 +454,13 @@ implements <a href="../../../../../org/apache/hadoop/hbase/client/AsyncRegistry.
 </dl>
 </li>
 </ul>
-<a name="getMasterProto-org.apache.curator.framework.api.CuratorEvent-">
+<a name="getMasterProto-byte:A-">
 <!--   -->
 </a>
 <ul class="blockList">
 <li class="blockList">
 <h4>getMasterProto</h4>
-<pre>private static&nbsp;org.apache.hadoop.hbase.shaded.protobuf.generated.ZooKeeperProtos.Master&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/ZKAsyncRegistry.html#line.232">getMasterProto</a>(org.apache.curator.framework.api.CuratorEvent&nbsp;event)
+<pre>private static&nbsp;org.apache.hadoop.hbase.shaded.protobuf.generated.ZooKeeperProtos.Master&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/ZKAsyncRegistry.html#line.198">getMasterProto</a>(byte[]&nbsp;data)
                                                                                                 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>
 <dl>
 <dt><span class="throwsLabel">Throws:</span></dt>
@@ -489,7 +474,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/client/AsyncRegistry.
 <ul class="blockList">
 <li class="blockList">
 <h4>getMasterAddress</h4>
-<pre>public&nbsp;<a href="http://docs.oracle.com/javase/8/docs/api/java/util/concurrent/CompletableFuture.html?is-external=true" title="class or interface in java.util.concurrent">CompletableFuture</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a>&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/ZKAsyncRegistry.html#line.243">getMasterAddress</a>()</pre>
+<pre>public&nbsp;<a href="http://docs.oracle.com/javase/8/docs/api/java/util/concurrent/CompletableFuture.html?is-external=true" title="class or interface in java.util.concurrent">CompletableFuture</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a>&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/ZKAsyncRegistry.html#line.208">getMasterAddress</a>()</pre>
 <div class="block"><span class="descfrmTypeLabel">Description copied from interface:&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/client/AsyncRegistry.html#getMasterAddress--">AsyncRegistry</a></code></span></div>
 <div class="block">Get the address of HMaster.</div>
 <dl>
@@ -504,7 +489,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/client/AsyncRegistry.
 <ul class="blockList">
 <li class="blockList">
 <h4>getMasterInfoPort</h4>
-<pre>public&nbsp;<a href="http://docs.oracle.com/javase/8/docs/api/java/util/concurrent/CompletableFuture.html?is-external=true" title="class or interface in java.util.concurrent">CompletableFuture</a>&lt;<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Integer.html?is-external=true" title="class or interface in java.lang">Integer</a>&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/ZKAsyncRegistry.html#line.256">getMasterInfoPort</a>()</pre>
+<pre>public&nbsp;<a href="http://docs.oracle.com/javase/8/docs/api/java/util/concurrent/CompletableFuture.html?is-external=true" title="class or interface in java.util.concurrent">CompletableFuture</a>&lt;<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Integer.html?is-external=true" title="class or interface in java.lang">Integer</a>&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/ZKAsyncRegistry.html#line.221">getMasterInfoPort</a>()</pre>
 <div class="block"><span class="descfrmTypeLabel">Description copied from interface:&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/client/AsyncRegistry.html#getMasterInfoPort--">AsyncRegistry</a></code></span></div>
 <div class="block">Get the info port of HMaster.</div>
 <dl>
@@ -519,7 +504,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/client/AsyncRegistry.
 <ul class="blockListLast">
 <li class="blockList">
 <h4>close</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/ZKAsyncRegistry.html#line.262">close</a>()</pre>
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/ZKAsyncRegistry.html#line.227">close</a>()</pre>
 <div class="block"><span class="descfrmTypeLabel">Description copied from interface:&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/client/AsyncRegistry.html#close--">AsyncRegistry</a></code></span></div>
 <div class="block">Closes this instance and releases any system resources associated with it</div>
 <dl>
@@ -561,7 +546,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/client/AsyncRegistry.
 <div class="subNav">
 <ul class="navList">
 <li><a href="../../../../../org/apache/hadoop/hbase/client/WrongRowIOException.html" title="class in org.apache.hadoop.hbase.client"><span class="typeNameLink">Prev&nbsp;Class</span></a></li>
-<li><a href="../../../../../org/apache/hadoop/hbase/client/ZKAsyncRegistry.CuratorEventProcessor.html" title="interface in org.apache.hadoop.hbase.client"><span class="typeNameLink">Next&nbsp;Class</span></a></li>
+<li><a href="../../../../../org/apache/hadoop/hbase/client/ZKAsyncRegistry.Converter.html" title="interface in org.apache.hadoop.hbase.client"><span class="typeNameLink">Next&nbsp;Class</span></a></li>
 </ul>
 <ul class="navList">
 <li><a href="../../../../../index.html?org/apache/hadoop/hbase/client/ZKAsyncRegistry.html" target="_top">Frames</a></li>


[50/51] [partial] hbase-site git commit: Published site at .

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/c54c242b/apidocs/org/apache/hadoop/hbase/class-use/CellScanner.html
----------------------------------------------------------------------
diff --git a/apidocs/org/apache/hadoop/hbase/class-use/CellScanner.html b/apidocs/org/apache/hadoop/hbase/class-use/CellScanner.html
new file mode 100644
index 0000000..9f9d865
--- /dev/null
+++ b/apidocs/org/apache/hadoop/hbase/class-use/CellScanner.html
@@ -0,0 +1,230 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<!-- NewPage -->
+<html lang="en">
+<head>
+<!-- Generated by javadoc -->
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title>Uses of Interface org.apache.hadoop.hbase.CellScanner (Apache HBase 3.0.0-SNAPSHOT API)</title>
+<link rel="stylesheet" type="text/css" href="../../../../../stylesheet.css" title="Style">
+<script type="text/javascript" src="../../../../../script.js"></script>
+</head>
+<body>
+<script type="text/javascript"><!--
+    try {
+        if (location.href.indexOf('is-external=true') == -1) {
+            parent.document.title="Uses of Interface org.apache.hadoop.hbase.CellScanner (Apache HBase 3.0.0-SNAPSHOT API)";
+        }
+    }
+    catch(err) {
+    }
+//-->
+</script>
+<noscript>
+<div>JavaScript is disabled on your browser.</div>
+</noscript>
+<!-- ========= START OF TOP NAVBAR ======= -->
+<div class="topNav"><a name="navbar.top">
+<!--   -->
+</a>
+<div class="skipNav"><a href="#skip.navbar.top" title="Skip navigation links">Skip navigation links</a></div>
+<a name="navbar.top.firstrow">
+<!--   -->
+</a>
+<ul class="navList" title="Navigation">
+<li><a href="../../../../../overview-summary.html">Overview</a></li>
+<li><a href="../package-summary.html">Package</a></li>
+<li><a href="../../../../../org/apache/hadoop/hbase/CellScanner.html" title="interface in org.apache.hadoop.hbase">Class</a></li>
+<li class="navBarCell1Rev">Use</li>
+<li><a href="../package-tree.html">Tree</a></li>
+<li><a href="../../../../../deprecated-list.html">Deprecated</a></li>
+<li><a href="../../../../../index-all.html">Index</a></li>
+<li><a href="../../../../../help-doc.html">Help</a></li>
+</ul>
+</div>
+<div class="subNav">
+<ul class="navList">
+<li>Prev</li>
+<li>Next</li>
+</ul>
+<ul class="navList">
+<li><a href="../../../../../index.html?org/apache/hadoop/hbase/class-use/CellScanner.html" target="_top">Frames</a></li>
+<li><a href="CellScanner.html" target="_top">No&nbsp;Frames</a></li>
+</ul>
+<ul class="navList" id="allclasses_navbar_top">
+<li><a href="../../../../../allclasses-noframe.html">All&nbsp;Classes</a></li>
+</ul>
+<div>
+<script type="text/javascript"><!--
+  allClassesLink = document.getElementById("allclasses_navbar_top");
+  if(window==top) {
+    allClassesLink.style.display = "block";
+  }
+  else {
+    allClassesLink.style.display = "none";
+  }
+  //-->
+</script>
+</div>
+<a name="skip.navbar.top">
+<!--   -->
+</a></div>
+<!-- ========= END OF TOP NAVBAR ========= -->
+<div class="header">
+<h2 title="Uses of Interface org.apache.hadoop.hbase.CellScanner" class="title">Uses of Interface<br>org.apache.hadoop.hbase.CellScanner</h2>
+</div>
+<div class="classUseContainer">
+<ul class="blockList">
+<li class="blockList">
+<table class="useSummary" border="0" cellpadding="3" cellspacing="0" summary="Use table, listing packages, and an explanation">
+<caption><span>Packages that use <a href="../../../../../org/apache/hadoop/hbase/CellScanner.html" title="interface in org.apache.hadoop.hbase">CellScanner</a></span><span class="tabEnd">&nbsp;</span></caption>
+<tr>
+<th class="colFirst" scope="col">Package</th>
+<th class="colLast" scope="col">Description</th>
+</tr>
+<tbody>
+<tr class="altColor">
+<td class="colFirst"><a href="#org.apache.hadoop.hbase">org.apache.hadoop.hbase</a></td>
+<td class="colLast">&nbsp;</td>
+</tr>
+<tr class="rowColor">
+<td class="colFirst"><a href="#org.apache.hadoop.hbase.client">org.apache.hadoop.hbase.client</a></td>
+<td class="colLast">
+<div class="block">Provides HBase Client</div>
+</td>
+</tr>
+</tbody>
+</table>
+</li>
+<li class="blockList">
+<ul class="blockList">
+<li class="blockList"><a name="org.apache.hadoop.hbase">
+<!--   -->
+</a>
+<h3>Uses of <a href="../../../../../org/apache/hadoop/hbase/CellScanner.html" title="interface in org.apache.hadoop.hbase">CellScanner</a> in <a href="../../../../../org/apache/hadoop/hbase/package-summary.html">org.apache.hadoop.hbase</a></h3>
+<table class="useSummary" border="0" cellpadding="3" cellspacing="0" summary="Use table, listing methods, and an explanation">
+<caption><span>Methods in <a href="../../../../../org/apache/hadoop/hbase/package-summary.html">org.apache.hadoop.hbase</a> that return <a href="../../../../../org/apache/hadoop/hbase/CellScanner.html" title="interface in org.apache.hadoop.hbase">CellScanner</a></span><span class="tabEnd">&nbsp;</span></caption>
+<tr>
+<th class="colFirst" scope="col">Modifier and Type</th>
+<th class="colLast" scope="col">Method and Description</th>
+</tr>
+<tbody>
+<tr class="altColor">
+<td class="colFirst"><code><a href="../../../../../org/apache/hadoop/hbase/CellScanner.html" title="interface in org.apache.hadoop.hbase">CellScanner</a></code></td>
+<td class="colLast"><span class="typeNameLabel">CellScannable.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/CellScannable.html#cellScanner--">cellScanner</a></span>()</code>&nbsp;</td>
+</tr>
+<tr class="rowColor">
+<td class="colFirst"><code>static <a href="../../../../../org/apache/hadoop/hbase/CellScanner.html" title="interface in org.apache.hadoop.hbase">CellScanner</a></code></td>
+<td class="colLast"><span class="typeNameLabel">CellUtil.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/CellUtil.html#createCellScanner-org.apache.hadoop.hbase.Cell:A-">createCellScanner</a></span>(<a href="../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>[]&nbsp;cellArray)</code>&nbsp;</td>
+</tr>
+<tr class="altColor">
+<td class="colFirst"><code>static <a href="../../../../../org/apache/hadoop/hbase/CellScanner.html" title="interface in org.apache.hadoop.hbase">CellScanner</a></code></td>
+<td class="colLast"><span class="typeNameLabel">CellUtil.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/CellUtil.html#createCellScanner-java.lang.Iterable-">createCellScanner</a></span>(<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Iterable.html?is-external=true" title="class or interface in java.lang">Iterable</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&gt;&nbsp;cellIterable)</code>&nbsp;</td>
+</tr>
+<tr class="rowColor">
+<td class="colFirst"><code>static <a href="../../../../../org/apache/hadoop/hbase/CellScanner.html" title="interface in org.apache.hadoop.hbase">CellScanner</a></code></td>
+<td class="colLast"><span class="typeNameLabel">CellUtil.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/CellUtil.html#createCellScanner-java.util.Iterator-">createCellScanner</a></span>(<a href="http://docs.oracle.com/javase/8/docs/api/java/util/Iterator.html?is-external=true" title="class or interface in java.util">Iterator</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&gt;&nbsp;cells)</code>&nbsp;</td>
+</tr>
+<tr class="altColor">
+<td class="colFirst"><code>static <a href="../../../../../org/apache/hadoop/hbase/CellScanner.html" title="interface in org.apache.hadoop.hbase">CellScanner</a></code></td>
+<td class="colLast"><span class="typeNameLabel">CellUtil.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/CellUtil.html#createCellScanner-java.util.List-">createCellScanner</a></span>(<a href="http://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;? extends <a href="../../../../../org/apache/hadoop/hbase/CellScannable.html" title="interface in org.apache.hadoop.hbase">CellScannable</a>&gt;&nbsp;cellScannerables)</code>&nbsp;</td>
+</tr>
+<tr class="rowColor">
+<td class="colFirst"><code>static <a href="../../../../../org/apache/hadoop/hbase/CellScanner.html" title="interface in org.apache.hadoop.hbase">CellScanner</a></code></td>
+<td class="colLast"><span class="typeNameLabel">CellUtil.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/CellUtil.html#createCellScanner-java.util.NavigableMap-">createCellScanner</a></span>(<a href="http://docs.oracle.com/javase/8/docs/api/java/util/NavigableMap.html?is-external=true" title="class or interface in java.util">NavigableMap</a>&lt;byte[],<a href="http://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&gt;&gt;&nbsp;map)</code>
+<div class="block">Flatten the map of cells out under the CellScanner</div>
+</td>
+</tr>
+</tbody>
+</table>
+</li>
+<li class="blockList"><a name="org.apache.hadoop.hbase.client">
+<!--   -->
+</a>
+<h3>Uses of <a href="../../../../../org/apache/hadoop/hbase/CellScanner.html" title="interface in org.apache.hadoop.hbase">CellScanner</a> in <a href="../../../../../org/apache/hadoop/hbase/client/package-summary.html">org.apache.hadoop.hbase.client</a></h3>
+<table class="useSummary" border="0" cellpadding="3" cellspacing="0" summary="Use table, listing classes, and an explanation">
+<caption><span>Classes in <a href="../../../../../org/apache/hadoop/hbase/client/package-summary.html">org.apache.hadoop.hbase.client</a> that implement <a href="../../../../../org/apache/hadoop/hbase/CellScanner.html" title="interface in org.apache.hadoop.hbase">CellScanner</a></span><span class="tabEnd">&nbsp;</span></caption>
+<tr>
+<th class="colFirst" scope="col">Modifier and Type</th>
+<th class="colLast" scope="col">Class and Description</th>
+</tr>
+<tbody>
+<tr class="altColor">
+<td class="colFirst"><code>class&nbsp;</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/client/Result.html" title="class in org.apache.hadoop.hbase.client">Result</a></span></code>
+<div class="block">Single row result of a <a href="../../../../../org/apache/hadoop/hbase/client/Get.html" title="class in org.apache.hadoop.hbase.client"><code>Get</code></a> or <a href="../../../../../org/apache/hadoop/hbase/client/Scan.html" title="class in org.apache.hadoop.hbase.client"><code>Scan</code></a> query.</div>
+</td>
+</tr>
+</tbody>
+</table>
+<table class="useSummary" border="0" cellpadding="3" cellspacing="0" summary="Use table, listing methods, and an explanation">
+<caption><span>Methods in <a href="../../../../../org/apache/hadoop/hbase/client/package-summary.html">org.apache.hadoop.hbase.client</a> that return <a href="../../../../../org/apache/hadoop/hbase/CellScanner.html" title="interface in org.apache.hadoop.hbase">CellScanner</a></span><span class="tabEnd">&nbsp;</span></caption>
+<tr>
+<th class="colFirst" scope="col">Modifier and Type</th>
+<th class="colLast" scope="col">Method and Description</th>
+</tr>
+<tbody>
+<tr class="altColor">
+<td class="colFirst"><code><a href="../../../../../org/apache/hadoop/hbase/CellScanner.html" title="interface in org.apache.hadoop.hbase">CellScanner</a></code></td>
+<td class="colLast"><span class="typeNameLabel">Result.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/client/Result.html#cellScanner--">cellScanner</a></span>()</code>&nbsp;</td>
+</tr>
+<tr class="rowColor">
+<td class="colFirst"><code><a href="../../../../../org/apache/hadoop/hbase/CellScanner.html" title="interface in org.apache.hadoop.hbase">CellScanner</a></code></td>
+<td class="colLast"><span class="typeNameLabel">Mutation.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/client/Mutation.html#cellScanner--">cellScanner</a></span>()</code>&nbsp;</td>
+</tr>
+</tbody>
+</table>
+</li>
+</ul>
+</li>
+</ul>
+</div>
+<!-- ======= START OF BOTTOM NAVBAR ====== -->
+<div class="bottomNav"><a name="navbar.bottom">
+<!--   -->
+</a>
+<div class="skipNav"><a href="#skip.navbar.bottom" title="Skip navigation links">Skip navigation links</a></div>
+<a name="navbar.bottom.firstrow">
+<!--   -->
+</a>
+<ul class="navList" title="Navigation">
+<li><a href="../../../../../overview-summary.html">Overview</a></li>
+<li><a href="../package-summary.html">Package</a></li>
+<li><a href="../../../../../org/apache/hadoop/hbase/CellScanner.html" title="interface in org.apache.hadoop.hbase">Class</a></li>
+<li class="navBarCell1Rev">Use</li>
+<li><a href="../package-tree.html">Tree</a></li>
+<li><a href="../../../../../deprecated-list.html">Deprecated</a></li>
+<li><a href="../../../../../index-all.html">Index</a></li>
+<li><a href="../../../../../help-doc.html">Help</a></li>
+</ul>
+</div>
+<div class="subNav">
+<ul class="navList">
+<li>Prev</li>
+<li>Next</li>
+</ul>
+<ul class="navList">
+<li><a href="../../../../../index.html?org/apache/hadoop/hbase/class-use/CellScanner.html" target="_top">Frames</a></li>
+<li><a href="CellScanner.html" target="_top">No&nbsp;Frames</a></li>
+</ul>
+<ul class="navList" id="allclasses_navbar_bottom">
+<li><a href="../../../../../allclasses-noframe.html">All&nbsp;Classes</a></li>
+</ul>
+<div>
+<script type="text/javascript"><!--
+  allClassesLink = document.getElementById("allclasses_navbar_bottom");
+  if(window==top) {
+    allClassesLink.style.display = "block";
+  }
+  else {
+    allClassesLink.style.display = "none";
+  }
+  //-->
+</script>
+</div>
+<a name="skip.navbar.bottom">
+<!--   -->
+</a></div>
+<!-- ======== END OF BOTTOM NAVBAR ======= -->
+<p class="legalCopy"><small>Copyright &#169; 2007&#x2013;2017 <a href="https://www.apache.org/">The Apache Software Foundation</a>. All rights reserved.</small></p>
+</body>
+</html>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/c54c242b/apidocs/org/apache/hadoop/hbase/client/Append.html
----------------------------------------------------------------------
diff --git a/apidocs/org/apache/hadoop/hbase/client/Append.html b/apidocs/org/apache/hadoop/hbase/client/Append.html
index 24af617..14799fe 100644
--- a/apidocs/org/apache/hadoop/hbase/client/Append.html
+++ b/apidocs/org/apache/hadoop/hbase/client/Append.html
@@ -124,7 +124,7 @@ var activeTableTab = "activeTableTab";
 <li class="blockList">
 <dl>
 <dt>All Implemented Interfaces:</dt>
-<dd><a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Comparable.html?is-external=true" title="class or interface in java.lang">Comparable</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/client/Row.html" title="interface in org.apache.hadoop.hbase.client">Row</a>&gt;, org.apache.hadoop.hbase.CellScannable, <a href="../../../../../org/apache/hadoop/hbase/client/Attributes.html" title="interface in org.apache.hadoop.hbase.client">Attributes</a>, <a href="../../../../../org/apache/hadoop/hbase/client/Row.html" title="interface in org.apache.hadoop.hbase.client">Row</a>, org.apache.hadoop.hbase.io.HeapSize</dd>
+<dd><a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Comparable.html?is-external=true" title="class or interface in java.lang">Comparable</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/client/Row.html" title="interface in org.apache.hadoop.hbase.client">Row</a>&gt;, <a href="../../../../../org/apache/hadoop/hbase/CellScannable.html" title="interface in org.apache.hadoop.hbase">CellScannable</a>, <a href="../../../../../org/apache/hadoop/hbase/client/Attributes.html" title="interface in org.apache.hadoop.hbase.client">Attributes</a>, <a href="../../../../../org/apache/hadoop/hbase/client/Row.html" title="interface in org.apache.hadoop.hbase.client">Row</a>, org.apache.hadoop.hbase.io.HeapSize</dd>
 </dl>
 <hr>
 <br>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/c54c242b/apidocs/org/apache/hadoop/hbase/client/Delete.html
----------------------------------------------------------------------
diff --git a/apidocs/org/apache/hadoop/hbase/client/Delete.html b/apidocs/org/apache/hadoop/hbase/client/Delete.html
index 53126fb..295ba43 100644
--- a/apidocs/org/apache/hadoop/hbase/client/Delete.html
+++ b/apidocs/org/apache/hadoop/hbase/client/Delete.html
@@ -124,7 +124,7 @@ var activeTableTab = "activeTableTab";
 <li class="blockList">
 <dl>
 <dt>All Implemented Interfaces:</dt>
-<dd><a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Comparable.html?is-external=true" title="class or interface in java.lang">Comparable</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/client/Row.html" title="interface in org.apache.hadoop.hbase.client">Row</a>&gt;, org.apache.hadoop.hbase.CellScannable, <a href="../../../../../org/apache/hadoop/hbase/client/Attributes.html" title="interface in org.apache.hadoop.hbase.client">Attributes</a>, <a href="../../../../../org/apache/hadoop/hbase/client/Row.html" title="interface in org.apache.hadoop.hbase.client">Row</a>, org.apache.hadoop.hbase.io.HeapSize</dd>
+<dd><a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Comparable.html?is-external=true" title="class or interface in java.lang">Comparable</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/client/Row.html" title="interface in org.apache.hadoop.hbase.client">Row</a>&gt;, <a href="../../../../../org/apache/hadoop/hbase/CellScannable.html" title="interface in org.apache.hadoop.hbase">CellScannable</a>, <a href="../../../../../org/apache/hadoop/hbase/client/Attributes.html" title="interface in org.apache.hadoop.hbase.client">Attributes</a>, <a href="../../../../../org/apache/hadoop/hbase/client/Row.html" title="interface in org.apache.hadoop.hbase.client">Row</a>, org.apache.hadoop.hbase.io.HeapSize</dd>
 </dl>
 <hr>
 <br>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/c54c242b/apidocs/org/apache/hadoop/hbase/client/Increment.html
----------------------------------------------------------------------
diff --git a/apidocs/org/apache/hadoop/hbase/client/Increment.html b/apidocs/org/apache/hadoop/hbase/client/Increment.html
index 325036f..a051699 100644
--- a/apidocs/org/apache/hadoop/hbase/client/Increment.html
+++ b/apidocs/org/apache/hadoop/hbase/client/Increment.html
@@ -124,7 +124,7 @@ var activeTableTab = "activeTableTab";
 <li class="blockList">
 <dl>
 <dt>All Implemented Interfaces:</dt>
-<dd><a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Comparable.html?is-external=true" title="class or interface in java.lang">Comparable</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/client/Row.html" title="interface in org.apache.hadoop.hbase.client">Row</a>&gt;, org.apache.hadoop.hbase.CellScannable, <a href="../../../../../org/apache/hadoop/hbase/client/Attributes.html" title="interface in org.apache.hadoop.hbase.client">Attributes</a>, <a href="../../../../../org/apache/hadoop/hbase/client/Row.html" title="interface in org.apache.hadoop.hbase.client">Row</a>, org.apache.hadoop.hbase.io.HeapSize</dd>
+<dd><a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Comparable.html?is-external=true" title="class or interface in java.lang">Comparable</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/client/Row.html" title="interface in org.apache.hadoop.hbase.client">Row</a>&gt;, <a href="../../../../../org/apache/hadoop/hbase/CellScannable.html" title="interface in org.apache.hadoop.hbase">CellScannable</a>, <a href="../../../../../org/apache/hadoop/hbase/client/Attributes.html" title="interface in org.apache.hadoop.hbase.client">Attributes</a>, <a href="../../../../../org/apache/hadoop/hbase/client/Row.html" title="interface in org.apache.hadoop.hbase.client">Row</a>, org.apache.hadoop.hbase.io.HeapSize</dd>
 </dl>
 <hr>
 <br>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/c54c242b/apidocs/org/apache/hadoop/hbase/client/Mutation.html
----------------------------------------------------------------------
diff --git a/apidocs/org/apache/hadoop/hbase/client/Mutation.html b/apidocs/org/apache/hadoop/hbase/client/Mutation.html
index 9bf68b4..4d5c680 100644
--- a/apidocs/org/apache/hadoop/hbase/client/Mutation.html
+++ b/apidocs/org/apache/hadoop/hbase/client/Mutation.html
@@ -119,7 +119,7 @@ var activeTableTab = "activeTableTab";
 <li class="blockList">
 <dl>
 <dt>All Implemented Interfaces:</dt>
-<dd><a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Comparable.html?is-external=true" title="class or interface in java.lang">Comparable</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/client/Row.html" title="interface in org.apache.hadoop.hbase.client">Row</a>&gt;, org.apache.hadoop.hbase.CellScannable, <a href="../../../../../org/apache/hadoop/hbase/client/Attributes.html" title="interface in org.apache.hadoop.hbase.client">Attributes</a>, <a href="../../../../../org/apache/hadoop/hbase/client/Row.html" title="interface in org.apache.hadoop.hbase.client">Row</a>, org.apache.hadoop.hbase.io.HeapSize</dd>
+<dd><a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Comparable.html?is-external=true" title="class or interface in java.lang">Comparable</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/client/Row.html" title="interface in org.apache.hadoop.hbase.client">Row</a>&gt;, <a href="../../../../../org/apache/hadoop/hbase/CellScannable.html" title="interface in org.apache.hadoop.hbase">CellScannable</a>, <a href="../../../../../org/apache/hadoop/hbase/client/Attributes.html" title="interface in org.apache.hadoop.hbase.client">Attributes</a>, <a href="../../../../../org/apache/hadoop/hbase/client/Row.html" title="interface in org.apache.hadoop.hbase.client">Row</a>, org.apache.hadoop.hbase.io.HeapSize</dd>
 </dl>
 <dl>
 <dt>Direct Known Subclasses:</dt>
@@ -130,7 +130,7 @@ var activeTableTab = "activeTableTab";
 <pre>@InterfaceAudience.Public
 public abstract class <a href="../../../../../src-html/org/apache/hadoop/hbase/client/Mutation.html#line.59">Mutation</a>
 extends <a href="../../../../../org/apache/hadoop/hbase/client/OperationWithAttributes.html" title="class in org.apache.hadoop.hbase.client">OperationWithAttributes</a>
-implements <a href="../../../../../org/apache/hadoop/hbase/client/Row.html" title="interface in org.apache.hadoop.hbase.client">Row</a>, org.apache.hadoop.hbase.CellScannable, org.apache.hadoop.hbase.io.HeapSize</pre>
+implements <a href="../../../../../org/apache/hadoop/hbase/client/Row.html" title="interface in org.apache.hadoop.hbase.client">Row</a>, <a href="../../../../../org/apache/hadoop/hbase/CellScannable.html" title="interface in org.apache.hadoop.hbase">CellScannable</a>, org.apache.hadoop.hbase.io.HeapSize</pre>
 </li>
 </ul>
 </div>
@@ -209,7 +209,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/client/Row.html" titl
 <th class="colLast" scope="col">Method and Description</th>
 </tr>
 <tr id="i0" class="altColor">
-<td class="colFirst"><code>org.apache.hadoop.hbase.CellScanner</code></td>
+<td class="colFirst"><code><a href="../../../../../org/apache/hadoop/hbase/CellScanner.html" title="interface in org.apache.hadoop.hbase">CellScanner</a></code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/client/Mutation.html#cellScanner--">cellScanner</a></span>()</code>&nbsp;</td>
 </tr>
 <tr id="i1" class="rowColor">
@@ -448,10 +448,10 @@ implements <a href="../../../../../org/apache/hadoop/hbase/client/Row.html" titl
 <ul class="blockList">
 <li class="blockList">
 <h4>cellScanner</h4>
-<pre>public&nbsp;org.apache.hadoop.hbase.CellScanner&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/Mutation.html#line.98">cellScanner</a>()</pre>
+<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/CellScanner.html" title="interface in org.apache.hadoop.hbase">CellScanner</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/Mutation.html#line.98">cellScanner</a>()</pre>
 <dl>
 <dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
-<dd><code>cellScanner</code>&nbsp;in interface&nbsp;<code>org.apache.hadoop.hbase.CellScannable</code></dd>
+<dd><code><a href="../../../../../org/apache/hadoop/hbase/CellScannable.html#cellScanner--">cellScanner</a></code>&nbsp;in interface&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/CellScannable.html" title="interface in org.apache.hadoop.hbase">CellScannable</a></code></dd>
 <dt><span class="returnLabel">Returns:</span></dt>
 <dd>A CellScanner over the contained <a href="../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase"><code>Cell</code></a>s</dd>
 </dl>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/c54c242b/apidocs/org/apache/hadoop/hbase/client/Put.html
----------------------------------------------------------------------
diff --git a/apidocs/org/apache/hadoop/hbase/client/Put.html b/apidocs/org/apache/hadoop/hbase/client/Put.html
index f03bf68..7d177ab 100644
--- a/apidocs/org/apache/hadoop/hbase/client/Put.html
+++ b/apidocs/org/apache/hadoop/hbase/client/Put.html
@@ -124,7 +124,7 @@ var activeTableTab = "activeTableTab";
 <li class="blockList">
 <dl>
 <dt>All Implemented Interfaces:</dt>
-<dd><a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Comparable.html?is-external=true" title="class or interface in java.lang">Comparable</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/client/Row.html" title="interface in org.apache.hadoop.hbase.client">Row</a>&gt;, org.apache.hadoop.hbase.CellScannable, <a href="../../../../../org/apache/hadoop/hbase/client/Attributes.html" title="interface in org.apache.hadoop.hbase.client">Attributes</a>, <a href="../../../../../org/apache/hadoop/hbase/client/Row.html" title="interface in org.apache.hadoop.hbase.client">Row</a>, org.apache.hadoop.hbase.io.HeapSize</dd>
+<dd><a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Comparable.html?is-external=true" title="class or interface in java.lang">Comparable</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/client/Row.html" title="interface in org.apache.hadoop.hbase.client">Row</a>&gt;, <a href="../../../../../org/apache/hadoop/hbase/CellScannable.html" title="interface in org.apache.hadoop.hbase">CellScannable</a>, <a href="../../../../../org/apache/hadoop/hbase/client/Attributes.html" title="interface in org.apache.hadoop.hbase.client">Attributes</a>, <a href="../../../../../org/apache/hadoop/hbase/client/Row.html" title="interface in org.apache.hadoop.hbase.client">Row</a>, org.apache.hadoop.hbase.io.HeapSize</dd>
 </dl>
 <hr>
 <br>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/c54c242b/apidocs/org/apache/hadoop/hbase/client/Result.html
----------------------------------------------------------------------
diff --git a/apidocs/org/apache/hadoop/hbase/client/Result.html b/apidocs/org/apache/hadoop/hbase/client/Result.html
index 2021bc7..b7a40b3 100644
--- a/apidocs/org/apache/hadoop/hbase/client/Result.html
+++ b/apidocs/org/apache/hadoop/hbase/client/Result.html
@@ -109,14 +109,14 @@ var activeTableTab = "activeTableTab";
 <li class="blockList">
 <dl>
 <dt>All Implemented Interfaces:</dt>
-<dd>org.apache.hadoop.hbase.CellScannable, org.apache.hadoop.hbase.CellScanner</dd>
+<dd><a href="../../../../../org/apache/hadoop/hbase/CellScannable.html" title="interface in org.apache.hadoop.hbase">CellScannable</a>, <a href="../../../../../org/apache/hadoop/hbase/CellScanner.html" title="interface in org.apache.hadoop.hbase">CellScanner</a></dd>
 </dl>
 <hr>
 <br>
 <pre>@InterfaceAudience.Public
 public class <a href="../../../../../src-html/org/apache/hadoop/hbase/client/Result.html#line.83">Result</a>
 extends <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a>
-implements org.apache.hadoop.hbase.CellScannable, org.apache.hadoop.hbase.CellScanner</pre>
+implements <a href="../../../../../org/apache/hadoop/hbase/CellScannable.html" title="interface in org.apache.hadoop.hbase">CellScannable</a>, <a href="../../../../../org/apache/hadoop/hbase/CellScanner.html" title="interface in org.apache.hadoop.hbase">CellScanner</a></pre>
 <div class="block">Single row result of a <a href="../../../../../org/apache/hadoop/hbase/client/Get.html" title="class in org.apache.hadoop.hbase.client"><code>Get</code></a> or <a href="../../../../../org/apache/hadoop/hbase/client/Scan.html" title="class in org.apache.hadoop.hbase.client"><code>Scan</code></a> query.<p>
 
  This class is <b>NOT THREAD SAFE</b>.<p>
@@ -141,10 +141,10 @@ implements org.apache.hadoop.hbase.CellScannable, org.apache.hadoop.hbase.CellSc
 
  The underlying <a href="../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase"><code>Cell</code></a> objects can be accessed through the method <a href="../../../../../org/apache/hadoop/hbase/client/Result.html#listCells--"><code>listCells()</code></a>.
  This will create a List from the internal Cell []. Better is to exploit the fact that
- a new Result instance is a primed <code>CellScanner</code>; just call <a href="../../../../../org/apache/hadoop/hbase/client/Result.html#advance--"><code>advance()</code></a> and
- <a href="../../../../../org/apache/hadoop/hbase/client/Result.html#current--"><code>current()</code></a> to iterate over Cells as you would any <code>CellScanner</code>.
+ a new Result instance is a primed <a href="../../../../../org/apache/hadoop/hbase/CellScanner.html" title="interface in org.apache.hadoop.hbase"><code>CellScanner</code></a>; just call <a href="../../../../../org/apache/hadoop/hbase/client/Result.html#advance--"><code>advance()</code></a> and
+ <a href="../../../../../org/apache/hadoop/hbase/client/Result.html#current--"><code>current()</code></a> to iterate over Cells as you would any <a href="../../../../../org/apache/hadoop/hbase/CellScanner.html" title="interface in org.apache.hadoop.hbase"><code>CellScanner</code></a>.
  Call <a href="../../../../../org/apache/hadoop/hbase/client/Result.html#cellScanner--"><code>cellScanner()</code></a> to reset should you need to iterate the same Result over again
- (<code>CellScanner</code>s are one-shot).
+ (<a href="../../../../../org/apache/hadoop/hbase/CellScanner.html" title="interface in org.apache.hadoop.hbase"><code>CellScanner</code></a>s are one-shot).
 
  If you need to overwrite a Result with another Result instance -- as in the old 'mapred'
  RecordReader next invocations -- then create an empty Result with the null constructor and
@@ -230,7 +230,7 @@ implements org.apache.hadoop.hbase.CellScannable, org.apache.hadoop.hbase.CellSc
 </td>
 </tr>
 <tr id="i3" class="rowColor">
-<td class="colFirst"><code>org.apache.hadoop.hbase.CellScanner</code></td>
+<td class="colFirst"><code><a href="../../../../../org/apache/hadoop/hbase/CellScanner.html" title="interface in org.apache.hadoop.hbase">CellScanner</a></code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/client/Result.html#cellScanner--">cellScanner</a></span>()</code>&nbsp;</td>
 </tr>
 <tr id="i4" class="altColor">
@@ -1307,10 +1307,10 @@ implements org.apache.hadoop.hbase.CellScannable, org.apache.hadoop.hbase.CellSc
 <ul class="blockList">
 <li class="blockList">
 <h4>cellScanner</h4>
-<pre>public&nbsp;org.apache.hadoop.hbase.CellScanner&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/Result.html#line.881">cellScanner</a>()</pre>
+<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/CellScanner.html" title="interface in org.apache.hadoop.hbase">CellScanner</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/Result.html#line.881">cellScanner</a>()</pre>
 <dl>
 <dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
-<dd><code>cellScanner</code>&nbsp;in interface&nbsp;<code>org.apache.hadoop.hbase.CellScannable</code></dd>
+<dd><code><a href="../../../../../org/apache/hadoop/hbase/CellScannable.html#cellScanner--">cellScanner</a></code>&nbsp;in interface&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/CellScannable.html" title="interface in org.apache.hadoop.hbase">CellScannable</a></code></dd>
 <dt><span class="returnLabel">Returns:</span></dt>
 <dd>A CellScanner over the contained <a href="../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase"><code>Cell</code></a>s</dd>
 </dl>
@@ -1325,7 +1325,7 @@ implements org.apache.hadoop.hbase.CellScannable, org.apache.hadoop.hbase.CellSc
 <pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/Result.html#line.888">current</a>()</pre>
 <dl>
 <dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
-<dd><code>current</code>&nbsp;in interface&nbsp;<code>org.apache.hadoop.hbase.CellScanner</code></dd>
+<dd><code><a href="../../../../../org/apache/hadoop/hbase/CellScanner.html#current--">current</a></code>&nbsp;in interface&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/CellScanner.html" title="interface in org.apache.hadoop.hbase">CellScanner</a></code></dd>
 <dt><span class="returnLabel">Returns:</span></dt>
 <dd>the current Cell which may be mutable</dd>
 </dl>
@@ -1338,13 +1338,13 @@ implements org.apache.hadoop.hbase.CellScannable, org.apache.hadoop.hbase.CellSc
 <li class="blockList">
 <h4>advance</h4>
 <pre>public&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/Result.html#line.897">advance</a>()</pre>
-<div class="block"><span class="descfrmTypeLabel">Description copied from interface:&nbsp;<code>org.apache.hadoop.hbase.CellScanner</code></span></div>
+<div class="block"><span class="descfrmTypeLabel">Description copied from interface:&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/CellScanner.html#advance--">CellScanner</a></code></span></div>
 <div class="block">Advance the scanner 1 cell.</div>
 <dl>
 <dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
-<dd><code>advance</code>&nbsp;in interface&nbsp;<code>org.apache.hadoop.hbase.CellScanner</code></dd>
+<dd><code><a href="../../../../../org/apache/hadoop/hbase/CellScanner.html#advance--">advance</a></code>&nbsp;in interface&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/CellScanner.html" title="interface in org.apache.hadoop.hbase">CellScanner</a></code></dd>
 <dt><span class="returnLabel">Returns:</span></dt>
-<dd>true if the next cell is found and <code>CellScanner.current()</code> will return a valid Cell</dd>
+<dd>true if the next cell is found and <a href="../../../../../org/apache/hadoop/hbase/CellScanner.html#current--"><code>CellScanner.current()</code></a> will return a valid Cell</dd>
 </dl>
 </li>
 </ul>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/c54c242b/apidocs/org/apache/hadoop/hbase/client/package-tree.html
----------------------------------------------------------------------
diff --git a/apidocs/org/apache/hadoop/hbase/client/package-tree.html b/apidocs/org/apache/hadoop/hbase/client/package-tree.html
index b5d15a3..0993466 100644
--- a/apidocs/org/apache/hadoop/hbase/client/package-tree.html
+++ b/apidocs/org/apache/hadoop/hbase/client/package-tree.html
@@ -91,7 +91,7 @@
 <ul>
 <li type="circle">org.apache.hadoop.hbase.client.<a href="../../../../../org/apache/hadoop/hbase/client/OperationWithAttributes.html" title="class in org.apache.hadoop.hbase.client"><span class="typeNameLink">OperationWithAttributes</span></a> (implements org.apache.hadoop.hbase.client.<a href="../../../../../org/apache/hadoop/hbase/client/Attributes.html" title="interface in org.apache.hadoop.hbase.client">Attributes</a>)
 <ul>
-<li type="circle">org.apache.hadoop.hbase.client.<a href="../../../../../org/apache/hadoop/hbase/client/Mutation.html" title="class in org.apache.hadoop.hbase.client"><span class="typeNameLink">Mutation</span></a> (implements org.apache.hadoop.hbase.CellScannable, org.apache.hadoop.hbase.io.HeapSize, org.apache.hadoop.hbase.client.<a href="../../../../../org/apache/hadoop/hbase/client/Row.html" title="interface in org.apache.hadoop.hbase.client">Row</a>)
+<li type="circle">org.apache.hadoop.hbase.client.<a href="../../../../../org/apache/hadoop/hbase/client/Mutation.html" title="class in org.apache.hadoop.hbase.client"><span class="typeNameLink">Mutation</span></a> (implements org.apache.hadoop.hbase.<a href="../../../../../org/apache/hadoop/hbase/CellScannable.html" title="interface in org.apache.hadoop.hbase">CellScannable</a>, org.apache.hadoop.hbase.io.HeapSize, org.apache.hadoop.hbase.client.<a href="../../../../../org/apache/hadoop/hbase/client/Row.html" title="interface in org.apache.hadoop.hbase.client">Row</a>)
 <ul>
 <li type="circle">org.apache.hadoop.hbase.client.<a href="../../../../../org/apache/hadoop/hbase/client/Append.html" title="class in org.apache.hadoop.hbase.client"><span class="typeNameLink">Append</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.client.<a href="../../../../../org/apache/hadoop/hbase/client/Delete.html" title="class in org.apache.hadoop.hbase.client"><span class="typeNameLink">Delete</span></a> (implements java.lang.<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Comparable.html?is-external=true" title="class or interface in java.lang">Comparable</a>&lt;T&gt;)</li>
@@ -111,7 +111,7 @@
 </li>
 <li type="circle">org.apache.hadoop.hbase.client.<a href="../../../../../org/apache/hadoop/hbase/client/RegionLoadStats.html" title="class in org.apache.hadoop.hbase.client"><span class="typeNameLink">RegionLoadStats</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.client.<a href="../../../../../org/apache/hadoop/hbase/client/RequestControllerFactory.html" title="class in org.apache.hadoop.hbase.client"><span class="typeNameLink">RequestControllerFactory</span></a></li>
-<li type="circle">org.apache.hadoop.hbase.client.<a href="../../../../../org/apache/hadoop/hbase/client/Result.html" title="class in org.apache.hadoop.hbase.client"><span class="typeNameLink">Result</span></a> (implements org.apache.hadoop.hbase.CellScannable, org.apache.hadoop.hbase.CellScanner)</li>
+<li type="circle">org.apache.hadoop.hbase.client.<a href="../../../../../org/apache/hadoop/hbase/client/Result.html" title="class in org.apache.hadoop.hbase.client"><span class="typeNameLink">Result</span></a> (implements org.apache.hadoop.hbase.<a href="../../../../../org/apache/hadoop/hbase/CellScannable.html" title="interface in org.apache.hadoop.hbase">CellScannable</a>, org.apache.hadoop.hbase.<a href="../../../../../org/apache/hadoop/hbase/CellScanner.html" title="interface in org.apache.hadoop.hbase">CellScanner</a>)</li>
 <li type="circle">org.apache.hadoop.hbase.client.<a href="../../../../../org/apache/hadoop/hbase/client/RowMutations.html" title="class in org.apache.hadoop.hbase.client"><span class="typeNameLink">RowMutations</span></a> (implements org.apache.hadoop.hbase.client.<a href="../../../../../org/apache/hadoop/hbase/client/Row.html" title="interface in org.apache.hadoop.hbase.client">Row</a>)</li>
 <li type="circle">org.apache.hadoop.hbase.client.<a href="../../../../../org/apache/hadoop/hbase/client/ShortCircuitMasterConnection.html" title="class in org.apache.hadoop.hbase.client"><span class="typeNameLink">ShortCircuitMasterConnection</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.client.<a href="../../../../../org/apache/hadoop/hbase/client/SnapshotDescription.html" title="class in org.apache.hadoop.hbase.client"><span class="typeNameLink">SnapshotDescription</span></a></li>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/c54c242b/apidocs/org/apache/hadoop/hbase/filter/RowFilter.html
----------------------------------------------------------------------
diff --git a/apidocs/org/apache/hadoop/hbase/filter/RowFilter.html b/apidocs/org/apache/hadoop/hbase/filter/RowFilter.html
index 3b496c8..8eb98b0 100644
--- a/apidocs/org/apache/hadoop/hbase/filter/RowFilter.html
+++ b/apidocs/org/apache/hadoop/hbase/filter/RowFilter.html
@@ -136,7 +136,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/filter/CompareFilter.htm
  Multiple filters can be combined using <a href="../../../../../org/apache/hadoop/hbase/filter/FilterList.html" title="class in org.apache.hadoop.hbase.filter"><code>FilterList</code></a>.
  <p>
  If an already known row range needs to be scanned, 
- use <code>CellScanner</code> start
+ use <a href="../../../../../org/apache/hadoop/hbase/CellScanner.html" title="interface in org.apache.hadoop.hbase"><code>CellScanner</code></a> start
  and stop rows directly rather than a filter.</div>
 </li>
 </ul>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/c54c242b/apidocs/org/apache/hadoop/hbase/filter/SingleColumnValueFilter.html
----------------------------------------------------------------------
diff --git a/apidocs/org/apache/hadoop/hbase/filter/SingleColumnValueFilter.html b/apidocs/org/apache/hadoop/hbase/filter/SingleColumnValueFilter.html
index 9261437..2b1eb83 100644
--- a/apidocs/org/apache/hadoop/hbase/filter/SingleColumnValueFilter.html
+++ b/apidocs/org/apache/hadoop/hbase/filter/SingleColumnValueFilter.html
@@ -138,7 +138,7 @@ extends org.apache.hadoop.hbase.filter.FilterBase</pre>
  <p>
  You must also specify a family and qualifier.  Only the value of this column
  will be tested. When using this filter on a 
- <code>CellScanner</code> with specified
+ <a href="../../../../../org/apache/hadoop/hbase/CellScanner.html" title="interface in org.apache.hadoop.hbase"><code>CellScanner</code></a> with specified
  inputs, the column to be tested should also be added as input (otherwise
  the filter will regard the column as missing).
  <p>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/c54c242b/apidocs/org/apache/hadoop/hbase/mapreduce/TableSnapshotInputFormat.html
----------------------------------------------------------------------
diff --git a/apidocs/org/apache/hadoop/hbase/mapreduce/TableSnapshotInputFormat.html b/apidocs/org/apache/hadoop/hbase/mapreduce/TableSnapshotInputFormat.html
index 23cfdc2..96bada2 100644
--- a/apidocs/org/apache/hadoop/hbase/mapreduce/TableSnapshotInputFormat.html
+++ b/apidocs/org/apache/hadoop/hbase/mapreduce/TableSnapshotInputFormat.html
@@ -147,7 +147,7 @@ extends org.apache.hadoop.mapreduce.InputFormat&lt;<a href="../../../../../org/a
  can run N mapper tasks per every region, in which case the region key range will be split to
  N sub-ranges and an InputSplit will be created per sub-range. The region is opened for reading
  from each RecordReader. An internal RegionScanner is used to execute the
- <code>CellScanner</code> obtained from the user.
+ <a href="../../../../../org/apache/hadoop/hbase/CellScanner.html" title="interface in org.apache.hadoop.hbase"><code>CellScanner</code></a> obtained from the user.
  <p>
  HBase owns all the data and snapshot files on the filesystem. Only the 'hbase' user can read from
  snapshot files and data files.

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/c54c242b/apidocs/org/apache/hadoop/hbase/package-frame.html
----------------------------------------------------------------------
diff --git a/apidocs/org/apache/hadoop/hbase/package-frame.html b/apidocs/org/apache/hadoop/hbase/package-frame.html
index 7927481..4a35722 100644
--- a/apidocs/org/apache/hadoop/hbase/package-frame.html
+++ b/apidocs/org/apache/hadoop/hbase/package-frame.html
@@ -16,6 +16,8 @@
 <li><a href="Cell.html" title="interface in org.apache.hadoop.hbase" target="classFrame"><span class="interfaceName">Cell</span></a></li>
 <li><a href="CellBuilder.html" title="interface in org.apache.hadoop.hbase" target="classFrame"><span class="interfaceName">CellBuilder</span></a></li>
 <li><a href="CellComparator.html" title="interface in org.apache.hadoop.hbase" target="classFrame"><span class="interfaceName">CellComparator</span></a></li>
+<li><a href="CellScannable.html" title="interface in org.apache.hadoop.hbase" target="classFrame"><span class="interfaceName">CellScannable</span></a></li>
+<li><a href="CellScanner.html" title="interface in org.apache.hadoop.hbase" target="classFrame"><span class="interfaceName">CellScanner</span></a></li>
 <li><a href="Stoppable.html" title="interface in org.apache.hadoop.hbase" target="classFrame"><span class="interfaceName">Stoppable</span></a></li>
 </ul>
 <h2 title="Classes">Classes</h2>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/c54c242b/apidocs/org/apache/hadoop/hbase/package-summary.html
----------------------------------------------------------------------
diff --git a/apidocs/org/apache/hadoop/hbase/package-summary.html b/apidocs/org/apache/hadoop/hbase/package-summary.html
index 54e175d..8310a13 100644
--- a/apidocs/org/apache/hadoop/hbase/package-summary.html
+++ b/apidocs/org/apache/hadoop/hbase/package-summary.html
@@ -103,6 +103,18 @@
 </td>
 </tr>
 <tr class="rowColor">
+<td class="colFirst"><a href="../../../../org/apache/hadoop/hbase/CellScannable.html" title="interface in org.apache.hadoop.hbase">CellScannable</a></td>
+<td class="colLast">
+<div class="block">Implementer can return a CellScanner over its Cell content.</div>
+</td>
+</tr>
+<tr class="altColor">
+<td class="colFirst"><a href="../../../../org/apache/hadoop/hbase/CellScanner.html" title="interface in org.apache.hadoop.hbase">CellScanner</a></td>
+<td class="colLast">
+<div class="block">An interface for iterating through a sequence of cells.</div>
+</td>
+</tr>
+<tr class="rowColor">
 <td class="colFirst"><a href="../../../../org/apache/hadoop/hbase/Stoppable.html" title="interface in org.apache.hadoop.hbase">Stoppable</a></td>
 <td class="colLast">
 <div class="block">Implementers are Stoppable.</div>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/c54c242b/apidocs/org/apache/hadoop/hbase/package-tree.html
----------------------------------------------------------------------
diff --git a/apidocs/org/apache/hadoop/hbase/package-tree.html b/apidocs/org/apache/hadoop/hbase/package-tree.html
index 795e47a..4f94b0d 100644
--- a/apidocs/org/apache/hadoop/hbase/package-tree.html
+++ b/apidocs/org/apache/hadoop/hbase/package-tree.html
@@ -164,6 +164,8 @@
 <ul>
 <li type="circle">org.apache.hadoop.hbase.<a href="../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase"><span class="typeNameLink">Cell</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.<a href="../../../../org/apache/hadoop/hbase/CellBuilder.html" title="interface in org.apache.hadoop.hbase"><span class="typeNameLink">CellBuilder</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.<a href="../../../../org/apache/hadoop/hbase/CellScannable.html" title="interface in org.apache.hadoop.hbase"><span class="typeNameLink">CellScannable</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.<a href="../../../../org/apache/hadoop/hbase/CellScanner.html" title="interface in org.apache.hadoop.hbase"><span class="typeNameLink">CellScanner</span></a></li>
 <li type="circle">java.util.<a href="http://docs.oracle.com/javase/8/docs/api/java/util/Comparator.html?is-external=true" title="class or interface in java.util"><span class="typeNameLink">Comparator</span></a>&lt;T&gt;
 <ul>
 <li type="circle">org.apache.hadoop.hbase.<a href="../../../../org/apache/hadoop/hbase/CellComparator.html" title="interface in org.apache.hadoop.hbase"><span class="typeNameLink">CellComparator</span></a></li>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/c54c242b/apidocs/org/apache/hadoop/hbase/package-use.html
----------------------------------------------------------------------
diff --git a/apidocs/org/apache/hadoop/hbase/package-use.html b/apidocs/org/apache/hadoop/hbase/package-use.html
index 203fc6f..aec8ebc 100644
--- a/apidocs/org/apache/hadoop/hbase/package-use.html
+++ b/apidocs/org/apache/hadoop/hbase/package-use.html
@@ -199,6 +199,16 @@ Input/OutputFormats, a table indexing MapReduce job, and utility methods.</div>
 </td>
 </tr>
 <tr class="altColor">
+<td class="colOne"><a href="../../../../org/apache/hadoop/hbase/class-use/CellScannable.html#org.apache.hadoop.hbase">CellScannable</a>
+<div class="block">Implementer can return a CellScanner over its Cell content.</div>
+</td>
+</tr>
+<tr class="rowColor">
+<td class="colOne"><a href="../../../../org/apache/hadoop/hbase/class-use/CellScanner.html#org.apache.hadoop.hbase">CellScanner</a>
+<div class="block">An interface for iterating through a sequence of cells.</div>
+</td>
+</tr>
+<tr class="altColor">
 <td class="colOne"><a href="../../../../org/apache/hadoop/hbase/class-use/CompareOperator.html#org.apache.hadoop.hbase">CompareOperator</a>
 <div class="block">Generic set of comparison operators.</div>
 </td>
@@ -318,6 +328,16 @@ Input/OutputFormats, a table indexing MapReduce job, and utility methods.</div>
 </td>
 </tr>
 <tr class="altColor">
+<td class="colOne"><a href="../../../../org/apache/hadoop/hbase/class-use/CellScannable.html#org.apache.hadoop.hbase.client">CellScannable</a>
+<div class="block">Implementer can return a CellScanner over its Cell content.</div>
+</td>
+</tr>
+<tr class="rowColor">
+<td class="colOne"><a href="../../../../org/apache/hadoop/hbase/class-use/CellScanner.html#org.apache.hadoop.hbase.client">CellScanner</a>
+<div class="block">An interface for iterating through a sequence of cells.</div>
+</td>
+</tr>
+<tr class="altColor">
 <td class="colOne"><a href="../../../../org/apache/hadoop/hbase/class-use/ClusterStatus.html#org.apache.hadoop.hbase.client">ClusterStatus</a>
 <div class="block">Status information on the HBase cluster.</div>
 </td>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/c54c242b/apidocs/overview-tree.html
----------------------------------------------------------------------
diff --git a/apidocs/overview-tree.html b/apidocs/overview-tree.html
index 2a65720..49e7b5e 100644
--- a/apidocs/overview-tree.html
+++ b/apidocs/overview-tree.html
@@ -367,7 +367,7 @@
 <ul>
 <li type="circle">org.apache.hadoop.hbase.client.<a href="org/apache/hadoop/hbase/client/OperationWithAttributes.html" title="class in org.apache.hadoop.hbase.client"><span class="typeNameLink">OperationWithAttributes</span></a> (implements org.apache.hadoop.hbase.client.<a href="org/apache/hadoop/hbase/client/Attributes.html" title="interface in org.apache.hadoop.hbase.client">Attributes</a>)
 <ul>
-<li type="circle">org.apache.hadoop.hbase.client.<a href="org/apache/hadoop/hbase/client/Mutation.html" title="class in org.apache.hadoop.hbase.client"><span class="typeNameLink">Mutation</span></a> (implements org.apache.hadoop.hbase.CellScannable, org.apache.hadoop.hbase.io.HeapSize, org.apache.hadoop.hbase.client.<a href="org/apache/hadoop/hbase/client/Row.html" title="interface in org.apache.hadoop.hbase.client">Row</a>)
+<li type="circle">org.apache.hadoop.hbase.client.<a href="org/apache/hadoop/hbase/client/Mutation.html" title="class in org.apache.hadoop.hbase.client"><span class="typeNameLink">Mutation</span></a> (implements org.apache.hadoop.hbase.<a href="org/apache/hadoop/hbase/CellScannable.html" title="interface in org.apache.hadoop.hbase">CellScannable</a>, org.apache.hadoop.hbase.io.HeapSize, org.apache.hadoop.hbase.client.<a href="org/apache/hadoop/hbase/client/Row.html" title="interface in org.apache.hadoop.hbase.client">Row</a>)
 <ul>
 <li type="circle">org.apache.hadoop.hbase.client.<a href="org/apache/hadoop/hbase/client/Append.html" title="class in org.apache.hadoop.hbase.client"><span class="typeNameLink">Append</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.client.<a href="org/apache/hadoop/hbase/client/Delete.html" title="class in org.apache.hadoop.hbase.client"><span class="typeNameLink">Delete</span></a> (implements java.lang.<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Comparable.html?is-external=true" title="class or interface in java.lang">Comparable</a>&lt;T&gt;)</li>
@@ -480,7 +480,7 @@
 <li type="circle">org.apache.hadoop.hbase.replication.<a href="org/apache/hadoop/hbase/replication/ReplicationPeerDescription.html" title="class in org.apache.hadoop.hbase.replication"><span class="typeNameLink">ReplicationPeerDescription</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.client.<a href="org/apache/hadoop/hbase/client/RequestControllerFactory.html" title="class in org.apache.hadoop.hbase.client"><span class="typeNameLink">RequestControllerFactory</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.rest.client.<a href="org/apache/hadoop/hbase/rest/client/Response.html" title="class in org.apache.hadoop.hbase.rest.client"><span class="typeNameLink">Response</span></a></li>
-<li type="circle">org.apache.hadoop.hbase.client.<a href="org/apache/hadoop/hbase/client/Result.html" title="class in org.apache.hadoop.hbase.client"><span class="typeNameLink">Result</span></a> (implements org.apache.hadoop.hbase.CellScannable, org.apache.hadoop.hbase.CellScanner)</li>
+<li type="circle">org.apache.hadoop.hbase.client.<a href="org/apache/hadoop/hbase/client/Result.html" title="class in org.apache.hadoop.hbase.client"><span class="typeNameLink">Result</span></a> (implements org.apache.hadoop.hbase.<a href="org/apache/hadoop/hbase/CellScannable.html" title="interface in org.apache.hadoop.hbase">CellScannable</a>, org.apache.hadoop.hbase.<a href="org/apache/hadoop/hbase/CellScanner.html" title="interface in org.apache.hadoop.hbase">CellScanner</a>)</li>
 <li type="circle">org.apache.hadoop.hbase.client.<a href="org/apache/hadoop/hbase/client/RowMutations.html" title="class in org.apache.hadoop.hbase.client"><span class="typeNameLink">RowMutations</span></a> (implements org.apache.hadoop.hbase.client.<a href="org/apache/hadoop/hbase/client/Row.html" title="interface in org.apache.hadoop.hbase.client">Row</a>)</li>
 <li type="circle">org.apache.hadoop.hbase.rsgroup.<a href="org/apache/hadoop/hbase/rsgroup/RSGroupInfo.html" title="class in org.apache.hadoop.hbase.rsgroup"><span class="typeNameLink">RSGroupInfo</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.<a href="org/apache/hadoop/hbase/ScheduledChore.html" title="class in org.apache.hadoop.hbase"><span class="typeNameLink">ScheduledChore</span></a> (implements java.lang.<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Runnable.html?is-external=true" title="class or interface in java.lang">Runnable</a>)</li>
@@ -801,6 +801,8 @@
 <li type="circle">org.apache.hadoop.hbase.client.<a href="org/apache/hadoop/hbase/client/BufferedMutator.ExceptionListener.html" title="interface in org.apache.hadoop.hbase.client"><span class="typeNameLink">BufferedMutator.ExceptionListener</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.<a href="org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase"><span class="typeNameLink">Cell</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.<a href="org/apache/hadoop/hbase/CellBuilder.html" title="interface in org.apache.hadoop.hbase"><span class="typeNameLink">CellBuilder</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.<a href="org/apache/hadoop/hbase/CellScannable.html" title="interface in org.apache.hadoop.hbase"><span class="typeNameLink">CellScannable</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.<a href="org/apache/hadoop/hbase/CellScanner.html" title="interface in org.apache.hadoop.hbase"><span class="typeNameLink">CellScanner</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.client.backoff.<a href="org/apache/hadoop/hbase/client/backoff/ClientBackoffPolicy.html" title="interface in org.apache.hadoop.hbase.client.backoff"><span class="typeNameLink">ClientBackoffPolicy</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.client.<a href="org/apache/hadoop/hbase/client/ColumnFamilyDescriptor.html" title="interface in org.apache.hadoop.hbase.client"><span class="typeNameLink">ColumnFamilyDescriptor</span></a></li>
 <li type="circle">java.lang.<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Comparable.html?is-external=true" title="class or interface in java.lang"><span class="typeNameLink">Comparable</span></a>&lt;T&gt;

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/c54c242b/apidocs/src-html/org/apache/hadoop/hbase/CellScannable.html
----------------------------------------------------------------------
diff --git a/apidocs/src-html/org/apache/hadoop/hbase/CellScannable.html b/apidocs/src-html/org/apache/hadoop/hbase/CellScannable.html
new file mode 100644
index 0000000..015f8d8
--- /dev/null
+++ b/apidocs/src-html/org/apache/hadoop/hbase/CellScannable.html
@@ -0,0 +1,106 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html lang="en">
+<head>
+<title>Source code</title>
+<link rel="stylesheet" type="text/css" href="../../../../../stylesheet.css" title="Style">
+</head>
+<body>
+<div class="sourceContainer">
+<pre><span class="sourceLineNo">001</span>/**<a name="line.1"></a>
+<span class="sourceLineNo">002</span> * Licensed to the Apache Software Foundation (ASF) under one<a name="line.2"></a>
+<span class="sourceLineNo">003</span> * or more contributor license agreements.  See the NOTICE file<a name="line.3"></a>
+<span class="sourceLineNo">004</span> * distributed with this work for additional information<a name="line.4"></a>
+<span class="sourceLineNo">005</span> * regarding copyright ownership.  The ASF licenses this file<a name="line.5"></a>
+<span class="sourceLineNo">006</span> * to you under the Apache License, Version 2.0 (the<a name="line.6"></a>
+<span class="sourceLineNo">007</span> * "License"); you may not use this file except in compliance<a name="line.7"></a>
+<span class="sourceLineNo">008</span> * with the License.  You may obtain a copy of the License at<a name="line.8"></a>
+<span class="sourceLineNo">009</span> *<a name="line.9"></a>
+<span class="sourceLineNo">010</span> * http://www.apache.org/licenses/LICENSE-2.0<a name="line.10"></a>
+<span class="sourceLineNo">011</span> *<a name="line.11"></a>
+<span class="sourceLineNo">012</span> * Unless required by applicable law or agreed to in writing, software<a name="line.12"></a>
+<span class="sourceLineNo">013</span> * distributed under the License is distributed on an "AS IS" BASIS,<a name="line.13"></a>
+<span class="sourceLineNo">014</span> * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.<a name="line.14"></a>
+<span class="sourceLineNo">015</span> * See the License for the specific language governing permissions and<a name="line.15"></a>
+<span class="sourceLineNo">016</span> * limitations under the License.<a name="line.16"></a>
+<span class="sourceLineNo">017</span> */<a name="line.17"></a>
+<span class="sourceLineNo">018</span>package org.apache.hadoop.hbase;<a name="line.18"></a>
+<span class="sourceLineNo">019</span><a name="line.19"></a>
+<span class="sourceLineNo">020</span>import org.apache.yetus.audience.InterfaceAudience;<a name="line.20"></a>
+<span class="sourceLineNo">021</span><a name="line.21"></a>
+<span class="sourceLineNo">022</span>/**<a name="line.22"></a>
+<span class="sourceLineNo">023</span> * Implementer can return a CellScanner over its Cell content.<a name="line.23"></a>
+<span class="sourceLineNo">024</span> * Class name is ugly but mimicing java.util.Iterable only we are about the dumber<a name="line.24"></a>
+<span class="sourceLineNo">025</span> * CellScanner rather than say Iterator&amp;lt;Cell&amp;gt;.  See CellScanner class comment for why we go<a name="line.25"></a>
+<span class="sourceLineNo">026</span> * dumber than java.util.Iterator.<a name="line.26"></a>
+<span class="sourceLineNo">027</span> */<a name="line.27"></a>
+<span class="sourceLineNo">028</span>@InterfaceAudience.Public<a name="line.28"></a>
+<span class="sourceLineNo">029</span>public interface CellScannable {<a name="line.29"></a>
+<span class="sourceLineNo">030</span>  /**<a name="line.30"></a>
+<span class="sourceLineNo">031</span>   * @return A CellScanner over the contained {@link Cell}s<a name="line.31"></a>
+<span class="sourceLineNo">032</span>   */<a name="line.32"></a>
+<span class="sourceLineNo">033</span>  CellScanner cellScanner();<a name="line.33"></a>
+<span class="sourceLineNo">034</span>}<a name="line.34"></a>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+</pre>
+</div>
+</body>
+</html>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/c54c242b/apidocs/src-html/org/apache/hadoop/hbase/CellScanner.html
----------------------------------------------------------------------
diff --git a/apidocs/src-html/org/apache/hadoop/hbase/CellScanner.html b/apidocs/src-html/org/apache/hadoop/hbase/CellScanner.html
new file mode 100644
index 0000000..2f4a7c8
--- /dev/null
+++ b/apidocs/src-html/org/apache/hadoop/hbase/CellScanner.html
@@ -0,0 +1,135 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html lang="en">
+<head>
+<title>Source code</title>
+<link rel="stylesheet" type="text/css" href="../../../../../stylesheet.css" title="Style">
+</head>
+<body>
+<div class="sourceContainer">
+<pre><span class="sourceLineNo">001</span>/**<a name="line.1"></a>
+<span class="sourceLineNo">002</span> * Licensed to the Apache Software Foundation (ASF) under one<a name="line.2"></a>
+<span class="sourceLineNo">003</span> * or more contributor license agreements.  See the NOTICE file<a name="line.3"></a>
+<span class="sourceLineNo">004</span> * distributed with this work for additional information<a name="line.4"></a>
+<span class="sourceLineNo">005</span> * regarding copyright ownership.  The ASF licenses this file<a name="line.5"></a>
+<span class="sourceLineNo">006</span> * to you under the Apache License, Version 2.0 (the<a name="line.6"></a>
+<span class="sourceLineNo">007</span> * "License"); you may not use this file except in compliance<a name="line.7"></a>
+<span class="sourceLineNo">008</span> * with the License.  You may obtain a copy of the License at<a name="line.8"></a>
+<span class="sourceLineNo">009</span> *<a name="line.9"></a>
+<span class="sourceLineNo">010</span> *     http://www.apache.org/licenses/LICENSE-2.0<a name="line.10"></a>
+<span class="sourceLineNo">011</span> *<a name="line.11"></a>
+<span class="sourceLineNo">012</span> * Unless required by applicable law or agreed to in writing, software<a name="line.12"></a>
+<span class="sourceLineNo">013</span> * distributed under the License is distributed on an "AS IS" BASIS,<a name="line.13"></a>
+<span class="sourceLineNo">014</span> * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.<a name="line.14"></a>
+<span class="sourceLineNo">015</span> * See the License for the specific language governing permissions and<a name="line.15"></a>
+<span class="sourceLineNo">016</span> * limitations under the License.<a name="line.16"></a>
+<span class="sourceLineNo">017</span> */<a name="line.17"></a>
+<span class="sourceLineNo">018</span><a name="line.18"></a>
+<span class="sourceLineNo">019</span>package org.apache.hadoop.hbase;<a name="line.19"></a>
+<span class="sourceLineNo">020</span><a name="line.20"></a>
+<span class="sourceLineNo">021</span>import java.io.IOException;<a name="line.21"></a>
+<span class="sourceLineNo">022</span><a name="line.22"></a>
+<span class="sourceLineNo">023</span>import org.apache.yetus.audience.InterfaceAudience;<a name="line.23"></a>
+<span class="sourceLineNo">024</span>import org.apache.yetus.audience.InterfaceStability;<a name="line.24"></a>
+<span class="sourceLineNo">025</span><a name="line.25"></a>
+<span class="sourceLineNo">026</span>/**<a name="line.26"></a>
+<span class="sourceLineNo">027</span> * An interface for iterating through a sequence of cells. Similar to Java's Iterator, but without<a name="line.27"></a>
+<span class="sourceLineNo">028</span> * the hasNext() or remove() methods. The hasNext() method is problematic because it may require<a name="line.28"></a>
+<span class="sourceLineNo">029</span> * actually loading the next object, which in turn requires storing the previous object somewhere.<a name="line.29"></a>
+<span class="sourceLineNo">030</span> *<a name="line.30"></a>
+<span class="sourceLineNo">031</span> * &lt;p&gt;The core data block decoder should be as fast as possible, so we push the complexity and<a name="line.31"></a>
+<span class="sourceLineNo">032</span> * performance expense of concurrently tracking multiple cells to layers above the CellScanner.<a name="line.32"></a>
+<span class="sourceLineNo">033</span> * &lt;p&gt;<a name="line.33"></a>
+<span class="sourceLineNo">034</span> * The {@link #current()} method will return a reference to a Cell implementation. This reference<a name="line.34"></a>
+<span class="sourceLineNo">035</span> * may or may not point to a reusable cell implementation, so users of the CellScanner should not,<a name="line.35"></a>
+<span class="sourceLineNo">036</span> * for example, accumulate a List of Cells. All of the references may point to the same object,<a name="line.36"></a>
+<span class="sourceLineNo">037</span> * which would be the latest state of the underlying Cell. In short, the Cell is mutable.<a name="line.37"></a>
+<span class="sourceLineNo">038</span> * &lt;/p&gt;<a name="line.38"></a>
+<span class="sourceLineNo">039</span> * Typical usage:<a name="line.39"></a>
+<span class="sourceLineNo">040</span> *<a name="line.40"></a>
+<span class="sourceLineNo">041</span> * &lt;pre&gt;<a name="line.41"></a>
+<span class="sourceLineNo">042</span> * while (scanner.advance()) {<a name="line.42"></a>
+<span class="sourceLineNo">043</span> *   Cell cell = scanner.current();<a name="line.43"></a>
+<span class="sourceLineNo">044</span> *   // do something<a name="line.44"></a>
+<span class="sourceLineNo">045</span> * }<a name="line.45"></a>
+<span class="sourceLineNo">046</span> * &lt;/pre&gt;<a name="line.46"></a>
+<span class="sourceLineNo">047</span> * &lt;p&gt;Often used reading {@link org.apache.hadoop.hbase.Cell}s written by<a name="line.47"></a>
+<span class="sourceLineNo">048</span> * {@link org.apache.hadoop.hbase.io.CellOutputStream}.<a name="line.48"></a>
+<span class="sourceLineNo">049</span> */<a name="line.49"></a>
+<span class="sourceLineNo">050</span>@InterfaceAudience.Public<a name="line.50"></a>
+<span class="sourceLineNo">051</span>public interface CellScanner {<a name="line.51"></a>
+<span class="sourceLineNo">052</span>  /**<a name="line.52"></a>
+<span class="sourceLineNo">053</span>   * @return the current Cell which may be mutable<a name="line.53"></a>
+<span class="sourceLineNo">054</span>   */<a name="line.54"></a>
+<span class="sourceLineNo">055</span>  Cell current();<a name="line.55"></a>
+<span class="sourceLineNo">056</span><a name="line.56"></a>
+<span class="sourceLineNo">057</span>  /**<a name="line.57"></a>
+<span class="sourceLineNo">058</span>   * Advance the scanner 1 cell.<a name="line.58"></a>
+<span class="sourceLineNo">059</span>   * @return true if the next cell is found and {@link #current()} will return a valid Cell<a name="line.59"></a>
+<span class="sourceLineNo">060</span>   * @throws IOException<a name="line.60"></a>
+<span class="sourceLineNo">061</span>   */<a name="line.61"></a>
+<span class="sourceLineNo">062</span>  boolean advance() throws IOException;<a name="line.62"></a>
+<span class="sourceLineNo">063</span>}<a name="line.63"></a>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+</pre>
+</div>
+</body>
+</html>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/c54c242b/apidocs/src-html/org/apache/hadoop/hbase/zookeeper/MiniZooKeeperCluster.html
----------------------------------------------------------------------
diff --git a/apidocs/src-html/org/apache/hadoop/hbase/zookeeper/MiniZooKeeperCluster.html b/apidocs/src-html/org/apache/hadoop/hbase/zookeeper/MiniZooKeeperCluster.html
index 1513749..5db3c04 100644
--- a/apidocs/src-html/org/apache/hadoop/hbase/zookeeper/MiniZooKeeperCluster.html
+++ b/apidocs/src-html/org/apache/hadoop/hbase/zookeeper/MiniZooKeeperCluster.html
@@ -477,7 +477,11 @@
 <span class="sourceLineNo">469</span>    return activeZKServerIndex &lt; 0 || activeZKServerIndex &gt;= clientPortList.size() ? -1<a name="line.469"></a>
 <span class="sourceLineNo">470</span>        : clientPortList.get(activeZKServerIndex);<a name="line.470"></a>
 <span class="sourceLineNo">471</span>  }<a name="line.471"></a>
-<span class="sourceLineNo">472</span>}<a name="line.472"></a>
+<span class="sourceLineNo">472</span><a name="line.472"></a>
+<span class="sourceLineNo">473</span>  List&lt;ZooKeeperServer&gt; getZooKeeperServers() {<a name="line.473"></a>
+<span class="sourceLineNo">474</span>    return zooKeeperServers;<a name="line.474"></a>
+<span class="sourceLineNo">475</span>  }<a name="line.475"></a>
+<span class="sourceLineNo">476</span>}<a name="line.476"></a>
 
 
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/c54c242b/book.html
----------------------------------------------------------------------
diff --git a/book.html b/book.html
index a4ea0f7..90249f7 100644
--- a/book.html
+++ b/book.html
@@ -36799,7 +36799,7 @@ The server will return cellblocks compressed using this same compressor as long
 <div id="footer">
 <div id="footer-text">
 Version 3.0.0-SNAPSHOT<br>
-Last updated 2017-12-02 14:29:37 UTC
+Last updated 2017-12-03 14:29:39 UTC
 </div>
 </div>
 </body>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/c54c242b/bulk-loads.html
----------------------------------------------------------------------
diff --git a/bulk-loads.html b/bulk-loads.html
index df98275..7cf87b6 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="20171202" />
+    <meta name="Date-Revision-yyyymmdd" content="20171203" />
     <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-12-02</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2017-12-03</li>
             </p>
                 </div>
 


[02/51] [partial] hbase-site git commit: Published site at .

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/c54c242b/testdevapidocs/org/apache/hadoop/hbase/testclassification/ZKTests.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/org/apache/hadoop/hbase/testclassification/ZKTests.html b/testdevapidocs/org/apache/hadoop/hbase/testclassification/ZKTests.html
new file mode 100644
index 0000000..14a67e0
--- /dev/null
+++ b/testdevapidocs/org/apache/hadoop/hbase/testclassification/ZKTests.html
@@ -0,0 +1,168 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<!-- NewPage -->
+<html lang="en">
+<head>
+<!-- Generated by javadoc -->
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title>ZKTests (Apache HBase 3.0.0-SNAPSHOT Test API)</title>
+<link rel="stylesheet" type="text/css" href="../../../../../stylesheet.css" title="Style">
+<script type="text/javascript" src="../../../../../script.js"></script>
+</head>
+<body>
+<script type="text/javascript"><!--
+    try {
+        if (location.href.indexOf('is-external=true') == -1) {
+            parent.document.title="ZKTests (Apache HBase 3.0.0-SNAPSHOT Test API)";
+        }
+    }
+    catch(err) {
+    }
+//-->
+</script>
+<noscript>
+<div>JavaScript is disabled on your browser.</div>
+</noscript>
+<!-- ========= START OF TOP NAVBAR ======= -->
+<div class="topNav"><a name="navbar.top">
+<!--   -->
+</a>
+<div class="skipNav"><a href="#skip.navbar.top" title="Skip navigation links">Skip navigation links</a></div>
+<a name="navbar.top.firstrow">
+<!--   -->
+</a>
+<ul class="navList" title="Navigation">
+<li><a href="../../../../../overview-summary.html">Overview</a></li>
+<li><a href="package-summary.html">Package</a></li>
+<li class="navBarCell1Rev">Class</li>
+<li><a href="class-use/ZKTests.html">Use</a></li>
+<li><a href="package-tree.html">Tree</a></li>
+<li><a href="../../../../../deprecated-list.html">Deprecated</a></li>
+<li><a href="../../../../../index-all.html">Index</a></li>
+<li><a href="../../../../../help-doc.html">Help</a></li>
+</ul>
+</div>
+<div class="subNav">
+<ul class="navList">
+<li><a href="../../../../../org/apache/hadoop/hbase/testclassification/VerySlowRegionServerTests.html" title="interface in org.apache.hadoop.hbase.testclassification"><span class="typeNameLink">Prev&nbsp;Class</span></a></li>
+<li>Next&nbsp;Class</li>
+</ul>
+<ul class="navList">
+<li><a href="../../../../../index.html?org/apache/hadoop/hbase/testclassification/ZKTests.html" target="_top">Frames</a></li>
+<li><a href="ZKTests.html" target="_top">No&nbsp;Frames</a></li>
+</ul>
+<ul class="navList" id="allclasses_navbar_top">
+<li><a href="../../../../../allclasses-noframe.html">All&nbsp;Classes</a></li>
+</ul>
+<div>
+<script type="text/javascript"><!--
+  allClassesLink = document.getElementById("allclasses_navbar_top");
+  if(window==top) {
+    allClassesLink.style.display = "block";
+  }
+  else {
+    allClassesLink.style.display = "none";
+  }
+  //-->
+</script>
+</div>
+<div>
+<ul class="subNavList">
+<li>Summary:&nbsp;</li>
+<li>Nested&nbsp;|&nbsp;</li>
+<li>Field&nbsp;|&nbsp;</li>
+<li>Constr&nbsp;|&nbsp;</li>
+<li>Method</li>
+</ul>
+<ul class="subNavList">
+<li>Detail:&nbsp;</li>
+<li>Field&nbsp;|&nbsp;</li>
+<li>Constr&nbsp;|&nbsp;</li>
+<li>Method</li>
+</ul>
+</div>
+<a name="skip.navbar.top">
+<!--   -->
+</a></div>
+<!-- ========= END OF TOP NAVBAR ========= -->
+<!-- ======== START OF CLASS DATA ======== -->
+<div class="header">
+<div class="subTitle">org.apache.hadoop.hbase.testclassification</div>
+<h2 title="Interface ZKTests" class="title">Interface ZKTests</h2>
+</div>
+<div class="contentContainer">
+<div class="description">
+<ul class="blockList">
+<li class="blockList">
+<hr>
+<br>
+<pre>public interface <a href="../../../../../src-html/org/apache/hadoop/hbase/testclassification/ZKTests.html#line.20">ZKTests</a></pre>
+</li>
+</ul>
+</div>
+</div>
+<!-- ========= END OF CLASS DATA ========= -->
+<!-- ======= START OF BOTTOM NAVBAR ====== -->
+<div class="bottomNav"><a name="navbar.bottom">
+<!--   -->
+</a>
+<div class="skipNav"><a href="#skip.navbar.bottom" title="Skip navigation links">Skip navigation links</a></div>
+<a name="navbar.bottom.firstrow">
+<!--   -->
+</a>
+<ul class="navList" title="Navigation">
+<li><a href="../../../../../overview-summary.html">Overview</a></li>
+<li><a href="package-summary.html">Package</a></li>
+<li class="navBarCell1Rev">Class</li>
+<li><a href="class-use/ZKTests.html">Use</a></li>
+<li><a href="package-tree.html">Tree</a></li>
+<li><a href="../../../../../deprecated-list.html">Deprecated</a></li>
+<li><a href="../../../../../index-all.html">Index</a></li>
+<li><a href="../../../../../help-doc.html">Help</a></li>
+</ul>
+</div>
+<div class="subNav">
+<ul class="navList">
+<li><a href="../../../../../org/apache/hadoop/hbase/testclassification/VerySlowRegionServerTests.html" title="interface in org.apache.hadoop.hbase.testclassification"><span class="typeNameLink">Prev&nbsp;Class</span></a></li>
+<li>Next&nbsp;Class</li>
+</ul>
+<ul class="navList">
+<li><a href="../../../../../index.html?org/apache/hadoop/hbase/testclassification/ZKTests.html" target="_top">Frames</a></li>
+<li><a href="ZKTests.html" target="_top">No&nbsp;Frames</a></li>
+</ul>
+<ul class="navList" id="allclasses_navbar_bottom">
+<li><a href="../../../../../allclasses-noframe.html">All&nbsp;Classes</a></li>
+</ul>
+<div>
+<script type="text/javascript"><!--
+  allClassesLink = document.getElementById("allclasses_navbar_bottom");
+  if(window==top) {
+    allClassesLink.style.display = "block";
+  }
+  else {
+    allClassesLink.style.display = "none";
+  }
+  //-->
+</script>
+</div>
+<div>
+<ul class="subNavList">
+<li>Summary:&nbsp;</li>
+<li>Nested&nbsp;|&nbsp;</li>
+<li>Field&nbsp;|&nbsp;</li>
+<li>Constr&nbsp;|&nbsp;</li>
+<li>Method</li>
+</ul>
+<ul class="subNavList">
+<li>Detail:&nbsp;</li>
+<li>Field&nbsp;|&nbsp;</li>
+<li>Constr&nbsp;|&nbsp;</li>
+<li>Method</li>
+</ul>
+</div>
+<a name="skip.navbar.bottom">
+<!--   -->
+</a></div>
+<!-- ======== END OF BOTTOM NAVBAR ======= -->
+<p class="legalCopy"><small>Copyright &#169; 2007&#x2013;2017 <a href="https://www.apache.org/">The Apache Software Foundation</a>. All rights reserved.</small></p>
+</body>
+</html>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/c54c242b/testdevapidocs/org/apache/hadoop/hbase/testclassification/class-use/ZKTests.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/org/apache/hadoop/hbase/testclassification/class-use/ZKTests.html b/testdevapidocs/org/apache/hadoop/hbase/testclassification/class-use/ZKTests.html
new file mode 100644
index 0000000..effe813
--- /dev/null
+++ b/testdevapidocs/org/apache/hadoop/hbase/testclassification/class-use/ZKTests.html
@@ -0,0 +1,125 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<!-- NewPage -->
+<html lang="en">
+<head>
+<!-- Generated by javadoc -->
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title>Uses of Interface org.apache.hadoop.hbase.testclassification.ZKTests (Apache HBase 3.0.0-SNAPSHOT Test API)</title>
+<link rel="stylesheet" type="text/css" href="../../../../../../stylesheet.css" title="Style">
+<script type="text/javascript" src="../../../../../../script.js"></script>
+</head>
+<body>
+<script type="text/javascript"><!--
+    try {
+        if (location.href.indexOf('is-external=true') == -1) {
+            parent.document.title="Uses of Interface org.apache.hadoop.hbase.testclassification.ZKTests (Apache HBase 3.0.0-SNAPSHOT Test API)";
+        }
+    }
+    catch(err) {
+    }
+//-->
+</script>
+<noscript>
+<div>JavaScript is disabled on your browser.</div>
+</noscript>
+<!-- ========= START OF TOP NAVBAR ======= -->
+<div class="topNav"><a name="navbar.top">
+<!--   -->
+</a>
+<div class="skipNav"><a href="#skip.navbar.top" title="Skip navigation links">Skip navigation links</a></div>
+<a name="navbar.top.firstrow">
+<!--   -->
+</a>
+<ul class="navList" title="Navigation">
+<li><a href="../../../../../../overview-summary.html">Overview</a></li>
+<li><a href="../package-summary.html">Package</a></li>
+<li><a href="../../../../../../org/apache/hadoop/hbase/testclassification/ZKTests.html" title="interface in org.apache.hadoop.hbase.testclassification">Class</a></li>
+<li class="navBarCell1Rev">Use</li>
+<li><a href="../../../../../../overview-tree.html">Tree</a></li>
+<li><a href="../../../../../../deprecated-list.html">Deprecated</a></li>
+<li><a href="../../../../../../index-all.html">Index</a></li>
+<li><a href="../../../../../../help-doc.html">Help</a></li>
+</ul>
+</div>
+<div class="subNav">
+<ul class="navList">
+<li>Prev</li>
+<li>Next</li>
+</ul>
+<ul class="navList">
+<li><a href="../../../../../../index.html?org/apache/hadoop/hbase/testclassification/class-use/ZKTests.html" target="_top">Frames</a></li>
+<li><a href="ZKTests.html" target="_top">No&nbsp;Frames</a></li>
+</ul>
+<ul class="navList" id="allclasses_navbar_top">
+<li><a href="../../../../../../allclasses-noframe.html">All&nbsp;Classes</a></li>
+</ul>
+<div>
+<script type="text/javascript"><!--
+  allClassesLink = document.getElementById("allclasses_navbar_top");
+  if(window==top) {
+    allClassesLink.style.display = "block";
+  }
+  else {
+    allClassesLink.style.display = "none";
+  }
+  //-->
+</script>
+</div>
+<a name="skip.navbar.top">
+<!--   -->
+</a></div>
+<!-- ========= END OF TOP NAVBAR ========= -->
+<div class="header">
+<h2 title="Uses of Interface org.apache.hadoop.hbase.testclassification.ZKTests" class="title">Uses of Interface<br>org.apache.hadoop.hbase.testclassification.ZKTests</h2>
+</div>
+<div class="classUseContainer">No usage of org.apache.hadoop.hbase.testclassification.ZKTests</div>
+<!-- ======= START OF BOTTOM NAVBAR ====== -->
+<div class="bottomNav"><a name="navbar.bottom">
+<!--   -->
+</a>
+<div class="skipNav"><a href="#skip.navbar.bottom" title="Skip navigation links">Skip navigation links</a></div>
+<a name="navbar.bottom.firstrow">
+<!--   -->
+</a>
+<ul class="navList" title="Navigation">
+<li><a href="../../../../../../overview-summary.html">Overview</a></li>
+<li><a href="../package-summary.html">Package</a></li>
+<li><a href="../../../../../../org/apache/hadoop/hbase/testclassification/ZKTests.html" title="interface in org.apache.hadoop.hbase.testclassification">Class</a></li>
+<li class="navBarCell1Rev">Use</li>
+<li><a href="../../../../../../overview-tree.html">Tree</a></li>
+<li><a href="../../../../../../deprecated-list.html">Deprecated</a></li>
+<li><a href="../../../../../../index-all.html">Index</a></li>
+<li><a href="../../../../../../help-doc.html">Help</a></li>
+</ul>
+</div>
+<div class="subNav">
+<ul class="navList">
+<li>Prev</li>
+<li>Next</li>
+</ul>
+<ul class="navList">
+<li><a href="../../../../../../index.html?org/apache/hadoop/hbase/testclassification/class-use/ZKTests.html" target="_top">Frames</a></li>
+<li><a href="ZKTests.html" target="_top">No&nbsp;Frames</a></li>
+</ul>
+<ul class="navList" id="allclasses_navbar_bottom">
+<li><a href="../../../../../../allclasses-noframe.html">All&nbsp;Classes</a></li>
+</ul>
+<div>
+<script type="text/javascript"><!--
+  allClassesLink = document.getElementById("allclasses_navbar_bottom");
+  if(window==top) {
+    allClassesLink.style.display = "block";
+  }
+  else {
+    allClassesLink.style.display = "none";
+  }
+  //-->
+</script>
+</div>
+<a name="skip.navbar.bottom">
+<!--   -->
+</a></div>
+<!-- ======== END OF BOTTOM NAVBAR ======= -->
+<p class="legalCopy"><small>Copyright &#169; 2007&#x2013;2017 <a href="https://www.apache.org/">The Apache Software Foundation</a>. All rights reserved.</small></p>
+</body>
+</html>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/c54c242b/testdevapidocs/org/apache/hadoop/hbase/testclassification/package-frame.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/org/apache/hadoop/hbase/testclassification/package-frame.html b/testdevapidocs/org/apache/hadoop/hbase/testclassification/package-frame.html
index 563afb4..b67b7c7 100644
--- a/testdevapidocs/org/apache/hadoop/hbase/testclassification/package-frame.html
+++ b/testdevapidocs/org/apache/hadoop/hbase/testclassification/package-frame.html
@@ -33,6 +33,7 @@
 <li><a href="SmallTests.html" title="interface in org.apache.hadoop.hbase.testclassification" target="classFrame"><span class="interfaceName">SmallTests</span></a></li>
 <li><a href="VerySlowMapReduceTests.html" title="interface in org.apache.hadoop.hbase.testclassification" target="classFrame"><span class="interfaceName">VerySlowMapReduceTests</span></a></li>
 <li><a href="VerySlowRegionServerTests.html" title="interface in org.apache.hadoop.hbase.testclassification" target="classFrame"><span class="interfaceName">VerySlowRegionServerTests</span></a></li>
+<li><a href="ZKTests.html" title="interface in org.apache.hadoop.hbase.testclassification" target="classFrame"><span class="interfaceName">ZKTests</span></a></li>
 </ul>
 </div>
 </body>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/c54c242b/testdevapidocs/org/apache/hadoop/hbase/testclassification/package-summary.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/org/apache/hadoop/hbase/testclassification/package-summary.html b/testdevapidocs/org/apache/hadoop/hbase/testclassification/package-summary.html
index fc8094b..aadefa6 100644
--- a/testdevapidocs/org/apache/hadoop/hbase/testclassification/package-summary.html
+++ b/testdevapidocs/org/apache/hadoop/hbase/testclassification/package-summary.html
@@ -187,6 +187,10 @@
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/testclassification/VerySlowRegionServerTests.html" title="interface in org.apache.hadoop.hbase.testclassification">VerySlowRegionServerTests</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
+<tr class="altColor">
+<td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/testclassification/ZKTests.html" title="interface in org.apache.hadoop.hbase.testclassification">ZKTests</a></td>
+<td class="colLast">&nbsp;</td>
+</tr>
 </tbody>
 </table>
 </li>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/c54c242b/testdevapidocs/org/apache/hadoop/hbase/testclassification/package-tree.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/org/apache/hadoop/hbase/testclassification/package-tree.html b/testdevapidocs/org/apache/hadoop/hbase/testclassification/package-tree.html
index 453f89c..35676af 100644
--- a/testdevapidocs/org/apache/hadoop/hbase/testclassification/package-tree.html
+++ b/testdevapidocs/org/apache/hadoop/hbase/testclassification/package-tree.html
@@ -99,6 +99,7 @@
 <li type="circle">org.apache.hadoop.hbase.testclassification.<a href="../../../../../org/apache/hadoop/hbase/testclassification/SmallTests.html" title="interface in org.apache.hadoop.hbase.testclassification"><span class="typeNameLink">SmallTests</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.testclassification.<a href="../../../../../org/apache/hadoop/hbase/testclassification/VerySlowMapReduceTests.html" title="interface in org.apache.hadoop.hbase.testclassification"><span class="typeNameLink">VerySlowMapReduceTests</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.testclassification.<a href="../../../../../org/apache/hadoop/hbase/testclassification/VerySlowRegionServerTests.html" title="interface in org.apache.hadoop.hbase.testclassification"><span class="typeNameLink">VerySlowRegionServerTests</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.testclassification.<a href="../../../../../org/apache/hadoop/hbase/testclassification/ZKTests.html" title="interface in org.apache.hadoop.hbase.testclassification"><span class="typeNameLink">ZKTests</span></a></li>
 </ul>
 </div>
 <!-- ======= START OF BOTTOM NAVBAR ====== -->

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/c54c242b/testdevapidocs/org/apache/hadoop/hbase/wal/TestWALFactory.DumbWALActionsListener.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/org/apache/hadoop/hbase/wal/TestWALFactory.DumbWALActionsListener.html b/testdevapidocs/org/apache/hadoop/hbase/wal/TestWALFactory.DumbWALActionsListener.html
index ca476eb..37f20a7 100644
--- a/testdevapidocs/org/apache/hadoop/hbase/wal/TestWALFactory.DumbWALActionsListener.html
+++ b/testdevapidocs/org/apache/hadoop/hbase/wal/TestWALFactory.DumbWALActionsListener.html
@@ -100,15 +100,10 @@ var activeTableTab = "activeTableTab";
 <li><a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">java.lang.Object</a></li>
 <li>
 <ul class="inheritance">
-<li>org.apache.hadoop.hbase.regionserver.wal.WALActionsListener.Base</li>
-<li>
-<ul class="inheritance">
 <li>org.apache.hadoop.hbase.wal.TestWALFactory.DumbWALActionsListener</li>
 </ul>
 </li>
 </ul>
-</li>
-</ul>
 <div class="description">
 <ul class="blockList">
 <li class="blockList">
@@ -123,28 +118,14 @@ var activeTableTab = "activeTableTab";
 <hr>
 <br>
 <pre>static class <a href="../../../../../src-html/org/apache/hadoop/hbase/wal/TestWALFactory.html#line.676">TestWALFactory.DumbWALActionsListener</a>
-extends org.apache.hadoop.hbase.regionserver.wal.WALActionsListener.Base</pre>
+extends <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a>
+implements org.apache.hadoop.hbase.regionserver.wal.WALActionsListener</pre>
 </li>
 </ul>
 </div>
 <div class="summary">
 <ul class="blockList">
 <li class="blockList">
-<!-- ======== NESTED CLASS SUMMARY ======== -->
-<ul class="blockList">
-<li class="blockList"><a name="nested.class.summary">
-<!--   -->
-</a>
-<h3>Nested Class Summary</h3>
-<ul class="blockList">
-<li class="blockList"><a name="nested.classes.inherited.from.class.org.apache.hadoop.hbase.regionserver.wal.WALActionsListener">
-<!--   -->
-</a>
-<h3>Nested classes/interfaces inherited from interface&nbsp;org.apache.hadoop.hbase.regionserver.wal.WALActionsListener</h3>
-<code>org.apache.hadoop.hbase.regionserver.wal.WALActionsListener.Base</code></li>
-</ul>
-</li>
-</ul>
 <!-- =========== FIELD SUMMARY =========== -->
 <ul class="blockList">
 <li class="blockList"><a name="field.summary">
@@ -195,7 +176,7 @@ extends org.apache.hadoop.hbase.regionserver.wal.WALActionsListener.Base</pre>
 </tr>
 <tr id="i0" class="altColor">
 <td class="colFirst"><code>void</code></td>
-<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/wal/TestWALFactory.DumbWALActionsListener.html#visitLogEntryBeforeWrite-org.apache.hadoop.hbase.HRegionInfo-org.apache.hadoop.hbase.wal.WALKey-org.apache.hadoop.hbase.wal.WALEdit-">visitLogEntryBeforeWrite</a></span>(org.apache.hadoop.hbase.HRegionInfo&nbsp;info,
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/wal/TestWALFactory.DumbWALActionsListener.html#visitLogEntryBeforeWrite-org.apache.hadoop.hbase.client.RegionInfo-org.apache.hadoop.hbase.wal.WALKey-org.apache.hadoop.hbase.wal.WALEdit-">visitLogEntryBeforeWrite</a></span>(org.apache.hadoop.hbase.client.RegionInfo&nbsp;info,
                         org.apache.hadoop.hbase.wal.WALKey&nbsp;logKey,
                         org.apache.hadoop.hbase.wal.WALEdit&nbsp;logEdit)</code>&nbsp;</td>
 </tr>
@@ -206,18 +187,18 @@ extends org.apache.hadoop.hbase.regionserver.wal.WALActionsListener.Base</pre>
 </tr>
 </table>
 <ul class="blockList">
-<li class="blockList"><a name="methods.inherited.from.class.org.apache.hadoop.hbase.regionserver.wal.WALActionsListener.Base">
+<li class="blockList"><a name="methods.inherited.from.class.java.lang.Object">
 <!--   -->
 </a>
-<h3>Methods inherited from class&nbsp;org.apache.hadoop.hbase.regionserver.wal.WALActionsListener.Base</h3>
-<code>logCloseRequested, logRollRequested, postAppend, postLogArchive, postLogRoll, postSync, preLogArchive, preLogRoll</code></li>
+<h3>Methods inherited from class&nbsp;java.lang.<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a></h3>
+<code><a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#clone--" title="class or interface in java.lang">clone</a>, <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#equals-java.lang.Object-" title="class or interface in java.lang">equals</a>, <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#finalize--" title="class or interface in java.lang">finalize</a>, <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#getClass--" title="class or interface in java.lang">getClass</a>, <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#hashCode--" title="class or interface in java.lang">hashCode</a>, <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notify--" title="class or interface in java.lang">notify</a>, <a href="http://docs.oracle.com/javase/8/docs/api/java/lang
 /Object.html?is-external=true#notifyAll--" title="class or interface in java.lang">notifyAll</a>, <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#toString--" title="class or interface in java.lang">toString</a>, <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait--" title="class or interface in java.lang">wait</a>, <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-" title="class or interface in java.lang">wait</a>, <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-int-" title="class or interface in java.lang">wait</a></code></li>
 </ul>
 <ul class="blockList">
-<li class="blockList"><a name="methods.inherited.from.class.java.lang.Object">
+<li class="blockList"><a name="methods.inherited.from.class.org.apache.hadoop.hbase.regionserver.wal.WALActionsListener">
 <!--   -->
 </a>
-<h3>Methods inherited from class&nbsp;java.lang.<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a></h3>
-<code><a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#clone--" title="class or interface in java.lang">clone</a>, <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#equals-java.lang.Object-" title="class or interface in java.lang">equals</a>, <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#finalize--" title="class or interface in java.lang">finalize</a>, <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#getClass--" title="class or interface in java.lang">getClass</a>, <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#hashCode--" title="class or interface in java.lang">hashCode</a>, <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notify--" title="class or interface in java.lang">notify</a>, <a href="http://docs.oracle.com/javase/8/docs/api/java/lang
 /Object.html?is-external=true#notifyAll--" title="class or interface in java.lang">notifyAll</a>, <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#toString--" title="class or interface in java.lang">toString</a>, <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait--" title="class or interface in java.lang">wait</a>, <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-" title="class or interface in java.lang">wait</a>, <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-int-" title="class or interface in java.lang">wait</a></code></li>
+<h3>Methods inherited from interface&nbsp;org.apache.hadoop.hbase.regionserver.wal.WALActionsListener</h3>
+<code>logCloseRequested, logRollRequested, postAppend, postLogArchive, postLogRoll, postSync, preLogArchive, preLogRoll</code></li>
 </ul>
 </li>
 </ul>
@@ -267,20 +248,18 @@ extends org.apache.hadoop.hbase.regionserver.wal.WALActionsListener.Base</pre>
 <!--   -->
 </a>
 <h3>Method Detail</h3>
-<a name="visitLogEntryBeforeWrite-org.apache.hadoop.hbase.HRegionInfo-org.apache.hadoop.hbase.wal.WALKey-org.apache.hadoop.hbase.wal.WALEdit-">
+<a name="visitLogEntryBeforeWrite-org.apache.hadoop.hbase.client.RegionInfo-org.apache.hadoop.hbase.wal.WALKey-org.apache.hadoop.hbase.wal.WALEdit-">
 <!--   -->
 </a>
 <ul class="blockList">
 <li class="blockList">
 <h4>visitLogEntryBeforeWrite</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/wal/TestWALFactory.DumbWALActionsListener.html#line.680">visitLogEntryBeforeWrite</a>(org.apache.hadoop.hbase.HRegionInfo&nbsp;info,
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/wal/TestWALFactory.DumbWALActionsListener.html#line.680">visitLogEntryBeforeWrite</a>(org.apache.hadoop.hbase.client.RegionInfo&nbsp;info,
                                      org.apache.hadoop.hbase.wal.WALKey&nbsp;logKey,
                                      org.apache.hadoop.hbase.wal.WALEdit&nbsp;logEdit)</pre>
 <dl>
 <dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
 <dd><code>visitLogEntryBeforeWrite</code>&nbsp;in interface&nbsp;<code>org.apache.hadoop.hbase.regionserver.wal.WALActionsListener</code></dd>
-<dt><span class="overrideSpecifyLabel">Overrides:</span></dt>
-<dd><code>visitLogEntryBeforeWrite</code>&nbsp;in class&nbsp;<code>org.apache.hadoop.hbase.regionserver.wal.WALActionsListener.Base</code></dd>
 </dl>
 </li>
 </ul>
@@ -295,8 +274,6 @@ extends org.apache.hadoop.hbase.regionserver.wal.WALActionsListener.Base</pre>
 <dl>
 <dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
 <dd><code>visitLogEntryBeforeWrite</code>&nbsp;in interface&nbsp;<code>org.apache.hadoop.hbase.regionserver.wal.WALActionsListener</code></dd>
-<dt><span class="overrideSpecifyLabel">Overrides:</span></dt>
-<dd><code>visitLogEntryBeforeWrite</code>&nbsp;in class&nbsp;<code>org.apache.hadoop.hbase.regionserver.wal.WALActionsListener.Base</code></dd>
 </dl>
 </li>
 </ul>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/c54c242b/testdevapidocs/org/apache/hadoop/hbase/wal/package-tree.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/org/apache/hadoop/hbase/wal/package-tree.html b/testdevapidocs/org/apache/hadoop/hbase/wal/package-tree.html
index cd321e0..d46147b 100644
--- a/testdevapidocs/org/apache/hadoop/hbase/wal/package-tree.html
+++ b/testdevapidocs/org/apache/hadoop/hbase/wal/package-tree.html
@@ -110,6 +110,7 @@
 <li type="circle">org.apache.hadoop.hbase.wal.<a href="../../../../../org/apache/hadoop/hbase/wal/TestFSHLogProvider.html" title="class in org.apache.hadoop.hbase.wal"><span class="typeNameLink">TestFSHLogProvider</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.wal.<a href="../../../../../org/apache/hadoop/hbase/wal/TestSecureWAL.html" title="class in org.apache.hadoop.hbase.wal"><span class="typeNameLink">TestSecureWAL</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.wal.<a href="../../../../../org/apache/hadoop/hbase/wal/TestWALFactory.html" title="class in org.apache.hadoop.hbase.wal"><span class="typeNameLink">TestWALFactory</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.wal.<a href="../../../../../org/apache/hadoop/hbase/wal/TestWALFactory.DumbWALActionsListener.html" title="class in org.apache.hadoop.hbase.wal"><span class="typeNameLink">TestWALFactory.DumbWALActionsListener</span></a> (implements org.apache.hadoop.hbase.regionserver.wal.WALActionsListener)</li>
 <li type="circle">org.apache.hadoop.hbase.wal.<a href="../../../../../org/apache/hadoop/hbase/wal/TestWALFiltering.html" title="class in org.apache.hadoop.hbase.wal"><span class="typeNameLink">TestWALFiltering</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.wal.<a href="../../../../../org/apache/hadoop/hbase/wal/TestWALMethods.html" title="class in org.apache.hadoop.hbase.wal"><span class="typeNameLink">TestWALMethods</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.wal.<a href="../../../../../org/apache/hadoop/hbase/wal/TestWALOpenAfterDNRollingStart.html" title="class in org.apache.hadoop.hbase.wal"><span class="typeNameLink">TestWALOpenAfterDNRollingStart</span></a></li>
@@ -125,11 +126,6 @@
 <li type="circle">org.apache.hadoop.hbase.wal.<a href="../../../../../org/apache/hadoop/hbase/wal/TestWALSplit.ZombieLastLogWriterRegionServer.html" title="class in org.apache.hadoop.hbase.wal"><span class="typeNameLink">TestWALSplit.ZombieLastLogWriterRegionServer</span></a></li>
 </ul>
 </li>
-<li type="circle">org.apache.hadoop.hbase.regionserver.wal.WALActionsListener.Base (implements org.apache.hadoop.hbase.regionserver.wal.WALActionsListener)
-<ul>
-<li type="circle">org.apache.hadoop.hbase.wal.<a href="../../../../../org/apache/hadoop/hbase/wal/TestWALFactory.DumbWALActionsListener.html" title="class in org.apache.hadoop.hbase.wal"><span class="typeNameLink">TestWALFactory.DumbWALActionsListener</span></a></li>
-</ul>
-</li>
 <li type="circle">org.apache.hadoop.hbase.wal.<a href="../../../../../org/apache/hadoop/hbase/wal/WALPerformanceEvaluation.WALPutBenchmark.html" title="class in org.apache.hadoop.hbase.wal"><span class="typeNameLink">WALPerformanceEvaluation.WALPutBenchmark</span></a> (implements java.lang.<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Runnable.html?is-external=true" title="class or interface in java.lang">Runnable</a>)</li>
 </ul>
 </li>
@@ -141,8 +137,8 @@
 <li type="circle">java.lang.<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Enum.html?is-external=true" title="class or interface in java.lang"><span class="typeNameLink">Enum</span></a>&lt;E&gt; (implements java.lang.<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Comparable.html?is-external=true" title="class or interface in java.lang">Comparable</a>&lt;T&gt;, java.io.<a href="http://docs.oracle.com/javase/8/docs/api/java/io/Serializable.html?is-external=true" title="class or interface in java.io">Serializable</a>)
 <ul>
 <li type="circle">org.apache.hadoop.hbase.wal.<a href="../../../../../org/apache/hadoop/hbase/wal/FaultyFSLog.FailureType.html" title="enum in org.apache.hadoop.hbase.wal"><span class="typeNameLink">FaultyFSLog.FailureType</span></a></li>
-<li type="circle">org.apache.hadoop.hbase.wal.<a href="../../../../../org/apache/hadoop/hbase/wal/IOTestProvider.AllowedOperations.html" title="enum in org.apache.hadoop.hbase.wal"><span class="typeNameLink">IOTestProvider.AllowedOperations</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.wal.<a href="../../../../../org/apache/hadoop/hbase/wal/TestWALSplit.Corruptions.html" title="enum in org.apache.hadoop.hbase.wal"><span class="typeNameLink">TestWALSplit.Corruptions</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.wal.<a href="../../../../../org/apache/hadoop/hbase/wal/IOTestProvider.AllowedOperations.html" title="enum in org.apache.hadoop.hbase.wal"><span class="typeNameLink">IOTestProvider.AllowedOperations</span></a></li>
 </ul>
 </li>
 </ul>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/c54c242b/testdevapidocs/org/apache/hadoop/hbase/zookeeper/TestMetricsZooKeeperSourceImpl.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/org/apache/hadoop/hbase/zookeeper/TestMetricsZooKeeperSourceImpl.html b/testdevapidocs/org/apache/hadoop/hbase/zookeeper/TestMetricsZooKeeperSourceImpl.html
index 757d703..113afb3 100644
--- a/testdevapidocs/org/apache/hadoop/hbase/zookeeper/TestMetricsZooKeeperSourceImpl.html
+++ b/testdevapidocs/org/apache/hadoop/hbase/zookeeper/TestMetricsZooKeeperSourceImpl.html
@@ -50,7 +50,7 @@ var activeTableTab = "activeTableTab";
 <div class="subNav">
 <ul class="navList">
 <li><a href="../../../../../org/apache/hadoop/hbase/zookeeper/TestMetricsZooKeeperSource.html" title="class in org.apache.hadoop.hbase.zookeeper"><span class="typeNameLink">Prev&nbsp;Class</span></a></li>
-<li><a href="../../../../../org/apache/hadoop/hbase/zookeeper/TestRecoverableZooKeeper.html" title="class in org.apache.hadoop.hbase.zookeeper"><span class="typeNameLink">Next&nbsp;Class</span></a></li>
+<li><a href="../../../../../org/apache/hadoop/hbase/zookeeper/TestReadOnlyZKClient.html" title="class in org.apache.hadoop.hbase.zookeeper"><span class="typeNameLink">Next&nbsp;Class</span></a></li>
 </ul>
 <ul class="navList">
 <li><a href="../../../../../index.html?org/apache/hadoop/hbase/zookeeper/TestMetricsZooKeeperSourceImpl.html" target="_top">Frames</a></li>
@@ -232,7 +232,7 @@ extends <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?
 <div class="subNav">
 <ul class="navList">
 <li><a href="../../../../../org/apache/hadoop/hbase/zookeeper/TestMetricsZooKeeperSource.html" title="class in org.apache.hadoop.hbase.zookeeper"><span class="typeNameLink">Prev&nbsp;Class</span></a></li>
-<li><a href="../../../../../org/apache/hadoop/hbase/zookeeper/TestRecoverableZooKeeper.html" title="class in org.apache.hadoop.hbase.zookeeper"><span class="typeNameLink">Next&nbsp;Class</span></a></li>
+<li><a href="../../../../../org/apache/hadoop/hbase/zookeeper/TestReadOnlyZKClient.html" title="class in org.apache.hadoop.hbase.zookeeper"><span class="typeNameLink">Next&nbsp;Class</span></a></li>
 </ul>
 <ul class="navList">
 <li><a href="../../../../../index.html?org/apache/hadoop/hbase/zookeeper/TestMetricsZooKeeperSourceImpl.html" target="_top">Frames</a></li>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/c54c242b/testdevapidocs/org/apache/hadoop/hbase/zookeeper/TestReadOnlyZKClient.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/org/apache/hadoop/hbase/zookeeper/TestReadOnlyZKClient.html b/testdevapidocs/org/apache/hadoop/hbase/zookeeper/TestReadOnlyZKClient.html
new file mode 100644
index 0000000..1986fa2
--- /dev/null
+++ b/testdevapidocs/org/apache/hadoop/hbase/zookeeper/TestReadOnlyZKClient.html
@@ -0,0 +1,471 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<!-- NewPage -->
+<html lang="en">
+<head>
+<!-- Generated by javadoc -->
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title>TestReadOnlyZKClient (Apache HBase 3.0.0-SNAPSHOT Test API)</title>
+<link rel="stylesheet" type="text/css" href="../../../../../stylesheet.css" title="Style">
+<script type="text/javascript" src="../../../../../script.js"></script>
+</head>
+<body>
+<script type="text/javascript"><!--
+    try {
+        if (location.href.indexOf('is-external=true') == -1) {
+            parent.document.title="TestReadOnlyZKClient (Apache HBase 3.0.0-SNAPSHOT Test API)";
+        }
+    }
+    catch(err) {
+    }
+//-->
+var methods = {"i0":9,"i1":9,"i2":10,"i3":10,"i4":10};
+var tabs = {65535:["t0","All Methods"],1:["t1","Static Methods"],2:["t2","Instance Methods"],8:["t4","Concrete Methods"]};
+var altColor = "altColor";
+var rowColor = "rowColor";
+var tableTab = "tableTab";
+var activeTableTab = "activeTableTab";
+</script>
+<noscript>
+<div>JavaScript is disabled on your browser.</div>
+</noscript>
+<!-- ========= START OF TOP NAVBAR ======= -->
+<div class="topNav"><a name="navbar.top">
+<!--   -->
+</a>
+<div class="skipNav"><a href="#skip.navbar.top" title="Skip navigation links">Skip navigation links</a></div>
+<a name="navbar.top.firstrow">
+<!--   -->
+</a>
+<ul class="navList" title="Navigation">
+<li><a href="../../../../../overview-summary.html">Overview</a></li>
+<li><a href="package-summary.html">Package</a></li>
+<li class="navBarCell1Rev">Class</li>
+<li><a href="class-use/TestReadOnlyZKClient.html">Use</a></li>
+<li><a href="package-tree.html">Tree</a></li>
+<li><a href="../../../../../deprecated-list.html">Deprecated</a></li>
+<li><a href="../../../../../index-all.html">Index</a></li>
+<li><a href="../../../../../help-doc.html">Help</a></li>
+</ul>
+</div>
+<div class="subNav">
+<ul class="navList">
+<li><a href="../../../../../org/apache/hadoop/hbase/zookeeper/TestMetricsZooKeeperSourceImpl.html" title="class in org.apache.hadoop.hbase.zookeeper"><span class="typeNameLink">Prev&nbsp;Class</span></a></li>
+<li><a href="../../../../../org/apache/hadoop/hbase/zookeeper/TestRecoverableZooKeeper.html" title="class in org.apache.hadoop.hbase.zookeeper"><span class="typeNameLink">Next&nbsp;Class</span></a></li>
+</ul>
+<ul class="navList">
+<li><a href="../../../../../index.html?org/apache/hadoop/hbase/zookeeper/TestReadOnlyZKClient.html" target="_top">Frames</a></li>
+<li><a href="TestReadOnlyZKClient.html" target="_top">No&nbsp;Frames</a></li>
+</ul>
+<ul class="navList" id="allclasses_navbar_top">
+<li><a href="../../../../../allclasses-noframe.html">All&nbsp;Classes</a></li>
+</ul>
+<div>
+<script type="text/javascript"><!--
+  allClassesLink = document.getElementById("allclasses_navbar_top");
+  if(window==top) {
+    allClassesLink.style.display = "block";
+  }
+  else {
+    allClassesLink.style.display = "none";
+  }
+  //-->
+</script>
+</div>
+<div>
+<ul class="subNavList">
+<li>Summary:&nbsp;</li>
+<li>Nested&nbsp;|&nbsp;</li>
+<li><a href="#field.summary">Field</a>&nbsp;|&nbsp;</li>
+<li><a href="#constructor.summary">Constr</a>&nbsp;|&nbsp;</li>
+<li><a href="#method.summary">Method</a></li>
+</ul>
+<ul class="subNavList">
+<li>Detail:&nbsp;</li>
+<li><a href="#field.detail">Field</a>&nbsp;|&nbsp;</li>
+<li><a href="#constructor.detail">Constr</a>&nbsp;|&nbsp;</li>
+<li><a href="#method.detail">Method</a></li>
+</ul>
+</div>
+<a name="skip.navbar.top">
+<!--   -->
+</a></div>
+<!-- ========= END OF TOP NAVBAR ========= -->
+<!-- ======== START OF CLASS DATA ======== -->
+<div class="header">
+<div class="subTitle">org.apache.hadoop.hbase.zookeeper</div>
+<h2 title="Class TestReadOnlyZKClient" class="title">Class TestReadOnlyZKClient</h2>
+</div>
+<div class="contentContainer">
+<ul class="inheritance">
+<li><a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">java.lang.Object</a></li>
+<li>
+<ul class="inheritance">
+<li>org.apache.hadoop.hbase.zookeeper.TestReadOnlyZKClient</li>
+</ul>
+</li>
+</ul>
+<div class="description">
+<ul class="blockList">
+<li class="blockList">
+<hr>
+<br>
+<pre>public class <a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/TestReadOnlyZKClient.html#line.53">TestReadOnlyZKClient</a>
+extends <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a></pre>
+</li>
+</ul>
+</div>
+<div class="summary">
+<ul class="blockList">
+<li class="blockList">
+<!-- =========== FIELD SUMMARY =========== -->
+<ul class="blockList">
+<li class="blockList"><a name="field.summary">
+<!--   -->
+</a>
+<h3>Field Summary</h3>
+<table class="memberSummary" border="0" cellpadding="3" cellspacing="0" summary="Field Summary table, listing fields, and an explanation">
+<caption><span>Fields</span><span class="tabEnd">&nbsp;</span></caption>
+<tr>
+<th class="colFirst" scope="col">Modifier and Type</th>
+<th class="colLast" scope="col">Field and Description</th>
+</tr>
+<tr class="altColor">
+<td class="colFirst"><code>private static int</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/zookeeper/TestReadOnlyZKClient.html#CHILDREN">CHILDREN</a></span></code>&nbsp;</td>
+</tr>
+<tr class="rowColor">
+<td class="colFirst"><code>private static org.apache.hadoop.hbase.zookeeper.MiniZooKeeperCluster</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/zookeeper/TestReadOnlyZKClient.html#CLUSTER">CLUSTER</a></span></code>&nbsp;</td>
+</tr>
+<tr class="altColor">
+<td class="colFirst"><code>private static byte[]</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/zookeeper/TestReadOnlyZKClient.html#DATA">DATA</a></span></code>&nbsp;</td>
+</tr>
+<tr class="rowColor">
+<td class="colFirst"><code>private static <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 class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/zookeeper/TestReadOnlyZKClient.html#PATH">PATH</a></span></code>&nbsp;</td>
+</tr>
+<tr class="altColor">
+<td class="colFirst"><code>private static int</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/zookeeper/TestReadOnlyZKClient.html#PORT">PORT</a></span></code>&nbsp;</td>
+</tr>
+<tr class="rowColor">
+<td class="colFirst"><code>private static org.apache.hadoop.hbase.zookeeper.ReadOnlyZKClient</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/zookeeper/TestReadOnlyZKClient.html#RO_ZK">RO_ZK</a></span></code>&nbsp;</td>
+</tr>
+<tr class="altColor">
+<td class="colFirst"><code>private static <a href="../../../../../org/apache/hadoop/hbase/HBaseCommonTestingUtility.html" title="class in org.apache.hadoop.hbase">HBaseCommonTestingUtility</a></code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/zookeeper/TestReadOnlyZKClient.html#UTIL">UTIL</a></span></code>&nbsp;</td>
+</tr>
+</table>
+</li>
+</ul>
+<!-- ======== CONSTRUCTOR SUMMARY ======== -->
+<ul class="blockList">
+<li class="blockList"><a name="constructor.summary">
+<!--   -->
+</a>
+<h3>Constructor Summary</h3>
+<table class="memberSummary" border="0" cellpadding="3" cellspacing="0" summary="Constructor Summary table, listing constructors, and an explanation">
+<caption><span>Constructors</span><span class="tabEnd">&nbsp;</span></caption>
+<tr>
+<th class="colOne" scope="col">Constructor and Description</th>
+</tr>
+<tr class="altColor">
+<td class="colOne"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/zookeeper/TestReadOnlyZKClient.html#TestReadOnlyZKClient--">TestReadOnlyZKClient</a></span>()</code>&nbsp;</td>
+</tr>
+</table>
+</li>
+</ul>
+<!-- ========== METHOD SUMMARY =========== -->
+<ul class="blockList">
+<li class="blockList"><a name="method.summary">
+<!--   -->
+</a>
+<h3>Method Summary</h3>
+<table class="memberSummary" border="0" cellpadding="3" cellspacing="0" summary="Method Summary table, listing methods, and an explanation">
+<caption><span id="t0" class="activeTableTab"><span>All Methods</span><span class="tabEnd">&nbsp;</span></span><span id="t1" class="tableTab"><span><a href="javascript:show(1);">Static Methods</a></span><span class="tabEnd">&nbsp;</span></span><span id="t2" class="tableTab"><span><a href="javascript:show(2);">Instance Methods</a></span><span class="tabEnd">&nbsp;</span></span><span id="t4" class="tableTab"><span><a href="javascript:show(8);">Concrete Methods</a></span><span class="tabEnd">&nbsp;</span></span></caption>
+<tr>
+<th class="colFirst" scope="col">Modifier and Type</th>
+<th class="colLast" scope="col">Method and Description</th>
+</tr>
+<tr id="i0" class="altColor">
+<td class="colFirst"><code>static void</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/zookeeper/TestReadOnlyZKClient.html#setUp--">setUp</a></span>()</code>&nbsp;</td>
+</tr>
+<tr id="i1" class="rowColor">
+<td class="colFirst"><code>static void</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/zookeeper/TestReadOnlyZKClient.html#tearDown--">tearDown</a></span>()</code>&nbsp;</td>
+</tr>
+<tr id="i2" class="altColor">
+<td class="colFirst"><code>void</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/zookeeper/TestReadOnlyZKClient.html#testGetAndExists--">testGetAndExists</a></span>()</code>&nbsp;</td>
+</tr>
+<tr id="i3" class="rowColor">
+<td class="colFirst"><code>void</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/zookeeper/TestReadOnlyZKClient.html#testNoNode--">testNoNode</a></span>()</code>&nbsp;</td>
+</tr>
+<tr id="i4" class="altColor">
+<td class="colFirst"><code>void</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/zookeeper/TestReadOnlyZKClient.html#testSessionExpire--">testSessionExpire</a></span>()</code>&nbsp;</td>
+</tr>
+</table>
+<ul class="blockList">
+<li class="blockList"><a name="methods.inherited.from.class.java.lang.Object">
+<!--   -->
+</a>
+<h3>Methods inherited from class&nbsp;java.lang.<a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a></h3>
+<code><a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#clone--" title="class or interface in java.lang">clone</a>, <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#equals-java.lang.Object-" title="class or interface in java.lang">equals</a>, <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#finalize--" title="class or interface in java.lang">finalize</a>, <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#getClass--" title="class or interface in java.lang">getClass</a>, <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#hashCode--" title="class or interface in java.lang">hashCode</a>, <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notify--" title="class or interface in java.lang">notify</a>, <a href="http://docs.oracle.com/javase/8/docs/api/java/lang
 /Object.html?is-external=true#notifyAll--" title="class or interface in java.lang">notifyAll</a>, <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#toString--" title="class or interface in java.lang">toString</a>, <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait--" title="class or interface in java.lang">wait</a>, <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-" title="class or interface in java.lang">wait</a>, <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-int-" title="class or interface in java.lang">wait</a></code></li>
+</ul>
+</li>
+</ul>
+</li>
+</ul>
+</div>
+<div class="details">
+<ul class="blockList">
+<li class="blockList">
+<!-- ============ FIELD DETAIL =========== -->
+<ul class="blockList">
+<li class="blockList"><a name="field.detail">
+<!--   -->
+</a>
+<h3>Field Detail</h3>
+<a name="UTIL">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>UTIL</h4>
+<pre>private static&nbsp;<a href="../../../../../org/apache/hadoop/hbase/HBaseCommonTestingUtility.html" title="class in org.apache.hadoop.hbase">HBaseCommonTestingUtility</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/TestReadOnlyZKClient.html#line.55">UTIL</a></pre>
+</li>
+</ul>
+<a name="CLUSTER">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>CLUSTER</h4>
+<pre>private static&nbsp;org.apache.hadoop.hbase.zookeeper.MiniZooKeeperCluster <a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/TestReadOnlyZKClient.html#line.57">CLUSTER</a></pre>
+</li>
+</ul>
+<a name="PORT">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>PORT</h4>
+<pre>private static&nbsp;int <a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/TestReadOnlyZKClient.html#line.59">PORT</a></pre>
+</li>
+</ul>
+<a name="PATH">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>PATH</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> <a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/TestReadOnlyZKClient.html#line.61">PATH</a></pre>
+</li>
+</ul>
+<a name="DATA">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>DATA</h4>
+<pre>private static&nbsp;byte[] <a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/TestReadOnlyZKClient.html#line.63">DATA</a></pre>
+</li>
+</ul>
+<a name="CHILDREN">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>CHILDREN</h4>
+<pre>private static&nbsp;int <a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/TestReadOnlyZKClient.html#line.65">CHILDREN</a></pre>
+</li>
+</ul>
+<a name="RO_ZK">
+<!--   -->
+</a>
+<ul class="blockListLast">
+<li class="blockList">
+<h4>RO_ZK</h4>
+<pre>private static&nbsp;org.apache.hadoop.hbase.zookeeper.ReadOnlyZKClient <a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/TestReadOnlyZKClient.html#line.67">RO_ZK</a></pre>
+</li>
+</ul>
+</li>
+</ul>
+<!-- ========= CONSTRUCTOR DETAIL ======== -->
+<ul class="blockList">
+<li class="blockList"><a name="constructor.detail">
+<!--   -->
+</a>
+<h3>Constructor Detail</h3>
+<a name="TestReadOnlyZKClient--">
+<!--   -->
+</a>
+<ul class="blockListLast">
+<li class="blockList">
+<h4>TestReadOnlyZKClient</h4>
+<pre>public&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/TestReadOnlyZKClient.html#line.53">TestReadOnlyZKClient</a>()</pre>
+</li>
+</ul>
+</li>
+</ul>
+<!-- ============ METHOD DETAIL ========== -->
+<ul class="blockList">
+<li class="blockList"><a name="method.detail">
+<!--   -->
+</a>
+<h3>Method Detail</h3>
+<a name="setUp--">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>setUp</h4>
+<pre>public static&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/TestReadOnlyZKClient.html#line.70">setUp</a>()
+                  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>,
+                         <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/InterruptedException.html?is-external=true" title="class or interface in java.lang">InterruptedException</a>,
+                         org.apache.zookeeper.KeeperException</pre>
+<dl>
+<dt><span class="throwsLabel">Throws:</span></dt>
+<dd><code><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></code></dd>
+<dd><code><a href="http://docs.oracle.com/javase/8/docs/api/java/lang/InterruptedException.html?is-external=true" title="class or interface in java.lang">InterruptedException</a></code></dd>
+<dd><code>org.apache.zookeeper.KeeperException</code></dd>
+</dl>
+</li>
+</ul>
+<a name="tearDown--">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>tearDown</h4>
+<pre>public static&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/TestReadOnlyZKClient.html#line.95">tearDown</a>()
+                     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>
+<dl>
+<dt><span class="throwsLabel">Throws:</span></dt>
+<dd><code><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></code></dd>
+</dl>
+</li>
+</ul>
+<a name="testGetAndExists--">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>testGetAndExists</h4>
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/TestReadOnlyZKClient.html#line.102">testGetAndExists</a>()
+                      throws <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/InterruptedException.html?is-external=true" title="class or interface in java.lang">InterruptedException</a>,
+                             <a href="http://docs.oracle.com/javase/8/docs/api/java/util/concurrent/ExecutionException.html?is-external=true" title="class or interface in java.util.concurrent">ExecutionException</a></pre>
+<dl>
+<dt><span class="throwsLabel">Throws:</span></dt>
+<dd><code><a href="http://docs.oracle.com/javase/8/docs/api/java/lang/InterruptedException.html?is-external=true" title="class or interface in java.lang">InterruptedException</a></code></dd>
+<dd><code><a href="http://docs.oracle.com/javase/8/docs/api/java/util/concurrent/ExecutionException.html?is-external=true" title="class or interface in java.util.concurrent">ExecutionException</a></code></dd>
+</dl>
+</li>
+</ul>
+<a name="testNoNode--">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>testNoNode</h4>
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/TestReadOnlyZKClient.html#line.112">testNoNode</a>()
+                throws <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/InterruptedException.html?is-external=true" title="class or interface in java.lang">InterruptedException</a>,
+                       <a href="http://docs.oracle.com/javase/8/docs/api/java/util/concurrent/ExecutionException.html?is-external=true" title="class or interface in java.util.concurrent">ExecutionException</a></pre>
+<dl>
+<dt><span class="throwsLabel">Throws:</span></dt>
+<dd><code><a href="http://docs.oracle.com/javase/8/docs/api/java/lang/InterruptedException.html?is-external=true" title="class or interface in java.lang">InterruptedException</a></code></dd>
+<dd><code><a href="http://docs.oracle.com/javase/8/docs/api/java/util/concurrent/ExecutionException.html?is-external=true" title="class or interface in java.util.concurrent">ExecutionException</a></code></dd>
+</dl>
+</li>
+</ul>
+<a name="testSessionExpire--">
+<!--   -->
+</a>
+<ul class="blockListLast">
+<li class="blockList">
+<h4>testSessionExpire</h4>
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/TestReadOnlyZKClient.html#line.128">testSessionExpire</a>()
+                       throws <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Exception.html?is-external=true" title="class or interface in java.lang">Exception</a></pre>
+<dl>
+<dt><span class="throwsLabel">Throws:</span></dt>
+<dd><code><a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Exception.html?is-external=true" title="class or interface in java.lang">Exception</a></code></dd>
+</dl>
+</li>
+</ul>
+</li>
+</ul>
+</li>
+</ul>
+</div>
+</div>
+<!-- ========= END OF CLASS DATA ========= -->
+<!-- ======= START OF BOTTOM NAVBAR ====== -->
+<div class="bottomNav"><a name="navbar.bottom">
+<!--   -->
+</a>
+<div class="skipNav"><a href="#skip.navbar.bottom" title="Skip navigation links">Skip navigation links</a></div>
+<a name="navbar.bottom.firstrow">
+<!--   -->
+</a>
+<ul class="navList" title="Navigation">
+<li><a href="../../../../../overview-summary.html">Overview</a></li>
+<li><a href="package-summary.html">Package</a></li>
+<li class="navBarCell1Rev">Class</li>
+<li><a href="class-use/TestReadOnlyZKClient.html">Use</a></li>
+<li><a href="package-tree.html">Tree</a></li>
+<li><a href="../../../../../deprecated-list.html">Deprecated</a></li>
+<li><a href="../../../../../index-all.html">Index</a></li>
+<li><a href="../../../../../help-doc.html">Help</a></li>
+</ul>
+</div>
+<div class="subNav">
+<ul class="navList">
+<li><a href="../../../../../org/apache/hadoop/hbase/zookeeper/TestMetricsZooKeeperSourceImpl.html" title="class in org.apache.hadoop.hbase.zookeeper"><span class="typeNameLink">Prev&nbsp;Class</span></a></li>
+<li><a href="../../../../../org/apache/hadoop/hbase/zookeeper/TestRecoverableZooKeeper.html" title="class in org.apache.hadoop.hbase.zookeeper"><span class="typeNameLink">Next&nbsp;Class</span></a></li>
+</ul>
+<ul class="navList">
+<li><a href="../../../../../index.html?org/apache/hadoop/hbase/zookeeper/TestReadOnlyZKClient.html" target="_top">Frames</a></li>
+<li><a href="TestReadOnlyZKClient.html" target="_top">No&nbsp;Frames</a></li>
+</ul>
+<ul class="navList" id="allclasses_navbar_bottom">
+<li><a href="../../../../../allclasses-noframe.html">All&nbsp;Classes</a></li>
+</ul>
+<div>
+<script type="text/javascript"><!--
+  allClassesLink = document.getElementById("allclasses_navbar_bottom");
+  if(window==top) {
+    allClassesLink.style.display = "block";
+  }
+  else {
+    allClassesLink.style.display = "none";
+  }
+  //-->
+</script>
+</div>
+<div>
+<ul class="subNavList">
+<li>Summary:&nbsp;</li>
+<li>Nested&nbsp;|&nbsp;</li>
+<li><a href="#field.summary">Field</a>&nbsp;|&nbsp;</li>
+<li><a href="#constructor.summary">Constr</a>&nbsp;|&nbsp;</li>
+<li><a href="#method.summary">Method</a></li>
+</ul>
+<ul class="subNavList">
+<li>Detail:&nbsp;</li>
+<li><a href="#field.detail">Field</a>&nbsp;|&nbsp;</li>
+<li><a href="#constructor.detail">Constr</a>&nbsp;|&nbsp;</li>
+<li><a href="#method.detail">Method</a></li>
+</ul>
+</div>
+<a name="skip.navbar.bottom">
+<!--   -->
+</a></div>
+<!-- ======== END OF BOTTOM NAVBAR ======= -->
+<p class="legalCopy"><small>Copyright &#169; 2007&#x2013;2017 <a href="https://www.apache.org/">The Apache Software Foundation</a>. All rights reserved.</small></p>
+</body>
+</html>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/c54c242b/testdevapidocs/org/apache/hadoop/hbase/zookeeper/TestRecoverableZooKeeper.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/org/apache/hadoop/hbase/zookeeper/TestRecoverableZooKeeper.html b/testdevapidocs/org/apache/hadoop/hbase/zookeeper/TestRecoverableZooKeeper.html
index 6b7f228..0019a55 100644
--- a/testdevapidocs/org/apache/hadoop/hbase/zookeeper/TestRecoverableZooKeeper.html
+++ b/testdevapidocs/org/apache/hadoop/hbase/zookeeper/TestRecoverableZooKeeper.html
@@ -49,7 +49,7 @@ var activeTableTab = "activeTableTab";
 </div>
 <div class="subNav">
 <ul class="navList">
-<li><a href="../../../../../org/apache/hadoop/hbase/zookeeper/TestMetricsZooKeeperSourceImpl.html" title="class in org.apache.hadoop.hbase.zookeeper"><span class="typeNameLink">Prev&nbsp;Class</span></a></li>
+<li><a href="../../../../../org/apache/hadoop/hbase/zookeeper/TestReadOnlyZKClient.html" title="class in org.apache.hadoop.hbase.zookeeper"><span class="typeNameLink">Prev&nbsp;Class</span></a></li>
 <li><a href="../../../../../org/apache/hadoop/hbase/zookeeper/TestRecoverableZooKeeper.ZookeeperStub.html" title="class in org.apache.hadoop.hbase.zookeeper"><span class="typeNameLink">Next&nbsp;Class</span></a></li>
 </ul>
 <ul class="navList">
@@ -335,7 +335,7 @@ extends <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?
 </div>
 <div class="subNav">
 <ul class="navList">
-<li><a href="../../../../../org/apache/hadoop/hbase/zookeeper/TestMetricsZooKeeperSourceImpl.html" title="class in org.apache.hadoop.hbase.zookeeper"><span class="typeNameLink">Prev&nbsp;Class</span></a></li>
+<li><a href="../../../../../org/apache/hadoop/hbase/zookeeper/TestReadOnlyZKClient.html" title="class in org.apache.hadoop.hbase.zookeeper"><span class="typeNameLink">Prev&nbsp;Class</span></a></li>
 <li><a href="../../../../../org/apache/hadoop/hbase/zookeeper/TestRecoverableZooKeeper.ZookeeperStub.html" title="class in org.apache.hadoop.hbase.zookeeper"><span class="typeNameLink">Next&nbsp;Class</span></a></li>
 </ul>
 <ul class="navList">

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/c54c242b/testdevapidocs/org/apache/hadoop/hbase/zookeeper/TestZKUtil.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/org/apache/hadoop/hbase/zookeeper/TestZKUtil.html b/testdevapidocs/org/apache/hadoop/hbase/zookeeper/TestZKUtil.html
index 4e259cd..e863a03 100644
--- a/testdevapidocs/org/apache/hadoop/hbase/zookeeper/TestZKUtil.html
+++ b/testdevapidocs/org/apache/hadoop/hbase/zookeeper/TestZKUtil.html
@@ -109,7 +109,7 @@ var activeTableTab = "activeTableTab";
 <li class="blockList">
 <hr>
 <br>
-<pre>public class <a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/TestZKUtil.html#line.44">TestZKUtil</a>
+<pre>public class <a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/TestZKUtil.html#line.42">TestZKUtil</a>
 extends <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a></pre>
 </li>
 </ul>
@@ -194,7 +194,7 @@ extends <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?
 <ul class="blockListLast">
 <li class="blockList">
 <h4>TestZKUtil</h4>
-<pre>public&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/TestZKUtil.html#line.44">TestZKUtil</a>()</pre>
+<pre>public&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/TestZKUtil.html#line.42">TestZKUtil</a>()</pre>
 </li>
 </ul>
 </li>
@@ -211,7 +211,7 @@ extends <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>testUnsecure</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/TestZKUtil.html#line.47">testUnsecure</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/TestZKUtil.html#line.45">testUnsecure</a>()
                   throws org.apache.hadoop.hbase.ZooKeeperConnectionException,
                          <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>
 <dl>
@@ -227,7 +227,7 @@ extends <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>testSecuritySingleSuperuser</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/TestZKUtil.html#line.58">testSecuritySingleSuperuser</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/TestZKUtil.html#line.56">testSecuritySingleSuperuser</a>()
                                  throws org.apache.hadoop.hbase.ZooKeeperConnectionException,
                                         <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>
 <dl>
@@ -243,7 +243,7 @@ extends <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>testCreateACL</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/TestZKUtil.html#line.70">testCreateACL</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/TestZKUtil.html#line.68">testCreateACL</a>()
                    throws org.apache.hadoop.hbase.ZooKeeperConnectionException,
                           <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>
 <dl>
@@ -259,7 +259,7 @@ extends <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?
 <ul class="blockList">
 <li class="blockList">
 <h4>testCreateACLWithSameUser</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/TestZKUtil.html#line.85">testCreateACLWithSameUser</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/TestZKUtil.html#line.83">testCreateACLWithSameUser</a>()
                                throws org.apache.hadoop.hbase.ZooKeeperConnectionException,
                                       <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>
 <dl>
@@ -275,7 +275,7 @@ extends <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?
 <ul class="blockListLast">
 <li class="blockList">
 <h4>testInterruptedDuringAction</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/TestZKUtil.html#line.100">testInterruptedDuringAction</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/TestZKUtil.html#line.98">testInterruptedDuringAction</a>()
                                  throws org.apache.hadoop.hbase.ZooKeeperConnectionException,
                                         <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>,
                                         org.apache.zookeeper.KeeperException,

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/c54c242b/testdevapidocs/org/apache/hadoop/hbase/zookeeper/TestZKWatcher.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/org/apache/hadoop/hbase/zookeeper/TestZKWatcher.html b/testdevapidocs/org/apache/hadoop/hbase/zookeeper/TestZKWatcher.html
index 47fa4b0..4ce8b05 100644
--- a/testdevapidocs/org/apache/hadoop/hbase/zookeeper/TestZKWatcher.html
+++ b/testdevapidocs/org/apache/hadoop/hbase/zookeeper/TestZKWatcher.html
@@ -109,7 +109,7 @@ var activeTableTab = "activeTableTab";
 <li class="blockList">
 <hr>
 <br>
-<pre>public class <a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/TestZKWatcher.html#line.31">TestZKWatcher</a>
+<pre>public class <a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/TestZKWatcher.html#line.32">TestZKWatcher</a>
 extends <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a></pre>
 </li>
 </ul>
@@ -178,7 +178,7 @@ extends <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?
 <ul class="blockListLast">
 <li class="blockList">
 <h4>TestZKWatcher</h4>
-<pre>public&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/TestZKWatcher.html#line.31">TestZKWatcher</a>()</pre>
+<pre>public&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/TestZKWatcher.html#line.32">TestZKWatcher</a>()</pre>
 </li>
 </ul>
 </li>
@@ -195,7 +195,7 @@ extends <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?
 <ul class="blockListLast">
 <li class="blockList">
 <h4>testIsClientReadable</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/TestZKWatcher.html#line.34">testIsClientReadable</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/TestZKWatcher.html#line.35">testIsClientReadable</a>()
                           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>
 <dl>
 <dt><span class="throwsLabel">Throws:</span></dt>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/c54c242b/testdevapidocs/org/apache/hadoop/hbase/zookeeper/class-use/TestReadOnlyZKClient.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/org/apache/hadoop/hbase/zookeeper/class-use/TestReadOnlyZKClient.html b/testdevapidocs/org/apache/hadoop/hbase/zookeeper/class-use/TestReadOnlyZKClient.html
new file mode 100644
index 0000000..f80fa7b
--- /dev/null
+++ b/testdevapidocs/org/apache/hadoop/hbase/zookeeper/class-use/TestReadOnlyZKClient.html
@@ -0,0 +1,125 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<!-- NewPage -->
+<html lang="en">
+<head>
+<!-- Generated by javadoc -->
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title>Uses of Class org.apache.hadoop.hbase.zookeeper.TestReadOnlyZKClient (Apache HBase 3.0.0-SNAPSHOT Test API)</title>
+<link rel="stylesheet" type="text/css" href="../../../../../../stylesheet.css" title="Style">
+<script type="text/javascript" src="../../../../../../script.js"></script>
+</head>
+<body>
+<script type="text/javascript"><!--
+    try {
+        if (location.href.indexOf('is-external=true') == -1) {
+            parent.document.title="Uses of Class org.apache.hadoop.hbase.zookeeper.TestReadOnlyZKClient (Apache HBase 3.0.0-SNAPSHOT Test API)";
+        }
+    }
+    catch(err) {
+    }
+//-->
+</script>
+<noscript>
+<div>JavaScript is disabled on your browser.</div>
+</noscript>
+<!-- ========= START OF TOP NAVBAR ======= -->
+<div class="topNav"><a name="navbar.top">
+<!--   -->
+</a>
+<div class="skipNav"><a href="#skip.navbar.top" title="Skip navigation links">Skip navigation links</a></div>
+<a name="navbar.top.firstrow">
+<!--   -->
+</a>
+<ul class="navList" title="Navigation">
+<li><a href="../../../../../../overview-summary.html">Overview</a></li>
+<li><a href="../package-summary.html">Package</a></li>
+<li><a href="../../../../../../org/apache/hadoop/hbase/zookeeper/TestReadOnlyZKClient.html" title="class in org.apache.hadoop.hbase.zookeeper">Class</a></li>
+<li class="navBarCell1Rev">Use</li>
+<li><a href="../../../../../../overview-tree.html">Tree</a></li>
+<li><a href="../../../../../../deprecated-list.html">Deprecated</a></li>
+<li><a href="../../../../../../index-all.html">Index</a></li>
+<li><a href="../../../../../../help-doc.html">Help</a></li>
+</ul>
+</div>
+<div class="subNav">
+<ul class="navList">
+<li>Prev</li>
+<li>Next</li>
+</ul>
+<ul class="navList">
+<li><a href="../../../../../../index.html?org/apache/hadoop/hbase/zookeeper/class-use/TestReadOnlyZKClient.html" target="_top">Frames</a></li>
+<li><a href="TestReadOnlyZKClient.html" target="_top">No&nbsp;Frames</a></li>
+</ul>
+<ul class="navList" id="allclasses_navbar_top">
+<li><a href="../../../../../../allclasses-noframe.html">All&nbsp;Classes</a></li>
+</ul>
+<div>
+<script type="text/javascript"><!--
+  allClassesLink = document.getElementById("allclasses_navbar_top");
+  if(window==top) {
+    allClassesLink.style.display = "block";
+  }
+  else {
+    allClassesLink.style.display = "none";
+  }
+  //-->
+</script>
+</div>
+<a name="skip.navbar.top">
+<!--   -->
+</a></div>
+<!-- ========= END OF TOP NAVBAR ========= -->
+<div class="header">
+<h2 title="Uses of Class org.apache.hadoop.hbase.zookeeper.TestReadOnlyZKClient" class="title">Uses of Class<br>org.apache.hadoop.hbase.zookeeper.TestReadOnlyZKClient</h2>
+</div>
+<div class="classUseContainer">No usage of org.apache.hadoop.hbase.zookeeper.TestReadOnlyZKClient</div>
+<!-- ======= START OF BOTTOM NAVBAR ====== -->
+<div class="bottomNav"><a name="navbar.bottom">
+<!--   -->
+</a>
+<div class="skipNav"><a href="#skip.navbar.bottom" title="Skip navigation links">Skip navigation links</a></div>
+<a name="navbar.bottom.firstrow">
+<!--   -->
+</a>
+<ul class="navList" title="Navigation">
+<li><a href="../../../../../../overview-summary.html">Overview</a></li>
+<li><a href="../package-summary.html">Package</a></li>
+<li><a href="../../../../../../org/apache/hadoop/hbase/zookeeper/TestReadOnlyZKClient.html" title="class in org.apache.hadoop.hbase.zookeeper">Class</a></li>
+<li class="navBarCell1Rev">Use</li>
+<li><a href="../../../../../../overview-tree.html">Tree</a></li>
+<li><a href="../../../../../../deprecated-list.html">Deprecated</a></li>
+<li><a href="../../../../../../index-all.html">Index</a></li>
+<li><a href="../../../../../../help-doc.html">Help</a></li>
+</ul>
+</div>
+<div class="subNav">
+<ul class="navList">
+<li>Prev</li>
+<li>Next</li>
+</ul>
+<ul class="navList">
+<li><a href="../../../../../../index.html?org/apache/hadoop/hbase/zookeeper/class-use/TestReadOnlyZKClient.html" target="_top">Frames</a></li>
+<li><a href="TestReadOnlyZKClient.html" target="_top">No&nbsp;Frames</a></li>
+</ul>
+<ul class="navList" id="allclasses_navbar_bottom">
+<li><a href="../../../../../../allclasses-noframe.html">All&nbsp;Classes</a></li>
+</ul>
+<div>
+<script type="text/javascript"><!--
+  allClassesLink = document.getElementById("allclasses_navbar_bottom");
+  if(window==top) {
+    allClassesLink.style.display = "block";
+  }
+  else {
+    allClassesLink.style.display = "none";
+  }
+  //-->
+</script>
+</div>
+<a name="skip.navbar.bottom">
+<!--   -->
+</a></div>
+<!-- ======== END OF BOTTOM NAVBAR ======= -->
+<p class="legalCopy"><small>Copyright &#169; 2007&#x2013;2017 <a href="https://www.apache.org/">The Apache Software Foundation</a>. All rights reserved.</small></p>
+</body>
+</html>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/c54c242b/testdevapidocs/org/apache/hadoop/hbase/zookeeper/package-frame.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/org/apache/hadoop/hbase/zookeeper/package-frame.html b/testdevapidocs/org/apache/hadoop/hbase/zookeeper/package-frame.html
index c322818..fb4035a 100644
--- a/testdevapidocs/org/apache/hadoop/hbase/zookeeper/package-frame.html
+++ b/testdevapidocs/org/apache/hadoop/hbase/zookeeper/package-frame.html
@@ -17,6 +17,7 @@
 <li><a href="TestInstancePending.html" title="class in org.apache.hadoop.hbase.zookeeper" target="classFrame">TestInstancePending</a></li>
 <li><a href="TestMetricsZooKeeperSource.html" title="class in org.apache.hadoop.hbase.zookeeper" target="classFrame">TestMetricsZooKeeperSource</a></li>
 <li><a href="TestMetricsZooKeeperSourceImpl.html" title="class in org.apache.hadoop.hbase.zookeeper" target="classFrame">TestMetricsZooKeeperSourceImpl</a></li>
+<li><a href="TestReadOnlyZKClient.html" title="class in org.apache.hadoop.hbase.zookeeper" target="classFrame">TestReadOnlyZKClient</a></li>
 <li><a href="TestRecoverableZooKeeper.html" title="class in org.apache.hadoop.hbase.zookeeper" target="classFrame">TestRecoverableZooKeeper</a></li>
 <li><a href="TestZKConfig.html" title="class in org.apache.hadoop.hbase.zookeeper" target="classFrame">TestZKConfig</a></li>
 <li><a href="TestZKLeaderManager.html" title="class in org.apache.hadoop.hbase.zookeeper" target="classFrame">TestZKLeaderManager</a></li>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/c54c242b/testdevapidocs/org/apache/hadoop/hbase/zookeeper/package-summary.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/org/apache/hadoop/hbase/zookeeper/package-summary.html b/testdevapidocs/org/apache/hadoop/hbase/zookeeper/package-summary.html
index 33632de..f3d638a 100644
--- a/testdevapidocs/org/apache/hadoop/hbase/zookeeper/package-summary.html
+++ b/testdevapidocs/org/apache/hadoop/hbase/zookeeper/package-summary.html
@@ -101,80 +101,84 @@
 <td class="colLast">&nbsp;</td>
 </tr>
 <tr class="altColor">
+<td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/zookeeper/TestReadOnlyZKClient.html" title="class in org.apache.hadoop.hbase.zookeeper">TestReadOnlyZKClient</a></td>
+<td class="colLast">&nbsp;</td>
+</tr>
+<tr class="rowColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/zookeeper/TestRecoverableZooKeeper.html" title="class in org.apache.hadoop.hbase.zookeeper">TestRecoverableZooKeeper</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/zookeeper/TestZKConfig.html" title="class in org.apache.hadoop.hbase.zookeeper">TestZKConfig</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/zookeeper/TestZKLeaderManager.html" title="class in org.apache.hadoop.hbase.zookeeper">TestZKLeaderManager</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/zookeeper/TestZKLeaderManager.MockAbortable.html" title="class in org.apache.hadoop.hbase.zookeeper">TestZKLeaderManager.MockAbortable</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/zookeeper/TestZKLeaderManager.MockLeader.html" title="class in org.apache.hadoop.hbase.zookeeper">TestZKLeaderManager.MockLeader</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/zookeeper/TestZKMainServer.html" title="class in org.apache.hadoop.hbase.zookeeper">TestZKMainServer</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/zookeeper/TestZKMainServer.NoExitSecurityManager.html" title="class in org.apache.hadoop.hbase.zookeeper">TestZKMainServer.NoExitSecurityManager</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/zookeeper/TestZKMetrics.html" title="class in org.apache.hadoop.hbase.zookeeper">TestZKMetrics</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/zookeeper/TestZKMulti.html" title="class in org.apache.hadoop.hbase.zookeeper">TestZKMulti</a></td>
 <td class="colLast">
 <div class="block">Test ZooKeeper multi-update functionality</div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/zookeeper/TestZKNodeTracker.html" title="class in org.apache.hadoop.hbase.zookeeper">TestZKNodeTracker</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/zookeeper/TestZKNodeTracker.StubAbortable.html" title="class in org.apache.hadoop.hbase.zookeeper">TestZKNodeTracker.StubAbortable</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/zookeeper/TestZKNodeTracker.StubWatcher.html" title="class in org.apache.hadoop.hbase.zookeeper">TestZKNodeTracker.StubWatcher</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/zookeeper/TestZKNodeTracker.TestingZKListener.html" title="class in org.apache.hadoop.hbase.zookeeper">TestZKNodeTracker.TestingZKListener</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/zookeeper/TestZKNodeTracker.TestTracker.html" title="class in org.apache.hadoop.hbase.zookeeper">TestZKNodeTracker.TestTracker</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/zookeeper/TestZKNodeTracker.WaitToGetDataThread.html" title="class in org.apache.hadoop.hbase.zookeeper">TestZKNodeTracker.WaitToGetDataThread</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/zookeeper/TestZKUtil.html" title="class in org.apache.hadoop.hbase.zookeeper">TestZKUtil</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/zookeeper/TestZKWatcher.html" title="class in org.apache.hadoop.hbase.zookeeper">TestZKWatcher</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/zookeeper/TestZooKeeperACL.html" title="class in org.apache.hadoop.hbase.zookeeper">TestZooKeeperACL</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/zookeeper/TestZooKeeperACL.DummySecurityConfiguration.html" title="class in org.apache.hadoop.hbase.zookeeper">TestZooKeeperACL.DummySecurityConfiguration</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/c54c242b/testdevapidocs/org/apache/hadoop/hbase/zookeeper/package-tree.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/org/apache/hadoop/hbase/zookeeper/package-tree.html b/testdevapidocs/org/apache/hadoop/hbase/zookeeper/package-tree.html
index 062b3db..00f6d87 100644
--- a/testdevapidocs/org/apache/hadoop/hbase/zookeeper/package-tree.html
+++ b/testdevapidocs/org/apache/hadoop/hbase/zookeeper/package-tree.html
@@ -95,6 +95,7 @@
 <li type="circle">org.apache.hadoop.hbase.zookeeper.<a href="../../../../../org/apache/hadoop/hbase/zookeeper/TestInstancePending.html" title="class in org.apache.hadoop.hbase.zookeeper"><span class="typeNameLink">TestInstancePending</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.zookeeper.<a href="../../../../../org/apache/hadoop/hbase/zookeeper/TestMetricsZooKeeperSource.html" title="class in org.apache.hadoop.hbase.zookeeper"><span class="typeNameLink">TestMetricsZooKeeperSource</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.zookeeper.<a href="../../../../../org/apache/hadoop/hbase/zookeeper/TestMetricsZooKeeperSourceImpl.html" title="class in org.apache.hadoop.hbase.zookeeper"><span class="typeNameLink">TestMetricsZooKeeperSourceImpl</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.zookeeper.<a href="../../../../../org/apache/hadoop/hbase/zookeeper/TestReadOnlyZKClient.html" title="class in org.apache.hadoop.hbase.zookeeper"><span class="typeNameLink">TestReadOnlyZKClient</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.zookeeper.<a href="../../../../../org/apache/hadoop/hbase/zookeeper/TestRecoverableZooKeeper.html" title="class in org.apache.hadoop.hbase.zookeeper"><span class="typeNameLink">TestRecoverableZooKeeper</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.zookeeper.<a href="../../../../../org/apache/hadoop/hbase/zookeeper/TestZKConfig.html" title="class in org.apache.hadoop.hbase.zookeeper"><span class="typeNameLink">TestZKConfig</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.zookeeper.<a href="../../../../../org/apache/hadoop/hbase/zookeeper/TestZKLeaderManager.html" title="class in org.apache.hadoop.hbase.zookeeper"><span class="typeNameLink">TestZKLeaderManager</span></a></li>


[12/51] [partial] hbase-site git commit: Published site at .

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/c54c242b/devapidocs/src-html/org/apache/hadoop/hbase/zookeeper/ReadOnlyZKClient.html
----------------------------------------------------------------------
diff --git a/devapidocs/src-html/org/apache/hadoop/hbase/zookeeper/ReadOnlyZKClient.html b/devapidocs/src-html/org/apache/hadoop/hbase/zookeeper/ReadOnlyZKClient.html
new file mode 100644
index 0000000..6c7ef2a
--- /dev/null
+++ b/devapidocs/src-html/org/apache/hadoop/hbase/zookeeper/ReadOnlyZKClient.html
@@ -0,0 +1,419 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html lang="en">
+<head>
+<title>Source code</title>
+<link rel="stylesheet" type="text/css" href="../../../../../../stylesheet.css" title="Style">
+</head>
+<body>
+<div class="sourceContainer">
+<pre><span class="sourceLineNo">001</span>/**<a name="line.1"></a>
+<span class="sourceLineNo">002</span> * Licensed to the Apache Software Foundation (ASF) under one<a name="line.2"></a>
+<span class="sourceLineNo">003</span> * or more contributor license agreements.  See the NOTICE file<a name="line.3"></a>
+<span class="sourceLineNo">004</span> * distributed with this work for additional information<a name="line.4"></a>
+<span class="sourceLineNo">005</span> * regarding copyright ownership.  The ASF licenses this file<a name="line.5"></a>
+<span class="sourceLineNo">006</span> * to you under the Apache License, Version 2.0 (the<a name="line.6"></a>
+<span class="sourceLineNo">007</span> * "License"); you may not use this file except in compliance<a name="line.7"></a>
+<span class="sourceLineNo">008</span> * with the License.  You may obtain a copy of the License at<a name="line.8"></a>
+<span class="sourceLineNo">009</span> *<a name="line.9"></a>
+<span class="sourceLineNo">010</span> *     http://www.apache.org/licenses/LICENSE-2.0<a name="line.10"></a>
+<span class="sourceLineNo">011</span> *<a name="line.11"></a>
+<span class="sourceLineNo">012</span> * Unless required by applicable law or agreed to in writing, software<a name="line.12"></a>
+<span class="sourceLineNo">013</span> * distributed under the License is distributed on an "AS IS" BASIS,<a name="line.13"></a>
+<span class="sourceLineNo">014</span> * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.<a name="line.14"></a>
+<span class="sourceLineNo">015</span> * See the License for the specific language governing permissions and<a name="line.15"></a>
+<span class="sourceLineNo">016</span> * limitations under the License.<a name="line.16"></a>
+<span class="sourceLineNo">017</span> */<a name="line.17"></a>
+<span class="sourceLineNo">018</span>package org.apache.hadoop.hbase.zookeeper;<a name="line.18"></a>
+<span class="sourceLineNo">019</span><a name="line.19"></a>
+<span class="sourceLineNo">020</span>import static org.apache.hadoop.hbase.HConstants.DEFAULT_ZK_SESSION_TIMEOUT;<a name="line.20"></a>
+<span class="sourceLineNo">021</span>import static org.apache.hadoop.hbase.HConstants.ZK_SESSION_TIMEOUT;<a name="line.21"></a>
+<span class="sourceLineNo">022</span><a name="line.22"></a>
+<span class="sourceLineNo">023</span>import java.io.Closeable;<a name="line.23"></a>
+<span class="sourceLineNo">024</span>import java.io.IOException;<a name="line.24"></a>
+<span class="sourceLineNo">025</span>import java.util.Arrays;<a name="line.25"></a>
+<span class="sourceLineNo">026</span>import java.util.EnumSet;<a name="line.26"></a>
+<span class="sourceLineNo">027</span>import java.util.concurrent.CompletableFuture;<a name="line.27"></a>
+<span class="sourceLineNo">028</span>import java.util.concurrent.DelayQueue;<a name="line.28"></a>
+<span class="sourceLineNo">029</span>import java.util.concurrent.Delayed;<a name="line.29"></a>
+<span class="sourceLineNo">030</span>import java.util.concurrent.TimeUnit;<a name="line.30"></a>
+<span class="sourceLineNo">031</span>import java.util.concurrent.atomic.AtomicBoolean;<a name="line.31"></a>
+<span class="sourceLineNo">032</span><a name="line.32"></a>
+<span class="sourceLineNo">033</span>import org.apache.commons.logging.Log;<a name="line.33"></a>
+<span class="sourceLineNo">034</span>import org.apache.commons.logging.LogFactory;<a name="line.34"></a>
+<span class="sourceLineNo">035</span>import org.apache.hadoop.conf.Configuration;<a name="line.35"></a>
+<span class="sourceLineNo">036</span>import org.apache.yetus.audience.InterfaceAudience;<a name="line.36"></a>
+<span class="sourceLineNo">037</span>import org.apache.zookeeper.KeeperException;<a name="line.37"></a>
+<span class="sourceLineNo">038</span>import org.apache.zookeeper.KeeperException.Code;<a name="line.38"></a>
+<span class="sourceLineNo">039</span>import org.apache.zookeeper.ZooKeeper;<a name="line.39"></a>
+<span class="sourceLineNo">040</span>import org.apache.zookeeper.data.Stat;<a name="line.40"></a>
+<span class="sourceLineNo">041</span><a name="line.41"></a>
+<span class="sourceLineNo">042</span>import org.apache.hadoop.hbase.shaded.com.google.common.annotations.VisibleForTesting;<a name="line.42"></a>
+<span class="sourceLineNo">043</span><a name="line.43"></a>
+<span class="sourceLineNo">044</span>/**<a name="line.44"></a>
+<span class="sourceLineNo">045</span> * A very simple read only zookeeper implementation without watcher support.<a name="line.45"></a>
+<span class="sourceLineNo">046</span> */<a name="line.46"></a>
+<span class="sourceLineNo">047</span>@InterfaceAudience.Private<a name="line.47"></a>
+<span class="sourceLineNo">048</span>public final class ReadOnlyZKClient implements Closeable {<a name="line.48"></a>
+<span class="sourceLineNo">049</span><a name="line.49"></a>
+<span class="sourceLineNo">050</span>  private static final Log LOG = LogFactory.getLog(ReadOnlyZKClient.class);<a name="line.50"></a>
+<span class="sourceLineNo">051</span><a name="line.51"></a>
+<span class="sourceLineNo">052</span>  public static final String RECOVERY_RETRY = "zookeeper.recovery.retry";<a name="line.52"></a>
+<span class="sourceLineNo">053</span><a name="line.53"></a>
+<span class="sourceLineNo">054</span>  private static final int DEFAULT_RECOVERY_RETRY = 30;<a name="line.54"></a>
+<span class="sourceLineNo">055</span><a name="line.55"></a>
+<span class="sourceLineNo">056</span>  public static final String RECOVERY_RETRY_INTERVAL_MILLIS =<a name="line.56"></a>
+<span class="sourceLineNo">057</span>      "zookeeper.recovery.retry.intervalmill";<a name="line.57"></a>
+<span class="sourceLineNo">058</span><a name="line.58"></a>
+<span class="sourceLineNo">059</span>  private static final int DEFAULT_RECOVERY_RETRY_INTERVAL_MILLIS = 1000;<a name="line.59"></a>
+<span class="sourceLineNo">060</span><a name="line.60"></a>
+<span class="sourceLineNo">061</span>  public static final String KEEPALIVE_MILLIS = "zookeeper.keep-alive.time";<a name="line.61"></a>
+<span class="sourceLineNo">062</span><a name="line.62"></a>
+<span class="sourceLineNo">063</span>  private static final int DEFAULT_KEEPALIVE_MILLIS = 60000;<a name="line.63"></a>
+<span class="sourceLineNo">064</span><a name="line.64"></a>
+<span class="sourceLineNo">065</span>  private static final EnumSet&lt;Code&gt; FAIL_FAST_CODES = EnumSet.of(Code.NOAUTH, Code.AUTHFAILED);<a name="line.65"></a>
+<span class="sourceLineNo">066</span><a name="line.66"></a>
+<span class="sourceLineNo">067</span>  private final String connectString;<a name="line.67"></a>
+<span class="sourceLineNo">068</span><a name="line.68"></a>
+<span class="sourceLineNo">069</span>  private final int sessionTimeoutMs;<a name="line.69"></a>
+<span class="sourceLineNo">070</span><a name="line.70"></a>
+<span class="sourceLineNo">071</span>  private final int maxRetries;<a name="line.71"></a>
+<span class="sourceLineNo">072</span><a name="line.72"></a>
+<span class="sourceLineNo">073</span>  private final int retryIntervalMs;<a name="line.73"></a>
+<span class="sourceLineNo">074</span><a name="line.74"></a>
+<span class="sourceLineNo">075</span>  private final int keepAliveTimeMs;<a name="line.75"></a>
+<span class="sourceLineNo">076</span><a name="line.76"></a>
+<span class="sourceLineNo">077</span>  private static abstract class Task implements Delayed {<a name="line.77"></a>
+<span class="sourceLineNo">078</span><a name="line.78"></a>
+<span class="sourceLineNo">079</span>    protected long time = System.nanoTime();<a name="line.79"></a>
+<span class="sourceLineNo">080</span><a name="line.80"></a>
+<span class="sourceLineNo">081</span>    public boolean needZk() {<a name="line.81"></a>
+<span class="sourceLineNo">082</span>      return false;<a name="line.82"></a>
+<span class="sourceLineNo">083</span>    }<a name="line.83"></a>
+<span class="sourceLineNo">084</span><a name="line.84"></a>
+<span class="sourceLineNo">085</span>    public void exec(ZooKeeper zk) {<a name="line.85"></a>
+<span class="sourceLineNo">086</span>    }<a name="line.86"></a>
+<span class="sourceLineNo">087</span><a name="line.87"></a>
+<span class="sourceLineNo">088</span>    public void connectFailed(IOException e) {<a name="line.88"></a>
+<span class="sourceLineNo">089</span>    }<a name="line.89"></a>
+<span class="sourceLineNo">090</span><a name="line.90"></a>
+<span class="sourceLineNo">091</span>    public void closed(IOException e) {<a name="line.91"></a>
+<span class="sourceLineNo">092</span>    }<a name="line.92"></a>
+<span class="sourceLineNo">093</span><a name="line.93"></a>
+<span class="sourceLineNo">094</span>    @Override<a name="line.94"></a>
+<span class="sourceLineNo">095</span>    public int compareTo(Delayed o) {<a name="line.95"></a>
+<span class="sourceLineNo">096</span>      Task that = (Task) o;<a name="line.96"></a>
+<span class="sourceLineNo">097</span>      int c = Long.compare(time, that.time);<a name="line.97"></a>
+<span class="sourceLineNo">098</span>      if (c != 0) {<a name="line.98"></a>
+<span class="sourceLineNo">099</span>        return c;<a name="line.99"></a>
+<span class="sourceLineNo">100</span>      }<a name="line.100"></a>
+<span class="sourceLineNo">101</span>      return Integer.compare(System.identityHashCode(this), System.identityHashCode(that));<a name="line.101"></a>
+<span class="sourceLineNo">102</span>    }<a name="line.102"></a>
+<span class="sourceLineNo">103</span><a name="line.103"></a>
+<span class="sourceLineNo">104</span>    @Override<a name="line.104"></a>
+<span class="sourceLineNo">105</span>    public long getDelay(TimeUnit unit) {<a name="line.105"></a>
+<span class="sourceLineNo">106</span>      return unit.convert(time - System.nanoTime(), TimeUnit.NANOSECONDS);<a name="line.106"></a>
+<span class="sourceLineNo">107</span>    }<a name="line.107"></a>
+<span class="sourceLineNo">108</span>  }<a name="line.108"></a>
+<span class="sourceLineNo">109</span><a name="line.109"></a>
+<span class="sourceLineNo">110</span>  private static final Task CLOSE = new Task() {<a name="line.110"></a>
+<span class="sourceLineNo">111</span>  };<a name="line.111"></a>
+<span class="sourceLineNo">112</span><a name="line.112"></a>
+<span class="sourceLineNo">113</span>  private final DelayQueue&lt;Task&gt; tasks = new DelayQueue&lt;&gt;();<a name="line.113"></a>
+<span class="sourceLineNo">114</span><a name="line.114"></a>
+<span class="sourceLineNo">115</span>  private final AtomicBoolean closed = new AtomicBoolean(false);<a name="line.115"></a>
+<span class="sourceLineNo">116</span><a name="line.116"></a>
+<span class="sourceLineNo">117</span>  private ZooKeeper zookeeper;<a name="line.117"></a>
+<span class="sourceLineNo">118</span><a name="line.118"></a>
+<span class="sourceLineNo">119</span>  private String getId() {<a name="line.119"></a>
+<span class="sourceLineNo">120</span>    return String.format("0x%08x", System.identityHashCode(this));<a name="line.120"></a>
+<span class="sourceLineNo">121</span>  }<a name="line.121"></a>
+<span class="sourceLineNo">122</span><a name="line.122"></a>
+<span class="sourceLineNo">123</span>  public ReadOnlyZKClient(Configuration conf) {<a name="line.123"></a>
+<span class="sourceLineNo">124</span>    this.connectString = ZKConfig.getZKQuorumServersString(conf);<a name="line.124"></a>
+<span class="sourceLineNo">125</span>    this.sessionTimeoutMs = conf.getInt(ZK_SESSION_TIMEOUT, DEFAULT_ZK_SESSION_TIMEOUT);<a name="line.125"></a>
+<span class="sourceLineNo">126</span>    this.maxRetries = conf.getInt(RECOVERY_RETRY, DEFAULT_RECOVERY_RETRY);<a name="line.126"></a>
+<span class="sourceLineNo">127</span>    this.retryIntervalMs =<a name="line.127"></a>
+<span class="sourceLineNo">128</span>        conf.getInt(RECOVERY_RETRY_INTERVAL_MILLIS, DEFAULT_RECOVERY_RETRY_INTERVAL_MILLIS);<a name="line.128"></a>
+<span class="sourceLineNo">129</span>    this.keepAliveTimeMs = conf.getInt(KEEPALIVE_MILLIS, DEFAULT_KEEPALIVE_MILLIS);<a name="line.129"></a>
+<span class="sourceLineNo">130</span>    LOG.info("Start read only zookeeper connection " + getId() + " to " + connectString +<a name="line.130"></a>
+<span class="sourceLineNo">131</span>        ", session timeout " + sessionTimeoutMs + " ms, retries " + maxRetries +<a name="line.131"></a>
+<span class="sourceLineNo">132</span>        ", retry interval " + retryIntervalMs + " ms, keep alive " + keepAliveTimeMs + " ms");<a name="line.132"></a>
+<span class="sourceLineNo">133</span>    Thread t = new Thread(this::run, "ReadOnlyZKClient");<a name="line.133"></a>
+<span class="sourceLineNo">134</span>    t.setDaemon(true);<a name="line.134"></a>
+<span class="sourceLineNo">135</span>    t.start();<a name="line.135"></a>
+<span class="sourceLineNo">136</span>  }<a name="line.136"></a>
+<span class="sourceLineNo">137</span><a name="line.137"></a>
+<span class="sourceLineNo">138</span>  private abstract class ZKTask&lt;T&gt; extends Task {<a name="line.138"></a>
+<span class="sourceLineNo">139</span><a name="line.139"></a>
+<span class="sourceLineNo">140</span>    protected final String path;<a name="line.140"></a>
+<span class="sourceLineNo">141</span><a name="line.141"></a>
+<span class="sourceLineNo">142</span>    private final CompletableFuture&lt;T&gt; future;<a name="line.142"></a>
+<span class="sourceLineNo">143</span><a name="line.143"></a>
+<span class="sourceLineNo">144</span>    private final String operationType;<a name="line.144"></a>
+<span class="sourceLineNo">145</span><a name="line.145"></a>
+<span class="sourceLineNo">146</span>    private int retries;<a name="line.146"></a>
+<span class="sourceLineNo">147</span><a name="line.147"></a>
+<span class="sourceLineNo">148</span>    protected ZKTask(String path, CompletableFuture&lt;T&gt; future, String operationType) {<a name="line.148"></a>
+<span class="sourceLineNo">149</span>      this.path = path;<a name="line.149"></a>
+<span class="sourceLineNo">150</span>      this.future = future;<a name="line.150"></a>
+<span class="sourceLineNo">151</span>      this.operationType = operationType;<a name="line.151"></a>
+<span class="sourceLineNo">152</span>    }<a name="line.152"></a>
+<span class="sourceLineNo">153</span><a name="line.153"></a>
+<span class="sourceLineNo">154</span>    protected final void onComplete(ZooKeeper zk, int rc, T ret, boolean errorIfNoNode) {<a name="line.154"></a>
+<span class="sourceLineNo">155</span>      tasks.add(new Task() {<a name="line.155"></a>
+<span class="sourceLineNo">156</span><a name="line.156"></a>
+<span class="sourceLineNo">157</span>        @Override<a name="line.157"></a>
+<span class="sourceLineNo">158</span>        public void exec(ZooKeeper alwaysNull) {<a name="line.158"></a>
+<span class="sourceLineNo">159</span>          Code code = Code.get(rc);<a name="line.159"></a>
+<span class="sourceLineNo">160</span>          if (code == Code.OK) {<a name="line.160"></a>
+<span class="sourceLineNo">161</span>            future.complete(ret);<a name="line.161"></a>
+<span class="sourceLineNo">162</span>          } else if (code == Code.NONODE) {<a name="line.162"></a>
+<span class="sourceLineNo">163</span>            if (errorIfNoNode) {<a name="line.163"></a>
+<span class="sourceLineNo">164</span>              future.completeExceptionally(KeeperException.create(code, path));<a name="line.164"></a>
+<span class="sourceLineNo">165</span>            } else {<a name="line.165"></a>
+<span class="sourceLineNo">166</span>              future.complete(ret);<a name="line.166"></a>
+<span class="sourceLineNo">167</span>            }<a name="line.167"></a>
+<span class="sourceLineNo">168</span>          } else if (FAIL_FAST_CODES.contains(code)) {<a name="line.168"></a>
+<span class="sourceLineNo">169</span>            future.completeExceptionally(KeeperException.create(code, path));<a name="line.169"></a>
+<span class="sourceLineNo">170</span>          } else {<a name="line.170"></a>
+<span class="sourceLineNo">171</span>            if (code == Code.SESSIONEXPIRED) {<a name="line.171"></a>
+<span class="sourceLineNo">172</span>              LOG.warn(getId() + " session expired, close and reconnect");<a name="line.172"></a>
+<span class="sourceLineNo">173</span>              try {<a name="line.173"></a>
+<span class="sourceLineNo">174</span>                zk.close();<a name="line.174"></a>
+<span class="sourceLineNo">175</span>              } catch (InterruptedException e) {<a name="line.175"></a>
+<span class="sourceLineNo">176</span>              }<a name="line.176"></a>
+<span class="sourceLineNo">177</span>            }<a name="line.177"></a>
+<span class="sourceLineNo">178</span>            if (ZKTask.this.delay(retryIntervalMs, maxRetries)) {<a name="line.178"></a>
+<span class="sourceLineNo">179</span>              LOG.warn(getId() + " failed for " + operationType + " of " + path + ", code = " +<a name="line.179"></a>
+<span class="sourceLineNo">180</span>                  code + ", retries = " + ZKTask.this.retries);<a name="line.180"></a>
+<span class="sourceLineNo">181</span>              tasks.add(ZKTask.this);<a name="line.181"></a>
+<span class="sourceLineNo">182</span>            } else {<a name="line.182"></a>
+<span class="sourceLineNo">183</span>              LOG.warn(getId() + " failed for " + operationType + " of " + path + ", code = " +<a name="line.183"></a>
+<span class="sourceLineNo">184</span>                  code + ", retries = " + ZKTask.this.retries + ", give up");<a name="line.184"></a>
+<span class="sourceLineNo">185</span>              future.completeExceptionally(KeeperException.create(code, path));<a name="line.185"></a>
+<span class="sourceLineNo">186</span>            }<a name="line.186"></a>
+<span class="sourceLineNo">187</span>          }<a name="line.187"></a>
+<span class="sourceLineNo">188</span>        }<a name="line.188"></a>
+<span class="sourceLineNo">189</span><a name="line.189"></a>
+<span class="sourceLineNo">190</span>        @Override<a name="line.190"></a>
+<span class="sourceLineNo">191</span>        public void closed(IOException e) {<a name="line.191"></a>
+<span class="sourceLineNo">192</span>          // It may happen that a request is succeeded and the onComplete has been called and pushed<a name="line.192"></a>
+<span class="sourceLineNo">193</span>          // us into the task queue, but before we get called a close is called and here we will<a name="line.193"></a>
+<span class="sourceLineNo">194</span>          // fail the request, although it is succeeded actually.<a name="line.194"></a>
+<span class="sourceLineNo">195</span>          // This is not a perfect solution but anyway, it is better than hang the requests for<a name="line.195"></a>
+<span class="sourceLineNo">196</span>          // ever, and also acceptable as if you close the zk client before actually getting the<a name="line.196"></a>
+<span class="sourceLineNo">197</span>          // response then a failure is always possible.<a name="line.197"></a>
+<span class="sourceLineNo">198</span>          future.completeExceptionally(e);<a name="line.198"></a>
+<span class="sourceLineNo">199</span>        }<a name="line.199"></a>
+<span class="sourceLineNo">200</span>      });<a name="line.200"></a>
+<span class="sourceLineNo">201</span>    }<a name="line.201"></a>
+<span class="sourceLineNo">202</span><a name="line.202"></a>
+<span class="sourceLineNo">203</span>    @Override<a name="line.203"></a>
+<span class="sourceLineNo">204</span>    public boolean needZk() {<a name="line.204"></a>
+<span class="sourceLineNo">205</span>      return true;<a name="line.205"></a>
+<span class="sourceLineNo">206</span>    }<a name="line.206"></a>
+<span class="sourceLineNo">207</span><a name="line.207"></a>
+<span class="sourceLineNo">208</span>    public boolean delay(long intervalMs, int maxRetries) {<a name="line.208"></a>
+<span class="sourceLineNo">209</span>      if (retries &gt;= maxRetries) {<a name="line.209"></a>
+<span class="sourceLineNo">210</span>        return false;<a name="line.210"></a>
+<span class="sourceLineNo">211</span>      }<a name="line.211"></a>
+<span class="sourceLineNo">212</span>      retries++;<a name="line.212"></a>
+<span class="sourceLineNo">213</span>      time = System.nanoTime() + TimeUnit.MILLISECONDS.toNanos(intervalMs);<a name="line.213"></a>
+<span class="sourceLineNo">214</span>      return true;<a name="line.214"></a>
+<span class="sourceLineNo">215</span>    }<a name="line.215"></a>
+<span class="sourceLineNo">216</span><a name="line.216"></a>
+<span class="sourceLineNo">217</span>    @Override<a name="line.217"></a>
+<span class="sourceLineNo">218</span>    public void connectFailed(IOException e) {<a name="line.218"></a>
+<span class="sourceLineNo">219</span>      if (delay(retryIntervalMs, maxRetries)) {<a name="line.219"></a>
+<span class="sourceLineNo">220</span>        LOG.warn(getId() + " failed to connect to zk for " + operationType + " of " + path +<a name="line.220"></a>
+<span class="sourceLineNo">221</span>            ", retries = " + retries,<a name="line.221"></a>
+<span class="sourceLineNo">222</span>          e);<a name="line.222"></a>
+<span class="sourceLineNo">223</span>        tasks.add(this);<a name="line.223"></a>
+<span class="sourceLineNo">224</span>      } else {<a name="line.224"></a>
+<span class="sourceLineNo">225</span>        LOG.warn(getId() + " failed to connect to zk for " + operationType + " of " + path +<a name="line.225"></a>
+<span class="sourceLineNo">226</span>            ", retries = " + retries + ", give up",<a name="line.226"></a>
+<span class="sourceLineNo">227</span>          e);<a name="line.227"></a>
+<span class="sourceLineNo">228</span>        future.completeExceptionally(e);<a name="line.228"></a>
+<span class="sourceLineNo">229</span>      }<a name="line.229"></a>
+<span class="sourceLineNo">230</span>    }<a name="line.230"></a>
+<span class="sourceLineNo">231</span><a name="line.231"></a>
+<span class="sourceLineNo">232</span>    @Override<a name="line.232"></a>
+<span class="sourceLineNo">233</span>    public void closed(IOException e) {<a name="line.233"></a>
+<span class="sourceLineNo">234</span>      future.completeExceptionally(e);<a name="line.234"></a>
+<span class="sourceLineNo">235</span>    }<a name="line.235"></a>
+<span class="sourceLineNo">236</span>  }<a name="line.236"></a>
+<span class="sourceLineNo">237</span><a name="line.237"></a>
+<span class="sourceLineNo">238</span>  private static &lt;T&gt; CompletableFuture&lt;T&gt; failed(Throwable e) {<a name="line.238"></a>
+<span class="sourceLineNo">239</span>    CompletableFuture&lt;T&gt; future = new CompletableFuture&lt;&gt;();<a name="line.239"></a>
+<span class="sourceLineNo">240</span>    future.completeExceptionally(e);<a name="line.240"></a>
+<span class="sourceLineNo">241</span>    return future;<a name="line.241"></a>
+<span class="sourceLineNo">242</span>  }<a name="line.242"></a>
+<span class="sourceLineNo">243</span><a name="line.243"></a>
+<span class="sourceLineNo">244</span>  public CompletableFuture&lt;byte[]&gt; get(String path) {<a name="line.244"></a>
+<span class="sourceLineNo">245</span>    if (closed.get()) {<a name="line.245"></a>
+<span class="sourceLineNo">246</span>      return failed(new IOException("Client already closed"));<a name="line.246"></a>
+<span class="sourceLineNo">247</span>    }<a name="line.247"></a>
+<span class="sourceLineNo">248</span>    CompletableFuture&lt;byte[]&gt; future = new CompletableFuture&lt;&gt;();<a name="line.248"></a>
+<span class="sourceLineNo">249</span>    tasks.add(new ZKTask&lt;byte[]&gt;(path, future, "get") {<a name="line.249"></a>
+<span class="sourceLineNo">250</span><a name="line.250"></a>
+<span class="sourceLineNo">251</span>      @Override<a name="line.251"></a>
+<span class="sourceLineNo">252</span>      public void exec(ZooKeeper zk) {<a name="line.252"></a>
+<span class="sourceLineNo">253</span>        zk.getData(path, false, (rc, path, ctx, data, stat) -&gt; onComplete(zk, rc, data, true),<a name="line.253"></a>
+<span class="sourceLineNo">254</span>          null);<a name="line.254"></a>
+<span class="sourceLineNo">255</span>      }<a name="line.255"></a>
+<span class="sourceLineNo">256</span>    });<a name="line.256"></a>
+<span class="sourceLineNo">257</span>    return future;<a name="line.257"></a>
+<span class="sourceLineNo">258</span>  }<a name="line.258"></a>
+<span class="sourceLineNo">259</span><a name="line.259"></a>
+<span class="sourceLineNo">260</span>  public CompletableFuture&lt;Stat&gt; exists(String path) {<a name="line.260"></a>
+<span class="sourceLineNo">261</span>    if (closed.get()) {<a name="line.261"></a>
+<span class="sourceLineNo">262</span>      return failed(new IOException("Client already closed"));<a name="line.262"></a>
+<span class="sourceLineNo">263</span>    }<a name="line.263"></a>
+<span class="sourceLineNo">264</span>    CompletableFuture&lt;Stat&gt; future = new CompletableFuture&lt;&gt;();<a name="line.264"></a>
+<span class="sourceLineNo">265</span>    tasks.add(new ZKTask&lt;Stat&gt;(path, future, "exists") {<a name="line.265"></a>
+<span class="sourceLineNo">266</span><a name="line.266"></a>
+<span class="sourceLineNo">267</span>      @Override<a name="line.267"></a>
+<span class="sourceLineNo">268</span>      public void exec(ZooKeeper zk) {<a name="line.268"></a>
+<span class="sourceLineNo">269</span>        zk.exists(path, false, (rc, path, ctx, stat) -&gt; onComplete(zk, rc, stat, false), null);<a name="line.269"></a>
+<span class="sourceLineNo">270</span>      }<a name="line.270"></a>
+<span class="sourceLineNo">271</span>    });<a name="line.271"></a>
+<span class="sourceLineNo">272</span>    return future;<a name="line.272"></a>
+<span class="sourceLineNo">273</span>  }<a name="line.273"></a>
+<span class="sourceLineNo">274</span><a name="line.274"></a>
+<span class="sourceLineNo">275</span>  private void closeZk() {<a name="line.275"></a>
+<span class="sourceLineNo">276</span>    if (zookeeper != null) {<a name="line.276"></a>
+<span class="sourceLineNo">277</span>      try {<a name="line.277"></a>
+<span class="sourceLineNo">278</span>        zookeeper.close();<a name="line.278"></a>
+<span class="sourceLineNo">279</span>      } catch (InterruptedException e) {<a name="line.279"></a>
+<span class="sourceLineNo">280</span>      }<a name="line.280"></a>
+<span class="sourceLineNo">281</span>      zookeeper = null;<a name="line.281"></a>
+<span class="sourceLineNo">282</span>    }<a name="line.282"></a>
+<span class="sourceLineNo">283</span>  }<a name="line.283"></a>
+<span class="sourceLineNo">284</span><a name="line.284"></a>
+<span class="sourceLineNo">285</span>  private ZooKeeper getZk() throws IOException {<a name="line.285"></a>
+<span class="sourceLineNo">286</span>    // may be closed when session expired<a name="line.286"></a>
+<span class="sourceLineNo">287</span>    if (zookeeper == null || !zookeeper.getState().isAlive()) {<a name="line.287"></a>
+<span class="sourceLineNo">288</span>      zookeeper = new ZooKeeper(connectString, sessionTimeoutMs, e -&gt; {<a name="line.288"></a>
+<span class="sourceLineNo">289</span>      });<a name="line.289"></a>
+<span class="sourceLineNo">290</span>    }<a name="line.290"></a>
+<span class="sourceLineNo">291</span>    return zookeeper;<a name="line.291"></a>
+<span class="sourceLineNo">292</span>  }<a name="line.292"></a>
+<span class="sourceLineNo">293</span><a name="line.293"></a>
+<span class="sourceLineNo">294</span>  private void run() {<a name="line.294"></a>
+<span class="sourceLineNo">295</span>    for (;;) {<a name="line.295"></a>
+<span class="sourceLineNo">296</span>      Task task;<a name="line.296"></a>
+<span class="sourceLineNo">297</span>      try {<a name="line.297"></a>
+<span class="sourceLineNo">298</span>        task = tasks.poll(keepAliveTimeMs, TimeUnit.MILLISECONDS);<a name="line.298"></a>
+<span class="sourceLineNo">299</span>      } catch (InterruptedException e) {<a name="line.299"></a>
+<span class="sourceLineNo">300</span>        continue;<a name="line.300"></a>
+<span class="sourceLineNo">301</span>      }<a name="line.301"></a>
+<span class="sourceLineNo">302</span>      if (task == CLOSE) {<a name="line.302"></a>
+<span class="sourceLineNo">303</span>        break;<a name="line.303"></a>
+<span class="sourceLineNo">304</span>      }<a name="line.304"></a>
+<span class="sourceLineNo">305</span>      if (task == null) {<a name="line.305"></a>
+<span class="sourceLineNo">306</span>        LOG.info(getId() + " no activities for " + keepAliveTimeMs +<a name="line.306"></a>
+<span class="sourceLineNo">307</span>            " ms, close active connection. Will reconnect next time when there are new requests.");<a name="line.307"></a>
+<span class="sourceLineNo">308</span>        closeZk();<a name="line.308"></a>
+<span class="sourceLineNo">309</span>        continue;<a name="line.309"></a>
+<span class="sourceLineNo">310</span>      }<a name="line.310"></a>
+<span class="sourceLineNo">311</span>      if (!task.needZk()) {<a name="line.311"></a>
+<span class="sourceLineNo">312</span>        task.exec(null);<a name="line.312"></a>
+<span class="sourceLineNo">313</span>      } else {<a name="line.313"></a>
+<span class="sourceLineNo">314</span>        ZooKeeper zk;<a name="line.314"></a>
+<span class="sourceLineNo">315</span>        try {<a name="line.315"></a>
+<span class="sourceLineNo">316</span>          zk = getZk();<a name="line.316"></a>
+<span class="sourceLineNo">317</span>        } catch (IOException e) {<a name="line.317"></a>
+<span class="sourceLineNo">318</span>          task.connectFailed(e);<a name="line.318"></a>
+<span class="sourceLineNo">319</span>          continue;<a name="line.319"></a>
+<span class="sourceLineNo">320</span>        }<a name="line.320"></a>
+<span class="sourceLineNo">321</span>        task.exec(zk);<a name="line.321"></a>
+<span class="sourceLineNo">322</span>      }<a name="line.322"></a>
+<span class="sourceLineNo">323</span>    }<a name="line.323"></a>
+<span class="sourceLineNo">324</span>    closeZk();<a name="line.324"></a>
+<span class="sourceLineNo">325</span>    IOException error = new IOException("Client already closed");<a name="line.325"></a>
+<span class="sourceLineNo">326</span>    Arrays.stream(tasks.toArray(new Task[0])).forEach(t -&gt; t.closed(error));<a name="line.326"></a>
+<span class="sourceLineNo">327</span>    tasks.clear();<a name="line.327"></a>
+<span class="sourceLineNo">328</span>  }<a name="line.328"></a>
+<span class="sourceLineNo">329</span><a name="line.329"></a>
+<span class="sourceLineNo">330</span>  @Override<a name="line.330"></a>
+<span class="sourceLineNo">331</span>  public void close() {<a name="line.331"></a>
+<span class="sourceLineNo">332</span>    if (closed.compareAndSet(false, true)) {<a name="line.332"></a>
+<span class="sourceLineNo">333</span>      LOG.info("Close zookeeper connection " + getId() + " to " + connectString);<a name="line.333"></a>
+<span class="sourceLineNo">334</span>      tasks.add(CLOSE);<a name="line.334"></a>
+<span class="sourceLineNo">335</span>    }<a name="line.335"></a>
+<span class="sourceLineNo">336</span>  }<a name="line.336"></a>
+<span class="sourceLineNo">337</span><a name="line.337"></a>
+<span class="sourceLineNo">338</span>  @VisibleForTesting<a name="line.338"></a>
+<span class="sourceLineNo">339</span>  ZooKeeper getZooKeeper() {<a name="line.339"></a>
+<span class="sourceLineNo">340</span>    return zookeeper;<a name="line.340"></a>
+<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>  @VisibleForTesting<a name="line.343"></a>
+<span class="sourceLineNo">344</span>  public String getConnectString() {<a name="line.344"></a>
+<span class="sourceLineNo">345</span>    return connectString;<a name="line.345"></a>
+<span class="sourceLineNo">346</span>  }<a name="line.346"></a>
+<span class="sourceLineNo">347</span>}<a name="line.347"></a>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+</pre>
+</div>
+</body>
+</html>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/c54c242b/devapidocs/src-html/org/apache/hadoop/hbase/zookeeper/ZKMainServer.HACK_UNTIL_ZOOKEEPER_1897_ZooKeeperMain.html
----------------------------------------------------------------------
diff --git a/devapidocs/src-html/org/apache/hadoop/hbase/zookeeper/ZKMainServer.HACK_UNTIL_ZOOKEEPER_1897_ZooKeeperMain.html b/devapidocs/src-html/org/apache/hadoop/hbase/zookeeper/ZKMainServer.HACK_UNTIL_ZOOKEEPER_1897_ZooKeeperMain.html
index aa0dbc2..4ccd67d 100644
--- a/devapidocs/src-html/org/apache/hadoop/hbase/zookeeper/ZKMainServer.HACK_UNTIL_ZOOKEEPER_1897_ZooKeeperMain.html
+++ b/devapidocs/src-html/org/apache/hadoop/hbase/zookeeper/ZKMainServer.HACK_UNTIL_ZOOKEEPER_1897_ZooKeeperMain.html
@@ -6,37 +6,37 @@
 </head>
 <body>
 <div class="sourceContainer">
-<pre><span class="sourceLineNo">001</span>/*<a name="line.1"></a>
-<span class="sourceLineNo">002</span> *<a name="line.2"></a>
-<span class="sourceLineNo">003</span> * Licensed to the Apache Software Foundation (ASF) under one<a name="line.3"></a>
-<span class="sourceLineNo">004</span> * or more contributor license agreements.  See the NOTICE file<a name="line.4"></a>
-<span class="sourceLineNo">005</span> * distributed with this work for additional information<a name="line.5"></a>
-<span class="sourceLineNo">006</span> * regarding copyright ownership.  The ASF licenses this file<a name="line.6"></a>
-<span class="sourceLineNo">007</span> * to you under the Apache License, Version 2.0 (the<a name="line.7"></a>
-<span class="sourceLineNo">008</span> * "License"); you may not use this file except in compliance<a name="line.8"></a>
-<span class="sourceLineNo">009</span> * with the License.  You may obtain a copy of the License at<a name="line.9"></a>
-<span class="sourceLineNo">010</span> *<a name="line.10"></a>
-<span class="sourceLineNo">011</span> *     http://www.apache.org/licenses/LICENSE-2.0<a name="line.11"></a>
-<span class="sourceLineNo">012</span> *<a name="line.12"></a>
-<span class="sourceLineNo">013</span> * Unless required by applicable law or agreed to in writing, software<a name="line.13"></a>
-<span class="sourceLineNo">014</span> * distributed under the License is distributed on an "AS IS" BASIS,<a name="line.14"></a>
-<span class="sourceLineNo">015</span> * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.<a name="line.15"></a>
-<span class="sourceLineNo">016</span> * See the License for the specific language governing permissions and<a name="line.16"></a>
-<span class="sourceLineNo">017</span> * limitations under the License.<a name="line.17"></a>
-<span class="sourceLineNo">018</span> */<a name="line.18"></a>
-<span class="sourceLineNo">019</span><a name="line.19"></a>
-<span class="sourceLineNo">020</span>package org.apache.hadoop.hbase.zookeeper;<a name="line.20"></a>
-<span class="sourceLineNo">021</span><a name="line.21"></a>
-<span class="sourceLineNo">022</span>import java.io.IOException;<a name="line.22"></a>
-<span class="sourceLineNo">023</span>import java.util.concurrent.TimeUnit;<a name="line.23"></a>
-<span class="sourceLineNo">024</span><a name="line.24"></a>
-<span class="sourceLineNo">025</span>import org.apache.curator.shaded.com.google.common.base.Stopwatch;<a name="line.25"></a>
-<span class="sourceLineNo">026</span>import org.apache.hadoop.conf.Configuration;<a name="line.26"></a>
-<span class="sourceLineNo">027</span>import org.apache.hadoop.hbase.HBaseConfiguration;<a name="line.27"></a>
-<span class="sourceLineNo">028</span>import org.apache.hadoop.hbase.HBaseInterfaceAudience;<a name="line.28"></a>
-<span class="sourceLineNo">029</span>import org.apache.yetus.audience.InterfaceAudience;<a name="line.29"></a>
-<span class="sourceLineNo">030</span>import org.apache.zookeeper.KeeperException;<a name="line.30"></a>
-<span class="sourceLineNo">031</span>import org.apache.zookeeper.ZooKeeperMain;<a name="line.31"></a>
+<pre><span class="sourceLineNo">001</span>/**<a name="line.1"></a>
+<span class="sourceLineNo">002</span> * Licensed to the Apache Software Foundation (ASF) under one<a name="line.2"></a>
+<span class="sourceLineNo">003</span> * or more contributor license agreements.  See the NOTICE file<a name="line.3"></a>
+<span class="sourceLineNo">004</span> * distributed with this work for additional information<a name="line.4"></a>
+<span class="sourceLineNo">005</span> * regarding copyright ownership.  The ASF licenses this file<a name="line.5"></a>
+<span class="sourceLineNo">006</span> * to you under the Apache License, Version 2.0 (the<a name="line.6"></a>
+<span class="sourceLineNo">007</span> * "License"); you may not use this file except in compliance<a name="line.7"></a>
+<span class="sourceLineNo">008</span> * with the License.  You may obtain a copy of the License at<a name="line.8"></a>
+<span class="sourceLineNo">009</span> *<a name="line.9"></a>
+<span class="sourceLineNo">010</span> *     http://www.apache.org/licenses/LICENSE-2.0<a name="line.10"></a>
+<span class="sourceLineNo">011</span> *<a name="line.11"></a>
+<span class="sourceLineNo">012</span> * Unless required by applicable law or agreed to in writing, software<a name="line.12"></a>
+<span class="sourceLineNo">013</span> * distributed under the License is distributed on an "AS IS" BASIS,<a name="line.13"></a>
+<span class="sourceLineNo">014</span> * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.<a name="line.14"></a>
+<span class="sourceLineNo">015</span> * See the License for the specific language governing permissions and<a name="line.15"></a>
+<span class="sourceLineNo">016</span> * limitations under the License.<a name="line.16"></a>
+<span class="sourceLineNo">017</span> */<a name="line.17"></a>
+<span class="sourceLineNo">018</span><a name="line.18"></a>
+<span class="sourceLineNo">019</span>package org.apache.hadoop.hbase.zookeeper;<a name="line.19"></a>
+<span class="sourceLineNo">020</span><a name="line.20"></a>
+<span class="sourceLineNo">021</span>import java.io.IOException;<a name="line.21"></a>
+<span class="sourceLineNo">022</span>import java.util.concurrent.TimeUnit;<a name="line.22"></a>
+<span class="sourceLineNo">023</span><a name="line.23"></a>
+<span class="sourceLineNo">024</span>import org.apache.hadoop.conf.Configuration;<a name="line.24"></a>
+<span class="sourceLineNo">025</span>import org.apache.hadoop.hbase.HBaseConfiguration;<a name="line.25"></a>
+<span class="sourceLineNo">026</span>import org.apache.hadoop.hbase.HBaseInterfaceAudience;<a name="line.26"></a>
+<span class="sourceLineNo">027</span>import org.apache.yetus.audience.InterfaceAudience;<a name="line.27"></a>
+<span class="sourceLineNo">028</span>import org.apache.zookeeper.KeeperException;<a name="line.28"></a>
+<span class="sourceLineNo">029</span>import org.apache.zookeeper.ZooKeeperMain;<a name="line.29"></a>
+<span class="sourceLineNo">030</span><a name="line.30"></a>
+<span class="sourceLineNo">031</span>import org.apache.hadoop.hbase.shaded.com.google.common.base.Stopwatch;<a name="line.31"></a>
 <span class="sourceLineNo">032</span><a name="line.32"></a>
 <span class="sourceLineNo">033</span>/**<a name="line.33"></a>
 <span class="sourceLineNo">034</span> * Tool for running ZookeeperMain from HBase by  reading a ZooKeeper server<a name="line.34"></a>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/c54c242b/devapidocs/src-html/org/apache/hadoop/hbase/zookeeper/ZKMainServer.html
----------------------------------------------------------------------
diff --git a/devapidocs/src-html/org/apache/hadoop/hbase/zookeeper/ZKMainServer.html b/devapidocs/src-html/org/apache/hadoop/hbase/zookeeper/ZKMainServer.html
index aa0dbc2..4ccd67d 100644
--- a/devapidocs/src-html/org/apache/hadoop/hbase/zookeeper/ZKMainServer.html
+++ b/devapidocs/src-html/org/apache/hadoop/hbase/zookeeper/ZKMainServer.html
@@ -6,37 +6,37 @@
 </head>
 <body>
 <div class="sourceContainer">
-<pre><span class="sourceLineNo">001</span>/*<a name="line.1"></a>
-<span class="sourceLineNo">002</span> *<a name="line.2"></a>
-<span class="sourceLineNo">003</span> * Licensed to the Apache Software Foundation (ASF) under one<a name="line.3"></a>
-<span class="sourceLineNo">004</span> * or more contributor license agreements.  See the NOTICE file<a name="line.4"></a>
-<span class="sourceLineNo">005</span> * distributed with this work for additional information<a name="line.5"></a>
-<span class="sourceLineNo">006</span> * regarding copyright ownership.  The ASF licenses this file<a name="line.6"></a>
-<span class="sourceLineNo">007</span> * to you under the Apache License, Version 2.0 (the<a name="line.7"></a>
-<span class="sourceLineNo">008</span> * "License"); you may not use this file except in compliance<a name="line.8"></a>
-<span class="sourceLineNo">009</span> * with the License.  You may obtain a copy of the License at<a name="line.9"></a>
-<span class="sourceLineNo">010</span> *<a name="line.10"></a>
-<span class="sourceLineNo">011</span> *     http://www.apache.org/licenses/LICENSE-2.0<a name="line.11"></a>
-<span class="sourceLineNo">012</span> *<a name="line.12"></a>
-<span class="sourceLineNo">013</span> * Unless required by applicable law or agreed to in writing, software<a name="line.13"></a>
-<span class="sourceLineNo">014</span> * distributed under the License is distributed on an "AS IS" BASIS,<a name="line.14"></a>
-<span class="sourceLineNo">015</span> * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.<a name="line.15"></a>
-<span class="sourceLineNo">016</span> * See the License for the specific language governing permissions and<a name="line.16"></a>
-<span class="sourceLineNo">017</span> * limitations under the License.<a name="line.17"></a>
-<span class="sourceLineNo">018</span> */<a name="line.18"></a>
-<span class="sourceLineNo">019</span><a name="line.19"></a>
-<span class="sourceLineNo">020</span>package org.apache.hadoop.hbase.zookeeper;<a name="line.20"></a>
-<span class="sourceLineNo">021</span><a name="line.21"></a>
-<span class="sourceLineNo">022</span>import java.io.IOException;<a name="line.22"></a>
-<span class="sourceLineNo">023</span>import java.util.concurrent.TimeUnit;<a name="line.23"></a>
-<span class="sourceLineNo">024</span><a name="line.24"></a>
-<span class="sourceLineNo">025</span>import org.apache.curator.shaded.com.google.common.base.Stopwatch;<a name="line.25"></a>
-<span class="sourceLineNo">026</span>import org.apache.hadoop.conf.Configuration;<a name="line.26"></a>
-<span class="sourceLineNo">027</span>import org.apache.hadoop.hbase.HBaseConfiguration;<a name="line.27"></a>
-<span class="sourceLineNo">028</span>import org.apache.hadoop.hbase.HBaseInterfaceAudience;<a name="line.28"></a>
-<span class="sourceLineNo">029</span>import org.apache.yetus.audience.InterfaceAudience;<a name="line.29"></a>
-<span class="sourceLineNo">030</span>import org.apache.zookeeper.KeeperException;<a name="line.30"></a>
-<span class="sourceLineNo">031</span>import org.apache.zookeeper.ZooKeeperMain;<a name="line.31"></a>
+<pre><span class="sourceLineNo">001</span>/**<a name="line.1"></a>
+<span class="sourceLineNo">002</span> * Licensed to the Apache Software Foundation (ASF) under one<a name="line.2"></a>
+<span class="sourceLineNo">003</span> * or more contributor license agreements.  See the NOTICE file<a name="line.3"></a>
+<span class="sourceLineNo">004</span> * distributed with this work for additional information<a name="line.4"></a>
+<span class="sourceLineNo">005</span> * regarding copyright ownership.  The ASF licenses this file<a name="line.5"></a>
+<span class="sourceLineNo">006</span> * to you under the Apache License, Version 2.0 (the<a name="line.6"></a>
+<span class="sourceLineNo">007</span> * "License"); you may not use this file except in compliance<a name="line.7"></a>
+<span class="sourceLineNo">008</span> * with the License.  You may obtain a copy of the License at<a name="line.8"></a>
+<span class="sourceLineNo">009</span> *<a name="line.9"></a>
+<span class="sourceLineNo">010</span> *     http://www.apache.org/licenses/LICENSE-2.0<a name="line.10"></a>
+<span class="sourceLineNo">011</span> *<a name="line.11"></a>
+<span class="sourceLineNo">012</span> * Unless required by applicable law or agreed to in writing, software<a name="line.12"></a>
+<span class="sourceLineNo">013</span> * distributed under the License is distributed on an "AS IS" BASIS,<a name="line.13"></a>
+<span class="sourceLineNo">014</span> * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.<a name="line.14"></a>
+<span class="sourceLineNo">015</span> * See the License for the specific language governing permissions and<a name="line.15"></a>
+<span class="sourceLineNo">016</span> * limitations under the License.<a name="line.16"></a>
+<span class="sourceLineNo">017</span> */<a name="line.17"></a>
+<span class="sourceLineNo">018</span><a name="line.18"></a>
+<span class="sourceLineNo">019</span>package org.apache.hadoop.hbase.zookeeper;<a name="line.19"></a>
+<span class="sourceLineNo">020</span><a name="line.20"></a>
+<span class="sourceLineNo">021</span>import java.io.IOException;<a name="line.21"></a>
+<span class="sourceLineNo">022</span>import java.util.concurrent.TimeUnit;<a name="line.22"></a>
+<span class="sourceLineNo">023</span><a name="line.23"></a>
+<span class="sourceLineNo">024</span>import org.apache.hadoop.conf.Configuration;<a name="line.24"></a>
+<span class="sourceLineNo">025</span>import org.apache.hadoop.hbase.HBaseConfiguration;<a name="line.25"></a>
+<span class="sourceLineNo">026</span>import org.apache.hadoop.hbase.HBaseInterfaceAudience;<a name="line.26"></a>
+<span class="sourceLineNo">027</span>import org.apache.yetus.audience.InterfaceAudience;<a name="line.27"></a>
+<span class="sourceLineNo">028</span>import org.apache.zookeeper.KeeperException;<a name="line.28"></a>
+<span class="sourceLineNo">029</span>import org.apache.zookeeper.ZooKeeperMain;<a name="line.29"></a>
+<span class="sourceLineNo">030</span><a name="line.30"></a>
+<span class="sourceLineNo">031</span>import org.apache.hadoop.hbase.shaded.com.google.common.base.Stopwatch;<a name="line.31"></a>
 <span class="sourceLineNo">032</span><a name="line.32"></a>
 <span class="sourceLineNo">033</span>/**<a name="line.33"></a>
 <span class="sourceLineNo">034</span> * Tool for running ZookeeperMain from HBase by  reading a ZooKeeper server<a name="line.34"></a>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/c54c242b/export_control.html
----------------------------------------------------------------------
diff --git a/export_control.html b/export_control.html
index a03f9cc..67b3b3a 100644
--- a/export_control.html
+++ b/export_control.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="20171202" />
+    <meta name="Date-Revision-yyyymmdd" content="20171203" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase &#x2013; 
       Export Control
@@ -336,7 +336,7 @@ for more details.</p>
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2017-12-02</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2017-12-03</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/c54c242b/hbase-annotations/checkstyle.html
----------------------------------------------------------------------
diff --git a/hbase-annotations/checkstyle.html b/hbase-annotations/checkstyle.html
index c566ac7..fac2533 100644
--- a/hbase-annotations/checkstyle.html
+++ b/hbase-annotations/checkstyle.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="20171202" />
+    <meta name="Date-Revision-yyyymmdd" content="20171203" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase - Annotations &#x2013; Checkstyle Results</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -116,7 +116,7 @@
 <th><img src="images/icon_warning_sml.gif" alt="" />&#160;Warnings</th>
 <th><img src="images/icon_error_sml.gif" alt="" />&#160;Errors</th></tr>
 <tr class="b">
-<td>20</td>
+<td>21</td>
 <td>0</td>
 <td>0</td>
 <td>1</td></tr></table></div>
@@ -178,7 +178,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2017-12-02</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2017-12-03</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/c54c242b/hbase-annotations/checkstyle.rss
----------------------------------------------------------------------
diff --git a/hbase-annotations/checkstyle.rss b/hbase-annotations/checkstyle.rss
index 982b4d5..125f5f3 100644
--- a/hbase-annotations/checkstyle.rss
+++ b/hbase-annotations/checkstyle.rss
@@ -25,7 +25,7 @@ under the License.
     <language>en-us</language>
     <copyright>&#169;2007 - 2017 The Apache Software Foundation</copyright>
     <item>
-      <title>File: 20,
+      <title>File: 21,
              Errors: 1,
              Warnings: 0,
              Infos: 0
@@ -298,6 +298,20 @@ under the License.
               </tr>
                           <tr>
                 <td>
+                  <a href="http://hbase.apache.org/hbase-annotations/checkstyle.html#org.apache.hadoop.hbase.testclassification.ZKTests.java">org/apache/hadoop/hbase/testclassification/ZKTests.java</a>
+                </td>
+                <td>
+                  0
+                </td>
+                <td>
+                  0
+                </td>
+                <td>
+                  0
+                </td>
+              </tr>
+                          <tr>
+                <td>
                   <a href="http://hbase.apache.org/hbase-annotations/checkstyle.html#org.apache.hadoop.hbase.testclassification.SecurityTests.java">org/apache/hadoop/hbase/testclassification/SecurityTests.java</a>
                 </td>
                 <td>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/c54c242b/hbase-annotations/dependencies.html
----------------------------------------------------------------------
diff --git a/hbase-annotations/dependencies.html b/hbase-annotations/dependencies.html
index 79938f1..9a77e72 100644
--- a/hbase-annotations/dependencies.html
+++ b/hbase-annotations/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="20171202" />
+    <meta name="Date-Revision-yyyymmdd" content="20171203" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase - Annotations &#x2013; Project Dependencies</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -272,7 +272,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2017-12-02</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2017-12-03</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/c54c242b/hbase-annotations/dependency-convergence.html
----------------------------------------------------------------------
diff --git a/hbase-annotations/dependency-convergence.html b/hbase-annotations/dependency-convergence.html
index 91be68d..25d7611 100644
--- a/hbase-annotations/dependency-convergence.html
+++ b/hbase-annotations/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="20171202" />
+    <meta name="Date-Revision-yyyymmdd" content="20171203" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase - Annotations &#x2013; Reactor Dependency Convergence</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -838,7 +838,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2017-12-02</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2017-12-03</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/c54c242b/hbase-annotations/dependency-info.html
----------------------------------------------------------------------
diff --git a/hbase-annotations/dependency-info.html b/hbase-annotations/dependency-info.html
index 87dc799..7996c78 100644
--- a/hbase-annotations/dependency-info.html
+++ b/hbase-annotations/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="20171202" />
+    <meta name="Date-Revision-yyyymmdd" content="20171203" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase - Annotations &#x2013; Dependency Information</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -147,7 +147,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2017-12-02</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2017-12-03</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/c54c242b/hbase-annotations/dependency-management.html
----------------------------------------------------------------------
diff --git a/hbase-annotations/dependency-management.html b/hbase-annotations/dependency-management.html
index 3762d87..335511e 100644
--- a/hbase-annotations/dependency-management.html
+++ b/hbase-annotations/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="20171202" />
+    <meta name="Date-Revision-yyyymmdd" content="20171203" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase - Annotations &#x2013; Project Dependency Management</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -804,7 +804,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2017-12-02</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2017-12-03</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/c54c242b/hbase-annotations/index.html
----------------------------------------------------------------------
diff --git a/hbase-annotations/index.html b/hbase-annotations/index.html
index 485bbad..244c2b6 100644
--- a/hbase-annotations/index.html
+++ b/hbase-annotations/index.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="20171202" />
+    <meta name="Date-Revision-yyyymmdd" content="20171203" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase - Annotations &#x2013; About</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -119,7 +119,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2017-12-02</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2017-12-03</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/c54c242b/hbase-annotations/integration.html
----------------------------------------------------------------------
diff --git a/hbase-annotations/integration.html b/hbase-annotations/integration.html
index 1be3ceb..96d7d65 100644
--- a/hbase-annotations/integration.html
+++ b/hbase-annotations/integration.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="20171202" />
+    <meta name="Date-Revision-yyyymmdd" content="20171203" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase - Annotations &#x2013; CI Management</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -126,7 +126,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2017-12-02</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2017-12-03</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/c54c242b/hbase-annotations/issue-tracking.html
----------------------------------------------------------------------
diff --git a/hbase-annotations/issue-tracking.html b/hbase-annotations/issue-tracking.html
index b057e14..8e73ddb 100644
--- a/hbase-annotations/issue-tracking.html
+++ b/hbase-annotations/issue-tracking.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="20171202" />
+    <meta name="Date-Revision-yyyymmdd" content="20171203" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase - Annotations &#x2013; Issue Management</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -123,7 +123,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2017-12-02</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2017-12-03</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/c54c242b/hbase-annotations/license.html
----------------------------------------------------------------------
diff --git a/hbase-annotations/license.html b/hbase-annotations/license.html
index 3d419ad..7d3b49b 100644
--- a/hbase-annotations/license.html
+++ b/hbase-annotations/license.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="20171202" />
+    <meta name="Date-Revision-yyyymmdd" content="20171203" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase - Annotations &#x2013; Project Licenses</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -326,7 +326,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2017-12-02</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2017-12-03</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/c54c242b/hbase-annotations/mail-lists.html
----------------------------------------------------------------------
diff --git a/hbase-annotations/mail-lists.html b/hbase-annotations/mail-lists.html
index 32e613f..aba24c5 100644
--- a/hbase-annotations/mail-lists.html
+++ b/hbase-annotations/mail-lists.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="20171202" />
+    <meta name="Date-Revision-yyyymmdd" content="20171203" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase - Annotations &#x2013; Project Mailing Lists</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -176,7 +176,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2017-12-02</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2017-12-03</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/c54c242b/hbase-annotations/plugin-management.html
----------------------------------------------------------------------
diff --git a/hbase-annotations/plugin-management.html b/hbase-annotations/plugin-management.html
index 22d8e5e..06a6cb9 100644
--- a/hbase-annotations/plugin-management.html
+++ b/hbase-annotations/plugin-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="20171202" />
+    <meta name="Date-Revision-yyyymmdd" content="20171203" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase - Annotations &#x2013; Project Plugin Management</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -271,7 +271,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2017-12-02</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2017-12-03</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/c54c242b/hbase-annotations/plugins.html
----------------------------------------------------------------------
diff --git a/hbase-annotations/plugins.html b/hbase-annotations/plugins.html
index 19b53ae..ca92936 100644
--- a/hbase-annotations/plugins.html
+++ b/hbase-annotations/plugins.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="20171202" />
+    <meta name="Date-Revision-yyyymmdd" content="20171203" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase - Annotations &#x2013; Project Plugins</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -222,7 +222,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2017-12-02</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2017-12-03</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/c54c242b/hbase-annotations/project-info.html
----------------------------------------------------------------------
diff --git a/hbase-annotations/project-info.html b/hbase-annotations/project-info.html
index 6fb5d04..a9a3e19 100644
--- a/hbase-annotations/project-info.html
+++ b/hbase-annotations/project-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="20171202" />
+    <meta name="Date-Revision-yyyymmdd" content="20171203" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase - Annotations &#x2013; Project Information</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -167,7 +167,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2017-12-02</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2017-12-03</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/c54c242b/hbase-annotations/project-reports.html
----------------------------------------------------------------------
diff --git a/hbase-annotations/project-reports.html b/hbase-annotations/project-reports.html
index cd39407..24764ae 100644
--- a/hbase-annotations/project-reports.html
+++ b/hbase-annotations/project-reports.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="20171202" />
+    <meta name="Date-Revision-yyyymmdd" content="20171203" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase - Annotations &#x2013; Generated Reports</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -128,7 +128,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2017-12-02</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2017-12-03</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/c54c242b/hbase-annotations/project-summary.html
----------------------------------------------------------------------
diff --git a/hbase-annotations/project-summary.html b/hbase-annotations/project-summary.html
index 6cfb065..3580c0b 100644
--- a/hbase-annotations/project-summary.html
+++ b/hbase-annotations/project-summary.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="20171202" />
+    <meta name="Date-Revision-yyyymmdd" content="20171203" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase - Annotations &#x2013; Project Summary</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -166,7 +166,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2017-12-02</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2017-12-03</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/c54c242b/hbase-annotations/source-repository.html
----------------------------------------------------------------------
diff --git a/hbase-annotations/source-repository.html b/hbase-annotations/source-repository.html
index 326b9bb..295a0e1 100644
--- a/hbase-annotations/source-repository.html
+++ b/hbase-annotations/source-repository.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="20171202" />
+    <meta name="Date-Revision-yyyymmdd" content="20171203" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase - Annotations &#x2013; Source Code Management</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -134,7 +134,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2017-12-02</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2017-12-03</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/c54c242b/hbase-annotations/team-list.html
----------------------------------------------------------------------
diff --git a/hbase-annotations/team-list.html b/hbase-annotations/team-list.html
index b5883d4..cdbfbe1 100644
--- a/hbase-annotations/team-list.html
+++ b/hbase-annotations/team-list.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="20171202" />
+    <meta name="Date-Revision-yyyymmdd" content="20171203" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase - Annotations &#x2013; Project Team</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -547,7 +547,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2017-12-02</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2017-12-03</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/c54c242b/hbase-build-configuration/dependencies.html
----------------------------------------------------------------------
diff --git a/hbase-build-configuration/dependencies.html b/hbase-build-configuration/dependencies.html
index 5290677..f779c0f 100644
--- a/hbase-build-configuration/dependencies.html
+++ b/hbase-build-configuration/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="20171202" />
+    <meta name="Date-Revision-yyyymmdd" content="20171203" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase - Build Configuration &#x2013; Project Dependencies</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -264,7 +264,7 @@
 <td>Yes</td></tr>
 <tr class="a">
 <td>hbase-annotations-3.0.0-SNAPSHOT-tests.jar</td>
-<td>14.3 kB</td>
+<td>14.7 kB</td>
 <td>-</td>
 <td>-</td>
 <td>-</td>
@@ -296,7 +296,7 @@
 <th>Debug Information</th></tr>
 <tr class="a">
 <td>4</td>
-<td>394.7 kB</td>
+<td>395.1 kB</td>
 <td>403</td>
 <td>344</td>
 <td>35</td>
@@ -312,7 +312,7 @@
 <td>compile: 2</td></tr>
 <tr class="a">
 <td>test: 2</td>
-<td>test: 59.4 kB</td>
+<td>test: 59.7 kB</td>
 <td>test: 52</td>
 <td>test: 45</td>
 <td>test: 3</td>
@@ -330,7 +330,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2017-12-02</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2017-12-03</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/c54c242b/hbase-build-configuration/dependency-convergence.html
----------------------------------------------------------------------
diff --git a/hbase-build-configuration/dependency-convergence.html b/hbase-build-configuration/dependency-convergence.html
index 242a6cb..56f97ad 100644
--- a/hbase-build-configuration/dependency-convergence.html
+++ b/hbase-build-configuration/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="20171202" />
+    <meta name="Date-Revision-yyyymmdd" content="20171203" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase - Build Configuration &#x2013; Reactor Dependency Convergence</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -838,7 +838,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2017-12-02</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2017-12-03</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/c54c242b/hbase-build-configuration/dependency-info.html
----------------------------------------------------------------------
diff --git a/hbase-build-configuration/dependency-info.html b/hbase-build-configuration/dependency-info.html
index 824d82d..ac27e6d 100644
--- a/hbase-build-configuration/dependency-info.html
+++ b/hbase-build-configuration/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="20171202" />
+    <meta name="Date-Revision-yyyymmdd" content="20171203" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase - Build Configuration &#x2013; Dependency Information</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -148,7 +148,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2017-12-02</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2017-12-03</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/c54c242b/hbase-build-configuration/dependency-management.html
----------------------------------------------------------------------
diff --git a/hbase-build-configuration/dependency-management.html b/hbase-build-configuration/dependency-management.html
index 818f5ef..df49221 100644
--- a/hbase-build-configuration/dependency-management.html
+++ b/hbase-build-configuration/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="20171202" />
+    <meta name="Date-Revision-yyyymmdd" content="20171203" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase - Build Configuration &#x2013; Project Dependency Management</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -804,7 +804,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2017-12-02</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2017-12-03</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/c54c242b/hbase-build-configuration/hbase-archetypes/dependencies.html
----------------------------------------------------------------------
diff --git a/hbase-build-configuration/hbase-archetypes/dependencies.html b/hbase-build-configuration/hbase-archetypes/dependencies.html
index cad0015..67536b6 100644
--- a/hbase-build-configuration/hbase-archetypes/dependencies.html
+++ b/hbase-build-configuration/hbase-archetypes/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="20171202" />
+    <meta name="Date-Revision-yyyymmdd" content="20171203" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase - Archetypes &#x2013; Project Dependencies</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -264,7 +264,7 @@
 <td>Yes</td></tr>
 <tr class="a">
 <td>hbase-annotations-3.0.0-SNAPSHOT-tests.jar</td>
-<td>14.3 kB</td>
+<td>14.7 kB</td>
 <td>-</td>
 <td>-</td>
 <td>-</td>
@@ -296,7 +296,7 @@
 <th>Debug Information</th></tr>
 <tr class="a">
 <td>4</td>
-<td>394.7 kB</td>
+<td>395.1 kB</td>
 <td>403</td>
 <td>344</td>
 <td>35</td>
@@ -312,7 +312,7 @@
 <td>compile: 2</td></tr>
 <tr class="a">
 <td>test: 2</td>
-<td>test: 59.4 kB</td>
+<td>test: 59.7 kB</td>
 <td>test: 52</td>
 <td>test: 45</td>
 <td>test: 3</td>
@@ -330,7 +330,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2017-12-02</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2017-12-03</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/c54c242b/hbase-build-configuration/hbase-archetypes/dependency-convergence.html
----------------------------------------------------------------------
diff --git a/hbase-build-configuration/hbase-archetypes/dependency-convergence.html b/hbase-build-configuration/hbase-archetypes/dependency-convergence.html
index 2b0c6e6..96c646a 100644
--- a/hbase-build-configuration/hbase-archetypes/dependency-convergence.html
+++ b/hbase-build-configuration/hbase-archetypes/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="20171202" />
+    <meta name="Date-Revision-yyyymmdd" content="20171203" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase - Archetypes &#x2013; Reactor Dependency Convergence</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -838,7 +838,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2017-12-02</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2017-12-03</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/c54c242b/hbase-build-configuration/hbase-archetypes/dependency-info.html
----------------------------------------------------------------------
diff --git a/hbase-build-configuration/hbase-archetypes/dependency-info.html b/hbase-build-configuration/hbase-archetypes/dependency-info.html
index 929f262..43a9022 100644
--- a/hbase-build-configuration/hbase-archetypes/dependency-info.html
+++ b/hbase-build-configuration/hbase-archetypes/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="20171202" />
+    <meta name="Date-Revision-yyyymmdd" content="20171203" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase - Archetypes &#x2013; Dependency Information</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -148,7 +148,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2017-12-02</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2017-12-03</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/c54c242b/hbase-build-configuration/hbase-archetypes/dependency-management.html
----------------------------------------------------------------------
diff --git a/hbase-build-configuration/hbase-archetypes/dependency-management.html b/hbase-build-configuration/hbase-archetypes/dependency-management.html
index ab9139a..9bd0e0e 100644
--- a/hbase-build-configuration/hbase-archetypes/dependency-management.html
+++ b/hbase-build-configuration/hbase-archetypes/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="20171202" />
+    <meta name="Date-Revision-yyyymmdd" content="20171203" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase - Archetypes &#x2013; Project Dependency Management</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -804,7 +804,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2017-12-02</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2017-12-03</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/c54c242b/hbase-build-configuration/hbase-archetypes/hbase-archetype-builder/dependencies.html
----------------------------------------------------------------------
diff --git a/hbase-build-configuration/hbase-archetypes/hbase-archetype-builder/dependencies.html b/hbase-build-configuration/hbase-archetypes/hbase-archetype-builder/dependencies.html
index dd3ab70..e51e2e3 100644
--- a/hbase-build-configuration/hbase-archetypes/hbase-archetype-builder/dependencies.html
+++ b/hbase-build-configuration/hbase-archetypes/hbase-archetype-builder/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="20171202" />
+    <meta name="Date-Revision-yyyymmdd" content="20171203" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase - Archetype builder &#x2013; Project Dependencies</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -264,7 +264,7 @@
 <td>Yes</td></tr>
 <tr class="a">
 <td>hbase-annotations-3.0.0-SNAPSHOT-tests.jar</td>
-<td>14.3 kB</td>
+<td>14.7 kB</td>
 <td>-</td>
 <td>-</td>
 <td>-</td>
@@ -296,7 +296,7 @@
 <th>Debug Information</th></tr>
 <tr class="a">
 <td>4</td>
-<td>394.7 kB</td>
+<td>395.1 kB</td>
 <td>403</td>
 <td>344</td>
 <td>35</td>
@@ -312,7 +312,7 @@
 <td>compile: 2</td></tr>
 <tr class="a">
 <td>test: 2</td>
-<td>test: 59.4 kB</td>
+<td>test: 59.7 kB</td>
 <td>test: 52</td>
 <td>test: 45</td>
 <td>test: 3</td>
@@ -330,7 +330,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2017-12-02</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2017-12-03</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/c54c242b/hbase-build-configuration/hbase-archetypes/hbase-archetype-builder/dependency-convergence.html
----------------------------------------------------------------------
diff --git a/hbase-build-configuration/hbase-archetypes/hbase-archetype-builder/dependency-convergence.html b/hbase-build-configuration/hbase-archetypes/hbase-archetype-builder/dependency-convergence.html
index 0b3cb90..96dbbf9 100644
--- a/hbase-build-configuration/hbase-archetypes/hbase-archetype-builder/dependency-convergence.html
+++ b/hbase-build-configuration/hbase-archetypes/hbase-archetype-builder/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="20171202" />
+    <meta name="Date-Revision-yyyymmdd" content="20171203" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase - Archetype builder &#x2013; Reactor Dependency Convergence</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -838,7 +838,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2017-12-02</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2017-12-03</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/c54c242b/hbase-build-configuration/hbase-archetypes/hbase-archetype-builder/dependency-info.html
----------------------------------------------------------------------
diff --git a/hbase-build-configuration/hbase-archetypes/hbase-archetype-builder/dependency-info.html b/hbase-build-configuration/hbase-archetypes/hbase-archetype-builder/dependency-info.html
index 75c20fc..8b3e2b8 100644
--- a/hbase-build-configuration/hbase-archetypes/hbase-archetype-builder/dependency-info.html
+++ b/hbase-build-configuration/hbase-archetypes/hbase-archetype-builder/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="20171202" />
+    <meta name="Date-Revision-yyyymmdd" content="20171203" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase - Archetype builder &#x2013; Dependency Information</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -148,7 +148,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2017-12-02</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2017-12-03</li>
             </p>
                 </div>
 


[18/51] [partial] hbase-site git commit: Published site at .

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/c54c242b/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/HRegion.WriteState.html
----------------------------------------------------------------------
diff --git a/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/HRegion.WriteState.html b/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/HRegion.WriteState.html
index 3edfbef..9707b2c 100644
--- a/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/HRegion.WriteState.html
+++ b/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/HRegion.WriteState.html
@@ -2459,5936 +2459,5935 @@
 <span class="sourceLineNo">2451</span>      }<a name="line.2451"></a>
 <span class="sourceLineNo">2452</span><a name="line.2452"></a>
 <span class="sourceLineNo">2453</span>      for (HStore s : storesToFlush) {<a name="line.2453"></a>
-<span class="sourceLineNo">2454</span>        MemStoreSize flushableSize = s.getFlushableSize();<a name="line.2454"></a>
-<span class="sourceLineNo">2455</span>        totalSizeOfFlushableStores.incMemStoreSize(flushableSize);<a name="line.2455"></a>
-<span class="sourceLineNo">2456</span>        storeFlushCtxs.put(s.getColumnFamilyDescriptor().getName(),<a name="line.2456"></a>
-<span class="sourceLineNo">2457</span>          s.createFlushContext(flushOpSeqId, tracker));<a name="line.2457"></a>
-<span class="sourceLineNo">2458</span>        // for writing stores to WAL<a name="line.2458"></a>
-<span class="sourceLineNo">2459</span>        committedFiles.put(s.getColumnFamilyDescriptor().getName(), null);<a name="line.2459"></a>
-<span class="sourceLineNo">2460</span>        storeFlushableSize.put(s.getColumnFamilyDescriptor().getName(), flushableSize);<a name="line.2460"></a>
-<span class="sourceLineNo">2461</span>      }<a name="line.2461"></a>
-<span class="sourceLineNo">2462</span><a name="line.2462"></a>
-<span class="sourceLineNo">2463</span>      // write the snapshot start to WAL<a name="line.2463"></a>
-<span class="sourceLineNo">2464</span>      if (wal != null &amp;&amp; !writestate.readOnly) {<a name="line.2464"></a>
-<span class="sourceLineNo">2465</span>        FlushDescriptor desc = ProtobufUtil.toFlushDescriptor(FlushAction.START_FLUSH,<a name="line.2465"></a>
-<span class="sourceLineNo">2466</span>            getRegionInfo(), flushOpSeqId, committedFiles);<a name="line.2466"></a>
-<span class="sourceLineNo">2467</span>        // No sync. Sync is below where no updates lock and we do FlushAction.COMMIT_FLUSH<a name="line.2467"></a>
-<span class="sourceLineNo">2468</span>        WALUtil.writeFlushMarker(wal, this.getReplicationScope(), getRegionInfo(), desc, false,<a name="line.2468"></a>
-<span class="sourceLineNo">2469</span>            mvcc);<a name="line.2469"></a>
-<span class="sourceLineNo">2470</span>      }<a name="line.2470"></a>
-<span class="sourceLineNo">2471</span><a name="line.2471"></a>
-<span class="sourceLineNo">2472</span>      // Prepare flush (take a snapshot)<a name="line.2472"></a>
-<span class="sourceLineNo">2473</span>      for (StoreFlushContext flush : storeFlushCtxs.values()) {<a name="line.2473"></a>
-<span class="sourceLineNo">2474</span>        flush.prepare();<a name="line.2474"></a>
-<span class="sourceLineNo">2475</span>      }<a name="line.2475"></a>
-<span class="sourceLineNo">2476</span>    } catch (IOException ex) {<a name="line.2476"></a>
-<span class="sourceLineNo">2477</span>      doAbortFlushToWAL(wal, flushOpSeqId, committedFiles);<a name="line.2477"></a>
-<span class="sourceLineNo">2478</span>      throw ex;<a name="line.2478"></a>
-<span class="sourceLineNo">2479</span>    } finally {<a name="line.2479"></a>
-<span class="sourceLineNo">2480</span>      this.updatesLock.writeLock().unlock();<a name="line.2480"></a>
-<span class="sourceLineNo">2481</span>    }<a name="line.2481"></a>
-<span class="sourceLineNo">2482</span>    String s = "Finished memstore snapshotting " + this + ", syncing WAL and waiting on mvcc, " +<a name="line.2482"></a>
-<span class="sourceLineNo">2483</span>        "flushsize=" + totalSizeOfFlushableStores;<a name="line.2483"></a>
-<span class="sourceLineNo">2484</span>    status.setStatus(s);<a name="line.2484"></a>
-<span class="sourceLineNo">2485</span>    doSyncOfUnflushedWALChanges(wal, getRegionInfo());<a name="line.2485"></a>
-<span class="sourceLineNo">2486</span>    return new PrepareFlushResult(storeFlushCtxs, committedFiles, storeFlushableSize, startTime,<a name="line.2486"></a>
-<span class="sourceLineNo">2487</span>        flushOpSeqId, flushedSeqId, totalSizeOfFlushableStores);<a name="line.2487"></a>
-<span class="sourceLineNo">2488</span>  }<a name="line.2488"></a>
-<span class="sourceLineNo">2489</span><a name="line.2489"></a>
-<span class="sourceLineNo">2490</span>  /**<a name="line.2490"></a>
-<span class="sourceLineNo">2491</span>   * Utility method broken out of internalPrepareFlushCache so that method is smaller.<a name="line.2491"></a>
-<span class="sourceLineNo">2492</span>   */<a name="line.2492"></a>
-<span class="sourceLineNo">2493</span>  private void logFatLineOnFlush(Collection&lt;HStore&gt; storesToFlush, long sequenceId) {<a name="line.2493"></a>
-<span class="sourceLineNo">2494</span>    if (!LOG.isInfoEnabled()) {<a name="line.2494"></a>
-<span class="sourceLineNo">2495</span>      return;<a name="line.2495"></a>
-<span class="sourceLineNo">2496</span>    }<a name="line.2496"></a>
-<span class="sourceLineNo">2497</span>    // Log a fat line detailing what is being flushed.<a name="line.2497"></a>
-<span class="sourceLineNo">2498</span>    StringBuilder perCfExtras = null;<a name="line.2498"></a>
-<span class="sourceLineNo">2499</span>    if (!isAllFamilies(storesToFlush)) {<a name="line.2499"></a>
-<span class="sourceLineNo">2500</span>      perCfExtras = new StringBuilder();<a name="line.2500"></a>
-<span class="sourceLineNo">2501</span>      for (HStore store: storesToFlush) {<a name="line.2501"></a>
-<span class="sourceLineNo">2502</span>        perCfExtras.append("; ").append(store.getColumnFamilyName());<a name="line.2502"></a>
-<span class="sourceLineNo">2503</span>        perCfExtras.append("=")<a name="line.2503"></a>
-<span class="sourceLineNo">2504</span>            .append(StringUtils.byteDesc(store.getFlushableSize().getDataSize()));<a name="line.2504"></a>
-<span class="sourceLineNo">2505</span>      }<a name="line.2505"></a>
-<span class="sourceLineNo">2506</span>    }<a name="line.2506"></a>
-<span class="sourceLineNo">2507</span>    LOG.info("Flushing " + + storesToFlush.size() + "/" + stores.size() +<a name="line.2507"></a>
-<span class="sourceLineNo">2508</span>        " column families, memstore=" + StringUtils.byteDesc(this.memstoreDataSize.get()) +<a name="line.2508"></a>
-<span class="sourceLineNo">2509</span>        ((perCfExtras != null &amp;&amp; perCfExtras.length() &gt; 0)? perCfExtras.toString(): "") +<a name="line.2509"></a>
-<span class="sourceLineNo">2510</span>        ((wal != null) ? "" : "; WAL is null, using passed sequenceid=" + sequenceId));<a name="line.2510"></a>
-<span class="sourceLineNo">2511</span>  }<a name="line.2511"></a>
-<span class="sourceLineNo">2512</span><a name="line.2512"></a>
-<span class="sourceLineNo">2513</span>  private void doAbortFlushToWAL(final WAL wal, final long flushOpSeqId,<a name="line.2513"></a>
-<span class="sourceLineNo">2514</span>      final Map&lt;byte[], List&lt;Path&gt;&gt; committedFiles) {<a name="line.2514"></a>
-<span class="sourceLineNo">2515</span>    if (wal == null) return;<a name="line.2515"></a>
-<span class="sourceLineNo">2516</span>    try {<a name="line.2516"></a>
-<span class="sourceLineNo">2517</span>      FlushDescriptor desc = ProtobufUtil.toFlushDescriptor(FlushAction.ABORT_FLUSH,<a name="line.2517"></a>
-<span class="sourceLineNo">2518</span>          getRegionInfo(), flushOpSeqId, committedFiles);<a name="line.2518"></a>
-<span class="sourceLineNo">2519</span>      WALUtil.writeFlushMarker(wal, this.getReplicationScope(), getRegionInfo(), desc, false,<a name="line.2519"></a>
-<span class="sourceLineNo">2520</span>          mvcc);<a name="line.2520"></a>
-<span class="sourceLineNo">2521</span>    } catch (Throwable t) {<a name="line.2521"></a>
-<span class="sourceLineNo">2522</span>      LOG.warn("Received unexpected exception trying to write ABORT_FLUSH marker to WAL:" +<a name="line.2522"></a>
-<span class="sourceLineNo">2523</span>          StringUtils.stringifyException(t));<a name="line.2523"></a>
-<span class="sourceLineNo">2524</span>      // ignore this since we will be aborting the RS with DSE.<a name="line.2524"></a>
-<span class="sourceLineNo">2525</span>    }<a name="line.2525"></a>
-<span class="sourceLineNo">2526</span>    // we have called wal.startCacheFlush(), now we have to abort it<a name="line.2526"></a>
-<span class="sourceLineNo">2527</span>    wal.abortCacheFlush(this.getRegionInfo().getEncodedNameAsBytes());<a name="line.2527"></a>
-<span class="sourceLineNo">2528</span>  }<a name="line.2528"></a>
-<span class="sourceLineNo">2529</span><a name="line.2529"></a>
-<span class="sourceLineNo">2530</span>  /**<a name="line.2530"></a>
-<span class="sourceLineNo">2531</span>   * Sync unflushed WAL changes. See HBASE-8208 for details<a name="line.2531"></a>
-<span class="sourceLineNo">2532</span>   */<a name="line.2532"></a>
-<span class="sourceLineNo">2533</span>  private static void doSyncOfUnflushedWALChanges(final WAL wal, final RegionInfo hri)<a name="line.2533"></a>
-<span class="sourceLineNo">2534</span>  throws IOException {<a name="line.2534"></a>
-<span class="sourceLineNo">2535</span>    if (wal == null) {<a name="line.2535"></a>
-<span class="sourceLineNo">2536</span>      return;<a name="line.2536"></a>
-<span class="sourceLineNo">2537</span>    }<a name="line.2537"></a>
-<span class="sourceLineNo">2538</span>    try {<a name="line.2538"></a>
-<span class="sourceLineNo">2539</span>      wal.sync(); // ensure that flush marker is sync'ed<a name="line.2539"></a>
-<span class="sourceLineNo">2540</span>    } catch (IOException ioe) {<a name="line.2540"></a>
-<span class="sourceLineNo">2541</span>      wal.abortCacheFlush(hri.getEncodedNameAsBytes());<a name="line.2541"></a>
-<span class="sourceLineNo">2542</span>      throw ioe;<a name="line.2542"></a>
-<span class="sourceLineNo">2543</span>    }<a name="line.2543"></a>
-<span class="sourceLineNo">2544</span>  }<a name="line.2544"></a>
-<span class="sourceLineNo">2545</span><a name="line.2545"></a>
-<span class="sourceLineNo">2546</span>  /**<a name="line.2546"></a>
-<span class="sourceLineNo">2547</span>   * @return True if passed Set is all families in the region.<a name="line.2547"></a>
-<span class="sourceLineNo">2548</span>   */<a name="line.2548"></a>
-<span class="sourceLineNo">2549</span>  private boolean isAllFamilies(Collection&lt;HStore&gt; families) {<a name="line.2549"></a>
-<span class="sourceLineNo">2550</span>    return families == null || this.stores.size() == families.size();<a name="line.2550"></a>
-<span class="sourceLineNo">2551</span>  }<a name="line.2551"></a>
-<span class="sourceLineNo">2552</span><a name="line.2552"></a>
-<span class="sourceLineNo">2553</span>  /**<a name="line.2553"></a>
-<span class="sourceLineNo">2554</span>   * Writes a marker to WAL indicating a flush is requested but cannot be complete due to various<a name="line.2554"></a>
-<span class="sourceLineNo">2555</span>   * reasons. Ignores exceptions from WAL. Returns whether the write succeeded.<a name="line.2555"></a>
-<span class="sourceLineNo">2556</span>   * @param wal<a name="line.2556"></a>
-<span class="sourceLineNo">2557</span>   * @return whether WAL write was successful<a name="line.2557"></a>
-<span class="sourceLineNo">2558</span>   */<a name="line.2558"></a>
-<span class="sourceLineNo">2559</span>  private boolean writeFlushRequestMarkerToWAL(WAL wal, boolean writeFlushWalMarker) {<a name="line.2559"></a>
-<span class="sourceLineNo">2560</span>    if (writeFlushWalMarker &amp;&amp; wal != null &amp;&amp; !writestate.readOnly) {<a name="line.2560"></a>
-<span class="sourceLineNo">2561</span>      FlushDescriptor desc = ProtobufUtil.toFlushDescriptor(FlushAction.CANNOT_FLUSH,<a name="line.2561"></a>
-<span class="sourceLineNo">2562</span>        getRegionInfo(), -1, new TreeMap&lt;&gt;(Bytes.BYTES_COMPARATOR));<a name="line.2562"></a>
-<span class="sourceLineNo">2563</span>      try {<a name="line.2563"></a>
-<span class="sourceLineNo">2564</span>        WALUtil.writeFlushMarker(wal, this.getReplicationScope(), getRegionInfo(), desc, true,<a name="line.2564"></a>
-<span class="sourceLineNo">2565</span>            mvcc);<a name="line.2565"></a>
-<span class="sourceLineNo">2566</span>        return true;<a name="line.2566"></a>
-<span class="sourceLineNo">2567</span>      } catch (IOException e) {<a name="line.2567"></a>
-<span class="sourceLineNo">2568</span>        LOG.warn(getRegionInfo().getEncodedName() + " : "<a name="line.2568"></a>
-<span class="sourceLineNo">2569</span>            + "Received exception while trying to write the flush request to wal", e);<a name="line.2569"></a>
-<span class="sourceLineNo">2570</span>      }<a name="line.2570"></a>
-<span class="sourceLineNo">2571</span>    }<a name="line.2571"></a>
-<span class="sourceLineNo">2572</span>    return false;<a name="line.2572"></a>
-<span class="sourceLineNo">2573</span>  }<a name="line.2573"></a>
-<span class="sourceLineNo">2574</span><a name="line.2574"></a>
-<span class="sourceLineNo">2575</span>  @edu.umd.cs.findbugs.annotations.SuppressWarnings(value="NN_NAKED_NOTIFY",<a name="line.2575"></a>
-<span class="sourceLineNo">2576</span>      justification="Intentional; notify is about completed flush")<a name="line.2576"></a>
-<span class="sourceLineNo">2577</span>  protected FlushResultImpl internalFlushCacheAndCommit(WAL wal, MonitoredTask status,<a name="line.2577"></a>
-<span class="sourceLineNo">2578</span>      PrepareFlushResult prepareResult, Collection&lt;HStore&gt; storesToFlush) throws IOException {<a name="line.2578"></a>
-<span class="sourceLineNo">2579</span>    // prepare flush context is carried via PrepareFlushResult<a name="line.2579"></a>
-<span class="sourceLineNo">2580</span>    TreeMap&lt;byte[], StoreFlushContext&gt; storeFlushCtxs = prepareResult.storeFlushCtxs;<a name="line.2580"></a>
-<span class="sourceLineNo">2581</span>    TreeMap&lt;byte[], List&lt;Path&gt;&gt; committedFiles = prepareResult.committedFiles;<a name="line.2581"></a>
-<span class="sourceLineNo">2582</span>    long startTime = prepareResult.startTime;<a name="line.2582"></a>
-<span class="sourceLineNo">2583</span>    long flushOpSeqId = prepareResult.flushOpSeqId;<a name="line.2583"></a>
-<span class="sourceLineNo">2584</span>    long flushedSeqId = prepareResult.flushedSeqId;<a name="line.2584"></a>
-<span class="sourceLineNo">2585</span><a name="line.2585"></a>
-<span class="sourceLineNo">2586</span>    String s = "Flushing stores of " + this;<a name="line.2586"></a>
-<span class="sourceLineNo">2587</span>    status.setStatus(s);<a name="line.2587"></a>
-<span class="sourceLineNo">2588</span>    if (LOG.isTraceEnabled()) LOG.trace(s);<a name="line.2588"></a>
-<span class="sourceLineNo">2589</span><a name="line.2589"></a>
-<span class="sourceLineNo">2590</span>    // Any failure from here on out will be catastrophic requiring server<a name="line.2590"></a>
-<span class="sourceLineNo">2591</span>    // restart so wal content can be replayed and put back into the memstore.<a name="line.2591"></a>
-<span class="sourceLineNo">2592</span>    // Otherwise, the snapshot content while backed up in the wal, it will not<a name="line.2592"></a>
-<span class="sourceLineNo">2593</span>    // be part of the current running servers state.<a name="line.2593"></a>
-<span class="sourceLineNo">2594</span>    boolean compactionRequested = false;<a name="line.2594"></a>
-<span class="sourceLineNo">2595</span>    long flushedOutputFileSize = 0;<a name="line.2595"></a>
-<span class="sourceLineNo">2596</span>    try {<a name="line.2596"></a>
-<span class="sourceLineNo">2597</span>      // A.  Flush memstore to all the HStores.<a name="line.2597"></a>
-<span class="sourceLineNo">2598</span>      // Keep running vector of all store files that includes both old and the<a name="line.2598"></a>
-<span class="sourceLineNo">2599</span>      // just-made new flush store file. The new flushed file is still in the<a name="line.2599"></a>
-<span class="sourceLineNo">2600</span>      // tmp directory.<a name="line.2600"></a>
-<span class="sourceLineNo">2601</span><a name="line.2601"></a>
-<span class="sourceLineNo">2602</span>      for (StoreFlushContext flush : storeFlushCtxs.values()) {<a name="line.2602"></a>
-<span class="sourceLineNo">2603</span>        flush.flushCache(status);<a name="line.2603"></a>
-<span class="sourceLineNo">2604</span>      }<a name="line.2604"></a>
-<span class="sourceLineNo">2605</span><a name="line.2605"></a>
-<span class="sourceLineNo">2606</span>      // Switch snapshot (in memstore) -&gt; new hfile (thus causing<a name="line.2606"></a>
-<span class="sourceLineNo">2607</span>      // all the store scanners to reset/reseek).<a name="line.2607"></a>
-<span class="sourceLineNo">2608</span>      Iterator&lt;HStore&gt; it = storesToFlush.iterator();<a name="line.2608"></a>
-<span class="sourceLineNo">2609</span>      // stores.values() and storeFlushCtxs have same order<a name="line.2609"></a>
-<span class="sourceLineNo">2610</span>      for (StoreFlushContext flush : storeFlushCtxs.values()) {<a name="line.2610"></a>
-<span class="sourceLineNo">2611</span>        boolean needsCompaction = flush.commit(status);<a name="line.2611"></a>
-<span class="sourceLineNo">2612</span>        if (needsCompaction) {<a name="line.2612"></a>
-<span class="sourceLineNo">2613</span>          compactionRequested = true;<a name="line.2613"></a>
-<span class="sourceLineNo">2614</span>        }<a name="line.2614"></a>
-<span class="sourceLineNo">2615</span>        byte[] storeName = it.next().getColumnFamilyDescriptor().getName();<a name="line.2615"></a>
-<span class="sourceLineNo">2616</span>        List&lt;Path&gt; storeCommittedFiles = flush.getCommittedFiles();<a name="line.2616"></a>
-<span class="sourceLineNo">2617</span>        committedFiles.put(storeName, storeCommittedFiles);<a name="line.2617"></a>
-<span class="sourceLineNo">2618</span>        // Flush committed no files, indicating flush is empty or flush was canceled<a name="line.2618"></a>
-<span class="sourceLineNo">2619</span>        if (storeCommittedFiles == null || storeCommittedFiles.isEmpty()) {<a name="line.2619"></a>
-<span class="sourceLineNo">2620</span>          MemStoreSize storeFlushableSize = prepareResult.storeFlushableSize.get(storeName);<a name="line.2620"></a>
-<span class="sourceLineNo">2621</span>          prepareResult.totalFlushableSize.decMemStoreSize(storeFlushableSize);<a name="line.2621"></a>
-<span class="sourceLineNo">2622</span>        }<a name="line.2622"></a>
-<span class="sourceLineNo">2623</span>        flushedOutputFileSize += flush.getOutputFileSize();<a name="line.2623"></a>
-<span class="sourceLineNo">2624</span>      }<a name="line.2624"></a>
-<span class="sourceLineNo">2625</span>      storeFlushCtxs.clear();<a name="line.2625"></a>
-<span class="sourceLineNo">2626</span><a name="line.2626"></a>
-<span class="sourceLineNo">2627</span>      // Set down the memstore size by amount of flush.<a name="line.2627"></a>
-<span class="sourceLineNo">2628</span>      this.decrMemStoreSize(prepareResult.totalFlushableSize);<a name="line.2628"></a>
-<span class="sourceLineNo">2629</span><a name="line.2629"></a>
-<span class="sourceLineNo">2630</span>      if (wal != null) {<a name="line.2630"></a>
-<span class="sourceLineNo">2631</span>        // write flush marker to WAL. If fail, we should throw DroppedSnapshotException<a name="line.2631"></a>
-<span class="sourceLineNo">2632</span>        FlushDescriptor desc = ProtobufUtil.toFlushDescriptor(FlushAction.COMMIT_FLUSH,<a name="line.2632"></a>
-<span class="sourceLineNo">2633</span>          getRegionInfo(), flushOpSeqId, committedFiles);<a name="line.2633"></a>
-<span class="sourceLineNo">2634</span>        WALUtil.writeFlushMarker(wal, this.getReplicationScope(), getRegionInfo(), desc, true,<a name="line.2634"></a>
-<span class="sourceLineNo">2635</span>            mvcc);<a name="line.2635"></a>
-<span class="sourceLineNo">2636</span>      }<a name="line.2636"></a>
-<span class="sourceLineNo">2637</span>    } catch (Throwable t) {<a name="line.2637"></a>
-<span class="sourceLineNo">2638</span>      // An exception here means that the snapshot was not persisted.<a name="line.2638"></a>
-<span class="sourceLineNo">2639</span>      // The wal needs to be replayed so its content is restored to memstore.<a name="line.2639"></a>
-<span class="sourceLineNo">2640</span>      // Currently, only a server restart will do this.<a name="line.2640"></a>
-<span class="sourceLineNo">2641</span>      // We used to only catch IOEs but its possible that we'd get other<a name="line.2641"></a>
-<span class="sourceLineNo">2642</span>      // exceptions -- e.g. HBASE-659 was about an NPE -- so now we catch<a name="line.2642"></a>
-<span class="sourceLineNo">2643</span>      // all and sundry.<a name="line.2643"></a>
-<span class="sourceLineNo">2644</span>      if (wal != null) {<a name="line.2644"></a>
-<span class="sourceLineNo">2645</span>        try {<a name="line.2645"></a>
-<span class="sourceLineNo">2646</span>          FlushDescriptor desc = ProtobufUtil.toFlushDescriptor(FlushAction.ABORT_FLUSH,<a name="line.2646"></a>
-<span class="sourceLineNo">2647</span>            getRegionInfo(), flushOpSeqId, committedFiles);<a name="line.2647"></a>
-<span class="sourceLineNo">2648</span>          WALUtil.writeFlushMarker(wal, this.replicationScope, getRegionInfo(), desc, false, mvcc);<a name="line.2648"></a>
-<span class="sourceLineNo">2649</span>        } catch (Throwable ex) {<a name="line.2649"></a>
-<span class="sourceLineNo">2650</span>          LOG.warn(getRegionInfo().getEncodedName() + " : "<a name="line.2650"></a>
-<span class="sourceLineNo">2651</span>              + "failed writing ABORT_FLUSH marker to WAL", ex);<a name="line.2651"></a>
-<span class="sourceLineNo">2652</span>          // ignore this since we will be aborting the RS with DSE.<a name="line.2652"></a>
-<span class="sourceLineNo">2653</span>        }<a name="line.2653"></a>
-<span class="sourceLineNo">2654</span>        wal.abortCacheFlush(this.getRegionInfo().getEncodedNameAsBytes());<a name="line.2654"></a>
-<span class="sourceLineNo">2655</span>      }<a name="line.2655"></a>
-<span class="sourceLineNo">2656</span>      DroppedSnapshotException dse = new DroppedSnapshotException("region: " +<a name="line.2656"></a>
-<span class="sourceLineNo">2657</span>          Bytes.toStringBinary(getRegionInfo().getRegionName()));<a name="line.2657"></a>
-<span class="sourceLineNo">2658</span>      dse.initCause(t);<a name="line.2658"></a>
-<span class="sourceLineNo">2659</span>      status.abort("Flush failed: " + StringUtils.stringifyException(t));<a name="line.2659"></a>
-<span class="sourceLineNo">2660</span><a name="line.2660"></a>
-<span class="sourceLineNo">2661</span>      // Callers for flushcache() should catch DroppedSnapshotException and abort the region server.<a name="line.2661"></a>
-<span class="sourceLineNo">2662</span>      // However, since we may have the region read lock, we cannot call close(true) here since<a name="line.2662"></a>
-<span class="sourceLineNo">2663</span>      // we cannot promote to a write lock. Instead we are setting closing so that all other region<a name="line.2663"></a>
-<span class="sourceLineNo">2664</span>      // operations except for close will be rejected.<a name="line.2664"></a>
-<span class="sourceLineNo">2665</span>      this.closing.set(true);<a name="line.2665"></a>
-<span class="sourceLineNo">2666</span><a name="line.2666"></a>
-<span class="sourceLineNo">2667</span>      if (rsServices != null) {<a name="line.2667"></a>
-<span class="sourceLineNo">2668</span>        // This is a safeguard against the case where the caller fails to explicitly handle aborting<a name="line.2668"></a>
-<span class="sourceLineNo">2669</span>        rsServices.abort("Replay of WAL required. Forcing server shutdown", dse);<a name="line.2669"></a>
-<span class="sourceLineNo">2670</span>      }<a name="line.2670"></a>
-<span class="sourceLineNo">2671</span><a name="line.2671"></a>
-<span class="sourceLineNo">2672</span>      throw dse;<a name="line.2672"></a>
-<span class="sourceLineNo">2673</span>    }<a name="line.2673"></a>
-<span class="sourceLineNo">2674</span><a name="line.2674"></a>
-<span class="sourceLineNo">2675</span>    // If we get to here, the HStores have been written.<a name="line.2675"></a>
-<span class="sourceLineNo">2676</span>    if (wal != null) {<a name="line.2676"></a>
-<span class="sourceLineNo">2677</span>      wal.completeCacheFlush(this.getRegionInfo().getEncodedNameAsBytes());<a name="line.2677"></a>
-<span class="sourceLineNo">2678</span>    }<a name="line.2678"></a>
-<span class="sourceLineNo">2679</span><a name="line.2679"></a>
-<span class="sourceLineNo">2680</span>    // Record latest flush time<a name="line.2680"></a>
-<span class="sourceLineNo">2681</span>    for (HStore store: storesToFlush) {<a name="line.2681"></a>
-<span class="sourceLineNo">2682</span>      this.lastStoreFlushTimeMap.put(store, startTime);<a name="line.2682"></a>
-<span class="sourceLineNo">2683</span>    }<a name="line.2683"></a>
-<span class="sourceLineNo">2684</span><a name="line.2684"></a>
-<span class="sourceLineNo">2685</span>    this.maxFlushedSeqId = flushedSeqId;<a name="line.2685"></a>
-<span class="sourceLineNo">2686</span>    this.lastFlushOpSeqId = flushOpSeqId;<a name="line.2686"></a>
-<span class="sourceLineNo">2687</span><a name="line.2687"></a>
-<span class="sourceLineNo">2688</span>    // C. Finally notify anyone waiting on memstore to clear:<a name="line.2688"></a>
-<span class="sourceLineNo">2689</span>    // e.g. checkResources().<a name="line.2689"></a>
-<span class="sourceLineNo">2690</span>    synchronized (this) {<a name="line.2690"></a>
-<span class="sourceLineNo">2691</span>      notifyAll(); // FindBugs NN_NAKED_NOTIFY<a name="line.2691"></a>
-<span class="sourceLineNo">2692</span>    }<a name="line.2692"></a>
-<span class="sourceLineNo">2693</span><a name="line.2693"></a>
-<span class="sourceLineNo">2694</span>    long time = EnvironmentEdgeManager.currentTime() - startTime;<a name="line.2694"></a>
-<span class="sourceLineNo">2695</span>    long memstoresize = this.memstoreDataSize.get();<a name="line.2695"></a>
-<span class="sourceLineNo">2696</span>    String msg = "Finished memstore flush of ~"<a name="line.2696"></a>
-<span class="sourceLineNo">2697</span>        + StringUtils.byteDesc(prepareResult.totalFlushableSize.getDataSize()) + "/"<a name="line.2697"></a>
-<span class="sourceLineNo">2698</span>        + prepareResult.totalFlushableSize.getDataSize() + ", currentsize="<a name="line.2698"></a>
-<span class="sourceLineNo">2699</span>        + StringUtils.byteDesc(memstoresize) + "/" + memstoresize<a name="line.2699"></a>
-<span class="sourceLineNo">2700</span>        + " for region " + this + " in " + time + "ms, sequenceid="<a name="line.2700"></a>
-<span class="sourceLineNo">2701</span>        + flushOpSeqId +  ", compaction requested=" + compactionRequested<a name="line.2701"></a>
-<span class="sourceLineNo">2702</span>        + ((wal == null) ? "; wal=null" : "");<a name="line.2702"></a>
-<span class="sourceLineNo">2703</span>    LOG.info(msg);<a name="line.2703"></a>
-<span class="sourceLineNo">2704</span>    status.setStatus(msg);<a name="line.2704"></a>
-<span class="sourceLineNo">2705</span><a name="line.2705"></a>
-<span class="sourceLineNo">2706</span>    if (rsServices != null &amp;&amp; rsServices.getMetrics() != null) {<a name="line.2706"></a>
-<span class="sourceLineNo">2707</span>      rsServices.getMetrics().updateFlush(time - startTime,<a name="line.2707"></a>
-<span class="sourceLineNo">2708</span>          prepareResult.totalFlushableSize.getDataSize(), flushedOutputFileSize);<a name="line.2708"></a>
-<span class="sourceLineNo">2709</span>    }<a name="line.2709"></a>
-<span class="sourceLineNo">2710</span><a name="line.2710"></a>
-<span class="sourceLineNo">2711</span>    return new FlushResultImpl(compactionRequested ?<a name="line.2711"></a>
-<span class="sourceLineNo">2712</span>        FlushResult.Result.FLUSHED_COMPACTION_NEEDED :<a name="line.2712"></a>
-<span class="sourceLineNo">2713</span>          FlushResult.Result.FLUSHED_NO_COMPACTION_NEEDED, flushOpSeqId);<a name="line.2713"></a>
-<span class="sourceLineNo">2714</span>  }<a name="line.2714"></a>
-<span class="sourceLineNo">2715</span><a name="line.2715"></a>
-<span class="sourceLineNo">2716</span>  /**<a name="line.2716"></a>
-<span class="sourceLineNo">2717</span>   * Method to safely get the next sequence number.<a name="line.2717"></a>
-<span class="sourceLineNo">2718</span>   * @return Next sequence number unassociated with any actual edit.<a name="line.2718"></a>
-<span class="sourceLineNo">2719</span>   * @throws IOException<a name="line.2719"></a>
-<span class="sourceLineNo">2720</span>   */<a name="line.2720"></a>
-<span class="sourceLineNo">2721</span>  @VisibleForTesting<a name="line.2721"></a>
-<span class="sourceLineNo">2722</span>  protected long getNextSequenceId(final WAL wal) throws IOException {<a name="line.2722"></a>
-<span class="sourceLineNo">2723</span>    WriteEntry we = mvcc.begin();<a name="line.2723"></a>
-<span class="sourceLineNo">2724</span>    mvcc.completeAndWait(we);<a name="line.2724"></a>
-<span class="sourceLineNo">2725</span>    return we.getWriteNumber();<a name="line.2725"></a>
-<span class="sourceLineNo">2726</span>  }<a name="line.2726"></a>
-<span class="sourceLineNo">2727</span><a name="line.2727"></a>
-<span class="sourceLineNo">2728</span>  //////////////////////////////////////////////////////////////////////////////<a name="line.2728"></a>
-<span class="sourceLineNo">2729</span>  // get() methods for client use.<a name="line.2729"></a>
-<span class="sourceLineNo">2730</span>  //////////////////////////////////////////////////////////////////////////////<a name="line.2730"></a>
-<span class="sourceLineNo">2731</span><a name="line.2731"></a>
-<span class="sourceLineNo">2732</span>  @Override<a name="line.2732"></a>
-<span class="sourceLineNo">2733</span>  public RegionScannerImpl getScanner(Scan scan) throws IOException {<a name="line.2733"></a>
-<span class="sourceLineNo">2734</span>   return getScanner(scan, null);<a name="line.2734"></a>
-<span class="sourceLineNo">2735</span>  }<a name="line.2735"></a>
-<span class="sourceLineNo">2736</span><a name="line.2736"></a>
-<span class="sourceLineNo">2737</span>  @Override<a name="line.2737"></a>
-<span class="sourceLineNo">2738</span>  public RegionScannerImpl getScanner(Scan scan, List&lt;KeyValueScanner&gt; additionalScanners)<a name="line.2738"></a>
-<span class="sourceLineNo">2739</span>      throws IOException {<a name="line.2739"></a>
-<span class="sourceLineNo">2740</span>    return getScanner(scan, additionalScanners, HConstants.NO_NONCE, HConstants.NO_NONCE);<a name="line.2740"></a>
-<span class="sourceLineNo">2741</span>  }<a name="line.2741"></a>
-<span class="sourceLineNo">2742</span><a name="line.2742"></a>
-<span class="sourceLineNo">2743</span>  private RegionScannerImpl getScanner(Scan scan, List&lt;KeyValueScanner&gt; additionalScanners,<a name="line.2743"></a>
-<span class="sourceLineNo">2744</span>      long nonceGroup, long nonce) throws IOException {<a name="line.2744"></a>
-<span class="sourceLineNo">2745</span>    startRegionOperation(Operation.SCAN);<a name="line.2745"></a>
-<span class="sourceLineNo">2746</span>    try {<a name="line.2746"></a>
-<span class="sourceLineNo">2747</span>      // Verify families are all valid<a name="line.2747"></a>
-<span class="sourceLineNo">2748</span>      if (!scan.hasFamilies()) {<a name="line.2748"></a>
-<span class="sourceLineNo">2749</span>        // Adding all families to scanner<a name="line.2749"></a>
-<span class="sourceLineNo">2750</span>        for (byte[] family : this.htableDescriptor.getColumnFamilyNames()) {<a name="line.2750"></a>
-<span class="sourceLineNo">2751</span>          scan.addFamily(family);<a name="line.2751"></a>
-<span class="sourceLineNo">2752</span>        }<a name="line.2752"></a>
-<span class="sourceLineNo">2753</span>      } else {<a name="line.2753"></a>
-<span class="sourceLineNo">2754</span>        for (byte[] family : scan.getFamilyMap().keySet()) {<a name="line.2754"></a>
-<span class="sourceLineNo">2755</span>          checkFamily(family);<a name="line.2755"></a>
-<span class="sourceLineNo">2756</span>        }<a name="line.2756"></a>
-<span class="sourceLineNo">2757</span>      }<a name="line.2757"></a>
-<span class="sourceLineNo">2758</span>      return instantiateRegionScanner(scan, additionalScanners, nonceGroup, nonce);<a name="line.2758"></a>
-<span class="sourceLineNo">2759</span>    } finally {<a name="line.2759"></a>
-<span class="sourceLineNo">2760</span>      closeRegionOperation(Operation.SCAN);<a name="line.2760"></a>
-<span class="sourceLineNo">2761</span>    }<a name="line.2761"></a>
-<span class="sourceLineNo">2762</span>  }<a name="line.2762"></a>
-<span class="sourceLineNo">2763</span><a name="line.2763"></a>
-<span class="sourceLineNo">2764</span>  protected RegionScanner instantiateRegionScanner(Scan scan,<a name="line.2764"></a>
-<span class="sourceLineNo">2765</span>      List&lt;KeyValueScanner&gt; additionalScanners) throws IOException {<a name="line.2765"></a>
-<span class="sourceLineNo">2766</span>    return instantiateRegionScanner(scan, additionalScanners, HConstants.NO_NONCE,<a name="line.2766"></a>
-<span class="sourceLineNo">2767</span>      HConstants.NO_NONCE);<a name="line.2767"></a>
-<span class="sourceLineNo">2768</span>  }<a name="line.2768"></a>
-<span class="sourceLineNo">2769</span><a name="line.2769"></a>
-<span class="sourceLineNo">2770</span>  protected RegionScannerImpl instantiateRegionScanner(Scan scan,<a name="line.2770"></a>
-<span class="sourceLineNo">2771</span>      List&lt;KeyValueScanner&gt; additionalScanners, long nonceGroup, long nonce) throws IOException {<a name="line.2771"></a>
-<span class="sourceLineNo">2772</span>    if (scan.isReversed()) {<a name="line.2772"></a>
-<span class="sourceLineNo">2773</span>      if (scan.getFilter() != null) {<a name="line.2773"></a>
-<span class="sourceLineNo">2774</span>        scan.getFilter().setReversed(true);<a name="line.2774"></a>
-<span class="sourceLineNo">2775</span>      }<a name="line.2775"></a>
-<span class="sourceLineNo">2776</span>      return new ReversedRegionScannerImpl(scan, additionalScanners, this);<a name="line.2776"></a>
-<span class="sourceLineNo">2777</span>    }<a name="line.2777"></a>
-<span class="sourceLineNo">2778</span>    return new RegionScannerImpl(scan, additionalScanners, this, nonceGroup, nonce);<a name="line.2778"></a>
-<span class="sourceLineNo">2779</span>  }<a name="line.2779"></a>
-<span class="sourceLineNo">2780</span><a name="line.2780"></a>
-<span class="sourceLineNo">2781</span>  /**<a name="line.2781"></a>
-<span class="sourceLineNo">2782</span>   * Prepare a delete for a row mutation processor<a name="line.2782"></a>
-<span class="sourceLineNo">2783</span>   * @param delete The passed delete is modified by this method. WARNING!<a name="line.2783"></a>
-<span class="sourceLineNo">2784</span>   * @throws IOException<a name="line.2784"></a>
-<span class="sourceLineNo">2785</span>   */<a name="line.2785"></a>
-<span class="sourceLineNo">2786</span>  public void prepareDelete(Delete delete) throws IOException {<a name="line.2786"></a>
-<span class="sourceLineNo">2787</span>    // Check to see if this is a deleteRow insert<a name="line.2787"></a>
-<span class="sourceLineNo">2788</span>    if(delete.getFamilyCellMap().isEmpty()){<a name="line.2788"></a>
-<span class="sourceLineNo">2789</span>      for(byte [] family : this.htableDescriptor.getColumnFamilyNames()){<a name="line.2789"></a>
-<span class="sourceLineNo">2790</span>        // Don't eat the timestamp<a name="line.2790"></a>
-<span class="sourceLineNo">2791</span>        delete.addFamily(family, delete.getTimeStamp());<a name="line.2791"></a>
-<span class="sourceLineNo">2792</span>      }<a name="line.2792"></a>
-<span class="sourceLineNo">2793</span>    } else {<a name="line.2793"></a>
-<span class="sourceLineNo">2794</span>      for(byte [] family : delete.getFamilyCellMap().keySet()) {<a name="line.2794"></a>
-<span class="sourceLineNo">2795</span>        if(family == null) {<a name="line.2795"></a>
-<span class="sourceLineNo">2796</span>          throw new NoSuchColumnFamilyException("Empty family is invalid");<a name="line.2796"></a>
-<span class="sourceLineNo">2797</span>        }<a name="line.2797"></a>
-<span class="sourceLineNo">2798</span>        checkFamily(family);<a name="line.2798"></a>
-<span class="sourceLineNo">2799</span>      }<a name="line.2799"></a>
-<span class="sourceLineNo">2800</span>    }<a name="line.2800"></a>
-<span class="sourceLineNo">2801</span>  }<a name="line.2801"></a>
-<span class="sourceLineNo">2802</span><a name="line.2802"></a>
-<span class="sourceLineNo">2803</span>  @Override<a name="line.2803"></a>
-<span class="sourceLineNo">2804</span>  public void delete(Delete delete) throws IOException {<a name="line.2804"></a>
-<span class="sourceLineNo">2805</span>    checkReadOnly();<a name="line.2805"></a>
-<span class="sourceLineNo">2806</span>    checkResources();<a name="line.2806"></a>
-<span class="sourceLineNo">2807</span>    startRegionOperation(Operation.DELETE);<a name="line.2807"></a>
-<span class="sourceLineNo">2808</span>    try {<a name="line.2808"></a>
-<span class="sourceLineNo">2809</span>      // All edits for the given row (across all column families) must happen atomically.<a name="line.2809"></a>
-<span class="sourceLineNo">2810</span>      doBatchMutate(delete);<a name="line.2810"></a>
-<span class="sourceLineNo">2811</span>    } finally {<a name="line.2811"></a>
-<span class="sourceLineNo">2812</span>      closeRegionOperation(Operation.DELETE);<a name="line.2812"></a>
-<span class="sourceLineNo">2813</span>    }<a name="line.2813"></a>
-<span class="sourceLineNo">2814</span>  }<a name="line.2814"></a>
-<span class="sourceLineNo">2815</span><a name="line.2815"></a>
-<span class="sourceLineNo">2816</span>  /**<a name="line.2816"></a>
-<span class="sourceLineNo">2817</span>   * Row needed by below method.<a name="line.2817"></a>
-<span class="sourceLineNo">2818</span>   */<a name="line.2818"></a>
-<span class="sourceLineNo">2819</span>  private static final byte [] FOR_UNIT_TESTS_ONLY = Bytes.toBytes("ForUnitTestsOnly");<a name="line.2819"></a>
-<span class="sourceLineNo">2820</span><a name="line.2820"></a>
-<span class="sourceLineNo">2821</span>  /**<a name="line.2821"></a>
-<span class="sourceLineNo">2822</span>   * This is used only by unit tests. Not required to be a public API.<a name="line.2822"></a>
-<span class="sourceLineNo">2823</span>   * @param familyMap map of family to edits for the given family.<a name="line.2823"></a>
-<span class="sourceLineNo">2824</span>   * @throws IOException<a name="line.2824"></a>
-<span class="sourceLineNo">2825</span>   */<a name="line.2825"></a>
-<span class="sourceLineNo">2826</span>  void delete(NavigableMap&lt;byte[], List&lt;Cell&gt;&gt; familyMap,<a name="line.2826"></a>
-<span class="sourceLineNo">2827</span>      Durability durability) throws IOException {<a name="line.2827"></a>
-<span class="sourceLineNo">2828</span>    Delete delete = new Delete(FOR_UNIT_TESTS_ONLY);<a name="line.2828"></a>
-<span class="sourceLineNo">2829</span>    delete.setFamilyCellMap(familyMap);<a name="line.2829"></a>
-<span class="sourceLineNo">2830</span>    delete.setDurability(durability);<a name="line.2830"></a>
-<span class="sourceLineNo">2831</span>    doBatchMutate(delete);<a name="line.2831"></a>
-<span class="sourceLineNo">2832</span>  }<a name="line.2832"></a>
-<span class="sourceLineNo">2833</span><a name="line.2833"></a>
-<span class="sourceLineNo">2834</span>  /**<a name="line.2834"></a>
-<span class="sourceLineNo">2835</span>   * Set up correct timestamps in the KVs in Delete object.<a name="line.2835"></a>
-<span class="sourceLineNo">2836</span>   * &lt;p&gt;Caller should have the row and region locks.<a name="line.2836"></a>
-<span class="sourceLineNo">2837</span>   * @param mutation<a name="line.2837"></a>
-<span class="sourceLineNo">2838</span>   * @param familyMap<a name="line.2838"></a>
-<span class="sourceLineNo">2839</span>   * @param byteNow<a name="line.2839"></a>
-<span class="sourceLineNo">2840</span>   * @throws IOException<a name="line.2840"></a>
-<span class="sourceLineNo">2841</span>   */<a name="line.2841"></a>
-<span class="sourceLineNo">2842</span>  public void prepareDeleteTimestamps(Mutation mutation, Map&lt;byte[], List&lt;Cell&gt;&gt; familyMap,<a name="line.2842"></a>
-<span class="sourceLineNo">2843</span>      byte[] byteNow) throws IOException {<a name="line.2843"></a>
-<span class="sourceLineNo">2844</span>    for (Map.Entry&lt;byte[], List&lt;Cell&gt;&gt; e : familyMap.entrySet()) {<a name="line.2844"></a>
-<span class="sourceLineNo">2845</span><a name="line.2845"></a>
-<span class="sourceLineNo">2846</span>      byte[] family = e.getKey();<a name="line.2846"></a>
-<span class="sourceLineNo">2847</span>      List&lt;Cell&gt; cells = e.getValue();<a name="line.2847"></a>
-<span class="sourceLineNo">2848</span>      assert cells instanceof RandomAccess;<a name="line.2848"></a>
-<span class="sourceLineNo">2849</span><a name="line.2849"></a>
-<span class="sourceLineNo">2850</span>      Map&lt;byte[], Integer&gt; kvCount = new TreeMap&lt;&gt;(Bytes.BYTES_COMPARATOR);<a name="line.2850"></a>
-<span class="sourceLineNo">2851</span>      int listSize = cells.size();<a name="line.2851"></a>
-<span class="sourceLineNo">2852</span>      for (int i=0; i &lt; listSize; i++) {<a name="line.2852"></a>
-<span class="sourceLineNo">2853</span>        Cell cell = cells.get(i);<a name="line.2853"></a>
-<span class="sourceLineNo">2854</span>        //  Check if time is LATEST, change to time of most recent addition if so<a name="line.2854"></a>
-<span class="sourceLineNo">2855</span>        //  This is expensive.<a name="line.2855"></a>
-<span class="sourceLineNo">2856</span>        if (cell.getTimestamp() == HConstants.LATEST_TIMESTAMP<a name="line.2856"></a>
-<span class="sourceLineNo">2857</span>            &amp;&amp; PrivateCellUtil.isDeleteType(cell)) {<a name="line.2857"></a>
-<span class="sourceLineNo">2858</span>          byte[] qual = CellUtil.cloneQualifier(cell);<a name="line.2858"></a>
-<span class="sourceLineNo">2859</span><a name="line.2859"></a>
-<span class="sourceLineNo">2860</span>          Integer count = kvCount.get(qual);<a name="line.2860"></a>
-<span class="sourceLineNo">2861</span>          if (count == null) {<a name="line.2861"></a>
-<span class="sourceLineNo">2862</span>            kvCount.put(qual, 1);<a name="line.2862"></a>
-<span class="sourceLineNo">2863</span>          } else {<a name="line.2863"></a>
-<span class="sourceLineNo">2864</span>            kvCount.put(qual, count + 1);<a name="line.2864"></a>
-<span class="sourceLineNo">2865</span>          }<a name="line.2865"></a>
-<span class="sourceLineNo">2866</span>          count = kvCount.get(qual);<a name="line.2866"></a>
-<span class="sourceLineNo">2867</span><a name="line.2867"></a>
-<span class="sourceLineNo">2868</span>          Get get = new Get(CellUtil.cloneRow(cell));<a name="line.2868"></a>
-<span class="sourceLineNo">2869</span>          get.setMaxVersions(count);<a name="line.2869"></a>
-<span class="sourceLineNo">2870</span>          get.addColumn(family, qual);<a name="line.2870"></a>
-<span class="sourceLineNo">2871</span>          if (coprocessorHost != null) {<a name="line.2871"></a>
-<span class="sourceLineNo">2872</span>            if (!coprocessorHost.prePrepareTimeStampForDeleteVersion(mutation, cell,<a name="line.2872"></a>
-<span class="sourceLineNo">2873</span>                byteNow, get)) {<a name="line.2873"></a>
-<span class="sourceLineNo">2874</span>              updateDeleteLatestVersionTimeStamp(cell, get, count, byteNow);<a name="line.2874"></a>
-<span class="sourceLineNo">2875</span>            }<a name="line.2875"></a>
-<span class="sourceLineNo">2876</span>          } else {<a name="line.2876"></a>
-<span class="sourceLineNo">2877</span>            updateDeleteLatestVersionTimeStamp(cell, get, count, byteNow);<a name="line.2877"></a>
-<span class="sourceLineNo">2878</span>          }<a name="line.2878"></a>
-<span class="sourceLineNo">2879</span>        } else {<a name="line.2879"></a>
-<span class="sourceLineNo">2880</span>          PrivateCellUtil.updateLatestStamp(cell, byteNow, 0);<a name="line.2880"></a>
-<span class="sourceLineNo">2881</span>        }<a name="line.2881"></a>
-<span class="sourceLineNo">2882</span>      }<a name="line.2882"></a>
-<span class="sourceLineNo">2883</span>    }<a name="line.2883"></a>
-<span class="sourceLineNo">2884</span>  }<a name="line.2884"></a>
-<span class="sourceLineNo">2885</span><a name="line.2885"></a>
-<span class="sourceLineNo">2886</span>  void updateDeleteLatestVersionTimeStamp(Cell cell, Get get, int count, byte[] byteNow)<a name="line.2886"></a>
-<span class="sourceLineNo">2887</span>      throws IOException {<a name="line.2887"></a>
-<span class="sourceLineNo">2888</span>    List&lt;Cell&gt; result = get(get, false);<a name="line.2888"></a>
-<span class="sourceLineNo">2889</span><a name="line.2889"></a>
-<span class="sourceLineNo">2890</span>    if (result.size() &lt; count) {<a name="line.2890"></a>
-<span class="sourceLineNo">2891</span>      // Nothing to delete<a name="line.2891"></a>
-<span class="sourceLineNo">2892</span>      PrivateCellUtil.updateLatestStamp(cell, byteNow, 0);<a name="line.2892"></a>
-<span class="sourceLineNo">2893</span>      return;<a name="line.2893"></a>
-<span class="sourceLineNo">2894</span>    }<a name="line.2894"></a>
-<span class="sourceLineNo">2895</span>    if (result.size() &gt; count) {<a name="line.2895"></a>
-<span class="sourceLineNo">2896</span>      throw new RuntimeException("Unexpected size: " + result.size());<a name="line.2896"></a>
-<span class="sourceLineNo">2897</span>    }<a name="line.2897"></a>
-<span class="sourceLineNo">2898</span>    Cell getCell = result.get(count - 1);<a name="line.2898"></a>
-<span class="sourceLineNo">2899</span>    PrivateCellUtil.setTimestamp(cell, getCell.getTimestamp());<a name="line.2899"></a>
-<span class="sourceLineNo">2900</span>  }<a name="line.2900"></a>
-<span class="sourceLineNo">2901</span><a name="line.2901"></a>
-<span class="sourceLineNo">2902</span>  @Override<a name="line.2902"></a>
-<span class="sourceLineNo">2903</span>  public void put(Put put) throws IOException {<a name="line.2903"></a>
-<span class="sourceLineNo">2904</span>    checkReadOnly();<a name="line.2904"></a>
-<span class="sourceLineNo">2905</span><a name="line.2905"></a>
-<span class="sourceLineNo">2906</span>    // Do a rough check that we have resources to accept a write.  The check is<a name="line.2906"></a>
-<span class="sourceLineNo">2907</span>    // 'rough' in that between the resource check and the call to obtain a<a name="line.2907"></a>
-<span class="sourceLineNo">2908</span>    // read lock, resources may run out.  For now, the thought is that this<a name="line.2908"></a>
-<span class="sourceLineNo">2909</span>    // will be extremely rare; we'll deal with it when it happens.<a name="line.2909"></a>
-<span class="sourceLineNo">2910</span>    checkResources();<a name="line.2910"></a>
-<span class="sourceLineNo">2911</span>    startRegionOperation(Operation.PUT);<a name="line.2911"></a>
-<span class="sourceLineNo">2912</span>    try {<a name="line.2912"></a>
-<span class="sourceLineNo">2913</span>      // All edits for the given row (across all column families) must happen atomically.<a name="line.2913"></a>
-<span class="sourceLineNo">2914</span>      doBatchMutate(put);<a name="line.2914"></a>
-<span class="sourceLineNo">2915</span>    } finally {<a name="line.2915"></a>
-<span class="sourceLineNo">2916</span>      closeRegionOperation(Operation.PUT);<a name="line.2916"></a>
-<span class="sourceLineNo">2917</span>    }<a name="line.2917"></a>
-<span class="sourceLineNo">2918</span>  }<a name="line.2918"></a>
-<span class="sourceLineNo">2919</span><a name="line.2919"></a>
-<span class="sourceLineNo">2920</span>  /**<a name="line.2920"></a>
-<span class="sourceLineNo">2921</span>   * Class that tracks the progress of a batch operations, accumulating status codes and tracking<a name="line.2921"></a>
-<span class="sourceLineNo">2922</span>   * the index at which processing is proceeding. These batch operations may get split into<a name="line.2922"></a>
-<span class="sourceLineNo">2923</span>   * mini-batches for processing.<a name="line.2923"></a>
-<span class="sourceLineNo">2924</span>   */<a name="line.2924"></a>
-<span class="sourceLineNo">2925</span>  private abstract static class BatchOperation&lt;T&gt; {<a name="line.2925"></a>
-<span class="sourceLineNo">2926</span>    protected final T[] operations;<a name="line.2926"></a>
-<span class="sourceLineNo">2927</span>    protected final OperationStatus[] retCodeDetails;<a name="line.2927"></a>
-<span class="sourceLineNo">2928</span>    protected final WALEdit[] walEditsFromCoprocessors;<a name="line.2928"></a>
-<span class="sourceLineNo">2929</span>    // reference family cell maps directly so coprocessors can mutate them if desired<a name="line.2929"></a>
-<span class="sourceLineNo">2930</span>    protected final Map&lt;byte[], List&lt;Cell&gt;&gt;[] familyCellMaps;<a name="line.2930"></a>
-<span class="sourceLineNo">2931</span><a name="line.2931"></a>
-<span class="sourceLineNo">2932</span>    protected final HRegion region;<a name="line.2932"></a>
-<span class="sourceLineNo">2933</span>    protected int nextIndexToProcess = 0;<a name="line.2933"></a>
-<span class="sourceLineNo">2934</span>    protected final ObservedExceptionsInBatch observedExceptions;<a name="line.2934"></a>
-<span class="sourceLineNo">2935</span>    //Durability of the batch (highest durability of all operations)<a name="line.2935"></a>
-<span class="sourceLineNo">2936</span>    protected Durability durability;<a name="line.2936"></a>
-<span class="sourceLineNo">2937</span>    protected boolean atomic = false;<a name="line.2937"></a>
-<span class="sourceLineNo">2938</span><a name="line.2938"></a>
-<span class="sourceLineNo">2939</span>    public BatchOperation(final HRegion region, T[] operations) {<a name="line.2939"></a>
-<span class="sourceLineNo">2940</span>      this.operations = operations;<a name="line.2940"></a>
-<span class="sourceLineNo">2941</span>      this.retCodeDetails = new OperationStatus[operations.length];<a name="line.2941"></a>
-<span class="sourceLineNo">2942</span>      Arrays.fill(this.retCodeDetails, OperationStatus.NOT_RUN);<a name="line.2942"></a>
-<span class="sourceLineNo">2943</span>      this.walEditsFromCoprocessors = new WALEdit[operations.length];<a name="line.2943"></a>
-<span class="sourceLineNo">2944</span>      familyCellMaps = new Map[operations.length];<a name="line.2944"></a>
-<span class="sourceLineNo">2945</span><a name="line.2945"></a>
-<span class="sourceLineNo">2946</span>      this.region = region;<a name="line.2946"></a>
-<span class="sourceLineNo">2947</span>      observedExceptions = new ObservedExceptionsInBatch();<a name="line.2947"></a>
-<span class="sourceLineNo">2948</span>      durability = Durability.USE_DEFAULT;<a name="line.2948"></a>
-<span class="sourceLineNo">2949</span>    }<a name="line.2949"></a>
-<span class="sourceLineNo">2950</span><a name="line.2950"></a>
-<span class="sourceLineNo">2951</span>    /**<a name="line.2951"></a>
-<span class="sourceLineNo">2952</span>     * Visitor interface for batch operations<a name="line.2952"></a>
-<span class="sourceLineNo">2953</span>     */<a name="line.2953"></a>
-<span class="sourceLineNo">2954</span>    @FunctionalInterface<a name="line.2954"></a>
-<span class="sourceLineNo">2955</span>    public interface Visitor {<a name="line.2955"></a>
-<span class="sourceLineNo">2956</span>      /**<a name="line.2956"></a>
-<span class="sourceLineNo">2957</span>       * @param index operation index<a name="line.2957"></a>
-<span class="sourceLineNo">2958</span>       * @return If true continue visiting remaining entries, break otherwise<a name="line.2958"></a>
-<span class="sourceLineNo">2959</span>       */<a name="line.2959"></a>
-<span class="sourceLineNo">2960</span>      boolean visit(int index) throws IOException;<a name="line.2960"></a>
-<span class="sourceLineNo">2961</span>    }<a name="line.2961"></a>
-<span class="sourceLineNo">2962</span><a name="line.2962"></a>
-<span class="sourceLineNo">2963</span>    /**<a name="line.2963"></a>
-<span class="sourceLineNo">2964</span>     * Helper method for visiting pending/ all batch operations<a name="line.2964"></a>
-<span class="sourceLineNo">2965</span>     */<a name="line.2965"></a>
-<span class="sourceLineNo">2966</span>    public void visitBatchOperations(boolean pendingOnly, int lastIndexExclusive, Visitor visitor)<a name="line.2966"></a>
-<span class="sourceLineNo">2967</span>        throws IOException {<a name="line.2967"></a>
-<span class="sourceLineNo">2968</span>      assert lastIndexExclusive &lt;= this.size();<a name="line.2968"></a>
-<span class="sourceLineNo">2969</span>      for (int i = nextIndexToProcess; i &lt; lastIndexExclusive; i++) {<a name="line.2969"></a>
-<span class="sourceLineNo">2970</span>        if (!pendingOnly || isOperationPending(i)) {<a name="line.2970"></a>
-<span class="sourceLineNo">2971</span>          if (!visitor.visit(i)) {<a name="line.2971"></a>
-<span class="sourceLineNo">2972</span>            break;<a name="line.2972"></a>
-<span class="sourceLineNo">2973</span>          }<a name="line.2973"></a>
-<span class="sourceLineNo">2974</span>        }<a name="line.2974"></a>
-<span class="sourceLineNo">2975</span>      }<a name="line.2975"></a>
-<span class="sourceLineNo">2976</span>    }<a name="line.2976"></a>
-<span class="sourceLineNo">2977</span><a name="line.2977"></a>
-<span class="sourceLineNo">2978</span>    public abstract Mutation getMutation(int index);<a name="line.2978"></a>
-<span class="sourceLineNo">2979</span>    public abstract long getNonceGroup(int index);<a name="line.2979"></a>
-<span class="sourceLineNo">2980</span>    public abstract long getNonce(int index);<a name="line.2980"></a>
-<span class="sourceLineNo">2981</span>    /** This method is potentially expensive and useful mostly for non-replay CP path. */<a name="line.2981"></a>
-<span class="sourceLineNo">2982</span>    public abstract Mutation[] getMutationsForCoprocs();<a name="line.2982"></a>
-<span class="sourceLineNo">2983</span>    public abstract boolean isInReplay();<a name="line.2983"></a>
-<span class="sourceLineNo">2984</span>    public abstract long getOrigLogSeqNum();<a name="line.2984"></a>
-<span class="sourceLineNo">2985</span>    public abstract void startRegionOperation() throws IOException;<a name="line.2985"></a>
-<span class="sourceLineNo">2986</span>    public abstract void closeRegionOperation() throws IOException;<a name="line.2986"></a>
-<span class="sourceLineNo">2987</span><a name="line.2987"></a>
-<span class="sourceLineNo">2988</span>    /**<a name="line.2988"></a>
-<span class="sourceLineNo">2989</span>     * Validates each mutation and prepares a batch for write. If necessary (non-replay case), runs<a name="line.2989"></a>
-<span class="sourceLineNo">2990</span>     * CP prePut()/ preDelete() hooks for all mutations in a batch. This is intended to operate on<a name="line.2990"></a>
-<span class="sourceLineNo">2991</span>     * entire batch and will be called from outside of class to check and prepare batch. This can<a name="line.2991"></a>
-<span class="sourceLineNo">2992</span>     * be implemented by calling helper method {@link #checkAndPrepareMutation(int, long)} in a<a name="line.2992"></a>
-<span class="sourceLineNo">2993</span>     * 'for' loop over mutations.<a name="line.2993"></a>
-<span class="sourceLineNo">2994</span>     */<a name="line.2994"></a>
-<span class="sourceLineNo">2995</span>    public abstract void checkAndPrepare() throws IOException;<a name="line.2995"></a>
-<span class="sourceLineNo">2996</span><a name="line.2996"></a>
-<span class="sourceLineNo">2997</span>    /**<a name="line.2997"></a>
-<span class="sourceLineNo">2998</span>     * Implement any Put request specific check and prepare logic here. Please refer to<a name="line.2998"></a>
-<span class="sourceLineNo">2999</span>     * {@link #checkAndPrepareMutation(Mutation, long)} for how its used.<a name="line.2999"></a>
-<span class="sourceLineNo">3000</span>     */<a name="line.3000"></a>
-<span class="sourceLineNo">3001</span>    protected abstract void checkAndPreparePut(final Put p) throws IOException;<a name="line.3001"></a>
-<span class="sourceLineNo">3002</span><a name="line.3002"></a>
-<span class="sourceLineNo">3003</span>    /**<a name="line.3003"></a>
-<span class="sourceLineNo">3004</span>     *  If necessary, calls preBatchMutate() CP hook for a mini-batch and updates metrics, cell<a name="line.3004"></a>
-<span class="sourceLineNo">3005</span>     *  count, tags and timestamp for all cells of all operations in a mini-batch.<a name="line.3005"></a>
-<span class="sourceLineNo">3006</span>     */<a name="line.3006"></a>
-<span class="sourceLineNo">3007</span>    public abstract void prepareMiniBatchOperations(MiniBatchOperationInProgress&lt;Mutation&gt;<a name="line.3007"></a>
-<span class="sourceLineNo">3008</span>        miniBatchOp, long timestamp, final List&lt;RowLock&gt; acquiredRowLocks) throws IOException;<a name="line.3008"></a>
-<span class="sourceLineNo">3009</span><a name="line.3009"></a>
-<span class="sourceLineNo">3010</span>    /**<a name="line.3010"></a>
-<span class="sourceLineNo">3011</span>     * Write mini-batch operations to MemStore<a name="line.3011"></a>
-<span class="sourceLineNo">3012</span>     */<a name="line.3012"></a>
-<span class="sourceLineNo">3013</span>    public abstract WriteEntry writeMiniBatchOperationsToMemStore(<a name="line.3013"></a>
-<span class="sourceLineNo">3014</span>        final MiniBatchOperationInProgress&lt;Mutation&gt; miniBatchOp, final WriteEntry writeEntry)<a name="line.3014"></a>
-<span class="sourceLineNo">3015</span>        throws IOException;<a name="line.3015"></a>
-<span class="sourceLineNo">3016</span><a name="line.3016"></a>
-<span class="sourceLineNo">3017</span>    protected void writeMiniBatchOperationsToMemStore(<a name="line.3017"></a>
-<span class="sourceLineNo">3018</span>        final MiniBatchOperationInProgress&lt;Mutation&gt; miniBatchOp, final long writeNumber)<a name="line.3018"></a>
-<span class="sourceLineNo">3019</span>        throws IOException {<a name="line.3019"></a>
-<span class="sourceLineNo">3020</span>      MemStoreSizing memStoreAccounting = new MemStoreSizing();<a name="line.3020"></a>
-<span class="sourceLineNo">3021</span>      visitBatchOperations(true, miniBatchOp.getLastIndexExclusive(), (int index) -&gt; {<a name="line.3021"></a>
-<span class="sourceLineNo">3022</span>        // We need to update the sequence id for following reasons.<a name="line.3022"></a>
-<span class="sourceLineNo">3023</span>        // 1) If the op is in replay mode, FSWALEntry#stampRegionSequenceId won't stamp sequence id.<a name="line.3023"></a>
-<span class="sourceLineNo">3024</span>        // 2) If no WAL, FSWALEntry won't be used<a name="line.3024"></a>
-<span class="sourceLineNo">3025</span>        // we use durability of the original mutation for the mutation passed by CP.<a name="line.3025"></a>
-<span class="sourceLineNo">3026</span>        if (isInReplay() || getMutation(index).getDurability() == Durability.SKIP_WAL) {<a name="line.3026"></a>
-<span class="sourceLineNo">3027</span>          region.updateSequenceId(familyCellMaps[index].values(), writeNumber);<a name="line.3027"></a>
-<span class="sourceLineNo">3028</span>        }<a name="line.3028"></a>
-<span class="sourceLineNo">3029</span>        applyFamilyMapToMemStore(familyCellMaps[index], memStoreAccounting);<a name="line.3029"></a>
-<span class="sourceLineNo">3030</span>        return true;<a name="line.3030"></a>
-<span class="sourceLineNo">3031</span>      });<a name="line.3031"></a>
-<span class="sourceLineNo">3032</span>      // update memStore size<a name="line.3032"></a>
-<span class="sourceLineNo">3033</span>      region.addAndGetMemStoreSize(memStoreAccounting);<a name="line.3033"></a>
-<span class="sourceLineNo">3034</span>    }<a name="line.3034"></a>
-<span class="sourceLineNo">3035</span><a name="line.3035"></a>
-<span class="sourceLineNo">3036</span>    public boolean isDone() {<a name="line.3036"></a>
-<span class="sourceLineNo">3037</span>      return nextIndexToProcess == operations.length;<a name="line.3037"></a>
-<span class="sourceLineNo">3038</span>    }<a name="line.3038"></a>
-<span class="sourceLineNo">3039</span><a name="line.3039"></a>
-<span class="sourceLineNo">3040</span>    public int size() {<a name="line.3040"></a>
-<span class="sourceLineNo">3041</span>      return operations.length;<a name="line.3041"></a>
-<span class="sourceLineNo">3042</span>    }<a name="line.3042"></a>
-<span class="sourceLineNo">3043</span><a name="line.3043"></a>
-<span class="sourceLineNo">3044</span>    public boolean isOperationPending(int index) {<a name="line.3044"></a>
-<span class="sourceLineNo">3045</span>      return retCodeDetails[index].getOperationStatusCode() == OperationStatusCode.NOT_RUN;<a name="line.3045"></a>
-<span class="sourceLineNo">3046</span>    }<a name="line.3046"></a>
-<span class="sourceLineNo">3047</span><a name="line.3047"></a>
-<span class="sourceLineNo">3048</span>    public List&lt;UUID&gt; getClusterIds() {<a name="line.3048"></a>
-<span class="sourceLineNo">3049</span>      assert size() != 0;<a name="line.3049"></a>
-<span class="sourceLineNo">3050</span>      return getMutation(0).getClusterIds();<a name="line.3050"></a>
-<span class="sourceLineNo">3051</span>    }<a name="line.3051"></a>
-<span class="sourceLineNo">3052</span><a name="line.3052"></a>
-<span class="sourceLineNo">3053</span>    boolean isAtomic() {<a name="line.3053"></a>
-<span class="sourceLineNo">3054</span>      return atomic;<a name="line.3054"></a>
-<span class="sourceLineNo">3055</span>    }<a name="line.3055"></a>
-<span class="sourceLineNo">3056</span><a name="line.3056"></a>
-<span class="sourceLineNo">3057</span>    /**<a name="line.3057"></a>
-<span class="sourceLineNo">3058</span>     * Helper method that checks and prepares only one mutation. This can be used to implement<a name="line.3058"></a>
-<span class="sourceLineNo">3059</span>     * {@link #checkAndPrepare()} for entire Batch.<a name="line.3059"></a>
-<span class="sourceLineNo">3060</span>     * NOTE: As CP prePut()/ preDelete() hooks may modify mutations, this method should be called<a name="line.3060"></a>
-<span class="sourceLineNo">3061</span>     * after prePut()/ preDelete() CP hooks are run for the mutation<a name="line.3061"></a>
-<span class="sourceLineNo">3062</span>     */<a name="line.3062"></a>
-<span class="sourceLineNo">3063</span>    protected void checkAndPrepareMutation(Mutation mutation, final long timestamp)<a name="line.3063"></a>
-<span class="sourceLineNo">3064</span>        throws IOException {<a name="line.3064"></a>
-<span class="sourceLineNo">3065</span>      region.checkRow(mutation.getRow(), "batchMutate");<a name="line.3065"></a>
-<span class="sourceLineNo">3066</span>      if (mutation instanceof Put) {<a name="line.3066"></a>
-<span class="sourceLineNo">3067</span>        // Check the families in the put. If bad, skip this one.<a name="line.3067"></a>
-<span class="sourceLineNo">3068</span>        checkAndPreparePut((Put) mutation);<a name="line.3068"></a>
-<span class="sourceLineNo">3069</span>        region.checkTimestamps(mutation.getFamilyCellMap(), timestamp);<a name="line.3069"></a>
-<span class="sourceLineNo">3070</span>      } else {<a name="line.3070"></a>
-<span class="sourceLineNo">3071</span>        region.prepareDelete((Delete) mutation);<a name="line.3071"></a>
-<span class="sourceLineNo">3072</span>      }<a name="line.3072"></a>
-<span class="sourceLineNo">3073</span>    }<a name="line.3073"></a>
-<span class="sourceLineNo">3074</span><a name="line.3074"></a>
-<span class="sourceLineNo">3075</span>    protected void checkAndPrepareMutation(int index, long timestamp) throws IOException {<a name="line.3075"></a>
-<span class="sourceLineNo">3076</span>      Mutation mutation = getMutation(index);<a name="line.3076"></a>
-<span class="sourceLineNo">3077</span>      try {<a name="line.3077"></a>
-<span class="sourceLineNo">3078</span>        this.checkAndPrepareMutation(mutation, timestamp);<a name="line.3078"></a>
-<span class="sourceLineNo">3079</span><a name="line.3079"></a>
-<span class="sourceLineNo">3080</span>        // store the family map reference to allow for mutations<a name="line.3080"></a>
-<span class="sourceLineNo">3081</span>        familyCellMaps[index] = mutation.getFamilyCellMap();<a name="line.3081"></a>
-<span class="sourceLineNo">3082</span>        // store durability for the batch (highest durability of all operations in the batch)<a name="line.3082"></a>
-<span class="sourceLineNo">3083</span>        Durability tmpDur = region.getEffectiveDurability(mutation.getDurability());<a name="line.3083"></a>
-<span class="sourceLineNo">3084</span>        if (tmpDur.ordinal() &gt; durability.ordinal()) {<a name="line.3084"></a>
-<span class="sourceLineNo">3085</span>          durability = tmpDur;<a name="line.3085"></a>
-<span class="sourceLineNo">3086</span>        }<a name="line.3086"></a>
-<span class="sourceLineNo">3087</span>      } catch (NoSuchColumnFamilyException nscfe) {<a name="line.3087"></a>
-<span class="sourceLineNo">3088</span>        final String msg = "No such column family in batch mutation. ";<a name="line.3088"></a>
-<span class="sourceLineNo">3089</span>        if (observedExceptions.hasSeenNoSuchFamily()) {<a name="line.3089"></a>
-<span class="sourceLineNo">3090</span>          LOG.warn(msg + nscfe.getMessage());<a name="line.3090"></a>
-<span class="sourceLineNo">3091</span>        } else {<a name="line.3091"></a>
-<span class="sourceLineNo">3092</span>          LOG.warn(msg, nscfe);<a name="line.3092"></a>
-<span class="sourceLineNo">3093</span>          observedExceptions.sawNoSuchFamily();<a name="line.3093"></a>
-<span class="sourceLineNo">3094</span>        }<a name="line.3094"></a>
-<span class="sourceLineNo">3095</span>        retCodeDetails[index] = new OperationStatus(<a name="line.3095"></a>
-<span class="sourceLineNo">3096</span>            OperationStatusCode.BAD_FAMILY, nscfe.getMessage());<a name="line.3096"></a>
-<span class="sourceLineNo">3097</span>        if (isAtomic()) { // fail, atomic means all or none<a name="line.3097"></a>
-<span class="sourceLineNo">3098</span>          throw nscfe;<a name="line.3098"></a>
-<span class="sourceLineNo">3099</span>        }<a name="line.3099"></a>
-<span class="sourceLineNo">3100</span>      } catch (FailedSanityCheckException fsce) {<a name="line.3100"></a>
-<span class="sourceLineNo">3101</span>        final String msg = "Batch Mutation did not pass sanity check. ";<a name="line.3101"></a>
-<span class="sourceLineNo">3102</span>        if (observedExceptions.hasSeenFailedSanityCheck()) {<a name="line.3102"></a>
-<span class="sourceLineNo">3103</span>          LOG.warn(msg + fsce.getMessage());<a name="line.3103"></a>
-<span class="sourceLineNo">3104</span>        } else {<a name="line.3104"></a>
-<span class="sourceLineNo">3105</span>          LOG.warn(msg, fsce);<a name="line.3105"></a>
-<span class="sourceLineNo">3106</span>          observedExceptions.sawFailedSanityCheck();<a name="line.3106"></a>
-<span class="sourceLineNo">3107</span>        }<a name="line.3107"></a>
-<span class="sourceLineNo">3108</span>        retCodeDetails[index] = new OperationStatus(<a name="line.3108"></a>
-<span class="sourceLineNo">3109</span>            OperationStatusCode.SANITY_CHECK_FAILURE, fsce.getMessage());<a name="line.3109"></a>
-<span class="sourceLineNo">3110</span>        if (isAtomic()) {<a name="line.3110"></a>
-<span class="sourceLineNo">3111</span>          throw fsce;<a name="line.3111"></a>
-<span class="sourceLineNo">3112</span>        }<a name="line.3112"></a>
-<span class="sourceLineNo">3113</span>      } catch (WrongRegionException we) {<a name="line.3113"></a>
-<span class="sourceLineNo">3114</span>        final String msg = "Batch mutation had a row that does not belong to this region. ";<a name="line.3114"></a>
-<span class="sourceLineNo">3115</span>        if (observedExceptions.hasSeenWrongRegion()) {<a name="line.3115"></a>
-<span class="sourceLineNo">3116</span>          LOG.warn(msg + we.getMessage());<a name="line.3116"></a>
-<span class="sourceLineNo">3117</span>        } else {<a name="line.3117"></a>
-<span class="sourceLineNo">3118</span>          LOG.warn(msg, we);<a name="line.3118"></a>
-<span class="sourceLineNo">3119</span>          observedExceptions.sawWrongRegion();<a name="line.3119"></a>
-<span class="sourceLineNo">3120</span>        }<a name="line.3120"></a>
-<span class="sourceLineNo">3121</span>        retCodeDetails[index] = new OperationStatus(<a name="line.3121"></a>
-<span class="sourceLineNo">3122</span>            OperationStatusCode.SANITY_CHECK_FAILURE, we.getMessage());<a name="line.3122"></a>
-<span class="sourceLineNo">3123</span>        if (isAtomic()) {<a name="line.3123"></a>
-<span class="sourceLineNo">3124</span>          throw we;<a name="line.3124"></a>
-<span class="sourceLineNo">3125</span>        }<a name="line.3125"></a>
-<span class="sourceLineNo">3126</span>      }<a name="line.3126"></a>
-<span class="sourceLineNo">3127</span>    }<a name="line.3127"></a>
-<span class="sourceLineNo">3128</span><a name="line.3128"></a>
-<span class="sourceLineNo">3129</span>    /**<a name="line.3129"></a>
-<span class="sourceLineNo">3130</span>     * Creates Mini-batch of all operations [nextIndexToProcess, lastIndexExclusive) for which<a name="line.3130"></a>
-<span class="sourceLineNo">3131</span>     * a row lock can be acquired. All mutations with locked rows are considered to be<a name="line.3131"></a>
-<span class="sourceLineNo">3132</span>     * In-progress operations and hence the name {@link MiniBatchOperationInProgress}. Mini batch<a name="line.3132"></a>
-<span class="sourceLineNo">3133</span>     * is window over {@link BatchOperation} and contains contiguous pending operations.<a name="line.3133"></a>
-<span class="sourceLineNo">3134</span>     *<a name="line.3134"></a>
-<span class="sourceLineNo">3135</span>     * @param acquiredRowLocks keeps track of rowLocks acquired.<a name="line.3135"></a>
-<span class="sourceLineNo">3136</span>     */<a name="line.3136"></a>
-<span class="sourceLineNo">3137</span>    public MiniBatchOperationInProgress&lt;Mutation&gt; lockRowsAndBuildMiniBatch(<a name="line.3137"></a>
-<span class="sourceLineNo">3138</span>        List&lt;RowLock&gt; acquiredRowLocks) throws IOException {<a name="line.3138"></a>
-<span class="sourceLineNo">3139</span>      int readyToWriteCount = 0;<a name="line.3139"></a>
-<span class="sourceLineNo">3140</span>      int lastIndexExclusive = 0;<a name="line.3140"></a>
-<span class="sourceLineNo">3141</span>      for (; lastIndexExclusive &lt; size(); lastIndexExclusive++) {<a name="line.3141"></a>
-<span class="sourceLineNo">3142</span>        if (!isOperationPending(lastIndexExclusive)) {<a name="line.3142"></a>
-<span class="sourceLineNo">3143</span>          continue;<a name="line.3143"></a>
-<span class="sourceLineNo">3144</span>        }<a name="line.3144"></a>
-<span class="sourceLineNo">3145</span>        Mutation mutation = getMutation(lastIndexExclusive);<a name="line.3145"></a>
-<span class="sourceLineNo">3146</span>        // If we haven't got any rows in our batch, we should block to get the next one.<a name="line.3146"></a>
-<span class="sourceLineNo">3147</span>        RowLock rowLock = null;<a name="line.3147"></a>
-<span class="sourceLineNo">3148</span>        try {<a name="line.3148"></a>
-<span class="sourceLineNo">3149</span>          // if atomic then get exclusive lock, else shared lock<a name="line.3149"></a>
-<span class="sourceLineNo">3150</span>          rowLock = region.getRowLockInternal(mutation.getRow(), !isAtomic());<a name="line.3150"></a>
-<span class="sourceLineNo">3151</span>        } catch (TimeoutIOException e) {<a name="line.3151"></a>
-<span class="sourceLineNo">3152</span>          // We will retry when other exceptions, but we should stop if we timeout .<a name="line.3152"></a>
-<span class="sourceLineNo">3153</span>          throw e;<a name="line.3153"></a>
-<span class="sourceLineNo">3154</span>        } catch (IOException ioe) {<a name="line.3154"></a>
-<span class="sourceLineNo">3155</span>          LOG.warn("Failed getting lock, row=" + Bytes.toStringBinary(mutation.getRow()), ioe);<a name="line.3155"></a>
-<span class="sourceLineNo">3156</span>          if (isAtomic()) { // fail, atomic means all or none<a name="line.3156"></a>
-<span class="sourceLineNo">3157</span>            throw ioe;<a name="line.3157"></a>
-<span class="sourceLineNo">3158</span>          }<a name="line.3158"></a>
-<span class="sourceLineNo">3159</span>        }<a name="line.3159"></a>
-<span class="sourceLineNo">3160</span>        if (rowLock == null) {<a name="line.3160"></a>
-<span class="sourceLineNo">3161</span>          // We failed to grab another lock<a name="line.3161"></a>
-<span class="sourceLineNo">3162</span>          if (isAtomic()) {<a name="line.3162"></a>
-<span class="sourceLineNo">3163</span>            throw new IOException("Can't apply all operations atomically!");<a name="line.3163"></a>
-<span class="sourceLineNo">3164</span>          }<a name="line.3164"></a>
-<span class="sourceLineNo">3165</span>          break; // Stop acquiring more rows for this batch<a name="line.3165"></a>
-<span class="sourceLineNo">3166</span>        } else {<a name="line.3166"></a>
-<span class="sourceLineNo">3167</span>          acquiredRowLocks.add(rowLock);<a name="line.3167"></a>
-<span class="sourceLineNo">3168</span>        }<a name="line.3168"></a>
-<span class="sourceLineNo">3169</span>        readyToWriteCount++;<a name="line.3169"></a>
-<span class="sourceLineNo">3170</span>      }<a name="line.3170"></a>
-<span class="sourceLineNo">3171</span>      return createMiniBatch(lastIndexExclusive, readyToWriteCount);<a name="line.3171"></a>
-<span class="sourceLineNo">3172</span>    }<a name="line.3172"></a>
-<span class="sourceLineNo">3173</span><a name="line.3173"></a>
-<span class="sourceLineNo">3174</span>    protected MiniBatchOperationInProgress&lt;Mutation&gt; createMiniBatch(final int lastIndexExclusive,<a name="line.3174"></a>
-<span class="sourceLineNo">3175</span>        final int readyToWriteCount) {<a name="line.3175"></a>
-<span class="sourceLineNo">3176</span>      return new MiniBatchOperationInProgress&lt;&gt;(getMutationsForCoprocs(), retCodeDetails,<a name="line.3176"></a>
-<span class="sourceLineNo">3177</span>          walEditsFromCoprocessors, nextIndexToProcess, lastIndexExclusive, readyToWriteCount);<a name="line.3177"></a>
-<span class="sourceLineNo">3178</span>    }<a name="line.3178"></a>
-<span class="sourceLineNo">3179</span><a name="line.3179"></a>
-<span class="sourceLineNo">3180</span>    /**<a name="line.3180"></a>
-<span class="sourceLineNo">3181</span>     * Builds separate WALEdit per nonce by applying input mutations. If WALEdits from CP are<a name="line.3181"></a>
-<span class="sourceLineNo">3182</span>     * present, they are merged to result WALEdit.<a name="line.3182"></a>
-<span class="sourceLineNo">3183</span>     */<a name="line.3183"></a>
-<span class="sourceLineNo">3184</span>    public List&lt;Pair&lt;NonceKey, WALEdit&gt;&gt; buildWALEdits(<a name="line.3184"></a>
-<span class="sourceLineNo">3185</span>        final MiniBatchOperationInProgress&lt;Mutation&gt; miniBatchOp) throws IOException {<a name="line.3185"></a>
-<span class="sourceLineNo">3186</span>      List&lt;Pair&lt;NonceKey, WALEdit&gt;&gt; walEdits = new ArrayList&lt;&gt;();<a name="line.3186"></a>
-<span class="sourceLineNo">3187</span><a name="line.3187"></a>
-<span class="sourceLineNo">3188</span>      visitBatchOperations(true, nextIndexToProcess + miniBatchOp.size(), new Visitor() {<a name="line.3188"></a>
-<span class="sourceLineNo">3189</span>        private Pair&lt;NonceKey, WALEdit&gt; curWALEditForNonce;<a name="line.3189"></a>
-<span class="sourceLineNo">3190</span>        @Override<a name="line.3190"></a>
-<span class="sourceLineNo">3191</span>        public boolean visit(int index) throws IOException {<a name="line.3191"></a>
-<span class="sourceLineNo">3192</span>          Mutation m = getMutation(index);<a name="line.3192"></a>
-<span class="sourceLineNo">3193</span>          // we use durability of the original mutation for the mutation passed by CP.<a name="line.3193"></a>
-<span class="sourceLineNo">3194</span>          if (region.getEffectiveDurability(m.getDurability()) == Durability.SKIP_WAL) {<a name="line.3194"></a>
-<span class="sourceLineNo">3195</span>            region.recordMutationWithoutWal(m.getFamilyCellMap());<a name="line.3195"></a>
-<span class="sourceLineNo">3196</span>            return true;<a name="line.3196"></a>
-<span class="sourceLineNo">3197</span>          }<a name="line.3197"></a>
-<span class="sourceLineNo">3198</span><a name="line.3198"></a>
-<span class="sourceLineNo">3199</span>          // the batch may contain multiple nonce keys (replay case). If so, write WALEdit for each.<a name="line.3199"></a>
-<span class="sourceLineNo">3200</span>          // Given how nonce keys are originally written, these should be contiguous.<a name="line.3200"></a>
-<span class="sourceLineNo">3201</span>          // They don't have to be, it will still work, just write more WALEdits than needed.<a name="line.3201"></a>
-<span class="sourceLineNo">3202</span>          long nonceGroup = getNonceGroup(index);<a name="line.3202"></a>
-<span class="sourceLineNo">3203</span>          long nonce = getNonce(index);<a name="line.3203"></a>
-<span class="sourceLineNo">3204</span>          if (curWALEditForNonce == null ||<a name="line.3204"></a>
-<span class="sourceLineNo">3205</span>              curWALEditForNonce.getFirst().getNonceGroup() != nonceGroup ||<a name="line.3205"></a>
-<span class="sourceLineNo">3206</span>              curWALEditForNonce.getFirst().getNonce() != nonce) {<a name="line.3206"></a>
-<span class="sourceLineNo">3207</span>            curWALEditForNonce = new Pair&lt;&gt;(new NonceKey(nonceGroup, nonce),<a name="line.3207"></a>
-<span class="sourceLineNo">3208</span>                new WALEdit(miniBatchOp.getCellCount(), isInReplay()));<a name="line.3208"></a>
-<span class="sourceLineNo">3209</span>            walEdits.add(curWALEditForNonce);<a name="line.3209"></a>
-<span class="sourceLineNo">3210</span>          }<a name="line.3210"></a>
-<span class="sourceLineNo">3211</span>          WALEdit walEdit = curWALEditForNonce.getSecond();<a name="line.3211"></a>
-<span class="sourceLineNo">3212</span><a name="line.3212"></a>
-<span class="sourceLineNo">3213</span>          // Add WAL edits by CP<a name="line.3213"></a>
-<span class="sourceLineNo">3214</span>          WALEdit fromCP = walEditsFromCoprocessors[index];<a name="line.3214"></a>
-<span class="sourceLineNo">3215</span>          if (fromCP != null) {<a name="line.3215"></a>
-<span class="sourceLineNo">3216</span>            for (Cell cell : fromCP.getCells()) {<a name="line.3216"></a>
-<span class="sourceLineNo">3217</span>              walEdit.add(cell);<a name="line.3217"></a>
-<span class="sourceLineNo">3218</span>            }<a name="line.3218"></a>
-<span class="sourceLineNo">3219</span>          }<a name="line.3219"></a>
-<span class="sourceLineNo">3220</span>          addFamilyMapToWALEdit(familyCellMaps[index], walEdit);<a name="line.3220"></a>
-<span class="sourceLineNo">3221</span><a name="line.3221"></a>
-<span class="sourceLineNo">3222</span>          return true;<a name="line.3222"></a>
-<span class="sourceLineNo">3223</span>        }<a name="line.3223"></a>
-<span class="sourceLineNo">3224</span>      });<a name="line.3224"></a>
-<span class="sourceLineNo">3225</span>      return walEdits;<a name="line.3225"></a>
-<span class="sourceLineNo">3226</span>    }<a name="line.3226"></a>
-<span class="sourceLineNo">3227</span><a name="line.3227"></a>
-<span class="sourceLineNo">3228</span>    /**<a name="line.3228"></a>
-<span class="sourceLineNo">3229</span>     * This method completes mini-batch operations by calling postBatchMutate() CP hook (if<a name="line.3229"></a>
-<span class="sourceLineNo">3230</span>     * required) and completing mvcc.<a name="line.3230"></a>
-<span class="sourceLineNo">3231</span>     */<a name="line.3231"></a>
-<span class="sourceLineNo">3232</span>    public void completeMiniBatchOperations(<a name="line.3232"></a>
-<span class="sourceLineNo">3233</span>        final MiniBatchOperationInProgress&lt;Mutation&gt; miniBatchOp, final WriteEntry writeEntry)<a name="line.3233"></a>
-<span class="sourceLineNo">3234</span>        throws IOException {<a name="line.3234"></a>
-<span class="sourceLineNo">3235</span>      if (writeEntry != null) {<a name="line.3235"></a>
-<span class="sourceLineNo">3236</span>        region.mvcc.completeAndWait(writeEntry);<a name="line.3236"></a>
-<span class="sourceLineNo">3237</span>      }<a name="line.3237"></a>
-<span class="sourceLineNo">3238</span>    }<a name="line.3238"></a>
-<span class="sourceLineNo">3239</span><a name="line.3239"></a>
-<span class="sourceLineNo">3240</span>    public void doPostOpCleanupForMiniBatch(<a name="line.3240"></a>
-<span class="sourceLineNo">3241</span>        final MiniBatchOperationInProgress&lt;Mutation&gt; miniBatchOp, final WALEdit walEdit,<a name="line.3241"></a>
-<span class="sourceLineNo">3242</span>        boolean success) throws IOException {}<a name="line.3242"></a>
-<span class="sourceLineNo">3243</span><a name="line.3243"></a>
-<span class="sourceLineNo">3244</span>    /**<a name="line.3244"></a>
-<span class="sourceLineNo">3245</span>     * Atomically apply the given map of family-&gt;edits to the memstore.<a name="line.3245"></a>
-<span class="sourceLineNo">3246</span>     * This handles the consistency control on its own, but the caller<a name="line.3246"></a>
-<span class="sourceLineNo">3247</span>     * should already have locked updatesLock.readLock(). This also does<a name="line.3247"></a>
-<span class="sourceLineNo">3248</span>     * &lt;b&gt;not&lt;/b&gt; check the families for validity.<a name="line.3248"></a>
-<span class="sourceLineNo">3249</span>     *<a name="line.3249"></a>
-<span class="sourceLineNo">3250</span>     * @param familyMap Map of Cells by family<a name="line.3250"></a>
-<span class="sourceLineNo">3251</span>     */<a name="line.3251"></a>
-<span class="sourceLineNo">3252</span>    protected void applyFamilyMapToMemStore(Map&lt;byte[], List&lt;Cell&gt;&gt; familyMap,<a name="line.3252"></a>
-<span class="sourceLineNo">3253</span>        MemStoreSizing memstoreAccounting) throws IOException {<a name="line.3253"></a>
-<span class="sourceLineNo">3254</span>      for (Map.Entry&lt;byte[], List&lt;Cell&gt;&gt; e : familyMap.entrySet()) {<a name="line.3254"></a>
-<span class="sourceLineNo">3255</span>        byte[] family = e.getKey();<a name="line.3255"></a>
-<span class="sourceLineNo">3256</span>        List&lt;Cell&gt; cells = e.getValue();<a name="line.3256"></a>
-<span class="sourceLineNo">3257</span>        assert cells instanceof RandomAccess;<a name="line.3257"></a>
-<span class="sourceLineNo">3258</span>        region.applyToMemStore(region.getStore(family), cells, false, memstoreAccounting);<a name="line.3258"></a>
-<span class="sourceLineNo">3259</span>      }<a name="line.3259"></a>
-<span class="sourceLineNo">3260</span>    }<a name="line.3260"></a>
-<span class="sourceLineNo">3261</span><a name="line.3261"></a>
-<span class="sourceLineNo">3262</span>    /**<a name="line.3262"></a>
-<span class="sourceLineNo">3263</span>     * Append the given map of family-&gt;edits to a WALEdit data structure.<a name="line.3263"></a>
-<span class="sourceLineNo">3264</span>     * This does not write to the WAL itself.<a name="line.3264"></a>
-<span class="sourceLineNo">3265</span>     * @param familyMap map of family-&gt;edits<a name="line.3265"></a>
-<span class="sourceLineNo">3266</span>     * @param walEdit the destination entry to append into<a name="line.3266"></a>
-<span class="sourceLineNo">3267</span>     */<a name="line.3267"></a>
-<span class="sourceLineNo">3268</span>    private void addFamilyMapToWALEdit(Map&lt;byte[], List&lt;Cell&gt;&gt; familyMap,<a name="line.3268"></a>
-<span class="sourceLineNo">3269</span>        WALEdit walEdit) {<a name="line.3269"></a>
-<span class="sourceLineNo">3270</span>      for (List&lt;Cell&gt; edits : familyMap.values()) {<a name="line.3270"></a>
-<span class="sourceLineNo">3271</span>        // Optimization: 'foreach' loop is not used. See:<a name="line.3271"></a>
-<span class="sourceLineNo">3272</span>        // HBASE-12023 HRegion.applyFamilyMapToMemstore creates too many iterator objects<a name="line.3272"></a>
-<span class="sourceLineNo">3273</span>        assert edits instanceof RandomAccess;<a name="line.3273"></a>
-<span class="sourceLineNo">3274</span>        int listSize = edits.size();<a name="line.3274"></a>
-<span class="sourceLineNo">3275</span>        for (int i=0; i &lt; listSize; i++) {<a name="line.3275"></a>
-<span class="sourceLineNo">3276</span>          Cell cell = edits.get(i);<a name="line.3276"></a>
-<span class="sourceLineNo">3277</span>          walEdit.add(cell);<a name="line.3277"></a>
-<span class="sourceLineNo">3278</span>        }<a name="line.3278"></a>
-<span class="sourceLineNo">3279</span>      }<a name="line.3279"></a>
-<span class="sourceLineNo">3280</span>    }<a name="line.3280"></a>
-<span class="sourceLineNo">3281</span>  }<a name="line.3281"></a>
-<span class="sourceLineNo">3282</span><a name="line.3282"></a>
-<span class="sourceLineNo">3283</span>  /**<a name="line.3283"></a>
-<span class="sourceLineNo">3284</span>   * Batch of mutation operations. Base class is shared with {@link ReplayBatchOperation} as most<a name="line.3284"></a>
-<span class="sourceLineNo">3285</span>   * of the logic is same.<a name="line.3285"></a>
-<span class="sourceLineNo">3286</span>   */<a name="line.3286"></a>
-<span class="sourceLineNo">3287</span>  static class MutationBatchOperation extends BatchOperation&lt;Mutation&gt; {<a name="line.3287"></a>
-<span class="sourceLineNo">3288</span>    private long nonceGroup;<a name="line.3288"></a>
-<span class="sourceLineNo">3289</span>    private long nonce;<a name="line.3289"></a>
-<span class="sourceLineNo">3290</span>    public MutationBatchOperation(final HRegion region, Mutation[] operations, boolean atomic,<a name="line.3290"></a>
-<span class="sourceLineNo">3291</span>        long nonceGroup, long nonce) {<a name="line.3291"></a>
-<span class="sourceLineNo">3292</span>      super(region, operations);<a name="line.3292"></a>
-<span class="sourceLineNo">3293</span>      this.atomic = atomic;<a name="line.3293"></a>
-<span class="sourceLineNo">3294</span>      this.nonceGroup = nonceGroup;<a name="line.3294"></a>
-<span class="sourceLineNo">3295</span>      this.nonce = nonce;<a name="line.3295"></a>
-<span class="sourceLineNo">3296</span>    }<a name="line.3296"></a>
-<span class="sourceLineNo">3297</span><a name="line.3297"></a>
-<span class="sourceLineNo">3298</span>    @Override<a name="line.3298"></a>
-<span class="sourceLineNo">3299</span>    public Mutation getMutation(int index) {<a name="line.3299"></a>
-<span class="sourceLineNo">3300</span>      return this.operations[index];<a name="line.3300"></a>
-<span class="sourceLineNo">3301</span>    }<a name="line.3301"></a>
-<span class="sourceLineNo">3302</span><a name="line.3302"></a>
-<span class="sourceLineNo">3303</span>    @Override<a name="line.3303"></a>
-<span class="sourceLineNo">3304</span>    public long getNonceGroup(int index) {<a name="line.3304"></a>
-<span class="sourceLineNo">3305</span>      return nonceGroup;<a name="line.3305"></a>
-<span class="sourceLineNo">3306</span>    }<a name="line.3306"></a>
-<span class="sourceLineNo">3307</span><a name="line.3307"></a>
-<span class="sourceLineNo">33

<TRUNCATED>

[05/51] [partial] hbase-site git commit: Published site at .

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/c54c242b/hbase-build-configuration/hbase-spark/dependency-convergence.html
----------------------------------------------------------------------
diff --git a/hbase-build-configuration/hbase-spark/dependency-convergence.html b/hbase-build-configuration/hbase-spark/dependency-convergence.html
index 042dcf3..deb4bd8 100644
--- a/hbase-build-configuration/hbase-spark/dependency-convergence.html
+++ b/hbase-build-configuration/hbase-spark/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="20171202" />
+    <meta name="Date-Revision-yyyymmdd" content="20171203" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase - Spark &#x2013; Reactor Dependency Convergence</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -838,7 +838,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2017-12-02</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2017-12-03</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/c54c242b/hbase-build-configuration/hbase-spark/dependency-info.html
----------------------------------------------------------------------
diff --git a/hbase-build-configuration/hbase-spark/dependency-info.html b/hbase-build-configuration/hbase-spark/dependency-info.html
index c4f5e75..9bcde02 100644
--- a/hbase-build-configuration/hbase-spark/dependency-info.html
+++ b/hbase-build-configuration/hbase-spark/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="20171202" />
+    <meta name="Date-Revision-yyyymmdd" content="20171203" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase - Spark &#x2013; Dependency Information</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -147,7 +147,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2017-12-02</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2017-12-03</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/c54c242b/hbase-build-configuration/hbase-spark/dependency-management.html
----------------------------------------------------------------------
diff --git a/hbase-build-configuration/hbase-spark/dependency-management.html b/hbase-build-configuration/hbase-spark/dependency-management.html
index 7a1bf0b..a740cf8 100644
--- a/hbase-build-configuration/hbase-spark/dependency-management.html
+++ b/hbase-build-configuration/hbase-spark/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="20171202" />
+    <meta name="Date-Revision-yyyymmdd" content="20171203" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase - Spark &#x2013; Project Dependency Management</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -804,7 +804,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2017-12-02</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2017-12-03</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/c54c242b/hbase-build-configuration/hbase-spark/index.html
----------------------------------------------------------------------
diff --git a/hbase-build-configuration/hbase-spark/index.html b/hbase-build-configuration/hbase-spark/index.html
index 23626e8..955708c 100644
--- a/hbase-build-configuration/hbase-spark/index.html
+++ b/hbase-build-configuration/hbase-spark/index.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="20171202" />
+    <meta name="Date-Revision-yyyymmdd" content="20171203" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase - Spark &#x2013; About</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -119,7 +119,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2017-12-02</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2017-12-03</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/c54c242b/hbase-build-configuration/hbase-spark/integration.html
----------------------------------------------------------------------
diff --git a/hbase-build-configuration/hbase-spark/integration.html b/hbase-build-configuration/hbase-spark/integration.html
index 2c49e04..b1a7524 100644
--- a/hbase-build-configuration/hbase-spark/integration.html
+++ b/hbase-build-configuration/hbase-spark/integration.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="20171202" />
+    <meta name="Date-Revision-yyyymmdd" content="20171203" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase - Spark &#x2013; CI Management</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -126,7 +126,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2017-12-02</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2017-12-03</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/c54c242b/hbase-build-configuration/hbase-spark/issue-tracking.html
----------------------------------------------------------------------
diff --git a/hbase-build-configuration/hbase-spark/issue-tracking.html b/hbase-build-configuration/hbase-spark/issue-tracking.html
index f9e4bb8..8d6f488 100644
--- a/hbase-build-configuration/hbase-spark/issue-tracking.html
+++ b/hbase-build-configuration/hbase-spark/issue-tracking.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="20171202" />
+    <meta name="Date-Revision-yyyymmdd" content="20171203" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase - Spark &#x2013; Issue Management</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -123,7 +123,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2017-12-02</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2017-12-03</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/c54c242b/hbase-build-configuration/hbase-spark/license.html
----------------------------------------------------------------------
diff --git a/hbase-build-configuration/hbase-spark/license.html b/hbase-build-configuration/hbase-spark/license.html
index b83fd68..e8c23b2 100644
--- a/hbase-build-configuration/hbase-spark/license.html
+++ b/hbase-build-configuration/hbase-spark/license.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="20171202" />
+    <meta name="Date-Revision-yyyymmdd" content="20171203" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase - Spark &#x2013; Project Licenses</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -326,7 +326,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2017-12-02</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2017-12-03</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/c54c242b/hbase-build-configuration/hbase-spark/mail-lists.html
----------------------------------------------------------------------
diff --git a/hbase-build-configuration/hbase-spark/mail-lists.html b/hbase-build-configuration/hbase-spark/mail-lists.html
index 4af23cf..f7b0f4b 100644
--- a/hbase-build-configuration/hbase-spark/mail-lists.html
+++ b/hbase-build-configuration/hbase-spark/mail-lists.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="20171202" />
+    <meta name="Date-Revision-yyyymmdd" content="20171203" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase - Spark &#x2013; Project Mailing Lists</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -176,7 +176,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2017-12-02</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2017-12-03</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/c54c242b/hbase-build-configuration/hbase-spark/plugin-management.html
----------------------------------------------------------------------
diff --git a/hbase-build-configuration/hbase-spark/plugin-management.html b/hbase-build-configuration/hbase-spark/plugin-management.html
index 9a240f7..9b44bce 100644
--- a/hbase-build-configuration/hbase-spark/plugin-management.html
+++ b/hbase-build-configuration/hbase-spark/plugin-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="20171202" />
+    <meta name="Date-Revision-yyyymmdd" content="20171203" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase - Spark &#x2013; Project Plugin Management</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -271,7 +271,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2017-12-02</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2017-12-03</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/c54c242b/hbase-build-configuration/hbase-spark/plugins.html
----------------------------------------------------------------------
diff --git a/hbase-build-configuration/hbase-spark/plugins.html b/hbase-build-configuration/hbase-spark/plugins.html
index e5a3714..6f8186e 100644
--- a/hbase-build-configuration/hbase-spark/plugins.html
+++ b/hbase-build-configuration/hbase-spark/plugins.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="20171202" />
+    <meta name="Date-Revision-yyyymmdd" content="20171203" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase - Spark &#x2013; Project Plugins</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -238,7 +238,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2017-12-02</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2017-12-03</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/c54c242b/hbase-build-configuration/hbase-spark/project-info.html
----------------------------------------------------------------------
diff --git a/hbase-build-configuration/hbase-spark/project-info.html b/hbase-build-configuration/hbase-spark/project-info.html
index 3aea7c0..5dea1c5 100644
--- a/hbase-build-configuration/hbase-spark/project-info.html
+++ b/hbase-build-configuration/hbase-spark/project-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="20171202" />
+    <meta name="Date-Revision-yyyymmdd" content="20171203" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase - Spark &#x2013; Project Information</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -167,7 +167,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2017-12-02</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2017-12-03</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/c54c242b/hbase-build-configuration/hbase-spark/project-reports.html
----------------------------------------------------------------------
diff --git a/hbase-build-configuration/hbase-spark/project-reports.html b/hbase-build-configuration/hbase-spark/project-reports.html
index 6ed31cd..d11ea97 100644
--- a/hbase-build-configuration/hbase-spark/project-reports.html
+++ b/hbase-build-configuration/hbase-spark/project-reports.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="20171202" />
+    <meta name="Date-Revision-yyyymmdd" content="20171203" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase - Spark &#x2013; Generated Reports</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -131,7 +131,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2017-12-02</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2017-12-03</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/c54c242b/hbase-build-configuration/hbase-spark/project-summary.html
----------------------------------------------------------------------
diff --git a/hbase-build-configuration/hbase-spark/project-summary.html b/hbase-build-configuration/hbase-spark/project-summary.html
index fb4ffe2..195f1da 100644
--- a/hbase-build-configuration/hbase-spark/project-summary.html
+++ b/hbase-build-configuration/hbase-spark/project-summary.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="20171202" />
+    <meta name="Date-Revision-yyyymmdd" content="20171203" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase - Spark &#x2013; Project Summary</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -166,7 +166,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2017-12-02</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2017-12-03</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/c54c242b/hbase-build-configuration/hbase-spark/source-repository.html
----------------------------------------------------------------------
diff --git a/hbase-build-configuration/hbase-spark/source-repository.html b/hbase-build-configuration/hbase-spark/source-repository.html
index 0498690..f83e7f9 100644
--- a/hbase-build-configuration/hbase-spark/source-repository.html
+++ b/hbase-build-configuration/hbase-spark/source-repository.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="20171202" />
+    <meta name="Date-Revision-yyyymmdd" content="20171203" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase - Spark &#x2013; Source Code Management</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -134,7 +134,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2017-12-02</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2017-12-03</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/c54c242b/hbase-build-configuration/hbase-spark/team-list.html
----------------------------------------------------------------------
diff --git a/hbase-build-configuration/hbase-spark/team-list.html b/hbase-build-configuration/hbase-spark/team-list.html
index c51ad26..4075e80 100644
--- a/hbase-build-configuration/hbase-spark/team-list.html
+++ b/hbase-build-configuration/hbase-spark/team-list.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="20171202" />
+    <meta name="Date-Revision-yyyymmdd" content="20171203" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase - Spark &#x2013; Project Team</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -547,7 +547,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2017-12-02</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2017-12-03</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/c54c242b/hbase-build-configuration/index.html
----------------------------------------------------------------------
diff --git a/hbase-build-configuration/index.html b/hbase-build-configuration/index.html
index 1ee9009..338d4a5 100644
--- a/hbase-build-configuration/index.html
+++ b/hbase-build-configuration/index.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="20171202" />
+    <meta name="Date-Revision-yyyymmdd" content="20171203" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase - Build Configuration &#x2013; About</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -119,7 +119,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2017-12-02</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2017-12-03</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/c54c242b/hbase-build-configuration/integration.html
----------------------------------------------------------------------
diff --git a/hbase-build-configuration/integration.html b/hbase-build-configuration/integration.html
index 1076efd..0e43ccb 100644
--- a/hbase-build-configuration/integration.html
+++ b/hbase-build-configuration/integration.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="20171202" />
+    <meta name="Date-Revision-yyyymmdd" content="20171203" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase - Build Configuration &#x2013; CI Management</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -126,7 +126,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2017-12-02</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2017-12-03</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/c54c242b/hbase-build-configuration/issue-tracking.html
----------------------------------------------------------------------
diff --git a/hbase-build-configuration/issue-tracking.html b/hbase-build-configuration/issue-tracking.html
index 98eb81b..4fc222f 100644
--- a/hbase-build-configuration/issue-tracking.html
+++ b/hbase-build-configuration/issue-tracking.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="20171202" />
+    <meta name="Date-Revision-yyyymmdd" content="20171203" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase - Build Configuration &#x2013; Issue Management</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -123,7 +123,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2017-12-02</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2017-12-03</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/c54c242b/hbase-build-configuration/license.html
----------------------------------------------------------------------
diff --git a/hbase-build-configuration/license.html b/hbase-build-configuration/license.html
index 2012abf..9e33e0f 100644
--- a/hbase-build-configuration/license.html
+++ b/hbase-build-configuration/license.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="20171202" />
+    <meta name="Date-Revision-yyyymmdd" content="20171203" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase - Build Configuration &#x2013; Project Licenses</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -326,7 +326,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2017-12-02</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2017-12-03</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/c54c242b/hbase-build-configuration/mail-lists.html
----------------------------------------------------------------------
diff --git a/hbase-build-configuration/mail-lists.html b/hbase-build-configuration/mail-lists.html
index 72d065f..120abb0 100644
--- a/hbase-build-configuration/mail-lists.html
+++ b/hbase-build-configuration/mail-lists.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="20171202" />
+    <meta name="Date-Revision-yyyymmdd" content="20171203" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase - Build Configuration &#x2013; Project Mailing Lists</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -176,7 +176,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2017-12-02</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2017-12-03</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/c54c242b/hbase-build-configuration/plugin-management.html
----------------------------------------------------------------------
diff --git a/hbase-build-configuration/plugin-management.html b/hbase-build-configuration/plugin-management.html
index 96e061e..d55cefd 100644
--- a/hbase-build-configuration/plugin-management.html
+++ b/hbase-build-configuration/plugin-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="20171202" />
+    <meta name="Date-Revision-yyyymmdd" content="20171203" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase - Build Configuration &#x2013; Project Plugin Management</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -271,7 +271,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2017-12-02</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2017-12-03</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/c54c242b/hbase-build-configuration/plugins.html
----------------------------------------------------------------------
diff --git a/hbase-build-configuration/plugins.html b/hbase-build-configuration/plugins.html
index 3a33e70..fe25497 100644
--- a/hbase-build-configuration/plugins.html
+++ b/hbase-build-configuration/plugins.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="20171202" />
+    <meta name="Date-Revision-yyyymmdd" content="20171203" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase - Build Configuration &#x2013; Project Plugins</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -214,7 +214,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2017-12-02</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2017-12-03</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/c54c242b/hbase-build-configuration/project-info.html
----------------------------------------------------------------------
diff --git a/hbase-build-configuration/project-info.html b/hbase-build-configuration/project-info.html
index 7c43226..ac4b79d 100644
--- a/hbase-build-configuration/project-info.html
+++ b/hbase-build-configuration/project-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="20171202" />
+    <meta name="Date-Revision-yyyymmdd" content="20171203" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase - Build Configuration &#x2013; Project Information</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -167,7 +167,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2017-12-02</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2017-12-03</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/c54c242b/hbase-build-configuration/project-summary.html
----------------------------------------------------------------------
diff --git a/hbase-build-configuration/project-summary.html b/hbase-build-configuration/project-summary.html
index 43c1d1a..539536c 100644
--- a/hbase-build-configuration/project-summary.html
+++ b/hbase-build-configuration/project-summary.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="20171202" />
+    <meta name="Date-Revision-yyyymmdd" content="20171203" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase - Build Configuration &#x2013; Project Summary</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -163,7 +163,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2017-12-02</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2017-12-03</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/c54c242b/hbase-build-configuration/source-repository.html
----------------------------------------------------------------------
diff --git a/hbase-build-configuration/source-repository.html b/hbase-build-configuration/source-repository.html
index 73ae114..89285ed 100644
--- a/hbase-build-configuration/source-repository.html
+++ b/hbase-build-configuration/source-repository.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="20171202" />
+    <meta name="Date-Revision-yyyymmdd" content="20171203" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase - Build Configuration &#x2013; Source Code Management</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -134,7 +134,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2017-12-02</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2017-12-03</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/c54c242b/hbase-build-configuration/team-list.html
----------------------------------------------------------------------
diff --git a/hbase-build-configuration/team-list.html b/hbase-build-configuration/team-list.html
index 5a12cdd..92d7cfe 100644
--- a/hbase-build-configuration/team-list.html
+++ b/hbase-build-configuration/team-list.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="20171202" />
+    <meta name="Date-Revision-yyyymmdd" content="20171203" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase - Build Configuration &#x2013; Project Team</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -547,7 +547,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2017-12-02</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2017-12-03</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/c54c242b/hbase-shaded-check-invariants/checkstyle.html
----------------------------------------------------------------------
diff --git a/hbase-shaded-check-invariants/checkstyle.html b/hbase-shaded-check-invariants/checkstyle.html
index 006f0ce..62ae87d 100644
--- a/hbase-shaded-check-invariants/checkstyle.html
+++ b/hbase-shaded-check-invariants/checkstyle.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="20171202" />
+    <meta name="Date-Revision-yyyymmdd" content="20171203" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase Shaded Packaging Invariants &#x2013; Checkstyle Results</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -150,7 +150,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2017-12-02</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2017-12-03</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/c54c242b/hbase-shaded-check-invariants/dependencies.html
----------------------------------------------------------------------
diff --git a/hbase-shaded-check-invariants/dependencies.html b/hbase-shaded-check-invariants/dependencies.html
index 2d23f0b..c885c98 100644
--- a/hbase-shaded-check-invariants/dependencies.html
+++ b/hbase-shaded-check-invariants/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="20171202" />
+    <meta name="Date-Revision-yyyymmdd" content="20171203" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase Shaded Packaging Invariants &#x2013; Project Dependencies</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -1050,25 +1050,7 @@ file comparators, endian transformation classes, and much more.</p>
         components in your production environment.</p>
 <p><b>URL: </b><a class="externalLink" href="http://metrics.codahale.com/metrics-core/">http://metrics.codahale.com/metrics-core/</a></p>
 <p><b>Project Licenses: </b><a class="externalLink" href="http://www.apache.org/licenses/LICENSE-2.0.html">Apache License 2.0</a></p></td></tr></table></div></li>
-<li>org.apache.curator:curator-framework:jar:4.0.0 (compile) <img id="_img47" src="./images/icon_info_sml.gif" alt="[Information]" onclick="toggleDependencyDetails( '_dep46', '_img47' );" style="cursor: pointer; vertical-align: text-bottom;"></img><div id="_dep46" style="display:none">
-<table border="0" class="table table-striped">
-<tr class="a">
-<th>Curator Framework</th></tr>
-<tr class="b">
-<td>
-<p><b>Description: </b>High-level API that greatly simplifies using ZooKeeper.</p>
-<p><b>URL: </b><a class="externalLink" href="http://curator.apache.org/curator-framework">http://curator.apache.org/curator-framework</a></p>
-<p><b>Project Licenses: </b><a class="externalLink" href="http://www.apache.org/licenses/LICENSE-2.0.txt">The Apache Software License, Version 2.0</a></p></td></tr></table></div></li>
-<li>org.apache.curator:curator-client:jar:4.0.0 (compile) <img id="_img49" src="./images/icon_info_sml.gif" alt="[Information]" onclick="toggleDependencyDetails( '_dep48', '_img49' );" style="cursor: pointer; vertical-align: text-bottom;"></img><div id="_dep48" style="display:none">
-<table border="0" class="table table-striped">
-<tr class="a">
-<th>Curator Client</th></tr>
-<tr class="b">
-<td>
-<p><b>Description: </b>Low-level API</p>
-<p><b>URL: </b><a class="externalLink" href="http://curator.apache.org/curator-client">http://curator.apache.org/curator-client</a></p>
-<p><b>Project Licenses: </b><a class="externalLink" href="http://www.apache.org/licenses/LICENSE-2.0.txt">The Apache Software License, Version 2.0</a></p></td></tr></table></div></li>
-<li>org.apache.commons:commons-crypto:jar:1.0.0 (compile) <img id="_img51" src="./images/icon_info_sml.gif" alt="[Information]" onclick="toggleDependencyDetails( '_dep50', '_img51' );" style="cursor: pointer; vertical-align: text-bottom;"></img><div id="_dep50" style="display:none">
+<li>org.apache.commons:commons-crypto:jar:1.0.0 (compile) <img id="_img47" src="./images/icon_info_sml.gif" alt="[Information]" onclick="toggleDependencyDetails( '_dep46', '_img47' );" style="cursor: pointer; vertical-align: text-bottom;"></img><div id="_dep46" style="display:none">
 <table border="0" class="table table-striped">
 <tr class="a">
 <th>Apache Commons Crypto</th></tr>
@@ -1120,7 +1102,7 @@ The following provides more details on the included cryptographic software:
 * Commons Crypto link to and use [OpenSSL](https://www.openssl.org/) ciphers</p>
 <p><b>URL: </b><a class="externalLink" href="http://commons.apache.org/proper/commons-crypto/">http://commons.apache.org/proper/commons-crypto/</a></p>
 <p><b>Project Licenses: </b><a class="externalLink" href="http://www.apache.org/licenses/LICENSE-2.0.txt">Apache License, Version 2.0</a></p></td></tr></table></div></li>
-<li>com.fasterxml.jackson.core:jackson-databind:jar:2.9.2 (compile) <img id="_img53" src="./images/icon_info_sml.gif" alt="[Information]" onclick="toggleDependencyDetails( '_dep52', '_img53' );" style="cursor: pointer; vertical-align: text-bottom;"></img><div id="_dep52" style="display:none">
+<li>com.fasterxml.jackson.core:jackson-databind:jar:2.9.2 (compile) <img id="_img49" src="./images/icon_info_sml.gif" alt="[Information]" onclick="toggleDependencyDetails( '_dep48', '_img49' );" style="cursor: pointer; vertical-align: text-bottom;"></img><div id="_dep48" style="display:none">
 <table border="0" class="table table-striped">
 <tr class="a">
 <th>jackson-databind</th></tr>
@@ -1130,7 +1112,7 @@ The following provides more details on the included cryptographic software:
 <p><b>URL: </b><a class="externalLink" href="http://github.com/FasterXML/jackson">http://github.com/FasterXML/jackson</a></p>
 <p><b>Project Licenses: </b><a class="externalLink" href="http://www.apache.org/licenses/LICENSE-2.0.txt">The Apache Software License, Version 2.0</a></p></td></tr></table></div>
 <ul>
-<li>com.fasterxml.jackson.core:jackson-annotations:jar:2.9.0 (compile) <img id="_img55" src="./images/icon_info_sml.gif" alt="[Information]" onclick="toggleDependencyDetails( '_dep54', '_img55' );" style="cursor: pointer; vertical-align: text-bottom;"></img><div id="_dep54" style="display:none">
+<li>com.fasterxml.jackson.core:jackson-annotations:jar:2.9.0 (compile) <img id="_img51" src="./images/icon_info_sml.gif" alt="[Information]" onclick="toggleDependencyDetails( '_dep50', '_img51' );" style="cursor: pointer; vertical-align: text-bottom;"></img><div id="_dep50" style="display:none">
 <table border="0" class="table table-striped">
 <tr class="a">
 <th>Jackson-annotations</th></tr>
@@ -1139,7 +1121,7 @@ The following provides more details on the included cryptographic software:
 <p><b>Description: </b>Core annotations used for value types, used by Jackson data binding package.</p>
 <p><b>URL: </b><a class="externalLink" href="http://github.com/FasterXML/jackson">http://github.com/FasterXML/jackson</a></p>
 <p><b>Project Licenses: </b><a class="externalLink" href="http://www.apache.org/licenses/LICENSE-2.0.txt">The Apache Software License, Version 2.0</a></p></td></tr></table></div></li>
-<li>com.fasterxml.jackson.core:jackson-core:jar:2.9.2 (compile) <img id="_img57" src="./images/icon_info_sml.gif" alt="[Information]" onclick="toggleDependencyDetails( '_dep56', '_img57' );" style="cursor: pointer; vertical-align: text-bottom;"></img><div id="_dep56" style="display:none">
+<li>com.fasterxml.jackson.core:jackson-core:jar:2.9.2 (compile) <img id="_img53" src="./images/icon_info_sml.gif" alt="[Information]" onclick="toggleDependencyDetails( '_dep52', '_img53' );" style="cursor: pointer; vertical-align: text-bottom;"></img><div id="_dep52" style="display:none">
 <table border="0" class="table table-striped">
 <tr class="a">
 <th>Jackson-core</th></tr>
@@ -1148,7 +1130,7 @@ The following provides more details on the included cryptographic software:
 <p><b>Description: </b>Core Jackson processing abstractions (aka Streaming API), implementation for JSON</p>
 <p><b>URL: </b><a class="externalLink" href="https://github.com/FasterXML/jackson-core">https://github.com/FasterXML/jackson-core</a></p>
 <p><b>Project Licenses: </b><a class="externalLink" href="http://www.apache.org/licenses/LICENSE-2.0.txt">The Apache Software License, Version 2.0</a></p></td></tr></table></div></li></ul></li>
-<li>org.apache.hadoop:hadoop-auth:jar:2.7.4 (compile) <img id="_img59" src="./images/icon_info_sml.gif" alt="[Information]" onclick="toggleDependencyDetails( '_dep58', '_img59' );" style="cursor: pointer; vertical-align: text-bottom;"></img><div id="_dep58" style="display:none">
+<li>org.apache.hadoop:hadoop-auth:jar:2.7.4 (compile) <img id="_img55" src="./images/icon_info_sml.gif" alt="[Information]" onclick="toggleDependencyDetails( '_dep54', '_img55' );" style="cursor: pointer; vertical-align: text-bottom;"></img><div id="_dep54" style="display:none">
 <table border="0" class="table table-striped">
 <tr class="a">
 <th>Apache Hadoop Auth</th></tr>
@@ -1157,7 +1139,7 @@ The following provides more details on the included cryptographic software:
 <p><b>Description: </b>Apache Hadoop Auth - Java HTTP SPNEGO</p>
 <p><b>Project Licenses: </b><a class="externalLink" href="http://www.apache.org/licenses/LICENSE-2.0.txt">Apache License, Version 2.0</a></p></td></tr></table></div>
 <ul>
-<li>org.apache.httpcomponents:httpclient:jar:4.5.3 (compile) <img id="_img61" src="./images/icon_info_sml.gif" alt="[Information]" onclick="toggleDependencyDetails( '_dep60', '_img61' );" style="cursor: pointer; vertical-align: text-bottom;"></img><div id="_dep60" style="display:none">
+<li>org.apache.httpcomponents:httpclient:jar:4.5.3 (compile) <img id="_img57" src="./images/icon_info_sml.gif" alt="[Information]" onclick="toggleDependencyDetails( '_dep56', '_img57' );" style="cursor: pointer; vertical-align: text-bottom;"></img><div id="_dep56" style="display:none">
 <table border="0" class="table table-striped">
 <tr class="a">
 <th>Apache HttpClient</th></tr>
@@ -1167,7 +1149,7 @@ The following provides more details on the included cryptographic software:
 <p><b>URL: </b><a class="externalLink" href="http://hc.apache.org/httpcomponents-client">http://hc.apache.org/httpcomponents-client</a></p>
 <p><b>Project Licenses: </b><a class="externalLink" href="http://www.apache.org/licenses/LICENSE-2.0.txt">Apache License, Version 2.0</a></p></td></tr></table></div>
 <ul>
-<li>org.apache.httpcomponents:httpcore:jar:4.4.6 (compile) <img id="_img63" src="./images/icon_info_sml.gif" alt="[Information]" onclick="toggleDependencyDetails( '_dep62', '_img63' );" style="cursor: pointer; vertical-align: text-bottom;"></img><div id="_dep62" style="display:none">
+<li>org.apache.httpcomponents:httpcore:jar:4.4.6 (compile) <img id="_img59" src="./images/icon_info_sml.gif" alt="[Information]" onclick="toggleDependencyDetails( '_dep58', '_img59' );" style="cursor: pointer; vertical-align: text-bottom;"></img><div id="_dep58" style="display:none">
 <table border="0" class="table table-striped">
 <tr class="a">
 <th>Apache HttpCore</th></tr>
@@ -1176,7 +1158,7 @@ The following provides more details on the included cryptographic software:
 <p><b>Description: </b>Apache HttpComponents Core (blocking I/O)</p>
 <p><b>URL: </b><a class="externalLink" href="http://hc.apache.org/httpcomponents-core-ga">http://hc.apache.org/httpcomponents-core-ga</a></p>
 <p><b>Project Licenses: </b><a class="externalLink" href="http://www.apache.org/licenses/LICENSE-2.0.txt">Apache License, Version 2.0</a></p></td></tr></table></div></li></ul></li>
-<li>org.apache.directory.server:apacheds-kerberos-codec:jar:2.0.0-M15 (compile) <img id="_img65" src="./images/icon_info_sml.gif" alt="[Information]" onclick="toggleDependencyDetails( '_dep64', '_img65' );" style="cursor: pointer; vertical-align: text-bottom;"></img><div id="_dep64" style="display:none">
+<li>org.apache.directory.server:apacheds-kerberos-codec:jar:2.0.0-M15 (compile) <img id="_img61" src="./images/icon_info_sml.gif" alt="[Information]" onclick="toggleDependencyDetails( '_dep60', '_img61' );" style="cursor: pointer; vertical-align: text-bottom;"></img><div id="_dep60" style="display:none">
 <table border="0" class="table table-striped">
 <tr class="a">
 <th>ApacheDS Protocol Kerberos Codec</th></tr>
@@ -1186,7 +1168,7 @@ The following provides more details on the included cryptographic software:
 <p><b>URL: </b><a class="externalLink" href="http://directory.apache.org/apacheds/1.5/apacheds-kerberos-codec">http://directory.apache.org/apacheds/1.5/apacheds-kerberos-codec</a></p>
 <p><b>Project Licenses: </b><a class="externalLink" href="http://www.apache.org/licenses/LICENSE-2.0.txt">The Apache Software License, Version 2.0</a></p></td></tr></table></div>
 <ul>
-<li>org.apache.directory.server:apacheds-i18n:jar:2.0.0-M15 (compile) <img id="_img67" src="./images/icon_info_sml.gif" alt="[Information]" onclick="toggleDependencyDetails( '_dep66', '_img67' );" style="cursor: pointer; vertical-align: text-bottom;"></img><div id="_dep66" style="display:none">
+<li>org.apache.directory.server:apacheds-i18n:jar:2.0.0-M15 (compile) <img id="_img63" src="./images/icon_info_sml.gif" alt="[Information]" onclick="toggleDependencyDetails( '_dep62', '_img63' );" style="cursor: pointer; vertical-align: text-bottom;"></img><div id="_dep62" style="display:none">
 <table border="0" class="table table-striped">
 <tr class="a">
 <th>ApacheDS I18n</th></tr>
@@ -1195,7 +1177,7 @@ The following provides more details on the included cryptographic software:
 <p><b>Description: </b>Internationalization of errors and other messages</p>
 <p><b>URL: </b><a class="externalLink" href="http://directory.apache.org/apacheds/1.5/apacheds-i18n">http://directory.apache.org/apacheds/1.5/apacheds-i18n</a></p>
 <p><b>Project Licenses: </b><a class="externalLink" href="http://www.apache.org/licenses/LICENSE-2.0.txt">The Apache Software License, Version 2.0</a></p></td></tr></table></div></li>
-<li>org.apache.directory.api:api-asn1-api:jar:1.0.0-M20 (compile) <img id="_img69" src="./images/icon_info_sml.gif" alt="[Information]" onclick="toggleDependencyDetails( '_dep68', '_img69' );" style="cursor: pointer; vertical-align: text-bottom;"></img><div id="_dep68" style="display:none">
+<li>org.apache.directory.api:api-asn1-api:jar:1.0.0-M20 (compile) <img id="_img65" src="./images/icon_info_sml.gif" alt="[Information]" onclick="toggleDependencyDetails( '_dep64', '_img65' );" style="cursor: pointer; vertical-align: text-bottom;"></img><div id="_dep64" style="display:none">
 <table border="0" class="table table-striped">
 <tr class="a">
 <th>Apache Directory API ASN.1 API</th></tr>
@@ -1204,7 +1186,7 @@ The following provides more details on the included cryptographic software:
 <p><b>Description: </b>ASN.1 API</p>
 <p><b>URL: </b><a class="externalLink" href="http://directory.apache.org/api-parent/api-asn1-parent/api-asn1-api/">http://directory.apache.org/api-parent/api-asn1-parent/api-asn1-api/</a></p>
 <p><b>Project Licenses: </b><a class="externalLink" href="http://www.apache.org/licenses/LICENSE-2.0.txt">The Apache Software License, Version 2.0</a></p></td></tr></table></div></li>
-<li>org.apache.directory.api:api-util:jar:1.0.0-M20 (compile) <img id="_img71" src="./images/icon_info_sml.gif" alt="[Information]" onclick="toggleDependencyDetails( '_dep70', '_img71' );" style="cursor: pointer; vertical-align: text-bottom;"></img><div id="_dep70" style="display:none">
+<li>org.apache.directory.api:api-util:jar:1.0.0-M20 (compile) <img id="_img67" src="./images/icon_info_sml.gif" alt="[Information]" onclick="toggleDependencyDetails( '_dep66', '_img67' );" style="cursor: pointer; vertical-align: text-bottom;"></img><div id="_dep66" style="display:none">
 <table border="0" class="table table-striped">
 <tr class="a">
 <th>Apache Directory LDAP API Utilities</th></tr>
@@ -1212,8 +1194,17 @@ The following provides more details on the included cryptographic software:
 <td>
 <p><b>Description: </b>Utilities shared across this top level project</p>
 <p><b>URL: </b><a class="externalLink" href="http://directory.apache.org/api-parent/api-util/">http://directory.apache.org/api-parent/api-util/</a></p>
-<p><b>Project Licenses: </b><a class="externalLink" href="http://www.apache.org/licenses/LICENSE-2.0.txt">The Apache Software License, Version 2.0</a></p></td></tr></table></div></li></ul></li></ul></li>
-<li>org.apache.hadoop:hadoop-common:jar:2.7.4 (compile) <img id="_img73" src="./images/icon_info_sml.gif" alt="[Information]" onclick="toggleDependencyDetails( '_dep72', '_img73' );" style="cursor: pointer; vertical-align: text-bottom;"></img><div id="_dep72" style="display:none">
+<p><b>Project Licenses: </b><a class="externalLink" href="http://www.apache.org/licenses/LICENSE-2.0.txt">The Apache Software License, Version 2.0</a></p></td></tr></table></div></li></ul></li>
+<li>org.apache.curator:curator-framework:jar:4.0.0 (compile) <img id="_img69" src="./images/icon_info_sml.gif" alt="[Information]" onclick="toggleDependencyDetails( '_dep68', '_img69' );" style="cursor: pointer; vertical-align: text-bottom;"></img><div id="_dep68" style="display:none">
+<table border="0" class="table table-striped">
+<tr class="a">
+<th>Curator Framework</th></tr>
+<tr class="b">
+<td>
+<p><b>Description: </b>High-level API that greatly simplifies using ZooKeeper.</p>
+<p><b>URL: </b><a class="externalLink" href="http://curator.apache.org/curator-framework">http://curator.apache.org/curator-framework</a></p>
+<p><b>Project Licenses: </b><a class="externalLink" href="http://www.apache.org/licenses/LICENSE-2.0.txt">The Apache Software License, Version 2.0</a></p></td></tr></table></div></li></ul></li>
+<li>org.apache.hadoop:hadoop-common:jar:2.7.4 (compile) <img id="_img71" src="./images/icon_info_sml.gif" alt="[Information]" onclick="toggleDependencyDetails( '_dep70', '_img71' );" style="cursor: pointer; vertical-align: text-bottom;"></img><div id="_dep70" style="display:none">
 <table border="0" class="table table-striped">
 <tr class="a">
 <th>Apache Hadoop Common</th></tr>
@@ -1222,7 +1213,7 @@ The following provides more details on the included cryptographic software:
 <p><b>Description: </b>Apache Hadoop Common</p>
 <p><b>Project Licenses: </b><a class="externalLink" href="http://www.apache.org/licenses/LICENSE-2.0.txt">Apache License, Version 2.0</a></p></td></tr></table></div>
 <ul>
-<li>org.apache.hadoop:hadoop-annotations:jar:2.7.4 (compile) <img id="_img75" src="./images/icon_info_sml.gif" alt="[Information]" onclick="toggleDependencyDetails( '_dep74', '_img75' );" style="cursor: pointer; vertical-align: text-bottom;"></img><div id="_dep74" style="display:none">
+<li>org.apache.hadoop:hadoop-annotations:jar:2.7.4 (compile) <img id="_img73" src="./images/icon_info_sml.gif" alt="[Information]" onclick="toggleDependencyDetails( '_dep72', '_img73' );" style="cursor: pointer; vertical-align: text-bottom;"></img><div id="_dep72" style="display:none">
 <table border="0" class="table table-striped">
 <tr class="a">
 <th>Apache Hadoop Annotations</th></tr>
@@ -1231,14 +1222,14 @@ The following provides more details on the included cryptographic software:
 <p><b>Description: </b>Apache Hadoop Annotations</p>
 <p><b>Project Licenses: </b><a class="externalLink" href="http://www.apache.org/licenses/LICENSE-2.0.txt">Apache License, Version 2.0</a></p></td></tr></table></div>
 <ul>
-<li>jdk.tools:jdk.tools:jar:1.8 (system) <img id="_img77" src="./images/icon_info_sml.gif" alt="[Information]" onclick="toggleDependencyDetails( '_dep76', '_img77' );" style="cursor: pointer; vertical-align: text-bottom;"></img><div id="_dep76" style="display:none">
+<li>jdk.tools:jdk.tools:jar:1.8 (system) <img id="_img75" src="./images/icon_info_sml.gif" alt="[Information]" onclick="toggleDependencyDetails( '_dep74', '_img75' );" style="cursor: pointer; vertical-align: text-bottom;"></img><div id="_dep74" style="display:none">
 <table border="0" class="table table-striped">
 <tr class="a">
 <th>jdk.tools:jdk.tools:jar:1.8</th></tr>
 <tr class="b">
 <td>
 <p><b>Description: </b>There is currently no description associated with this project.</p></td></tr></table></div></li></ul></li>
-<li>com.google.guava:guava:jar:11.0.2 (compile) <img id="_img79" src="./images/icon_info_sml.gif" alt="[Information]" onclick="toggleDependencyDetails( '_dep78', '_img79' );" style="cursor: pointer; vertical-align: text-bottom;"></img><div id="_dep78" style="display:none">
+<li>com.google.guava:guava:jar:11.0.2 (compile) <img id="_img77" src="./images/icon_info_sml.gif" alt="[Information]" onclick="toggleDependencyDetails( '_dep76', '_img77' );" style="cursor: pointer; vertical-align: text-bottom;"></img><div id="_dep76" style="display:none">
 <table border="0" class="table table-striped">
 <tr class="a">
 <th>Guava: Google Core Libraries for Java</th></tr>
@@ -1256,7 +1247,7 @@ The following provides more details on the included cryptographic software:
     per the JSR-305 spec.</p>
 <p><b>URL: </b><a class="externalLink" href="http://code.google.com/p/guava-libraries/guava">http://code.google.com/p/guava-libraries/guava</a></p>
 <p><b>Project Licenses: </b><a class="externalLink" href="http://www.apache.org/licenses/LICENSE-2.0.txt">The Apache Software License, Version 2.0</a></p></td></tr></table></div></li>
-<li>org.apache.commons:commons-math3:jar:3.6.1 (compile) <img id="_img81" src="./images/icon_info_sml.gif" alt="[Information]" onclick="toggleDependencyDetails( '_dep80', '_img81' );" style="cursor: pointer; vertical-align: text-bottom;"></img><div id="_dep80" style="display:none">
+<li>org.apache.commons:commons-math3:jar:3.6.1 (compile) <img id="_img79" src="./images/icon_info_sml.gif" alt="[Information]" onclick="toggleDependencyDetails( '_dep78', '_img79' );" style="cursor: pointer; vertical-align: text-bottom;"></img><div id="_dep78" style="display:none">
 <table border="0" class="table table-striped">
 <tr class="a">
 <th>Apache Commons Math</th></tr>
@@ -1265,7 +1256,7 @@ The following provides more details on the included cryptographic software:
 <p><b>Description: </b>The Apache Commons Math project is a library of lightweight, self-contained mathematics and statistics components addressing the most common practical problems not immediately available in the Java programming language or commons-lang.</p>
 <p><b>URL: </b><a class="externalLink" href="http://commons.apache.org/proper/commons-math/">http://commons.apache.org/proper/commons-math/</a></p>
 <p><b>Project Licenses: </b><a class="externalLink" href="http://www.apache.org/licenses/LICENSE-2.0.txt">Apache License, Version 2.0</a></p></td></tr></table></div></li>
-<li>xmlenc:xmlenc:jar:0.52 (compile) <img id="_img83" src="./images/icon_info_sml.gif" alt="[Information]" onclick="toggleDependencyDetails( '_dep82', '_img83' );" style="cursor: pointer; vertical-align: text-bottom;"></img><div id="_dep82" style="display:none">
+<li>xmlenc:xmlenc:jar:0.52 (compile) <img id="_img81" src="./images/icon_info_sml.gif" alt="[Information]" onclick="toggleDependencyDetails( '_dep80', '_img81' );" style="cursor: pointer; vertical-align: text-bottom;"></img><div id="_dep80" style="display:none">
 <table border="0" class="table table-striped">
 <tr class="a">
 <th>xmlenc Library</th></tr>
@@ -1274,7 +1265,7 @@ The following provides more details on the included cryptographic software:
 <p><b>Description: </b>xmlenc Library</p>
 <p><b>URL: </b><a class="externalLink" href="http://xmlenc.sourceforge.net">http://xmlenc.sourceforge.net</a></p>
 <p><b>Project Licenses: </b><a class="externalLink" href="http://www.opensource.org/licenses/bsd-license.php">The BSD License</a></p></td></tr></table></div></li>
-<li>commons-httpclient:commons-httpclient:jar:3.1 (compile) <img id="_img85" src="./images/icon_info_sml.gif" alt="[Information]" onclick="toggleDependencyDetails( '_dep84', '_img85' );" style="cursor: pointer; vertical-align: text-bottom;"></img><div id="_dep84" style="display:none">
+<li>commons-httpclient:commons-httpclient:jar:3.1 (compile) <img id="_img83" src="./images/icon_info_sml.gif" alt="[Information]" onclick="toggleDependencyDetails( '_dep82', '_img83' );" style="cursor: pointer; vertical-align: text-bottom;"></img><div id="_dep82" style="display:none">
 <table border="0" class="table table-striped">
 <tr class="a">
 <th>HttpClient</th></tr>
@@ -1283,7 +1274,7 @@ The following provides more details on the included cryptographic software:
 <p><b>Description: </b>The HttpClient  component supports the client-side of RFC 1945 (HTTP/1.0)  and RFC 2616 (HTTP/1.1) , several related specifications (RFC 2109 (Cookies) , RFC 2617 (HTTP Authentication) , etc.), and provides a framework by which new request types (methods) or HTTP extensions can be created easily.</p>
 <p><b>URL: </b><a class="externalLink" href="http://jakarta.apache.org/httpcomponents/httpclient-3.x/">http://jakarta.apache.org/httpcomponents/httpclient-3.x/</a></p>
 <p><b>Project Licenses: </b><a class="externalLink" href="http://www.apache.org/licenses/LICENSE-2.0">Apache License</a></p></td></tr></table></div></li>
-<li>commons-net:commons-net:jar:3.1 (compile) <img id="_img87" src="./images/icon_info_sml.gif" alt="[Information]" onclick="toggleDependencyDetails( '_dep86', '_img87' );" style="cursor: pointer; vertical-align: text-bottom;"></img><div id="_dep86" style="display:none">
+<li>commons-net:commons-net:jar:3.1 (compile) <img id="_img85" src="./images/icon_info_sml.gif" alt="[Information]" onclick="toggleDependencyDetails( '_dep84', '_img85' );" style="cursor: pointer; vertical-align: text-bottom;"></img><div id="_dep84" style="display:none">
 <table border="0" class="table table-striped">
 <tr class="a">
 <th>Commons Net</th></tr>
@@ -1293,7 +1284,7 @@ The following provides more details on the included cryptographic software:
 Supported protocols include: Echo, Finger, FTP, NNTP, NTP, POP3(S), SMTP(S), Telnet, Whois</p>
 <p><b>URL: </b><a class="externalLink" href="http://commons.apache.org/net/">http://commons.apache.org/net/</a></p>
 <p><b>Project Licenses: </b><a class="externalLink" href="http://www.apache.org/licenses/LICENSE-2.0.txt">The Apache Software License, Version 2.0</a></p></td></tr></table></div></li>
-<li>commons-collections:commons-collections:jar:3.2.2 (compile) <img id="_img89" src="./images/icon_info_sml.gif" alt="[Information]" onclick="toggleDependencyDetails( '_dep88', '_img89' );" style="cursor: pointer; vertical-align: text-bottom;"></img><div id="_dep88" style="display:none">
+<li>commons-collections:commons-collections:jar:3.2.2 (compile) <img id="_img87" src="./images/icon_info_sml.gif" alt="[Information]" onclick="toggleDependencyDetails( '_dep86', '_img87' );" style="cursor: pointer; vertical-align: text-bottom;"></img><div id="_dep86" style="display:none">
 <table border="0" class="table table-striped">
 <tr class="a">
 <th>Apache Commons Collections</th></tr>
@@ -1302,7 +1293,7 @@ Supported protocols include: Echo, Finger, FTP, NNTP, NTP, POP3(S), SMTP(S), Tel
 <p><b>Description: </b>Types that extend and augment the Java Collections Framework.</p>
 <p><b>URL: </b><a class="externalLink" href="http://commons.apache.org/collections/">http://commons.apache.org/collections/</a></p>
 <p><b>Project Licenses: </b><a class="externalLink" href="http://www.apache.org/licenses/LICENSE-2.0.txt">Apache License, Version 2.0</a></p></td></tr></table></div></li>
-<li>org.mortbay.jetty:jetty-sslengine:jar:6.1.26 (compile) <img id="_img91" src="./images/icon_info_sml.gif" alt="[Information]" onclick="toggleDependencyDetails( '_dep90', '_img91' );" style="cursor: pointer; vertical-align: text-bottom;"></img><div id="_dep90" style="display:none">
+<li>org.mortbay.jetty:jetty-sslengine:jar:6.1.26 (compile) <img id="_img89" src="./images/icon_info_sml.gif" alt="[Information]" onclick="toggleDependencyDetails( '_dep88', '_img89' );" style="cursor: pointer; vertical-align: text-bottom;"></img><div id="_dep88" style="display:none">
 <table border="0" class="table table-striped">
 <tr class="a">
 <th>Jetty SSLEngine</th></tr>
@@ -1311,7 +1302,7 @@ Supported protocols include: Echo, Finger, FTP, NNTP, NTP, POP3(S), SMTP(S), Tel
 <p><b>Description: </b>Parent pom for Jetty at Codehaus</p>
 <p><b>URL: </b><a class="externalLink" href="http://jetty.mortbay.org">http://jetty.mortbay.org</a></p>
 <p><b>Project Licenses: </b><a class="externalLink" href="http://www.apache.org/licenses/LICENSE-2.0">Apache License Version 2</a></p></td></tr></table></div></li>
-<li>commons-lang:commons-lang:jar:2.6 (compile) <img id="_img93" src="./images/icon_info_sml.gif" alt="[Information]" onclick="toggleDependencyDetails( '_dep92', '_img93' );" style="cursor: pointer; vertical-align: text-bottom;"></img><div id="_dep92" style="display:none">
+<li>commons-lang:commons-lang:jar:2.6 (compile) <img id="_img91" src="./images/icon_info_sml.gif" alt="[Information]" onclick="toggleDependencyDetails( '_dep90', '_img91' );" style="cursor: pointer; vertical-align: text-bottom;"></img><div id="_dep90" style="display:none">
 <table border="0" class="table table-striped">
 <tr class="a">
 <th>Commons Lang</th></tr>
@@ -1322,7 +1313,7 @@ Supported protocols include: Echo, Finger, FTP, NNTP, NTP, POP3(S), SMTP(S), Tel
         standard as to justify existence in java.lang.</p>
 <p><b>URL: </b><a class="externalLink" href="http://commons.apache.org/lang/">http://commons.apache.org/lang/</a></p>
 <p><b>Project Licenses: </b><a class="externalLink" href="http://www.apache.org/licenses/LICENSE-2.0.txt">The Apache Software License, Version 2.0</a></p></td></tr></table></div></li>
-<li>commons-configuration:commons-configuration:jar:1.6 (compile) <img id="_img95" src="./images/icon_info_sml.gif" alt="[Information]" onclick="toggleDependencyDetails( '_dep94', '_img95' );" style="cursor: pointer; vertical-align: text-bottom;"></img><div id="_dep94" style="display:none">
+<li>commons-configuration:commons-configuration:jar:1.6 (compile) <img id="_img93" src="./images/icon_info_sml.gif" alt="[Information]" onclick="toggleDependencyDetails( '_dep92', '_img93' );" style="cursor: pointer; vertical-align: text-bottom;"></img><div id="_dep92" style="display:none">
 <table border="0" class="table table-striped">
 <tr class="a">
 <th>Commons Configuration</th></tr>
@@ -1333,7 +1324,7 @@ Supported protocols include: Echo, Finger, FTP, NNTP, NTP, POP3(S), SMTP(S), Tel
 <p><b>URL: </b>http://commons.apache.org/${pom.artifactId.substring(8)}/</p>
 <p><b>Project Licenses: </b><a href="/LICENSE.txt">The Apache Software License, Version 2.0</a></p></td></tr></table></div>
 <ul>
-<li>commons-digester:commons-digester:jar:1.8 (compile) <img id="_img97" src="./images/icon_info_sml.gif" alt="[Information]" onclick="toggleDependencyDetails( '_dep96', '_img97' );" style="cursor: pointer; vertical-align: text-bottom;"></img><div id="_dep96" style="display:none">
+<li>commons-digester:commons-digester:jar:1.8 (compile) <img id="_img95" src="./images/icon_info_sml.gif" alt="[Information]" onclick="toggleDependencyDetails( '_dep94', '_img95' );" style="cursor: pointer; vertical-align: text-bottom;"></img><div id="_dep94" style="display:none">
 <table border="0" class="table table-striped">
 <tr class="a">
 <th>Digester</th></tr>
@@ -1344,7 +1335,7 @@ Supported protocols include: Echo, Finger, FTP, NNTP, NTP, POP3(S), SMTP(S), Tel
     pattern of nested XML elements is recognized.</p>
 <p><b>URL: </b><a class="externalLink" href="http://jakarta.apache.org/commons/digester/">http://jakarta.apache.org/commons/digester/</a></p>
 <p><b>Project Licenses: </b><a href="/LICENSE.txt">The Apache Software License, Version 2.0</a></p></td></tr></table></div></li>
-<li>commons-beanutils:commons-beanutils-core:jar:1.8.0 (compile) <img id="_img99" src="./images/icon_info_sml.gif" alt="[Information]" onclick="toggleDependencyDetails( '_dep98', '_img99' );" style="cursor: pointer; vertical-align: text-bottom;"></img><div id="_dep98" style="display:none">
+<li>commons-beanutils:commons-beanutils-core:jar:1.8.0 (compile) <img id="_img97" src="./images/icon_info_sml.gif" alt="[Information]" onclick="toggleDependencyDetails( '_dep96', '_img97' );" style="cursor: pointer; vertical-align: text-bottom;"></img><div id="_dep96" style="display:none">
 <table border="0" class="table table-striped">
 <tr class="a">
 <th>Commons BeanUtils Core</th></tr>
@@ -1357,7 +1348,7 @@ Supported protocols include: Echo, Finger, FTP, NNTP, NTP, POP3(S), SMTP(S), Tel
     and users.</p>
 <p><b>URL: </b><a class="externalLink" href="http://commons.apache.org/beanutils/">http://commons.apache.org/beanutils/</a></p>
 <p><b>Project Licenses: </b><a class="externalLink" href="http://www.apache.org/licenses/LICENSE-2.0.txt">The Apache Software License, Version 2.0</a></p></td></tr></table></div></li></ul></li>
-<li>org.apache.avro:avro:jar:1.7.7 (compile) <img id="_img101" src="./images/icon_info_sml.gif" alt="[Information]" onclick="toggleDependencyDetails( '_dep100', '_img101' );" style="cursor: pointer; vertical-align: text-bottom;"></img><div id="_dep100" style="display:none">
+<li>org.apache.avro:avro:jar:1.7.7 (compile) <img id="_img99" src="./images/icon_info_sml.gif" alt="[Information]" onclick="toggleDependencyDetails( '_dep98', '_img99' );" style="cursor: pointer; vertical-align: text-bottom;"></img><div id="_dep98" style="display:none">
 <table border="0" class="table table-striped">
 <tr class="a">
 <th>Apache Avro</th></tr>
@@ -1367,7 +1358,7 @@ Supported protocols include: Echo, Finger, FTP, NNTP, NTP, POP3(S), SMTP(S), Tel
 <p><b>URL: </b><a class="externalLink" href="http://avro.apache.org">http://avro.apache.org</a></p>
 <p><b>Project Licenses: </b><a class="externalLink" href="http://www.apache.org/licenses/LICENSE-2.0.txt">The Apache Software License, Version 2.0</a></p></td></tr></table></div>
 <ul>
-<li>com.thoughtworks.paranamer:paranamer:jar:2.3 (compile) <img id="_img103" src="./images/icon_info_sml.gif" alt="[Information]" onclick="toggleDependencyDetails( '_dep102', '_img103' );" style="cursor: pointer; vertical-align: text-bottom;"></img><div id="_dep102" style="display:none">
+<li>com.thoughtworks.paranamer:paranamer:jar:2.3 (compile) <img id="_img101" src="./images/icon_info_sml.gif" alt="[Information]" onclick="toggleDependencyDetails( '_dep100', '_img101' );" style="cursor: pointer; vertical-align: text-bottom;"></img><div id="_dep100" style="display:none">
 <table border="0" class="table table-striped">
 <tr class="a">
 <th>ParaNamer Core</th></tr>
@@ -1376,7 +1367,7 @@ Supported protocols include: Echo, Finger, FTP, NNTP, NTP, POP3(S), SMTP(S), Tel
 <p><b>Description: </b>Paranamer allows runtime access to constructor and method parameter names for Java classes</p>
 <p><b>URL: </b><a class="externalLink" href="http://paranamer.codehaus.org/paranamer">http://paranamer.codehaus.org/paranamer</a></p>
 <p><b>Project Licenses: </b><a href="LICENSE.txt">BSD</a></p></td></tr></table></div></li>
-<li>org.xerial.snappy:snappy-java:jar:1.0.5 (compile) <img id="_img105" src="./images/icon_info_sml.gif" alt="[Information]" onclick="toggleDependencyDetails( '_dep104', '_img105' );" style="cursor: pointer; vertical-align: text-bottom;"></img><div id="_dep104" style="display:none">
+<li>org.xerial.snappy:snappy-java:jar:1.0.5 (compile) <img id="_img103" src="./images/icon_info_sml.gif" alt="[Information]" onclick="toggleDependencyDetails( '_dep102', '_img103' );" style="cursor: pointer; vertical-align: text-bottom;"></img><div id="_dep102" style="display:none">
 <table border="0" class="table table-striped">
 <tr class="a">
 <th>Snappy for Java</th></tr>
@@ -1385,7 +1376,7 @@ Supported protocols include: Echo, Finger, FTP, NNTP, NTP, POP3(S), SMTP(S), Tel
 <p><b>Description: </b>snappy-java: A fast compression/decompression library</p>
 <p><b>URL: </b><a class="externalLink" href="http://github.com/xerial/snappy-java/">http://github.com/xerial/snappy-java/</a></p>
 <p><b>Project Licenses: </b><a class="externalLink" href="http://www.apache.org/licenses/LICENSE-2.0.txt">The Apache Software License, Version 2.0</a></p></td></tr></table></div></li></ul></li>
-<li>com.google.code.gson:gson:jar:2.2.4 (compile) <img id="_img107" src="./images/icon_info_sml.gif" alt="[Information]" onclick="toggleDependencyDetails( '_dep106', '_img107' );" style="cursor: pointer; vertical-align: text-bottom;"></img><div id="_dep106" style="display:none">
+<li>com.google.code.gson:gson:jar:2.2.4 (compile) <img id="_img105" src="./images/icon_info_sml.gif" alt="[Information]" onclick="toggleDependencyDetails( '_dep104', '_img105' );" style="cursor: pointer; vertical-align: text-bottom;"></img><div id="_dep104" style="display:none">
 <table border="0" class="table table-striped">
 <tr class="a">
 <th>Gson</th></tr>
@@ -1394,7 +1385,7 @@ Supported protocols include: Echo, Finger, FTP, NNTP, NTP, POP3(S), SMTP(S), Tel
 <p><b>Description: </b>Google Gson library</p>
 <p><b>URL: </b><a class="externalLink" href="http://code.google.com/p/google-gson/">http://code.google.com/p/google-gson/</a></p>
 <p><b>Project Licenses: </b><a class="externalLink" href="http://www.apache.org/licenses/LICENSE-2.0.txt">The Apache Software License, Version 2.0</a></p></td></tr></table></div></li>
-<li>com.jcraft:jsch:jar:0.1.54 (compile) <img id="_img109" src="./images/icon_info_sml.gif" alt="[Information]" onclick="toggleDependencyDetails( '_dep108', '_img109' );" style="cursor: pointer; vertical-align: text-bottom;"></img><div id="_dep108" style="display:none">
+<li>com.jcraft:jsch:jar:0.1.54 (compile) <img id="_img107" src="./images/icon_info_sml.gif" alt="[Information]" onclick="toggleDependencyDetails( '_dep106', '_img107' );" style="cursor: pointer; vertical-align: text-bottom;"></img><div id="_dep106" style="display:none">
 <table border="0" class="table table-striped">
 <tr class="a">
 <th>JSch</th></tr>
@@ -1403,6 +1394,15 @@ Supported protocols include: Echo, Finger, FTP, NNTP, NTP, POP3(S), SMTP(S), Tel
 <p><b>Description: </b>JSch is a pure Java implementation of SSH2</p>
 <p><b>URL: </b><a class="externalLink" href="http://www.jcraft.com/jsch/">http://www.jcraft.com/jsch/</a></p>
 <p><b>Project Licenses: </b><a class="externalLink" href="http://www.jcraft.com/jsch/LICENSE.txt">Revised BSD</a></p></td></tr></table></div></li>
+<li>org.apache.curator:curator-client:jar:4.0.0 (compile) <img id="_img109" src="./images/icon_info_sml.gif" alt="[Information]" onclick="toggleDependencyDetails( '_dep108', '_img109' );" style="cursor: pointer; vertical-align: text-bottom;"></img><div id="_dep108" style="display:none">
+<table border="0" class="table table-striped">
+<tr class="a">
+<th>Curator Client</th></tr>
+<tr class="b">
+<td>
+<p><b>Description: </b>Low-level API</p>
+<p><b>URL: </b><a class="externalLink" href="http://curator.apache.org/curator-client">http://curator.apache.org/curator-client</a></p>
+<p><b>Project Licenses: </b><a class="externalLink" href="http://www.apache.org/licenses/LICENSE-2.0.txt">The Apache Software License, Version 2.0</a></p></td></tr></table></div></li>
 <li>org.apache.curator:curator-recipes:jar:4.0.0 (compile) <img id="_img111" src="./images/icon_info_sml.gif" alt="[Information]" onclick="toggleDependencyDetails( '_dep110', '_img111' );" style="cursor: pointer; vertical-align: text-bottom;"></img><div id="_dep110" style="display:none">
 <table border="0" class="table table-striped">
 <tr class="a">
@@ -2883,7 +2883,7 @@ Jackson JSON processor's data binding functionality.</p>
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2017-12-02</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2017-12-03</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/c54c242b/hbase-shaded-check-invariants/dependency-convergence.html
----------------------------------------------------------------------
diff --git a/hbase-shaded-check-invariants/dependency-convergence.html b/hbase-shaded-check-invariants/dependency-convergence.html
index 77aa07a..2a676ed 100644
--- a/hbase-shaded-check-invariants/dependency-convergence.html
+++ b/hbase-shaded-check-invariants/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="20171202" />
+    <meta name="Date-Revision-yyyymmdd" content="20171203" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase Shaded Packaging Invariants &#x2013; Reactor Dependency Convergence</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -838,7 +838,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2017-12-02</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2017-12-03</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/c54c242b/hbase-shaded-check-invariants/dependency-info.html
----------------------------------------------------------------------
diff --git a/hbase-shaded-check-invariants/dependency-info.html b/hbase-shaded-check-invariants/dependency-info.html
index eb849f3..e06ec43 100644
--- a/hbase-shaded-check-invariants/dependency-info.html
+++ b/hbase-shaded-check-invariants/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="20171202" />
+    <meta name="Date-Revision-yyyymmdd" content="20171203" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase Shaded Packaging Invariants &#x2013; Dependency Information</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -148,7 +148,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2017-12-02</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2017-12-03</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/c54c242b/hbase-shaded-check-invariants/dependency-management.html
----------------------------------------------------------------------
diff --git a/hbase-shaded-check-invariants/dependency-management.html b/hbase-shaded-check-invariants/dependency-management.html
index c9db20d..01c4528 100644
--- a/hbase-shaded-check-invariants/dependency-management.html
+++ b/hbase-shaded-check-invariants/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="20171202" />
+    <meta name="Date-Revision-yyyymmdd" content="20171203" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase Shaded Packaging Invariants &#x2013; Project Dependency Management</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -804,7 +804,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2017-12-02</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2017-12-03</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/c54c242b/hbase-shaded-check-invariants/index.html
----------------------------------------------------------------------
diff --git a/hbase-shaded-check-invariants/index.html b/hbase-shaded-check-invariants/index.html
index e0e050f..fd4bf56 100644
--- a/hbase-shaded-check-invariants/index.html
+++ b/hbase-shaded-check-invariants/index.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="20171202" />
+    <meta name="Date-Revision-yyyymmdd" content="20171203" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase Shaded Packaging Invariants &#x2013; About</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -122,7 +122,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2017-12-02</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2017-12-03</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/c54c242b/hbase-shaded-check-invariants/integration.html
----------------------------------------------------------------------
diff --git a/hbase-shaded-check-invariants/integration.html b/hbase-shaded-check-invariants/integration.html
index e5c4c98..8ef734e 100644
--- a/hbase-shaded-check-invariants/integration.html
+++ b/hbase-shaded-check-invariants/integration.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="20171202" />
+    <meta name="Date-Revision-yyyymmdd" content="20171203" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase Shaded Packaging Invariants &#x2013; CI Management</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -126,7 +126,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2017-12-02</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2017-12-03</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/c54c242b/hbase-shaded-check-invariants/issue-tracking.html
----------------------------------------------------------------------
diff --git a/hbase-shaded-check-invariants/issue-tracking.html b/hbase-shaded-check-invariants/issue-tracking.html
index 4a8c9a2..428a31c 100644
--- a/hbase-shaded-check-invariants/issue-tracking.html
+++ b/hbase-shaded-check-invariants/issue-tracking.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="20171202" />
+    <meta name="Date-Revision-yyyymmdd" content="20171203" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase Shaded Packaging Invariants &#x2013; Issue Management</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -123,7 +123,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2017-12-02</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2017-12-03</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/c54c242b/hbase-shaded-check-invariants/license.html
----------------------------------------------------------------------
diff --git a/hbase-shaded-check-invariants/license.html b/hbase-shaded-check-invariants/license.html
index 9ba3ce6..dd14ef2 100644
--- a/hbase-shaded-check-invariants/license.html
+++ b/hbase-shaded-check-invariants/license.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="20171202" />
+    <meta name="Date-Revision-yyyymmdd" content="20171203" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase Shaded Packaging Invariants &#x2013; Project Licenses</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -326,7 +326,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2017-12-02</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2017-12-03</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/c54c242b/hbase-shaded-check-invariants/mail-lists.html
----------------------------------------------------------------------
diff --git a/hbase-shaded-check-invariants/mail-lists.html b/hbase-shaded-check-invariants/mail-lists.html
index 1e4d596..ab876df 100644
--- a/hbase-shaded-check-invariants/mail-lists.html
+++ b/hbase-shaded-check-invariants/mail-lists.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="20171202" />
+    <meta name="Date-Revision-yyyymmdd" content="20171203" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase Shaded Packaging Invariants &#x2013; Project Mailing Lists</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -176,7 +176,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2017-12-02</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2017-12-03</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/c54c242b/hbase-shaded-check-invariants/plugin-management.html
----------------------------------------------------------------------
diff --git a/hbase-shaded-check-invariants/plugin-management.html b/hbase-shaded-check-invariants/plugin-management.html
index f5525e7..6ab6e46 100644
--- a/hbase-shaded-check-invariants/plugin-management.html
+++ b/hbase-shaded-check-invariants/plugin-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="20171202" />
+    <meta name="Date-Revision-yyyymmdd" content="20171203" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase Shaded Packaging Invariants &#x2013; Project Plugin Management</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -271,7 +271,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2017-12-02</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2017-12-03</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/c54c242b/hbase-shaded-check-invariants/plugins.html
----------------------------------------------------------------------
diff --git a/hbase-shaded-check-invariants/plugins.html b/hbase-shaded-check-invariants/plugins.html
index fdf85fd..e9b9392 100644
--- a/hbase-shaded-check-invariants/plugins.html
+++ b/hbase-shaded-check-invariants/plugins.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="20171202" />
+    <meta name="Date-Revision-yyyymmdd" content="20171203" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase Shaded Packaging Invariants &#x2013; Project Plugins</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -218,7 +218,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2017-12-02</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2017-12-03</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/c54c242b/hbase-shaded-check-invariants/project-info.html
----------------------------------------------------------------------
diff --git a/hbase-shaded-check-invariants/project-info.html b/hbase-shaded-check-invariants/project-info.html
index 2309ec1..73fa63f 100644
--- a/hbase-shaded-check-invariants/project-info.html
+++ b/hbase-shaded-check-invariants/project-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="20171202" />
+    <meta name="Date-Revision-yyyymmdd" content="20171203" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase Shaded Packaging Invariants &#x2013; Project Information</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -170,7 +170,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2017-12-02</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2017-12-03</li>
             </p>
                 </div>
 


[41/51] [partial] hbase-site git commit: Published site at .

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/c54c242b/devapidocs/org/apache/hadoop/hbase/regionserver/HStore.StoreFlusherImpl.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/regionserver/HStore.StoreFlusherImpl.html b/devapidocs/org/apache/hadoop/hbase/regionserver/HStore.StoreFlusherImpl.html
index e1de268..c93055b 100644
--- a/devapidocs/org/apache/hadoop/hbase/regionserver/HStore.StoreFlusherImpl.html
+++ b/devapidocs/org/apache/hadoop/hbase/regionserver/HStore.StoreFlusherImpl.html
@@ -117,7 +117,7 @@ var activeTableTab = "activeTableTab";
 </dl>
 <hr>
 <br>
-<pre>private final class <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStore.html#line.2167">HStore.StoreFlusherImpl</a>
+<pre>private final class <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStore.html#line.2166">HStore.StoreFlusherImpl</a>
 extends <a href="http://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a>
 implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFlushContext.html" title="interface in org.apache.hadoop.hbase.regionserver">StoreFlushContext</a></pre>
 </li>
@@ -238,7 +238,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFlu
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/HStore.StoreFlusherImpl.html#getOutputFileSize--">getOutputFileSize</a></span>()</code>&nbsp;</td>
 </tr>
 <tr id="i5" class="rowColor">
-<td class="colFirst"><code>void</code></td>
+<td class="colFirst"><code><a href="../../../../../org/apache/hadoop/hbase/regionserver/MemStoreSize.html" title="class in org.apache.hadoop.hbase.regionserver">MemStoreSize</a></code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/HStore.StoreFlusherImpl.html#prepare--">prepare</a></span>()</code>
 <div class="block">This is not thread safe.</div>
 </td>
@@ -279,7 +279,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFlu
 <ul class="blockList">
 <li class="blockList">
 <h4>tracker</h4>
-<pre>private final&nbsp;<a href="../../../../../org/apache/hadoop/hbase/regionserver/FlushLifeCycleTracker.html" title="interface in org.apache.hadoop.hbase.regionserver">FlushLifeCycleTracker</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStore.StoreFlusherImpl.html#line.2169">tracker</a></pre>
+<pre>private final&nbsp;<a href="../../../../../org/apache/hadoop/hbase/regionserver/FlushLifeCycleTracker.html" title="interface in org.apache.hadoop.hbase.regionserver">FlushLifeCycleTracker</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStore.StoreFlusherImpl.html#line.2168">tracker</a></pre>
 </li>
 </ul>
 <a name="cacheFlushSeqNum">
@@ -288,7 +288,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFlu
 <ul class="blockList">
 <li class="blockList">
 <h4>cacheFlushSeqNum</h4>
-<pre>private final&nbsp;long <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStore.StoreFlusherImpl.html#line.2170">cacheFlushSeqNum</a></pre>
+<pre>private final&nbsp;long <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStore.StoreFlusherImpl.html#line.2169">cacheFlushSeqNum</a></pre>
 </li>
 </ul>
 <a name="snapshot">
@@ -297,7 +297,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFlu
 <ul class="blockList">
 <li class="blockList">
 <h4>snapshot</h4>
-<pre>private&nbsp;<a href="../../../../../org/apache/hadoop/hbase/regionserver/MemStoreSnapshot.html" title="class in org.apache.hadoop.hbase.regionserver">MemStoreSnapshot</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStore.StoreFlusherImpl.html#line.2171">snapshot</a></pre>
+<pre>private&nbsp;<a href="../../../../../org/apache/hadoop/hbase/regionserver/MemStoreSnapshot.html" title="class in org.apache.hadoop.hbase.regionserver">MemStoreSnapshot</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStore.StoreFlusherImpl.html#line.2170">snapshot</a></pre>
 </li>
 </ul>
 <a name="tempFiles">
@@ -306,7 +306,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFlu
 <ul class="blockList">
 <li class="blockList">
 <h4>tempFiles</h4>
-<pre>private&nbsp;<a href="http://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;org.apache.hadoop.fs.Path&gt; <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStore.StoreFlusherImpl.html#line.2172">tempFiles</a></pre>
+<pre>private&nbsp;<a href="http://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;org.apache.hadoop.fs.Path&gt; <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStore.StoreFlusherImpl.html#line.2171">tempFiles</a></pre>
 </li>
 </ul>
 <a name="committedFiles">
@@ -315,7 +315,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFlu
 <ul class="blockList">
 <li class="blockList">
 <h4>committedFiles</h4>
-<pre>private&nbsp;<a href="http://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;org.apache.hadoop.fs.Path&gt; <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStore.StoreFlusherImpl.html#line.2173">committedFiles</a></pre>
+<pre>private&nbsp;<a href="http://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;org.apache.hadoop.fs.Path&gt; <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStore.StoreFlusherImpl.html#line.2172">committedFiles</a></pre>
 </li>
 </ul>
 <a name="cacheFlushCount">
@@ -324,7 +324,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFlu
 <ul class="blockList">
 <li class="blockList">
 <h4>cacheFlushCount</h4>
-<pre>private&nbsp;long <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStore.StoreFlusherImpl.html#line.2174">cacheFlushCount</a></pre>
+<pre>private&nbsp;long <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStore.StoreFlusherImpl.html#line.2173">cacheFlushCount</a></pre>
 </li>
 </ul>
 <a name="cacheFlushSize">
@@ -333,7 +333,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFlu
 <ul class="blockList">
 <li class="blockList">
 <h4>cacheFlushSize</h4>
-<pre>private&nbsp;long <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStore.StoreFlusherImpl.html#line.2175">cacheFlushSize</a></pre>
+<pre>private&nbsp;long <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStore.StoreFlusherImpl.html#line.2174">cacheFlushSize</a></pre>
 </li>
 </ul>
 <a name="outputFileSize">
@@ -342,7 +342,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFlu
 <ul class="blockListLast">
 <li class="blockList">
 <h4>outputFileSize</h4>
-<pre>private&nbsp;long <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStore.StoreFlusherImpl.html#line.2176">outputFileSize</a></pre>
+<pre>private&nbsp;long <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStore.StoreFlusherImpl.html#line.2175">outputFileSize</a></pre>
 </li>
 </ul>
 </li>
@@ -359,7 +359,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFlu
 <ul class="blockListLast">
 <li class="blockList">
 <h4>StoreFlusherImpl</h4>
-<pre>private&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStore.StoreFlusherImpl.html#line.2178">StoreFlusherImpl</a>(long&nbsp;cacheFlushSeqNum,
+<pre>private&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStore.StoreFlusherImpl.html#line.2177">StoreFlusherImpl</a>(long&nbsp;cacheFlushSeqNum,
                          <a href="../../../../../org/apache/hadoop/hbase/regionserver/FlushLifeCycleTracker.html" title="interface in org.apache.hadoop.hbase.regionserver">FlushLifeCycleTracker</a>&nbsp;tracker)</pre>
 </li>
 </ul>
@@ -377,12 +377,14 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFlu
 <ul class="blockList">
 <li class="blockList">
 <h4>prepare</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStore.StoreFlusherImpl.html#line.2188">prepare</a>()</pre>
+<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/regionserver/MemStoreSize.html" title="class in org.apache.hadoop.hbase.regionserver">MemStoreSize</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HStore.StoreFlusherImpl.html#line.2187">prepare</a>()</pre>
 <div class="block">This is not thread safe. The caller should have a lock on the region or the store.
  If necessary, the lock can be added with the patch provided in HBASE-10087</div>
 <dl>
 <dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
 <dd><code><a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFlushContext.html#prepare--">prepare</a></code>&nbsp;in interface&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/regionserver/StoreFlushContext.html" title="interface in org.apache.hadoop.hbase.regionserver">StoreFlushContext</a></code></dd>
+<dt><span class="returnLabel">Returns:</span></dt>
+<dd>The size of snapshot to flush</dd>
 </dl>
 </li>
 </ul>


[47/51] [partial] hbase-site git commit: Published site at .

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/c54c242b/devapidocs/index-all.html
----------------------------------------------------------------------
diff --git a/devapidocs/index-all.html b/devapidocs/index-all.html
index 6ec5fff..eb11eb0 100644
--- a/devapidocs/index-all.html
+++ b/devapidocs/index-all.html
@@ -5267,8 +5267,6 @@
 <div class="block">Call back triggered by a individual member upon successful local in-barrier execution and
  release</div>
 </dd>
-<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/regionserver/wal/WALActionsListener.Base.html#Base--">Base()</a></span> - Constructor for class org.apache.hadoop.hbase.regionserver.wal.<a href="org/apache/hadoop/hbase/regionserver/wal/WALActionsListener.Base.html" title="class in org.apache.hadoop.hbase.regionserver.wal">WALActionsListener.Base</a></dt>
-<dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/types/FixedLengthWrapper.html#base">base</a></span> - Variable in class org.apache.hadoop.hbase.types.<a href="org/apache/hadoop/hbase/types/FixedLengthWrapper.html" title="class in org.apache.hadoop.hbase.types">FixedLengthWrapper</a></dt>
 <dd>&nbsp;</dd>
 <dt><a href="org/apache/hadoop/hbase/util/Base64.html" title="class in org.apache.hadoop.hbase.util"><span class="typeNameLink">Base64</span></a> - Class in <a href="org/apache/hadoop/hbase/util/package-summary.html">org.apache.hadoop.hbase.util</a></dt>
@@ -12585,6 +12583,10 @@
 <dd>
 <div class="block">Close all of the output streams.</div>
 </dd>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/zookeeper/ReadOnlyZKClient.html#CLOSE">CLOSE</a></span> - Static variable in class org.apache.hadoop.hbase.zookeeper.<a href="org/apache/hadoop/hbase/zookeeper/ReadOnlyZKClient.html" title="class in org.apache.hadoop.hbase.zookeeper">ReadOnlyZKClient</a></dt>
+<dd>&nbsp;</dd>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/zookeeper/ReadOnlyZKClient.html#close--">close()</a></span> - Method in class org.apache.hadoop.hbase.zookeeper.<a href="org/apache/hadoop/hbase/zookeeper/ReadOnlyZKClient.html" title="class in org.apache.hadoop.hbase.zookeeper">ReadOnlyZKClient</a></dt>
+<dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/zookeeper/RecoverableZooKeeper.html#close--">close()</a></span> - Method in class org.apache.hadoop.hbase.zookeeper.<a href="org/apache/hadoop/hbase/zookeeper/RecoverableZooKeeper.html" title="class in org.apache.hadoop.hbase.zookeeper">RecoverableZooKeeper</a></dt>
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/zookeeper/ZKWatcher.html#close--">close()</a></span> - Method in class org.apache.hadoop.hbase.zookeeper.<a href="org/apache/hadoop/hbase/zookeeper/ZKWatcher.html" title="class in org.apache.hadoop.hbase.zookeeper">ZKWatcher</a></dt>
@@ -12691,6 +12693,12 @@
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/wal/DisabledWALProvider.DisabledWAL.html#closed">closed</a></span> - Variable in class org.apache.hadoop.hbase.wal.<a href="org/apache/hadoop/hbase/wal/DisabledWALProvider.DisabledWAL.html" title="class in org.apache.hadoop.hbase.wal">DisabledWALProvider.DisabledWAL</a></dt>
 <dd>&nbsp;</dd>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/zookeeper/ReadOnlyZKClient.html#closed">closed</a></span> - Variable in class org.apache.hadoop.hbase.zookeeper.<a href="org/apache/hadoop/hbase/zookeeper/ReadOnlyZKClient.html" title="class in org.apache.hadoop.hbase.zookeeper">ReadOnlyZKClient</a></dt>
+<dd>&nbsp;</dd>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/zookeeper/ReadOnlyZKClient.Task.html#closed-java.io.IOException-">closed(IOException)</a></span> - Method in class org.apache.hadoop.hbase.zookeeper.<a href="org/apache/hadoop/hbase/zookeeper/ReadOnlyZKClient.Task.html" title="class in org.apache.hadoop.hbase.zookeeper">ReadOnlyZKClient.Task</a></dt>
+<dd>&nbsp;</dd>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/zookeeper/ReadOnlyZKClient.ZKTask.html#closed-java.io.IOException-">closed(IOException)</a></span> - Method in class org.apache.hadoop.hbase.zookeeper.<a href="org/apache/hadoop/hbase/zookeeper/ReadOnlyZKClient.ZKTask.html" title="class in org.apache.hadoop.hbase.zookeeper">ReadOnlyZKClient.ZKTask</a></dt>
+<dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/security/visibility/VisibilityConstants.html#CLOSED_PARAN">CLOSED_PARAN</a></span> - Static variable in class org.apache.hadoop.hbase.security.visibility.<a href="org/apache/hadoop/hbase/security/visibility/VisibilityConstants.html" title="class in org.apache.hadoop.hbase.security.visibility">VisibilityConstants</a></dt>
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/regionserver/StoreFileWriter.html#closeDeleteFamilyBloomFilter--">closeDeleteFamilyBloomFilter()</a></span> - Method in class org.apache.hadoop.hbase.regionserver.<a href="org/apache/hadoop/hbase/regionserver/StoreFileWriter.html" title="class in org.apache.hadoop.hbase.regionserver">StoreFileWriter</a></dt>
@@ -12914,6 +12922,8 @@
 <dd>
 <div class="block">Schedule closes on all user regions.</div>
 </dd>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/zookeeper/ReadOnlyZKClient.html#closeZk--">closeZk()</a></span> - Method in class org.apache.hadoop.hbase.zookeeper.<a href="org/apache/hadoop/hbase/zookeeper/ReadOnlyZKClient.html" title="class in org.apache.hadoop.hbase.zookeeper">ReadOnlyZKClient</a></dt>
+<dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/regionserver/HRegion.html#closing">closing</a></span> - Variable in class org.apache.hadoop.hbase.regionserver.<a href="org/apache/hadoop/hbase/regionserver/HRegion.html" title="class in org.apache.hadoop.hbase.regionserver">HRegion</a></dt>
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/regionserver/StoreScanner.html#closing">closing</a></span> - Variable in class org.apache.hadoop.hbase.regionserver.<a href="org/apache/hadoop/hbase/regionserver/StoreScanner.html" title="class in org.apache.hadoop.hbase.regionserver">StoreScanner</a></dt>
@@ -14970,6 +14980,8 @@
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/wal/WALSplitter.MutationReplay.html#compareTo-org.apache.hadoop.hbase.wal.WALSplitter.MutationReplay-">compareTo(WALSplitter.MutationReplay)</a></span> - Method in class org.apache.hadoop.hbase.wal.<a href="org/apache/hadoop/hbase/wal/WALSplitter.MutationReplay.html" title="class in org.apache.hadoop.hbase.wal">WALSplitter.MutationReplay</a></dt>
 <dd>&nbsp;</dd>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/zookeeper/ReadOnlyZKClient.Task.html#compareTo-java.util.concurrent.Delayed-">compareTo(Delayed)</a></span> - Method in class org.apache.hadoop.hbase.zookeeper.<a href="org/apache/hadoop/hbase/zookeeper/ReadOnlyZKClient.Task.html" title="class in org.apache.hadoop.hbase.zookeeper">ReadOnlyZKClient.Task</a></dt>
+<dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/regionserver/compactions/CompactionWindow.html#compareToTimestamp-long-">compareToTimestamp(long)</a></span> - Method in class org.apache.hadoop.hbase.regionserver.compactions.<a href="org/apache/hadoop/hbase/regionserver/compactions/CompactionWindow.html" title="class in org.apache.hadoop.hbase.regionserver.compactions">CompactionWindow</a></dt>
 <dd>
 <div class="block">Compares the window to a timestamp.</div>
@@ -16231,6 +16243,10 @@
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/master/ClusterStatusPublisher.html#connected">connected</a></span> - Variable in class org.apache.hadoop.hbase.master.<a href="org/apache/hadoop/hbase/master/ClusterStatusPublisher.html" title="class in org.apache.hadoop.hbase.master">ClusterStatusPublisher</a></dt>
 <dd>&nbsp;</dd>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/zookeeper/ReadOnlyZKClient.Task.html#connectFailed-java.io.IOException-">connectFailed(IOException)</a></span> - Method in class org.apache.hadoop.hbase.zookeeper.<a href="org/apache/hadoop/hbase/zookeeper/ReadOnlyZKClient.Task.html" title="class in org.apache.hadoop.hbase.zookeeper">ReadOnlyZKClient.Task</a></dt>
+<dd>&nbsp;</dd>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/zookeeper/ReadOnlyZKClient.ZKTask.html#connectFailed-java.io.IOException-">connectFailed(IOException)</a></span> - Method in class org.apache.hadoop.hbase.zookeeper.<a href="org/apache/hadoop/hbase/zookeeper/ReadOnlyZKClient.ZKTask.html" title="class in org.apache.hadoop.hbase.zookeeper">ReadOnlyZKClient.ZKTask</a></dt>
+<dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/backup/BackupHFileCleaner.html#connection">connection</a></span> - Variable in class org.apache.hadoop.hbase.backup.<a href="org/apache/hadoop/hbase/backup/BackupHFileCleaner.html" title="class in org.apache.hadoop.hbase.backup">BackupHFileCleaner</a></dt>
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/backup/example/ZKTableArchiveClient.html#connection">connection</a></span> - Variable in class org.apache.hadoop.hbase.backup.example.<a href="org/apache/hadoop/hbase/backup/example/ZKTableArchiveClient.html" title="class in org.apache.hadoop.hbase.backup.example">ZKTableArchiveClient</a></dt>
@@ -16466,6 +16482,8 @@
  localhost if the invocation target is 'this' server; save on network and protobuf
  invocations.</div>
 </dd>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/zookeeper/ReadOnlyZKClient.html#connectString">connectString</a></span> - Variable in class org.apache.hadoop.hbase.zookeeper.<a href="org/apache/hadoop/hbase/zookeeper/ReadOnlyZKClient.html" title="class in org.apache.hadoop.hbase.zookeeper">ReadOnlyZKClient</a></dt>
+<dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/ipc/AbstractRpcClient.html#connectTO">connectTO</a></span> - Variable in class org.apache.hadoop.hbase.ipc.<a href="org/apache/hadoop/hbase/ipc/AbstractRpcClient.html" title="class in org.apache.hadoop.hbase.ipc">AbstractRpcClient</a></dt>
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/io/asyncfs/FanOutOneBlockAsyncDFSOutputHelper.html#connectToDataNodes-org.apache.hadoop.conf.Configuration-org.apache.hadoop.hdfs.DFSClient-java.lang.String-org.apache.hadoop.hdfs.protocol.LocatedBlock-long-long-org.apache.hadoop.hdfs.protocol.datatransfer.BlockConstructionStage-org.apache.hadoop.util.DataChecksum-org.apache.hadoop.hbase.shaded.io.netty.channel.EventLoopGroup-java.lang.Class-">connectToDataNodes(Configuration, DFSClient, String, LocatedBlock, long, long, BlockConstructionStage, DataChecksum, EventLoopGroup, Class&lt;? extends Channel&gt;)</a></span> - Static method in class org.apache.hadoop.hbase.io.asyncfs.<a href="org/apache/hadoop/hbase/io/asyncfs/FanOutOneBlockAsyncDFSOutputHelper.html" title="class in org.apache.hadoop.hbase.io.asyncfs">FanOutOneBlockAsyncDFSOutputHelper</a></dt>
@@ -16902,6 +16920,8 @@
 <dd>
 <div class="block">Covert to PB version of State</div>
 </dd>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/client/ZKAsyncRegistry.Converter.html#convert-byte:A-">convert(byte[])</a></span> - Method in interface org.apache.hadoop.hbase.client.<a href="org/apache/hadoop/hbase/client/ZKAsyncRegistry.Converter.html" title="interface in org.apache.hadoop.hbase.client">ZKAsyncRegistry.Converter</a></dt>
+<dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/ClusterId.html#convert--">convert()</a></span> - Method in class org.apache.hadoop.hbase.<a href="org/apache/hadoop/hbase/ClusterId.html" title="class in org.apache.hadoop.hbase">ClusterId</a></dt>
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/ClusterId.html#convert-org.apache.hadoop.hbase.shaded.protobuf.generated.ClusterIdProtos.ClusterId-">convert(ClusterIdProtos.ClusterId)</a></span> - Static method in class org.apache.hadoop.hbase.<a href="org/apache/hadoop/hbase/ClusterId.html" title="class in org.apache.hadoop.hbase">ClusterId</a></dt>
@@ -22389,6 +22409,8 @@
 &nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/regionserver/ScannerContext.html#DEFAULT_KEEP_PROGRESS">DEFAULT_KEEP_PROGRESS</a></span> - Static variable in class org.apache.hadoop.hbase.regionserver.<a href="org/apache/hadoop/hbase/regionserver/ScannerContext.html" title="class in org.apache.hadoop.hbase.regionserver">ScannerContext</a></dt>
 <dd>&nbsp;</dd>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/zookeeper/ReadOnlyZKClient.html#DEFAULT_KEEPALIVE_MILLIS">DEFAULT_KEEPALIVE_MILLIS</a></span> - Static variable in class org.apache.hadoop.hbase.zookeeper.<a href="org/apache/hadoop/hbase/zookeeper/ReadOnlyZKClient.html" title="class in org.apache.hadoop.hbase.zookeeper">ReadOnlyZKClient</a></dt>
+<dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/security/token/ZKSecretWatcher.html#DEFAULT_KEYS_PARENT">DEFAULT_KEYS_PARENT</a></span> - Static variable in class org.apache.hadoop.hbase.security.token.<a href="org/apache/hadoop/hbase/security/token/ZKSecretWatcher.html" title="class in org.apache.hadoop.hbase.security.token">ZKSecretWatcher</a></dt>
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/util/Strings.html#DEFAULT_KEYVALUE_SEPARATOR">DEFAULT_KEYVALUE_SEPARATOR</a></span> - Static variable in class org.apache.hadoop.hbase.util.<a href="org/apache/hadoop/hbase/util/Strings.html" title="class in org.apache.hadoop.hbase.util">Strings</a></dt>
@@ -22700,6 +22722,10 @@
 &nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/rsgroup/RSGroupInfoManager.html#DEFAULT_REASSIGN_WAIT_INTERVAL">DEFAULT_REASSIGN_WAIT_INTERVAL</a></span> - Static variable in interface org.apache.hadoop.hbase.rsgroup.<a href="org/apache/hadoop/hbase/rsgroup/RSGroupInfoManager.html" title="interface in org.apache.hadoop.hbase.rsgroup">RSGroupInfoManager</a></dt>
 <dd>&nbsp;</dd>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/zookeeper/ReadOnlyZKClient.html#DEFAULT_RECOVERY_RETRY">DEFAULT_RECOVERY_RETRY</a></span> - Static variable in class org.apache.hadoop.hbase.zookeeper.<a href="org/apache/hadoop/hbase/zookeeper/ReadOnlyZKClient.html" title="class in org.apache.hadoop.hbase.zookeeper">ReadOnlyZKClient</a></dt>
+<dd>&nbsp;</dd>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/zookeeper/ReadOnlyZKClient.html#DEFAULT_RECOVERY_RETRY_INTERVAL_MILLIS">DEFAULT_RECOVERY_RETRY_INTERVAL_MILLIS</a></span> - Static variable in class org.apache.hadoop.hbase.zookeeper.<a href="org/apache/hadoop/hbase/zookeeper/ReadOnlyZKClient.html" title="class in org.apache.hadoop.hbase.zookeeper">ReadOnlyZKClient</a></dt>
+<dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/master/balancer/StochasticLoadBalancer.RegionCountSkewCostFunction.html#DEFAULT_REGION_COUNT_SKEW_COST">DEFAULT_REGION_COUNT_SKEW_COST</a></span> - Static variable in class org.apache.hadoop.hbase.master.balancer.<a href="org/apache/hadoop/hbase/master/balancer/StochasticLoadBalancer.RegionCountSkewCostFunction.html" title="class in org.apache.hadoop.hbase.master.balancer">StochasticLoadBalancer.RegionCountSkewCostFunction</a></dt>
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/wal/RegionGroupingProvider.html#DEFAULT_REGION_GROUPING_STRATEGY">DEFAULT_REGION_GROUPING_STRATEGY</a></span> - Static variable in class org.apache.hadoop.hbase.wal.<a href="org/apache/hadoop/hbase/wal/RegionGroupingProvider.html" title="class in org.apache.hadoop.hbase.wal">RegionGroupingProvider</a></dt>
@@ -23199,6 +23225,8 @@
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/JMXListener.html#defRegionserverRMIRegistryPort">defRegionserverRMIRegistryPort</a></span> - Static variable in class org.apache.hadoop.hbase.<a href="org/apache/hadoop/hbase/JMXListener.html" title="class in org.apache.hadoop.hbase">JMXListener</a></dt>
 <dd>&nbsp;</dd>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/zookeeper/ReadOnlyZKClient.ZKTask.html#delay-long-int-">delay(long, int)</a></span> - Method in class org.apache.hadoop.hbase.zookeeper.<a href="org/apache/hadoop/hbase/zookeeper/ReadOnlyZKClient.ZKTask.html" title="class in org.apache.hadoop.hbase.zookeeper">ReadOnlyZKClient.ZKTask</a></dt>
+<dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/procedure2/util/DelayedUtil.html#DELAYED_POISON">DELAYED_POISON</a></span> - Static variable in class org.apache.hadoop.hbase.procedure2.util.<a href="org/apache/hadoop/hbase/procedure2/util/DelayedUtil.html" title="class in org.apache.hadoop.hbase.procedure2.util">DelayedUtil</a></dt>
 <dd>
 <div class="block">POISON implementation; used to mark special state: e.g.</div>
@@ -28042,8 +28070,6 @@
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/client/FailureInfo.html#exclusivelyRetringInspiteOfFastFail">exclusivelyRetringInspiteOfFastFail</a></span> - Variable in class org.apache.hadoop.hbase.client.<a href="org/apache/hadoop/hbase/client/FailureInfo.html" title="class in org.apache.hadoop.hbase.client">FailureInfo</a></dt>
 <dd>&nbsp;</dd>
-<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/client/ZKAsyncRegistry.html#exec-org.apache.curator.framework.api.BackgroundPathable-java.lang.String-org.apache.hadoop.hbase.client.ZKAsyncRegistry.CuratorEventProcessor-">exec(BackgroundPathable&lt;?&gt;, String, ZKAsyncRegistry.CuratorEventProcessor&lt;T&gt;)</a></span> - Static method in class org.apache.hadoop.hbase.client.<a href="org/apache/hadoop/hbase/client/ZKAsyncRegistry.html" title="class in org.apache.hadoop.hbase.client">ZKAsyncRegistry</a></dt>
-<dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/regionserver/SplitLogWorker.TaskExecutor.html#exec-java.lang.String-org.apache.hadoop.hbase.util.CancelableProgressable-">exec(String, CancelableProgressable)</a></span> - Method in interface org.apache.hadoop.hbase.regionserver.<a href="org/apache/hadoop/hbase/regionserver/SplitLogWorker.TaskExecutor.html" title="interface in org.apache.hadoop.hbase.regionserver">SplitLogWorker.TaskExecutor</a></dt>
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/replication/regionserver/HBaseInterClusterReplicationEndpoint.html#exec">exec</a></span> - Variable in class org.apache.hadoop.hbase.replication.regionserver.<a href="org/apache/hadoop/hbase/replication/regionserver/HBaseInterClusterReplicationEndpoint.html" title="class in org.apache.hadoop.hbase.replication.regionserver">HBaseInterClusterReplicationEndpoint</a></dt>
@@ -28052,6 +28078,8 @@
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/util/HBaseFsck.html#exec-java.util.concurrent.ExecutorService-java.lang.String:A-">exec(ExecutorService, String[])</a></span> - Method in class org.apache.hadoop.hbase.util.<a href="org/apache/hadoop/hbase/util/HBaseFsck.html" title="class in org.apache.hadoop.hbase.util">HBaseFsck</a></dt>
 <dd>&nbsp;</dd>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/zookeeper/ReadOnlyZKClient.Task.html#exec-org.apache.zookeeper.ZooKeeper-">exec(ZooKeeper)</a></span> - Method in class org.apache.hadoop.hbase.zookeeper.<a href="org/apache/hadoop/hbase/zookeeper/ReadOnlyZKClient.Task.html" title="class in org.apache.hadoop.hbase.zookeeper">ReadOnlyZKClient.Task</a></dt>
+<dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/security/access/AccessControlConstants.html#EXEC_PERMISSION_CHECKS_KEY">EXEC_PERMISSION_CHECKS_KEY</a></span> - Static variable in interface org.apache.hadoop.hbase.security.access.<a href="org/apache/hadoop/hbase/security/access/AccessControlConstants.html" title="interface in org.apache.hadoop.hbase.security.access">AccessControlConstants</a></dt>
 <dd>
 <div class="block">Configuration option that toggles whether EXEC permission checking is
@@ -28476,6 +28504,8 @@
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/thrift2/ThriftHBaseServiceHandler.html#exists-java.nio.ByteBuffer-org.apache.hadoop.hbase.thrift2.generated.TGet-">exists(ByteBuffer, TGet)</a></span> - Method in class org.apache.hadoop.hbase.thrift2.<a href="org/apache/hadoop/hbase/thrift2/ThriftHBaseServiceHandler.html" title="class in org.apache.hadoop.hbase.thrift2">ThriftHBaseServiceHandler</a></dt>
 <dd>&nbsp;</dd>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/zookeeper/ReadOnlyZKClient.html#exists-java.lang.String-">exists(String)</a></span> - Method in class org.apache.hadoop.hbase.zookeeper.<a href="org/apache/hadoop/hbase/zookeeper/ReadOnlyZKClient.html" title="class in org.apache.hadoop.hbase.zookeeper">ReadOnlyZKClient</a></dt>
+<dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/zookeeper/RecoverableZooKeeper.html#exists-java.lang.String-org.apache.zookeeper.Watcher-">exists(String, Watcher)</a></span> - Method in class org.apache.hadoop.hbase.zookeeper.<a href="org/apache/hadoop/hbase/zookeeper/RecoverableZooKeeper.html" title="class in org.apache.hadoop.hbase.zookeeper">RecoverableZooKeeper</a></dt>
 <dd>
 <div class="block">exists is an idempotent operation.</div>
@@ -28855,6 +28885,8 @@
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/ipc/BufferCallBeforeInitHandler.BufferCallEvent.html#fail-java.io.IOException-">fail(IOException)</a></span> - Static method in class org.apache.hadoop.hbase.ipc.<a href="org/apache/hadoop/hbase/ipc/BufferCallBeforeInitHandler.BufferCallEvent.html" title="class in org.apache.hadoop.hbase.ipc">BufferCallBeforeInitHandler.BufferCallEvent</a></dt>
 <dd>&nbsp;</dd>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/zookeeper/ReadOnlyZKClient.html#FAIL_FAST_CODES">FAIL_FAST_CODES</a></span> - Static variable in class org.apache.hadoop.hbase.zookeeper.<a href="org/apache/hadoop/hbase/zookeeper/ReadOnlyZKClient.html" title="class in org.apache.hadoop.hbase.zookeeper">ReadOnlyZKClient</a></dt>
+<dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/client/AsyncBatchRpcRetryingCaller.html#failAll-java.util.stream.Stream-int-java.lang.Throwable-org.apache.hadoop.hbase.ServerName-">failAll(Stream&lt;Action&gt;, int, Throwable, ServerName)</a></span> - Method in class org.apache.hadoop.hbase.client.<a href="org/apache/hadoop/hbase/client/AsyncBatchRpcRetryingCaller.html" title="class in org.apache.hadoop.hbase.client">AsyncBatchRpcRetryingCaller</a></dt>
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/client/AsyncBatchRpcRetryingCaller.html#failAll-java.util.stream.Stream-int-">failAll(Stream&lt;Action&gt;, int)</a></span> - Method in class org.apache.hadoop.hbase.client.<a href="org/apache/hadoop/hbase/client/AsyncBatchRpcRetryingCaller.html" title="class in org.apache.hadoop.hbase.client">AsyncBatchRpcRetryingCaller</a></dt>
@@ -28879,6 +28911,8 @@
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/ipc/ServerRpcController.html#failed--">failed()</a></span> - Method in class org.apache.hadoop.hbase.ipc.<a href="org/apache/hadoop/hbase/ipc/ServerRpcController.html" title="class in org.apache.hadoop.hbase.ipc">ServerRpcController</a></dt>
 <dd>&nbsp;</dd>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/zookeeper/ReadOnlyZKClient.html#failed-java.lang.Throwable-">failed(Throwable)</a></span> - Static method in class org.apache.hadoop.hbase.zookeeper.<a href="org/apache/hadoop/hbase/zookeeper/ReadOnlyZKClient.html" title="class in org.apache.hadoop.hbase.zookeeper">ReadOnlyZKClient</a></dt>
+<dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/rest/MetricsRESTSource.html#FAILED_APPEND_KEY">FAILED_APPEND_KEY</a></span> - Static variable in interface org.apache.hadoop.hbase.rest.<a href="org/apache/hadoop/hbase/rest/MetricsRESTSource.html" title="interface in org.apache.hadoop.hbase.rest">MetricsRESTSource</a></dt>
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/metrics/OperationMetrics.html#FAILED_COUNT">FAILED_COUNT</a></span> - Static variable in class org.apache.hadoop.hbase.metrics.<a href="org/apache/hadoop/hbase/metrics/OperationMetrics.html" title="class in org.apache.hadoop.hbase.metrics">OperationMetrics</a></dt>
@@ -32228,6 +32262,8 @@
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/io/asyncfs/FanOutOneBlockAsyncDFSOutput.Callback.html#future">future</a></span> - Variable in class org.apache.hadoop.hbase.io.asyncfs.<a href="org/apache/hadoop/hbase/io/asyncfs/FanOutOneBlockAsyncDFSOutput.Callback.html" title="class in org.apache.hadoop.hbase.io.asyncfs">FanOutOneBlockAsyncDFSOutput.Callback</a></dt>
 <dd>&nbsp;</dd>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/zookeeper/ReadOnlyZKClient.ZKTask.html#future">future</a></span> - Variable in class org.apache.hadoop.hbase.zookeeper.<a href="org/apache/hadoop/hbase/zookeeper/ReadOnlyZKClient.ZKTask.html" title="class in org.apache.hadoop.hbase.zookeeper">ReadOnlyZKClient.ZKTask</a></dt>
+<dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/backup/regionserver/LogRollBackupSubprocedurePool.html#futures">futures</a></span> - Variable in class org.apache.hadoop.hbase.backup.regionserver.<a href="org/apache/hadoop/hbase/backup/regionserver/LogRollBackupSubprocedurePool.html" title="class in org.apache.hadoop.hbase.backup.regionserver">LogRollBackupSubprocedurePool</a></dt>
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/client/AsyncBatchRpcRetryingCaller.html#futures">futures</a></span> - Variable in class org.apache.hadoop.hbase.client.<a href="org/apache/hadoop/hbase/client/AsyncBatchRpcRetryingCaller.html" title="class in org.apache.hadoop.hbase.client">AsyncBatchRpcRetryingCaller</a></dt>
@@ -32881,6 +32917,8 @@
 <dd>
 <div class="block">Returns the instance given by the method <a href="org/apache/hadoop/hbase/zookeeper/InstancePending.html#prepare-T-"><code>InstancePending.prepare(T)</code></a>.</div>
 </dd>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/zookeeper/ReadOnlyZKClient.html#get-java.lang.String-">get(String)</a></span> - Method in class org.apache.hadoop.hbase.zookeeper.<a href="org/apache/hadoop/hbase/zookeeper/ReadOnlyZKClient.html" title="class in org.apache.hadoop.hbase.zookeeper">ReadOnlyZKClient</a></dt>
+<dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/metrics2/lib/DynamicMetricsRegistry.html#get-java.lang.String-">get(String)</a></span> - Method in class org.apache.hadoop.metrics2.lib.<a href="org/apache/hadoop/metrics2/lib/DynamicMetricsRegistry.html" title="class in org.apache.hadoop.metrics2.lib">DynamicMetricsRegistry</a></dt>
 <dd>
 <div class="block">Get a metric by name</div>
@@ -33377,6 +33415,8 @@
 <dd>
 <div class="block">Check passed name.</div>
 </dd>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/client/ZKAsyncRegistry.html#getAndConvert-java.lang.String-org.apache.hadoop.hbase.client.ZKAsyncRegistry.Converter-">getAndConvert(String, ZKAsyncRegistry.Converter&lt;T&gt;)</a></span> - Method in class org.apache.hadoop.hbase.client.<a href="org/apache/hadoop/hbase/client/ZKAsyncRegistry.html" title="class in org.apache.hadoop.hbase.client">ZKAsyncRegistry</a></dt>
+<dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/wal/BoundedGroupingStrategy.html#getAndIncrAtomicInteger-java.util.concurrent.atomic.AtomicInteger-int-">getAndIncrAtomicInteger(AtomicInteger, int)</a></span> - Method in class org.apache.hadoop.hbase.wal.<a href="org/apache/hadoop/hbase/wal/BoundedGroupingStrategy.html" title="class in org.apache.hadoop.hbase.wal">BoundedGroupingStrategy</a></dt>
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hbase/archetypes/exemplars/client/HelloHBase.html#getAndPrintRowContents-org.apache.hadoop.hbase.client.Table-">getAndPrintRowContents(Table)</a></span> - Static method in class org.apache.hbase.archetypes.exemplars.client.<a href="org/apache/hbase/archetypes/exemplars/client/HelloHBase.html" title="class in org.apache.hbase.archetypes.exemplars.client">HelloHBase</a></dt>
@@ -34832,7 +34872,7 @@
 <dd>
 <div class="block">Should only be called once.</div>
 </dd>
-<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/client/ZKAsyncRegistry.html#getClusterId-org.apache.curator.framework.api.CuratorEvent-">getClusterId(CuratorEvent)</a></span> - Static method in class org.apache.hadoop.hbase.client.<a href="org/apache/hadoop/hbase/client/ZKAsyncRegistry.html" title="class in org.apache.hadoop.hbase.client">ZKAsyncRegistry</a></dt>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/client/ZKAsyncRegistry.html#getClusterId-byte:A-">getClusterId(byte[])</a></span> - Static method in class org.apache.hadoop.hbase.client.<a href="org/apache/hadoop/hbase/client/ZKAsyncRegistry.html" title="class in org.apache.hadoop.hbase.client">ZKAsyncRegistry</a></dt>
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/client/ZKAsyncRegistry.html#getClusterId--">getClusterId()</a></span> - Method in class org.apache.hadoop.hbase.client.<a href="org/apache/hadoop/hbase/client/ZKAsyncRegistry.html" title="class in org.apache.hadoop.hbase.client">ZKAsyncRegistry</a></dt>
 <dd>&nbsp;</dd>
@@ -35747,6 +35787,8 @@
 <dd>
 <div class="block">Get the address that corresponds to a particular connector.</div>
 </dd>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/zookeeper/ReadOnlyZKClient.html#getConnectString--">getConnectString()</a></span> - Method in class org.apache.hadoop.hbase.zookeeper.<a href="org/apache/hadoop/hbase/zookeeper/ReadOnlyZKClient.html" title="class in org.apache.hadoop.hbase.zookeeper">ReadOnlyZKClient</a></dt>
+<dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/client/Query.html#getConsistency--">getConsistency()</a></span> - Method in class org.apache.hadoop.hbase.client.<a href="org/apache/hadoop/hbase/client/Query.html" title="class in org.apache.hadoop.hbase.client">Query</a></dt>
 <dd>
 <div class="block">Returns the consistency level for this operation</div>
@@ -35934,8 +35976,6 @@
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/io/hfile/HFileBlockIndex.BlockIndexChunk.html#getCumulativeNumKV-int-">getCumulativeNumKV(int)</a></span> - Method in class org.apache.hadoop.hbase.io.hfile.<a href="org/apache/hadoop/hbase/io/hfile/HFileBlockIndex.BlockIndexChunk.html" title="class in org.apache.hadoop.hbase.io.hfile">HFileBlockIndex.BlockIndexChunk</a></dt>
 <dd>&nbsp;</dd>
-<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/client/ZKAsyncRegistry.html#getCuratorFramework--">getCuratorFramework()</a></span> - Method in class org.apache.hadoop.hbase.client.<a href="org/apache/hadoop/hbase/client/ZKAsyncRegistry.html" title="class in org.apache.hadoop.hbase.client">ZKAsyncRegistry</a></dt>
-<dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/regionserver/HeapMemoryManager.TunerContext.html#getCurBlockCacheSize--">getCurBlockCacheSize()</a></span> - Method in class org.apache.hadoop.hbase.regionserver.<a href="org/apache/hadoop/hbase/regionserver/HeapMemoryManager.TunerContext.html" title="class in org.apache.hadoop.hbase.regionserver">HeapMemoryManager.TunerContext</a></dt>
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/regionserver/HeapMemoryManager.TunerContext.html#getCurBlockCacheUsed--">getCurBlockCacheUsed()</a></span> - Method in class org.apache.hadoop.hbase.regionserver.<a href="org/apache/hadoop/hbase/regionserver/HeapMemoryManager.TunerContext.html" title="class in org.apache.hadoop.hbase.regionserver">HeapMemoryManager.TunerContext</a></dt>
@@ -36047,8 +36087,6 @@
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/client/ConnectionImplementation.html#getCurrentNrHRS--">getCurrentNrHRS()</a></span> - Method in class org.apache.hadoop.hbase.client.<a href="org/apache/hadoop/hbase/client/ConnectionImplementation.html" title="class in org.apache.hadoop.hbase.client">ConnectionImplementation</a></dt>
 <dd>&nbsp;</dd>
-<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/client/ZKAsyncRegistry.html#getCurrentNrHRS-org.apache.curator.framework.api.CuratorEvent-">getCurrentNrHRS(CuratorEvent)</a></span> - Static method in class org.apache.hadoop.hbase.client.<a href="org/apache/hadoop/hbase/client/ZKAsyncRegistry.html" title="class in org.apache.hadoop.hbase.client">ZKAsyncRegistry</a></dt>
-<dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/client/ZKAsyncRegistry.html#getCurrentNrHRS--">getCurrentNrHRS()</a></span> - Method in class org.apache.hadoop.hbase.client.<a href="org/apache/hadoop/hbase/client/ZKAsyncRegistry.html" title="class in org.apache.hadoop.hbase.client">ZKAsyncRegistry</a></dt>
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/replication/regionserver/ReplicationSource.html#getCurrentPath--">getCurrentPath()</a></span> - Method in class org.apache.hadoop.hbase.replication.regionserver.<a href="org/apache/hadoop/hbase/replication/regionserver/ReplicationSource.html" title="class in org.apache.hadoop.hbase.replication.regionserver">ReplicationSource</a></dt>
@@ -36513,6 +36551,8 @@
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/regionserver/MemStoreFlusher.WakeupFlushThread.html#getDelay-java.util.concurrent.TimeUnit-">getDelay(TimeUnit)</a></span> - Method in class org.apache.hadoop.hbase.regionserver.<a href="org/apache/hadoop/hbase/regionserver/MemStoreFlusher.WakeupFlushThread.html" title="class in org.apache.hadoop.hbase.regionserver">MemStoreFlusher.WakeupFlushThread</a></dt>
 <dd>&nbsp;</dd>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/zookeeper/ReadOnlyZKClient.Task.html#getDelay-java.util.concurrent.TimeUnit-">getDelay(TimeUnit)</a></span> - Method in class org.apache.hadoop.hbase.zookeeper.<a href="org/apache/hadoop/hbase/zookeeper/ReadOnlyZKClient.Task.html" title="class in org.apache.hadoop.hbase.zookeeper">ReadOnlyZKClient.Task</a></dt>
+<dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/util/EnvironmentEdgeManager.html#getDelegate--">getDelegate()</a></span> - Static method in class org.apache.hadoop.hbase.util.<a href="org/apache/hadoop/hbase/util/EnvironmentEdgeManager.html" title="class in org.apache.hadoop.hbase.util">EnvironmentEdgeManager</a></dt>
 <dd>
 <div class="block">Retrieves the singleton instance of the <a href="org/apache/hadoop/hbase/util/EnvironmentEdge.html" title="interface in org.apache.hadoop.hbase.util"><code>EnvironmentEdge</code></a> that is
@@ -38499,6 +38539,8 @@
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/rest/ScannerResultGenerator.html#getID--">getID()</a></span> - Method in class org.apache.hadoop.hbase.rest.<a href="org/apache/hadoop/hbase/rest/ScannerResultGenerator.html" title="class in org.apache.hadoop.hbase.rest">ScannerResultGenerator</a></dt>
 <dd>&nbsp;</dd>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/zookeeper/ReadOnlyZKClient.html#getId--">getId()</a></span> - Method in class org.apache.hadoop.hbase.zookeeper.<a href="org/apache/hadoop/hbase/zookeeper/ReadOnlyZKClient.html" title="class in org.apache.hadoop.hbase.zookeeper">ReadOnlyZKClient</a></dt>
+<dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/zookeeper/ZKClusterId.html#getId--">getId()</a></span> - Method in class org.apache.hadoop.hbase.zookeeper.<a href="org/apache/hadoop/hbase/zookeeper/ZKClusterId.html" title="class in org.apache.hadoop.hbase.zookeeper">ZKClusterId</a></dt>
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/security/HBaseSaslRpcServer.html#getIdentifier-java.lang.String-org.apache.hadoop.security.token.SecretManager-">getIdentifier(String, SecretManager&lt;T&gt;)</a></span> - Static method in class org.apache.hadoop.hbase.security.<a href="org/apache/hadoop/hbase/security/HBaseSaslRpcServer.html" title="class in org.apache.hadoop.hbase.security">HBaseSaslRpcServer</a></dt>
@@ -40122,7 +40164,7 @@
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/master/MasterServices.html#getMasterProcedureManagerHost--">getMasterProcedureManagerHost()</a></span> - Method in interface org.apache.hadoop.hbase.master.<a href="org/apache/hadoop/hbase/master/MasterServices.html" title="interface in org.apache.hadoop.hbase.master">MasterServices</a></dt>
 <dd>&nbsp;</dd>
-<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/client/ZKAsyncRegistry.html#getMasterProto-org.apache.curator.framework.api.CuratorEvent-">getMasterProto(CuratorEvent)</a></span> - Static method in class org.apache.hadoop.hbase.client.<a href="org/apache/hadoop/hbase/client/ZKAsyncRegistry.html" title="class in org.apache.hadoop.hbase.client">ZKAsyncRegistry</a></dt>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/client/ZKAsyncRegistry.html#getMasterProto-byte:A-">getMasterProto(byte[])</a></span> - Static method in class org.apache.hadoop.hbase.client.<a href="org/apache/hadoop/hbase/client/ZKAsyncRegistry.html" title="class in org.apache.hadoop.hbase.client">ZKAsyncRegistry</a></dt>
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/master/HMaster.html#getMasterQuotaManager--">getMasterQuotaManager()</a></span> - Method in class org.apache.hadoop.hbase.master.<a href="org/apache/hadoop/hbase/master/HMaster.html" title="class in org.apache.hadoop.hbase.master">HMaster</a></dt>
 <dd>&nbsp;</dd>
@@ -40725,7 +40767,7 @@
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/client/MetricsConnection.html#getMetaPoolName--">getMetaPoolName()</a></span> - Method in class org.apache.hadoop.hbase.client.<a href="org/apache/hadoop/hbase/client/MetricsConnection.html" title="class in org.apache.hadoop.hbase.client">MetricsConnection</a></dt>
 <dd>&nbsp;</dd>
-<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/client/ZKAsyncRegistry.html#getMetaProto-org.apache.curator.framework.api.CuratorEvent-">getMetaProto(CuratorEvent)</a></span> - Static method in class org.apache.hadoop.hbase.client.<a href="org/apache/hadoop/hbase/client/ZKAsyncRegistry.html" title="class in org.apache.hadoop.hbase.client">ZKAsyncRegistry</a></dt>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/client/ZKAsyncRegistry.html#getMetaProto-byte:A-">getMetaProto(byte[])</a></span> - Static method in class org.apache.hadoop.hbase.client.<a href="org/apache/hadoop/hbase/client/ZKAsyncRegistry.html" title="class in org.apache.hadoop.hbase.client">ZKAsyncRegistry</a></dt>
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/master/assignment/AssignmentManager.html#getMetaRegionFromName-byte:A-">getMetaRegionFromName(byte[])</a></span> - Method in class org.apache.hadoop.hbase.master.assignment.<a href="org/apache/hadoop/hbase/master/assignment/AssignmentManager.html" title="class in org.apache.hadoop.hbase.master.assignment">AssignmentManager</a></dt>
 <dd>&nbsp;</dd>
@@ -51205,6 +51247,10 @@
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/replication/ReplicationQueuesArguments.html#getZk--">getZk()</a></span> - Method in class org.apache.hadoop.hbase.replication.<a href="org/apache/hadoop/hbase/replication/ReplicationQueuesArguments.html" title="class in org.apache.hadoop.hbase.replication">ReplicationQueuesArguments</a></dt>
 <dd>&nbsp;</dd>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/zookeeper/ReadOnlyZKClient.html#getZk--">getZk()</a></span> - Method in class org.apache.hadoop.hbase.zookeeper.<a href="org/apache/hadoop/hbase/zookeeper/ReadOnlyZKClient.html" title="class in org.apache.hadoop.hbase.zookeeper">ReadOnlyZKClient</a></dt>
+<dd>&nbsp;</dd>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/client/ZKAsyncRegistry.html#getZKClient--">getZKClient()</a></span> - Method in class org.apache.hadoop.hbase.client.<a href="org/apache/hadoop/hbase/client/ZKAsyncRegistry.html" title="class in org.apache.hadoop.hbase.client">ZKAsyncRegistry</a></dt>
+<dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/procedure/ZKProcedureMemberRpcs.html#getZkController--">getZkController()</a></span> - Method in class org.apache.hadoop.hbase.procedure.<a href="org/apache/hadoop/hbase/procedure/ZKProcedureMemberRpcs.html" title="class in org.apache.hadoop.hbase.procedure">ZKProcedureMemberRpcs</a></dt>
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/security/access/TableAuthManager.html#getZKPermissionWatcher--">getZKPermissionWatcher()</a></span> - Method in class org.apache.hadoop.hbase.security.access.<a href="org/apache/hadoop/hbase/security/access/TableAuthManager.html" title="class in org.apache.hadoop.hbase.security.access">TableAuthManager</a></dt>
@@ -51249,6 +51295,8 @@
 <dd>
 <div class="block">Gets the ZooKeeper instance for this server.</div>
 </dd>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/zookeeper/ReadOnlyZKClient.html#getZooKeeper--">getZooKeeper()</a></span> - Method in class org.apache.hadoop.hbase.zookeeper.<a href="org/apache/hadoop/hbase/zookeeper/ReadOnlyZKClient.html" title="class in org.apache.hadoop.hbase.zookeeper">ReadOnlyZKClient</a></dt>
+<dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/zookeeper/RecoverableZooKeeper.html#getZooKeeper--">getZooKeeper()</a></span> - Method in class org.apache.hadoop.hbase.zookeeper.<a href="org/apache/hadoop/hbase/zookeeper/RecoverableZooKeeper.html" title="class in org.apache.hadoop.hbase.zookeeper">RecoverableZooKeeper</a></dt>
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/zookeeper/ZKConfig.html#getZooKeeperClusterKey-org.apache.hadoop.conf.Configuration-">getZooKeeperClusterKey(Configuration)</a></span> - Static method in class org.apache.hadoop.hbase.zookeeper.<a href="org/apache/hadoop/hbase/zookeeper/ZKConfig.html" title="class in org.apache.hadoop.hbase.zookeeper">ZKConfig</a></dt>
@@ -51275,6 +51323,8 @@
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/zookeeper/MiniZooKeeperCluster.html#getZooKeeperServerNum--">getZooKeeperServerNum()</a></span> - Method in class org.apache.hadoop.hbase.zookeeper.<a href="org/apache/hadoop/hbase/zookeeper/MiniZooKeeperCluster.html" title="class in org.apache.hadoop.hbase.zookeeper">MiniZooKeeperCluster</a></dt>
 <dd>&nbsp;</dd>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/zookeeper/MiniZooKeeperCluster.html#getZooKeeperServers--">getZooKeeperServers()</a></span> - Method in class org.apache.hadoop.hbase.zookeeper.<a href="org/apache/hadoop/hbase/zookeeper/MiniZooKeeperCluster.html" title="class in org.apache.hadoop.hbase.zookeeper">MiniZooKeeperCluster</a></dt>
+<dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/backup/example/TableHFileArchiveTracker.html#getZooKeeperWatcher--">getZooKeeperWatcher()</a></span> - Method in class org.apache.hadoop.hbase.backup.example.<a href="org/apache/hadoop/hbase/backup/example/TableHFileArchiveTracker.html" title="class in org.apache.hadoop.hbase.backup.example">TableHFileArchiveTracker</a></dt>
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/metrics/MetricRegistries.html#global--">global()</a></span> - Static method in class org.apache.hadoop.hbase.metrics.<a href="org/apache/hadoop/hbase/metrics/MetricRegistries.html" title="class in org.apache.hadoop.hbase.metrics">MetricRegistries</a></dt>
@@ -61918,10 +61968,14 @@
 </dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/procedure2/ProcedureExecutor.WorkerThread.html#keepAlive-long-">keepAlive(long)</a></span> - Method in class org.apache.hadoop.hbase.procedure2.<a href="org/apache/hadoop/hbase/procedure2/ProcedureExecutor.WorkerThread.html" title="class in org.apache.hadoop.hbase.procedure2">ProcedureExecutor.WorkerThread</a></dt>
 <dd>&nbsp;</dd>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/zookeeper/ReadOnlyZKClient.html#KEEPALIVE_MILLIS">KEEPALIVE_MILLIS</a></span> - Static variable in class org.apache.hadoop.hbase.zookeeper.<a href="org/apache/hadoop/hbase/zookeeper/ReadOnlyZKClient.html" title="class in org.apache.hadoop.hbase.zookeeper">ReadOnlyZKClient</a></dt>
+<dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/procedure2/ProcedureExecutor.html#keepAliveTime">keepAliveTime</a></span> - Variable in class org.apache.hadoop.hbase.procedure2.<a href="org/apache/hadoop/hbase/procedure2/ProcedureExecutor.html" title="class in org.apache.hadoop.hbase.procedure2">ProcedureExecutor</a></dt>
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/executor/ExecutorService.Executor.html#keepAliveTimeInMillis">keepAliveTimeInMillis</a></span> - Static variable in class org.apache.hadoop.hbase.executor.<a href="org/apache/hadoop/hbase/executor/ExecutorService.Executor.html" title="class in org.apache.hadoop.hbase.executor">ExecutorService.Executor</a></dt>
 <dd>&nbsp;</dd>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/zookeeper/ReadOnlyZKClient.html#keepAliveTimeMs">keepAliveTimeMs</a></span> - Variable in class org.apache.hadoop.hbase.zookeeper.<a href="org/apache/hadoop/hbase/zookeeper/ReadOnlyZKClient.html" title="class in org.apache.hadoop.hbase.zookeeper">ReadOnlyZKClient</a></dt>
+<dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/regionserver/CompactionTool.CompactionWorker.html#keepCompactedFiles">keepCompactedFiles</a></span> - Variable in class org.apache.hadoop.hbase.regionserver.<a href="org/apache/hadoop/hbase/regionserver/CompactionTool.CompactionWorker.html" title="class in org.apache.hadoop.hbase.regionserver">CompactionTool.CompactionWorker</a></dt>
 <dd>&nbsp;</dd>
 <dt><a href="org/apache/hadoop/hbase/KeepDeletedCells.html" title="enum in org.apache.hadoop.hbase"><span class="typeNameLink">KeepDeletedCells</span></a> - Enum in <a href="org/apache/hadoop/hbase/package-summary.html">org.apache.hadoop.hbase</a></dt>
@@ -65891,6 +65945,8 @@
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/zookeeper/MiniZooKeeperCluster.html#LOG">LOG</a></span> - Static variable in class org.apache.hadoop.hbase.zookeeper.<a href="org/apache/hadoop/hbase/zookeeper/MiniZooKeeperCluster.html" title="class in org.apache.hadoop.hbase.zookeeper">MiniZooKeeperCluster</a></dt>
 <dd>&nbsp;</dd>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/zookeeper/ReadOnlyZKClient.html#LOG">LOG</a></span> - Static variable in class org.apache.hadoop.hbase.zookeeper.<a href="org/apache/hadoop/hbase/zookeeper/ReadOnlyZKClient.html" title="class in org.apache.hadoop.hbase.zookeeper">ReadOnlyZKClient</a></dt>
+<dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/zookeeper/RecoverableZooKeeper.html#LOG">LOG</a></span> - Static variable in class org.apache.hadoop.hbase.zookeeper.<a href="org/apache/hadoop/hbase/zookeeper/RecoverableZooKeeper.html" title="class in org.apache.hadoop.hbase.zookeeper">RecoverableZooKeeper</a></dt>
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/zookeeper/RegionNormalizerTracker.html#LOG">LOG</a></span> - Static variable in class org.apache.hadoop.hbase.zookeeper.<a href="org/apache/hadoop/hbase/zookeeper/RegionNormalizerTracker.html" title="class in org.apache.hadoop.hbase.zookeeper">RegionNormalizerTracker</a></dt>
@@ -65966,8 +66022,6 @@
 <dd>&nbsp;</dd>
 <dt><a href="org/apache/hadoop/hbase/master/cleaner/LogCleaner.CleanerContext.html" title="class in org.apache.hadoop.hbase.master.cleaner"><span class="typeNameLink">LogCleaner.CleanerContext</span></a> - Class in <a href="org/apache/hadoop/hbase/master/cleaner/package-summary.html">org.apache.hadoop.hbase.master.cleaner</a></dt>
 <dd>&nbsp;</dd>
-<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/regionserver/wal/WALActionsListener.Base.html#logCloseRequested--">logCloseRequested()</a></span> - Method in class org.apache.hadoop.hbase.regionserver.wal.<a href="org/apache/hadoop/hbase/regionserver/wal/WALActionsListener.Base.html" title="class in org.apache.hadoop.hbase.regionserver.wal">WALActionsListener.Base</a></dt>
-<dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/regionserver/wal/WALActionsListener.html#logCloseRequested--">logCloseRequested()</a></span> - Method in interface org.apache.hadoop.hbase.regionserver.wal.<a href="org/apache/hadoop/hbase/regionserver/wal/WALActionsListener.html" title="interface in org.apache.hadoop.hbase.regionserver.wal">WALActionsListener</a></dt>
 <dd>
 <div class="block">The WAL is about to close.</div>
@@ -66199,8 +66253,6 @@
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/regionserver/wal/MetricsWALSourceImpl.html#logRollRequested">logRollRequested</a></span> - Variable in class org.apache.hadoop.hbase.regionserver.wal.<a href="org/apache/hadoop/hbase/regionserver/wal/MetricsWALSourceImpl.html" title="class in org.apache.hadoop.hbase.regionserver.wal">MetricsWALSourceImpl</a></dt>
 <dd>&nbsp;</dd>
-<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/regionserver/wal/WALActionsListener.Base.html#logRollRequested-boolean-">logRollRequested(boolean)</a></span> - Method in class org.apache.hadoop.hbase.regionserver.wal.<a href="org/apache/hadoop/hbase/regionserver/wal/WALActionsListener.Base.html" title="class in org.apache.hadoop.hbase.regionserver.wal">WALActionsListener.Base</a></dt>
-<dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/regionserver/wal/WALActionsListener.html#logRollRequested-boolean-">logRollRequested(boolean)</a></span> - Method in interface org.apache.hadoop.hbase.regionserver.wal.<a href="org/apache/hadoop/hbase/regionserver/wal/WALActionsListener.html" title="interface in org.apache.hadoop.hbase.regionserver.wal">WALActionsListener</a></dt>
 <dd>
 <div class="block">A request was made that the WAL be rolled.</div>
@@ -68633,6 +68685,8 @@
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/rest/client/RemoteHTable.html#maxRetries">maxRetries</a></span> - Variable in class org.apache.hadoop.hbase.rest.client.<a href="org/apache/hadoop/hbase/rest/client/RemoteHTable.html" title="class in org.apache.hadoop.hbase.rest.client">RemoteHTable</a></dt>
 <dd>&nbsp;</dd>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/zookeeper/ReadOnlyZKClient.html#maxRetries">maxRetries</a></span> - Variable in class org.apache.hadoop.hbase.zookeeper.<a href="org/apache/hadoop/hbase/zookeeper/ReadOnlyZKClient.html" title="class in org.apache.hadoop.hbase.zookeeper">ReadOnlyZKClient</a></dt>
+<dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/procedure2/store/wal/WALProcedureStore.html#maxRetriesBeforeRoll">maxRetriesBeforeRoll</a></span> - Variable in class org.apache.hadoop.hbase.procedure2.store.wal.<a href="org/apache/hadoop/hbase/procedure2/store/wal/WALProcedureStore.html" title="class in org.apache.hadoop.hbase.procedure2.store.wal">WALProcedureStore</a></dt>
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/replication/regionserver/HBaseInterClusterReplicationEndpoint.html#maxRetriesMultiplier">maxRetriesMultiplier</a></span> - Variable in class org.apache.hadoop.hbase.replication.regionserver.<a href="org/apache/hadoop/hbase/replication/regionserver/HBaseInterClusterReplicationEndpoint.html" title="class in org.apache.hadoop.hbase.replication.regionserver">HBaseInterClusterReplicationEndpoint</a></dt>
@@ -72901,6 +72955,10 @@
 <div class="block">If the top cell won't be flushed into disk, the new top cell may be
  changed after #reopenAfterFlush.</div>
 </dd>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/zookeeper/ReadOnlyZKClient.Task.html#needZk--">needZk()</a></span> - Method in class org.apache.hadoop.hbase.zookeeper.<a href="org/apache/hadoop/hbase/zookeeper/ReadOnlyZKClient.Task.html" title="class in org.apache.hadoop.hbase.zookeeper">ReadOnlyZKClient.Task</a></dt>
+<dd>&nbsp;</dd>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/zookeeper/ReadOnlyZKClient.ZKTask.html#needZk--">needZk()</a></span> - Method in class org.apache.hadoop.hbase.zookeeper.<a href="org/apache/hadoop/hbase/zookeeper/ReadOnlyZKClient.ZKTask.html" title="class in org.apache.hadoop.hbase.zookeeper">ReadOnlyZKClient.ZKTask</a></dt>
+<dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/util/OrderedBytes.html#NEG_INF">NEG_INF</a></span> - Static variable in class org.apache.hadoop.hbase.util.<a href="org/apache/hadoop/hbase/util/OrderedBytes.html" title="class in org.apache.hadoop.hbase.util">OrderedBytes</a></dt>
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/util/OrderedBytes.html#NEG_LARGE">NEG_LARGE</a></span> - Static variable in class org.apache.hadoop.hbase.util.<a href="org/apache/hadoop/hbase/util/OrderedBytes.html" title="class in org.apache.hadoop.hbase.util">OrderedBytes</a></dt>
@@ -75160,6 +75218,8 @@
 <dd>
 <div class="block">Indicate that the scan operation is completed normally.</div>
 </dd>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/zookeeper/ReadOnlyZKClient.ZKTask.html#onComplete-org.apache.zookeeper.ZooKeeper-int-T-boolean-">onComplete(ZooKeeper, int, T, boolean)</a></span> - Method in class org.apache.hadoop.hbase.zookeeper.<a href="org/apache/hadoop/hbase/zookeeper/ReadOnlyZKClient.ZKTask.html" title="class in org.apache.hadoop.hbase.zookeeper">ReadOnlyZKClient.ZKTask</a></dt>
+<dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/conf/ConfigurationObserver.html#onConfigurationChange-org.apache.hadoop.conf.Configuration-">onConfigurationChange(Configuration)</a></span> - Method in interface org.apache.hadoop.hbase.conf.<a href="org/apache/hadoop/hbase/conf/ConfigurationObserver.html" title="interface in org.apache.hadoop.hbase.conf">ConfigurationObserver</a></dt>
 <dd>
 <div class="block">This method would be called by the <a href="org/apache/hadoop/hbase/conf/ConfigurationManager.html" title="class in org.apache.hadoop.hbase.conf"><code>ConfigurationManager</code></a>
@@ -75761,6 +75821,8 @@
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/quotas/OperationQuota.OperationType.html#OperationType--">OperationType()</a></span> - Constructor for enum org.apache.hadoop.hbase.quotas.<a href="org/apache/hadoop/hbase/quotas/OperationQuota.OperationType.html" title="enum in org.apache.hadoop.hbase.quotas">OperationQuota.OperationType</a></dt>
 <dd>&nbsp;</dd>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/zookeeper/ReadOnlyZKClient.ZKTask.html#operationType">operationType</a></span> - Variable in class org.apache.hadoop.hbase.zookeeper.<a href="org/apache/hadoop/hbase/zookeeper/ReadOnlyZKClient.ZKTask.html" title="class in org.apache.hadoop.hbase.zookeeper">ReadOnlyZKClient.ZKTask</a></dt>
+<dd>&nbsp;</dd>
 <dt><a href="org/apache/hadoop/hbase/client/OperationWithAttributes.html" title="class in org.apache.hadoop.hbase.client"><span class="typeNameLink">OperationWithAttributes</span></a> - Class in <a href="org/apache/hadoop/hbase/client/package-summary.html">org.apache.hadoop.hbase.client</a></dt>
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/client/OperationWithAttributes.html#OperationWithAttributes--">OperationWithAttributes()</a></span> - Constructor for class org.apache.hadoop.hbase.client.<a href="org/apache/hadoop/hbase/client/OperationWithAttributes.html" title="class in org.apache.hadoop.hbase.client">OperationWithAttributes</a></dt>
@@ -77205,6 +77267,8 @@ service.</div>
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/wal/DisabledWALProvider.DisabledWAL.html#path">path</a></span> - Variable in class org.apache.hadoop.hbase.wal.<a href="org/apache/hadoop/hbase/wal/DisabledWALProvider.DisabledWAL.html" title="class in org.apache.hadoop.hbase.wal">DisabledWALProvider.DisabledWAL</a></dt>
 <dd>&nbsp;</dd>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/zookeeper/ReadOnlyZKClient.ZKTask.html#path">path</a></span> - Variable in class org.apache.hadoop.hbase.zookeeper.<a href="org/apache/hadoop/hbase/zookeeper/ReadOnlyZKClient.ZKTask.html" title="class in org.apache.hadoop.hbase.zookeeper">ReadOnlyZKClient.ZKTask</a></dt>
+<dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/zookeeper/ZKUtil.ZKUtilOp.html#path">path</a></span> - Variable in class org.apache.hadoop.hbase.zookeeper.<a href="org/apache/hadoop/hbase/zookeeper/ZKUtil.ZKUtilOp.html" title="class in org.apache.hadoop.hbase.zookeeper">ZKUtil.ZKUtilOp</a></dt>
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/backup/impl/BackupSystemTable.html#PATH_COL">PATH_COL</a></span> - Static variable in class org.apache.hadoop.hbase.backup.impl.<a href="org/apache/hadoop/hbase/backup/impl/BackupSystemTable.html" title="class in org.apache.hadoop.hbase.backup.impl">BackupSystemTable</a></dt>
@@ -78144,8 +78208,6 @@ service.</div>
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/regionserver/wal/MetricsWAL.html#postAppend-long-long-org.apache.hadoop.hbase.wal.WALKey-org.apache.hadoop.hbase.wal.WALEdit-">postAppend(long, long, WALKey, WALEdit)</a></span> - Method in class org.apache.hadoop.hbase.regionserver.wal.<a href="org/apache/hadoop/hbase/regionserver/wal/MetricsWAL.html" title="class in org.apache.hadoop.hbase.regionserver.wal">MetricsWAL</a></dt>
 <dd>&nbsp;</dd>
-<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/regionserver/wal/WALActionsListener.Base.html#postAppend-long-long-org.apache.hadoop.hbase.wal.WALKey-org.apache.hadoop.hbase.wal.WALEdit-">postAppend(long, long, WALKey, WALEdit)</a></span> - Method in class org.apache.hadoop.hbase.regionserver.wal.<a href="org/apache/hadoop/hbase/regionserver/wal/WALActionsListener.Base.html" title="class in org.apache.hadoop.hbase.regionserver.wal">WALActionsListener.Base</a></dt>
-<dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/regionserver/wal/WALActionsListener.html#postAppend-long-long-org.apache.hadoop.hbase.wal.WALKey-org.apache.hadoop.hbase.wal.WALEdit-">postAppend(long, long, WALKey, WALEdit)</a></span> - Method in interface org.apache.hadoop.hbase.regionserver.wal.<a href="org/apache/hadoop/hbase/regionserver/wal/WALActionsListener.html" title="interface in org.apache.hadoop.hbase.regionserver.wal">WALActionsListener</a></dt>
 <dd>
 <div class="block">For notification post append to the writer.</div>
@@ -78601,14 +78663,10 @@ service.</div>
 </dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/master/MasterCoprocessorHost.html#postLockHeartbeat-org.apache.hadoop.hbase.master.locking.LockProcedure-boolean-">postLockHeartbeat(LockProcedure, boolean)</a></span> - Method in class org.apache.hadoop.hbase.master.<a href="org/apache/hadoop/hbase/master/MasterCoprocessorHost.html" title="class in org.apache.hadoop.hbase.master">MasterCoprocessorHost</a></dt>
 <dd>&nbsp;</dd>
-<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/regionserver/wal/WALActionsListener.Base.html#postLogArchive-org.apache.hadoop.fs.Path-org.apache.hadoop.fs.Path-">postLogArchive(Path, Path)</a></span> - Method in class org.apache.hadoop.hbase.regionserver.wal.<a href="org/apache/hadoop/hbase/regionserver/wal/WALActionsListener.Base.html" title="class in org.apache.hadoop.hbase.regionserver.wal">WALActionsListener.Base</a></dt>
-<dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/regionserver/wal/WALActionsListener.html#postLogArchive-org.apache.hadoop.fs.Path-org.apache.hadoop.fs.Path-">postLogArchive(Path, Path)</a></span> - Method in interface org.apache.hadoop.hbase.regionserver.wal.<a href="org/apache/hadoop/hbase/regionserver/wal/WALActionsListener.html" title="interface in org.apache.hadoop.hbase.regionserver.wal">WALActionsListener</a></dt>
 <dd>
 <div class="block">The WAL has been archived.</div>
 </dd>
-<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/regionserver/wal/WALActionsListener.Base.html#postLogRoll-org.apache.hadoop.fs.Path-org.apache.hadoop.fs.Path-">postLogRoll(Path, Path)</a></span> - Method in class org.apache.hadoop.hbase.regionserver.wal.<a href="org/apache/hadoop/hbase/regionserver/wal/WALActionsListener.Base.html" title="class in org.apache.hadoop.hbase.regionserver.wal">WALActionsListener.Base</a></dt>
-<dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/regionserver/wal/WALActionsListener.html#postLogRoll-org.apache.hadoop.fs.Path-org.apache.hadoop.fs.Path-">postLogRoll(Path, Path)</a></span> - Method in interface org.apache.hadoop.hbase.regionserver.wal.<a href="org/apache/hadoop/hbase/regionserver/wal/WALActionsListener.html" title="interface in org.apache.hadoop.hbase.regionserver.wal">WALActionsListener</a></dt>
 <dd>
 <div class="block">The WAL has been rolled.</div>
@@ -78987,8 +79045,6 @@ service.</div>
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/regionserver/wal/MetricsWAL.html#postSync-long-int-">postSync(long, int)</a></span> - Method in class org.apache.hadoop.hbase.regionserver.wal.<a href="org/apache/hadoop/hbase/regionserver/wal/MetricsWAL.html" title="class in org.apache.hadoop.hbase.regionserver.wal">MetricsWAL</a></dt>
 <dd>&nbsp;</dd>
-<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/regionserver/wal/WALActionsListener.Base.html#postSync-long-int-">postSync(long, int)</a></span> - Method in class org.apache.hadoop.hbase.regionserver.wal.<a href="org/apache/hadoop/hbase/regionserver/wal/WALActionsListener.Base.html" title="class in org.apache.hadoop.hbase.regionserver.wal">WALActionsListener.Base</a></dt>
-<dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/regionserver/wal/WALActionsListener.html#postSync-long-int-">postSync(long, int)</a></span> - Method in interface org.apache.hadoop.hbase.regionserver.wal.<a href="org/apache/hadoop/hbase/regionserver/wal/WALActionsListener.html" title="interface in org.apache.hadoop.hbase.regionserver.wal">WALActionsListener</a></dt>
 <dd>
 <div class="block">For notification post writer sync.</div>
@@ -79837,14 +79893,10 @@ service.</div>
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/security/access/AccessController.html#preLockHeartbeat-org.apache.hadoop.hbase.coprocessor.ObserverContext-org.apache.hadoop.hbase.TableName-java.lang.String-">preLockHeartbeat(ObserverContext&lt;MasterCoprocessorEnvironment&gt;, TableName, String)</a></span> - Method in class org.apache.hadoop.hbase.security.access.<a href="org/apache/hadoop/hbase/security/access/AccessController.html" title="class in org.apache.hadoop.hbase.security.access">AccessController</a></dt>
 <dd>&nbsp;</dd>
-<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/regionserver/wal/WALActionsListener.Base.html#preLogArchive-org.apache.hadoop.fs.Path-org.apache.hadoop.fs.Path-">preLogArchive(Path, Path)</a></span> - Method in class org.apache.hadoop.hbase.regionserver.wal.<a href="org/apache/hadoop/hbase/regionserver/wal/WALActionsListener.Base.html" title="class in org.apache.hadoop.hbase.regionserver.wal">WALActionsListener.Base</a></dt>
-<dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/regionserver/wal/WALActionsListener.html#preLogArchive-org.apache.hadoop.fs.Path-org.apache.hadoop.fs.Path-">preLogArchive(Path, Path)</a></span> - Method in interface org.apache.hadoop.hbase.regionserver.wal.<a href="org/apache/hadoop/hbase/regionserver/wal/WALActionsListener.html" title="interface in org.apache.hadoop.hbase.regionserver.wal">WALActionsListener</a></dt>
 <dd>
 <div class="block">The WAL is going to be archived.</div>
 </dd>
-<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/regionserver/wal/WALActionsListener.Base.html#preLogRoll-org.apache.hadoop.fs.Path-org.apache.hadoop.fs.Path-">preLogRoll(Path, Path)</a></span> - Method in class org.apache.hadoop.hbase.regionserver.wal.<a href="org/apache/hadoop/hbase/regionserver/wal/WALActionsListener.Base.html" title="class in org.apache.hadoop.hbase.regionserver.wal">WALActionsListener.Base</a></dt>
-<dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/regionserver/wal/WALActionsListener.html#preLogRoll-org.apache.hadoop.fs.Path-org.apache.hadoop.fs.Path-">preLogRoll(Path, Path)</a></span> - Method in interface org.apache.hadoop.hbase.regionserver.wal.<a href="org/apache/hadoop/hbase/regionserver/wal/WALActionsListener.html" title="interface in org.apache.hadoop.hbase.regionserver.wal">WALActionsListener</a></dt>
 <dd>
 <div class="block">The WAL is going to be rolled.</div>
@@ -80076,7 +80128,6 @@ service.</div>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/regionserver/StoreFlushContext.html#prepare--">prepare()</a></span> - Method in interface org.apache.hadoop.hbase.regionserver.<a href="org/apache/hadoop/hbase/regionserver/StoreFlushContext.html" title="interface in org.apache.hadoop.hbase.regionserver">StoreFlushContext</a></dt>
 <dd>
 <div class="block">Prepare for a store flush (create snapshot)
-
  Requires pausing writes.</div>
 </dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/zookeeper/InstancePending.html#prepare-T-">prepare(T)</a></span> - Method in class org.apache.hadoop.hbase.zookeeper.<a href="org/apache/hadoop/hbase/zookeeper/InstancePending.html" title="class in org.apache.hadoop.hbase.zookeeper">InstancePending</a></dt>
@@ -81512,8 +81563,6 @@ service.</div>
 </dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/rest/filter/RestCsrfPreventionFilter.ServletFilterHttpInteraction.html#proceed--">proceed()</a></span> - Method in class org.apache.hadoop.hbase.rest.filter.<a href="org/apache/hadoop/hbase/rest/filter/RestCsrfPreventionFilter.ServletFilterHttpInteraction.html" title="class in org.apache.hadoop.hbase.rest.filter">RestCsrfPreventionFilter.ServletFilterHttpInteraction</a></dt>
 <dd>&nbsp;</dd>
-<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/client/ZKAsyncRegistry.CuratorEventProcessor.html#process-org.apache.curator.framework.api.CuratorEvent-">process(CuratorEvent)</a></span> - Method in interface org.apache.hadoop.hbase.client.<a href="org/apache/hadoop/hbase/client/ZKAsyncRegistry.CuratorEventProcessor.html" title="interface in org.apache.hadoop.hbase.client">ZKAsyncRegistry.CuratorEventProcessor</a></dt>
-<dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/coprocessor/BaseRowProcessorEndpoint.html#process-com.google.protobuf.RpcController-org.apache.hadoop.hbase.protobuf.generated.RowProcessorProtos.ProcessRequest-com.google.protobuf.RpcCallback-">process(RpcController, RowProcessorProtos.ProcessRequest, RpcCallback&lt;RowProcessorProtos.ProcessResponse&gt;)</a></span> - Method in class org.apache.hadoop.hbase.coprocessor.<a href="org/apache/hadoop/hbase/coprocessor/BaseRowProcessorEndpoint.html" title="class in org.apache.hadoop.hbase.coprocessor">BaseRowProcessorEndpoint</a></dt>
 <dd>
 <div class="block">Pass a processor to region to process multiple rows atomically.</div>
@@ -84171,6 +84220,16 @@ service.</div>
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/quotas/QuotaObserverChore.html#readOnlyTableQuotaSnapshots">readOnlyTableQuotaSnapshots</a></span> - Variable in class org.apache.hadoop.hbase.quotas.<a href="org/apache/hadoop/hbase/quotas/QuotaObserverChore.html" title="class in org.apache.hadoop.hbase.quotas">QuotaObserverChore</a></dt>
 <dd>&nbsp;</dd>
+<dt><a href="org/apache/hadoop/hbase/zookeeper/ReadOnlyZKClient.html" title="class in org.apache.hadoop.hbase.zookeeper"><span class="typeNameLink">ReadOnlyZKClient</span></a> - Class in <a href="org/apache/hadoop/hbase/zookeeper/package-summary.html">org.apache.hadoop.hbase.zookeeper</a></dt>
+<dd>
+<div class="block">A very simple read only zookeeper implementation without watcher support.</div>
+</dd>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/zookeeper/ReadOnlyZKClient.html#ReadOnlyZKClient-org.apache.hadoop.conf.Configuration-">ReadOnlyZKClient(Configuration)</a></span> - Constructor for class org.apache.hadoop.hbase.zookeeper.<a href="org/apache/hadoop/hbase/zookeeper/ReadOnlyZKClient.html" title="class in org.apache.hadoop.hbase.zookeeper">ReadOnlyZKClient</a></dt>
+<dd>&nbsp;</dd>
+<dt><a href="org/apache/hadoop/hbase/zookeeper/ReadOnlyZKClient.Task.html" title="class in org.apache.hadoop.hbase.zookeeper"><span class="typeNameLink">ReadOnlyZKClient.Task</span></a> - Class in <a href="org/apache/hadoop/hbase/zookeeper/package-summary.html">org.apache.hadoop.hbase.zookeeper</a></dt>
+<dd>&nbsp;</dd>
+<dt><a href="org/apache/hadoop/hbase/zookeeper/ReadOnlyZKClient.ZKTask.html" title="class in org.apache.hadoop.hbase.zookeeper"><span class="typeNameLink">ReadOnlyZKClient.ZKTask</span></a>&lt;<a href="org/apache/hadoop/hbase/zookeeper/ReadOnlyZKClient.ZKTask.html" title="type parameter in ReadOnlyZKClient.ZKTask">T</a>&gt; - Class in <a href="org/apache/hadoop/hbase/zookeeper/package-summary.html">org.apache.hadoop.hbase.zookeeper</a></dt>
+<dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/zookeeper/MetricsZooKeeperSourceImpl.html#readOpLatency">readOpLatency</a></span> - Variable in class org.apache.hadoop.hbase.zookeeper.<a href="org/apache/hadoop/hbase/zookeeper/MetricsZooKeeperSourceImpl.html" title="class in org.apache.hadoop.hbase.zookeeper">MetricsZooKeeperSourceImpl</a></dt>
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/mapreduce/HashTable.TableHash.html#readPartitionFile-org.apache.hadoop.fs.FileSystem-org.apache.hadoop.conf.Configuration-org.apache.hadoop.fs.Path-">readPartitionFile(FileSystem, Configuration, Path)</a></span> - Method in class org.apache.hadoop.hbase.mapreduce.<a href="org/apache/hadoop/hbase/mapreduce/HashTable.TableHash.html" title="class in org.apache.hadoop.hbase.mapreduce">HashTable.TableHash</a></dt>
@@ -84704,6 +84763,10 @@ service.</div>
 </dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/mapreduce/TableOutputCommitter.html#recoverTask-org.apache.hadoop.mapreduce.TaskAttemptContext-">recoverTask(TaskAttemptContext)</a></span> - Method in class org.apache.hadoop.hbase.mapreduce.<a href="org/apache/hadoop/hbase/mapreduce/TableOutputCommitter.html" title="class in org.apache.hadoop.hbase.mapreduce">TableOutputCommitter</a></dt>
 <dd>&nbsp;</dd>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/zookeeper/ReadOnlyZKClient.html#RECOVERY_RETRY">RECOVERY_RETRY</a></span> - Static variable in class org.apache.hadoop.hbase.zookeeper.<a href="org/apache/hadoop/hbase/zookeeper/ReadOnlyZKClient.html" title="class in org.apache.hadoop.hbase.zookeeper">ReadOnlyZKClient</a></dt>
+<dd>&nbsp;</dd>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/zookeeper/ReadOnlyZKClient.html#RECOVERY_RETRY_INTERVAL_MILLIS">RECOVERY_RETRY_INTERVAL_MILLIS</a></span> - Static variable in class org.apache.hadoop.hbase.zookeeper.<a href="org/apache/hadoop/hbase/zookeeper/ReadOnlyZKClient.html" title="class in org.apache.hadoop.hbase.zookeeper">ReadOnlyZKClient</a></dt>
+<dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/master/procedure/TruncateTableProcedure.html#recreateRegionInfo-java.util.List-">recreateRegionInfo(List&lt;RegionInfo&gt;)</a></span> - Static method in class org.apache.hadoop.hbase.master.procedure.<a href="org/apache/hadoop/hbase/master/procedure/TruncateTableProcedure.html" title="class in org.apache.hadoop.hbase.master.procedure">TruncateTableProcedure</a></dt>
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/regionserver/HStore.html#recreateScanners-java.util.List-boolean-boolean-boolean-org.apache.hadoop.hbase.regionserver.querymatcher.ScanQueryMatcher-byte:A-boolean-byte:A-boolean-long-boolean-">recreateScanners(List&lt;KeyValueScanner&gt;, boolean, boolean, boolean, ScanQueryMatcher, byte[], boolean, byte[], boolean, long, boolean)</a></span> - Method in class org.apache.hadoop.hbase.regionserver.<a href="org/apache/hadoop/hbase/regionserver/HStore.html" title="class in org.apache.hadoop.hbase.regionserver">HStore</a></dt>
@@ -90381,6 +90444,8 @@ service.</div>
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/master/assignment/RegionStates.RegionFailedOpen.html#retries">retries</a></span> - Variable in class org.apache.hadoop.hbase.master.assignment.<a href="org/apache/hadoop/hbase/master/assignment/RegionStates.RegionFailedOpen.html" title="class in org.apache.hadoop.hbase.master.assignment">RegionStates.RegionFailedOpen</a></dt>
 <dd>&nbsp;</dd>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/zookeeper/ReadOnlyZKClient.ZKTask.html#retries">retries</a></span> - Variable in class org.apache.hadoop.hbase.zookeeper.<a href="org/apache/hadoop/hbase/zookeeper/ReadOnlyZKClient.ZKTask.html" title="class in org.apache.hadoop.hbase.zookeeper">ReadOnlyZKClient.ZKTask</a></dt>
+<dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/client/ConnectionUtils.html#retries2Attempts-int-">retries2Attempts(int)</a></span> - Static method in class org.apache.hadoop.hbase.client.<a href="org/apache/hadoop/hbase/client/ConnectionUtils.html" title="class in org.apache.hadoop.hbase.client">ConnectionUtils</a></dt>
 <dd>
 <div class="block">Return retires + 1.</div>
@@ -90536,6 +90601,8 @@ service.</div>
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/client/HTableMultiplexer.FlushWorker.html#retryInQueue">retryInQueue</a></span> - Variable in class org.apache.hadoop.hbase.client.<a href="org/apache/hadoop/hbase/client/HTableMultiplexer.FlushWorker.html" title="class in org.apache.hadoop.hbase.client">HTableMultiplexer.FlushWorker</a></dt>
 <dd>&nbsp;</dd>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/zookeeper/ReadOnlyZKClient.html#retryIntervalMs">retryIntervalMs</a></span> - Variable in class org.apache.hadoop.hbase.zookeeper.<a href="org/apache/hadoop/hbase/zookeeper/ReadOnlyZKClient.html" title="class in org.apache.hadoop.hbase.zookeeper">ReadOnlyZKClient</a></dt>
+<dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/zookeeper/RecoverableZooKeeper.html#retryOrThrow-org.apache.hadoop.hbase.util.RetryCounter-org.apache.zookeeper.KeeperException-java.lang.String-">retryOrThrow(RetryCounter, KeeperException, String)</a></span> - Method in class org.apache.hadoop.hbase.zookeeper.<a href="org/apache/hadoop/hbase/zookeeper/RecoverableZooKeeper.html" title="class in org.apache.hadoop.hbase.zookeeper">RecoverableZooKeeper</a></dt>
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/client/AsyncBatchRpcRetryingCaller.html#retryTimer">retryTimer</a></span> - Variable in class org.apache.hadoop.hbase.client.<a href="org/apache/hadoop/hbase/client/AsyncBatchRpcRetryingCaller.html" title="class in org.apache.hadoop.hbase.client">AsyncBatchRpcRetryingCaller</a></dt>
@@ -92572,6 +92639,8 @@ service.</div>
 </dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/wal/WALSplitter.WriterThread.html#run--">run()</a></span> - Method in class org.apache.hadoop.hbase.wal.<a href="org/apache/hadoop/hbase/wal/WALSplitter.WriterThread.html" title="class in org.apache.hadoop.hbase.wal">WALSplitter.WriterThread</a></dt>
 <dd>&nbsp;</dd>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/zookeeper/ReadOnlyZKClient.html#run--">run()</a></span> - Method in class org.apache.hadoop.hbase.zookeeper.<a href="org/apache/hadoop/hbase/zookeeper/ReadOnlyZKClient.html" title="class in org.apache.hadoop.hbase.zookeeper">ReadOnlyZKClient</a></dt>
+<dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/zookeeper/ZKAclReset.html#run-java.lang.String:A-">run(String[])</a></span> - Method in class org.apache.hadoop.hbase.zookeeper.<a href="org/apache/hadoop/hbase/zookeeper/ZKAclReset.html" title="class in org.apache.hadoop.hbase.zookeeper">ZKAclReset</a></dt>
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/metrics2/impl/JmxCacheBuster.JmxCacheBusterRunnable.html#run--">run()</a></span> - Method in class org.apache.hadoop.metrics2.impl.<a href="org/apache/hadoop/metrics2/impl/JmxCacheBuster.JmxCacheBusterRunnable.html" title="class in org.apache.hadoop.metrics2.impl">JmxCacheBuster.JmxCacheBusterRunnable</a></dt>
@@ -95355,6 +95424,8 @@ service.</div>
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/zookeeper/RecoverableZooKeeper.html#sessionTimeout">sessionTimeout</a></span> - Variable in class org.apache.hadoop.hbase.zookeeper.<a href="org/apache/hadoop/hbase/zookeeper/RecoverableZooKeeper.html" title="class in org.apache.hadoop.hbase.zookeeper">RecoverableZooKeeper</a></dt>
 <dd>&nbsp;</dd>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/zookeeper/ReadOnlyZKClient.html#sessionTimeoutMs">sessionTimeoutMs</a></span> - Variable in class org.apache.hadoop.hbase.zookeeper.<a href="org/apache/hadoop/hbase/zookeeper/ReadOnlyZKClient.html" title="class in org.apache.hadoop.hbase.zookeeper">ReadOnlyZKClient</a></dt>
+<dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/CompoundConfiguration.html#set-java.lang.String-java.lang.String-">set(String, String)</a></span> - Method in class org.apache.hadoop.hbase.<a href="org/apache/hadoop/hbase/CompoundConfiguration.html" title="class in org.apache.hadoop.hbase">CompoundConfiguration</a></dt>
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/io/asyncfs/FanOutOneBlockAsyncDFSOutputHelper.StorageTypeSetter.html#set-org.apache.hadoop.hdfs.protocol.proto.DataTransferProtos.OpWriteBlockProto.Builder-java.lang.Enum-">set(DataTransferProtos.OpWriteBlockProto.Builder, Enum&lt;?&gt;)</a></span> - Method in interface org.apache.hadoop.hbase.io.asyncfs.<a href="org/apache/hadoop/hbase/io/asyncfs/FanOutOneBlockAsyncDFSOutputHelper.StorageTypeSetter.html" title="interface in org.apache.hadoop.hbase.io.asyncfs">FanOutOneBlockAsyncDFSOutputHelper.StorageTypeSetter</a></dt>
@@ -107085,6 +107156,8 @@ service.</div>
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/master/SplitLogManager.Task.html#Task--">Task()</a></span> - Constructor for class org.apache.hadoop.hbase.master.<a href="org/apache/hadoop/hbase/master/SplitLogManager.Task.html" title="class in org.apache.hadoop.hbase.master">SplitLogManager.Task</a></dt>
 <dd>&nbsp;</dd>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/zookeeper/ReadOnlyZKClient.Task.html#Task--">Task()</a></span> - Constructor for class org.apache.hadoop.hbase.zookeeper.<a href="org/apache/hadoop/hbase/zookeeper/ReadOnlyZKClient.Task.html" title="class in org.apache.hadoop.hbase.zookeeper">ReadOnlyZKClient.Task</a></dt>
+<dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/client/example/BufferedMutatorExample.html#TASK_COUNT">TASK_COUNT</a></span> - Static variable in class org.apache.hadoop.hbase.client.example.<a href="org/apache/hadoop/hbase/client/example/BufferedMutatorExample.html" title="class in org.apache.hadoop.hbase.client.example">BufferedMutatorExample</a></dt>
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/monitoring/TaskMonitor.TaskAndWeakRefPair.html#TaskAndWeakRefPair-org.apache.hadoop.hbase.monitoring.MonitoredTask-org.apache.hadoop.hbase.monitoring.MonitoredTask-">TaskAndWeakRefPair(MonitoredTask, MonitoredTask)</a></span> - Constructor for class org.apache.hadoop.hbase.monitoring.<a href="org/apache/hadoop/hbase/monitoring/TaskMonitor.TaskAndWeakRefPair.html" title="class in org.apache.hadoop.hbase.monitoring">TaskMonitor.TaskAndWeakRefPair</a></dt>
@@ -107159,6 +107232,8 @@ service.</div>
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/util/BoundedCompletionService.html#tasks">tasks</a></span> - Variable in class org.apache.hadoop.hbase.util.<a href="org/apache/hadoop/hbase/util/BoundedCompletionService.html" title="class in org.apache.hadoop.hbase.util">BoundedCompletionService</a></dt>
 <dd>&nbsp;</dd>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/zookeeper/ReadOnlyZKClient.html#tasks">tasks</a></span> - Variable in class org.apache.hadoop.hbase.zookeeper.<a href="org/apache/hadoop/hbase/zookeeper/ReadOnlyZKClient.html" title="class in org.apache.hadoop.hbase.zookeeper">ReadOnlyZKClient</a></dt>
+<dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/client/SimpleRequestController.TaskCountChecker.html#tasksInProgress">tasksInProgress</a></span> - Variable in class org.apache.hadoop.hbase.client.<a href="org/apache/hadoop/hbase/client/SimpleRequestController.TaskCountChecker.html" title="class in org.apache.hadoop.hbase.client">SimpleRequestController.TaskCountChecker</a></dt>
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/client/SimpleRequestController.html#tasksInProgress">tasksInProgress</a></span> - Variable in class org.apache.hadoop.hbase.client.<a href="org/apache/hadoop/hbase/client/SimpleRequestController.html" title="class in org.apache.hadoop.hbase.client">SimpleRequestController</a></dt>
@@ -107753,6 +107828,8 @@ service.</div>
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/regionserver/ScannerContext.LimitFields.html#time">time</a></span> - Variable in class org.apache.hadoop.hbase.regionserver.<a href="org/apache/hadoop/hbase/regionserver/ScannerContext.LimitFields.html" title="class in org.apache.hadoop.hbase.regionserver">ScannerContext.LimitFields</a></dt>
 <dd>&nbsp;</dd>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/zookeeper/ReadOnlyZKClient.Task.html#time">time</a></span> - Variable in class org.apache.hadoop.hbase.zookeeper.<a href="org/apache/hadoop/hbase/zookeeper/ReadOnlyZKClient.Task.html" title="class in org.apache.hadoop.hbase.zookeeper">ReadOnlyZKClient.Task</a></dt>
+<dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/thrift/MetricsThriftServerSource.html#TIME_IN_QUEUE_KEY">TIME_IN_QUEUE_KEY</a></span> - Static variable in interface org.apache.hadoop.hbase.thrift.<a href="org/apache/hadoop/hbase/thrift/MetricsThriftServerSource.html" title="interface in org.apache.hadoop.hbase.thrift">MetricsThriftServerSource</a></dt>
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/thrift/TBoundedThreadPoolServer.html#TIME_TO_WAIT_AFTER_SHUTDOWN_MS">TIME_TO_WAIT_AFTER_SHUTDOWN_MS</a></span> - Static variable in class org.apache.hadoop.hbase.thrift.<a href="org/apache/hadoop/hbase/thrift/TBoundedThreadPoolServer.html" title="class in org.apache.hadoop.hbase.thrift">TBoundedThreadPoolServer</a></dt>
@@ -114998,11 +115075,7 @@ the order they are declared.</div>
 </dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/MetaTableAccessor.DefaultVisitorBase.html#visitInternal-org.apache.hadoop.hbase.client.Result-">visitInternal(Result)</a></span> - Method in class org.apache.hadoop.hbase.<a href="org/apache/hadoop/hbase/MetaTableAccessor.DefaultVisitorBase.html" title="class in org.apache.hadoop.hbase">MetaTableAccessor.DefaultVisitorBase</a></dt>
 <dd>&nbsp;</dd>
-<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/regionserver/wal/WALActionsListener.Base.html#visitLogEntryBeforeWrite-org.apache.hadoop.hbase.HRegionInfo-org.apache.hadoop.hbase.wal.WALKey-org.apache.hadoop.hbase.wal.WALEdit-">visitLogEntryBeforeWrite(HRegionInfo, WALKey, WALEdit)</a></span> - Method in class org.apache.hadoop.hbase.regionserver.wal.<a href="org/apache/hadoop/hbase/regionserver/wal/WALActionsListener.Base.html" title="class in org.apache.hadoop.hbase.regionserver.wal">WALActionsListener.Base</a></dt>
-<dd>&nbsp;</dd>
-<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/regionserver/wal/WALActionsListener.Base.html#visitLogEntryBeforeWrite-org.apache.hadoop.hbase.wal.WALKey-org.apache.hadoop.hbase.wal.WALEdit-">visitLogEntryBeforeWrite(WALKey, WALEdit)</a></span> - Method in class org.apache.hadoop.hbase.regionserver.wal.<a href="org/apache/hadoop/hbase/regionserver/wal/WALActionsListener.Base.html" title="class in org.apache.hadoop.hbase.regionserver.wal">WALActionsListener.Base</a></dt>
-<dd>&nbsp;</dd>
-<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/regionserver/wal/WALActionsListener.html#visitLogEntryBeforeWrite-org.apache.hadoop.hbase.HRegionInfo-org.apache.hadoop.hbase.wal.WALKey-org.apache.hadoop.hbase.wal.WALEdit-">visitLogEntryBeforeWrite(HRegionInfo, WALKey, WALEdit)</a></span> - Method in interface org.apache.hadoop.hbase.regionserver.wal.<a href="org/apache/hadoop/hbase/regionserver/wal/WALActionsListener.html" title="interface in org.apache.hadoop.hbase.regionserver.wal">WALActionsListener</a></dt>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/regionserver/wal/WALActionsListener.html#visitLogEntryBeforeWrite-org.apache.hadoop.hbase.client.RegionInfo-org.apache.hadoop.hbase.wal.WALKey-org.apache.hadoop.hbase.wal.WALEdit-">visitLogEntryBeforeWrite(RegionInfo, WALKey, WALEdit)</a></span> - Method in interface org.apache.hadoop.hbase.regionserver.wal.<a href="org/apache/hadoop/hbase/regionserver/wal/WALActionsListener.html" title="interface in org.apache.hadoop.hbase.regionserver.wal">WALActionsListener</a></dt>
 <dd>
 <div class="block">Called before each write.</div>
 </dd>
@@ -115560,8 +115633,6 @@ the order they are declared.</div>
 <dd>
 <div class="block">Get notification of WAL events.</div>
 </dd>
-<dt><a href="org/apache/hadoop/hbase/regionserver/wal/WALActionsListener.Base.html" title="class in org.apache.hadoop.hbase.regionserver.wal"><span class="typeNameLink">WALActionsListener.Base</span></a> - Class in <a href="org/apache/hadoop/hbase/regionserver/wal/package-summary.html">org.apache.hadoop.hbase.regionserver.wal</a></dt>
-<dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/procedure2/store/wal/WALProcedureStore.html#walArchiveDir">walArchiveDir</a></span> - Variable in class org.apache.hadoop.hbase.procedure2.store.wal.<a href="org/apache/hadoop/hbase/procedure2/store/wal/WALProcedureStore.html" title="class in org.apache.hadoop.hbase.procedure2.store.wal">WALProcedureStore</a></dt>
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/regionserver/wal/AbstractFSWAL.html#walArchiveDir">walArchiveDir</a></span> - Variable in class org.apache.hadoop.hbase.regionserver.wal.<a href="org/apache/hadoop/hbase/regionserver/wal/AbstractFSWAL.html" title="class in org.apache.hadoop.hbase.regionserver.wal">AbstractFSWAL</a></dt>
@@ -117583,7 +117654,7 @@ the order they are declared.</div>
 </dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/client/ZKAsyncRegistry.html#ZKAsyncRegistry-org.apache.hadoop.conf.Configuration-">ZKAsyncRegistry(Configuration)</a></span> - Constructor for class org.apache.hadoop.hbase.client.<a href="org/apache/hadoop/hbase/client/ZKAsyncRegistry.html" title="class in org.apache.hadoop.hbase.client">ZKAsyncRegistry</a></dt>
 <dd>&nbsp;</dd>
-<dt><a href="org/apache/hadoop/hbase/client/ZKAsyncRegistry.CuratorEventProcessor.html" title="interface in org.apache.hadoop.hbase.client"><span class="typeNameLink">ZKAsyncRegistry.CuratorEventProcessor</span></a>&lt;<a href="org/apache/hadoop/hbase/client/ZKAsyncRegistry.CuratorEventProcessor.html" title="type parameter in 

<TRUNCATED>

[32/51] [partial] hbase-site git commit: Published site at .

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/c54c242b/devapidocs/src-html/org/apache/hadoop/hbase/ipc/BlockingRpcConnection.html
----------------------------------------------------------------------
diff --git a/devapidocs/src-html/org/apache/hadoop/hbase/ipc/BlockingRpcConnection.html b/devapidocs/src-html/org/apache/hadoop/hbase/ipc/BlockingRpcConnection.html
index 81f352c..0782ea7 100644
--- a/devapidocs/src-html/org/apache/hadoop/hbase/ipc/BlockingRpcConnection.html
+++ b/devapidocs/src-html/org/apache/hadoop/hbase/ipc/BlockingRpcConnection.html
@@ -51,39 +51,39 @@
 <span class="sourceLineNo">043</span>import java.util.concurrent.ConcurrentHashMap;<a name="line.43"></a>
 <span class="sourceLineNo">044</span>import java.util.concurrent.ConcurrentMap;<a name="line.44"></a>
 <span class="sourceLineNo">045</span>import java.util.concurrent.ThreadLocalRandom;<a name="line.45"></a>
-<span class="sourceLineNo">046</span><a name="line.46"></a>
-<span class="sourceLineNo">047</span>import javax.security.sasl.SaslException;<a name="line.47"></a>
-<span class="sourceLineNo">048</span><a name="line.48"></a>
-<span class="sourceLineNo">049</span>import org.apache.commons.logging.Log;<a name="line.49"></a>
-<span class="sourceLineNo">050</span>import org.apache.commons.logging.LogFactory;<a name="line.50"></a>
-<span class="sourceLineNo">051</span>import org.apache.hadoop.conf.Configuration;<a name="line.51"></a>
-<span class="sourceLineNo">052</span>import org.apache.hadoop.hbase.CellScanner;<a name="line.52"></a>
-<span class="sourceLineNo">053</span>import org.apache.hadoop.hbase.DoNotRetryIOException;<a name="line.53"></a>
-<span class="sourceLineNo">054</span>import org.apache.hadoop.hbase.exceptions.ConnectionClosingException;<a name="line.54"></a>
-<span class="sourceLineNo">055</span>import org.apache.hadoop.hbase.io.ByteArrayOutputStream;<a name="line.55"></a>
-<span class="sourceLineNo">056</span>import org.apache.hadoop.hbase.ipc.HBaseRpcController.CancellationCallback;<a name="line.56"></a>
-<span class="sourceLineNo">057</span>import org.apache.hadoop.hbase.security.HBaseSaslRpcClient;<a name="line.57"></a>
-<span class="sourceLineNo">058</span>import org.apache.hadoop.hbase.security.SaslUtil;<a name="line.58"></a>
-<span class="sourceLineNo">059</span>import org.apache.hadoop.hbase.security.SaslUtil.QualityOfProtection;<a name="line.59"></a>
-<span class="sourceLineNo">060</span>import org.apache.hadoop.hbase.shaded.com.google.protobuf.Message;<a name="line.60"></a>
-<span class="sourceLineNo">061</span>import org.apache.hadoop.hbase.shaded.com.google.protobuf.Message.Builder;<a name="line.61"></a>
-<span class="sourceLineNo">062</span>import org.apache.hadoop.hbase.shaded.com.google.protobuf.RpcCallback;<a name="line.62"></a>
-<span class="sourceLineNo">063</span>import org.apache.hadoop.hbase.shaded.protobuf.ProtobufUtil;<a name="line.63"></a>
-<span class="sourceLineNo">064</span>import org.apache.hadoop.hbase.shaded.protobuf.generated.RPCProtos;<a name="line.64"></a>
-<span class="sourceLineNo">065</span>import org.apache.hadoop.hbase.shaded.protobuf.generated.RPCProtos.CellBlockMeta;<a name="line.65"></a>
-<span class="sourceLineNo">066</span>import org.apache.hadoop.hbase.shaded.protobuf.generated.RPCProtos.ConnectionHeader;<a name="line.66"></a>
-<span class="sourceLineNo">067</span>import org.apache.hadoop.hbase.shaded.protobuf.generated.RPCProtos.ExceptionResponse;<a name="line.67"></a>
-<span class="sourceLineNo">068</span>import org.apache.hadoop.hbase.shaded.protobuf.generated.RPCProtos.RequestHeader;<a name="line.68"></a>
-<span class="sourceLineNo">069</span>import org.apache.hadoop.hbase.shaded.protobuf.generated.RPCProtos.ResponseHeader;<a name="line.69"></a>
-<span class="sourceLineNo">070</span>import org.apache.hadoop.hbase.trace.TraceUtil;<a name="line.70"></a>
-<span class="sourceLineNo">071</span>import org.apache.hadoop.hbase.util.EnvironmentEdgeManager;<a name="line.71"></a>
-<span class="sourceLineNo">072</span>import org.apache.hadoop.hbase.util.ExceptionUtil;<a name="line.72"></a>
-<span class="sourceLineNo">073</span>import org.apache.hadoop.io.IOUtils;<a name="line.73"></a>
-<span class="sourceLineNo">074</span>import org.apache.hadoop.ipc.RemoteException;<a name="line.74"></a>
-<span class="sourceLineNo">075</span>import org.apache.hadoop.net.NetUtils;<a name="line.75"></a>
-<span class="sourceLineNo">076</span>import org.apache.hadoop.security.UserGroupInformation;<a name="line.76"></a>
-<span class="sourceLineNo">077</span>import org.apache.htrace.core.TraceScope;<a name="line.77"></a>
-<span class="sourceLineNo">078</span>import org.apache.yetus.audience.InterfaceAudience;<a name="line.78"></a>
+<span class="sourceLineNo">046</span>import javax.security.sasl.SaslException;<a name="line.46"></a>
+<span class="sourceLineNo">047</span>import org.apache.commons.logging.Log;<a name="line.47"></a>
+<span class="sourceLineNo">048</span>import org.apache.commons.logging.LogFactory;<a name="line.48"></a>
+<span class="sourceLineNo">049</span>import org.apache.hadoop.conf.Configuration;<a name="line.49"></a>
+<span class="sourceLineNo">050</span>import org.apache.hadoop.hbase.CellScanner;<a name="line.50"></a>
+<span class="sourceLineNo">051</span>import org.apache.hadoop.hbase.DoNotRetryIOException;<a name="line.51"></a>
+<span class="sourceLineNo">052</span>import org.apache.hadoop.hbase.exceptions.ConnectionClosingException;<a name="line.52"></a>
+<span class="sourceLineNo">053</span>import org.apache.hadoop.hbase.io.ByteArrayOutputStream;<a name="line.53"></a>
+<span class="sourceLineNo">054</span>import org.apache.hadoop.hbase.ipc.HBaseRpcController.CancellationCallback;<a name="line.54"></a>
+<span class="sourceLineNo">055</span>import org.apache.hadoop.hbase.security.HBaseSaslRpcClient;<a name="line.55"></a>
+<span class="sourceLineNo">056</span>import org.apache.hadoop.hbase.security.SaslUtil;<a name="line.56"></a>
+<span class="sourceLineNo">057</span>import org.apache.hadoop.hbase.security.SaslUtil.QualityOfProtection;<a name="line.57"></a>
+<span class="sourceLineNo">058</span>import org.apache.hadoop.hbase.trace.TraceUtil;<a name="line.58"></a>
+<span class="sourceLineNo">059</span>import org.apache.hadoop.hbase.util.EnvironmentEdgeManager;<a name="line.59"></a>
+<span class="sourceLineNo">060</span>import org.apache.hadoop.hbase.util.ExceptionUtil;<a name="line.60"></a>
+<span class="sourceLineNo">061</span>import org.apache.hadoop.io.IOUtils;<a name="line.61"></a>
+<span class="sourceLineNo">062</span>import org.apache.hadoop.ipc.RemoteException;<a name="line.62"></a>
+<span class="sourceLineNo">063</span>import org.apache.hadoop.net.NetUtils;<a name="line.63"></a>
+<span class="sourceLineNo">064</span>import org.apache.hadoop.security.UserGroupInformation;<a name="line.64"></a>
+<span class="sourceLineNo">065</span>import org.apache.hadoop.util.StringUtils;<a name="line.65"></a>
+<span class="sourceLineNo">066</span>import org.apache.htrace.core.TraceScope;<a name="line.66"></a>
+<span class="sourceLineNo">067</span>import org.apache.yetus.audience.InterfaceAudience;<a name="line.67"></a>
+<span class="sourceLineNo">068</span><a name="line.68"></a>
+<span class="sourceLineNo">069</span>import org.apache.hadoop.hbase.shaded.com.google.protobuf.Message;<a name="line.69"></a>
+<span class="sourceLineNo">070</span>import org.apache.hadoop.hbase.shaded.com.google.protobuf.Message.Builder;<a name="line.70"></a>
+<span class="sourceLineNo">071</span>import org.apache.hadoop.hbase.shaded.com.google.protobuf.RpcCallback;<a name="line.71"></a>
+<span class="sourceLineNo">072</span>import org.apache.hadoop.hbase.shaded.protobuf.ProtobufUtil;<a name="line.72"></a>
+<span class="sourceLineNo">073</span>import org.apache.hadoop.hbase.shaded.protobuf.generated.RPCProtos;<a name="line.73"></a>
+<span class="sourceLineNo">074</span>import org.apache.hadoop.hbase.shaded.protobuf.generated.RPCProtos.CellBlockMeta;<a name="line.74"></a>
+<span class="sourceLineNo">075</span>import org.apache.hadoop.hbase.shaded.protobuf.generated.RPCProtos.ConnectionHeader;<a name="line.75"></a>
+<span class="sourceLineNo">076</span>import org.apache.hadoop.hbase.shaded.protobuf.generated.RPCProtos.ExceptionResponse;<a name="line.76"></a>
+<span class="sourceLineNo">077</span>import org.apache.hadoop.hbase.shaded.protobuf.generated.RPCProtos.RequestHeader;<a name="line.77"></a>
+<span class="sourceLineNo">078</span>import org.apache.hadoop.hbase.shaded.protobuf.generated.RPCProtos.ResponseHeader;<a name="line.78"></a>
 <span class="sourceLineNo">079</span><a name="line.79"></a>
 <span class="sourceLineNo">080</span>/**<a name="line.80"></a>
 <span class="sourceLineNo">081</span> * Thread that reads responses and notifies callers. Each connection owns a socket connected to a<a name="line.81"></a>
@@ -271,533 +271,545 @@
 <span class="sourceLineNo">263</span>        /*<a name="line.263"></a>
 <span class="sourceLineNo">264</span>         * The max number of retries is 45, which amounts to 20s*45 = 15 minutes retries.<a name="line.264"></a>
 <span class="sourceLineNo">265</span>         */<a name="line.265"></a>
-<span class="sourceLineNo">266</span>        handleConnectionFailure(timeoutFailures++, this.rpcClient.maxRetries, toe);<a name="line.266"></a>
-<span class="sourceLineNo">267</span>      } catch (IOException ie) {<a name="line.267"></a>
-<span class="sourceLineNo">268</span>        handleConnectionFailure(ioFailures++, this.rpcClient.maxRetries, ie);<a name="line.268"></a>
-<span class="sourceLineNo">269</span>      }<a name="line.269"></a>
-<span class="sourceLineNo">270</span>    }<a name="line.270"></a>
-<span class="sourceLineNo">271</span>  }<a name="line.271"></a>
-<span class="sourceLineNo">272</span><a name="line.272"></a>
-<span class="sourceLineNo">273</span>  /**<a name="line.273"></a>
-<span class="sourceLineNo">274</span>   * Handle connection failures If the current number of retries is equal to the max number of<a name="line.274"></a>
-<span class="sourceLineNo">275</span>   * retries, stop retrying and throw the exception; Otherwise backoff N seconds and try connecting<a name="line.275"></a>
-<span class="sourceLineNo">276</span>   * again. This Method is only called from inside setupIOstreams(), which is synchronized. Hence<a name="line.276"></a>
-<span class="sourceLineNo">277</span>   * the sleep is synchronized; the locks will be retained.<a name="line.277"></a>
-<span class="sourceLineNo">278</span>   * @param curRetries current number of retries<a name="line.278"></a>
-<span class="sourceLineNo">279</span>   * @param maxRetries max number of retries allowed<a name="line.279"></a>
-<span class="sourceLineNo">280</span>   * @param ioe failure reason<a name="line.280"></a>
-<span class="sourceLineNo">281</span>   * @throws IOException if max number of retries is reached<a name="line.281"></a>
-<span class="sourceLineNo">282</span>   */<a name="line.282"></a>
-<span class="sourceLineNo">283</span>  private void handleConnectionFailure(int curRetries, int maxRetries, IOException ioe)<a name="line.283"></a>
-<span class="sourceLineNo">284</span>      throws IOException {<a name="line.284"></a>
-<span class="sourceLineNo">285</span>    closeSocket();<a name="line.285"></a>
-<span class="sourceLineNo">286</span><a name="line.286"></a>
-<span class="sourceLineNo">287</span>    // throw the exception if the maximum number of retries is reached<a name="line.287"></a>
-<span class="sourceLineNo">288</span>    if (curRetries &gt;= maxRetries || ExceptionUtil.isInterrupt(ioe)) {<a name="line.288"></a>
-<span class="sourceLineNo">289</span>      throw ioe;<a name="line.289"></a>
-<span class="sourceLineNo">290</span>    }<a name="line.290"></a>
-<span class="sourceLineNo">291</span><a name="line.291"></a>
-<span class="sourceLineNo">292</span>    // otherwise back off and retry<a name="line.292"></a>
-<span class="sourceLineNo">293</span>    try {<a name="line.293"></a>
-<span class="sourceLineNo">294</span>      Thread.sleep(this.rpcClient.failureSleep);<a name="line.294"></a>
-<span class="sourceLineNo">295</span>    } catch (InterruptedException ie) {<a name="line.295"></a>
-<span class="sourceLineNo">296</span>      ExceptionUtil.rethrowIfInterrupt(ie);<a name="line.296"></a>
-<span class="sourceLineNo">297</span>    }<a name="line.297"></a>
-<span class="sourceLineNo">298</span><a name="line.298"></a>
-<span class="sourceLineNo">299</span>    LOG.info("Retrying connect to server: " + remoteId.getAddress() + " after sleeping "<a name="line.299"></a>
-<span class="sourceLineNo">300</span>        + this.rpcClient.failureSleep + "ms. Already tried " + curRetries + " time(s).");<a name="line.300"></a>
-<span class="sourceLineNo">301</span>  }<a name="line.301"></a>
-<span class="sourceLineNo">302</span><a name="line.302"></a>
-<span class="sourceLineNo">303</span>  /*<a name="line.303"></a>
-<span class="sourceLineNo">304</span>   * wait till someone signals us to start reading RPC response or it is idle too long, it is marked<a name="line.304"></a>
-<span class="sourceLineNo">305</span>   * as to be closed, or the client is marked as not running.<a name="line.305"></a>
-<span class="sourceLineNo">306</span>   * @return true if it is time to read a response; false otherwise.<a name="line.306"></a>
-<span class="sourceLineNo">307</span>   */<a name="line.307"></a>
-<span class="sourceLineNo">308</span>  private synchronized boolean waitForWork() {<a name="line.308"></a>
-<span class="sourceLineNo">309</span>    // beware of the concurrent access to the calls list: we can add calls, but as well<a name="line.309"></a>
-<span class="sourceLineNo">310</span>    // remove them.<a name="line.310"></a>
-<span class="sourceLineNo">311</span>    long waitUntil = EnvironmentEdgeManager.currentTime() + this.rpcClient.minIdleTimeBeforeClose;<a name="line.311"></a>
-<span class="sourceLineNo">312</span>    for (;;) {<a name="line.312"></a>
-<span class="sourceLineNo">313</span>      if (thread == null) {<a name="line.313"></a>
-<span class="sourceLineNo">314</span>        return false;<a name="line.314"></a>
-<span class="sourceLineNo">315</span>      }<a name="line.315"></a>
-<span class="sourceLineNo">316</span>      if (!calls.isEmpty()) {<a name="line.316"></a>
-<span class="sourceLineNo">317</span>        return true;<a name="line.317"></a>
-<span class="sourceLineNo">318</span>      }<a name="line.318"></a>
-<span class="sourceLineNo">319</span>      if (EnvironmentEdgeManager.currentTime() &gt;= waitUntil) {<a name="line.319"></a>
-<span class="sourceLineNo">320</span>        closeConn(<a name="line.320"></a>
-<span class="sourceLineNo">321</span>          new IOException("idle connection closed with " + calls.size() + " pending request(s)"));<a name="line.321"></a>
-<span class="sourceLineNo">322</span>        return false;<a name="line.322"></a>
-<span class="sourceLineNo">323</span>      }<a name="line.323"></a>
-<span class="sourceLineNo">324</span>      try {<a name="line.324"></a>
-<span class="sourceLineNo">325</span>        wait(Math.min(this.rpcClient.minIdleTimeBeforeClose, 1000));<a name="line.325"></a>
-<span class="sourceLineNo">326</span>      } catch (InterruptedException e) {<a name="line.326"></a>
-<span class="sourceLineNo">327</span>      }<a name="line.327"></a>
-<span class="sourceLineNo">328</span>    }<a name="line.328"></a>
-<span class="sourceLineNo">329</span>  }<a name="line.329"></a>
-<span class="sourceLineNo">330</span><a name="line.330"></a>
-<span class="sourceLineNo">331</span>  @Override<a name="line.331"></a>
-<span class="sourceLineNo">332</span>  public void run() {<a name="line.332"></a>
-<span class="sourceLineNo">333</span>    if (LOG.isTraceEnabled()) {<a name="line.333"></a>
-<span class="sourceLineNo">334</span>      LOG.trace(threadName + ": starting, connections " + this.rpcClient.connections.size());<a name="line.334"></a>
-<span class="sourceLineNo">335</span>    }<a name="line.335"></a>
-<span class="sourceLineNo">336</span>    while (waitForWork()) {<a name="line.336"></a>
-<span class="sourceLineNo">337</span>      readResponse();<a name="line.337"></a>
-<span class="sourceLineNo">338</span>    }<a name="line.338"></a>
-<span class="sourceLineNo">339</span>    if (LOG.isTraceEnabled()) {<a name="line.339"></a>
-<span class="sourceLineNo">340</span>      LOG.trace(threadName + ": stopped, connections " + this.rpcClient.connections.size());<a name="line.340"></a>
-<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><a name="line.343"></a>
-<span class="sourceLineNo">344</span>  private void disposeSasl() {<a name="line.344"></a>
-<span class="sourceLineNo">345</span>    if (saslRpcClient != null) {<a name="line.345"></a>
-<span class="sourceLineNo">346</span>      saslRpcClient.dispose();<a name="line.346"></a>
-<span class="sourceLineNo">347</span>      saslRpcClient = null;<a name="line.347"></a>
-<span class="sourceLineNo">348</span>    }<a name="line.348"></a>
-<span class="sourceLineNo">349</span>  }<a name="line.349"></a>
-<span class="sourceLineNo">350</span><a name="line.350"></a>
-<span class="sourceLineNo">351</span>  private boolean setupSaslConnection(final InputStream in2, final OutputStream out2)<a name="line.351"></a>
-<span class="sourceLineNo">352</span>      throws IOException {<a name="line.352"></a>
-<span class="sourceLineNo">353</span>    saslRpcClient = new HBaseSaslRpcClient(authMethod, token, serverPrincipal,<a name="line.353"></a>
-<span class="sourceLineNo">354</span>        this.rpcClient.fallbackAllowed, this.rpcClient.conf.get("hbase.rpc.protection",<a name="line.354"></a>
-<span class="sourceLineNo">355</span>          QualityOfProtection.AUTHENTICATION.name().toLowerCase(Locale.ROOT)),<a name="line.355"></a>
-<span class="sourceLineNo">356</span>        this.rpcClient.conf.getBoolean(CRYPTO_AES_ENABLED_KEY, CRYPTO_AES_ENABLED_DEFAULT));<a name="line.356"></a>
-<span class="sourceLineNo">357</span>    return saslRpcClient.saslConnect(in2, out2);<a name="line.357"></a>
-<span class="sourceLineNo">358</span>  }<a name="line.358"></a>
-<span class="sourceLineNo">359</span><a name="line.359"></a>
-<span class="sourceLineNo">360</span>  /**<a name="line.360"></a>
-<span class="sourceLineNo">361</span>   * If multiple clients with the same principal try to connect to the same server at the same time,<a name="line.361"></a>
-<span class="sourceLineNo">362</span>   * the server assumes a replay attack is in progress. This is a feature of kerberos. In order to<a name="line.362"></a>
-<span class="sourceLineNo">363</span>   * work around this, what is done is that the client backs off randomly and tries to initiate the<a name="line.363"></a>
-<span class="sourceLineNo">364</span>   * connection again. The other problem is to do with ticket expiry. To handle that, a relogin is<a name="line.364"></a>
-<span class="sourceLineNo">365</span>   * attempted.<a name="line.365"></a>
-<span class="sourceLineNo">366</span>   * &lt;p&gt;<a name="line.366"></a>
-<span class="sourceLineNo">367</span>   * The retry logic is governed by the {@link #shouldAuthenticateOverKrb} method. In case when the<a name="line.367"></a>
-<span class="sourceLineNo">368</span>   * user doesn't have valid credentials, we don't need to retry (from cache or ticket). In such<a name="line.368"></a>
-<span class="sourceLineNo">369</span>   * cases, it is prudent to throw a runtime exception when we receive a SaslException from the<a name="line.369"></a>
-<span class="sourceLineNo">370</span>   * underlying authentication implementation, so there is no retry from other high level (for eg,<a name="line.370"></a>
-<span class="sourceLineNo">371</span>   * HCM or HBaseAdmin).<a name="line.371"></a>
-<span class="sourceLineNo">372</span>   * &lt;/p&gt;<a name="line.372"></a>
-<span class="sourceLineNo">373</span>   */<a name="line.373"></a>
-<span class="sourceLineNo">374</span>  private void handleSaslConnectionFailure(final int currRetries, final int maxRetries,<a name="line.374"></a>
-<span class="sourceLineNo">375</span>      final Exception ex, final UserGroupInformation user)<a name="line.375"></a>
-<span class="sourceLineNo">376</span>      throws IOException, InterruptedException {<a name="line.376"></a>
-<span class="sourceLineNo">377</span>    closeSocket();<a name="line.377"></a>
-<span class="sourceLineNo">378</span>    user.doAs(new PrivilegedExceptionAction&lt;Object&gt;() {<a name="line.378"></a>
-<span class="sourceLineNo">379</span>      @Override<a name="line.379"></a>
-<span class="sourceLineNo">380</span>      public Object run() throws IOException, InterruptedException {<a name="line.380"></a>
-<span class="sourceLineNo">381</span>        if (shouldAuthenticateOverKrb()) {<a name="line.381"></a>
-<span class="sourceLineNo">382</span>          if (currRetries &lt; maxRetries) {<a name="line.382"></a>
-<span class="sourceLineNo">383</span>            if (LOG.isDebugEnabled()) {<a name="line.383"></a>
-<span class="sourceLineNo">384</span>              LOG.debug("Exception encountered while connecting to " + "the server : " + ex);<a name="line.384"></a>
-<span class="sourceLineNo">385</span>            }<a name="line.385"></a>
-<span class="sourceLineNo">386</span>            // try re-login<a name="line.386"></a>
-<span class="sourceLineNo">387</span>            relogin();<a name="line.387"></a>
-<span class="sourceLineNo">388</span>            disposeSasl();<a name="line.388"></a>
-<span class="sourceLineNo">389</span>            // have granularity of milliseconds<a name="line.389"></a>
-<span class="sourceLineNo">390</span>            // we are sleeping with the Connection lock held but since this<a name="line.390"></a>
-<span class="sourceLineNo">391</span>            // connection instance is being used for connecting to the server<a name="line.391"></a>
-<span class="sourceLineNo">392</span>            // in question, it is okay<a name="line.392"></a>
-<span class="sourceLineNo">393</span>            Thread.sleep(ThreadLocalRandom.current().nextInt(reloginMaxBackoff) + 1);<a name="line.393"></a>
-<span class="sourceLineNo">394</span>            return null;<a name="line.394"></a>
-<span class="sourceLineNo">395</span>          } else {<a name="line.395"></a>
-<span class="sourceLineNo">396</span>            String msg = "Couldn't setup connection for "<a name="line.396"></a>
-<span class="sourceLineNo">397</span>                + UserGroupInformation.getLoginUser().getUserName() + " to " + serverPrincipal;<a name="line.397"></a>
-<span class="sourceLineNo">398</span>            LOG.warn(msg, ex);<a name="line.398"></a>
-<span class="sourceLineNo">399</span>            throw (IOException) new IOException(msg).initCause(ex);<a name="line.399"></a>
-<span class="sourceLineNo">400</span>          }<a name="line.400"></a>
-<span class="sourceLineNo">401</span>        } else {<a name="line.401"></a>
-<span class="sourceLineNo">402</span>          LOG.warn("Exception encountered while connecting to " + "the server : " + ex);<a name="line.402"></a>
-<span class="sourceLineNo">403</span>        }<a name="line.403"></a>
-<span class="sourceLineNo">404</span>        if (ex instanceof RemoteException) {<a name="line.404"></a>
-<span class="sourceLineNo">405</span>          throw (RemoteException) ex;<a name="line.405"></a>
-<span class="sourceLineNo">406</span>        }<a name="line.406"></a>
-<span class="sourceLineNo">407</span>        if (ex instanceof SaslException) {<a name="line.407"></a>
-<span class="sourceLineNo">408</span>          String msg = "SASL authentication failed."<a name="line.408"></a>
-<span class="sourceLineNo">409</span>              + " The most likely cause is missing or invalid credentials." + " Consider 'kinit'.";<a name="line.409"></a>
-<span class="sourceLineNo">410</span>          LOG.fatal(msg, ex);<a name="line.410"></a>
-<span class="sourceLineNo">411</span>          throw new RuntimeException(msg, ex);<a name="line.411"></a>
-<span class="sourceLineNo">412</span>        }<a name="line.412"></a>
-<span class="sourceLineNo">413</span>        throw new IOException(ex);<a name="line.413"></a>
-<span class="sourceLineNo">414</span>      }<a name="line.414"></a>
-<span class="sourceLineNo">415</span>    });<a name="line.415"></a>
-<span class="sourceLineNo">416</span>  }<a name="line.416"></a>
-<span class="sourceLineNo">417</span><a name="line.417"></a>
-<span class="sourceLineNo">418</span>  private void setupIOstreams() throws IOException {<a name="line.418"></a>
-<span class="sourceLineNo">419</span>    if (socket != null) {<a name="line.419"></a>
-<span class="sourceLineNo">420</span>      // The connection is already available. Perfect.<a name="line.420"></a>
-<span class="sourceLineNo">421</span>      return;<a name="line.421"></a>
-<span class="sourceLineNo">422</span>    }<a name="line.422"></a>
-<span class="sourceLineNo">423</span><a name="line.423"></a>
-<span class="sourceLineNo">424</span>    if (this.rpcClient.failedServers.isFailedServer(remoteId.getAddress())) {<a name="line.424"></a>
-<span class="sourceLineNo">425</span>      if (LOG.isDebugEnabled()) {<a name="line.425"></a>
-<span class="sourceLineNo">426</span>        LOG.debug("Not trying to connect to " + remoteId.address<a name="line.426"></a>
-<span class="sourceLineNo">427</span>            + " this server is in the failed servers list");<a name="line.427"></a>
-<span class="sourceLineNo">428</span>      }<a name="line.428"></a>
-<span class="sourceLineNo">429</span>      throw new FailedServerException(<a name="line.429"></a>
-<span class="sourceLineNo">430</span>          "This server is in the failed servers list: " + remoteId.address);<a name="line.430"></a>
-<span class="sourceLineNo">431</span>    }<a name="line.431"></a>
-<span class="sourceLineNo">432</span><a name="line.432"></a>
-<span class="sourceLineNo">433</span>    try {<a name="line.433"></a>
-<span class="sourceLineNo">434</span>      if (LOG.isDebugEnabled()) {<a name="line.434"></a>
-<span class="sourceLineNo">435</span>        LOG.debug("Connecting to " + remoteId.address);<a name="line.435"></a>
-<span class="sourceLineNo">436</span>      }<a name="line.436"></a>
-<span class="sourceLineNo">437</span><a name="line.437"></a>
-<span class="sourceLineNo">438</span>      short numRetries = 0;<a name="line.438"></a>
-<span class="sourceLineNo">439</span>      final short MAX_RETRIES = 5;<a name="line.439"></a>
-<span class="sourceLineNo">440</span>      while (true) {<a name="line.440"></a>
-<span class="sourceLineNo">441</span>        setupConnection();<a name="line.441"></a>
-<span class="sourceLineNo">442</span>        InputStream inStream = NetUtils.getInputStream(socket);<a name="line.442"></a>
-<span class="sourceLineNo">443</span>        // This creates a socket with a write timeout. This timeout cannot be changed.<a name="line.443"></a>
-<span class="sourceLineNo">444</span>        OutputStream outStream = NetUtils.getOutputStream(socket, this.rpcClient.writeTO);<a name="line.444"></a>
-<span class="sourceLineNo">445</span>        // Write out the preamble -- MAGIC, version, and auth to use.<a name="line.445"></a>
-<span class="sourceLineNo">446</span>        writeConnectionHeaderPreamble(outStream);<a name="line.446"></a>
-<span class="sourceLineNo">447</span>        if (useSasl) {<a name="line.447"></a>
-<span class="sourceLineNo">448</span>          final InputStream in2 = inStream;<a name="line.448"></a>
-<span class="sourceLineNo">449</span>          final OutputStream out2 = outStream;<a name="line.449"></a>
-<span class="sourceLineNo">450</span>          UserGroupInformation ticket = getUGI();<a name="line.450"></a>
-<span class="sourceLineNo">451</span>          boolean continueSasl;<a name="line.451"></a>
-<span class="sourceLineNo">452</span>          if (ticket == null) {<a name="line.452"></a>
-<span class="sourceLineNo">453</span>            throw new FatalConnectionException("ticket/user is null");<a name="line.453"></a>
-<span class="sourceLineNo">454</span>          }<a name="line.454"></a>
-<span class="sourceLineNo">455</span>          try {<a name="line.455"></a>
-<span class="sourceLineNo">456</span>            continueSasl = ticket.doAs(new PrivilegedExceptionAction&lt;Boolean&gt;() {<a name="line.456"></a>
-<span class="sourceLineNo">457</span>              @Override<a name="line.457"></a>
-<span class="sourceLineNo">458</span>              public Boolean run() throws IOException {<a name="line.458"></a>
-<span class="sourceLineNo">459</span>                return setupSaslConnection(in2, out2);<a name="line.459"></a>
-<span class="sourceLineNo">460</span>              }<a name="line.460"></a>
-<span class="sourceLineNo">461</span>            });<a name="line.461"></a>
-<span class="sourceLineNo">462</span>          } catch (Exception ex) {<a name="line.462"></a>
-<span class="sourceLineNo">463</span>            ExceptionUtil.rethrowIfInterrupt(ex);<a name="line.463"></a>
-<span class="sourceLineNo">464</span>            handleSaslConnectionFailure(numRetries++, MAX_RETRIES, ex, ticket);<a name="line.464"></a>
-<span class="sourceLineNo">465</span>            continue;<a name="line.465"></a>
+<span class="sourceLineNo">266</span>        if (LOG.isDebugEnabled()) {<a name="line.266"></a>
+<span class="sourceLineNo">267</span>          LOG.debug("Received exception in connection setup.\n" +<a name="line.267"></a>
+<span class="sourceLineNo">268</span>              StringUtils.stringifyException(toe));<a name="line.268"></a>
+<span class="sourceLineNo">269</span>        }<a name="line.269"></a>
+<span class="sourceLineNo">270</span>        handleConnectionFailure(timeoutFailures++, this.rpcClient.maxRetries, toe);<a name="line.270"></a>
+<span class="sourceLineNo">271</span>      } catch (IOException ie) {<a name="line.271"></a>
+<span class="sourceLineNo">272</span>        if (LOG.isDebugEnabled()) {<a name="line.272"></a>
+<span class="sourceLineNo">273</span>          LOG.debug("Received exception in connection setup.\n" +<a name="line.273"></a>
+<span class="sourceLineNo">274</span>              StringUtils.stringifyException(ie));<a name="line.274"></a>
+<span class="sourceLineNo">275</span>        }<a name="line.275"></a>
+<span class="sourceLineNo">276</span>        handleConnectionFailure(ioFailures++, this.rpcClient.maxRetries, ie);<a name="line.276"></a>
+<span class="sourceLineNo">277</span>      }<a name="line.277"></a>
+<span class="sourceLineNo">278</span>    }<a name="line.278"></a>
+<span class="sourceLineNo">279</span>  }<a name="line.279"></a>
+<span class="sourceLineNo">280</span><a name="line.280"></a>
+<span class="sourceLineNo">281</span>  /**<a name="line.281"></a>
+<span class="sourceLineNo">282</span>   * Handle connection failures If the current number of retries is equal to the max number of<a name="line.282"></a>
+<span class="sourceLineNo">283</span>   * retries, stop retrying and throw the exception; Otherwise backoff N seconds and try connecting<a name="line.283"></a>
+<span class="sourceLineNo">284</span>   * again. This Method is only called from inside setupIOstreams(), which is synchronized. Hence<a name="line.284"></a>
+<span class="sourceLineNo">285</span>   * the sleep is synchronized; the locks will be retained.<a name="line.285"></a>
+<span class="sourceLineNo">286</span>   * @param curRetries current number of retries<a name="line.286"></a>
+<span class="sourceLineNo">287</span>   * @param maxRetries max number of retries allowed<a name="line.287"></a>
+<span class="sourceLineNo">288</span>   * @param ioe failure reason<a name="line.288"></a>
+<span class="sourceLineNo">289</span>   * @throws IOException if max number of retries is reached<a name="line.289"></a>
+<span class="sourceLineNo">290</span>   */<a name="line.290"></a>
+<span class="sourceLineNo">291</span>  private void handleConnectionFailure(int curRetries, int maxRetries, IOException ioe)<a name="line.291"></a>
+<span class="sourceLineNo">292</span>      throws IOException {<a name="line.292"></a>
+<span class="sourceLineNo">293</span>    closeSocket();<a name="line.293"></a>
+<span class="sourceLineNo">294</span><a name="line.294"></a>
+<span class="sourceLineNo">295</span>    // throw the exception if the maximum number of retries is reached<a name="line.295"></a>
+<span class="sourceLineNo">296</span>    if (curRetries &gt;= maxRetries || ExceptionUtil.isInterrupt(ioe)) {<a name="line.296"></a>
+<span class="sourceLineNo">297</span>      throw ioe;<a name="line.297"></a>
+<span class="sourceLineNo">298</span>    }<a name="line.298"></a>
+<span class="sourceLineNo">299</span><a name="line.299"></a>
+<span class="sourceLineNo">300</span>    // otherwise back off and retry<a name="line.300"></a>
+<span class="sourceLineNo">301</span>    try {<a name="line.301"></a>
+<span class="sourceLineNo">302</span>      Thread.sleep(this.rpcClient.failureSleep);<a name="line.302"></a>
+<span class="sourceLineNo">303</span>    } catch (InterruptedException ie) {<a name="line.303"></a>
+<span class="sourceLineNo">304</span>      ExceptionUtil.rethrowIfInterrupt(ie);<a name="line.304"></a>
+<span class="sourceLineNo">305</span>    }<a name="line.305"></a>
+<span class="sourceLineNo">306</span><a name="line.306"></a>
+<span class="sourceLineNo">307</span>    if (LOG.isInfoEnabled()) {<a name="line.307"></a>
+<span class="sourceLineNo">308</span>      LOG.info("Retrying connect to server: " + remoteId.getAddress() +<a name="line.308"></a>
+<span class="sourceLineNo">309</span>        " after sleeping " + this.rpcClient.failureSleep + "ms. Already tried " + curRetries +<a name="line.309"></a>
+<span class="sourceLineNo">310</span>        " time(s).");<a name="line.310"></a>
+<span class="sourceLineNo">311</span>    }<a name="line.311"></a>
+<span class="sourceLineNo">312</span>  }<a name="line.312"></a>
+<span class="sourceLineNo">313</span><a name="line.313"></a>
+<span class="sourceLineNo">314</span>  /*<a name="line.314"></a>
+<span class="sourceLineNo">315</span>   * wait till someone signals us to start reading RPC response or it is idle too long, it is marked<a name="line.315"></a>
+<span class="sourceLineNo">316</span>   * as to be closed, or the client is marked as not running.<a name="line.316"></a>
+<span class="sourceLineNo">317</span>   * @return true if it is time to read a response; false otherwise.<a name="line.317"></a>
+<span class="sourceLineNo">318</span>   */<a name="line.318"></a>
+<span class="sourceLineNo">319</span>  private synchronized boolean waitForWork() {<a name="line.319"></a>
+<span class="sourceLineNo">320</span>    // beware of the concurrent access to the calls list: we can add calls, but as well<a name="line.320"></a>
+<span class="sourceLineNo">321</span>    // remove them.<a name="line.321"></a>
+<span class="sourceLineNo">322</span>    long waitUntil = EnvironmentEdgeManager.currentTime() + this.rpcClient.minIdleTimeBeforeClose;<a name="line.322"></a>
+<span class="sourceLineNo">323</span>    for (;;) {<a name="line.323"></a>
+<span class="sourceLineNo">324</span>      if (thread == null) {<a name="line.324"></a>
+<span class="sourceLineNo">325</span>        return false;<a name="line.325"></a>
+<span class="sourceLineNo">326</span>      }<a name="line.326"></a>
+<span class="sourceLineNo">327</span>      if (!calls.isEmpty()) {<a name="line.327"></a>
+<span class="sourceLineNo">328</span>        return true;<a name="line.328"></a>
+<span class="sourceLineNo">329</span>      }<a name="line.329"></a>
+<span class="sourceLineNo">330</span>      if (EnvironmentEdgeManager.currentTime() &gt;= waitUntil) {<a name="line.330"></a>
+<span class="sourceLineNo">331</span>        closeConn(<a name="line.331"></a>
+<span class="sourceLineNo">332</span>          new IOException("idle connection closed with " + calls.size() + " pending request(s)"));<a name="line.332"></a>
+<span class="sourceLineNo">333</span>        return false;<a name="line.333"></a>
+<span class="sourceLineNo">334</span>      }<a name="line.334"></a>
+<span class="sourceLineNo">335</span>      try {<a name="line.335"></a>
+<span class="sourceLineNo">336</span>        wait(Math.min(this.rpcClient.minIdleTimeBeforeClose, 1000));<a name="line.336"></a>
+<span class="sourceLineNo">337</span>      } catch (InterruptedException e) {<a name="line.337"></a>
+<span class="sourceLineNo">338</span>      }<a name="line.338"></a>
+<span class="sourceLineNo">339</span>    }<a name="line.339"></a>
+<span class="sourceLineNo">340</span>  }<a name="line.340"></a>
+<span class="sourceLineNo">341</span><a name="line.341"></a>
+<span class="sourceLineNo">342</span>  @Override<a name="line.342"></a>
+<span class="sourceLineNo">343</span>  public void run() {<a name="line.343"></a>
+<span class="sourceLineNo">344</span>    if (LOG.isTraceEnabled()) {<a name="line.344"></a>
+<span class="sourceLineNo">345</span>      LOG.trace(threadName + ": starting, connections " + this.rpcClient.connections.size());<a name="line.345"></a>
+<span class="sourceLineNo">346</span>    }<a name="line.346"></a>
+<span class="sourceLineNo">347</span>    while (waitForWork()) {<a name="line.347"></a>
+<span class="sourceLineNo">348</span>      readResponse();<a name="line.348"></a>
+<span class="sourceLineNo">349</span>    }<a name="line.349"></a>
+<span class="sourceLineNo">350</span>    if (LOG.isTraceEnabled()) {<a name="line.350"></a>
+<span class="sourceLineNo">351</span>      LOG.trace(threadName + ": stopped, connections " + this.rpcClient.connections.size());<a name="line.351"></a>
+<span class="sourceLineNo">352</span>    }<a name="line.352"></a>
+<span class="sourceLineNo">353</span>  }<a name="line.353"></a>
+<span class="sourceLineNo">354</span><a name="line.354"></a>
+<span class="sourceLineNo">355</span>  private void disposeSasl() {<a name="line.355"></a>
+<span class="sourceLineNo">356</span>    if (saslRpcClient != null) {<a name="line.356"></a>
+<span class="sourceLineNo">357</span>      saslRpcClient.dispose();<a name="line.357"></a>
+<span class="sourceLineNo">358</span>      saslRpcClient = null;<a name="line.358"></a>
+<span class="sourceLineNo">359</span>    }<a name="line.359"></a>
+<span class="sourceLineNo">360</span>  }<a name="line.360"></a>
+<span class="sourceLineNo">361</span><a name="line.361"></a>
+<span class="sourceLineNo">362</span>  private boolean setupSaslConnection(final InputStream in2, final OutputStream out2)<a name="line.362"></a>
+<span class="sourceLineNo">363</span>      throws IOException {<a name="line.363"></a>
+<span class="sourceLineNo">364</span>    saslRpcClient = new HBaseSaslRpcClient(authMethod, token, serverPrincipal,<a name="line.364"></a>
+<span class="sourceLineNo">365</span>        this.rpcClient.fallbackAllowed, this.rpcClient.conf.get("hbase.rpc.protection",<a name="line.365"></a>
+<span class="sourceLineNo">366</span>          QualityOfProtection.AUTHENTICATION.name().toLowerCase(Locale.ROOT)),<a name="line.366"></a>
+<span class="sourceLineNo">367</span>        this.rpcClient.conf.getBoolean(CRYPTO_AES_ENABLED_KEY, CRYPTO_AES_ENABLED_DEFAULT));<a name="line.367"></a>
+<span class="sourceLineNo">368</span>    return saslRpcClient.saslConnect(in2, out2);<a name="line.368"></a>
+<span class="sourceLineNo">369</span>  }<a name="line.369"></a>
+<span class="sourceLineNo">370</span><a name="line.370"></a>
+<span class="sourceLineNo">371</span>  /**<a name="line.371"></a>
+<span class="sourceLineNo">372</span>   * If multiple clients with the same principal try to connect to the same server at the same time,<a name="line.372"></a>
+<span class="sourceLineNo">373</span>   * the server assumes a replay attack is in progress. This is a feature of kerberos. In order to<a name="line.373"></a>
+<span class="sourceLineNo">374</span>   * work around this, what is done is that the client backs off randomly and tries to initiate the<a name="line.374"></a>
+<span class="sourceLineNo">375</span>   * connection again. The other problem is to do with ticket expiry. To handle that, a relogin is<a name="line.375"></a>
+<span class="sourceLineNo">376</span>   * attempted.<a name="line.376"></a>
+<span class="sourceLineNo">377</span>   * &lt;p&gt;<a name="line.377"></a>
+<span class="sourceLineNo">378</span>   * The retry logic is governed by the {@link #shouldAuthenticateOverKrb} method. In case when the<a name="line.378"></a>
+<span class="sourceLineNo">379</span>   * user doesn't have valid credentials, we don't need to retry (from cache or ticket). In such<a name="line.379"></a>
+<span class="sourceLineNo">380</span>   * cases, it is prudent to throw a runtime exception when we receive a SaslException from the<a name="line.380"></a>
+<span class="sourceLineNo">381</span>   * underlying authentication implementation, so there is no retry from other high level (for eg,<a name="line.381"></a>
+<span class="sourceLineNo">382</span>   * HCM or HBaseAdmin).<a name="line.382"></a>
+<span class="sourceLineNo">383</span>   * &lt;/p&gt;<a name="line.383"></a>
+<span class="sourceLineNo">384</span>   */<a name="line.384"></a>
+<span class="sourceLineNo">385</span>  private void handleSaslConnectionFailure(final int currRetries, final int maxRetries,<a name="line.385"></a>
+<span class="sourceLineNo">386</span>      final Exception ex, final UserGroupInformation user)<a name="line.386"></a>
+<span class="sourceLineNo">387</span>      throws IOException, InterruptedException {<a name="line.387"></a>
+<span class="sourceLineNo">388</span>    closeSocket();<a name="line.388"></a>
+<span class="sourceLineNo">389</span>    user.doAs(new PrivilegedExceptionAction&lt;Object&gt;() {<a name="line.389"></a>
+<span class="sourceLineNo">390</span>      @Override<a name="line.390"></a>
+<span class="sourceLineNo">391</span>      public Object run() throws IOException, InterruptedException {<a name="line.391"></a>
+<span class="sourceLineNo">392</span>        if (shouldAuthenticateOverKrb()) {<a name="line.392"></a>
+<span class="sourceLineNo">393</span>          if (currRetries &lt; maxRetries) {<a name="line.393"></a>
+<span class="sourceLineNo">394</span>            if (LOG.isDebugEnabled()) {<a name="line.394"></a>
+<span class="sourceLineNo">395</span>              LOG.debug("Exception encountered while connecting to " +<a name="line.395"></a>
+<span class="sourceLineNo">396</span>                "the server : " + StringUtils.stringifyException(ex));<a name="line.396"></a>
+<span class="sourceLineNo">397</span>            }<a name="line.397"></a>
+<span class="sourceLineNo">398</span>            // try re-login<a name="line.398"></a>
+<span class="sourceLineNo">399</span>            relogin();<a name="line.399"></a>
+<span class="sourceLineNo">400</span>            disposeSasl();<a name="line.400"></a>
+<span class="sourceLineNo">401</span>            // have granularity of milliseconds<a name="line.401"></a>
+<span class="sourceLineNo">402</span>            // we are sleeping with the Connection lock held but since this<a name="line.402"></a>
+<span class="sourceLineNo">403</span>            // connection instance is being used for connecting to the server<a name="line.403"></a>
+<span class="sourceLineNo">404</span>            // in question, it is okay<a name="line.404"></a>
+<span class="sourceLineNo">405</span>            Thread.sleep(ThreadLocalRandom.current().nextInt(reloginMaxBackoff) + 1);<a name="line.405"></a>
+<span class="sourceLineNo">406</span>            return null;<a name="line.406"></a>
+<span class="sourceLineNo">407</span>          } else {<a name="line.407"></a>
+<span class="sourceLineNo">408</span>            String msg = "Couldn't setup connection for "<a name="line.408"></a>
+<span class="sourceLineNo">409</span>                + UserGroupInformation.getLoginUser().getUserName() + " to " + serverPrincipal;<a name="line.409"></a>
+<span class="sourceLineNo">410</span>            LOG.warn(msg, ex);<a name="line.410"></a>
+<span class="sourceLineNo">411</span>            throw (IOException) new IOException(msg).initCause(ex);<a name="line.411"></a>
+<span class="sourceLineNo">412</span>          }<a name="line.412"></a>
+<span class="sourceLineNo">413</span>        } else {<a name="line.413"></a>
+<span class="sourceLineNo">414</span>          LOG.warn("Exception encountered while connecting to " + "the server : " + ex);<a name="line.414"></a>
+<span class="sourceLineNo">415</span>        }<a name="line.415"></a>
+<span class="sourceLineNo">416</span>        if (ex instanceof RemoteException) {<a name="line.416"></a>
+<span class="sourceLineNo">417</span>          throw (RemoteException) ex;<a name="line.417"></a>
+<span class="sourceLineNo">418</span>        }<a name="line.418"></a>
+<span class="sourceLineNo">419</span>        if (ex instanceof SaslException) {<a name="line.419"></a>
+<span class="sourceLineNo">420</span>          String msg = "SASL authentication failed."<a name="line.420"></a>
+<span class="sourceLineNo">421</span>              + " The most likely cause is missing or invalid credentials." + " Consider 'kinit'.";<a name="line.421"></a>
+<span class="sourceLineNo">422</span>          LOG.fatal(msg, ex);<a name="line.422"></a>
+<span class="sourceLineNo">423</span>          throw new RuntimeException(msg, ex);<a name="line.423"></a>
+<span class="sourceLineNo">424</span>        }<a name="line.424"></a>
+<span class="sourceLineNo">425</span>        throw new IOException(ex);<a name="line.425"></a>
+<span class="sourceLineNo">426</span>      }<a name="line.426"></a>
+<span class="sourceLineNo">427</span>    });<a name="line.427"></a>
+<span class="sourceLineNo">428</span>  }<a name="line.428"></a>
+<span class="sourceLineNo">429</span><a name="line.429"></a>
+<span class="sourceLineNo">430</span>  private void setupIOstreams() throws IOException {<a name="line.430"></a>
+<span class="sourceLineNo">431</span>    if (socket != null) {<a name="line.431"></a>
+<span class="sourceLineNo">432</span>      // The connection is already available. Perfect.<a name="line.432"></a>
+<span class="sourceLineNo">433</span>      return;<a name="line.433"></a>
+<span class="sourceLineNo">434</span>    }<a name="line.434"></a>
+<span class="sourceLineNo">435</span><a name="line.435"></a>
+<span class="sourceLineNo">436</span>    if (this.rpcClient.failedServers.isFailedServer(remoteId.getAddress())) {<a name="line.436"></a>
+<span class="sourceLineNo">437</span>      if (LOG.isDebugEnabled()) {<a name="line.437"></a>
+<span class="sourceLineNo">438</span>        LOG.debug("Not trying to connect to " + remoteId.address<a name="line.438"></a>
+<span class="sourceLineNo">439</span>            + " this server is in the failed servers list");<a name="line.439"></a>
+<span class="sourceLineNo">440</span>      }<a name="line.440"></a>
+<span class="sourceLineNo">441</span>      throw new FailedServerException(<a name="line.441"></a>
+<span class="sourceLineNo">442</span>          "This server is in the failed servers list: " + remoteId.address);<a name="line.442"></a>
+<span class="sourceLineNo">443</span>    }<a name="line.443"></a>
+<span class="sourceLineNo">444</span><a name="line.444"></a>
+<span class="sourceLineNo">445</span>    try {<a name="line.445"></a>
+<span class="sourceLineNo">446</span>      if (LOG.isDebugEnabled()) {<a name="line.446"></a>
+<span class="sourceLineNo">447</span>        LOG.debug("Connecting to " + remoteId.address);<a name="line.447"></a>
+<span class="sourceLineNo">448</span>      }<a name="line.448"></a>
+<span class="sourceLineNo">449</span><a name="line.449"></a>
+<span class="sourceLineNo">450</span>      short numRetries = 0;<a name="line.450"></a>
+<span class="sourceLineNo">451</span>      final short MAX_RETRIES = 5;<a name="line.451"></a>
+<span class="sourceLineNo">452</span>      while (true) {<a name="line.452"></a>
+<span class="sourceLineNo">453</span>        setupConnection();<a name="line.453"></a>
+<span class="sourceLineNo">454</span>        InputStream inStream = NetUtils.getInputStream(socket);<a name="line.454"></a>
+<span class="sourceLineNo">455</span>        // This creates a socket with a write timeout. This timeout cannot be changed.<a name="line.455"></a>
+<span class="sourceLineNo">456</span>        OutputStream outStream = NetUtils.getOutputStream(socket, this.rpcClient.writeTO);<a name="line.456"></a>
+<span class="sourceLineNo">457</span>        // Write out the preamble -- MAGIC, version, and auth to use.<a name="line.457"></a>
+<span class="sourceLineNo">458</span>        writeConnectionHeaderPreamble(outStream);<a name="line.458"></a>
+<span class="sourceLineNo">459</span>        if (useSasl) {<a name="line.459"></a>
+<span class="sourceLineNo">460</span>          final InputStream in2 = inStream;<a name="line.460"></a>
+<span class="sourceLineNo">461</span>          final OutputStream out2 = outStream;<a name="line.461"></a>
+<span class="sourceLineNo">462</span>          UserGroupInformation ticket = getUGI();<a name="line.462"></a>
+<span class="sourceLineNo">463</span>          boolean continueSasl;<a name="line.463"></a>
+<span class="sourceLineNo">464</span>          if (ticket == null) {<a name="line.464"></a>
+<span class="sourceLineNo">465</span>            throw new FatalConnectionException("ticket/user is null");<a name="line.465"></a>
 <span class="sourceLineNo">466</span>          }<a name="line.466"></a>
-<span class="sourceLineNo">467</span>          if (continueSasl) {<a name="line.467"></a>
-<span class="sourceLineNo">468</span>            // Sasl connect is successful. Let's set up Sasl i/o streams.<a name="line.468"></a>
-<span class="sourceLineNo">469</span>            inStream = saslRpcClient.getInputStream();<a name="line.469"></a>
-<span class="sourceLineNo">470</span>            outStream = saslRpcClient.getOutputStream();<a name="line.470"></a>
-<span class="sourceLineNo">471</span>          } else {<a name="line.471"></a>
-<span class="sourceLineNo">472</span>            // fall back to simple auth because server told us so.<a name="line.472"></a>
-<span class="sourceLineNo">473</span>            // do not change authMethod and useSasl here, we should start from secure when<a name="line.473"></a>
-<span class="sourceLineNo">474</span>            // reconnecting because regionserver may change its sasl config after restart.<a name="line.474"></a>
-<span class="sourceLineNo">475</span>          }<a name="line.475"></a>
-<span class="sourceLineNo">476</span>        }<a name="line.476"></a>
-<span class="sourceLineNo">477</span>        this.in = new DataInputStream(new BufferedInputStream(inStream));<a name="line.477"></a>
-<span class="sourceLineNo">478</span>        this.out = new DataOutputStream(new BufferedOutputStream(outStream));<a name="line.478"></a>
-<span class="sourceLineNo">479</span>        // Now write out the connection header<a name="line.479"></a>
-<span class="sourceLineNo">480</span>        writeConnectionHeader();<a name="line.480"></a>
-<span class="sourceLineNo">481</span>        // process the response from server for connection header if necessary<a name="line.481"></a>
-<span class="sourceLineNo">482</span>        processResponseForConnectionHeader();<a name="line.482"></a>
-<span class="sourceLineNo">483</span><a name="line.483"></a>
-<span class="sourceLineNo">484</span>        break;<a name="line.484"></a>
-<span class="sourceLineNo">485</span>      }<a name="line.485"></a>
-<span class="sourceLineNo">486</span>    } catch (Throwable t) {<a name="line.486"></a>
-<span class="sourceLineNo">487</span>      closeSocket();<a name="line.487"></a>
-<span class="sourceLineNo">488</span>      IOException e = ExceptionUtil.asInterrupt(t);<a name="line.488"></a>
-<span class="sourceLineNo">489</span>      if (e == null) {<a name="line.489"></a>
-<span class="sourceLineNo">490</span>        this.rpcClient.failedServers.addToFailedServers(remoteId.address, t);<a name="line.490"></a>
-<span class="sourceLineNo">491</span>        if (t instanceof LinkageError) {<a name="line.491"></a>
-<span class="sourceLineNo">492</span>          // probably the hbase hadoop version does not match the running hadoop version<a name="line.492"></a>
-<span class="sourceLineNo">493</span>          e = new DoNotRetryIOException(t);<a name="line.493"></a>
-<span class="sourceLineNo">494</span>        } else if (t instanceof IOException) {<a name="line.494"></a>
-<span class="sourceLineNo">495</span>          e = (IOException) t;<a name="line.495"></a>
-<span class="sourceLineNo">496</span>        } else {<a name="line.496"></a>
-<span class="sourceLineNo">497</span>          e = new IOException("Could not set up IO Streams to " + remoteId.address, t);<a name="line.497"></a>
-<span class="sourceLineNo">498</span>        }<a name="line.498"></a>
-<span class="sourceLineNo">499</span>      }<a name="line.499"></a>
-<span class="sourceLineNo">500</span>      throw e;<a name="line.500"></a>
-<span class="sourceLineNo">501</span>    }<a name="line.501"></a>
-<span class="sourceLineNo">502</span><a name="line.502"></a>
-<span class="sourceLineNo">503</span>    // start the receiver thread after the socket connection has been set up<a name="line.503"></a>
-<span class="sourceLineNo">504</span>    thread = new Thread(this, threadName);<a name="line.504"></a>
-<span class="sourceLineNo">505</span>    thread.setDaemon(true);<a name="line.505"></a>
-<span class="sourceLineNo">506</span>    thread.start();<a name="line.506"></a>
-<span class="sourceLineNo">507</span>  }<a name="line.507"></a>
-<span class="sourceLineNo">508</span><a name="line.508"></a>
-<span class="sourceLineNo">509</span>  /**<a name="line.509"></a>
-<span class="sourceLineNo">510</span>   * Write the RPC header: {@code &lt;MAGIC WORD -- 'HBas'&gt; &lt;ONEBYTE_VERSION&gt; &lt;ONEBYTE_AUTH_TYPE&gt;}<a name="line.510"></a>
-<span class="sourceLineNo">511</span>   */<a name="line.511"></a>
-<span class="sourceLineNo">512</span>  private void writeConnectionHeaderPreamble(OutputStream out) throws IOException {<a name="line.512"></a>
-<span class="sourceLineNo">513</span>    out.write(connectionHeaderPreamble);<a name="line.513"></a>
-<span class="sourceLineNo">514</span>    out.flush();<a name="line.514"></a>
-<span class="sourceLineNo">515</span>  }<a name="line.515"></a>
-<span class="sourceLineNo">516</span><a name="line.516"></a>
-<span class="sourceLineNo">517</span>  /**<a name="line.517"></a>
-<span class="sourceLineNo">518</span>   * Write the connection header.<a name="line.518"></a>
-<span class="sourceLineNo">519</span>   */<a name="line.519"></a>
-<span class="sourceLineNo">520</span>  private void writeConnectionHeader() throws IOException {<a name="line.520"></a>
-<span class="sourceLineNo">521</span>    boolean isCryptoAesEnable = false;<a name="line.521"></a>
-<span class="sourceLineNo">522</span>    // check if Crypto AES is enabled<a name="line.522"></a>
-<span class="sourceLineNo">523</span>    if (saslRpcClient != null) {<a name="line.523"></a>
-<span class="sourceLineNo">524</span>      boolean saslEncryptionEnabled = SaslUtil.QualityOfProtection.PRIVACY.<a name="line.524"></a>
-<span class="sourceLineNo">525</span>          getSaslQop().equalsIgnoreCase(saslRpcClient.getSaslQOP());<a name="line.525"></a>
-<span class="sourceLineNo">526</span>      isCryptoAesEnable = saslEncryptionEnabled &amp;&amp; conf.getBoolean(<a name="line.526"></a>
-<span class="sourceLineNo">527</span>          CRYPTO_AES_ENABLED_KEY, CRYPTO_AES_ENABLED_DEFAULT);<a name="line.527"></a>
-<span class="sourceLineNo">528</span>    }<a name="line.528"></a>
-<span class="sourceLineNo">529</span><a name="line.529"></a>
-<span class="sourceLineNo">530</span>    // if Crypto AES is enabled, set transformation and negotiate with server<a name="line.530"></a>
-<span class="sourceLineNo">531</span>    if (isCryptoAesEnable) {<a name="line.531"></a>
-<span class="sourceLineNo">532</span>      waitingConnectionHeaderResponse = true;<a name="line.532"></a>
-<span class="sourceLineNo">533</span>    }<a name="line.533"></a>
-<span class="sourceLineNo">534</span>    this.out.write(connectionHeaderWithLength);<a name="line.534"></a>
-<span class="sourceLineNo">535</span>    this.out.flush();<a name="line.535"></a>
-<span class="sourceLineNo">536</span>  }<a name="line.536"></a>
-<span class="sourceLineNo">537</span><a name="line.537"></a>
-<span class="sourceLineNo">538</span>  private void processResponseForConnectionHeader() throws IOException {<a name="line.538"></a>
-<span class="sourceLineNo">539</span>    // if no response excepted, return<a name="line.539"></a>
-<span class="sourceLineNo">540</span>    if (!waitingConnectionHeaderResponse) return;<a name="line.540"></a>
-<span class="sourceLineNo">541</span>    try {<a name="line.541"></a>
-<span class="sourceLineNo">542</span>      // read the ConnectionHeaderResponse from server<a name="line.542"></a>
-<span class="sourceLineNo">543</span>      int len = this.in.readInt();<a name="line.543"></a>
-<span class="sourceLineNo">544</span>      byte[] buff = new byte[len];<a name="line.544"></a>
-<span class="sourceLineNo">545</span>      int readSize = this.in.read(buff);<a name="line.545"></a>
-<span class="sourceLineNo">546</span>      if (LOG.isDebugEnabled()) {<a name="line.546"></a>
-<span class="sourceLineNo">547</span>        LOG.debug("Length of response for connection header:" + readSize);<a name="line.547"></a>
-<span class="sourceLineNo">548</span>      }<a name="line.548"></a>
+<span class="sourceLineNo">467</span>          try {<a name="line.467"></a>
+<span class="sourceLineNo">468</span>            continueSasl = ticket.doAs(new PrivilegedExceptionAction&lt;Boolean&gt;() {<a name="line.468"></a>
+<span class="sourceLineNo">469</span>              @Override<a name="line.469"></a>
+<span class="sourceLineNo">470</span>              public Boolean run() throws IOException {<a name="line.470"></a>
+<span class="sourceLineNo">471</span>                return setupSaslConnection(in2, out2);<a name="line.471"></a>
+<span class="sourceLineNo">472</span>              }<a name="line.472"></a>
+<span class="sourceLineNo">473</span>            });<a name="line.473"></a>
+<span class="sourceLineNo">474</span>          } catch (Exception ex) {<a name="line.474"></a>
+<span class="sourceLineNo">475</span>            ExceptionUtil.rethrowIfInterrupt(ex);<a name="line.475"></a>
+<span class="sourceLineNo">476</span>            handleSaslConnectionFailure(numRetries++, MAX_RETRIES, ex, ticket);<a name="line.476"></a>
+<span class="sourceLineNo">477</span>            continue;<a name="line.477"></a>
+<span class="sourceLineNo">478</span>          }<a name="line.478"></a>
+<span class="sourceLineNo">479</span>          if (continueSasl) {<a name="line.479"></a>
+<span class="sourceLineNo">480</span>            // Sasl connect is successful. Let's set up Sasl i/o streams.<a name="line.480"></a>
+<span class="sourceLineNo">481</span>            inStream = saslRpcClient.getInputStream();<a name="line.481"></a>
+<span class="sourceLineNo">482</span>            outStream = saslRpcClient.getOutputStream();<a name="line.482"></a>
+<span class="sourceLineNo">483</span>          } else {<a name="line.483"></a>
+<span class="sourceLineNo">484</span>            // fall back to simple auth because server told us so.<a name="line.484"></a>
+<span class="sourceLineNo">485</span>            // do not change authMethod and useSasl here, we should start from secure when<a name="line.485"></a>
+<span class="sourceLineNo">486</span>            // reconnecting because regionserver may change its sasl config after restart.<a name="line.486"></a>
+<span class="sourceLineNo">487</span>          }<a name="line.487"></a>
+<span class="sourceLineNo">488</span>        }<a name="line.488"></a>
+<span class="sourceLineNo">489</span>        this.in = new DataInputStream(new BufferedInputStream(inStream));<a name="line.489"></a>
+<span class="sourceLineNo">490</span>        this.out = new DataOutputStream(new BufferedOutputStream(outStream));<a name="line.490"></a>
+<span class="sourceLineNo">491</span>        // Now write out the connection header<a name="line.491"></a>
+<span class="sourceLineNo">492</span>        writeConnectionHeader();<a name="line.492"></a>
+<span class="sourceLineNo">493</span>        // process the response from server for connection header if necessary<a name="line.493"></a>
+<span class="sourceLineNo">494</span>        processResponseForConnectionHeader();<a name="line.494"></a>
+<span class="sourceLineNo">495</span><a name="line.495"></a>
+<span class="sourceLineNo">496</span>        break;<a name="line.496"></a>
+<span class="sourceLineNo">497</span>      }<a name="line.497"></a>
+<span class="sourceLineNo">498</span>    } catch (Throwable t) {<a name="line.498"></a>
+<span class="sourceLineNo">499</span>      closeSocket();<a name="line.499"></a>
+<span class="sourceLineNo">500</span>      IOException e = ExceptionUtil.asInterrupt(t);<a name="line.500"></a>
+<span class="sourceLineNo">501</span>      if (e == null) {<a name="line.501"></a>
+<span class="sourceLineNo">502</span>        this.rpcClient.failedServers.addToFailedServers(remoteId.address, t);<a name="line.502"></a>
+<span class="sourceLineNo">503</span>        if (t instanceof LinkageError) {<a name="line.503"></a>
+<span class="sourceLineNo">504</span>          // probably the hbase hadoop version does not match the running hadoop version<a name="line.504"></a>
+<span class="sourceLineNo">505</span>          e = new DoNotRetryIOException(t);<a name="line.505"></a>
+<span class="sourceLineNo">506</span>        } else if (t instanceof IOException) {<a name="line.506"></a>
+<span class="sourceLineNo">507</span>          e = (IOException) t;<a name="line.507"></a>
+<span class="sourceLineNo">508</span>        } else {<a name="line.508"></a>
+<span class="sourceLineNo">509</span>          e = new IOException("Could not set up IO Streams to " + remoteId.address, t);<a name="line.509"></a>
+<span class="sourceLineNo">510</span>        }<a name="line.510"></a>
+<span class="sourceLineNo">511</span>      }<a name="line.511"></a>
+<span class="sourceLineNo">512</span>      throw e;<a name="line.512"></a>
+<span class="sourceLineNo">513</span>    }<a name="line.513"></a>
+<span class="sourceLineNo">514</span><a name="line.514"></a>
+<span class="sourceLineNo">515</span>    // start the receiver thread after the socket connection has been set up<a name="line.515"></a>
+<span class="sourceLineNo">516</span>    thread = new Thread(this, threadName);<a name="line.516"></a>
+<span class="sourceLineNo">517</span>    thread.setDaemon(true);<a name="line.517"></a>
+<span class="sourceLineNo">518</span>    thread.start();<a name="line.518"></a>
+<span class="sourceLineNo">519</span>  }<a name="line.519"></a>
+<span class="sourceLineNo">520</span><a name="line.520"></a>
+<span class="sourceLineNo">521</span>  /**<a name="line.521"></a>
+<span class="sourceLineNo">522</span>   * Write the RPC header: {@code &lt;MAGIC WORD -- 'HBas'&gt; &lt;ONEBYTE_VERSION&gt; &lt;ONEBYTE_AUTH_TYPE&gt;}<a name="line.522"></a>
+<span class="sourceLineNo">523</span>   */<a name="line.523"></a>
+<span class="sourceLineNo">524</span>  private void writeConnectionHeaderPreamble(OutputStream out) throws IOException {<a name="line.524"></a>
+<span class="sourceLineNo">525</span>    out.write(connectionHeaderPreamble);<a name="line.525"></a>
+<span class="sourceLineNo">526</span>    out.flush();<a name="line.526"></a>
+<span class="sourceLineNo">527</span>  }<a name="line.527"></a>
+<span class="sourceLineNo">528</span><a name="line.528"></a>
+<span class="sourceLineNo">529</span>  /**<a name="line.529"></a>
+<span class="sourceLineNo">530</span>   * Write the connection header.<a name="line.530"></a>
+<span class="sourceLineNo">531</span>   */<a name="line.531"></a>
+<span class="sourceLineNo">532</span>  private void writeConnectionHeader() throws IOException {<a name="line.532"></a>
+<span class="sourceLineNo">533</span>    boolean isCryptoAesEnable = false;<a name="line.533"></a>
+<span class="sourceLineNo">534</span>    // check if Crypto AES is enabled<a name="line.534"></a>
+<span class="sourceLineNo">535</span>    if (saslRpcClient != null) {<a name="line.535"></a>
+<span class="sourceLineNo">536</span>      boolean saslEncryptionEnabled = SaslUtil.QualityOfProtection.PRIVACY.<a name="line.536"></a>
+<span class="sourceLineNo">537</span>          getSaslQop().equalsIgnoreCase(saslRpcClient.getSaslQOP());<a name="line.537"></a>
+<span class="sourceLineNo">538</span>      isCryptoAesEnable = saslEncryptionEnabled &amp;&amp; conf.getBoolean(<a name="line.538"></a>
+<span class="sourceLineNo">539</span>          CRYPTO_AES_ENABLED_KEY, CRYPTO_AES_ENABLED_DEFAULT);<a name="line.539"></a>
+<span class="sourceLineNo">540</span>    }<a name="line.540"></a>
+<span class="sourceLineNo">541</span><a name="line.541"></a>
+<span class="sourceLineNo">542</span>    // if Crypto AES is enabled, set transformation and negotiate with server<a name="line.542"></a>
+<span class="sourceLineNo">543</span>    if (isCryptoAesEnable) {<a name="line.543"></a>
+<span class="sourceLineNo">544</span>      waitingConnectionHeaderResponse = true;<a name="line.544"></a>
+<span class="sourceLineNo">545</span>    }<a name="line.545"></a>
+<span class="sourceLineNo">546</span>    this.out.write(connectionHeaderWithLength);<a name="line.546"></a>
+<span class="sourceLineNo">547</span>    this.out.flush();<a name="line.547"></a>
+<span class="sourceLineNo">548</span>  }<a name="line.548"></a>
 <span class="sourceLineNo">549</span><a name="line.549"></a>
-<span class="sourceLineNo">550</span>      RPCProtos.ConnectionHeaderResponse connectionHeaderResponse =<a name="line.550"></a>
-<span class="sourceLineNo">551</span>          RPCProtos.ConnectionHeaderResponse.parseFrom(buff);<a name="line.551"></a>
-<span class="sourceLineNo">552</span><a name="line.552"></a>
-<span class="sourceLineNo">553</span>      // Get the CryptoCipherMeta, update the HBaseSaslRpcClient for Crypto Cipher<a name="line.553"></a>
-<span class="sourceLineNo">554</span>      if (connectionHeaderResponse.hasCryptoCipherMeta()) {<a name="line.554"></a>
-<span class="sourceLineNo">555</span>        negotiateCryptoAes(connectionHeaderResponse.getCryptoCipherMeta());<a name="line.555"></a>
-<span class="sourceLineNo">556</span>      }<a name="line.556"></a>
-<span class="sourceLineNo">557</span>      waitingConnectionHeaderResponse = false;<a name="line.557"></a>
-<span class="sourceLineNo">558</span>    } catch (SocketTimeoutException ste) {<a name="line.558"></a>
-<span class="sourceLineNo">559</span>      LOG.fatal("Can't get the connection header response for rpc timeout, please check if" +<a name="line.559"></a>
-<span class="sourceLineNo">560</span>          " server has the correct configuration to support the additional function.", ste);<a name="line.560"></a>
-<span class="sourceLineNo">561</span>      // timeout when waiting the connection header response, ignore the additional function<a name="line.561"></a>
-<span class="sourceLineNo">562</span>      throw new IOException("Timeout while waiting connection header response", ste);<a name="line.562"></a>
-<span class="sourceLineNo">563</span>    }<a name="line.563"></a>
-<span class="sourceLineNo">564</span>  }<a name="line.564"></a>
-<span class="sourceLineNo">565</span><a name="line.565"></a>
-<span class="sourceLineNo">566</span>  private void negotiateCryptoAes(RPCProtos.CryptoCipherMeta cryptoCipherMeta)<a name="line.566"></a>
-<span class="sourceLineNo">567</span>      throws IOException {<a name="line.567"></a>
-<span class="sourceLineNo">568</span>    // initilize the Crypto AES with CryptoCipherMeta<a name="line.568"></a>
-<span class="sourceLineNo">569</span>    saslRpcClient.initCryptoCipher(cryptoCipherMeta, this.rpcClient.conf);<a name="line.569"></a>
-<span class="sourceLineNo">570</span>    // reset the inputStream/outputStream for Crypto AES encryption<a name="line.570"></a>
-<span class="sourceLineNo">571</span>    this.in = new DataInputStream(new BufferedInputStream(saslRpcClient.getInputStream()));<a name="line.571"></a>
-<span class="sourceLineNo">572</span>    this.out = new DataOutputStream(new BufferedOutputStream(saslRpcClient.getOutputStream()));<a name="line.572"></a>
-<span class="sourceLineNo">573</span>  }<a name="line.573"></a>
-<span class="sourceLineNo">574</span><a name="line.574"></a>
-<span class="sourceLineNo">575</span>  private void tracedWriteRequest(Call call) throws IOException {<a name="line.575"></a>
-<span class="sourceLineNo">576</span>    try (TraceScope ignored = TraceUtil.createTrace("RpcClientImpl.tracedWriteRequest",<a name="line.576"></a>
-<span class="sourceLineNo">577</span>          call.span)) {<a name="line.577"></a>
-<span class="sourceLineNo">578</span>      writeRequest(call);<a name="line.578"></a>
-<span class="sourceLineNo">579</span>    }<a name="line.579"></a>
-<span class="sourceLineNo">580</span>  }<a name="line.580"></a>
-<span class="sourceLineNo">581</span><a name="line.581"></a>
-<span class="sourceLineNo">582</span>  /**<a name="line.582"></a>
-<span class="sourceLineNo">583</span>   * Initiates a call by sending the parameter to the remote server. Note: this is not called from<a name="line.583"></a>
-<span class="sourceLineNo">584</span>   * the Connection thread, but by other threads.<a name="line.584"></a>
-<span class="sourceLineNo">585</span>   * @see #readResponse()<a name="line.585"></a>
-<span class="sourceLineNo">586</span>   */<a name="line.586"></a>
-<span class="sourceLineNo">587</span>  private void writeRequest(Call call) throws IOException {<a name="line.587"></a>
-<span class="sourceLineNo">588</span>    ByteBuffer cellBlock = this.rpcClient.cellBlockBuilder.buildCellBlock(this.codec,<a name="line.588"></a>
-<span class="sourceLineNo">589</span>      this.compressor, call.cells);<a name="line.589"></a>
-<span class="sourceLineNo">590</span>    CellBlockMeta cellBlockMeta;<a name="line.590"></a>
-<span class="sourceLineNo">591</span>    if (cellBlock != null) {<a name="line.591"></a>
-<span class="sourceLineNo">592</span>      cellBlockMeta = CellBlockMeta.newBuilder().setLength(cellBlock.limit()).build();<a name="line.592"></a>
-<span class="sourceLineNo">593</span>    } else {<a name="line.593"></a>
-<span class="sourceLineNo">594</span>      cellBlockMeta = null;<a name="line.594"></a>
-<span class="sourceLineNo">595</span>    }<a name="line.595"></a>
-<span class="sourceLineNo">596</span>    RequestHeader requestHeader = buildRequestHeader(call, cellBlockMeta);<a name="line.596"></a>
-<span class="sourceLineNo">597</span><a name="line.597"></a>
-<span class="sourceLineNo">598</span>    setupIOstreams();<a name="line.598"></a>
-<span class="sourceLineNo">599</span><a name="line.599"></a>
-<span class="sourceLineNo">600</span>    // Now we're going to write the call. We take the lock, then check that the connection<a name="line.600"></a>
-<span class="sourceLineNo">601</span>    // is still valid, and, if so we do the write to the socket. If the write fails, we don't<a name="line.601"></a>
-<span class="sourceLineNo">602</span>    // know where we stand, we have to close the connection.<a name="line.602"></a>
-<span class="sourceLineNo">603</span>    if (Thread.interrupted()) {<a name="line.603"></a>
-<span class="sourceLineNo">604</span>      throw new InterruptedIOException();<a name="line.604"></a>
-<span class="sourceLineNo">605</span>    }<a name="line.605"></a>
-<span class="sourceLineNo">606</span><a name="line.606"></a>
-<span class="sourceLineNo">607</span>    calls.put(call.id, call); // We put first as we don't want the connection to become idle.<a name="line.607"></a>
-<span class="sourceLineNo">608</span>    // from here, we do not throw any exception to upper layer as the call has been tracked in the<a name="line.608"></a>
-<span class="sourceLineNo">609</span>    // pending calls map.<a name="line.609"></a>
-<span class="sourceLineNo">610</span>    try {<a name="line.610"></a>
-<span class="sourceLineNo">611</span>      call.callStats.setRequestSizeBytes(write(this.out, requestHeader, call.param, cellBlock));<a name="line.611"></a>
-<span class="sourceLineNo">612</span>    } catch (Throwable t) {<a name="line.612"></a>
-<span class="sourceLineNo">613</span>      if(LOG.isTraceEnabled()) {<a name="line.613"></a>
-<span class="sourceLineNo">614</span>        LOG.trace("Error while writing call, call_id:" + call.id, t);<a name="line.614"></a>
-<span class="sourceLineNo">615</span>      }<a name="line.615"></a>
-<span class="sourceLineNo">616</span>      IOException e = IPCUtil.toIOE(t);<a name="line.616"></a>
-<span class="sourceLineNo">617</span>      closeConn(e);<a name="line.617"></a>
-<span class="sourceLineNo">618</span>      return;<a name="line.618"></a>
-<span class="sourceLineNo">619</span>    }<a name="line.619"></a>
-<span class="sourceLineNo">620</span>    notifyAll();<a name="line.620"></a>
-<span class="sourceLineNo">621</span>  }<a name="line.621"></a>
-<span class="sourceLineNo">622</span><a name="line.622"></a>
-<span class="sourceLineNo">623</span>  /*<a name="line.623"></a>
-<span class="sourceLineNo">624</span>   * Receive a response. Because only one receiver, so no synchronization on in.<a name="line.624"></a>
-<span class="sourceLineNo">625</span>   */<a name="line.625"></a>
-<span class="sourceLineNo">626</span>  private void readResponse() {<a name="line.626"></a>
-<span class="sourceLineNo">627</span>    Call call = null;<a name="line.627"></a>
-<span class="sourceLineNo">628</span>    boolean expectedCall = false;<a name="line.628"></a>
-<span class="sourceLineNo">629</span>    try {<a name="line.629"></a>
-<span class="sourceLineNo">630</span>      // See HBaseServer.Call.setResponse for where we write out the response.<a name="line.630"></a>
-<span class="sourceLineNo">631</span>      // Total size of the response. Unused. But have to read it in anyways.<a name="line.631"></a>
-<span class="sourceLineNo">632</span>      int totalSize = in.readInt();<a name="line.632"></a>
-<span class="sourceLineNo">633</span><a name="line.633"></a>
-<span class="sourceLineNo">634</span>      // Read the header<a name="line.634"></a>
-<span class="sourceLineNo">635</span>      ResponseHeader responseHeader = ResponseHeader.parseDelimitedFrom(in);<a name="line.635"></a>
-<span class="sourceLineNo">636</span>      int id = responseHeader.getCallId();<a name="line.636"></a>
-<span class="sourceLineNo">637</span>      call = calls.remove(id); // call.done have to be set before leaving this method<a name="line.637"></a>
-<span class="sourceLineNo">638</span>      expectedCall = (call != null &amp;&amp; !call.isDone());<a name="line.638"></a>
-<span class="sourceLineNo">639</span>      if (!expectedCall) {<a name="line.639"></a>
-<span class="sourceLineNo">640</span>        // So we got a response for which we have no corresponding 'call' here on the client-side.<a name="line.640"></a>
-<span class="sourceLineNo">641</span>        // We probably timed out waiting, cleaned up all references, and now the server decides<a name="line.641"></a>
-<span class="sourceLineNo">642</span>        // to return a response. There is nothing we can do w/ the response at this stage. Clean<a name="line.642"></a>
-<span class="sourceLineNo">643</span>        // out the wire of the response so its out of the way and we can get other responses on<a name="line.643"></a>
-<span class="sourceLineNo">644</span>        // this connection.<a name="line.644"></a>
-<span class="sourceLineNo">645</span>        int readSoFar = getTotalSizeWhenWrittenDelimited(responseHeader);<a name="line.645"></a>
-<span class="sourceLineNo">646</span>        int whatIsLeftToRead = totalSize - readSoFar;<a name="line.646"></a>
-<span class="sourceLineNo">647</span>        IOUtils.skipFully(in, whatIsLeftToRead);<a name="line.647"></a>
-<span class="sourceLineNo">648</span>        if (call != null) {<a name="line.648"></a>
-<span class="sourceLineNo">649</span>          call.callStats.setResponseSizeBytes(totalSize);<a name="line.649"></a>
-<span class="sourceLineNo">650</span>          call.callStats<a name="line.650"></a>
-<span class="sourceLineNo">651</span>              .setCallTimeMs(EnvironmentEdgeManager.currentTime() - call.callStats.getStartTime());<a name="line.651"></a>
-<span class="sourceLineNo">652</span>        }<a name="line.652"></a>
-<span class="sourceLineNo">653</span>        return;<a name="line.653"></a>
-<span class="sourceLineNo">654</span>      }<a name="line.654"></a>
-<span class="sourceLineNo">655</span>      if (responseHeader.hasException()) {<a name="line.655"></a>
-<span class="sourceLineNo">656</span>        ExceptionResponse exceptionResponse = responseHeader.getException();<a name="line.656"></a>
-<span class="sourceLineNo">657</span>        RemoteException re = createRemoteException(exceptionResponse);<a name="line.657"></a>
-<span class="sourceLineNo">658</span>        call.setException(re);<a name="line.658"></a>
-<span class="sourceLineNo">659</span>        call.callStats.setResponseSizeBytes(totalSize);<a name="line.659"></a>
-<span class="sourceLineNo">660</span>        call.callStats<a name="line.660"></a>
-<span class="sourceLineNo">661</span>            .setCallTimeMs(EnvironmentEdgeManager.currentTime() - call.callStats.getStartTime());<a name="line.661"></a>
-<span class="sourceLineNo">662</span>        if (isFatalConnectionException(exceptionResponse)) {<a name="line.662"></a>
-<span class="sourceLineNo">663</span>          synchronized (this) {<a name="line.663"></a>
-<span class="sourceLineNo">664</span>            closeConn(re);<a name="line.664"></a>
-<span class="sourceLineNo">665</span>          }<a name="line.665"></a>
-<span class="sourceLineNo">666</span>        }<a name="line.666"></a>
-<span class="sourceLineNo">667</span>      } else {<a name="line.667"></a>
-<span class="sourceLineNo">668</span>        Message value = null;<a name="line.668"></a>
-<span class="sourceLineNo">669</span>        if (call.responseDefaultType != null) {<a name="line.669"></a>
-<span class="sourceLineNo">670</span>          Builder builder = call.responseDefaultType.newBuilderForType();<a name="line.670"></a>
-<span class="sourceLineNo">671</span>          ProtobufUtil.mergeDelimitedFrom(builder, in);<a name="line.671"></a>
-<span class="sourceLineNo">672</span>          value = builder.build();<a name="line.672"></a>
-<span class="sourceLineNo">673</span>        }<a name="line.673"></a>
-<span class="sourceLineNo">674</span>        CellScanner cellBlockScanner = null;<a name="line.674"></a>
-<span class="sourceLineNo">675</span>        if (responseHeader.hasCellBlockMeta()) {<a name="line.675"></a>
-<span class="sourceLineNo">676</span>          int size = responseHeader.getCellBlockMeta().getLength();<a name="line.676"></a>
-<span class="sourceLineNo">677</span>          byte[] cellBlock = new byte[size];<a name="line.677"></a>
-<span class="sourceLineNo">678</span>          IOUtils.readFully(this.in, cellBlock, 0, cellBlock.length);<a name="line.678"></a>
-<span class="sourceLineNo">679</span>          cellBlockScanner = this.rpcClient.cellBlockBuilder.createCellScanner(this.codec,<a name="line.679"></a>
-<span class="sourceLineNo">680</span>            this.compressor, cellBlock);<a name="line.680"></a>
-<span class="sourceLineNo">681</span>        }<a name="line.681"></a>
-<span class="sourceLineNo">682</span>        call.setResponse(value, cellBlockScanner);<a name="line.682"></a>
-<span class="sourceLineNo">683</span>        call.callStats.setResponseSizeBytes(totalSize);<a name="line.683"></a>
-<span class="sourceLineNo">684</span>        call.callStats<a name="line.684"></a>
-<span class="sourceLineNo">685</span>            .setCallTimeMs(EnvironmentEdgeManager.currentTime() - call.callStats.getStartTime());<a name="line.685"></a>
-<span class="sourceLineNo">686</span>      }<a name="line.686"></a>
-<span class="sourceLineNo">687</span>    } catch (IOException e) {<a name="line.687"></a>
-<span class="sourceLineNo">688</span>      if (expectedCall) {<a name="line.688"></a>
-<span class="sourceLineNo">689</span>        call.setException(e);<a name="line.689"></a>
-<span class="sourceLineNo">690</span>      }<a name="line.690"></a>
-<span class="sourceLineNo">691</span>      if (e instanceof SocketTimeoutException) {<a name="line.691"></a>
-<span class="sourceLineNo">692</span>        // Clean up open calls but don't treat this as a fatal condition,<a name="line.692"></a>
-<span class="sourceLineNo">693</span>        // since we expect certain responses to not make it by the specified<a name="line.693"></a>
-<span class="sourceLineNo">694</span>        // {@link ConnectionId#rpcTimeout}.<a name="line.694"></a>
-<span class="sourceLineNo">695</span>        if (LOG.isTraceEnabled()) {<a name="line.695"></a>
-<span class="sourceLineNo">696</span>          LOG.trace("ignored", e);<a name="line.696"></a>
-<span class="sourceLineNo">697</span>        }<a name="line.697"></a>
-<span class="sourceLineNo">698</span>      } else {<a name="line.698"></a>
-<span class="sourceLineNo">699</span>        synchronized (this) {<a name="line.699"></a>
-<span class="sourceLineNo">700</span>          closeConn(e);<a name="line.700"></a>
-<span class="sourceLineNo">701</span>        }<a name="line.701"></a>
+<span class="sourceLineNo">550</span>  private void processResponseForConnectionHeader() throws IOException {<a name="line.550"></a>
+<span class="sourceLineNo">551</span>    // if no response excepted, return<a name="line.551"></a>
+<span class="sourceLineNo">552</span>    if (!waitingConnectionHeaderResponse) return;<a name="line.552"></a>
+<span class="sourceLineNo">553</span>    try {<a name="line.553"></a>
+<span class="sourceLineNo">554</span>      // read the ConnectionHeaderResponse from server<a name="line.554"></a>
+<span class="sourceLineNo">555</span>      int len = this.in.readInt();<a name="line.555"></a>
+<span class="sourceLineNo">556</span>      byte[] buff = new byte[len];<a name="line.556"></a>
+<span class="sourceLineNo">557</span>      int readSize = this.in.read(buff);<a name="line.557"></a>
+<span class="sourceLineNo">558</span>      if (LOG.isDebugEnabled()) {<a name="line.558"></a>
+<span class="sourceLineNo">559</span>        LOG.debug("Length of response for connection header:" + readSize);<a name="line.559"></a>
+<span class="sourceLineNo">560</span>      }<a name="line.560"></a>
+<span class="sourceLineNo">561</span><a name="line.561"></a>
+<span class="sourceLineNo">562</span>      RPCProtos.ConnectionHeaderResponse connectionHeaderResponse =<a name="line.562"></a>
+<span class="sourceLineNo">563</span>          RPCProtos.ConnectionHeaderResponse.parseFrom(buff);<a name="line.563"></a>
+<span class="sourceLineNo">564</span><a name="line.564"></a>
+<span class="sourceLineNo">565</span>      // Get the CryptoCipherMeta, update the HBaseSaslRpcClient for Crypto Cipher<a name="line.565"></a>
+<span class="sourceLineNo">566</span>      if (connectionHeaderResponse.hasCryptoCipherMeta()) {<a name="line.566"></a>
+<span class="sourceLineNo">567</span>        negotiateCryptoAes(connectionHeaderResponse.getCryptoCipherMeta());<a name="line.567"></a>
+<span class="sourceLineNo">568</span>      }<a name="line.568"></a>
+<span class="sourceLineNo">569</span>      waitingConnectionHeaderResponse = false;<a name="line.569"></a>
+<span class="sourceLineNo">570</span>    } catch (SocketTimeoutException ste) {<a name="line.570"></a>
+<span class="sourceLineNo">571</span>      LOG.fatal("Can't get the connection header response for rpc timeout, please check if" +<a name="line.571"></a>
+<span class="sourceLineNo">572</span>          " server has the correct configuration to support the additional function.", ste);<a name="line.572"></a>
+<span class="sourceLineNo">573</span>      // timeout when waiting the connection header response, ignore the additional function<a name="line.573"></a>
+<span class="sourceLineNo">574</span>      throw new IOException("Timeout while waiting connection header response", ste);<a name="line.574"></a>
+<span class="sourceLineNo">575</span>    }<a name="line.575"></a>
+<span class="sourceLineNo">576</span>  }<a name="line.576"></a>
+<span class="sourceLineNo">577</span><a name="line.577"></a>
+<span class="sourceLineNo">578</span>  private void negotiateCryptoAes(RPCProtos.CryptoCipherMeta cryptoCipherMeta)<a name="line.578"></a>
+<span class="sourceLineNo">579</span>      throws IOException {<a name="line.579"></a>
+<span class="sourceLineNo">580</span>    // initilize the Crypto AES with CryptoCipherMeta<a name="line.580"></a>
+<span class="sourceLineNo">581</span>    saslRpcClient.initCryptoCipher(cryptoCipherMeta, this.rpcClient.conf);<a name="line.581"></a>
+<span class="sourceLineNo">582</span>    // reset the inputStream/outputStream for Crypto AES encryption<a name="line.582"></a>
+<span class="sourceLineNo">583</span>    this.in = new DataInputStream(new BufferedInputStream(saslRpcClient.getInputStream()));<a name="line.583"></a>
+<span class="sourceLineNo">584</span>    this.out = new DataOutputStream(new BufferedOutputStream(saslRpcClient.getOutputStream()));<a name="line.584"></a>
+<span class="sourceLineNo">585</span>  }<a name="line.585"></a>
+<span class="sourceLineNo">586</span><a name="line.586"></a>
+<span class="sourceLineNo">587</span>  private void tracedWriteRequest(Call call) throws IOException {<a name="line.587"></a>
+<span class="sourceLineNo">588</span>    try (TraceScope ignored = TraceUtil.createTrace("RpcClientImpl.tracedWriteRequest",<a name="line.588"></a>
+<span class="sourceLineNo">589</span>          call.span)) {<a name="line.589"></a>
+<span class="sourceLineNo">590</span>      writeRequest(call);<a name="line.590"></a>
+<span class="sourceLineNo">591</span>    }<a name="line.591"></a>
+<span class="sourceLineNo">592</span>  }<a name="line.592"></a>
+<span class="sourceLineNo">593</span><a name="line.593"></a>
+<span class="sourceLineNo">594</span>  /**<a name="line.594"></a>
+<span class="sourceLineNo">595</span>   * Initiates a call by sending the parameter to the remote server. Note: this is not called from<a name="line.595"></a>
+<span class="sourceLineNo">596</span>   * the Connection thread, but by other threads.<a name="line.596"></a>
+<span class="sourceLineNo">597</span>   * @see #readResponse()<a name="line.597"></a>
+<span class="sourceLineNo">598</span>   */<a name="line.598"></a>
+<span class="sourceLineNo">599</span>  private void writeRequest(Call call) throws IOException {<a name="line.599"></a>
+<span class="sourceLineNo">600</span>    ByteBuffer cellBlock = this.rpcClient.cellBlockBuilder.buildCellBlock(this.codec,<a name="line.600"></a>
+<span class="sourceLineNo">601</span>      this.compressor, call.cells);<a name="line.601"></a>
+<span class="sourceLineNo">602</span>    CellBlockMeta cellBlockMeta;<a name="line.602"></a>
+<span class="sourceLineNo">603</span>    if (cellBlock != null) {<a name="line.603"></a>
+<span class="sourceLineNo">604</span>      cellBlockMeta = CellBlockMeta.newBuilder().setLength(cellBlock.limit()).build();<a name="line.604"></a>
+<span class="sourceLineNo">605</span>    } else {<a name="line.605"></a>
+<span class="sourceLineNo">606</span>      cellBlockMeta = null;<a name="line.606"></a>
+<span class="sourceLineNo">607</span>    }<a name="line.607"></a>
+<span class="sourceLineNo">608</span>    RequestHeader requestHeader = buildRequestHeader(call, cellBlockMeta);<a name="line.608"></a>
+<span class="sourceLineNo">609</span><a name="line.609"></a>
+<span class="sourceLineNo">610</span>    setupIOstreams();<a name="line.610"></a>
+<span class="sourceLineNo">611</span><a name="line.611"></a>
+<span class="sourceLineNo">612</span>    // Now we're going to write the call. We take the lock, then check that the connection<a name="line.612"></a>
+<span class="sourceLineNo">613</span>    // is still valid, and, if so we do the write to the socket. If the write fails, we don't<a name="line.613"></a>
+<span class="sourceLineNo">614</span>    // know where we stand, we have to close the connection.<a name="line.614"></a>
+<span class="sourceLineNo">615</span>    if (Thread.interrupted()) {<a name="line.615"></a>
+<span class="sourceLineNo">616</span>      throw new InterruptedIOException();<a name="line.616"></a>
+<span class="sourceLineNo">617</span>    }<a name="line.617"></a>
+<span class="sourceLineNo">618</span><a name="line.618"></a>
+<span class="sourceLineNo">619</span>    calls.put(call.id, call); // We put first as we don't want the connection to become idle.<a name="line.619"></a>
+<span class="sourceLineNo">620</span>    // from here, we do not throw any exception to upper layer as the call has been tracked in the<a name="line.620"></a>
+<span class="sourceLineNo">621</span>    // pending calls map.<a name="l

<TRUNCATED>

[29/51] [partial] hbase-site git commit: Published site at .

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/c54c242b/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/HRegion.BulkLoadListener.html
----------------------------------------------------------------------
diff --git a/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/HRegion.BulkLoadListener.html b/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/HRegion.BulkLoadListener.html
index 3edfbef..9707b2c 100644
--- a/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/HRegion.BulkLoadListener.html
+++ b/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/HRegion.BulkLoadListener.html
@@ -2459,5936 +2459,5935 @@
 <span class="sourceLineNo">2451</span>      }<a name="line.2451"></a>
 <span class="sourceLineNo">2452</span><a name="line.2452"></a>
 <span class="sourceLineNo">2453</span>      for (HStore s : storesToFlush) {<a name="line.2453"></a>
-<span class="sourceLineNo">2454</span>        MemStoreSize flushableSize = s.getFlushableSize();<a name="line.2454"></a>
-<span class="sourceLineNo">2455</span>        totalSizeOfFlushableStores.incMemStoreSize(flushableSize);<a name="line.2455"></a>
-<span class="sourceLineNo">2456</span>        storeFlushCtxs.put(s.getColumnFamilyDescriptor().getName(),<a name="line.2456"></a>
-<span class="sourceLineNo">2457</span>          s.createFlushContext(flushOpSeqId, tracker));<a name="line.2457"></a>
-<span class="sourceLineNo">2458</span>        // for writing stores to WAL<a name="line.2458"></a>
-<span class="sourceLineNo">2459</span>        committedFiles.put(s.getColumnFamilyDescriptor().getName(), null);<a name="line.2459"></a>
-<span class="sourceLineNo">2460</span>        storeFlushableSize.put(s.getColumnFamilyDescriptor().getName(), flushableSize);<a name="line.2460"></a>
-<span class="sourceLineNo">2461</span>      }<a name="line.2461"></a>
-<span class="sourceLineNo">2462</span><a name="line.2462"></a>
-<span class="sourceLineNo">2463</span>      // write the snapshot start to WAL<a name="line.2463"></a>
-<span class="sourceLineNo">2464</span>      if (wal != null &amp;&amp; !writestate.readOnly) {<a name="line.2464"></a>
-<span class="sourceLineNo">2465</span>        FlushDescriptor desc = ProtobufUtil.toFlushDescriptor(FlushAction.START_FLUSH,<a name="line.2465"></a>
-<span class="sourceLineNo">2466</span>            getRegionInfo(), flushOpSeqId, committedFiles);<a name="line.2466"></a>
-<span class="sourceLineNo">2467</span>        // No sync. Sync is below where no updates lock and we do FlushAction.COMMIT_FLUSH<a name="line.2467"></a>
-<span class="sourceLineNo">2468</span>        WALUtil.writeFlushMarker(wal, this.getReplicationScope(), getRegionInfo(), desc, false,<a name="line.2468"></a>
-<span class="sourceLineNo">2469</span>            mvcc);<a name="line.2469"></a>
-<span class="sourceLineNo">2470</span>      }<a name="line.2470"></a>
-<span class="sourceLineNo">2471</span><a name="line.2471"></a>
-<span class="sourceLineNo">2472</span>      // Prepare flush (take a snapshot)<a name="line.2472"></a>
-<span class="sourceLineNo">2473</span>      for (StoreFlushContext flush : storeFlushCtxs.values()) {<a name="line.2473"></a>
-<span class="sourceLineNo">2474</span>        flush.prepare();<a name="line.2474"></a>
-<span class="sourceLineNo">2475</span>      }<a name="line.2475"></a>
-<span class="sourceLineNo">2476</span>    } catch (IOException ex) {<a name="line.2476"></a>
-<span class="sourceLineNo">2477</span>      doAbortFlushToWAL(wal, flushOpSeqId, committedFiles);<a name="line.2477"></a>
-<span class="sourceLineNo">2478</span>      throw ex;<a name="line.2478"></a>
-<span class="sourceLineNo">2479</span>    } finally {<a name="line.2479"></a>
-<span class="sourceLineNo">2480</span>      this.updatesLock.writeLock().unlock();<a name="line.2480"></a>
-<span class="sourceLineNo">2481</span>    }<a name="line.2481"></a>
-<span class="sourceLineNo">2482</span>    String s = "Finished memstore snapshotting " + this + ", syncing WAL and waiting on mvcc, " +<a name="line.2482"></a>
-<span class="sourceLineNo">2483</span>        "flushsize=" + totalSizeOfFlushableStores;<a name="line.2483"></a>
-<span class="sourceLineNo">2484</span>    status.setStatus(s);<a name="line.2484"></a>
-<span class="sourceLineNo">2485</span>    doSyncOfUnflushedWALChanges(wal, getRegionInfo());<a name="line.2485"></a>
-<span class="sourceLineNo">2486</span>    return new PrepareFlushResult(storeFlushCtxs, committedFiles, storeFlushableSize, startTime,<a name="line.2486"></a>
-<span class="sourceLineNo">2487</span>        flushOpSeqId, flushedSeqId, totalSizeOfFlushableStores);<a name="line.2487"></a>
-<span class="sourceLineNo">2488</span>  }<a name="line.2488"></a>
-<span class="sourceLineNo">2489</span><a name="line.2489"></a>
-<span class="sourceLineNo">2490</span>  /**<a name="line.2490"></a>
-<span class="sourceLineNo">2491</span>   * Utility method broken out of internalPrepareFlushCache so that method is smaller.<a name="line.2491"></a>
-<span class="sourceLineNo">2492</span>   */<a name="line.2492"></a>
-<span class="sourceLineNo">2493</span>  private void logFatLineOnFlush(Collection&lt;HStore&gt; storesToFlush, long sequenceId) {<a name="line.2493"></a>
-<span class="sourceLineNo">2494</span>    if (!LOG.isInfoEnabled()) {<a name="line.2494"></a>
-<span class="sourceLineNo">2495</span>      return;<a name="line.2495"></a>
-<span class="sourceLineNo">2496</span>    }<a name="line.2496"></a>
-<span class="sourceLineNo">2497</span>    // Log a fat line detailing what is being flushed.<a name="line.2497"></a>
-<span class="sourceLineNo">2498</span>    StringBuilder perCfExtras = null;<a name="line.2498"></a>
-<span class="sourceLineNo">2499</span>    if (!isAllFamilies(storesToFlush)) {<a name="line.2499"></a>
-<span class="sourceLineNo">2500</span>      perCfExtras = new StringBuilder();<a name="line.2500"></a>
-<span class="sourceLineNo">2501</span>      for (HStore store: storesToFlush) {<a name="line.2501"></a>
-<span class="sourceLineNo">2502</span>        perCfExtras.append("; ").append(store.getColumnFamilyName());<a name="line.2502"></a>
-<span class="sourceLineNo">2503</span>        perCfExtras.append("=")<a name="line.2503"></a>
-<span class="sourceLineNo">2504</span>            .append(StringUtils.byteDesc(store.getFlushableSize().getDataSize()));<a name="line.2504"></a>
-<span class="sourceLineNo">2505</span>      }<a name="line.2505"></a>
-<span class="sourceLineNo">2506</span>    }<a name="line.2506"></a>
-<span class="sourceLineNo">2507</span>    LOG.info("Flushing " + + storesToFlush.size() + "/" + stores.size() +<a name="line.2507"></a>
-<span class="sourceLineNo">2508</span>        " column families, memstore=" + StringUtils.byteDesc(this.memstoreDataSize.get()) +<a name="line.2508"></a>
-<span class="sourceLineNo">2509</span>        ((perCfExtras != null &amp;&amp; perCfExtras.length() &gt; 0)? perCfExtras.toString(): "") +<a name="line.2509"></a>
-<span class="sourceLineNo">2510</span>        ((wal != null) ? "" : "; WAL is null, using passed sequenceid=" + sequenceId));<a name="line.2510"></a>
-<span class="sourceLineNo">2511</span>  }<a name="line.2511"></a>
-<span class="sourceLineNo">2512</span><a name="line.2512"></a>
-<span class="sourceLineNo">2513</span>  private void doAbortFlushToWAL(final WAL wal, final long flushOpSeqId,<a name="line.2513"></a>
-<span class="sourceLineNo">2514</span>      final Map&lt;byte[], List&lt;Path&gt;&gt; committedFiles) {<a name="line.2514"></a>
-<span class="sourceLineNo">2515</span>    if (wal == null) return;<a name="line.2515"></a>
-<span class="sourceLineNo">2516</span>    try {<a name="line.2516"></a>
-<span class="sourceLineNo">2517</span>      FlushDescriptor desc = ProtobufUtil.toFlushDescriptor(FlushAction.ABORT_FLUSH,<a name="line.2517"></a>
-<span class="sourceLineNo">2518</span>          getRegionInfo(), flushOpSeqId, committedFiles);<a name="line.2518"></a>
-<span class="sourceLineNo">2519</span>      WALUtil.writeFlushMarker(wal, this.getReplicationScope(), getRegionInfo(), desc, false,<a name="line.2519"></a>
-<span class="sourceLineNo">2520</span>          mvcc);<a name="line.2520"></a>
-<span class="sourceLineNo">2521</span>    } catch (Throwable t) {<a name="line.2521"></a>
-<span class="sourceLineNo">2522</span>      LOG.warn("Received unexpected exception trying to write ABORT_FLUSH marker to WAL:" +<a name="line.2522"></a>
-<span class="sourceLineNo">2523</span>          StringUtils.stringifyException(t));<a name="line.2523"></a>
-<span class="sourceLineNo">2524</span>      // ignore this since we will be aborting the RS with DSE.<a name="line.2524"></a>
-<span class="sourceLineNo">2525</span>    }<a name="line.2525"></a>
-<span class="sourceLineNo">2526</span>    // we have called wal.startCacheFlush(), now we have to abort it<a name="line.2526"></a>
-<span class="sourceLineNo">2527</span>    wal.abortCacheFlush(this.getRegionInfo().getEncodedNameAsBytes());<a name="line.2527"></a>
-<span class="sourceLineNo">2528</span>  }<a name="line.2528"></a>
-<span class="sourceLineNo">2529</span><a name="line.2529"></a>
-<span class="sourceLineNo">2530</span>  /**<a name="line.2530"></a>
-<span class="sourceLineNo">2531</span>   * Sync unflushed WAL changes. See HBASE-8208 for details<a name="line.2531"></a>
-<span class="sourceLineNo">2532</span>   */<a name="line.2532"></a>
-<span class="sourceLineNo">2533</span>  private static void doSyncOfUnflushedWALChanges(final WAL wal, final RegionInfo hri)<a name="line.2533"></a>
-<span class="sourceLineNo">2534</span>  throws IOException {<a name="line.2534"></a>
-<span class="sourceLineNo">2535</span>    if (wal == null) {<a name="line.2535"></a>
-<span class="sourceLineNo">2536</span>      return;<a name="line.2536"></a>
-<span class="sourceLineNo">2537</span>    }<a name="line.2537"></a>
-<span class="sourceLineNo">2538</span>    try {<a name="line.2538"></a>
-<span class="sourceLineNo">2539</span>      wal.sync(); // ensure that flush marker is sync'ed<a name="line.2539"></a>
-<span class="sourceLineNo">2540</span>    } catch (IOException ioe) {<a name="line.2540"></a>
-<span class="sourceLineNo">2541</span>      wal.abortCacheFlush(hri.getEncodedNameAsBytes());<a name="line.2541"></a>
-<span class="sourceLineNo">2542</span>      throw ioe;<a name="line.2542"></a>
-<span class="sourceLineNo">2543</span>    }<a name="line.2543"></a>
-<span class="sourceLineNo">2544</span>  }<a name="line.2544"></a>
-<span class="sourceLineNo">2545</span><a name="line.2545"></a>
-<span class="sourceLineNo">2546</span>  /**<a name="line.2546"></a>
-<span class="sourceLineNo">2547</span>   * @return True if passed Set is all families in the region.<a name="line.2547"></a>
-<span class="sourceLineNo">2548</span>   */<a name="line.2548"></a>
-<span class="sourceLineNo">2549</span>  private boolean isAllFamilies(Collection&lt;HStore&gt; families) {<a name="line.2549"></a>
-<span class="sourceLineNo">2550</span>    return families == null || this.stores.size() == families.size();<a name="line.2550"></a>
-<span class="sourceLineNo">2551</span>  }<a name="line.2551"></a>
-<span class="sourceLineNo">2552</span><a name="line.2552"></a>
-<span class="sourceLineNo">2553</span>  /**<a name="line.2553"></a>
-<span class="sourceLineNo">2554</span>   * Writes a marker to WAL indicating a flush is requested but cannot be complete due to various<a name="line.2554"></a>
-<span class="sourceLineNo">2555</span>   * reasons. Ignores exceptions from WAL. Returns whether the write succeeded.<a name="line.2555"></a>
-<span class="sourceLineNo">2556</span>   * @param wal<a name="line.2556"></a>
-<span class="sourceLineNo">2557</span>   * @return whether WAL write was successful<a name="line.2557"></a>
-<span class="sourceLineNo">2558</span>   */<a name="line.2558"></a>
-<span class="sourceLineNo">2559</span>  private boolean writeFlushRequestMarkerToWAL(WAL wal, boolean writeFlushWalMarker) {<a name="line.2559"></a>
-<span class="sourceLineNo">2560</span>    if (writeFlushWalMarker &amp;&amp; wal != null &amp;&amp; !writestate.readOnly) {<a name="line.2560"></a>
-<span class="sourceLineNo">2561</span>      FlushDescriptor desc = ProtobufUtil.toFlushDescriptor(FlushAction.CANNOT_FLUSH,<a name="line.2561"></a>
-<span class="sourceLineNo">2562</span>        getRegionInfo(), -1, new TreeMap&lt;&gt;(Bytes.BYTES_COMPARATOR));<a name="line.2562"></a>
-<span class="sourceLineNo">2563</span>      try {<a name="line.2563"></a>
-<span class="sourceLineNo">2564</span>        WALUtil.writeFlushMarker(wal, this.getReplicationScope(), getRegionInfo(), desc, true,<a name="line.2564"></a>
-<span class="sourceLineNo">2565</span>            mvcc);<a name="line.2565"></a>
-<span class="sourceLineNo">2566</span>        return true;<a name="line.2566"></a>
-<span class="sourceLineNo">2567</span>      } catch (IOException e) {<a name="line.2567"></a>
-<span class="sourceLineNo">2568</span>        LOG.warn(getRegionInfo().getEncodedName() + " : "<a name="line.2568"></a>
-<span class="sourceLineNo">2569</span>            + "Received exception while trying to write the flush request to wal", e);<a name="line.2569"></a>
-<span class="sourceLineNo">2570</span>      }<a name="line.2570"></a>
-<span class="sourceLineNo">2571</span>    }<a name="line.2571"></a>
-<span class="sourceLineNo">2572</span>    return false;<a name="line.2572"></a>
-<span class="sourceLineNo">2573</span>  }<a name="line.2573"></a>
-<span class="sourceLineNo">2574</span><a name="line.2574"></a>
-<span class="sourceLineNo">2575</span>  @edu.umd.cs.findbugs.annotations.SuppressWarnings(value="NN_NAKED_NOTIFY",<a name="line.2575"></a>
-<span class="sourceLineNo">2576</span>      justification="Intentional; notify is about completed flush")<a name="line.2576"></a>
-<span class="sourceLineNo">2577</span>  protected FlushResultImpl internalFlushCacheAndCommit(WAL wal, MonitoredTask status,<a name="line.2577"></a>
-<span class="sourceLineNo">2578</span>      PrepareFlushResult prepareResult, Collection&lt;HStore&gt; storesToFlush) throws IOException {<a name="line.2578"></a>
-<span class="sourceLineNo">2579</span>    // prepare flush context is carried via PrepareFlushResult<a name="line.2579"></a>
-<span class="sourceLineNo">2580</span>    TreeMap&lt;byte[], StoreFlushContext&gt; storeFlushCtxs = prepareResult.storeFlushCtxs;<a name="line.2580"></a>
-<span class="sourceLineNo">2581</span>    TreeMap&lt;byte[], List&lt;Path&gt;&gt; committedFiles = prepareResult.committedFiles;<a name="line.2581"></a>
-<span class="sourceLineNo">2582</span>    long startTime = prepareResult.startTime;<a name="line.2582"></a>
-<span class="sourceLineNo">2583</span>    long flushOpSeqId = prepareResult.flushOpSeqId;<a name="line.2583"></a>
-<span class="sourceLineNo">2584</span>    long flushedSeqId = prepareResult.flushedSeqId;<a name="line.2584"></a>
-<span class="sourceLineNo">2585</span><a name="line.2585"></a>
-<span class="sourceLineNo">2586</span>    String s = "Flushing stores of " + this;<a name="line.2586"></a>
-<span class="sourceLineNo">2587</span>    status.setStatus(s);<a name="line.2587"></a>
-<span class="sourceLineNo">2588</span>    if (LOG.isTraceEnabled()) LOG.trace(s);<a name="line.2588"></a>
-<span class="sourceLineNo">2589</span><a name="line.2589"></a>
-<span class="sourceLineNo">2590</span>    // Any failure from here on out will be catastrophic requiring server<a name="line.2590"></a>
-<span class="sourceLineNo">2591</span>    // restart so wal content can be replayed and put back into the memstore.<a name="line.2591"></a>
-<span class="sourceLineNo">2592</span>    // Otherwise, the snapshot content while backed up in the wal, it will not<a name="line.2592"></a>
-<span class="sourceLineNo">2593</span>    // be part of the current running servers state.<a name="line.2593"></a>
-<span class="sourceLineNo">2594</span>    boolean compactionRequested = false;<a name="line.2594"></a>
-<span class="sourceLineNo">2595</span>    long flushedOutputFileSize = 0;<a name="line.2595"></a>
-<span class="sourceLineNo">2596</span>    try {<a name="line.2596"></a>
-<span class="sourceLineNo">2597</span>      // A.  Flush memstore to all the HStores.<a name="line.2597"></a>
-<span class="sourceLineNo">2598</span>      // Keep running vector of all store files that includes both old and the<a name="line.2598"></a>
-<span class="sourceLineNo">2599</span>      // just-made new flush store file. The new flushed file is still in the<a name="line.2599"></a>
-<span class="sourceLineNo">2600</span>      // tmp directory.<a name="line.2600"></a>
-<span class="sourceLineNo">2601</span><a name="line.2601"></a>
-<span class="sourceLineNo">2602</span>      for (StoreFlushContext flush : storeFlushCtxs.values()) {<a name="line.2602"></a>
-<span class="sourceLineNo">2603</span>        flush.flushCache(status);<a name="line.2603"></a>
-<span class="sourceLineNo">2604</span>      }<a name="line.2604"></a>
-<span class="sourceLineNo">2605</span><a name="line.2605"></a>
-<span class="sourceLineNo">2606</span>      // Switch snapshot (in memstore) -&gt; new hfile (thus causing<a name="line.2606"></a>
-<span class="sourceLineNo">2607</span>      // all the store scanners to reset/reseek).<a name="line.2607"></a>
-<span class="sourceLineNo">2608</span>      Iterator&lt;HStore&gt; it = storesToFlush.iterator();<a name="line.2608"></a>
-<span class="sourceLineNo">2609</span>      // stores.values() and storeFlushCtxs have same order<a name="line.2609"></a>
-<span class="sourceLineNo">2610</span>      for (StoreFlushContext flush : storeFlushCtxs.values()) {<a name="line.2610"></a>
-<span class="sourceLineNo">2611</span>        boolean needsCompaction = flush.commit(status);<a name="line.2611"></a>
-<span class="sourceLineNo">2612</span>        if (needsCompaction) {<a name="line.2612"></a>
-<span class="sourceLineNo">2613</span>          compactionRequested = true;<a name="line.2613"></a>
-<span class="sourceLineNo">2614</span>        }<a name="line.2614"></a>
-<span class="sourceLineNo">2615</span>        byte[] storeName = it.next().getColumnFamilyDescriptor().getName();<a name="line.2615"></a>
-<span class="sourceLineNo">2616</span>        List&lt;Path&gt; storeCommittedFiles = flush.getCommittedFiles();<a name="line.2616"></a>
-<span class="sourceLineNo">2617</span>        committedFiles.put(storeName, storeCommittedFiles);<a name="line.2617"></a>
-<span class="sourceLineNo">2618</span>        // Flush committed no files, indicating flush is empty or flush was canceled<a name="line.2618"></a>
-<span class="sourceLineNo">2619</span>        if (storeCommittedFiles == null || storeCommittedFiles.isEmpty()) {<a name="line.2619"></a>
-<span class="sourceLineNo">2620</span>          MemStoreSize storeFlushableSize = prepareResult.storeFlushableSize.get(storeName);<a name="line.2620"></a>
-<span class="sourceLineNo">2621</span>          prepareResult.totalFlushableSize.decMemStoreSize(storeFlushableSize);<a name="line.2621"></a>
-<span class="sourceLineNo">2622</span>        }<a name="line.2622"></a>
-<span class="sourceLineNo">2623</span>        flushedOutputFileSize += flush.getOutputFileSize();<a name="line.2623"></a>
-<span class="sourceLineNo">2624</span>      }<a name="line.2624"></a>
-<span class="sourceLineNo">2625</span>      storeFlushCtxs.clear();<a name="line.2625"></a>
-<span class="sourceLineNo">2626</span><a name="line.2626"></a>
-<span class="sourceLineNo">2627</span>      // Set down the memstore size by amount of flush.<a name="line.2627"></a>
-<span class="sourceLineNo">2628</span>      this.decrMemStoreSize(prepareResult.totalFlushableSize);<a name="line.2628"></a>
-<span class="sourceLineNo">2629</span><a name="line.2629"></a>
-<span class="sourceLineNo">2630</span>      if (wal != null) {<a name="line.2630"></a>
-<span class="sourceLineNo">2631</span>        // write flush marker to WAL. If fail, we should throw DroppedSnapshotException<a name="line.2631"></a>
-<span class="sourceLineNo">2632</span>        FlushDescriptor desc = ProtobufUtil.toFlushDescriptor(FlushAction.COMMIT_FLUSH,<a name="line.2632"></a>
-<span class="sourceLineNo">2633</span>          getRegionInfo(), flushOpSeqId, committedFiles);<a name="line.2633"></a>
-<span class="sourceLineNo">2634</span>        WALUtil.writeFlushMarker(wal, this.getReplicationScope(), getRegionInfo(), desc, true,<a name="line.2634"></a>
-<span class="sourceLineNo">2635</span>            mvcc);<a name="line.2635"></a>
-<span class="sourceLineNo">2636</span>      }<a name="line.2636"></a>
-<span class="sourceLineNo">2637</span>    } catch (Throwable t) {<a name="line.2637"></a>
-<span class="sourceLineNo">2638</span>      // An exception here means that the snapshot was not persisted.<a name="line.2638"></a>
-<span class="sourceLineNo">2639</span>      // The wal needs to be replayed so its content is restored to memstore.<a name="line.2639"></a>
-<span class="sourceLineNo">2640</span>      // Currently, only a server restart will do this.<a name="line.2640"></a>
-<span class="sourceLineNo">2641</span>      // We used to only catch IOEs but its possible that we'd get other<a name="line.2641"></a>
-<span class="sourceLineNo">2642</span>      // exceptions -- e.g. HBASE-659 was about an NPE -- so now we catch<a name="line.2642"></a>
-<span class="sourceLineNo">2643</span>      // all and sundry.<a name="line.2643"></a>
-<span class="sourceLineNo">2644</span>      if (wal != null) {<a name="line.2644"></a>
-<span class="sourceLineNo">2645</span>        try {<a name="line.2645"></a>
-<span class="sourceLineNo">2646</span>          FlushDescriptor desc = ProtobufUtil.toFlushDescriptor(FlushAction.ABORT_FLUSH,<a name="line.2646"></a>
-<span class="sourceLineNo">2647</span>            getRegionInfo(), flushOpSeqId, committedFiles);<a name="line.2647"></a>
-<span class="sourceLineNo">2648</span>          WALUtil.writeFlushMarker(wal, this.replicationScope, getRegionInfo(), desc, false, mvcc);<a name="line.2648"></a>
-<span class="sourceLineNo">2649</span>        } catch (Throwable ex) {<a name="line.2649"></a>
-<span class="sourceLineNo">2650</span>          LOG.warn(getRegionInfo().getEncodedName() + " : "<a name="line.2650"></a>
-<span class="sourceLineNo">2651</span>              + "failed writing ABORT_FLUSH marker to WAL", ex);<a name="line.2651"></a>
-<span class="sourceLineNo">2652</span>          // ignore this since we will be aborting the RS with DSE.<a name="line.2652"></a>
-<span class="sourceLineNo">2653</span>        }<a name="line.2653"></a>
-<span class="sourceLineNo">2654</span>        wal.abortCacheFlush(this.getRegionInfo().getEncodedNameAsBytes());<a name="line.2654"></a>
-<span class="sourceLineNo">2655</span>      }<a name="line.2655"></a>
-<span class="sourceLineNo">2656</span>      DroppedSnapshotException dse = new DroppedSnapshotException("region: " +<a name="line.2656"></a>
-<span class="sourceLineNo">2657</span>          Bytes.toStringBinary(getRegionInfo().getRegionName()));<a name="line.2657"></a>
-<span class="sourceLineNo">2658</span>      dse.initCause(t);<a name="line.2658"></a>
-<span class="sourceLineNo">2659</span>      status.abort("Flush failed: " + StringUtils.stringifyException(t));<a name="line.2659"></a>
-<span class="sourceLineNo">2660</span><a name="line.2660"></a>
-<span class="sourceLineNo">2661</span>      // Callers for flushcache() should catch DroppedSnapshotException and abort the region server.<a name="line.2661"></a>
-<span class="sourceLineNo">2662</span>      // However, since we may have the region read lock, we cannot call close(true) here since<a name="line.2662"></a>
-<span class="sourceLineNo">2663</span>      // we cannot promote to a write lock. Instead we are setting closing so that all other region<a name="line.2663"></a>
-<span class="sourceLineNo">2664</span>      // operations except for close will be rejected.<a name="line.2664"></a>
-<span class="sourceLineNo">2665</span>      this.closing.set(true);<a name="line.2665"></a>
-<span class="sourceLineNo">2666</span><a name="line.2666"></a>
-<span class="sourceLineNo">2667</span>      if (rsServices != null) {<a name="line.2667"></a>
-<span class="sourceLineNo">2668</span>        // This is a safeguard against the case where the caller fails to explicitly handle aborting<a name="line.2668"></a>
-<span class="sourceLineNo">2669</span>        rsServices.abort("Replay of WAL required. Forcing server shutdown", dse);<a name="line.2669"></a>
-<span class="sourceLineNo">2670</span>      }<a name="line.2670"></a>
-<span class="sourceLineNo">2671</span><a name="line.2671"></a>
-<span class="sourceLineNo">2672</span>      throw dse;<a name="line.2672"></a>
-<span class="sourceLineNo">2673</span>    }<a name="line.2673"></a>
-<span class="sourceLineNo">2674</span><a name="line.2674"></a>
-<span class="sourceLineNo">2675</span>    // If we get to here, the HStores have been written.<a name="line.2675"></a>
-<span class="sourceLineNo">2676</span>    if (wal != null) {<a name="line.2676"></a>
-<span class="sourceLineNo">2677</span>      wal.completeCacheFlush(this.getRegionInfo().getEncodedNameAsBytes());<a name="line.2677"></a>
-<span class="sourceLineNo">2678</span>    }<a name="line.2678"></a>
-<span class="sourceLineNo">2679</span><a name="line.2679"></a>
-<span class="sourceLineNo">2680</span>    // Record latest flush time<a name="line.2680"></a>
-<span class="sourceLineNo">2681</span>    for (HStore store: storesToFlush) {<a name="line.2681"></a>
-<span class="sourceLineNo">2682</span>      this.lastStoreFlushTimeMap.put(store, startTime);<a name="line.2682"></a>
-<span class="sourceLineNo">2683</span>    }<a name="line.2683"></a>
-<span class="sourceLineNo">2684</span><a name="line.2684"></a>
-<span class="sourceLineNo">2685</span>    this.maxFlushedSeqId = flushedSeqId;<a name="line.2685"></a>
-<span class="sourceLineNo">2686</span>    this.lastFlushOpSeqId = flushOpSeqId;<a name="line.2686"></a>
-<span class="sourceLineNo">2687</span><a name="line.2687"></a>
-<span class="sourceLineNo">2688</span>    // C. Finally notify anyone waiting on memstore to clear:<a name="line.2688"></a>
-<span class="sourceLineNo">2689</span>    // e.g. checkResources().<a name="line.2689"></a>
-<span class="sourceLineNo">2690</span>    synchronized (this) {<a name="line.2690"></a>
-<span class="sourceLineNo">2691</span>      notifyAll(); // FindBugs NN_NAKED_NOTIFY<a name="line.2691"></a>
-<span class="sourceLineNo">2692</span>    }<a name="line.2692"></a>
-<span class="sourceLineNo">2693</span><a name="line.2693"></a>
-<span class="sourceLineNo">2694</span>    long time = EnvironmentEdgeManager.currentTime() - startTime;<a name="line.2694"></a>
-<span class="sourceLineNo">2695</span>    long memstoresize = this.memstoreDataSize.get();<a name="line.2695"></a>
-<span class="sourceLineNo">2696</span>    String msg = "Finished memstore flush of ~"<a name="line.2696"></a>
-<span class="sourceLineNo">2697</span>        + StringUtils.byteDesc(prepareResult.totalFlushableSize.getDataSize()) + "/"<a name="line.2697"></a>
-<span class="sourceLineNo">2698</span>        + prepareResult.totalFlushableSize.getDataSize() + ", currentsize="<a name="line.2698"></a>
-<span class="sourceLineNo">2699</span>        + StringUtils.byteDesc(memstoresize) + "/" + memstoresize<a name="line.2699"></a>
-<span class="sourceLineNo">2700</span>        + " for region " + this + " in " + time + "ms, sequenceid="<a name="line.2700"></a>
-<span class="sourceLineNo">2701</span>        + flushOpSeqId +  ", compaction requested=" + compactionRequested<a name="line.2701"></a>
-<span class="sourceLineNo">2702</span>        + ((wal == null) ? "; wal=null" : "");<a name="line.2702"></a>
-<span class="sourceLineNo">2703</span>    LOG.info(msg);<a name="line.2703"></a>
-<span class="sourceLineNo">2704</span>    status.setStatus(msg);<a name="line.2704"></a>
-<span class="sourceLineNo">2705</span><a name="line.2705"></a>
-<span class="sourceLineNo">2706</span>    if (rsServices != null &amp;&amp; rsServices.getMetrics() != null) {<a name="line.2706"></a>
-<span class="sourceLineNo">2707</span>      rsServices.getMetrics().updateFlush(time - startTime,<a name="line.2707"></a>
-<span class="sourceLineNo">2708</span>          prepareResult.totalFlushableSize.getDataSize(), flushedOutputFileSize);<a name="line.2708"></a>
-<span class="sourceLineNo">2709</span>    }<a name="line.2709"></a>
-<span class="sourceLineNo">2710</span><a name="line.2710"></a>
-<span class="sourceLineNo">2711</span>    return new FlushResultImpl(compactionRequested ?<a name="line.2711"></a>
-<span class="sourceLineNo">2712</span>        FlushResult.Result.FLUSHED_COMPACTION_NEEDED :<a name="line.2712"></a>
-<span class="sourceLineNo">2713</span>          FlushResult.Result.FLUSHED_NO_COMPACTION_NEEDED, flushOpSeqId);<a name="line.2713"></a>
-<span class="sourceLineNo">2714</span>  }<a name="line.2714"></a>
-<span class="sourceLineNo">2715</span><a name="line.2715"></a>
-<span class="sourceLineNo">2716</span>  /**<a name="line.2716"></a>
-<span class="sourceLineNo">2717</span>   * Method to safely get the next sequence number.<a name="line.2717"></a>
-<span class="sourceLineNo">2718</span>   * @return Next sequence number unassociated with any actual edit.<a name="line.2718"></a>
-<span class="sourceLineNo">2719</span>   * @throws IOException<a name="line.2719"></a>
-<span class="sourceLineNo">2720</span>   */<a name="line.2720"></a>
-<span class="sourceLineNo">2721</span>  @VisibleForTesting<a name="line.2721"></a>
-<span class="sourceLineNo">2722</span>  protected long getNextSequenceId(final WAL wal) throws IOException {<a name="line.2722"></a>
-<span class="sourceLineNo">2723</span>    WriteEntry we = mvcc.begin();<a name="line.2723"></a>
-<span class="sourceLineNo">2724</span>    mvcc.completeAndWait(we);<a name="line.2724"></a>
-<span class="sourceLineNo">2725</span>    return we.getWriteNumber();<a name="line.2725"></a>
-<span class="sourceLineNo">2726</span>  }<a name="line.2726"></a>
-<span class="sourceLineNo">2727</span><a name="line.2727"></a>
-<span class="sourceLineNo">2728</span>  //////////////////////////////////////////////////////////////////////////////<a name="line.2728"></a>
-<span class="sourceLineNo">2729</span>  // get() methods for client use.<a name="line.2729"></a>
-<span class="sourceLineNo">2730</span>  //////////////////////////////////////////////////////////////////////////////<a name="line.2730"></a>
-<span class="sourceLineNo">2731</span><a name="line.2731"></a>
-<span class="sourceLineNo">2732</span>  @Override<a name="line.2732"></a>
-<span class="sourceLineNo">2733</span>  public RegionScannerImpl getScanner(Scan scan) throws IOException {<a name="line.2733"></a>
-<span class="sourceLineNo">2734</span>   return getScanner(scan, null);<a name="line.2734"></a>
-<span class="sourceLineNo">2735</span>  }<a name="line.2735"></a>
-<span class="sourceLineNo">2736</span><a name="line.2736"></a>
-<span class="sourceLineNo">2737</span>  @Override<a name="line.2737"></a>
-<span class="sourceLineNo">2738</span>  public RegionScannerImpl getScanner(Scan scan, List&lt;KeyValueScanner&gt; additionalScanners)<a name="line.2738"></a>
-<span class="sourceLineNo">2739</span>      throws IOException {<a name="line.2739"></a>
-<span class="sourceLineNo">2740</span>    return getScanner(scan, additionalScanners, HConstants.NO_NONCE, HConstants.NO_NONCE);<a name="line.2740"></a>
-<span class="sourceLineNo">2741</span>  }<a name="line.2741"></a>
-<span class="sourceLineNo">2742</span><a name="line.2742"></a>
-<span class="sourceLineNo">2743</span>  private RegionScannerImpl getScanner(Scan scan, List&lt;KeyValueScanner&gt; additionalScanners,<a name="line.2743"></a>
-<span class="sourceLineNo">2744</span>      long nonceGroup, long nonce) throws IOException {<a name="line.2744"></a>
-<span class="sourceLineNo">2745</span>    startRegionOperation(Operation.SCAN);<a name="line.2745"></a>
-<span class="sourceLineNo">2746</span>    try {<a name="line.2746"></a>
-<span class="sourceLineNo">2747</span>      // Verify families are all valid<a name="line.2747"></a>
-<span class="sourceLineNo">2748</span>      if (!scan.hasFamilies()) {<a name="line.2748"></a>
-<span class="sourceLineNo">2749</span>        // Adding all families to scanner<a name="line.2749"></a>
-<span class="sourceLineNo">2750</span>        for (byte[] family : this.htableDescriptor.getColumnFamilyNames()) {<a name="line.2750"></a>
-<span class="sourceLineNo">2751</span>          scan.addFamily(family);<a name="line.2751"></a>
-<span class="sourceLineNo">2752</span>        }<a name="line.2752"></a>
-<span class="sourceLineNo">2753</span>      } else {<a name="line.2753"></a>
-<span class="sourceLineNo">2754</span>        for (byte[] family : scan.getFamilyMap().keySet()) {<a name="line.2754"></a>
-<span class="sourceLineNo">2755</span>          checkFamily(family);<a name="line.2755"></a>
-<span class="sourceLineNo">2756</span>        }<a name="line.2756"></a>
-<span class="sourceLineNo">2757</span>      }<a name="line.2757"></a>
-<span class="sourceLineNo">2758</span>      return instantiateRegionScanner(scan, additionalScanners, nonceGroup, nonce);<a name="line.2758"></a>
-<span class="sourceLineNo">2759</span>    } finally {<a name="line.2759"></a>
-<span class="sourceLineNo">2760</span>      closeRegionOperation(Operation.SCAN);<a name="line.2760"></a>
-<span class="sourceLineNo">2761</span>    }<a name="line.2761"></a>
-<span class="sourceLineNo">2762</span>  }<a name="line.2762"></a>
-<span class="sourceLineNo">2763</span><a name="line.2763"></a>
-<span class="sourceLineNo">2764</span>  protected RegionScanner instantiateRegionScanner(Scan scan,<a name="line.2764"></a>
-<span class="sourceLineNo">2765</span>      List&lt;KeyValueScanner&gt; additionalScanners) throws IOException {<a name="line.2765"></a>
-<span class="sourceLineNo">2766</span>    return instantiateRegionScanner(scan, additionalScanners, HConstants.NO_NONCE,<a name="line.2766"></a>
-<span class="sourceLineNo">2767</span>      HConstants.NO_NONCE);<a name="line.2767"></a>
-<span class="sourceLineNo">2768</span>  }<a name="line.2768"></a>
-<span class="sourceLineNo">2769</span><a name="line.2769"></a>
-<span class="sourceLineNo">2770</span>  protected RegionScannerImpl instantiateRegionScanner(Scan scan,<a name="line.2770"></a>
-<span class="sourceLineNo">2771</span>      List&lt;KeyValueScanner&gt; additionalScanners, long nonceGroup, long nonce) throws IOException {<a name="line.2771"></a>
-<span class="sourceLineNo">2772</span>    if (scan.isReversed()) {<a name="line.2772"></a>
-<span class="sourceLineNo">2773</span>      if (scan.getFilter() != null) {<a name="line.2773"></a>
-<span class="sourceLineNo">2774</span>        scan.getFilter().setReversed(true);<a name="line.2774"></a>
-<span class="sourceLineNo">2775</span>      }<a name="line.2775"></a>
-<span class="sourceLineNo">2776</span>      return new ReversedRegionScannerImpl(scan, additionalScanners, this);<a name="line.2776"></a>
-<span class="sourceLineNo">2777</span>    }<a name="line.2777"></a>
-<span class="sourceLineNo">2778</span>    return new RegionScannerImpl(scan, additionalScanners, this, nonceGroup, nonce);<a name="line.2778"></a>
-<span class="sourceLineNo">2779</span>  }<a name="line.2779"></a>
-<span class="sourceLineNo">2780</span><a name="line.2780"></a>
-<span class="sourceLineNo">2781</span>  /**<a name="line.2781"></a>
-<span class="sourceLineNo">2782</span>   * Prepare a delete for a row mutation processor<a name="line.2782"></a>
-<span class="sourceLineNo">2783</span>   * @param delete The passed delete is modified by this method. WARNING!<a name="line.2783"></a>
-<span class="sourceLineNo">2784</span>   * @throws IOException<a name="line.2784"></a>
-<span class="sourceLineNo">2785</span>   */<a name="line.2785"></a>
-<span class="sourceLineNo">2786</span>  public void prepareDelete(Delete delete) throws IOException {<a name="line.2786"></a>
-<span class="sourceLineNo">2787</span>    // Check to see if this is a deleteRow insert<a name="line.2787"></a>
-<span class="sourceLineNo">2788</span>    if(delete.getFamilyCellMap().isEmpty()){<a name="line.2788"></a>
-<span class="sourceLineNo">2789</span>      for(byte [] family : this.htableDescriptor.getColumnFamilyNames()){<a name="line.2789"></a>
-<span class="sourceLineNo">2790</span>        // Don't eat the timestamp<a name="line.2790"></a>
-<span class="sourceLineNo">2791</span>        delete.addFamily(family, delete.getTimeStamp());<a name="line.2791"></a>
-<span class="sourceLineNo">2792</span>      }<a name="line.2792"></a>
-<span class="sourceLineNo">2793</span>    } else {<a name="line.2793"></a>
-<span class="sourceLineNo">2794</span>      for(byte [] family : delete.getFamilyCellMap().keySet()) {<a name="line.2794"></a>
-<span class="sourceLineNo">2795</span>        if(family == null) {<a name="line.2795"></a>
-<span class="sourceLineNo">2796</span>          throw new NoSuchColumnFamilyException("Empty family is invalid");<a name="line.2796"></a>
-<span class="sourceLineNo">2797</span>        }<a name="line.2797"></a>
-<span class="sourceLineNo">2798</span>        checkFamily(family);<a name="line.2798"></a>
-<span class="sourceLineNo">2799</span>      }<a name="line.2799"></a>
-<span class="sourceLineNo">2800</span>    }<a name="line.2800"></a>
-<span class="sourceLineNo">2801</span>  }<a name="line.2801"></a>
-<span class="sourceLineNo">2802</span><a name="line.2802"></a>
-<span class="sourceLineNo">2803</span>  @Override<a name="line.2803"></a>
-<span class="sourceLineNo">2804</span>  public void delete(Delete delete) throws IOException {<a name="line.2804"></a>
-<span class="sourceLineNo">2805</span>    checkReadOnly();<a name="line.2805"></a>
-<span class="sourceLineNo">2806</span>    checkResources();<a name="line.2806"></a>
-<span class="sourceLineNo">2807</span>    startRegionOperation(Operation.DELETE);<a name="line.2807"></a>
-<span class="sourceLineNo">2808</span>    try {<a name="line.2808"></a>
-<span class="sourceLineNo">2809</span>      // All edits for the given row (across all column families) must happen atomically.<a name="line.2809"></a>
-<span class="sourceLineNo">2810</span>      doBatchMutate(delete);<a name="line.2810"></a>
-<span class="sourceLineNo">2811</span>    } finally {<a name="line.2811"></a>
-<span class="sourceLineNo">2812</span>      closeRegionOperation(Operation.DELETE);<a name="line.2812"></a>
-<span class="sourceLineNo">2813</span>    }<a name="line.2813"></a>
-<span class="sourceLineNo">2814</span>  }<a name="line.2814"></a>
-<span class="sourceLineNo">2815</span><a name="line.2815"></a>
-<span class="sourceLineNo">2816</span>  /**<a name="line.2816"></a>
-<span class="sourceLineNo">2817</span>   * Row needed by below method.<a name="line.2817"></a>
-<span class="sourceLineNo">2818</span>   */<a name="line.2818"></a>
-<span class="sourceLineNo">2819</span>  private static final byte [] FOR_UNIT_TESTS_ONLY = Bytes.toBytes("ForUnitTestsOnly");<a name="line.2819"></a>
-<span class="sourceLineNo">2820</span><a name="line.2820"></a>
-<span class="sourceLineNo">2821</span>  /**<a name="line.2821"></a>
-<span class="sourceLineNo">2822</span>   * This is used only by unit tests. Not required to be a public API.<a name="line.2822"></a>
-<span class="sourceLineNo">2823</span>   * @param familyMap map of family to edits for the given family.<a name="line.2823"></a>
-<span class="sourceLineNo">2824</span>   * @throws IOException<a name="line.2824"></a>
-<span class="sourceLineNo">2825</span>   */<a name="line.2825"></a>
-<span class="sourceLineNo">2826</span>  void delete(NavigableMap&lt;byte[], List&lt;Cell&gt;&gt; familyMap,<a name="line.2826"></a>
-<span class="sourceLineNo">2827</span>      Durability durability) throws IOException {<a name="line.2827"></a>
-<span class="sourceLineNo">2828</span>    Delete delete = new Delete(FOR_UNIT_TESTS_ONLY);<a name="line.2828"></a>
-<span class="sourceLineNo">2829</span>    delete.setFamilyCellMap(familyMap);<a name="line.2829"></a>
-<span class="sourceLineNo">2830</span>    delete.setDurability(durability);<a name="line.2830"></a>
-<span class="sourceLineNo">2831</span>    doBatchMutate(delete);<a name="line.2831"></a>
-<span class="sourceLineNo">2832</span>  }<a name="line.2832"></a>
-<span class="sourceLineNo">2833</span><a name="line.2833"></a>
-<span class="sourceLineNo">2834</span>  /**<a name="line.2834"></a>
-<span class="sourceLineNo">2835</span>   * Set up correct timestamps in the KVs in Delete object.<a name="line.2835"></a>
-<span class="sourceLineNo">2836</span>   * &lt;p&gt;Caller should have the row and region locks.<a name="line.2836"></a>
-<span class="sourceLineNo">2837</span>   * @param mutation<a name="line.2837"></a>
-<span class="sourceLineNo">2838</span>   * @param familyMap<a name="line.2838"></a>
-<span class="sourceLineNo">2839</span>   * @param byteNow<a name="line.2839"></a>
-<span class="sourceLineNo">2840</span>   * @throws IOException<a name="line.2840"></a>
-<span class="sourceLineNo">2841</span>   */<a name="line.2841"></a>
-<span class="sourceLineNo">2842</span>  public void prepareDeleteTimestamps(Mutation mutation, Map&lt;byte[], List&lt;Cell&gt;&gt; familyMap,<a name="line.2842"></a>
-<span class="sourceLineNo">2843</span>      byte[] byteNow) throws IOException {<a name="line.2843"></a>
-<span class="sourceLineNo">2844</span>    for (Map.Entry&lt;byte[], List&lt;Cell&gt;&gt; e : familyMap.entrySet()) {<a name="line.2844"></a>
-<span class="sourceLineNo">2845</span><a name="line.2845"></a>
-<span class="sourceLineNo">2846</span>      byte[] family = e.getKey();<a name="line.2846"></a>
-<span class="sourceLineNo">2847</span>      List&lt;Cell&gt; cells = e.getValue();<a name="line.2847"></a>
-<span class="sourceLineNo">2848</span>      assert cells instanceof RandomAccess;<a name="line.2848"></a>
-<span class="sourceLineNo">2849</span><a name="line.2849"></a>
-<span class="sourceLineNo">2850</span>      Map&lt;byte[], Integer&gt; kvCount = new TreeMap&lt;&gt;(Bytes.BYTES_COMPARATOR);<a name="line.2850"></a>
-<span class="sourceLineNo">2851</span>      int listSize = cells.size();<a name="line.2851"></a>
-<span class="sourceLineNo">2852</span>      for (int i=0; i &lt; listSize; i++) {<a name="line.2852"></a>
-<span class="sourceLineNo">2853</span>        Cell cell = cells.get(i);<a name="line.2853"></a>
-<span class="sourceLineNo">2854</span>        //  Check if time is LATEST, change to time of most recent addition if so<a name="line.2854"></a>
-<span class="sourceLineNo">2855</span>        //  This is expensive.<a name="line.2855"></a>
-<span class="sourceLineNo">2856</span>        if (cell.getTimestamp() == HConstants.LATEST_TIMESTAMP<a name="line.2856"></a>
-<span class="sourceLineNo">2857</span>            &amp;&amp; PrivateCellUtil.isDeleteType(cell)) {<a name="line.2857"></a>
-<span class="sourceLineNo">2858</span>          byte[] qual = CellUtil.cloneQualifier(cell);<a name="line.2858"></a>
-<span class="sourceLineNo">2859</span><a name="line.2859"></a>
-<span class="sourceLineNo">2860</span>          Integer count = kvCount.get(qual);<a name="line.2860"></a>
-<span class="sourceLineNo">2861</span>          if (count == null) {<a name="line.2861"></a>
-<span class="sourceLineNo">2862</span>            kvCount.put(qual, 1);<a name="line.2862"></a>
-<span class="sourceLineNo">2863</span>          } else {<a name="line.2863"></a>
-<span class="sourceLineNo">2864</span>            kvCount.put(qual, count + 1);<a name="line.2864"></a>
-<span class="sourceLineNo">2865</span>          }<a name="line.2865"></a>
-<span class="sourceLineNo">2866</span>          count = kvCount.get(qual);<a name="line.2866"></a>
-<span class="sourceLineNo">2867</span><a name="line.2867"></a>
-<span class="sourceLineNo">2868</span>          Get get = new Get(CellUtil.cloneRow(cell));<a name="line.2868"></a>
-<span class="sourceLineNo">2869</span>          get.setMaxVersions(count);<a name="line.2869"></a>
-<span class="sourceLineNo">2870</span>          get.addColumn(family, qual);<a name="line.2870"></a>
-<span class="sourceLineNo">2871</span>          if (coprocessorHost != null) {<a name="line.2871"></a>
-<span class="sourceLineNo">2872</span>            if (!coprocessorHost.prePrepareTimeStampForDeleteVersion(mutation, cell,<a name="line.2872"></a>
-<span class="sourceLineNo">2873</span>                byteNow, get)) {<a name="line.2873"></a>
-<span class="sourceLineNo">2874</span>              updateDeleteLatestVersionTimeStamp(cell, get, count, byteNow);<a name="line.2874"></a>
-<span class="sourceLineNo">2875</span>            }<a name="line.2875"></a>
-<span class="sourceLineNo">2876</span>          } else {<a name="line.2876"></a>
-<span class="sourceLineNo">2877</span>            updateDeleteLatestVersionTimeStamp(cell, get, count, byteNow);<a name="line.2877"></a>
-<span class="sourceLineNo">2878</span>          }<a name="line.2878"></a>
-<span class="sourceLineNo">2879</span>        } else {<a name="line.2879"></a>
-<span class="sourceLineNo">2880</span>          PrivateCellUtil.updateLatestStamp(cell, byteNow, 0);<a name="line.2880"></a>
-<span class="sourceLineNo">2881</span>        }<a name="line.2881"></a>
-<span class="sourceLineNo">2882</span>      }<a name="line.2882"></a>
-<span class="sourceLineNo">2883</span>    }<a name="line.2883"></a>
-<span class="sourceLineNo">2884</span>  }<a name="line.2884"></a>
-<span class="sourceLineNo">2885</span><a name="line.2885"></a>
-<span class="sourceLineNo">2886</span>  void updateDeleteLatestVersionTimeStamp(Cell cell, Get get, int count, byte[] byteNow)<a name="line.2886"></a>
-<span class="sourceLineNo">2887</span>      throws IOException {<a name="line.2887"></a>
-<span class="sourceLineNo">2888</span>    List&lt;Cell&gt; result = get(get, false);<a name="line.2888"></a>
-<span class="sourceLineNo">2889</span><a name="line.2889"></a>
-<span class="sourceLineNo">2890</span>    if (result.size() &lt; count) {<a name="line.2890"></a>
-<span class="sourceLineNo">2891</span>      // Nothing to delete<a name="line.2891"></a>
-<span class="sourceLineNo">2892</span>      PrivateCellUtil.updateLatestStamp(cell, byteNow, 0);<a name="line.2892"></a>
-<span class="sourceLineNo">2893</span>      return;<a name="line.2893"></a>
-<span class="sourceLineNo">2894</span>    }<a name="line.2894"></a>
-<span class="sourceLineNo">2895</span>    if (result.size() &gt; count) {<a name="line.2895"></a>
-<span class="sourceLineNo">2896</span>      throw new RuntimeException("Unexpected size: " + result.size());<a name="line.2896"></a>
-<span class="sourceLineNo">2897</span>    }<a name="line.2897"></a>
-<span class="sourceLineNo">2898</span>    Cell getCell = result.get(count - 1);<a name="line.2898"></a>
-<span class="sourceLineNo">2899</span>    PrivateCellUtil.setTimestamp(cell, getCell.getTimestamp());<a name="line.2899"></a>
-<span class="sourceLineNo">2900</span>  }<a name="line.2900"></a>
-<span class="sourceLineNo">2901</span><a name="line.2901"></a>
-<span class="sourceLineNo">2902</span>  @Override<a name="line.2902"></a>
-<span class="sourceLineNo">2903</span>  public void put(Put put) throws IOException {<a name="line.2903"></a>
-<span class="sourceLineNo">2904</span>    checkReadOnly();<a name="line.2904"></a>
-<span class="sourceLineNo">2905</span><a name="line.2905"></a>
-<span class="sourceLineNo">2906</span>    // Do a rough check that we have resources to accept a write.  The check is<a name="line.2906"></a>
-<span class="sourceLineNo">2907</span>    // 'rough' in that between the resource check and the call to obtain a<a name="line.2907"></a>
-<span class="sourceLineNo">2908</span>    // read lock, resources may run out.  For now, the thought is that this<a name="line.2908"></a>
-<span class="sourceLineNo">2909</span>    // will be extremely rare; we'll deal with it when it happens.<a name="line.2909"></a>
-<span class="sourceLineNo">2910</span>    checkResources();<a name="line.2910"></a>
-<span class="sourceLineNo">2911</span>    startRegionOperation(Operation.PUT);<a name="line.2911"></a>
-<span class="sourceLineNo">2912</span>    try {<a name="line.2912"></a>
-<span class="sourceLineNo">2913</span>      // All edits for the given row (across all column families) must happen atomically.<a name="line.2913"></a>
-<span class="sourceLineNo">2914</span>      doBatchMutate(put);<a name="line.2914"></a>
-<span class="sourceLineNo">2915</span>    } finally {<a name="line.2915"></a>
-<span class="sourceLineNo">2916</span>      closeRegionOperation(Operation.PUT);<a name="line.2916"></a>
-<span class="sourceLineNo">2917</span>    }<a name="line.2917"></a>
-<span class="sourceLineNo">2918</span>  }<a name="line.2918"></a>
-<span class="sourceLineNo">2919</span><a name="line.2919"></a>
-<span class="sourceLineNo">2920</span>  /**<a name="line.2920"></a>
-<span class="sourceLineNo">2921</span>   * Class that tracks the progress of a batch operations, accumulating status codes and tracking<a name="line.2921"></a>
-<span class="sourceLineNo">2922</span>   * the index at which processing is proceeding. These batch operations may get split into<a name="line.2922"></a>
-<span class="sourceLineNo">2923</span>   * mini-batches for processing.<a name="line.2923"></a>
-<span class="sourceLineNo">2924</span>   */<a name="line.2924"></a>
-<span class="sourceLineNo">2925</span>  private abstract static class BatchOperation&lt;T&gt; {<a name="line.2925"></a>
-<span class="sourceLineNo">2926</span>    protected final T[] operations;<a name="line.2926"></a>
-<span class="sourceLineNo">2927</span>    protected final OperationStatus[] retCodeDetails;<a name="line.2927"></a>
-<span class="sourceLineNo">2928</span>    protected final WALEdit[] walEditsFromCoprocessors;<a name="line.2928"></a>
-<span class="sourceLineNo">2929</span>    // reference family cell maps directly so coprocessors can mutate them if desired<a name="line.2929"></a>
-<span class="sourceLineNo">2930</span>    protected final Map&lt;byte[], List&lt;Cell&gt;&gt;[] familyCellMaps;<a name="line.2930"></a>
-<span class="sourceLineNo">2931</span><a name="line.2931"></a>
-<span class="sourceLineNo">2932</span>    protected final HRegion region;<a name="line.2932"></a>
-<span class="sourceLineNo">2933</span>    protected int nextIndexToProcess = 0;<a name="line.2933"></a>
-<span class="sourceLineNo">2934</span>    protected final ObservedExceptionsInBatch observedExceptions;<a name="line.2934"></a>
-<span class="sourceLineNo">2935</span>    //Durability of the batch (highest durability of all operations)<a name="line.2935"></a>
-<span class="sourceLineNo">2936</span>    protected Durability durability;<a name="line.2936"></a>
-<span class="sourceLineNo">2937</span>    protected boolean atomic = false;<a name="line.2937"></a>
-<span class="sourceLineNo">2938</span><a name="line.2938"></a>
-<span class="sourceLineNo">2939</span>    public BatchOperation(final HRegion region, T[] operations) {<a name="line.2939"></a>
-<span class="sourceLineNo">2940</span>      this.operations = operations;<a name="line.2940"></a>
-<span class="sourceLineNo">2941</span>      this.retCodeDetails = new OperationStatus[operations.length];<a name="line.2941"></a>
-<span class="sourceLineNo">2942</span>      Arrays.fill(this.retCodeDetails, OperationStatus.NOT_RUN);<a name="line.2942"></a>
-<span class="sourceLineNo">2943</span>      this.walEditsFromCoprocessors = new WALEdit[operations.length];<a name="line.2943"></a>
-<span class="sourceLineNo">2944</span>      familyCellMaps = new Map[operations.length];<a name="line.2944"></a>
-<span class="sourceLineNo">2945</span><a name="line.2945"></a>
-<span class="sourceLineNo">2946</span>      this.region = region;<a name="line.2946"></a>
-<span class="sourceLineNo">2947</span>      observedExceptions = new ObservedExceptionsInBatch();<a name="line.2947"></a>
-<span class="sourceLineNo">2948</span>      durability = Durability.USE_DEFAULT;<a name="line.2948"></a>
-<span class="sourceLineNo">2949</span>    }<a name="line.2949"></a>
-<span class="sourceLineNo">2950</span><a name="line.2950"></a>
-<span class="sourceLineNo">2951</span>    /**<a name="line.2951"></a>
-<span class="sourceLineNo">2952</span>     * Visitor interface for batch operations<a name="line.2952"></a>
-<span class="sourceLineNo">2953</span>     */<a name="line.2953"></a>
-<span class="sourceLineNo">2954</span>    @FunctionalInterface<a name="line.2954"></a>
-<span class="sourceLineNo">2955</span>    public interface Visitor {<a name="line.2955"></a>
-<span class="sourceLineNo">2956</span>      /**<a name="line.2956"></a>
-<span class="sourceLineNo">2957</span>       * @param index operation index<a name="line.2957"></a>
-<span class="sourceLineNo">2958</span>       * @return If true continue visiting remaining entries, break otherwise<a name="line.2958"></a>
-<span class="sourceLineNo">2959</span>       */<a name="line.2959"></a>
-<span class="sourceLineNo">2960</span>      boolean visit(int index) throws IOException;<a name="line.2960"></a>
-<span class="sourceLineNo">2961</span>    }<a name="line.2961"></a>
-<span class="sourceLineNo">2962</span><a name="line.2962"></a>
-<span class="sourceLineNo">2963</span>    /**<a name="line.2963"></a>
-<span class="sourceLineNo">2964</span>     * Helper method for visiting pending/ all batch operations<a name="line.2964"></a>
-<span class="sourceLineNo">2965</span>     */<a name="line.2965"></a>
-<span class="sourceLineNo">2966</span>    public void visitBatchOperations(boolean pendingOnly, int lastIndexExclusive, Visitor visitor)<a name="line.2966"></a>
-<span class="sourceLineNo">2967</span>        throws IOException {<a name="line.2967"></a>
-<span class="sourceLineNo">2968</span>      assert lastIndexExclusive &lt;= this.size();<a name="line.2968"></a>
-<span class="sourceLineNo">2969</span>      for (int i = nextIndexToProcess; i &lt; lastIndexExclusive; i++) {<a name="line.2969"></a>
-<span class="sourceLineNo">2970</span>        if (!pendingOnly || isOperationPending(i)) {<a name="line.2970"></a>
-<span class="sourceLineNo">2971</span>          if (!visitor.visit(i)) {<a name="line.2971"></a>
-<span class="sourceLineNo">2972</span>            break;<a name="line.2972"></a>
-<span class="sourceLineNo">2973</span>          }<a name="line.2973"></a>
-<span class="sourceLineNo">2974</span>        }<a name="line.2974"></a>
-<span class="sourceLineNo">2975</span>      }<a name="line.2975"></a>
-<span class="sourceLineNo">2976</span>    }<a name="line.2976"></a>
-<span class="sourceLineNo">2977</span><a name="line.2977"></a>
-<span class="sourceLineNo">2978</span>    public abstract Mutation getMutation(int index);<a name="line.2978"></a>
-<span class="sourceLineNo">2979</span>    public abstract long getNonceGroup(int index);<a name="line.2979"></a>
-<span class="sourceLineNo">2980</span>    public abstract long getNonce(int index);<a name="line.2980"></a>
-<span class="sourceLineNo">2981</span>    /** This method is potentially expensive and useful mostly for non-replay CP path. */<a name="line.2981"></a>
-<span class="sourceLineNo">2982</span>    public abstract Mutation[] getMutationsForCoprocs();<a name="line.2982"></a>
-<span class="sourceLineNo">2983</span>    public abstract boolean isInReplay();<a name="line.2983"></a>
-<span class="sourceLineNo">2984</span>    public abstract long getOrigLogSeqNum();<a name="line.2984"></a>
-<span class="sourceLineNo">2985</span>    public abstract void startRegionOperation() throws IOException;<a name="line.2985"></a>
-<span class="sourceLineNo">2986</span>    public abstract void closeRegionOperation() throws IOException;<a name="line.2986"></a>
-<span class="sourceLineNo">2987</span><a name="line.2987"></a>
-<span class="sourceLineNo">2988</span>    /**<a name="line.2988"></a>
-<span class="sourceLineNo">2989</span>     * Validates each mutation and prepares a batch for write. If necessary (non-replay case), runs<a name="line.2989"></a>
-<span class="sourceLineNo">2990</span>     * CP prePut()/ preDelete() hooks for all mutations in a batch. This is intended to operate on<a name="line.2990"></a>
-<span class="sourceLineNo">2991</span>     * entire batch and will be called from outside of class to check and prepare batch. This can<a name="line.2991"></a>
-<span class="sourceLineNo">2992</span>     * be implemented by calling helper method {@link #checkAndPrepareMutation(int, long)} in a<a name="line.2992"></a>
-<span class="sourceLineNo">2993</span>     * 'for' loop over mutations.<a name="line.2993"></a>
-<span class="sourceLineNo">2994</span>     */<a name="line.2994"></a>
-<span class="sourceLineNo">2995</span>    public abstract void checkAndPrepare() throws IOException;<a name="line.2995"></a>
-<span class="sourceLineNo">2996</span><a name="line.2996"></a>
-<span class="sourceLineNo">2997</span>    /**<a name="line.2997"></a>
-<span class="sourceLineNo">2998</span>     * Implement any Put request specific check and prepare logic here. Please refer to<a name="line.2998"></a>
-<span class="sourceLineNo">2999</span>     * {@link #checkAndPrepareMutation(Mutation, long)} for how its used.<a name="line.2999"></a>
-<span class="sourceLineNo">3000</span>     */<a name="line.3000"></a>
-<span class="sourceLineNo">3001</span>    protected abstract void checkAndPreparePut(final Put p) throws IOException;<a name="line.3001"></a>
-<span class="sourceLineNo">3002</span><a name="line.3002"></a>
-<span class="sourceLineNo">3003</span>    /**<a name="line.3003"></a>
-<span class="sourceLineNo">3004</span>     *  If necessary, calls preBatchMutate() CP hook for a mini-batch and updates metrics, cell<a name="line.3004"></a>
-<span class="sourceLineNo">3005</span>     *  count, tags and timestamp for all cells of all operations in a mini-batch.<a name="line.3005"></a>
-<span class="sourceLineNo">3006</span>     */<a name="line.3006"></a>
-<span class="sourceLineNo">3007</span>    public abstract void prepareMiniBatchOperations(MiniBatchOperationInProgress&lt;Mutation&gt;<a name="line.3007"></a>
-<span class="sourceLineNo">3008</span>        miniBatchOp, long timestamp, final List&lt;RowLock&gt; acquiredRowLocks) throws IOException;<a name="line.3008"></a>
-<span class="sourceLineNo">3009</span><a name="line.3009"></a>
-<span class="sourceLineNo">3010</span>    /**<a name="line.3010"></a>
-<span class="sourceLineNo">3011</span>     * Write mini-batch operations to MemStore<a name="line.3011"></a>
-<span class="sourceLineNo">3012</span>     */<a name="line.3012"></a>
-<span class="sourceLineNo">3013</span>    public abstract WriteEntry writeMiniBatchOperationsToMemStore(<a name="line.3013"></a>
-<span class="sourceLineNo">3014</span>        final MiniBatchOperationInProgress&lt;Mutation&gt; miniBatchOp, final WriteEntry writeEntry)<a name="line.3014"></a>
-<span class="sourceLineNo">3015</span>        throws IOException;<a name="line.3015"></a>
-<span class="sourceLineNo">3016</span><a name="line.3016"></a>
-<span class="sourceLineNo">3017</span>    protected void writeMiniBatchOperationsToMemStore(<a name="line.3017"></a>
-<span class="sourceLineNo">3018</span>        final MiniBatchOperationInProgress&lt;Mutation&gt; miniBatchOp, final long writeNumber)<a name="line.3018"></a>
-<span class="sourceLineNo">3019</span>        throws IOException {<a name="line.3019"></a>
-<span class="sourceLineNo">3020</span>      MemStoreSizing memStoreAccounting = new MemStoreSizing();<a name="line.3020"></a>
-<span class="sourceLineNo">3021</span>      visitBatchOperations(true, miniBatchOp.getLastIndexExclusive(), (int index) -&gt; {<a name="line.3021"></a>
-<span class="sourceLineNo">3022</span>        // We need to update the sequence id for following reasons.<a name="line.3022"></a>
-<span class="sourceLineNo">3023</span>        // 1) If the op is in replay mode, FSWALEntry#stampRegionSequenceId won't stamp sequence id.<a name="line.3023"></a>
-<span class="sourceLineNo">3024</span>        // 2) If no WAL, FSWALEntry won't be used<a name="line.3024"></a>
-<span class="sourceLineNo">3025</span>        // we use durability of the original mutation for the mutation passed by CP.<a name="line.3025"></a>
-<span class="sourceLineNo">3026</span>        if (isInReplay() || getMutation(index).getDurability() == Durability.SKIP_WAL) {<a name="line.3026"></a>
-<span class="sourceLineNo">3027</span>          region.updateSequenceId(familyCellMaps[index].values(), writeNumber);<a name="line.3027"></a>
-<span class="sourceLineNo">3028</span>        }<a name="line.3028"></a>
-<span class="sourceLineNo">3029</span>        applyFamilyMapToMemStore(familyCellMaps[index], memStoreAccounting);<a name="line.3029"></a>
-<span class="sourceLineNo">3030</span>        return true;<a name="line.3030"></a>
-<span class="sourceLineNo">3031</span>      });<a name="line.3031"></a>
-<span class="sourceLineNo">3032</span>      // update memStore size<a name="line.3032"></a>
-<span class="sourceLineNo">3033</span>      region.addAndGetMemStoreSize(memStoreAccounting);<a name="line.3033"></a>
-<span class="sourceLineNo">3034</span>    }<a name="line.3034"></a>
-<span class="sourceLineNo">3035</span><a name="line.3035"></a>
-<span class="sourceLineNo">3036</span>    public boolean isDone() {<a name="line.3036"></a>
-<span class="sourceLineNo">3037</span>      return nextIndexToProcess == operations.length;<a name="line.3037"></a>
-<span class="sourceLineNo">3038</span>    }<a name="line.3038"></a>
-<span class="sourceLineNo">3039</span><a name="line.3039"></a>
-<span class="sourceLineNo">3040</span>    public int size() {<a name="line.3040"></a>
-<span class="sourceLineNo">3041</span>      return operations.length;<a name="line.3041"></a>
-<span class="sourceLineNo">3042</span>    }<a name="line.3042"></a>
-<span class="sourceLineNo">3043</span><a name="line.3043"></a>
-<span class="sourceLineNo">3044</span>    public boolean isOperationPending(int index) {<a name="line.3044"></a>
-<span class="sourceLineNo">3045</span>      return retCodeDetails[index].getOperationStatusCode() == OperationStatusCode.NOT_RUN;<a name="line.3045"></a>
-<span class="sourceLineNo">3046</span>    }<a name="line.3046"></a>
-<span class="sourceLineNo">3047</span><a name="line.3047"></a>
-<span class="sourceLineNo">3048</span>    public List&lt;UUID&gt; getClusterIds() {<a name="line.3048"></a>
-<span class="sourceLineNo">3049</span>      assert size() != 0;<a name="line.3049"></a>
-<span class="sourceLineNo">3050</span>      return getMutation(0).getClusterIds();<a name="line.3050"></a>
-<span class="sourceLineNo">3051</span>    }<a name="line.3051"></a>
-<span class="sourceLineNo">3052</span><a name="line.3052"></a>
-<span class="sourceLineNo">3053</span>    boolean isAtomic() {<a name="line.3053"></a>
-<span class="sourceLineNo">3054</span>      return atomic;<a name="line.3054"></a>
-<span class="sourceLineNo">3055</span>    }<a name="line.3055"></a>
-<span class="sourceLineNo">3056</span><a name="line.3056"></a>
-<span class="sourceLineNo">3057</span>    /**<a name="line.3057"></a>
-<span class="sourceLineNo">3058</span>     * Helper method that checks and prepares only one mutation. This can be used to implement<a name="line.3058"></a>
-<span class="sourceLineNo">3059</span>     * {@link #checkAndPrepare()} for entire Batch.<a name="line.3059"></a>
-<span class="sourceLineNo">3060</span>     * NOTE: As CP prePut()/ preDelete() hooks may modify mutations, this method should be called<a name="line.3060"></a>
-<span class="sourceLineNo">3061</span>     * after prePut()/ preDelete() CP hooks are run for the mutation<a name="line.3061"></a>
-<span class="sourceLineNo">3062</span>     */<a name="line.3062"></a>
-<span class="sourceLineNo">3063</span>    protected void checkAndPrepareMutation(Mutation mutation, final long timestamp)<a name="line.3063"></a>
-<span class="sourceLineNo">3064</span>        throws IOException {<a name="line.3064"></a>
-<span class="sourceLineNo">3065</span>      region.checkRow(mutation.getRow(), "batchMutate");<a name="line.3065"></a>
-<span class="sourceLineNo">3066</span>      if (mutation instanceof Put) {<a name="line.3066"></a>
-<span class="sourceLineNo">3067</span>        // Check the families in the put. If bad, skip this one.<a name="line.3067"></a>
-<span class="sourceLineNo">3068</span>        checkAndPreparePut((Put) mutation);<a name="line.3068"></a>
-<span class="sourceLineNo">3069</span>        region.checkTimestamps(mutation.getFamilyCellMap(), timestamp);<a name="line.3069"></a>
-<span class="sourceLineNo">3070</span>      } else {<a name="line.3070"></a>
-<span class="sourceLineNo">3071</span>        region.prepareDelete((Delete) mutation);<a name="line.3071"></a>
-<span class="sourceLineNo">3072</span>      }<a name="line.3072"></a>
-<span class="sourceLineNo">3073</span>    }<a name="line.3073"></a>
-<span class="sourceLineNo">3074</span><a name="line.3074"></a>
-<span class="sourceLineNo">3075</span>    protected void checkAndPrepareMutation(int index, long timestamp) throws IOException {<a name="line.3075"></a>
-<span class="sourceLineNo">3076</span>      Mutation mutation = getMutation(index);<a name="line.3076"></a>
-<span class="sourceLineNo">3077</span>      try {<a name="line.3077"></a>
-<span class="sourceLineNo">3078</span>        this.checkAndPrepareMutation(mutation, timestamp);<a name="line.3078"></a>
-<span class="sourceLineNo">3079</span><a name="line.3079"></a>
-<span class="sourceLineNo">3080</span>        // store the family map reference to allow for mutations<a name="line.3080"></a>
-<span class="sourceLineNo">3081</span>        familyCellMaps[index] = mutation.getFamilyCellMap();<a name="line.3081"></a>
-<span class="sourceLineNo">3082</span>        // store durability for the batch (highest durability of all operations in the batch)<a name="line.3082"></a>
-<span class="sourceLineNo">3083</span>        Durability tmpDur = region.getEffectiveDurability(mutation.getDurability());<a name="line.3083"></a>
-<span class="sourceLineNo">3084</span>        if (tmpDur.ordinal() &gt; durability.ordinal()) {<a name="line.3084"></a>
-<span class="sourceLineNo">3085</span>          durability = tmpDur;<a name="line.3085"></a>
-<span class="sourceLineNo">3086</span>        }<a name="line.3086"></a>
-<span class="sourceLineNo">3087</span>      } catch (NoSuchColumnFamilyException nscfe) {<a name="line.3087"></a>
-<span class="sourceLineNo">3088</span>        final String msg = "No such column family in batch mutation. ";<a name="line.3088"></a>
-<span class="sourceLineNo">3089</span>        if (observedExceptions.hasSeenNoSuchFamily()) {<a name="line.3089"></a>
-<span class="sourceLineNo">3090</span>          LOG.warn(msg + nscfe.getMessage());<a name="line.3090"></a>
-<span class="sourceLineNo">3091</span>        } else {<a name="line.3091"></a>
-<span class="sourceLineNo">3092</span>          LOG.warn(msg, nscfe);<a name="line.3092"></a>
-<span class="sourceLineNo">3093</span>          observedExceptions.sawNoSuchFamily();<a name="line.3093"></a>
-<span class="sourceLineNo">3094</span>        }<a name="line.3094"></a>
-<span class="sourceLineNo">3095</span>        retCodeDetails[index] = new OperationStatus(<a name="line.3095"></a>
-<span class="sourceLineNo">3096</span>            OperationStatusCode.BAD_FAMILY, nscfe.getMessage());<a name="line.3096"></a>
-<span class="sourceLineNo">3097</span>        if (isAtomic()) { // fail, atomic means all or none<a name="line.3097"></a>
-<span class="sourceLineNo">3098</span>          throw nscfe;<a name="line.3098"></a>
-<span class="sourceLineNo">3099</span>        }<a name="line.3099"></a>
-<span class="sourceLineNo">3100</span>      } catch (FailedSanityCheckException fsce) {<a name="line.3100"></a>
-<span class="sourceLineNo">3101</span>        final String msg = "Batch Mutation did not pass sanity check. ";<a name="line.3101"></a>
-<span class="sourceLineNo">3102</span>        if (observedExceptions.hasSeenFailedSanityCheck()) {<a name="line.3102"></a>
-<span class="sourceLineNo">3103</span>          LOG.warn(msg + fsce.getMessage());<a name="line.3103"></a>
-<span class="sourceLineNo">3104</span>        } else {<a name="line.3104"></a>
-<span class="sourceLineNo">3105</span>          LOG.warn(msg, fsce);<a name="line.3105"></a>
-<span class="sourceLineNo">3106</span>          observedExceptions.sawFailedSanityCheck();<a name="line.3106"></a>
-<span class="sourceLineNo">3107</span>        }<a name="line.3107"></a>
-<span class="sourceLineNo">3108</span>        retCodeDetails[index] = new OperationStatus(<a name="line.3108"></a>
-<span class="sourceLineNo">3109</span>            OperationStatusCode.SANITY_CHECK_FAILURE, fsce.getMessage());<a name="line.3109"></a>
-<span class="sourceLineNo">3110</span>        if (isAtomic()) {<a name="line.3110"></a>
-<span class="sourceLineNo">3111</span>          throw fsce;<a name="line.3111"></a>
-<span class="sourceLineNo">3112</span>        }<a name="line.3112"></a>
-<span class="sourceLineNo">3113</span>      } catch (WrongRegionException we) {<a name="line.3113"></a>
-<span class="sourceLineNo">3114</span>        final String msg = "Batch mutation had a row that does not belong to this region. ";<a name="line.3114"></a>
-<span class="sourceLineNo">3115</span>        if (observedExceptions.hasSeenWrongRegion()) {<a name="line.3115"></a>
-<span class="sourceLineNo">3116</span>          LOG.warn(msg + we.getMessage());<a name="line.3116"></a>
-<span class="sourceLineNo">3117</span>        } else {<a name="line.3117"></a>
-<span class="sourceLineNo">3118</span>          LOG.warn(msg, we);<a name="line.3118"></a>
-<span class="sourceLineNo">3119</span>          observedExceptions.sawWrongRegion();<a name="line.3119"></a>
-<span class="sourceLineNo">3120</span>        }<a name="line.3120"></a>
-<span class="sourceLineNo">3121</span>        retCodeDetails[index] = new OperationStatus(<a name="line.3121"></a>
-<span class="sourceLineNo">3122</span>            OperationStatusCode.SANITY_CHECK_FAILURE, we.getMessage());<a name="line.3122"></a>
-<span class="sourceLineNo">3123</span>        if (isAtomic()) {<a name="line.3123"></a>
-<span class="sourceLineNo">3124</span>          throw we;<a name="line.3124"></a>
-<span class="sourceLineNo">3125</span>        }<a name="line.3125"></a>
-<span class="sourceLineNo">3126</span>      }<a name="line.3126"></a>
-<span class="sourceLineNo">3127</span>    }<a name="line.3127"></a>
-<span class="sourceLineNo">3128</span><a name="line.3128"></a>
-<span class="sourceLineNo">3129</span>    /**<a name="line.3129"></a>
-<span class="sourceLineNo">3130</span>     * Creates Mini-batch of all operations [nextIndexToProcess, lastIndexExclusive) for which<a name="line.3130"></a>
-<span class="sourceLineNo">3131</span>     * a row lock can be acquired. All mutations with locked rows are considered to be<a name="line.3131"></a>
-<span class="sourceLineNo">3132</span>     * In-progress operations and hence the name {@link MiniBatchOperationInProgress}. Mini batch<a name="line.3132"></a>
-<span class="sourceLineNo">3133</span>     * is window over {@link BatchOperation} and contains contiguous pending operations.<a name="line.3133"></a>
-<span class="sourceLineNo">3134</span>     *<a name="line.3134"></a>
-<span class="sourceLineNo">3135</span>     * @param acquiredRowLocks keeps track of rowLocks acquired.<a name="line.3135"></a>
-<span class="sourceLineNo">3136</span>     */<a name="line.3136"></a>
-<span class="sourceLineNo">3137</span>    public MiniBatchOperationInProgress&lt;Mutation&gt; lockRowsAndBuildMiniBatch(<a name="line.3137"></a>
-<span class="sourceLineNo">3138</span>        List&lt;RowLock&gt; acquiredRowLocks) throws IOException {<a name="line.3138"></a>
-<span class="sourceLineNo">3139</span>      int readyToWriteCount = 0;<a name="line.3139"></a>
-<span class="sourceLineNo">3140</span>      int lastIndexExclusive = 0;<a name="line.3140"></a>
-<span class="sourceLineNo">3141</span>      for (; lastIndexExclusive &lt; size(); lastIndexExclusive++) {<a name="line.3141"></a>
-<span class="sourceLineNo">3142</span>        if (!isOperationPending(lastIndexExclusive)) {<a name="line.3142"></a>
-<span class="sourceLineNo">3143</span>          continue;<a name="line.3143"></a>
-<span class="sourceLineNo">3144</span>        }<a name="line.3144"></a>
-<span class="sourceLineNo">3145</span>        Mutation mutation = getMutation(lastIndexExclusive);<a name="line.3145"></a>
-<span class="sourceLineNo">3146</span>        // If we haven't got any rows in our batch, we should block to get the next one.<a name="line.3146"></a>
-<span class="sourceLineNo">3147</span>        RowLock rowLock = null;<a name="line.3147"></a>
-<span class="sourceLineNo">3148</span>        try {<a name="line.3148"></a>
-<span class="sourceLineNo">3149</span>          // if atomic then get exclusive lock, else shared lock<a name="line.3149"></a>
-<span class="sourceLineNo">3150</span>          rowLock = region.getRowLockInternal(mutation.getRow(), !isAtomic());<a name="line.3150"></a>
-<span class="sourceLineNo">3151</span>        } catch (TimeoutIOException e) {<a name="line.3151"></a>
-<span class="sourceLineNo">3152</span>          // We will retry when other exceptions, but we should stop if we timeout .<a name="line.3152"></a>
-<span class="sourceLineNo">3153</span>          throw e;<a name="line.3153"></a>
-<span class="sourceLineNo">3154</span>        } catch (IOException ioe) {<a name="line.3154"></a>
-<span class="sourceLineNo">3155</span>          LOG.warn("Failed getting lock, row=" + Bytes.toStringBinary(mutation.getRow()), ioe);<a name="line.3155"></a>
-<span class="sourceLineNo">3156</span>          if (isAtomic()) { // fail, atomic means all or none<a name="line.3156"></a>
-<span class="sourceLineNo">3157</span>            throw ioe;<a name="line.3157"></a>
-<span class="sourceLineNo">3158</span>          }<a name="line.3158"></a>
-<span class="sourceLineNo">3159</span>        }<a name="line.3159"></a>
-<span class="sourceLineNo">3160</span>        if (rowLock == null) {<a name="line.3160"></a>
-<span class="sourceLineNo">3161</span>          // We failed to grab another lock<a name="line.3161"></a>
-<span class="sourceLineNo">3162</span>          if (isAtomic()) {<a name="line.3162"></a>
-<span class="sourceLineNo">3163</span>            throw new IOException("Can't apply all operations atomically!");<a name="line.3163"></a>
-<span class="sourceLineNo">3164</span>          }<a name="line.3164"></a>
-<span class="sourceLineNo">3165</span>          break; // Stop acquiring more rows for this batch<a name="line.3165"></a>
-<span class="sourceLineNo">3166</span>        } else {<a name="line.3166"></a>
-<span class="sourceLineNo">3167</span>          acquiredRowLocks.add(rowLock);<a name="line.3167"></a>
-<span class="sourceLineNo">3168</span>        }<a name="line.3168"></a>
-<span class="sourceLineNo">3169</span>        readyToWriteCount++;<a name="line.3169"></a>
-<span class="sourceLineNo">3170</span>      }<a name="line.3170"></a>
-<span class="sourceLineNo">3171</span>      return createMiniBatch(lastIndexExclusive, readyToWriteCount);<a name="line.3171"></a>
-<span class="sourceLineNo">3172</span>    }<a name="line.3172"></a>
-<span class="sourceLineNo">3173</span><a name="line.3173"></a>
-<span class="sourceLineNo">3174</span>    protected MiniBatchOperationInProgress&lt;Mutation&gt; createMiniBatch(final int lastIndexExclusive,<a name="line.3174"></a>
-<span class="sourceLineNo">3175</span>        final int readyToWriteCount) {<a name="line.3175"></a>
-<span class="sourceLineNo">3176</span>      return new MiniBatchOperationInProgress&lt;&gt;(getMutationsForCoprocs(), retCodeDetails,<a name="line.3176"></a>
-<span class="sourceLineNo">3177</span>          walEditsFromCoprocessors, nextIndexToProcess, lastIndexExclusive, readyToWriteCount);<a name="line.3177"></a>
-<span class="sourceLineNo">3178</span>    }<a name="line.3178"></a>
-<span class="sourceLineNo">3179</span><a name="line.3179"></a>
-<span class="sourceLineNo">3180</span>    /**<a name="line.3180"></a>
-<span class="sourceLineNo">3181</span>     * Builds separate WALEdit per nonce by applying input mutations. If WALEdits from CP are<a name="line.3181"></a>
-<span class="sourceLineNo">3182</span>     * present, they are merged to result WALEdit.<a name="line.3182"></a>
-<span class="sourceLineNo">3183</span>     */<a name="line.3183"></a>
-<span class="sourceLineNo">3184</span>    public List&lt;Pair&lt;NonceKey, WALEdit&gt;&gt; buildWALEdits(<a name="line.3184"></a>
-<span class="sourceLineNo">3185</span>        final MiniBatchOperationInProgress&lt;Mutation&gt; miniBatchOp) throws IOException {<a name="line.3185"></a>
-<span class="sourceLineNo">3186</span>      List&lt;Pair&lt;NonceKey, WALEdit&gt;&gt; walEdits = new ArrayList&lt;&gt;();<a name="line.3186"></a>
-<span class="sourceLineNo">3187</span><a name="line.3187"></a>
-<span class="sourceLineNo">3188</span>      visitBatchOperations(true, nextIndexToProcess + miniBatchOp.size(), new Visitor() {<a name="line.3188"></a>
-<span class="sourceLineNo">3189</span>        private Pair&lt;NonceKey, WALEdit&gt; curWALEditForNonce;<a name="line.3189"></a>
-<span class="sourceLineNo">3190</span>        @Override<a name="line.3190"></a>
-<span class="sourceLineNo">3191</span>        public boolean visit(int index) throws IOException {<a name="line.3191"></a>
-<span class="sourceLineNo">3192</span>          Mutation m = getMutation(index);<a name="line.3192"></a>
-<span class="sourceLineNo">3193</span>          // we use durability of the original mutation for the mutation passed by CP.<a name="line.3193"></a>
-<span class="sourceLineNo">3194</span>          if (region.getEffectiveDurability(m.getDurability()) == Durability.SKIP_WAL) {<a name="line.3194"></a>
-<span class="sourceLineNo">3195</span>            region.recordMutationWithoutWal(m.getFamilyCellMap());<a name="line.3195"></a>
-<span class="sourceLineNo">3196</span>            return true;<a name="line.3196"></a>
-<span class="sourceLineNo">3197</span>          }<a name="line.3197"></a>
-<span class="sourceLineNo">3198</span><a name="line.3198"></a>
-<span class="sourceLineNo">3199</span>          // the batch may contain multiple nonce keys (replay case). If so, write WALEdit for each.<a name="line.3199"></a>
-<span class="sourceLineNo">3200</span>          // Given how nonce keys are originally written, these should be contiguous.<a name="line.3200"></a>
-<span class="sourceLineNo">3201</span>          // They don't have to be, it will still work, just write more WALEdits than needed.<a name="line.3201"></a>
-<span class="sourceLineNo">3202</span>          long nonceGroup = getNonceGroup(index);<a name="line.3202"></a>
-<span class="sourceLineNo">3203</span>          long nonce = getNonce(index);<a name="line.3203"></a>
-<span class="sourceLineNo">3204</span>          if (curWALEditForNonce == null ||<a name="line.3204"></a>
-<span class="sourceLineNo">3205</span>              curWALEditForNonce.getFirst().getNonceGroup() != nonceGroup ||<a name="line.3205"></a>
-<span class="sourceLineNo">3206</span>              curWALEditForNonce.getFirst().getNonce() != nonce) {<a name="line.3206"></a>
-<span class="sourceLineNo">3207</span>            curWALEditForNonce = new Pair&lt;&gt;(new NonceKey(nonceGroup, nonce),<a name="line.3207"></a>
-<span class="sourceLineNo">3208</span>                new WALEdit(miniBatchOp.getCellCount(), isInReplay()));<a name="line.3208"></a>
-<span class="sourceLineNo">3209</span>            walEdits.add(curWALEditForNonce);<a name="line.3209"></a>
-<span class="sourceLineNo">3210</span>          }<a name="line.3210"></a>
-<span class="sourceLineNo">3211</span>          WALEdit walEdit = curWALEditForNonce.getSecond();<a name="line.3211"></a>
-<span class="sourceLineNo">3212</span><a name="line.3212"></a>
-<span class="sourceLineNo">3213</span>          // Add WAL edits by CP<a name="line.3213"></a>
-<span class="sourceLineNo">3214</span>          WALEdit fromCP = walEditsFromCoprocessors[index];<a name="line.3214"></a>
-<span class="sourceLineNo">3215</span>          if (fromCP != null) {<a name="line.3215"></a>
-<span class="sourceLineNo">3216</span>            for (Cell cell : fromCP.getCells()) {<a name="line.3216"></a>
-<span class="sourceLineNo">3217</span>              walEdit.add(cell);<a name="line.3217"></a>
-<span class="sourceLineNo">3218</span>            }<a name="line.3218"></a>
-<span class="sourceLineNo">3219</span>          }<a name="line.3219"></a>
-<span class="sourceLineNo">3220</span>          addFamilyMapToWALEdit(familyCellMaps[index], walEdit);<a name="line.3220"></a>
-<span class="sourceLineNo">3221</span><a name="line.3221"></a>
-<span class="sourceLineNo">3222</span>          return true;<a name="line.3222"></a>
-<span class="sourceLineNo">3223</span>        }<a name="line.3223"></a>
-<span class="sourceLineNo">3224</span>      });<a name="line.3224"></a>
-<span class="sourceLineNo">3225</span>      return walEdits;<a name="line.3225"></a>
-<span class="sourceLineNo">3226</span>    }<a name="line.3226"></a>
-<span class="sourceLineNo">3227</span><a name="line.3227"></a>
-<span class="sourceLineNo">3228</span>    /**<a name="line.3228"></a>
-<span class="sourceLineNo">3229</span>     * This method completes mini-batch operations by calling postBatchMutate() CP hook (if<a name="line.3229"></a>
-<span class="sourceLineNo">3230</span>     * required) and completing mvcc.<a name="line.3230"></a>
-<span class="sourceLineNo">3231</span>     */<a name="line.3231"></a>
-<span class="sourceLineNo">3232</span>    public void completeMiniBatchOperations(<a name="line.3232"></a>
-<span class="sourceLineNo">3233</span>        final MiniBatchOperationInProgress&lt;Mutation&gt; miniBatchOp, final WriteEntry writeEntry)<a name="line.3233"></a>
-<span class="sourceLineNo">3234</span>        throws IOException {<a name="line.3234"></a>
-<span class="sourceLineNo">3235</span>      if (writeEntry != null) {<a name="line.3235"></a>
-<span class="sourceLineNo">3236</span>        region.mvcc.completeAndWait(writeEntry);<a name="line.3236"></a>
-<span class="sourceLineNo">3237</span>      }<a name="line.3237"></a>
-<span class="sourceLineNo">3238</span>    }<a name="line.3238"></a>
-<span class="sourceLineNo">3239</span><a name="line.3239"></a>
-<span class="sourceLineNo">3240</span>    public void doPostOpCleanupForMiniBatch(<a name="line.3240"></a>
-<span class="sourceLineNo">3241</span>        final MiniBatchOperationInProgress&lt;Mutation&gt; miniBatchOp, final WALEdit walEdit,<a name="line.3241"></a>
-<span class="sourceLineNo">3242</span>        boolean success) throws IOException {}<a name="line.3242"></a>
-<span class="sourceLineNo">3243</span><a name="line.3243"></a>
-<span class="sourceLineNo">3244</span>    /**<a name="line.3244"></a>
-<span class="sourceLineNo">3245</span>     * Atomically apply the given map of family-&gt;edits to the memstore.<a name="line.3245"></a>
-<span class="sourceLineNo">3246</span>     * This handles the consistency control on its own, but the caller<a name="line.3246"></a>
-<span class="sourceLineNo">3247</span>     * should already have locked updatesLock.readLock(). This also does<a name="line.3247"></a>
-<span class="sourceLineNo">3248</span>     * &lt;b&gt;not&lt;/b&gt; check the families for validity.<a name="line.3248"></a>
-<span class="sourceLineNo">3249</span>     *<a name="line.3249"></a>
-<span class="sourceLineNo">3250</span>     * @param familyMap Map of Cells by family<a name="line.3250"></a>
-<span class="sourceLineNo">3251</span>     */<a name="line.3251"></a>
-<span class="sourceLineNo">3252</span>    protected void applyFamilyMapToMemStore(Map&lt;byte[], List&lt;Cell&gt;&gt; familyMap,<a name="line.3252"></a>
-<span class="sourceLineNo">3253</span>        MemStoreSizing memstoreAccounting) throws IOException {<a name="line.3253"></a>
-<span class="sourceLineNo">3254</span>      for (Map.Entry&lt;byte[], List&lt;Cell&gt;&gt; e : familyMap.entrySet()) {<a name="line.3254"></a>
-<span class="sourceLineNo">3255</span>        byte[] family = e.getKey();<a name="line.3255"></a>
-<span class="sourceLineNo">3256</span>        List&lt;Cell&gt; cells = e.getValue();<a name="line.3256"></a>
-<span class="sourceLineNo">3257</span>        assert cells instanceof RandomAccess;<a name="line.3257"></a>
-<span class="sourceLineNo">3258</span>        region.applyToMemStore(region.getStore(family), cells, false, memstoreAccounting);<a name="line.3258"></a>
-<span class="sourceLineNo">3259</span>      }<a name="line.3259"></a>
-<span class="sourceLineNo">3260</span>    }<a name="line.3260"></a>
-<span class="sourceLineNo">3261</span><a name="line.3261"></a>
-<span class="sourceLineNo">3262</span>    /**<a name="line.3262"></a>
-<span class="sourceLineNo">3263</span>     * Append the given map of family-&gt;edits to a WALEdit data structure.<a name="line.3263"></a>
-<span class="sourceLineNo">3264</span>     * This does not write to the WAL itself.<a name="line.3264"></a>
-<span class="sourceLineNo">3265</span>     * @param familyMap map of family-&gt;edits<a name="line.3265"></a>
-<span class="sourceLineNo">3266</span>     * @param walEdit the destination entry to append into<a name="line.3266"></a>
-<span class="sourceLineNo">3267</span>     */<a name="line.3267"></a>
-<span class="sourceLineNo">3268</span>    private void addFamilyMapToWALEdit(Map&lt;byte[], List&lt;Cell&gt;&gt; familyMap,<a name="line.3268"></a>
-<span class="sourceLineNo">3269</span>        WALEdit walEdit) {<a name="line.3269"></a>
-<span class="sourceLineNo">3270</span>      for (List&lt;Cell&gt; edits : familyMap.values()) {<a name="line.3270"></a>
-<span class="sourceLineNo">3271</span>        // Optimization: 'foreach' loop is not used. See:<a name="line.3271"></a>
-<span class="sourceLineNo">3272</span>        // HBASE-12023 HRegion.applyFamilyMapToMemstore creates too many iterator objects<a name="line.3272"></a>
-<span class="sourceLineNo">3273</span>        assert edits instanceof RandomAccess;<a name="line.3273"></a>
-<span class="sourceLineNo">3274</span>        int listSize = edits.size();<a name="line.3274"></a>
-<span class="sourceLineNo">3275</span>        for (int i=0; i &lt; listSize; i++) {<a name="line.3275"></a>
-<span class="sourceLineNo">3276</span>          Cell cell = edits.get(i);<a name="line.3276"></a>
-<span class="sourceLineNo">3277</span>          walEdit.add(cell);<a name="line.3277"></a>
-<span class="sourceLineNo">3278</span>        }<a name="line.3278"></a>
-<span class="sourceLineNo">3279</span>      }<a name="line.3279"></a>
-<span class="sourceLineNo">3280</span>    }<a name="line.3280"></a>
-<span class="sourceLineNo">3281</span>  }<a name="line.3281"></a>
-<span class="sourceLineNo">3282</span><a name="line.3282"></a>
-<span class="sourceLineNo">3283</span>  /**<a name="line.3283"></a>
-<span class="sourceLineNo">3284</span>   * Batch of mutation operations. Base class is shared with {@link ReplayBatchOperation} as most<a name="line.3284"></a>
-<span class="sourceLineNo">3285</span>   * of the logic is same.<a name="line.3285"></a>
-<span class="sourceLineNo">3286</span>   */<a name="line.3286"></a>
-<span class="sourceLineNo">3287</span>  static class MutationBatchOperation extends BatchOperation&lt;Mutation&gt; {<a name="line.3287"></a>
-<span class="sourceLineNo">3288</span>    private long nonceGroup;<a name="line.3288"></a>
-<span class="sourceLineNo">3289</span>    private long nonce;<a name="line.3289"></a>
-<span class="sourceLineNo">3290</span>    public MutationBatchOperation(final HRegion region, Mutation[] operations, boolean atomic,<a name="line.3290"></a>
-<span class="sourceLineNo">3291</span>        long nonceGroup, long nonce) {<a name="line.3291"></a>
-<span class="sourceLineNo">3292</span>      super(region, operations);<a name="line.3292"></a>
-<span class="sourceLineNo">3293</span>      this.atomic = atomic;<a name="line.3293"></a>
-<span class="sourceLineNo">3294</span>      this.nonceGroup = nonceGroup;<a name="line.3294"></a>
-<span class="sourceLineNo">3295</span>      this.nonce = nonce;<a name="line.3295"></a>
-<span class="sourceLineNo">3296</span>    }<a name="line.3296"></a>
-<span class="sourceLineNo">3297</span><a name="line.3297"></a>
-<span class="sourceLineNo">3298</span>    @Override<a name="line.3298"></a>
-<span class="sourceLineNo">3299</span>    public Mutation getMutation(int index) {<a name="line.3299"></a>
-<span class="sourceLineNo">3300</span>      return this.operations[index];<a name="line.3300"></a>
-<span class="sourceLineNo">3301</span>    }<a name="line.3301"></a>
-<span class="sourceLineNo">3302</span><a name="line.3302"></a>
-<span class="sourceLineNo">3303</span>    @Override<a name="line.3303"></a>
-<span class="sourceLineNo">3304</span>    public long getNonceGroup(int index) {<a name="line.3304"></a>
-<span class="sourceLineNo">3305</span>      return nonceGroup;<a name="line.3305"></a>
-<span class="sourceLineNo">3306</span>    }<a name="line.3306"></a>
-<span class="sourceLineNo">3307</span><a name="line.3307"></a>


<TRUNCATED>